github.com/Onther-Tech/plasma-evm@v0.0.0-rc7.7/contracts/plasma/rootchain/rootchain.go (about)

     1  // Code generated - DO NOT EDIT.
     2  // This file is a generated binding and any manual changes will be lost.
     3  
     4  package rootchain
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	"github.com/Onther-Tech/plasma-evm"
    11  	"github.com/Onther-Tech/plasma-evm/accounts/abi"
    12  	"github.com/Onther-Tech/plasma-evm/accounts/abi/bind"
    13  	"github.com/Onther-Tech/plasma-evm/common"
    14  	"github.com/Onther-Tech/plasma-evm/core/types"
    15  	"github.com/Onther-Tech/plasma-evm/event"
    16  )
    17  
    18  // Reference imports to suppress errors if they are not otherwise used.
    19  var (
    20  	_ = big.NewInt
    21  	_ = strings.NewReader
    22  	_ = ethereum.NotFound
    23  	_ = abi.U256
    24  	_ = bind.Bind
    25  	_ = common.Big1
    26  	_ = types.BloomLookup
    27  	_ = event.NewSubscription
    28  )
    29  
    30  // DataEpoch is an auto generated low-level Go binding around an user-defined struct.
    31  type DataEpoch struct {
    32  	StartBlockNumber uint64
    33  	EndBlockNumber   uint64
    34  	Timestamp        uint64
    35  	IsEmpty          bool
    36  	Initialized      bool
    37  	IsRequest        bool
    38  	UserActivated    bool
    39  	Rebase           bool
    40  	RE               DataRequestEpochMeta
    41  	NRE              DataNonRequestEpochMeta
    42  }
    43  
    44  // DataNonRequestEpochMeta is an auto generated low-level Go binding around an user-defined struct.
    45  type DataNonRequestEpochMeta struct {
    46  	EpochStateRoot        [32]byte
    47  	EpochTransactionsRoot [32]byte
    48  	EpochReceiptsRoot     [32]byte
    49  	SubmittedAt           uint64
    50  	FinalizedAt           uint64
    51  	Finalized             bool
    52  	Challenging           bool
    53  	Challenged            bool
    54  }
    55  
    56  // DataPlasmaBlock is an auto generated low-level Go binding around an user-defined struct.
    57  type DataPlasmaBlock struct {
    58  	EpochNumber      uint64
    59  	RequestBlockId   uint64
    60  	Timestamp        uint64
    61  	FinalizedAt      uint64
    62  	ReferenceBlock   uint64
    63  	StatesRoot       [32]byte
    64  	TransactionsRoot [32]byte
    65  	ReceiptsRoot     [32]byte
    66  	IsRequest        bool
    67  	UserActivated    bool
    68  	Challenged       bool
    69  	Challenging      bool
    70  	Finalized        bool
    71  }
    72  
    73  // DataRequestEpochMeta is an auto generated low-level Go binding around an user-defined struct.
    74  type DataRequestEpochMeta struct {
    75  	RequestStart        uint64
    76  	RequestEnd          uint64
    77  	FirstRequestBlockId uint64
    78  	NumEnter            uint64
    79  	NextEnterEpoch      uint64
    80  	NextEpoch           uint64
    81  }
    82  
    83  // AddressABI is the input ABI used to generate the binding from.
    84  const AddressABI = "[]"
    85  
    86  // AddressBin is the compiled bytecode used for deploying new contracts.
    87  var AddressBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820451b843ffb424b86bcba31db5f97373aa893055a6c8333b114cc3f724489f96264736f6c634300050c0032"
    88  
    89  // DeployAddress deploys a new Ethereum contract, binding an instance of Address to it.
    90  func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) {
    91  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
    92  	if err != nil {
    93  		return common.Address{}, nil, nil, err
    94  	}
    95  
    96  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(AddressBin), backend)
    97  	if err != nil {
    98  		return common.Address{}, nil, nil, err
    99  	}
   100  	return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
   101  }
   102  
   103  // Address is an auto generated Go binding around an Ethereum contract.
   104  type Address struct {
   105  	AddressCaller     // Read-only binding to the contract
   106  	AddressTransactor // Write-only binding to the contract
   107  	AddressFilterer   // Log filterer for contract events
   108  }
   109  
   110  // AddressCaller is an auto generated read-only Go binding around an Ethereum contract.
   111  type AddressCaller struct {
   112  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   113  }
   114  
   115  // AddressTransactor is an auto generated write-only Go binding around an Ethereum contract.
   116  type AddressTransactor struct {
   117  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   118  }
   119  
   120  // AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   121  type AddressFilterer struct {
   122  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   123  }
   124  
   125  // AddressSession is an auto generated Go binding around an Ethereum contract,
   126  // with pre-set call and transact options.
   127  type AddressSession struct {
   128  	Contract     *Address          // Generic contract binding to set the session for
   129  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   130  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   131  }
   132  
   133  // AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   134  // with pre-set call options.
   135  type AddressCallerSession struct {
   136  	Contract *AddressCaller // Generic contract caller binding to set the session for
   137  	CallOpts bind.CallOpts  // Call options to use throughout this session
   138  }
   139  
   140  // AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   141  // with pre-set transact options.
   142  type AddressTransactorSession struct {
   143  	Contract     *AddressTransactor // Generic contract transactor binding to set the session for
   144  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
   145  }
   146  
   147  // AddressRaw is an auto generated low-level Go binding around an Ethereum contract.
   148  type AddressRaw struct {
   149  	Contract *Address // Generic contract binding to access the raw methods on
   150  }
   151  
   152  // AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   153  type AddressCallerRaw struct {
   154  	Contract *AddressCaller // Generic read-only contract binding to access the raw methods on
   155  }
   156  
   157  // AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   158  type AddressTransactorRaw struct {
   159  	Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on
   160  }
   161  
   162  // NewAddress creates a new instance of Address, bound to a specific deployed contract.
   163  func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) {
   164  	contract, err := bindAddress(address, backend, backend, backend)
   165  	if err != nil {
   166  		return nil, err
   167  	}
   168  	return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
   169  }
   170  
   171  // NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract.
   172  func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) {
   173  	contract, err := bindAddress(address, caller, nil, nil)
   174  	if err != nil {
   175  		return nil, err
   176  	}
   177  	return &AddressCaller{contract: contract}, nil
   178  }
   179  
   180  // NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract.
   181  func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) {
   182  	contract, err := bindAddress(address, nil, transactor, nil)
   183  	if err != nil {
   184  		return nil, err
   185  	}
   186  	return &AddressTransactor{contract: contract}, nil
   187  }
   188  
   189  // NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract.
   190  func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) {
   191  	contract, err := bindAddress(address, nil, nil, filterer)
   192  	if err != nil {
   193  		return nil, err
   194  	}
   195  	return &AddressFilterer{contract: contract}, nil
   196  }
   197  
   198  // bindAddress binds a generic wrapper to an already deployed contract.
   199  func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   200  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
   201  	if err != nil {
   202  		return nil, err
   203  	}
   204  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   205  }
   206  
   207  // Call invokes the (constant) contract method with params as input values and
   208  // sets the output to result. The result type might be a single field for simple
   209  // returns, a slice of interfaces for anonymous returns and a struct for named
   210  // returns.
   211  func (_Address *AddressRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   212  	return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...)
   213  }
   214  
   215  // Transfer initiates a plain transaction to move funds to the contract, calling
   216  // its default method if one is available.
   217  func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   218  	return _Address.Contract.AddressTransactor.contract.Transfer(opts)
   219  }
   220  
   221  // Transact invokes the (paid) contract method with params as input values.
   222  func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   223  	return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...)
   224  }
   225  
   226  // Call invokes the (constant) contract method with params as input values and
   227  // sets the output to result. The result type might be a single field for simple
   228  // returns, a slice of interfaces for anonymous returns and a struct for named
   229  // returns.
   230  func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   231  	return _Address.Contract.contract.Call(opts, result, method, params...)
   232  }
   233  
   234  // Transfer initiates a plain transaction to move funds to the contract, calling
   235  // its default method if one is available.
   236  func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   237  	return _Address.Contract.contract.Transfer(opts)
   238  }
   239  
   240  // Transact invokes the (paid) contract method with params as input values.
   241  func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   242  	return _Address.Contract.contract.Transact(opts, method, params...)
   243  }
   244  
   245  // BMTABI is the input ABI used to generate the binding from.
   246  const BMTABI = "[]"
   247  
   248  // BMTBin is the compiled bytecode used for deploying new contracts.
   249  var BMTBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820e40cfcc115c891081c9c49cf067c463d7e9814fa3ea29c4a8d949bc82adcafb264736f6c634300050c0032"
   250  
   251  // DeployBMT deploys a new Ethereum contract, binding an instance of BMT to it.
   252  func DeployBMT(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BMT, error) {
   253  	parsed, err := abi.JSON(strings.NewReader(BMTABI))
   254  	if err != nil {
   255  		return common.Address{}, nil, nil, err
   256  	}
   257  
   258  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(BMTBin), backend)
   259  	if err != nil {
   260  		return common.Address{}, nil, nil, err
   261  	}
   262  	return address, tx, &BMT{BMTCaller: BMTCaller{contract: contract}, BMTTransactor: BMTTransactor{contract: contract}, BMTFilterer: BMTFilterer{contract: contract}}, nil
   263  }
   264  
   265  // BMT is an auto generated Go binding around an Ethereum contract.
   266  type BMT struct {
   267  	BMTCaller     // Read-only binding to the contract
   268  	BMTTransactor // Write-only binding to the contract
   269  	BMTFilterer   // Log filterer for contract events
   270  }
   271  
   272  // BMTCaller is an auto generated read-only Go binding around an Ethereum contract.
   273  type BMTCaller struct {
   274  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   275  }
   276  
   277  // BMTTransactor is an auto generated write-only Go binding around an Ethereum contract.
   278  type BMTTransactor struct {
   279  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   280  }
   281  
   282  // BMTFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   283  type BMTFilterer struct {
   284  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   285  }
   286  
   287  // BMTSession is an auto generated Go binding around an Ethereum contract,
   288  // with pre-set call and transact options.
   289  type BMTSession struct {
   290  	Contract     *BMT              // Generic contract binding to set the session for
   291  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   292  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   293  }
   294  
   295  // BMTCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   296  // with pre-set call options.
   297  type BMTCallerSession struct {
   298  	Contract *BMTCaller    // Generic contract caller binding to set the session for
   299  	CallOpts bind.CallOpts // Call options to use throughout this session
   300  }
   301  
   302  // BMTTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   303  // with pre-set transact options.
   304  type BMTTransactorSession struct {
   305  	Contract     *BMTTransactor    // Generic contract transactor binding to set the session for
   306  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   307  }
   308  
   309  // BMTRaw is an auto generated low-level Go binding around an Ethereum contract.
   310  type BMTRaw struct {
   311  	Contract *BMT // Generic contract binding to access the raw methods on
   312  }
   313  
   314  // BMTCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   315  type BMTCallerRaw struct {
   316  	Contract *BMTCaller // Generic read-only contract binding to access the raw methods on
   317  }
   318  
   319  // BMTTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   320  type BMTTransactorRaw struct {
   321  	Contract *BMTTransactor // Generic write-only contract binding to access the raw methods on
   322  }
   323  
   324  // NewBMT creates a new instance of BMT, bound to a specific deployed contract.
   325  func NewBMT(address common.Address, backend bind.ContractBackend) (*BMT, error) {
   326  	contract, err := bindBMT(address, backend, backend, backend)
   327  	if err != nil {
   328  		return nil, err
   329  	}
   330  	return &BMT{BMTCaller: BMTCaller{contract: contract}, BMTTransactor: BMTTransactor{contract: contract}, BMTFilterer: BMTFilterer{contract: contract}}, nil
   331  }
   332  
   333  // NewBMTCaller creates a new read-only instance of BMT, bound to a specific deployed contract.
   334  func NewBMTCaller(address common.Address, caller bind.ContractCaller) (*BMTCaller, error) {
   335  	contract, err := bindBMT(address, caller, nil, nil)
   336  	if err != nil {
   337  		return nil, err
   338  	}
   339  	return &BMTCaller{contract: contract}, nil
   340  }
   341  
   342  // NewBMTTransactor creates a new write-only instance of BMT, bound to a specific deployed contract.
   343  func NewBMTTransactor(address common.Address, transactor bind.ContractTransactor) (*BMTTransactor, error) {
   344  	contract, err := bindBMT(address, nil, transactor, nil)
   345  	if err != nil {
   346  		return nil, err
   347  	}
   348  	return &BMTTransactor{contract: contract}, nil
   349  }
   350  
   351  // NewBMTFilterer creates a new log filterer instance of BMT, bound to a specific deployed contract.
   352  func NewBMTFilterer(address common.Address, filterer bind.ContractFilterer) (*BMTFilterer, error) {
   353  	contract, err := bindBMT(address, nil, nil, filterer)
   354  	if err != nil {
   355  		return nil, err
   356  	}
   357  	return &BMTFilterer{contract: contract}, nil
   358  }
   359  
   360  // bindBMT binds a generic wrapper to an already deployed contract.
   361  func bindBMT(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   362  	parsed, err := abi.JSON(strings.NewReader(BMTABI))
   363  	if err != nil {
   364  		return nil, err
   365  	}
   366  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   367  }
   368  
   369  // Call invokes the (constant) contract method with params as input values and
   370  // sets the output to result. The result type might be a single field for simple
   371  // returns, a slice of interfaces for anonymous returns and a struct for named
   372  // returns.
   373  func (_BMT *BMTRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   374  	return _BMT.Contract.BMTCaller.contract.Call(opts, result, method, params...)
   375  }
   376  
   377  // Transfer initiates a plain transaction to move funds to the contract, calling
   378  // its default method if one is available.
   379  func (_BMT *BMTRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   380  	return _BMT.Contract.BMTTransactor.contract.Transfer(opts)
   381  }
   382  
   383  // Transact invokes the (paid) contract method with params as input values.
   384  func (_BMT *BMTRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   385  	return _BMT.Contract.BMTTransactor.contract.Transact(opts, method, params...)
   386  }
   387  
   388  // Call invokes the (constant) contract method with params as input values and
   389  // sets the output to result. The result type might be a single field for simple
   390  // returns, a slice of interfaces for anonymous returns and a struct for named
   391  // returns.
   392  func (_BMT *BMTCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   393  	return _BMT.Contract.contract.Call(opts, result, method, params...)
   394  }
   395  
   396  // Transfer initiates a plain transaction to move funds to the contract, calling
   397  // its default method if one is available.
   398  func (_BMT *BMTTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   399  	return _BMT.Contract.contract.Transfer(opts)
   400  }
   401  
   402  // Transact invokes the (paid) contract method with params as input values.
   403  func (_BMT *BMTTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   404  	return _BMT.Contract.contract.Transact(opts, method, params...)
   405  }
   406  
   407  // DataABI is the input ABI used to generate the binding from.
   408  const DataABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"APPLY_IN_CHILDCHAIN_SIGNATURE\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"APPLY_IN_ROOTCHAIN_SIGNATURE\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"NA\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"NA_TX_GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"NA_TX_GAS_PRICE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
   409  
   410  // DataFuncSigs maps the 4-byte function signature to its string representation.
   411  var DataFuncSigs = map[string]string{
   412  	"a89ca766": "APPLY_IN_CHILDCHAIN_SIGNATURE()",
   413  	"a7b6ae28": "APPLY_IN_ROOTCHAIN_SIGNATURE()",
   414  	"ab73ff05": "NA()",
   415  	"90e84f56": "NA_TX_GAS_LIMIT()",
   416  	"1927ac58": "NA_TX_GAS_PRICE()",
   417  }
   418  
   419  // DataBin is the compiled bytecode used for deploying new contracts.
   420  var DataBin = "0x6101cf610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100615760003560e01c80631927ac581461006657806390e84f5614610080578063a7b6ae2814610088578063a89ca766146100ad578063ab73ff05146100b5575b600080fd5b61006e6100d9565b60408051918252519081900360200190f35b61006e6100e1565b6100906100e8565b604080516001600160e01b03199092168252519081900360200190f35b610090610103565b6100bd61011e565b604080516001600160a01b039092168252519081900360200190f35b633b9aca0081565b620186a081565b60405180603b6101608239603b019050604051809103902081565b60405180603c6101248239603c019050604051809103902081565b60008156fe6170706c7952657175657374496e4368696c64436861696e28626f6f6c2c75696e743235362c616464726573732c627974657333322c6279746573296170706c7952657175657374496e526f6f74436861696e28626f6f6c2c75696e743235362c616464726573732c627974657333322c627974657329a265627a7a723158204c9301a5408d81b999d438ab1834526edc3015412601cd9e2f1a4da5000c968364736f6c634300050c0032"
   421  
   422  // DeployData deploys a new Ethereum contract, binding an instance of Data to it.
   423  func DeployData(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Data, error) {
   424  	parsed, err := abi.JSON(strings.NewReader(DataABI))
   425  	if err != nil {
   426  		return common.Address{}, nil, nil, err
   427  	}
   428  
   429  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(DataBin), backend)
   430  	if err != nil {
   431  		return common.Address{}, nil, nil, err
   432  	}
   433  	return address, tx, &Data{DataCaller: DataCaller{contract: contract}, DataTransactor: DataTransactor{contract: contract}, DataFilterer: DataFilterer{contract: contract}}, nil
   434  }
   435  
   436  // Data is an auto generated Go binding around an Ethereum contract.
   437  type Data struct {
   438  	DataCaller     // Read-only binding to the contract
   439  	DataTransactor // Write-only binding to the contract
   440  	DataFilterer   // Log filterer for contract events
   441  }
   442  
   443  // DataCaller is an auto generated read-only Go binding around an Ethereum contract.
   444  type DataCaller struct {
   445  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   446  }
   447  
   448  // DataTransactor is an auto generated write-only Go binding around an Ethereum contract.
   449  type DataTransactor struct {
   450  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   451  }
   452  
   453  // DataFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   454  type DataFilterer struct {
   455  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   456  }
   457  
   458  // DataSession is an auto generated Go binding around an Ethereum contract,
   459  // with pre-set call and transact options.
   460  type DataSession struct {
   461  	Contract     *Data             // Generic contract binding to set the session for
   462  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   463  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   464  }
   465  
   466  // DataCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   467  // with pre-set call options.
   468  type DataCallerSession struct {
   469  	Contract *DataCaller   // Generic contract caller binding to set the session for
   470  	CallOpts bind.CallOpts // Call options to use throughout this session
   471  }
   472  
   473  // DataTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   474  // with pre-set transact options.
   475  type DataTransactorSession struct {
   476  	Contract     *DataTransactor   // Generic contract transactor binding to set the session for
   477  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   478  }
   479  
   480  // DataRaw is an auto generated low-level Go binding around an Ethereum contract.
   481  type DataRaw struct {
   482  	Contract *Data // Generic contract binding to access the raw methods on
   483  }
   484  
   485  // DataCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   486  type DataCallerRaw struct {
   487  	Contract *DataCaller // Generic read-only contract binding to access the raw methods on
   488  }
   489  
   490  // DataTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   491  type DataTransactorRaw struct {
   492  	Contract *DataTransactor // Generic write-only contract binding to access the raw methods on
   493  }
   494  
   495  // NewData creates a new instance of Data, bound to a specific deployed contract.
   496  func NewData(address common.Address, backend bind.ContractBackend) (*Data, error) {
   497  	contract, err := bindData(address, backend, backend, backend)
   498  	if err != nil {
   499  		return nil, err
   500  	}
   501  	return &Data{DataCaller: DataCaller{contract: contract}, DataTransactor: DataTransactor{contract: contract}, DataFilterer: DataFilterer{contract: contract}}, nil
   502  }
   503  
   504  // NewDataCaller creates a new read-only instance of Data, bound to a specific deployed contract.
   505  func NewDataCaller(address common.Address, caller bind.ContractCaller) (*DataCaller, error) {
   506  	contract, err := bindData(address, caller, nil, nil)
   507  	if err != nil {
   508  		return nil, err
   509  	}
   510  	return &DataCaller{contract: contract}, nil
   511  }
   512  
   513  // NewDataTransactor creates a new write-only instance of Data, bound to a specific deployed contract.
   514  func NewDataTransactor(address common.Address, transactor bind.ContractTransactor) (*DataTransactor, error) {
   515  	contract, err := bindData(address, nil, transactor, nil)
   516  	if err != nil {
   517  		return nil, err
   518  	}
   519  	return &DataTransactor{contract: contract}, nil
   520  }
   521  
   522  // NewDataFilterer creates a new log filterer instance of Data, bound to a specific deployed contract.
   523  func NewDataFilterer(address common.Address, filterer bind.ContractFilterer) (*DataFilterer, error) {
   524  	contract, err := bindData(address, nil, nil, filterer)
   525  	if err != nil {
   526  		return nil, err
   527  	}
   528  	return &DataFilterer{contract: contract}, nil
   529  }
   530  
   531  // bindData binds a generic wrapper to an already deployed contract.
   532  func bindData(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   533  	parsed, err := abi.JSON(strings.NewReader(DataABI))
   534  	if err != nil {
   535  		return nil, err
   536  	}
   537  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   538  }
   539  
   540  // Call invokes the (constant) contract method with params as input values and
   541  // sets the output to result. The result type might be a single field for simple
   542  // returns, a slice of interfaces for anonymous returns and a struct for named
   543  // returns.
   544  func (_Data *DataRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   545  	return _Data.Contract.DataCaller.contract.Call(opts, result, method, params...)
   546  }
   547  
   548  // Transfer initiates a plain transaction to move funds to the contract, calling
   549  // its default method if one is available.
   550  func (_Data *DataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   551  	return _Data.Contract.DataTransactor.contract.Transfer(opts)
   552  }
   553  
   554  // Transact invokes the (paid) contract method with params as input values.
   555  func (_Data *DataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   556  	return _Data.Contract.DataTransactor.contract.Transact(opts, method, params...)
   557  }
   558  
   559  // Call invokes the (constant) contract method with params as input values and
   560  // sets the output to result. The result type might be a single field for simple
   561  // returns, a slice of interfaces for anonymous returns and a struct for named
   562  // returns.
   563  func (_Data *DataCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   564  	return _Data.Contract.contract.Call(opts, result, method, params...)
   565  }
   566  
   567  // Transfer initiates a plain transaction to move funds to the contract, calling
   568  // its default method if one is available.
   569  func (_Data *DataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   570  	return _Data.Contract.contract.Transfer(opts)
   571  }
   572  
   573  // Transact invokes the (paid) contract method with params as input values.
   574  func (_Data *DataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   575  	return _Data.Contract.contract.Transact(opts, method, params...)
   576  }
   577  
   578  // APPLYINCHILDCHAINSIGNATURE is a free data retrieval call binding the contract method 0xa89ca766.
   579  //
   580  // Solidity: function APPLY_IN_CHILDCHAIN_SIGNATURE() constant returns(bytes4)
   581  func (_Data *DataCaller) APPLYINCHILDCHAINSIGNATURE(opts *bind.CallOpts) ([4]byte, error) {
   582  	var (
   583  		ret0 = new([4]byte)
   584  	)
   585  	out := ret0
   586  	err := _Data.contract.Call(opts, out, "APPLY_IN_CHILDCHAIN_SIGNATURE")
   587  	return *ret0, err
   588  }
   589  
   590  // APPLYINCHILDCHAINSIGNATURE is a free data retrieval call binding the contract method 0xa89ca766.
   591  //
   592  // Solidity: function APPLY_IN_CHILDCHAIN_SIGNATURE() constant returns(bytes4)
   593  func (_Data *DataSession) APPLYINCHILDCHAINSIGNATURE() ([4]byte, error) {
   594  	return _Data.Contract.APPLYINCHILDCHAINSIGNATURE(&_Data.CallOpts)
   595  }
   596  
   597  // APPLYINCHILDCHAINSIGNATURE is a free data retrieval call binding the contract method 0xa89ca766.
   598  //
   599  // Solidity: function APPLY_IN_CHILDCHAIN_SIGNATURE() constant returns(bytes4)
   600  func (_Data *DataCallerSession) APPLYINCHILDCHAINSIGNATURE() ([4]byte, error) {
   601  	return _Data.Contract.APPLYINCHILDCHAINSIGNATURE(&_Data.CallOpts)
   602  }
   603  
   604  // APPLYINROOTCHAINSIGNATURE is a free data retrieval call binding the contract method 0xa7b6ae28.
   605  //
   606  // Solidity: function APPLY_IN_ROOTCHAIN_SIGNATURE() constant returns(bytes4)
   607  func (_Data *DataCaller) APPLYINROOTCHAINSIGNATURE(opts *bind.CallOpts) ([4]byte, error) {
   608  	var (
   609  		ret0 = new([4]byte)
   610  	)
   611  	out := ret0
   612  	err := _Data.contract.Call(opts, out, "APPLY_IN_ROOTCHAIN_SIGNATURE")
   613  	return *ret0, err
   614  }
   615  
   616  // APPLYINROOTCHAINSIGNATURE is a free data retrieval call binding the contract method 0xa7b6ae28.
   617  //
   618  // Solidity: function APPLY_IN_ROOTCHAIN_SIGNATURE() constant returns(bytes4)
   619  func (_Data *DataSession) APPLYINROOTCHAINSIGNATURE() ([4]byte, error) {
   620  	return _Data.Contract.APPLYINROOTCHAINSIGNATURE(&_Data.CallOpts)
   621  }
   622  
   623  // APPLYINROOTCHAINSIGNATURE is a free data retrieval call binding the contract method 0xa7b6ae28.
   624  //
   625  // Solidity: function APPLY_IN_ROOTCHAIN_SIGNATURE() constant returns(bytes4)
   626  func (_Data *DataCallerSession) APPLYINROOTCHAINSIGNATURE() ([4]byte, error) {
   627  	return _Data.Contract.APPLYINROOTCHAINSIGNATURE(&_Data.CallOpts)
   628  }
   629  
   630  // NA is a free data retrieval call binding the contract method 0xab73ff05.
   631  //
   632  // Solidity: function NA() constant returns(address)
   633  func (_Data *DataCaller) NA(opts *bind.CallOpts) (common.Address, error) {
   634  	var (
   635  		ret0 = new(common.Address)
   636  	)
   637  	out := ret0
   638  	err := _Data.contract.Call(opts, out, "NA")
   639  	return *ret0, err
   640  }
   641  
   642  // NA is a free data retrieval call binding the contract method 0xab73ff05.
   643  //
   644  // Solidity: function NA() constant returns(address)
   645  func (_Data *DataSession) NA() (common.Address, error) {
   646  	return _Data.Contract.NA(&_Data.CallOpts)
   647  }
   648  
   649  // NA is a free data retrieval call binding the contract method 0xab73ff05.
   650  //
   651  // Solidity: function NA() constant returns(address)
   652  func (_Data *DataCallerSession) NA() (common.Address, error) {
   653  	return _Data.Contract.NA(&_Data.CallOpts)
   654  }
   655  
   656  // NATXGASLIMIT is a free data retrieval call binding the contract method 0x90e84f56.
   657  //
   658  // Solidity: function NA_TX_GAS_LIMIT() constant returns(uint256)
   659  func (_Data *DataCaller) NATXGASLIMIT(opts *bind.CallOpts) (*big.Int, error) {
   660  	var (
   661  		ret0 = new(*big.Int)
   662  	)
   663  	out := ret0
   664  	err := _Data.contract.Call(opts, out, "NA_TX_GAS_LIMIT")
   665  	return *ret0, err
   666  }
   667  
   668  // NATXGASLIMIT is a free data retrieval call binding the contract method 0x90e84f56.
   669  //
   670  // Solidity: function NA_TX_GAS_LIMIT() constant returns(uint256)
   671  func (_Data *DataSession) NATXGASLIMIT() (*big.Int, error) {
   672  	return _Data.Contract.NATXGASLIMIT(&_Data.CallOpts)
   673  }
   674  
   675  // NATXGASLIMIT is a free data retrieval call binding the contract method 0x90e84f56.
   676  //
   677  // Solidity: function NA_TX_GAS_LIMIT() constant returns(uint256)
   678  func (_Data *DataCallerSession) NATXGASLIMIT() (*big.Int, error) {
   679  	return _Data.Contract.NATXGASLIMIT(&_Data.CallOpts)
   680  }
   681  
   682  // NATXGASPRICE is a free data retrieval call binding the contract method 0x1927ac58.
   683  //
   684  // Solidity: function NA_TX_GAS_PRICE() constant returns(uint256)
   685  func (_Data *DataCaller) NATXGASPRICE(opts *bind.CallOpts) (*big.Int, error) {
   686  	var (
   687  		ret0 = new(*big.Int)
   688  	)
   689  	out := ret0
   690  	err := _Data.contract.Call(opts, out, "NA_TX_GAS_PRICE")
   691  	return *ret0, err
   692  }
   693  
   694  // NATXGASPRICE is a free data retrieval call binding the contract method 0x1927ac58.
   695  //
   696  // Solidity: function NA_TX_GAS_PRICE() constant returns(uint256)
   697  func (_Data *DataSession) NATXGASPRICE() (*big.Int, error) {
   698  	return _Data.Contract.NATXGASPRICE(&_Data.CallOpts)
   699  }
   700  
   701  // NATXGASPRICE is a free data retrieval call binding the contract method 0x1927ac58.
   702  //
   703  // Solidity: function NA_TX_GAS_PRICE() constant returns(uint256)
   704  func (_Data *DataCallerSession) NATXGASPRICE() (*big.Int, error) {
   705  	return _Data.Contract.NATXGASPRICE(&_Data.CallOpts)
   706  }
   707  
   708  // MapperRoleABI is the input ABI used to generate the binding from.
   709  const MapperRoleABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MapperAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MapperRemoved\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMapper\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMapper\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMapper\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
   710  
   711  // MapperRoleFuncSigs maps the 4-byte function signature to its string representation.
   712  var MapperRoleFuncSigs = map[string]string{
   713  	"80e3e81d": "addMapper(address)",
   714  	"c0c49c2a": "isMapper(address)",
   715  	"3565fb0d": "renounceMapper()",
   716  }
   717  
   718  // MapperRole is an auto generated Go binding around an Ethereum contract.
   719  type MapperRole struct {
   720  	MapperRoleCaller     // Read-only binding to the contract
   721  	MapperRoleTransactor // Write-only binding to the contract
   722  	MapperRoleFilterer   // Log filterer for contract events
   723  }
   724  
   725  // MapperRoleCaller is an auto generated read-only Go binding around an Ethereum contract.
   726  type MapperRoleCaller struct {
   727  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   728  }
   729  
   730  // MapperRoleTransactor is an auto generated write-only Go binding around an Ethereum contract.
   731  type MapperRoleTransactor struct {
   732  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   733  }
   734  
   735  // MapperRoleFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   736  type MapperRoleFilterer struct {
   737  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   738  }
   739  
   740  // MapperRoleSession is an auto generated Go binding around an Ethereum contract,
   741  // with pre-set call and transact options.
   742  type MapperRoleSession struct {
   743  	Contract     *MapperRole       // Generic contract binding to set the session for
   744  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   745  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   746  }
   747  
   748  // MapperRoleCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   749  // with pre-set call options.
   750  type MapperRoleCallerSession struct {
   751  	Contract *MapperRoleCaller // Generic contract caller binding to set the session for
   752  	CallOpts bind.CallOpts     // Call options to use throughout this session
   753  }
   754  
   755  // MapperRoleTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   756  // with pre-set transact options.
   757  type MapperRoleTransactorSession struct {
   758  	Contract     *MapperRoleTransactor // Generic contract transactor binding to set the session for
   759  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
   760  }
   761  
   762  // MapperRoleRaw is an auto generated low-level Go binding around an Ethereum contract.
   763  type MapperRoleRaw struct {
   764  	Contract *MapperRole // Generic contract binding to access the raw methods on
   765  }
   766  
   767  // MapperRoleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   768  type MapperRoleCallerRaw struct {
   769  	Contract *MapperRoleCaller // Generic read-only contract binding to access the raw methods on
   770  }
   771  
   772  // MapperRoleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   773  type MapperRoleTransactorRaw struct {
   774  	Contract *MapperRoleTransactor // Generic write-only contract binding to access the raw methods on
   775  }
   776  
   777  // NewMapperRole creates a new instance of MapperRole, bound to a specific deployed contract.
   778  func NewMapperRole(address common.Address, backend bind.ContractBackend) (*MapperRole, error) {
   779  	contract, err := bindMapperRole(address, backend, backend, backend)
   780  	if err != nil {
   781  		return nil, err
   782  	}
   783  	return &MapperRole{MapperRoleCaller: MapperRoleCaller{contract: contract}, MapperRoleTransactor: MapperRoleTransactor{contract: contract}, MapperRoleFilterer: MapperRoleFilterer{contract: contract}}, nil
   784  }
   785  
   786  // NewMapperRoleCaller creates a new read-only instance of MapperRole, bound to a specific deployed contract.
   787  func NewMapperRoleCaller(address common.Address, caller bind.ContractCaller) (*MapperRoleCaller, error) {
   788  	contract, err := bindMapperRole(address, caller, nil, nil)
   789  	if err != nil {
   790  		return nil, err
   791  	}
   792  	return &MapperRoleCaller{contract: contract}, nil
   793  }
   794  
   795  // NewMapperRoleTransactor creates a new write-only instance of MapperRole, bound to a specific deployed contract.
   796  func NewMapperRoleTransactor(address common.Address, transactor bind.ContractTransactor) (*MapperRoleTransactor, error) {
   797  	contract, err := bindMapperRole(address, nil, transactor, nil)
   798  	if err != nil {
   799  		return nil, err
   800  	}
   801  	return &MapperRoleTransactor{contract: contract}, nil
   802  }
   803  
   804  // NewMapperRoleFilterer creates a new log filterer instance of MapperRole, bound to a specific deployed contract.
   805  func NewMapperRoleFilterer(address common.Address, filterer bind.ContractFilterer) (*MapperRoleFilterer, error) {
   806  	contract, err := bindMapperRole(address, nil, nil, filterer)
   807  	if err != nil {
   808  		return nil, err
   809  	}
   810  	return &MapperRoleFilterer{contract: contract}, nil
   811  }
   812  
   813  // bindMapperRole binds a generic wrapper to an already deployed contract.
   814  func bindMapperRole(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   815  	parsed, err := abi.JSON(strings.NewReader(MapperRoleABI))
   816  	if err != nil {
   817  		return nil, err
   818  	}
   819  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   820  }
   821  
   822  // Call invokes the (constant) contract method with params as input values and
   823  // sets the output to result. The result type might be a single field for simple
   824  // returns, a slice of interfaces for anonymous returns and a struct for named
   825  // returns.
   826  func (_MapperRole *MapperRoleRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   827  	return _MapperRole.Contract.MapperRoleCaller.contract.Call(opts, result, method, params...)
   828  }
   829  
   830  // Transfer initiates a plain transaction to move funds to the contract, calling
   831  // its default method if one is available.
   832  func (_MapperRole *MapperRoleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   833  	return _MapperRole.Contract.MapperRoleTransactor.contract.Transfer(opts)
   834  }
   835  
   836  // Transact invokes the (paid) contract method with params as input values.
   837  func (_MapperRole *MapperRoleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   838  	return _MapperRole.Contract.MapperRoleTransactor.contract.Transact(opts, method, params...)
   839  }
   840  
   841  // Call invokes the (constant) contract method with params as input values and
   842  // sets the output to result. The result type might be a single field for simple
   843  // returns, a slice of interfaces for anonymous returns and a struct for named
   844  // returns.
   845  func (_MapperRole *MapperRoleCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   846  	return _MapperRole.Contract.contract.Call(opts, result, method, params...)
   847  }
   848  
   849  // Transfer initiates a plain transaction to move funds to the contract, calling
   850  // its default method if one is available.
   851  func (_MapperRole *MapperRoleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   852  	return _MapperRole.Contract.contract.Transfer(opts)
   853  }
   854  
   855  // Transact invokes the (paid) contract method with params as input values.
   856  func (_MapperRole *MapperRoleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   857  	return _MapperRole.Contract.contract.Transact(opts, method, params...)
   858  }
   859  
   860  // IsMapper is a free data retrieval call binding the contract method 0xc0c49c2a.
   861  //
   862  // Solidity: function isMapper(address account) constant returns(bool)
   863  func (_MapperRole *MapperRoleCaller) IsMapper(opts *bind.CallOpts, account common.Address) (bool, error) {
   864  	var (
   865  		ret0 = new(bool)
   866  	)
   867  	out := ret0
   868  	err := _MapperRole.contract.Call(opts, out, "isMapper", account)
   869  	return *ret0, err
   870  }
   871  
   872  // IsMapper is a free data retrieval call binding the contract method 0xc0c49c2a.
   873  //
   874  // Solidity: function isMapper(address account) constant returns(bool)
   875  func (_MapperRole *MapperRoleSession) IsMapper(account common.Address) (bool, error) {
   876  	return _MapperRole.Contract.IsMapper(&_MapperRole.CallOpts, account)
   877  }
   878  
   879  // IsMapper is a free data retrieval call binding the contract method 0xc0c49c2a.
   880  //
   881  // Solidity: function isMapper(address account) constant returns(bool)
   882  func (_MapperRole *MapperRoleCallerSession) IsMapper(account common.Address) (bool, error) {
   883  	return _MapperRole.Contract.IsMapper(&_MapperRole.CallOpts, account)
   884  }
   885  
   886  // AddMapper is a paid mutator transaction binding the contract method 0x80e3e81d.
   887  //
   888  // Solidity: function addMapper(address account) returns()
   889  func (_MapperRole *MapperRoleTransactor) AddMapper(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
   890  	return _MapperRole.contract.Transact(opts, "addMapper", account)
   891  }
   892  
   893  // AddMapper is a paid mutator transaction binding the contract method 0x80e3e81d.
   894  //
   895  // Solidity: function addMapper(address account) returns()
   896  func (_MapperRole *MapperRoleSession) AddMapper(account common.Address) (*types.Transaction, error) {
   897  	return _MapperRole.Contract.AddMapper(&_MapperRole.TransactOpts, account)
   898  }
   899  
   900  // AddMapper is a paid mutator transaction binding the contract method 0x80e3e81d.
   901  //
   902  // Solidity: function addMapper(address account) returns()
   903  func (_MapperRole *MapperRoleTransactorSession) AddMapper(account common.Address) (*types.Transaction, error) {
   904  	return _MapperRole.Contract.AddMapper(&_MapperRole.TransactOpts, account)
   905  }
   906  
   907  // RenounceMapper is a paid mutator transaction binding the contract method 0x3565fb0d.
   908  //
   909  // Solidity: function renounceMapper() returns()
   910  func (_MapperRole *MapperRoleTransactor) RenounceMapper(opts *bind.TransactOpts) (*types.Transaction, error) {
   911  	return _MapperRole.contract.Transact(opts, "renounceMapper")
   912  }
   913  
   914  // RenounceMapper is a paid mutator transaction binding the contract method 0x3565fb0d.
   915  //
   916  // Solidity: function renounceMapper() returns()
   917  func (_MapperRole *MapperRoleSession) RenounceMapper() (*types.Transaction, error) {
   918  	return _MapperRole.Contract.RenounceMapper(&_MapperRole.TransactOpts)
   919  }
   920  
   921  // RenounceMapper is a paid mutator transaction binding the contract method 0x3565fb0d.
   922  //
   923  // Solidity: function renounceMapper() returns()
   924  func (_MapperRole *MapperRoleTransactorSession) RenounceMapper() (*types.Transaction, error) {
   925  	return _MapperRole.Contract.RenounceMapper(&_MapperRole.TransactOpts)
   926  }
   927  
   928  // MapperRoleMapperAddedIterator is returned from FilterMapperAdded and is used to iterate over the raw logs and unpacked data for MapperAdded events raised by the MapperRole contract.
   929  type MapperRoleMapperAddedIterator struct {
   930  	Event *MapperRoleMapperAdded // Event containing the contract specifics and raw log
   931  
   932  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   933  	event    string              // Event name to use for unpacking event data
   934  
   935  	logs chan types.Log        // Log channel receiving the found contract events
   936  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   937  	done bool                  // Whether the subscription completed delivering logs
   938  	fail error                 // Occurred error to stop iteration
   939  }
   940  
   941  // Next advances the iterator to the subsequent event, returning whether there
   942  // are any more events found. In case of a retrieval or parsing error, false is
   943  // returned and Error() can be queried for the exact failure.
   944  func (it *MapperRoleMapperAddedIterator) Next() bool {
   945  	// If the iterator failed, stop iterating
   946  	if it.fail != nil {
   947  		return false
   948  	}
   949  	// If the iterator completed, deliver directly whatever's available
   950  	if it.done {
   951  		select {
   952  		case log := <-it.logs:
   953  			it.Event = new(MapperRoleMapperAdded)
   954  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   955  				it.fail = err
   956  				return false
   957  			}
   958  			it.Event.Raw = log
   959  			return true
   960  
   961  		default:
   962  			return false
   963  		}
   964  	}
   965  	// Iterator still in progress, wait for either a data or an error event
   966  	select {
   967  	case log := <-it.logs:
   968  		it.Event = new(MapperRoleMapperAdded)
   969  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   970  			it.fail = err
   971  			return false
   972  		}
   973  		it.Event.Raw = log
   974  		return true
   975  
   976  	case err := <-it.sub.Err():
   977  		it.done = true
   978  		it.fail = err
   979  		return it.Next()
   980  	}
   981  }
   982  
   983  // Error returns any retrieval or parsing error occurred during filtering.
   984  func (it *MapperRoleMapperAddedIterator) Error() error {
   985  	return it.fail
   986  }
   987  
   988  // Close terminates the iteration process, releasing any pending underlying
   989  // resources.
   990  func (it *MapperRoleMapperAddedIterator) Close() error {
   991  	it.sub.Unsubscribe()
   992  	return nil
   993  }
   994  
   995  // MapperRoleMapperAdded represents a MapperAdded event raised by the MapperRole contract.
   996  type MapperRoleMapperAdded struct {
   997  	Account common.Address
   998  	Raw     types.Log // Blockchain specific contextual infos
   999  }
  1000  
  1001  // FilterMapperAdded is a free log retrieval operation binding the contract event 0xa199526a01dbcba68aa3ab9d7d06c6692c83fb1a8bcf2184e6d94ad34f5aaf95.
  1002  //
  1003  // Solidity: event MapperAdded(address indexed account)
  1004  func (_MapperRole *MapperRoleFilterer) FilterMapperAdded(opts *bind.FilterOpts, account []common.Address) (*MapperRoleMapperAddedIterator, error) {
  1005  
  1006  	var accountRule []interface{}
  1007  	for _, accountItem := range account {
  1008  		accountRule = append(accountRule, accountItem)
  1009  	}
  1010  
  1011  	logs, sub, err := _MapperRole.contract.FilterLogs(opts, "MapperAdded", accountRule)
  1012  	if err != nil {
  1013  		return nil, err
  1014  	}
  1015  	return &MapperRoleMapperAddedIterator{contract: _MapperRole.contract, event: "MapperAdded", logs: logs, sub: sub}, nil
  1016  }
  1017  
  1018  // WatchMapperAdded is a free log subscription operation binding the contract event 0xa199526a01dbcba68aa3ab9d7d06c6692c83fb1a8bcf2184e6d94ad34f5aaf95.
  1019  //
  1020  // Solidity: event MapperAdded(address indexed account)
  1021  func (_MapperRole *MapperRoleFilterer) WatchMapperAdded(opts *bind.WatchOpts, sink chan<- *MapperRoleMapperAdded, account []common.Address) (event.Subscription, error) {
  1022  
  1023  	var accountRule []interface{}
  1024  	for _, accountItem := range account {
  1025  		accountRule = append(accountRule, accountItem)
  1026  	}
  1027  
  1028  	logs, sub, err := _MapperRole.contract.WatchLogs(opts, "MapperAdded", accountRule)
  1029  	if err != nil {
  1030  		return nil, err
  1031  	}
  1032  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1033  		defer sub.Unsubscribe()
  1034  		for {
  1035  			select {
  1036  			case log := <-logs:
  1037  				// New log arrived, parse the event and forward to the user
  1038  				event := new(MapperRoleMapperAdded)
  1039  				if err := _MapperRole.contract.UnpackLog(event, "MapperAdded", log); err != nil {
  1040  					return err
  1041  				}
  1042  				event.Raw = log
  1043  
  1044  				select {
  1045  				case sink <- event:
  1046  				case err := <-sub.Err():
  1047  					return err
  1048  				case <-quit:
  1049  					return nil
  1050  				}
  1051  			case err := <-sub.Err():
  1052  				return err
  1053  			case <-quit:
  1054  				return nil
  1055  			}
  1056  		}
  1057  	}), nil
  1058  }
  1059  
  1060  // ParseMapperAdded is a log parse operation binding the contract event 0xa199526a01dbcba68aa3ab9d7d06c6692c83fb1a8bcf2184e6d94ad34f5aaf95.
  1061  //
  1062  // Solidity: event MapperAdded(address indexed account)
  1063  func (_MapperRole *MapperRoleFilterer) ParseMapperAdded(log types.Log) (*MapperRoleMapperAdded, error) {
  1064  	event := new(MapperRoleMapperAdded)
  1065  	if err := _MapperRole.contract.UnpackLog(event, "MapperAdded", log); err != nil {
  1066  		return nil, err
  1067  	}
  1068  	return event, nil
  1069  }
  1070  
  1071  // MapperRoleMapperRemovedIterator is returned from FilterMapperRemoved and is used to iterate over the raw logs and unpacked data for MapperRemoved events raised by the MapperRole contract.
  1072  type MapperRoleMapperRemovedIterator struct {
  1073  	Event *MapperRoleMapperRemoved // Event containing the contract specifics and raw log
  1074  
  1075  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1076  	event    string              // Event name to use for unpacking event data
  1077  
  1078  	logs chan types.Log        // Log channel receiving the found contract events
  1079  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1080  	done bool                  // Whether the subscription completed delivering logs
  1081  	fail error                 // Occurred error to stop iteration
  1082  }
  1083  
  1084  // Next advances the iterator to the subsequent event, returning whether there
  1085  // are any more events found. In case of a retrieval or parsing error, false is
  1086  // returned and Error() can be queried for the exact failure.
  1087  func (it *MapperRoleMapperRemovedIterator) Next() bool {
  1088  	// If the iterator failed, stop iterating
  1089  	if it.fail != nil {
  1090  		return false
  1091  	}
  1092  	// If the iterator completed, deliver directly whatever's available
  1093  	if it.done {
  1094  		select {
  1095  		case log := <-it.logs:
  1096  			it.Event = new(MapperRoleMapperRemoved)
  1097  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1098  				it.fail = err
  1099  				return false
  1100  			}
  1101  			it.Event.Raw = log
  1102  			return true
  1103  
  1104  		default:
  1105  			return false
  1106  		}
  1107  	}
  1108  	// Iterator still in progress, wait for either a data or an error event
  1109  	select {
  1110  	case log := <-it.logs:
  1111  		it.Event = new(MapperRoleMapperRemoved)
  1112  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1113  			it.fail = err
  1114  			return false
  1115  		}
  1116  		it.Event.Raw = log
  1117  		return true
  1118  
  1119  	case err := <-it.sub.Err():
  1120  		it.done = true
  1121  		it.fail = err
  1122  		return it.Next()
  1123  	}
  1124  }
  1125  
  1126  // Error returns any retrieval or parsing error occurred during filtering.
  1127  func (it *MapperRoleMapperRemovedIterator) Error() error {
  1128  	return it.fail
  1129  }
  1130  
  1131  // Close terminates the iteration process, releasing any pending underlying
  1132  // resources.
  1133  func (it *MapperRoleMapperRemovedIterator) Close() error {
  1134  	it.sub.Unsubscribe()
  1135  	return nil
  1136  }
  1137  
  1138  // MapperRoleMapperRemoved represents a MapperRemoved event raised by the MapperRole contract.
  1139  type MapperRoleMapperRemoved struct {
  1140  	Account common.Address
  1141  	Raw     types.Log // Blockchain specific contextual infos
  1142  }
  1143  
  1144  // FilterMapperRemoved is a free log retrieval operation binding the contract event 0xf012269e1b6bb33c7800e7e54167ddd74f0ae7244108030b6876821d3779822f.
  1145  //
  1146  // Solidity: event MapperRemoved(address indexed account)
  1147  func (_MapperRole *MapperRoleFilterer) FilterMapperRemoved(opts *bind.FilterOpts, account []common.Address) (*MapperRoleMapperRemovedIterator, error) {
  1148  
  1149  	var accountRule []interface{}
  1150  	for _, accountItem := range account {
  1151  		accountRule = append(accountRule, accountItem)
  1152  	}
  1153  
  1154  	logs, sub, err := _MapperRole.contract.FilterLogs(opts, "MapperRemoved", accountRule)
  1155  	if err != nil {
  1156  		return nil, err
  1157  	}
  1158  	return &MapperRoleMapperRemovedIterator{contract: _MapperRole.contract, event: "MapperRemoved", logs: logs, sub: sub}, nil
  1159  }
  1160  
  1161  // WatchMapperRemoved is a free log subscription operation binding the contract event 0xf012269e1b6bb33c7800e7e54167ddd74f0ae7244108030b6876821d3779822f.
  1162  //
  1163  // Solidity: event MapperRemoved(address indexed account)
  1164  func (_MapperRole *MapperRoleFilterer) WatchMapperRemoved(opts *bind.WatchOpts, sink chan<- *MapperRoleMapperRemoved, account []common.Address) (event.Subscription, error) {
  1165  
  1166  	var accountRule []interface{}
  1167  	for _, accountItem := range account {
  1168  		accountRule = append(accountRule, accountItem)
  1169  	}
  1170  
  1171  	logs, sub, err := _MapperRole.contract.WatchLogs(opts, "MapperRemoved", accountRule)
  1172  	if err != nil {
  1173  		return nil, err
  1174  	}
  1175  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1176  		defer sub.Unsubscribe()
  1177  		for {
  1178  			select {
  1179  			case log := <-logs:
  1180  				// New log arrived, parse the event and forward to the user
  1181  				event := new(MapperRoleMapperRemoved)
  1182  				if err := _MapperRole.contract.UnpackLog(event, "MapperRemoved", log); err != nil {
  1183  					return err
  1184  				}
  1185  				event.Raw = log
  1186  
  1187  				select {
  1188  				case sink <- event:
  1189  				case err := <-sub.Err():
  1190  					return err
  1191  				case <-quit:
  1192  					return nil
  1193  				}
  1194  			case err := <-sub.Err():
  1195  				return err
  1196  			case <-quit:
  1197  				return nil
  1198  			}
  1199  		}
  1200  	}), nil
  1201  }
  1202  
  1203  // ParseMapperRemoved is a log parse operation binding the contract event 0xf012269e1b6bb33c7800e7e54167ddd74f0ae7244108030b6876821d3779822f.
  1204  //
  1205  // Solidity: event MapperRemoved(address indexed account)
  1206  func (_MapperRole *MapperRoleFilterer) ParseMapperRemoved(log types.Log) (*MapperRoleMapperRemoved, error) {
  1207  	event := new(MapperRoleMapperRemoved)
  1208  	if err := _MapperRole.contract.UnpackLog(event, "MapperRemoved", log); err != nil {
  1209  		return nil, err
  1210  	}
  1211  	return event, nil
  1212  }
  1213  
  1214  // MathABI is the input ABI used to generate the binding from.
  1215  const MathABI = "[]"
  1216  
  1217  // MathBin is the compiled bytecode used for deploying new contracts.
  1218  var MathBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582059f5b6656555777713940676f444002442a3eab637cd25b4c9bb08f94083d96b64736f6c634300050c0032"
  1219  
  1220  // DeployMath deploys a new Ethereum contract, binding an instance of Math to it.
  1221  func DeployMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Math, error) {
  1222  	parsed, err := abi.JSON(strings.NewReader(MathABI))
  1223  	if err != nil {
  1224  		return common.Address{}, nil, nil, err
  1225  	}
  1226  
  1227  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(MathBin), backend)
  1228  	if err != nil {
  1229  		return common.Address{}, nil, nil, err
  1230  	}
  1231  	return address, tx, &Math{MathCaller: MathCaller{contract: contract}, MathTransactor: MathTransactor{contract: contract}, MathFilterer: MathFilterer{contract: contract}}, nil
  1232  }
  1233  
  1234  // Math is an auto generated Go binding around an Ethereum contract.
  1235  type Math struct {
  1236  	MathCaller     // Read-only binding to the contract
  1237  	MathTransactor // Write-only binding to the contract
  1238  	MathFilterer   // Log filterer for contract events
  1239  }
  1240  
  1241  // MathCaller is an auto generated read-only Go binding around an Ethereum contract.
  1242  type MathCaller struct {
  1243  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1244  }
  1245  
  1246  // MathTransactor is an auto generated write-only Go binding around an Ethereum contract.
  1247  type MathTransactor struct {
  1248  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1249  }
  1250  
  1251  // MathFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1252  type MathFilterer struct {
  1253  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1254  }
  1255  
  1256  // MathSession is an auto generated Go binding around an Ethereum contract,
  1257  // with pre-set call and transact options.
  1258  type MathSession struct {
  1259  	Contract     *Math             // Generic contract binding to set the session for
  1260  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1261  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1262  }
  1263  
  1264  // MathCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1265  // with pre-set call options.
  1266  type MathCallerSession struct {
  1267  	Contract *MathCaller   // Generic contract caller binding to set the session for
  1268  	CallOpts bind.CallOpts // Call options to use throughout this session
  1269  }
  1270  
  1271  // MathTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1272  // with pre-set transact options.
  1273  type MathTransactorSession struct {
  1274  	Contract     *MathTransactor   // Generic contract transactor binding to set the session for
  1275  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1276  }
  1277  
  1278  // MathRaw is an auto generated low-level Go binding around an Ethereum contract.
  1279  type MathRaw struct {
  1280  	Contract *Math // Generic contract binding to access the raw methods on
  1281  }
  1282  
  1283  // MathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1284  type MathCallerRaw struct {
  1285  	Contract *MathCaller // Generic read-only contract binding to access the raw methods on
  1286  }
  1287  
  1288  // MathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1289  type MathTransactorRaw struct {
  1290  	Contract *MathTransactor // Generic write-only contract binding to access the raw methods on
  1291  }
  1292  
  1293  // NewMath creates a new instance of Math, bound to a specific deployed contract.
  1294  func NewMath(address common.Address, backend bind.ContractBackend) (*Math, error) {
  1295  	contract, err := bindMath(address, backend, backend, backend)
  1296  	if err != nil {
  1297  		return nil, err
  1298  	}
  1299  	return &Math{MathCaller: MathCaller{contract: contract}, MathTransactor: MathTransactor{contract: contract}, MathFilterer: MathFilterer{contract: contract}}, nil
  1300  }
  1301  
  1302  // NewMathCaller creates a new read-only instance of Math, bound to a specific deployed contract.
  1303  func NewMathCaller(address common.Address, caller bind.ContractCaller) (*MathCaller, error) {
  1304  	contract, err := bindMath(address, caller, nil, nil)
  1305  	if err != nil {
  1306  		return nil, err
  1307  	}
  1308  	return &MathCaller{contract: contract}, nil
  1309  }
  1310  
  1311  // NewMathTransactor creates a new write-only instance of Math, bound to a specific deployed contract.
  1312  func NewMathTransactor(address common.Address, transactor bind.ContractTransactor) (*MathTransactor, error) {
  1313  	contract, err := bindMath(address, nil, transactor, nil)
  1314  	if err != nil {
  1315  		return nil, err
  1316  	}
  1317  	return &MathTransactor{contract: contract}, nil
  1318  }
  1319  
  1320  // NewMathFilterer creates a new log filterer instance of Math, bound to a specific deployed contract.
  1321  func NewMathFilterer(address common.Address, filterer bind.ContractFilterer) (*MathFilterer, error) {
  1322  	contract, err := bindMath(address, nil, nil, filterer)
  1323  	if err != nil {
  1324  		return nil, err
  1325  	}
  1326  	return &MathFilterer{contract: contract}, nil
  1327  }
  1328  
  1329  // bindMath binds a generic wrapper to an already deployed contract.
  1330  func bindMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1331  	parsed, err := abi.JSON(strings.NewReader(MathABI))
  1332  	if err != nil {
  1333  		return nil, err
  1334  	}
  1335  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1336  }
  1337  
  1338  // Call invokes the (constant) contract method with params as input values and
  1339  // sets the output to result. The result type might be a single field for simple
  1340  // returns, a slice of interfaces for anonymous returns and a struct for named
  1341  // returns.
  1342  func (_Math *MathRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1343  	return _Math.Contract.MathCaller.contract.Call(opts, result, method, params...)
  1344  }
  1345  
  1346  // Transfer initiates a plain transaction to move funds to the contract, calling
  1347  // its default method if one is available.
  1348  func (_Math *MathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1349  	return _Math.Contract.MathTransactor.contract.Transfer(opts)
  1350  }
  1351  
  1352  // Transact invokes the (paid) contract method with params as input values.
  1353  func (_Math *MathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1354  	return _Math.Contract.MathTransactor.contract.Transact(opts, method, params...)
  1355  }
  1356  
  1357  // Call invokes the (constant) contract method with params as input values and
  1358  // sets the output to result. The result type might be a single field for simple
  1359  // returns, a slice of interfaces for anonymous returns and a struct for named
  1360  // returns.
  1361  func (_Math *MathCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1362  	return _Math.Contract.contract.Call(opts, result, method, params...)
  1363  }
  1364  
  1365  // Transfer initiates a plain transaction to move funds to the contract, calling
  1366  // its default method if one is available.
  1367  func (_Math *MathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1368  	return _Math.Contract.contract.Transfer(opts)
  1369  }
  1370  
  1371  // Transact invokes the (paid) contract method with params as input values.
  1372  func (_Math *MathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1373  	return _Math.Contract.contract.Transact(opts, method, params...)
  1374  }
  1375  
  1376  // RLPABI is the input ABI used to generate the binding from.
  1377  const RLPABI = "[]"
  1378  
  1379  // RLPBin is the compiled bytecode used for deploying new contracts.
  1380  var RLPBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200e62f7dc00fc4c8eac04f8d672dc03a017efe72ff7483585fb6978cb1b070d1264736f6c634300050c0032"
  1381  
  1382  // DeployRLP deploys a new Ethereum contract, binding an instance of RLP to it.
  1383  func DeployRLP(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *RLP, error) {
  1384  	parsed, err := abi.JSON(strings.NewReader(RLPABI))
  1385  	if err != nil {
  1386  		return common.Address{}, nil, nil, err
  1387  	}
  1388  
  1389  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RLPBin), backend)
  1390  	if err != nil {
  1391  		return common.Address{}, nil, nil, err
  1392  	}
  1393  	return address, tx, &RLP{RLPCaller: RLPCaller{contract: contract}, RLPTransactor: RLPTransactor{contract: contract}, RLPFilterer: RLPFilterer{contract: contract}}, nil
  1394  }
  1395  
  1396  // RLP is an auto generated Go binding around an Ethereum contract.
  1397  type RLP struct {
  1398  	RLPCaller     // Read-only binding to the contract
  1399  	RLPTransactor // Write-only binding to the contract
  1400  	RLPFilterer   // Log filterer for contract events
  1401  }
  1402  
  1403  // RLPCaller is an auto generated read-only Go binding around an Ethereum contract.
  1404  type RLPCaller struct {
  1405  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1406  }
  1407  
  1408  // RLPTransactor is an auto generated write-only Go binding around an Ethereum contract.
  1409  type RLPTransactor struct {
  1410  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1411  }
  1412  
  1413  // RLPFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1414  type RLPFilterer struct {
  1415  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1416  }
  1417  
  1418  // RLPSession is an auto generated Go binding around an Ethereum contract,
  1419  // with pre-set call and transact options.
  1420  type RLPSession struct {
  1421  	Contract     *RLP              // Generic contract binding to set the session for
  1422  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1423  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1424  }
  1425  
  1426  // RLPCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1427  // with pre-set call options.
  1428  type RLPCallerSession struct {
  1429  	Contract *RLPCaller    // Generic contract caller binding to set the session for
  1430  	CallOpts bind.CallOpts // Call options to use throughout this session
  1431  }
  1432  
  1433  // RLPTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1434  // with pre-set transact options.
  1435  type RLPTransactorSession struct {
  1436  	Contract     *RLPTransactor    // Generic contract transactor binding to set the session for
  1437  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1438  }
  1439  
  1440  // RLPRaw is an auto generated low-level Go binding around an Ethereum contract.
  1441  type RLPRaw struct {
  1442  	Contract *RLP // Generic contract binding to access the raw methods on
  1443  }
  1444  
  1445  // RLPCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1446  type RLPCallerRaw struct {
  1447  	Contract *RLPCaller // Generic read-only contract binding to access the raw methods on
  1448  }
  1449  
  1450  // RLPTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1451  type RLPTransactorRaw struct {
  1452  	Contract *RLPTransactor // Generic write-only contract binding to access the raw methods on
  1453  }
  1454  
  1455  // NewRLP creates a new instance of RLP, bound to a specific deployed contract.
  1456  func NewRLP(address common.Address, backend bind.ContractBackend) (*RLP, error) {
  1457  	contract, err := bindRLP(address, backend, backend, backend)
  1458  	if err != nil {
  1459  		return nil, err
  1460  	}
  1461  	return &RLP{RLPCaller: RLPCaller{contract: contract}, RLPTransactor: RLPTransactor{contract: contract}, RLPFilterer: RLPFilterer{contract: contract}}, nil
  1462  }
  1463  
  1464  // NewRLPCaller creates a new read-only instance of RLP, bound to a specific deployed contract.
  1465  func NewRLPCaller(address common.Address, caller bind.ContractCaller) (*RLPCaller, error) {
  1466  	contract, err := bindRLP(address, caller, nil, nil)
  1467  	if err != nil {
  1468  		return nil, err
  1469  	}
  1470  	return &RLPCaller{contract: contract}, nil
  1471  }
  1472  
  1473  // NewRLPTransactor creates a new write-only instance of RLP, bound to a specific deployed contract.
  1474  func NewRLPTransactor(address common.Address, transactor bind.ContractTransactor) (*RLPTransactor, error) {
  1475  	contract, err := bindRLP(address, nil, transactor, nil)
  1476  	if err != nil {
  1477  		return nil, err
  1478  	}
  1479  	return &RLPTransactor{contract: contract}, nil
  1480  }
  1481  
  1482  // NewRLPFilterer creates a new log filterer instance of RLP, bound to a specific deployed contract.
  1483  func NewRLPFilterer(address common.Address, filterer bind.ContractFilterer) (*RLPFilterer, error) {
  1484  	contract, err := bindRLP(address, nil, nil, filterer)
  1485  	if err != nil {
  1486  		return nil, err
  1487  	}
  1488  	return &RLPFilterer{contract: contract}, nil
  1489  }
  1490  
  1491  // bindRLP binds a generic wrapper to an already deployed contract.
  1492  func bindRLP(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1493  	parsed, err := abi.JSON(strings.NewReader(RLPABI))
  1494  	if err != nil {
  1495  		return nil, err
  1496  	}
  1497  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1498  }
  1499  
  1500  // Call invokes the (constant) contract method with params as input values and
  1501  // sets the output to result. The result type might be a single field for simple
  1502  // returns, a slice of interfaces for anonymous returns and a struct for named
  1503  // returns.
  1504  func (_RLP *RLPRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1505  	return _RLP.Contract.RLPCaller.contract.Call(opts, result, method, params...)
  1506  }
  1507  
  1508  // Transfer initiates a plain transaction to move funds to the contract, calling
  1509  // its default method if one is available.
  1510  func (_RLP *RLPRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1511  	return _RLP.Contract.RLPTransactor.contract.Transfer(opts)
  1512  }
  1513  
  1514  // Transact invokes the (paid) contract method with params as input values.
  1515  func (_RLP *RLPRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1516  	return _RLP.Contract.RLPTransactor.contract.Transact(opts, method, params...)
  1517  }
  1518  
  1519  // Call invokes the (constant) contract method with params as input values and
  1520  // sets the output to result. The result type might be a single field for simple
  1521  // returns, a slice of interfaces for anonymous returns and a struct for named
  1522  // returns.
  1523  func (_RLP *RLPCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1524  	return _RLP.Contract.contract.Call(opts, result, method, params...)
  1525  }
  1526  
  1527  // Transfer initiates a plain transaction to move funds to the contract, calling
  1528  // its default method if one is available.
  1529  func (_RLP *RLPTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1530  	return _RLP.Contract.contract.Transfer(opts)
  1531  }
  1532  
  1533  // Transact invokes the (paid) contract method with params as input values.
  1534  func (_RLP *RLPTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1535  	return _RLP.Contract.contract.Transact(opts, method, params...)
  1536  }
  1537  
  1538  // RLPEncodeABI is the input ABI used to generate the binding from.
  1539  const RLPEncodeABI = "[]"
  1540  
  1541  // RLPEncodeBin is the compiled bytecode used for deploying new contracts.
  1542  var RLPEncodeBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158205da3446f8619339802867bf627e0a042d4f4176598fe1e096c50366e6bfe24a164736f6c634300050c0032"
  1543  
  1544  // DeployRLPEncode deploys a new Ethereum contract, binding an instance of RLPEncode to it.
  1545  func DeployRLPEncode(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *RLPEncode, error) {
  1546  	parsed, err := abi.JSON(strings.NewReader(RLPEncodeABI))
  1547  	if err != nil {
  1548  		return common.Address{}, nil, nil, err
  1549  	}
  1550  
  1551  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RLPEncodeBin), backend)
  1552  	if err != nil {
  1553  		return common.Address{}, nil, nil, err
  1554  	}
  1555  	return address, tx, &RLPEncode{RLPEncodeCaller: RLPEncodeCaller{contract: contract}, RLPEncodeTransactor: RLPEncodeTransactor{contract: contract}, RLPEncodeFilterer: RLPEncodeFilterer{contract: contract}}, nil
  1556  }
  1557  
  1558  // RLPEncode is an auto generated Go binding around an Ethereum contract.
  1559  type RLPEncode struct {
  1560  	RLPEncodeCaller     // Read-only binding to the contract
  1561  	RLPEncodeTransactor // Write-only binding to the contract
  1562  	RLPEncodeFilterer   // Log filterer for contract events
  1563  }
  1564  
  1565  // RLPEncodeCaller is an auto generated read-only Go binding around an Ethereum contract.
  1566  type RLPEncodeCaller struct {
  1567  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1568  }
  1569  
  1570  // RLPEncodeTransactor is an auto generated write-only Go binding around an Ethereum contract.
  1571  type RLPEncodeTransactor struct {
  1572  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1573  }
  1574  
  1575  // RLPEncodeFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1576  type RLPEncodeFilterer struct {
  1577  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1578  }
  1579  
  1580  // RLPEncodeSession is an auto generated Go binding around an Ethereum contract,
  1581  // with pre-set call and transact options.
  1582  type RLPEncodeSession struct {
  1583  	Contract     *RLPEncode        // Generic contract binding to set the session for
  1584  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1585  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1586  }
  1587  
  1588  // RLPEncodeCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1589  // with pre-set call options.
  1590  type RLPEncodeCallerSession struct {
  1591  	Contract *RLPEncodeCaller // Generic contract caller binding to set the session for
  1592  	CallOpts bind.CallOpts    // Call options to use throughout this session
  1593  }
  1594  
  1595  // RLPEncodeTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1596  // with pre-set transact options.
  1597  type RLPEncodeTransactorSession struct {
  1598  	Contract     *RLPEncodeTransactor // Generic contract transactor binding to set the session for
  1599  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
  1600  }
  1601  
  1602  // RLPEncodeRaw is an auto generated low-level Go binding around an Ethereum contract.
  1603  type RLPEncodeRaw struct {
  1604  	Contract *RLPEncode // Generic contract binding to access the raw methods on
  1605  }
  1606  
  1607  // RLPEncodeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1608  type RLPEncodeCallerRaw struct {
  1609  	Contract *RLPEncodeCaller // Generic read-only contract binding to access the raw methods on
  1610  }
  1611  
  1612  // RLPEncodeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1613  type RLPEncodeTransactorRaw struct {
  1614  	Contract *RLPEncodeTransactor // Generic write-only contract binding to access the raw methods on
  1615  }
  1616  
  1617  // NewRLPEncode creates a new instance of RLPEncode, bound to a specific deployed contract.
  1618  func NewRLPEncode(address common.Address, backend bind.ContractBackend) (*RLPEncode, error) {
  1619  	contract, err := bindRLPEncode(address, backend, backend, backend)
  1620  	if err != nil {
  1621  		return nil, err
  1622  	}
  1623  	return &RLPEncode{RLPEncodeCaller: RLPEncodeCaller{contract: contract}, RLPEncodeTransactor: RLPEncodeTransactor{contract: contract}, RLPEncodeFilterer: RLPEncodeFilterer{contract: contract}}, nil
  1624  }
  1625  
  1626  // NewRLPEncodeCaller creates a new read-only instance of RLPEncode, bound to a specific deployed contract.
  1627  func NewRLPEncodeCaller(address common.Address, caller bind.ContractCaller) (*RLPEncodeCaller, error) {
  1628  	contract, err := bindRLPEncode(address, caller, nil, nil)
  1629  	if err != nil {
  1630  		return nil, err
  1631  	}
  1632  	return &RLPEncodeCaller{contract: contract}, nil
  1633  }
  1634  
  1635  // NewRLPEncodeTransactor creates a new write-only instance of RLPEncode, bound to a specific deployed contract.
  1636  func NewRLPEncodeTransactor(address common.Address, transactor bind.ContractTransactor) (*RLPEncodeTransactor, error) {
  1637  	contract, err := bindRLPEncode(address, nil, transactor, nil)
  1638  	if err != nil {
  1639  		return nil, err
  1640  	}
  1641  	return &RLPEncodeTransactor{contract: contract}, nil
  1642  }
  1643  
  1644  // NewRLPEncodeFilterer creates a new log filterer instance of RLPEncode, bound to a specific deployed contract.
  1645  func NewRLPEncodeFilterer(address common.Address, filterer bind.ContractFilterer) (*RLPEncodeFilterer, error) {
  1646  	contract, err := bindRLPEncode(address, nil, nil, filterer)
  1647  	if err != nil {
  1648  		return nil, err
  1649  	}
  1650  	return &RLPEncodeFilterer{contract: contract}, nil
  1651  }
  1652  
  1653  // bindRLPEncode binds a generic wrapper to an already deployed contract.
  1654  func bindRLPEncode(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1655  	parsed, err := abi.JSON(strings.NewReader(RLPEncodeABI))
  1656  	if err != nil {
  1657  		return nil, err
  1658  	}
  1659  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1660  }
  1661  
  1662  // Call invokes the (constant) contract method with params as input values and
  1663  // sets the output to result. The result type might be a single field for simple
  1664  // returns, a slice of interfaces for anonymous returns and a struct for named
  1665  // returns.
  1666  func (_RLPEncode *RLPEncodeRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1667  	return _RLPEncode.Contract.RLPEncodeCaller.contract.Call(opts, result, method, params...)
  1668  }
  1669  
  1670  // Transfer initiates a plain transaction to move funds to the contract, calling
  1671  // its default method if one is available.
  1672  func (_RLPEncode *RLPEncodeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1673  	return _RLPEncode.Contract.RLPEncodeTransactor.contract.Transfer(opts)
  1674  }
  1675  
  1676  // Transact invokes the (paid) contract method with params as input values.
  1677  func (_RLPEncode *RLPEncodeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1678  	return _RLPEncode.Contract.RLPEncodeTransactor.contract.Transact(opts, method, params...)
  1679  }
  1680  
  1681  // Call invokes the (constant) contract method with params as input values and
  1682  // sets the output to result. The result type might be a single field for simple
  1683  // returns, a slice of interfaces for anonymous returns and a struct for named
  1684  // returns.
  1685  func (_RLPEncode *RLPEncodeCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1686  	return _RLPEncode.Contract.contract.Call(opts, result, method, params...)
  1687  }
  1688  
  1689  // Transfer initiates a plain transaction to move funds to the contract, calling
  1690  // its default method if one is available.
  1691  func (_RLPEncode *RLPEncodeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1692  	return _RLPEncode.Contract.contract.Transfer(opts)
  1693  }
  1694  
  1695  // Transact invokes the (paid) contract method with params as input values.
  1696  func (_RLPEncode *RLPEncodeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1697  	return _RLPEncode.Contract.contract.Transact(opts, method, params...)
  1698  }
  1699  
  1700  // RequestableIABI is the input ABI used to generate the binding from.
  1701  const RequestableIABI = "[{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"isExit\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"requestor\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"trieKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"trieValue\",\"type\":\"bytes\"}],\"name\":\"applyRequestInChildChain\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"isExit\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"requestor\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"trieKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"trieValue\",\"type\":\"bytes\"}],\"name\":\"applyRequestInRootChain\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  1702  
  1703  // RequestableIFuncSigs maps the 4-byte function signature to its string representation.
  1704  var RequestableIFuncSigs = map[string]string{
  1705  	"141ecf46": "applyRequestInChildChain(bool,uint256,address,bytes32,bytes)",
  1706  	"a9f79308": "applyRequestInRootChain(bool,uint256,address,bytes32,bytes)",
  1707  }
  1708  
  1709  // RequestableI is an auto generated Go binding around an Ethereum contract.
  1710  type RequestableI struct {
  1711  	RequestableICaller     // Read-only binding to the contract
  1712  	RequestableITransactor // Write-only binding to the contract
  1713  	RequestableIFilterer   // Log filterer for contract events
  1714  }
  1715  
  1716  // RequestableICaller is an auto generated read-only Go binding around an Ethereum contract.
  1717  type RequestableICaller struct {
  1718  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1719  }
  1720  
  1721  // RequestableITransactor is an auto generated write-only Go binding around an Ethereum contract.
  1722  type RequestableITransactor struct {
  1723  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1724  }
  1725  
  1726  // RequestableIFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1727  type RequestableIFilterer struct {
  1728  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1729  }
  1730  
  1731  // RequestableISession is an auto generated Go binding around an Ethereum contract,
  1732  // with pre-set call and transact options.
  1733  type RequestableISession struct {
  1734  	Contract     *RequestableI     // Generic contract binding to set the session for
  1735  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1736  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1737  }
  1738  
  1739  // RequestableICallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1740  // with pre-set call options.
  1741  type RequestableICallerSession struct {
  1742  	Contract *RequestableICaller // Generic contract caller binding to set the session for
  1743  	CallOpts bind.CallOpts       // Call options to use throughout this session
  1744  }
  1745  
  1746  // RequestableITransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1747  // with pre-set transact options.
  1748  type RequestableITransactorSession struct {
  1749  	Contract     *RequestableITransactor // Generic contract transactor binding to set the session for
  1750  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
  1751  }
  1752  
  1753  // RequestableIRaw is an auto generated low-level Go binding around an Ethereum contract.
  1754  type RequestableIRaw struct {
  1755  	Contract *RequestableI // Generic contract binding to access the raw methods on
  1756  }
  1757  
  1758  // RequestableICallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1759  type RequestableICallerRaw struct {
  1760  	Contract *RequestableICaller // Generic read-only contract binding to access the raw methods on
  1761  }
  1762  
  1763  // RequestableITransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1764  type RequestableITransactorRaw struct {
  1765  	Contract *RequestableITransactor // Generic write-only contract binding to access the raw methods on
  1766  }
  1767  
  1768  // NewRequestableI creates a new instance of RequestableI, bound to a specific deployed contract.
  1769  func NewRequestableI(address common.Address, backend bind.ContractBackend) (*RequestableI, error) {
  1770  	contract, err := bindRequestableI(address, backend, backend, backend)
  1771  	if err != nil {
  1772  		return nil, err
  1773  	}
  1774  	return &RequestableI{RequestableICaller: RequestableICaller{contract: contract}, RequestableITransactor: RequestableITransactor{contract: contract}, RequestableIFilterer: RequestableIFilterer{contract: contract}}, nil
  1775  }
  1776  
  1777  // NewRequestableICaller creates a new read-only instance of RequestableI, bound to a specific deployed contract.
  1778  func NewRequestableICaller(address common.Address, caller bind.ContractCaller) (*RequestableICaller, error) {
  1779  	contract, err := bindRequestableI(address, caller, nil, nil)
  1780  	if err != nil {
  1781  		return nil, err
  1782  	}
  1783  	return &RequestableICaller{contract: contract}, nil
  1784  }
  1785  
  1786  // NewRequestableITransactor creates a new write-only instance of RequestableI, bound to a specific deployed contract.
  1787  func NewRequestableITransactor(address common.Address, transactor bind.ContractTransactor) (*RequestableITransactor, error) {
  1788  	contract, err := bindRequestableI(address, nil, transactor, nil)
  1789  	if err != nil {
  1790  		return nil, err
  1791  	}
  1792  	return &RequestableITransactor{contract: contract}, nil
  1793  }
  1794  
  1795  // NewRequestableIFilterer creates a new log filterer instance of RequestableI, bound to a specific deployed contract.
  1796  func NewRequestableIFilterer(address common.Address, filterer bind.ContractFilterer) (*RequestableIFilterer, error) {
  1797  	contract, err := bindRequestableI(address, nil, nil, filterer)
  1798  	if err != nil {
  1799  		return nil, err
  1800  	}
  1801  	return &RequestableIFilterer{contract: contract}, nil
  1802  }
  1803  
  1804  // bindRequestableI binds a generic wrapper to an already deployed contract.
  1805  func bindRequestableI(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1806  	parsed, err := abi.JSON(strings.NewReader(RequestableIABI))
  1807  	if err != nil {
  1808  		return nil, err
  1809  	}
  1810  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1811  }
  1812  
  1813  // Call invokes the (constant) contract method with params as input values and
  1814  // sets the output to result. The result type might be a single field for simple
  1815  // returns, a slice of interfaces for anonymous returns and a struct for named
  1816  // returns.
  1817  func (_RequestableI *RequestableIRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1818  	return _RequestableI.Contract.RequestableICaller.contract.Call(opts, result, method, params...)
  1819  }
  1820  
  1821  // Transfer initiates a plain transaction to move funds to the contract, calling
  1822  // its default method if one is available.
  1823  func (_RequestableI *RequestableIRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1824  	return _RequestableI.Contract.RequestableITransactor.contract.Transfer(opts)
  1825  }
  1826  
  1827  // Transact invokes the (paid) contract method with params as input values.
  1828  func (_RequestableI *RequestableIRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1829  	return _RequestableI.Contract.RequestableITransactor.contract.Transact(opts, method, params...)
  1830  }
  1831  
  1832  // Call invokes the (constant) contract method with params as input values and
  1833  // sets the output to result. The result type might be a single field for simple
  1834  // returns, a slice of interfaces for anonymous returns and a struct for named
  1835  // returns.
  1836  func (_RequestableI *RequestableICallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1837  	return _RequestableI.Contract.contract.Call(opts, result, method, params...)
  1838  }
  1839  
  1840  // Transfer initiates a plain transaction to move funds to the contract, calling
  1841  // its default method if one is available.
  1842  func (_RequestableI *RequestableITransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1843  	return _RequestableI.Contract.contract.Transfer(opts)
  1844  }
  1845  
  1846  // Transact invokes the (paid) contract method with params as input values.
  1847  func (_RequestableI *RequestableITransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1848  	return _RequestableI.Contract.contract.Transact(opts, method, params...)
  1849  }
  1850  
  1851  // ApplyRequestInChildChain is a paid mutator transaction binding the contract method 0x141ecf46.
  1852  //
  1853  // Solidity: function applyRequestInChildChain(bool isExit, uint256 requestId, address requestor, bytes32 trieKey, bytes trieValue) returns(bool success)
  1854  func (_RequestableI *RequestableITransactor) ApplyRequestInChildChain(opts *bind.TransactOpts, isExit bool, requestId *big.Int, requestor common.Address, trieKey [32]byte, trieValue []byte) (*types.Transaction, error) {
  1855  	return _RequestableI.contract.Transact(opts, "applyRequestInChildChain", isExit, requestId, requestor, trieKey, trieValue)
  1856  }
  1857  
  1858  // ApplyRequestInChildChain is a paid mutator transaction binding the contract method 0x141ecf46.
  1859  //
  1860  // Solidity: function applyRequestInChildChain(bool isExit, uint256 requestId, address requestor, bytes32 trieKey, bytes trieValue) returns(bool success)
  1861  func (_RequestableI *RequestableISession) ApplyRequestInChildChain(isExit bool, requestId *big.Int, requestor common.Address, trieKey [32]byte, trieValue []byte) (*types.Transaction, error) {
  1862  	return _RequestableI.Contract.ApplyRequestInChildChain(&_RequestableI.TransactOpts, isExit, requestId, requestor, trieKey, trieValue)
  1863  }
  1864  
  1865  // ApplyRequestInChildChain is a paid mutator transaction binding the contract method 0x141ecf46.
  1866  //
  1867  // Solidity: function applyRequestInChildChain(bool isExit, uint256 requestId, address requestor, bytes32 trieKey, bytes trieValue) returns(bool success)
  1868  func (_RequestableI *RequestableITransactorSession) ApplyRequestInChildChain(isExit bool, requestId *big.Int, requestor common.Address, trieKey [32]byte, trieValue []byte) (*types.Transaction, error) {
  1869  	return _RequestableI.Contract.ApplyRequestInChildChain(&_RequestableI.TransactOpts, isExit, requestId, requestor, trieKey, trieValue)
  1870  }
  1871  
  1872  // ApplyRequestInRootChain is a paid mutator transaction binding the contract method 0xa9f79308.
  1873  //
  1874  // Solidity: function applyRequestInRootChain(bool isExit, uint256 requestId, address requestor, bytes32 trieKey, bytes trieValue) returns(bool success)
  1875  func (_RequestableI *RequestableITransactor) ApplyRequestInRootChain(opts *bind.TransactOpts, isExit bool, requestId *big.Int, requestor common.Address, trieKey [32]byte, trieValue []byte) (*types.Transaction, error) {
  1876  	return _RequestableI.contract.Transact(opts, "applyRequestInRootChain", isExit, requestId, requestor, trieKey, trieValue)
  1877  }
  1878  
  1879  // ApplyRequestInRootChain is a paid mutator transaction binding the contract method 0xa9f79308.
  1880  //
  1881  // Solidity: function applyRequestInRootChain(bool isExit, uint256 requestId, address requestor, bytes32 trieKey, bytes trieValue) returns(bool success)
  1882  func (_RequestableI *RequestableISession) ApplyRequestInRootChain(isExit bool, requestId *big.Int, requestor common.Address, trieKey [32]byte, trieValue []byte) (*types.Transaction, error) {
  1883  	return _RequestableI.Contract.ApplyRequestInRootChain(&_RequestableI.TransactOpts, isExit, requestId, requestor, trieKey, trieValue)
  1884  }
  1885  
  1886  // ApplyRequestInRootChain is a paid mutator transaction binding the contract method 0xa9f79308.
  1887  //
  1888  // Solidity: function applyRequestInRootChain(bool isExit, uint256 requestId, address requestor, bytes32 trieKey, bytes trieValue) returns(bool success)
  1889  func (_RequestableI *RequestableITransactorSession) ApplyRequestInRootChain(isExit bool, requestId *big.Int, requestor common.Address, trieKey [32]byte, trieValue []byte) (*types.Transaction, error) {
  1890  	return _RequestableI.Contract.ApplyRequestInRootChain(&_RequestableI.TransactOpts, isExit, requestId, requestor, trieKey, trieValue)
  1891  }
  1892  
  1893  // RolesABI is the input ABI used to generate the binding from.
  1894  const RolesABI = "[]"
  1895  
  1896  // RolesBin is the compiled bytecode used for deploying new contracts.
  1897  var RolesBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201aa75146c2e109912d51a929e368d1efc36fee31e25f784cae25ad0120ec320564736f6c634300050c0032"
  1898  
  1899  // DeployRoles deploys a new Ethereum contract, binding an instance of Roles to it.
  1900  func DeployRoles(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Roles, error) {
  1901  	parsed, err := abi.JSON(strings.NewReader(RolesABI))
  1902  	if err != nil {
  1903  		return common.Address{}, nil, nil, err
  1904  	}
  1905  
  1906  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RolesBin), backend)
  1907  	if err != nil {
  1908  		return common.Address{}, nil, nil, err
  1909  	}
  1910  	return address, tx, &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
  1911  }
  1912  
  1913  // Roles is an auto generated Go binding around an Ethereum contract.
  1914  type Roles struct {
  1915  	RolesCaller     // Read-only binding to the contract
  1916  	RolesTransactor // Write-only binding to the contract
  1917  	RolesFilterer   // Log filterer for contract events
  1918  }
  1919  
  1920  // RolesCaller is an auto generated read-only Go binding around an Ethereum contract.
  1921  type RolesCaller struct {
  1922  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1923  }
  1924  
  1925  // RolesTransactor is an auto generated write-only Go binding around an Ethereum contract.
  1926  type RolesTransactor struct {
  1927  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1928  }
  1929  
  1930  // RolesFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1931  type RolesFilterer struct {
  1932  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1933  }
  1934  
  1935  // RolesSession is an auto generated Go binding around an Ethereum contract,
  1936  // with pre-set call and transact options.
  1937  type RolesSession struct {
  1938  	Contract     *Roles            // Generic contract binding to set the session for
  1939  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1940  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1941  }
  1942  
  1943  // RolesCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1944  // with pre-set call options.
  1945  type RolesCallerSession struct {
  1946  	Contract *RolesCaller  // Generic contract caller binding to set the session for
  1947  	CallOpts bind.CallOpts // Call options to use throughout this session
  1948  }
  1949  
  1950  // RolesTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1951  // with pre-set transact options.
  1952  type RolesTransactorSession struct {
  1953  	Contract     *RolesTransactor  // Generic contract transactor binding to set the session for
  1954  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1955  }
  1956  
  1957  // RolesRaw is an auto generated low-level Go binding around an Ethereum contract.
  1958  type RolesRaw struct {
  1959  	Contract *Roles // Generic contract binding to access the raw methods on
  1960  }
  1961  
  1962  // RolesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1963  type RolesCallerRaw struct {
  1964  	Contract *RolesCaller // Generic read-only contract binding to access the raw methods on
  1965  }
  1966  
  1967  // RolesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1968  type RolesTransactorRaw struct {
  1969  	Contract *RolesTransactor // Generic write-only contract binding to access the raw methods on
  1970  }
  1971  
  1972  // NewRoles creates a new instance of Roles, bound to a specific deployed contract.
  1973  func NewRoles(address common.Address, backend bind.ContractBackend) (*Roles, error) {
  1974  	contract, err := bindRoles(address, backend, backend, backend)
  1975  	if err != nil {
  1976  		return nil, err
  1977  	}
  1978  	return &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
  1979  }
  1980  
  1981  // NewRolesCaller creates a new read-only instance of Roles, bound to a specific deployed contract.
  1982  func NewRolesCaller(address common.Address, caller bind.ContractCaller) (*RolesCaller, error) {
  1983  	contract, err := bindRoles(address, caller, nil, nil)
  1984  	if err != nil {
  1985  		return nil, err
  1986  	}
  1987  	return &RolesCaller{contract: contract}, nil
  1988  }
  1989  
  1990  // NewRolesTransactor creates a new write-only instance of Roles, bound to a specific deployed contract.
  1991  func NewRolesTransactor(address common.Address, transactor bind.ContractTransactor) (*RolesTransactor, error) {
  1992  	contract, err := bindRoles(address, nil, transactor, nil)
  1993  	if err != nil {
  1994  		return nil, err
  1995  	}
  1996  	return &RolesTransactor{contract: contract}, nil
  1997  }
  1998  
  1999  // NewRolesFilterer creates a new log filterer instance of Roles, bound to a specific deployed contract.
  2000  func NewRolesFilterer(address common.Address, filterer bind.ContractFilterer) (*RolesFilterer, error) {
  2001  	contract, err := bindRoles(address, nil, nil, filterer)
  2002  	if err != nil {
  2003  		return nil, err
  2004  	}
  2005  	return &RolesFilterer{contract: contract}, nil
  2006  }
  2007  
  2008  // bindRoles binds a generic wrapper to an already deployed contract.
  2009  func bindRoles(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2010  	parsed, err := abi.JSON(strings.NewReader(RolesABI))
  2011  	if err != nil {
  2012  		return nil, err
  2013  	}
  2014  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  2015  }
  2016  
  2017  // Call invokes the (constant) contract method with params as input values and
  2018  // sets the output to result. The result type might be a single field for simple
  2019  // returns, a slice of interfaces for anonymous returns and a struct for named
  2020  // returns.
  2021  func (_Roles *RolesRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2022  	return _Roles.Contract.RolesCaller.contract.Call(opts, result, method, params...)
  2023  }
  2024  
  2025  // Transfer initiates a plain transaction to move funds to the contract, calling
  2026  // its default method if one is available.
  2027  func (_Roles *RolesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2028  	return _Roles.Contract.RolesTransactor.contract.Transfer(opts)
  2029  }
  2030  
  2031  // Transact invokes the (paid) contract method with params as input values.
  2032  func (_Roles *RolesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2033  	return _Roles.Contract.RolesTransactor.contract.Transact(opts, method, params...)
  2034  }
  2035  
  2036  // Call invokes the (constant) contract method with params as input values and
  2037  // sets the output to result. The result type might be a single field for simple
  2038  // returns, a slice of interfaces for anonymous returns and a struct for named
  2039  // returns.
  2040  func (_Roles *RolesCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2041  	return _Roles.Contract.contract.Call(opts, result, method, params...)
  2042  }
  2043  
  2044  // Transfer initiates a plain transaction to move funds to the contract, calling
  2045  // its default method if one is available.
  2046  func (_Roles *RolesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2047  	return _Roles.Contract.contract.Transfer(opts)
  2048  }
  2049  
  2050  // Transact invokes the (paid) contract method with params as input values.
  2051  func (_Roles *RolesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2052  	return _Roles.Contract.contract.Transact(opts, method, params...)
  2053  }
  2054  
  2055  // RootChainABI is the input ABI used to generate the binding from.
  2056  const RootChainABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_epochHandler\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_submitHandler\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_etherToken\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_development\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_NRELength\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_statesRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_transactionsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_receiptsRoot\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"BlockFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fork\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isRequest\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"BlockSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"requestor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trieKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"trieValue\",\"type\":\"bytes32\"}],\"name\":\"ERUCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"}],\"name\":\"EpochFilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"}],\"name\":\"EpochFilling\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endBlockNumber\",\"type\":\"uint256\"}],\"name\":\"EpochFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestStart\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestEnd\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"epochIsEmpty\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isRequest\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"rebase\",\"type\":\"bool\"}],\"name\":\"EpochPrepared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestStart\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestEnd\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"epochIsEmpty\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isRequest\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"EpochRebased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFork\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkedBlockNumber\",\"type\":\"uint256\"}],\"name\":\"Forked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MapperAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MapperRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newOperator\",\"type\":\"address\"}],\"name\":\"OperatorChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"RequestApplied\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"RequestChallenged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"requestor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weiAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"trieKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trieValue\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isExit\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"RequestCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"RequestFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractInRootchain\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractInChildchain\",\"type\":\"address\"}],\"name\":\"RequestableContractMapped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"SessionTimeout\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"SubmitterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"SubmitterRemoved\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"COST_ERO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"COST_ERU\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"COST_NRB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"COST_ORB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"COST_URB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"COST_URB_PREPARE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CP_COMPUTATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CP_EXIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CP_WITHHOLDING\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"EROIdToFinalize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"EROs\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isExit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isTransfer\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"challenged\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"internalType\":\"addresspayable\",\"name\":\"requestor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"trieKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"trieValue\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ERUIdToFinalize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ERUs\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isExit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isTransfer\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"challenged\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"internalType\":\"addresspayable\",\"name\":\"requestor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"trieKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"trieValue\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_REQUESTS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxRequests\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"NRELength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"NULL_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ORBs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"submitted\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"numEnter\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"epochNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestStart\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestEnd\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"trie\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PREPARE_TIMEOUT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"REQUEST_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"URBs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"submitted\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"numEnter\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"epochNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestStart\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestEnd\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"trie\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMapper\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSubmitter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_forkNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_receiptData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"challengeExit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_key\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_txByte\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_branchMask\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"_siblings\",\"type\":\"bytes32[]\"}],\"name\":\"challengeNullAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"changeOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"development\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"epochHandler\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"etherToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"finalizeBlock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"finalizeRequest\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"finalizeRequests\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"firstFilledORENumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"firstNonEmptyRequestEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_forkNumber\",\"type\":\"uint256\"}],\"name\":\"forked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"forks\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"forkedBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"firstEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"firstBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastFinalizedEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastFinalizedBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"firstEnterEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastEnterEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextBlockToRebase\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"rebased\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlock\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"epochNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalizedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"referenceBlock\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"statesRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"transactionsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"receiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isRequest\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"challenged\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"challenging\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"}],\"internalType\":\"structData.PlasmaBlock\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockFinalizedAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"}],\"name\":\"getEROBytes\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"out\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"}],\"name\":\"getEpoch\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"startBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isEmpty\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRequest\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"rebase\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestStart\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestEnd\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"firstRequestBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEnter\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEnterEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEpoch\",\"type\":\"uint64\"}],\"internalType\":\"structData.RequestEpochMeta\",\"name\":\"RE\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"epochStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"epochTransactionsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"epochReceiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"submittedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalizedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"challenging\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"challenged\",\"type\":\"bool\"}],\"internalType\":\"structData.NonRequestEpochMeta\",\"name\":\"NRE\",\"type\":\"tuple\"}],\"internalType\":\"structData.Epoch\",\"name\":\"epoch\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getLastEpoch\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"startBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endBlockNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isEmpty\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"initialized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isRequest\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"rebase\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"requestStart\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestEnd\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"firstRequestBlockId\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"numEnter\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEnterEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextEpoch\",\"type\":\"uint64\"}],\"internalType\":\"structData.RequestEpochMeta\",\"name\":\"RE\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"epochStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"epochTransactionsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"epochReceiptsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"submittedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"finalizedAt\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"challenging\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"challenged\",\"type\":\"bool\"}],\"internalType\":\"structData.NonRequestEpochMeta\",\"name\":\"NRE\",\"type\":\"tuple\"}],\"internalType\":\"structData.Epoch\",\"name\":\"\",\"type\":\"tuple\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"}],\"name\":\"getLastFinalizedBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"}],\"name\":\"getLastFinalizedEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumEROs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getNumORBs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_userActivated\",\"type\":\"bool\"}],\"name\":\"getRequestFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMapper\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRootChain\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSubmitter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastAppliedBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastAppliedEpochNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastAppliedForkNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"}],\"name\":\"lastBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastBlock\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"}],\"name\":\"lastEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastBlock\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lastNonEmptyRequestEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_trieKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_trieValue\",\"type\":\"bytes\"}],\"name\":\"makeERU\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_childchain\",\"type\":\"address\"}],\"name\":\"mapRequestableContractByOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"numEnterForORB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"prepareToSubmitURB\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMapper\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSubmitter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"requestableContracts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"seigManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"setSeigManager\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_trieKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_trieValue\",\"type\":\"bytes\"}],\"name\":\"startEnter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_trieKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_trieValue\",\"type\":\"bytes\"}],\"name\":\"startExit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"submitHandler\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pos1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_pos2\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_epochStateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_epochTransactionsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_epochReceiptsRoot\",\"type\":\"bytes32\"}],\"name\":\"submitNRE\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pos\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_statesRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_transactionsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_receiptsRoot\",\"type\":\"bytes32\"}],\"name\":\"submitORB\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pos\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_statesRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_transactionsRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_receiptsRoot\",\"type\":\"bytes32\"}],\"name\":\"submitURB\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}]"
  2057  
  2058  // RootChainFuncSigs maps the 4-byte function signature to its string representation.
  2059  var RootChainFuncSigs = map[string]string{
  2060  	"d691acd8": "COST_ERO()",
  2061  	"8b5172d0": "COST_ERU()",
  2062  	"94be3aa5": "COST_NRB()",
  2063  	"b2ae9ba8": "COST_ORB()",
  2064  	"192adc5b": "COST_URB()",
  2065  	"033cfbed": "COST_URB_PREPARE()",
  2066  	"08c4fff0": "CP_COMPUTATION()",
  2067  	"8155717d": "CP_EXIT()",
  2068  	"b17fa6e9": "CP_WITHHOLDING()",
  2069  	"2dc6bb7b": "EROIdToFinalize()",
  2070  	"b443f3cc": "EROs(uint256)",
  2071  	"c54626cc": "ERUIdToFinalize()",
  2072  	"f4f31de4": "ERUs(uint256)",
  2073  	"93521222": "MAX_REQUESTS()",
  2074  	"ab96da2d": "NRELength()",
  2075  	"de0ce17d": "NULL_ADDRESS()",
  2076  	"ea7f22a8": "ORBs(uint256)",
  2077  	"c2bc88fa": "PREPARE_TIMEOUT()",
  2078  	"8eb288ca": "REQUEST_GAS()",
  2079  	"c0e86064": "URBs(uint256)",
  2080  	"80e3e81d": "addMapper(address)",
  2081  	"072900f9": "addSubmitter(address)",
  2082  	"404f7d66": "challengeExit(uint256,uint256,uint256,bytes,bytes)",
  2083  	"6299fb24": "challengeNullAddress(uint256,bytes,bytes,uint256,bytes32[])",
  2084  	"06394c9b": "changeOperator(address)",
  2085  	"183d2d1c": "currentFork()",
  2086  	"7b929c27": "development()",
  2087  	"e7b88b80": "epochHandler()",
  2088  	"b8066bcb": "etherToken()",
  2089  	"75395a58": "finalizeBlock()",
  2090  	"99bd3600": "finalizeRequest()",
  2091  	"54768571": "finalizeRequests(uint256)",
  2092  	"72ecb9a8": "firstFilledORENumber(uint256)",
  2093  	"ca6f6380": "firstNonEmptyRequestEpoch(uint256)",
  2094  	"ce8a2bc2": "forked(uint256)",
  2095  	"4ba3a126": "forks(uint256)",
  2096  	"4a44bdb8": "getBlock(uint256,uint256)",
  2097  	"5b884682": "getBlockFinalizedAt(uint256,uint256)",
  2098  	"d1723a96": "getEROBytes(uint256)",
  2099  	"2b25a38b": "getEpoch(uint256,uint256)",
  2100  	"398bac63": "getLastEpoch()",
  2101  	"d636857e": "getLastFinalizedBlock(uint256)",
  2102  	"019dc099": "getLastFinalizedEpoch(uint256)",
  2103  	"b540adba": "getNumEROs()",
  2104  	"ea0c73f6": "getNumORBs()",
  2105  	"f28a7afa": "getRequestFinalized(uint256,bool)",
  2106  	"c0c49c2a": "isMapper(address)",
  2107  	"420bb4b8": "isRootChain()",
  2108  	"a926fdbc": "isSubmitter(address)",
  2109  	"fb788a27": "lastAppliedBlockNumber()",
  2110  	"c8ad329f": "lastAppliedEpochNumber()",
  2111  	"164bc2ae": "lastAppliedForkNumber()",
  2112  	"1ec2042b": "lastBlock(uint256)",
  2113  	"11e4c914": "lastEpoch(uint256)",
  2114  	"b6715647": "lastNonEmptyRequestEpoch(uint256)",
  2115  	"78fe705f": "makeERU(address,bytes32,bytes)",
  2116  	"cb5d742f": "mapRequestableContractByOperator(address,address)",
  2117  	"23691566": "numEnterForORB()",
  2118  	"570ca735": "operator()",
  2119  	"e6925d08": "prepareToSubmitURB()",
  2120  	"3565fb0d": "renounceMapper()",
  2121  	"5e0ca71b": "renounceSubmitter()",
  2122  	"da0185f8": "requestableContracts(address)",
  2123  	"6fb7f558": "seigManager()",
  2124  	"7657f20a": "setSeigManager(address)",
  2125  	"2aa196c8": "startEnter(address,bytes32,bytes)",
  2126  	"e7f96505": "startExit(address,bytes32,bytes)",
  2127  	"e259faf7": "submitHandler()",
  2128  	"0eaf45a8": "submitNRE(uint256,uint256,bytes32,bytes32,bytes32)",
  2129  	"a820c067": "submitORB(uint256,bytes32,bytes32,bytes32)",
  2130  	"6f3e4b90": "submitURB(uint256,bytes32,bytes32,bytes32)",
  2131  }
  2132  
  2133  // RootChainBin is the compiled bytecode used for deploying new contracts.
  2134  var RootChainBin = "0x60806040523480156200001157600080fd5b5060405162005f9438038062005f9483398101604081905262000034916200063e565b62000048336001600160e01b036200026316565b6200005c336001600160e01b03620002b516565b6200007b886001600160a01b03166200030760201b620035731760201c565b6200008557600080fd5b620000a4876001600160a01b03166200030760201b620035731760201c565b620000ae57600080fd5b620000cd866001600160a01b03166200030760201b620035731760201c565b620000d757600080fd5b600180546001600160a01b03199081166001600160a01b038b8116919091179092556002805482168a8416178155600380549092169289169290921781556000805460ff191688151517610100600160a81b031916610100330217815560058790556006548152600860209081526040808320838052600480820184528285208088018b90558087018a90559081018890559481019092528083208054790100000000000000000000000000000000000000000000000000600160801b600160c01b0319909116700100000000000000000000000000000000426001600160401b0316021760ff60c81b191617905593825292812080547a010000000000000000000000000000000000000000000000000000780100000000000000000000000000000000000000000000000060ff60c01b199092169190911760ff60d01b19161790556200022a90839083906200030d565b620002408260006001600160e01b03620003f316565b620002536001600160e01b03620004c916565b50505050505050505050620008b8565b6200027e8160166200059860201b620038421790919060201c565b6040516001600160a01b038216907fa199526a01dbcba68aa3ab9d7d06c6692c83fb1a8bcf2184e6d94ad34f5aaf9590600090a250565b620002d08160176200059860201b620038421790919060201c565b6040516001600160a01b038216907fb079bc2cbde1f186e0b351d4a87c4597e3ed098f571548617449e73506428d8b90600090a250565b3b151590565b60058201805464010000000060ff60201b1990911617905581546001600160c01b03167801000000000000000000000000000000000000000000000000426001600160401b0390811691909102919091178355600184018054600160801b600160c01b03191670010000000000000000000000000000000084841602178082558454600160401b600160801b0319909116921668010000000000000000029190911790556006546040517ffb96205e4b3633fd57aa805b26b51ecf528714a10241a4af015929dce86768d991620003e6918490620007ad565b60405180910390a1505050565b6000818152600383016020526040908190206006808201805470010000000000000000000000000000000060ff60801b199091168117600160401b600160801b031990811668010000000000000000426001600160401b03908116820292909217909455855460018a018054600160801b600160c01b0319169186900483169094021790911681881684021790915591548354945193947f70801d4d63b3da6c19ba7349911f45bed5a99ccdfb51b8138c105872529bebd594620003e6949293889383811693919091041690620007cc565b5050565b6001546040516000916060916001600160a01b0390911690620004ec90620007a0565b60408051918290038220600483526024830182526020830180516001600160e01b03167fffffffff00000000000000000000000000000000000000000000000000000000909216919091179052516200054691906200078b565b600060405180830381855af49150503d806000811462000583576040519150601f19603f3d011682016040523d82523d6000602084013e62000588565b606091505b509150915081620004c557600080fd5b620005ad82826001600160e01b03620005dd16565b15620005b857600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216620005f357600080fd5b506001600160a01b03811660009081526020839052604090205460ff165b92915050565b8051620006118162000888565b80516200061181620008a2565b80516200061181620008ad565b600080600080600080600080610100898b0312156200065c57600080fd5b60006200066a8b8b62000617565b98505060206200067d8b828c0162000617565b9750506040620006908b828c0162000617565b9650506060620006a38b828c0162000624565b9550506080620006b68b828c0162000631565b94505060a0620006c98b828c0162000631565b93505060c0620006dc8b828c0162000631565b92505060e0620006ef8b828c0162000631565b9150509295985092959890939650565b60006200070c8262000812565b62000718818562000816565b93506200072a81856020860162000855565b9290920192915050565b600062000743600c8362000816565b7f707265706172654e5245282900000000000000000000000000000000000000008152600c0192915050565b6200077a816200082d565b82525050565b6200077a8162000848565b6000620007998284620006ff565b9392505050565b6000620006118262000734565b60408101620007bd82856200076f565b6200079960208301846200076f565b60808101620007dc82876200076f565b620007eb60208301866200076f565b620007fa604083018562000780565b62000809606083018462000780565b95945050505050565b5190565b919050565b6000620006118262000830565b151590565b90565b6001600160a01b031690565b6001600160401b031690565b600062000611826200083c565b60005b838110156200087257818101518382015260200162000858565b8381111562000882576000848401525b50505050565b62000893816200081b565b81146200089f57600080fd5b50565b620008938162000828565b62000893816200082d565b6156cc80620008c86000396000f3fe6080604052600436106104105760003560e01c80638b5172d01161021e578063c8ad329f11610123578063e259faf7116100ab578063ea0c73f61161007a578063ea0c73f614610ab5578063ea7f22a814610aca578063f28a7afa14610aea578063f4f31de414610b0a578063fb788a2714610b2a57610410565b8063e259faf714610a70578063e6925d0814610a85578063e7b88b8014610a8d578063e7f9650514610aa257610410565b8063d1723a96116100f2578063d1723a96146109ee578063d636857e14610a1b578063d691acd81461044b578063da0185f814610a3b578063de0ce17d14610a5b57610410565b8063c8ad329f14610979578063ca6f63801461098e578063cb5d742f146109ae578063ce8a2bc2146109ce57610410565b8063b2ae9ba8116101a6578063b8066bcb11610175578063b8066bcb146108e8578063c0c49c2a146108fd578063c0e860641461091d578063c2bc88fa1461094f578063c54626cc1461096457610410565b8063b2ae9ba81461044b578063b443f3cc1461087c578063b540adba146108b3578063b6715647146108c857610410565b806399bd3600116101ed57806399bd36001461080a578063a820c0671461081f578063a926fdbc14610832578063ab96da2d14610852578063b17fa6e91461086757610410565b80638b5172d01461044b5780638eb288ca146107e057806393521222146107f557806394be3aa51461044b57610410565b8063404f7d66116103245780636f3e4b90116102ac5780637657f20a1161027b5780637657f20a1461076357806378fe705f146107835780637b929c271461079657806380e3e81d146107ab5780638155717d146107cb57610410565b80636f3e4b90146107065780636fb7f5581461071957806372ecb9a81461072e57806375395a581461074e57610410565b806354768571116102f3578063547685711461066f578063570ca7351461068f5780635b884682146106b15780635e0ca71b146106d15780636299fb24146106e657610410565b8063404f7d66146105d5578063420bb4b8146105f55780634a44bdb81461060a5780634ba3a1261461063757610410565b8063183d2d1c116103a75780632aa196c8116103765780632aa196c8146105565780632b25a38b146105695780632dc6bb7b146105965780633565fb0d146105ab578063398bac63146105c057610410565b8063183d2d1c1461050c578063192adc5b1461044b5780631ec2042b14610521578063236915661461054157610410565b806308c4fff0116103e357806308c4fff0146104a25780630eaf45a8146104b757806311e4c914146104d7578063164bc2ae146104f757610410565b8063019dc09914610415578063033cfbed1461044b57806306394c9b14610460578063072900f914610482575b600080fd5b34801561042157600080fd5b506104356104303660046148cd565b610b3f565b604051610442919061526a565b60405180910390f35b34801561045757600080fd5b50610435610b67565b34801561046c57600080fd5b5061048061047b3660046147eb565b610b6c565b005b34801561048e57600080fd5b5061048061049d3660046147eb565b610be3565b3480156104ae57600080fd5b50610435610c0b565b6104ca6104c5366004614a73565b610c10565b604051610442919061515f565b3480156104e357600080fd5b506104356104f23660046148cd565b610c51565b34801561050357600080fd5b50610435610c73565b34801561051857600080fd5b50610435610c79565b34801561052d57600080fd5b5061043561053c3660046148cd565b610c7f565b34801561054d57600080fd5b50610435610c9d565b6104ca61056436600461484b565b610ca3565b34801561057557600080fd5b50610589610584366004614a43565b610d65565b604051610442919061524c565b3480156105a257600080fd5b506104356110cd565b3480156105b757600080fd5b506104806110d3565b3480156105cc57600080fd5b506105896110de565b3480156105e157600080fd5b506104806105f0366004614ae8565b611479565b34801561060157600080fd5b506104ca611705565b34801561061657600080fd5b5061062a610625366004614a43565b61170a565b604051610442919061525b565b34801561064357600080fd5b506106576106523660046148cd565b6117fa565b6040516104429c9b9a999897969594939291906154b8565b34801561067b57600080fd5b506104ca61068a3660046148cd565b611871565b34801561069b57600080fd5b506106a461189f565b6040516104429190615136565b3480156106bd57600080fd5b506104356106cc366004614a43565b6118b3565b3480156106dd57600080fd5b506104806118e4565b3480156106f257600080fd5b5061048061070136600461497c565b6118ed565b6104ca61071436600461491b565b611950565b34801561072557600080fd5b506106a4611958565b34801561073a57600080fd5b506104356107493660046148cd565b611967565b34801561075a57600080fd5b506104ca611979565b34801561076f57600080fd5b5061048061077e3660046147eb565b611992565b6104ca61079136600461484b565b6119d0565b3480156107a257600080fd5b506104ca611a3e565b3480156107b757600080fd5b506104806107c63660046147eb565b611a47565b3480156107d757600080fd5b50610435611a6c565b3480156107ec57600080fd5b50610435611a71565b34801561080157600080fd5b50610435611a78565b34801561081657600080fd5b506104ca611a87565b6104ca61082d36600461491b565b612327565b34801561083e57600080fd5b506104ca61084d3660046147eb565b612366565b34801561085e57600080fd5b50610435612379565b34801561087357600080fd5b5061043561237f565b34801561088857600080fd5b5061089c6108973660046148cd565b612384565b6040516104429b9a9998979695949392919061540e565b3480156108bf57600080fd5b506104356124a5565b3480156108d457600080fd5b506104356108e33660046148cd565b6124ab565b3480156108f457600080fd5b506106a46124bd565b34801561090957600080fd5b506104ca6109183660046147eb565b6124cc565b34801561092957600080fd5b5061093d6109383660046148cd565b6124df565b604051610442969594939291906151b4565b34801561095b57600080fd5b50610435612546565b34801561097057600080fd5b5061043561254b565b34801561098557600080fd5b50610435612551565b34801561099a57600080fd5b506104356109a93660046148cd565b612557565b3480156109ba57600080fd5b506104ca6109c9366004614811565b612569565b3480156109da57600080fd5b506104ca6109e93660046148cd565b61262f565b3480156109fa57600080fd5b50610a0e610a093660046148cd565b612637565b604051610442919061522b565b348015610a2757600080fd5b50610435610a363660046148cd565b6127e0565b348015610a4757600080fd5b506106a4610a563660046147eb565b612805565b348015610a6757600080fd5b506106a4610b67565b348015610a7c57600080fd5b506106a4612820565b61048061282f565b348015610a9957600080fd5b506106a4612836565b6104ca610ab036600461484b565b612845565b348015610ac157600080fd5b506104356128a1565b348015610ad657600080fd5b5061093d610ae53660046148cd565b6128a7565b348015610af657600080fd5b506104ca610b053660046148eb565b6128b4565b348015610b1657600080fd5b5061089c610b253660046148cd565b6128fd565b348015610b3657600080fd5b5061043561290a565b600081815260086020526040902060010154600160401b90046001600160401b03165b919050565b600081565b60005461010090046001600160a01b03163314610b8857600080fd5b60008054610100600160a81b0319166101006001600160a01b038416021790556040517f4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e5490610bd8908390615136565b60405180910390a150565b60005461010090046001600160a01b03163314610bff57600080fd5b610c0881612910565b50565b600f81565b6000610c1b33612366565b610c2457600080fd5b6000805460ff16610c3957610c37612958565b505b610c468787878787612ace565b979650505050505050565b600090815260086020526040902054600160801b90046001600160401b031690565b60105481565b60065481565b6000908152600860205260409020600101546001600160401b031690565b600d5481565b60008034610cb96009600b888489898880612bad565b600d805460010190556006546000908152600860205260408082209051929450917f6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c291610d089186919061532c565b60405180910390a17f879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d833389858a8a600080604051610d4e9897969594939291906152f6565b60405180910390a1600193505050505b9392505050565b610d6d6142cd565b600860008481526020019081526020016000206003016000838152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900460ff161515151581526020016000820160199054906101000a900460ff1615151515815260200160008201601a9054906101000a900460ff1615151515815260200160008201601b9054906101000a900460ff1615151515815260200160008201601c9054906101000a900460ff16151515158152602001600182016040518060c00160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016001820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016001820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681525050815260200160038201604051806101000160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016003820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016003820160109054906101000a900460ff161515151581526020016003820160119054906101000a900460ff161515151581526020016003820160129054906101000a900460ff1615151515815250508152505090505b92915050565b60135481565b6110dc336131cf565b565b6110e66142cd565b600860006006548152602001908152602001600020600301600060086000600654815260200190815260200160002060000160109054906101000a90046001600160401b03166001600160401b03168152602001908152602001600020604051806101400160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a900460ff161515151581526020016000820160199054906101000a900460ff1615151515815260200160008201601a9054906101000a900460ff1615151515815260200160008201601b9054906101000a900460ff1615151515815260200160008201601c9054906101000a900460ff16151515158152602001600182016040518060c00160405290816000820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160109054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016000820160189054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016001820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016001820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681525050815260200160038201604051806101000160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016003820160089054906101000a90046001600160401b03166001600160401b03166001600160401b031681526020016003820160109054906101000a900460ff161515151581526020016003820160119054906101000a900460ff161515151581526020016003820160129054906101000a900460ff1615151515815250508152505090505b90565b600087815260086020908152604080832089845260048101909252909120600581015460ff166114a857600080fd5b6005810154640100000000900460ff166114c157600080fd5b6005810154600090610100900460ff1680156115cd5761159a83600c8560000160089054906101000a90046001600160401b03166001600160401b03168154811061150857fe5b9060005260206000209060020201600a8c8c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061321792505050565b60405190925033906108fc9060009081818181818888f193505050501580156115c7573d6000803e3d6000fd5b506116bf565b61169083600b8560000160089054906101000a90046001600160401b03166001600160401b0316815481106115fe57fe5b906000526020600020906002020160098c8c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061321792505050565b60405190925033906108fc9060009081818181818888f193505050501580156116bd573d6000803e3d6000fd5b505b7fc8135db115644ed4ae193313c4c801235ef740d2a57a8d5e6fe26ab66635698a82826040516116f092919061532c565b60405180910390a15050505050505050505050565b600181565b61171261432d565b506000918252600860209081526040808420928452600492830182529283902083516101a08101855281546001600160401b038082168352600160401b8204811694830194909452600160801b8104841695820195909552600160c01b9094048216606085015260018101549091166080840152600281015460a0840152600381015460c08401529081015460e08301526005015460ff80821615156101008085019190915282048116151561012084015262010000820481161515610140840152630100000082048116151561016084015264010000000090910416151561018082015290565b6008602052600090815260409020805460018201546002909201546001600160401b0380831693600160401b808504831694600160801b808204851695600160c01b92839004861695858116958581048216958482048316959182900483169484841694918204841693908204169160ff9104168c565b6000805b8281101561189657611885611a87565b61188e57600080fd5b600101611875565b50600192915050565b60005461010090046001600160a01b031681565b600091825260086020908152604080842092845260049092019052902054600160c01b90046001600160401b031690565b6110dc33613322565b60065460009081526008602090815260408083208b845260048101909252909120600581015460ff161561192057600080fd5b8054426001600160401b03600160801b90920491909116600f011161194457600080fd5b50505050505050505050565b600080610410565b6004546001600160a01b031681565b60076020526000908152604090205481565b6000611983612958565b61198c57600080fd5b50600190565b60005461010090046001600160a01b031633146119ae57600080fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b60008060006119e9600a600c8860008989600180612bad565b90507f879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d81338860008989600180604051611a2a989796959493929190615278565b60405180910390a150600195945050505050565b60005460ff1681565b60005461010090046001600160a01b03163314611a6357600080fd5b610c088161336a565b600a81565b620186a081565b6000611a826133b2565b905090565b60105460009081526008602052604081206011546001820154601254849392916001600160401b03161015611abb57600080fd5b601254600090815260048301602090815260408083208484526003860190925290912083546001600160401b031615801590611b05575083546012546001600160401b0390911611155b15611b705750506010805460010190819055600090815260086020908152604080832080546001600160401b03600160401b82048116808752600384018652848720600160c01b90930490911660128190556011829055865260048301909452919093209294509092505b600582015460ff16611c025782611b9a576010546000908152600f60205260409020549250611bc1565b600092835260038401602052604090922060020154600160401b90046001600160401b0316915b82611bcb57600080fd5b50506000818152600383016020908152604080832080546001600160401b0316601281905584526004860190925290912090611c22565b5080546001600160401b0316600081815260038501602052604090209092505b60118390558054600160c01b900460ff1615611c3d57600080fd5b8054600160d01b900460ff16611c5257600080fd5b600582015460ff16611c6357600080fd5b6005820154640100000000900460ff16611c7c57600080fd5b8154426001600160401b03600160c01b90920491909116600a011115611ca157600080fd5b6005820154610100900460ff161561201557601454600a549095508510611cc757600080fd5b6000600a8681548110611cd657fe5b906000526020600020906006020190506000600c8460000160089054906101000a90046001600160401b03166001600160401b031681548110611d1557fe5b600091825260209091206002909102018054909150600160881b90046001600160401b03168710801590611d56575060018101546001600160401b03168711155b611d5f57600080fd5b60018101546001600160401b0316871415611dba5785546001600160401b031615801590611da1575085546012546000196001600160401b0392831601909116145b15611db0576010805460010190555b6012805460010190555b600187016014558154600160401b900460ff168015611de257508154600160581b900460ff16155b15611fb957604080516101608101825283546001600160401b0381168252600160401b810460ff9081161515602080850191909152600160481b83048216151584860152600160501b8304821615156060850152600160581b830490911615156080840152600160601b9091046001600160801b031660a08301526001808601546001600160a01b0390811660c085015260028088015490911660e085015260038701546101008086019190915260048801546101208601526005880180548751948116159092026000190190911691909104601f8101849004840283018401909552848252611f43948c9493889361014086019390929091830182828015611f2c5780601f10611f0157610100808354040283529160200191611f2c565b820191906000526020600020905b815481529060010190602001808311611f0f57829003601f168201915b5050505050815250506133b790919063ffffffff16565b5060018201546040516001600160a01b03909116906108fc9060009081818181818888f19350505050158015611f7d573d6000803e3d6000fd5b507f6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c2876001604051611fb092919061532c565b60405180910390a15b815460ff60501b1916600160501b1782556040517f134017cf3262b18f892ee95dde3b0aec9a80cc70a7c96f09c64bd237aceb047390611ffd90899060019061532c565b60405180910390a16001975050505050505050611476565b601354600954909550851061202957600080fd5b8154600b8054600092600160401b90046001600160401b031690811061204b57fe5b600091825260209091206002909102018054909150600160881b90046001600160401b0316861080159061208c575060018101546001600160401b03168611155b61209557600080fd5b60018101546001600160401b03168614156120f05784546001600160401b0316158015906120d7575084546012546000196001600160401b0392831601909116145b156120e6576010805460010190555b6012805460010190555b6000600987815481106120ff57fe5b6000918252602090912060018901601355600690910201805460ff60501b1916600160501b17808255909150600160401b900460ff16801561214a57508054600160581b900460ff16155b156122df57604080516101608101825282546001600160401b0381168252600160401b810460ff9081161515602080850191909152600160481b83048216151584860152600160501b8304821615156060850152600160581b830490911615156080840152600160601b9091046001600160801b031660a08301526001808501546001600160a01b0390811660c085015260028087015490911660e085015260038601546101008086019190915260048701546101208601526005870180548751948116159092026000190190911691909104601f8101849004840283018401909552848252612269948c9493879361014086019390929091830182828015611f2c5780601f10611f0157610100808354040283529160200191611f2c565b5060018101546040516001600160a01b03909116906108fc9060009081818181818888f193505050501580156122a3573d6000803e3d6000fd5b507f6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c28760006040516122d692919061532c565b60405180910390a15b7f134017cf3262b18f892ee95dde3b0aec9a80cc70a7c96f09c64bd237aceb047387600060405161231192919061532c565b60405180910390a1600197505050505050505090565b600061233233612366565b61233b57600080fd5b6000805460ff166123505761234e612958565b505b61235c86868686613464565b9695505050505050565b60006110c760178363ffffffff61353e16565b60055481565b601481565b6009818154811061239157fe5b6000918252602091829020600691909102018054600180830154600280850154600386015460048701546005880180546040805161010099831615999099026000190190911695909504601f81018b90048b0288018b019095528487526001600160401b0388169a50600160401b880460ff9081169a600160481b8a0482169a600160501b8b0483169a600160581b810490931699600160601b9093046001600160801b0316986001600160a01b039081169897169690939183018282801561249b5780601f106124705761010080835404028352916020019161249b565b820191906000526020600020905b81548152906001019060200180831161247e57829003601f168201915b505050505090508b565b60095490565b600e6020526000908152604090205481565b6003546001600160a01b031681565b60006110c760168363ffffffff61353e16565b600c81815481106124ec57fe5b60009182526020909120600290910201805460019091015460ff821692506001600160401b036101008304811692600160481b8104821692600160881b9091048216918116906001600160a01b03600160401b9091041686565b603c81565b60145481565b60115481565b600f6020526000908152604090205481565b6000612574336124cc565b61257d57600080fd5b61258f836001600160a01b0316613573565b61259857600080fd5b6001600160a01b0383811660009081526015602052604090205416156125bd57600080fd5b6001600160a01b038381166000908152601560205260409081902080546001600160a01b03191692851692909217909155517fc5ec2ed49686197edd2ed642c7e6096893cc81e6658cde2527030316037715d09061261e9085908590615144565b60405180910390a150600192915050565b600654141590565b606060006009838154811061264857fe5b600091825260208083206002600690930201828101546001600160a01b039081168086526015845260408087205481516101608101835285546001600160401b038116825260ff600160401b820481161515838a0152600160481b82048116151583860152600160501b8204811615156060840152600160581b820416151560808301526001600160801b03600160601b9091041660a0820152600180870154861660c083015260e082019490945260038601546101008281019190915260048701546101208301526005870180548551601f60001998831615909402979097011699909904908101889004880285018801909352828452949850610d5e976127db978c9791966127ce96939093169492938b93610140860193909291908301828280156127b75780601f1061278c576101008083540402835291602001916127b7565b820191906000526020600020905b81548152906001019060200180831161279a57829003601f168201915b50505050508152505061357990919063ffffffff16565b919063ffffffff61364716565b61369f565b600090815260086020526040902060010154600160801b90046001600160401b031690565b6015602052600090815260409020546001600160a01b031681565b6002546001600160a01b031681565b6000610410565b6001546001600160a01b031681565b600080600061285f6009600b886000898960016000612bad565b90507f879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d8133886000898960016000604051611a2a989796959493929190615278565b600b5490565b600b81815481106124ec57fe5b600081156128ce57600a83815481106128c957fe5b506000525b600983815481106128db57fe5b6000918252602090912060069091020154600160501b900460ff169392505050565b600a818154811061239157fe5b60125481565b61292160178263ffffffff61384216565b6040516001600160a01b038216907fb079bc2cbde1f186e0b351d4a87c4597e3ed098f571548617449e73506428d8b90600090a250565b600654600090815260086020526040812080546001600160401b031615612983576000915050611476565b80546001808301546000926129b5926001600160401b03600160c01b909204821692600160801b90048216011661387b565b60018301549091506001600160401b03168111156129d857600092505050611476565b6000818152600483016020526040902060058101546301000000900460ff1615612a085760009350505050611476565b600581015460ff1615612a58578054426001600160401b03600160801b90920491909116600f011115612a415760009350505050611476565b612a4c838284613892565b60019350505050611476565b6001808401546001600160401b03600160401b9091048116909101165b6000818152600385016020526040902054600160d01b900460ff1615612a9d57600101612a75565b612aa78482613952565b15612ac357612ab68482613a0c565b6001945050505050611476565b600094505050505090565b60025460405160009182916060916001600160a01b031690612aef9061510a565b60405180910390208989898989604051602401612b10959493929190615397565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051612b4e91906150fe565b600060405180830381855af49150503d8060008114612b89576040519150601f19603f3d011682016040523d82523d6000602084013e612b8e565b606091505b509150915081612b9d57600080fd5b6001925050505b95945050505050565b600061040084511115612bbf57600080fd5b6003546001600160a01b03888116911614808015612bdb575083155b80612bff57506001600160a01b038881166000908152601560205260409020541615155b612c0857600080fd5b8954612c178b60018301614399565b915060008a8381548110612c2757fe5b600091825260209182902060069190910201600181018054336001600160a01b0319918216179091556002820180549091166001600160a01b038d16179055805467ffffffffffffffff1916426001600160401b03161768ff00000000000000001916600160401b881515021769ff0000000000000000001916600160481b85151502176fffffffffffffffffffffffffffffffff60601b1916600160601b6001600160801b038c1602178155600381018990558751909250612cf2916005840191908901906143ca565b5084612e1b57604080516101608101825282546001600160401b0381168252600160401b810460ff9081161515602080850191909152600160481b83048216151584860152600160501b8304821615156060850152600160581b830490911615156080840152600160601b9091046001600160801b031660a08301526001808501546001600160a01b0390811660c085015260028087015490911660e085015260038601546101008086019190915260048701546101208601526005870180548751948116159092026000190190911691909104601f8101849004840283018401909552848252612e1294889493879361014086019390929091830182828015611f2c5780601f10611f0157610100808354040283529160200191611f2c565b612e1b57600080fd5b895460009015612e30578a5460001901612e3f565b8a54612e3f8c60018301614448565b905060008b8281548110612e4f57fe5b60009182526020909120600290910201805490915060ff1680612e975750612e756133b2565b81546001808401546001600160401b03600160881b9093048316908316030116145b15612efa57805460ff1916600190811782558c548d91612eba9083908301614448565b81548110612ec457fe5b60009182526020909120600290910201805467ffffffffffffffff60881b1916600160881b6001600160401b0388160217815590505b612f0381610c08565b60018101805467ffffffffffffffff19166001600160401b03871617905586612f515780546001600160401b0361010080830482166001019091160268ffffffffffffffff00199091161781555b838015612f5c575086155b1561309357604080516101608101825284546001600160401b0381168252600160401b810460ff9081161515602080850191909152600160481b83048216151584860152600160501b8304821615156060850152600160581b830490911615156080840152600160601b9091046001600160801b031660a08301526001808701546001600160a01b0390811660c085015260028089015490911660e085015260038801546101008086019190915260048901546101208601526005890180548751948116159092026000190190911691909104601f810184900484028301840190955284825261308e94889461307f94339491938793610140860193928301828280156127b75780601f1061278c576101008083540402835291602001916127b7565b8391908863ffffffff613acc16565b6131bf565b6001600160a01b038b81166000908152601560209081526040918290205482516101608101845287546001600160401b0381168252600160401b810460ff908116151583860152600160481b82048116151583870152600160501b8204811615156060840152600160581b82041615156080830152600160601b90046001600160801b031660a0820152600180890154861660c08301526002808a0154871660e084015260038a01546101008085019190915260048b015461012085015260058b0180548851948116159092026000190190911691909104601f81018690048602830186019096528582526131bf968a9661307f9695909116948793610140860193909290918301828280156127b75780601f1061278c576101008083540402835291602001916127b7565b5050505098975050505050505050565b6131e060168263ffffffff613aee16565b6040516001600160a01b038216907ff012269e1b6bb33c7800e7e54167ddd74f0ae7244108030b6876821d3779822f90600090a250565b845460018601546001600160401b03600160881b90920482168501911681111561324057600080fd5b600085828154811061324e57fe5b6000918252602090912089546006909202019150426001600160401b03600160c01b90920491909116600a011161328457600080fd5b6005880154640100000000900460ff1661329d57600080fd5b8054600160581b900460ff16156132b357600080fd5b8054600160501b900460ff16156132c957600080fd5b835160208501206132d985613b23565b156132e357600080fd5b60005460ff16613306576132fd81878b6004015487613b60565b61330657600080fd5b50805460ff60581b1916600160581b1790559695505050505050565b61333360178263ffffffff613aee16565b6040516001600160a01b038216907ff84a004e1673d2f349a7c93c72b3794b8eba6d2f9338044d8c8cd260e51a57a190600090a250565b61337b60168263ffffffff61384216565b6040516001600160a01b038216907fa199526a01dbcba68aa3ab9d7d06c6692c83fb1a8bcf2184e6d94ad34f5aaf9590600090a250565b601490565b600062019a285a116133c857600080fd5b8260e001516001600160a01b031663a9f793088460200151848660c001518761010001518861014001516040518663ffffffff1660e01b815260040161341295949392919061516d565b602060405180830381600087803b15801561342c57600080fd5b505af1158015613440573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d5e91908101906148af565b60025460405160009182916060916001600160a01b03169061348590615120565b6040518091039020888888886040516024016134a49493929190615347565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516134e291906150fe565b600060405180830381855af49150503d806000811461351d576040519150601f19603f3d011682016040523d82523d6000602084013e613522565b606091505b50915091508161353157600080fd5b5060019695505050505050565b60006001600160a01b03821661355357600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b3b151590565b613581614474565b6020808401805115159183019190915260408085015115159083015260c0808501516001600160a01b031690830152511580156135bf575082604001515b156136095760c08301516001600160a01b031660e082015261014083015160208101516001600160801b0381166135f557600080fd5b6001600160801b031660a0830152506110c7565b6001600160a01b03821660e082015260a0808401516001600160801b0316908201526101008084015190820152610140808401519082015292915050565b61364f6144d2565b633b9aca006020820152620186a0604082015260e08401516001600160a01b0316606082015260a08401516001600160801b03166080820152613693848484613c2b565b60a08201529392505050565b6040805160098082526101408201909252606091829190816020015b60608152602001906001900390816136bb57505083519091506136e6906001600160401b0316613d01565b816000815181106136f357fe5b602002602001018190525061370b8360200151613d01565b8160018151811061371857fe5b602002602001018190525061373983604001516001600160401b0316613d01565b8160028151811061374657fe5b602002602001018190525061376783606001516001600160a01b0316613d14565b8160038151811061377457fe5b602002602001018190525061378c8360800151613d01565b8160048151811061379957fe5b60200260200101819052506137b18360a00151613d33565b816005815181106137be57fe5b60200260200101819052506137d68360c00151613d01565b816006815181106137e357fe5b60200260200101819052506137fb8360e00151613d01565b8160078151811061380857fe5b6020026020010181905250613821836101000151613d01565b8160088151811061382e57fe5b6020026020010181905250610d5e81613d89565b61384c828261353e565b1561385657600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60008183101561388b5781610d5e565b5090919050565b60058201805464010000000064ff000000001990911617905581546001600160c01b0316600160c01b426001600160401b039081169190910291909117835560018401805467ffffffffffffffff60801b1916600160801b8484160217808255845467ffffffffffffffff60401b199091169216600160401b029190911790556006546040517ffb96205e4b3633fd57aa805b26b51ecf528714a10241a4af015929dce86768d99161394591849061537c565b60405180910390a1505050565b8154600090600160801b90046001600160401b0316821115613976575060006110c7565b600082815260038401602052604090208054600160c81b900460ff166139a05760009150506110c7565b8054600160d01b900460ff16156139bb5760009150506110c7565b6006810154600160881b900460ff16806139e057506006810154600160901b900460ff165b156139ef5760009150506110c7565b60060154426001600160401b039091166014011115905092915050565b60008181526003830160205260409081902060068082018054600160801b60ff60801b19909116811767ffffffffffffffff60401b19908116600160401b426001600160401b03908116820292909217909455855460018a01805467ffffffffffffffff60801b19169186900483169094021790911681881684021790915591548354945193947f70801d4d63b3da6c19ba7349911f45bed5a99ccdfb51b8138c105872529bebd5946139459492938893838116939190910416906153d9565b613ae0613adb83836000613647565b613de6565b836004018190555050505050565b613af8828261353e565b613b0157600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b60006060613b416004613b3585613e02565b9063ffffffff613e2516565b9050610d5e81600081518110613b5357fe5b6020026020010151613eb2565b60006020825181613b6d57fe5b0615613b7857600080fd5b60006020835181613b8557fe5b04905060108110613b9557600080fd5b60008660205b836020028111613c1d5785810151925060028806613be3578183604051602001613bc69291906150bc565b604051602081830303815290604052805190602001209150613c0f565b8282604051602001613bf69291906150bc565b6040516020818303038152906040528051906020012091505b600288049750602001613b9b565b509094149695505050505050565b606083604001518015613c4057508360200151155b15613c4a57610d5e565b600082613c6a57604051613c5d90615115565b6040518091039020613c7f565b604051613c769061512b565b60405180910390205b9050808560200151613c92576000613c95565b60015b60ff1660001b858760c001516001600160a01b0316886101000151896101400151604051602001613cca959493929190615203565b60408051601f1981840301815290829052613ce892916020016150e2565b6040516020818303038152906040529150509392505050565b60606110c7613d0f83613ed6565b613d33565b60408051600560a21b8318601482015260348101909152606090610d5e815b606081516001148015613d655750607f60f81b82600081518110613d5357fe5b01602001516001600160f81b03191611155b15613d71575080610b62565b6110c7613d838351608060ff16613fcf565b83614098565b604080516000808252602082019092526060915b8351811015613dcd57613dc382858381518110613db657fe5b6020026020010151614098565b9150600101613d9d565b50610d5e613de0825160c060ff16613fcf565b82614098565b60006060613df38361369f565b80516020909101209392505050565b613e0a614539565b50805160408051808201909152602092830181529182015290565b606081604051908082528060200260200182016040528015613e6157816020015b613e4e614539565b815260200190600190039081613e465790505b509050613e6c614553565b613e758461417d565b905060005b83811015613eaa57613e8b826141a2565b838281518110613e9757fe5b6020908102919091010152600101613e7a565b505092915050565b6000806000613ec0846141d4565b90516020919091036101000a9004949350505050565b6040805160208082528183019092526060916000918391602082018180388339019050509050836020820152600091505b6020821015613f4057808281518110613f1c57fe5b01602001516001600160f81b03191615613f3557613f40565b600190910190613f07565b6060826020036040519080825280601f01601f191660200182016040528015613f70576020820181803883390190505b50905060005b8151811015613fc6578251600185019484918110613f9057fe5b602001015160f81c60f81b828281518110613fa757fe5b60200101906001600160f81b031916908160001a905350600101613f76565b50949350505050565b6060600160401b8310613ffd5760405162461bcd60e51b8152600401613ff49061523c565b60405180910390fd5b604080516001808252818301909252606091602082018180388339019050509050603784116140575782840160f81b8160008151811061403957fe5b60200101906001600160f81b031916908160001a90535090506110c7565b606061406285613ed6565b90508381510160370160f81b8260008151811061407b57fe5b60200101906001600160f81b031916908160001a905350612ba482825b60608082518451016040519080825280601f01601f1916602001820160405280156140ca576020820181803883390190505b5090506000805b8551811015614120578581815181106140e657fe5b602001015160f81c60f81b8383815181106140fd57fe5b60200101906001600160f81b031916908160001a905350600191820191016140d1565b5060005b84518110156141735784818151811061413957fe5b602001015160f81c60f81b83838151811061415057fe5b60200101906001600160f81b031916908160001a90535060019182019101614124565b5090949350505050565b614185614553565b600061419083614233565b83519383529092016020820152919050565b6141aa614539565b602082015160006141ba8261429d565b828452602080850182905292019390910192909252919050565b805180516000918291821a9060808210156141f65792506001915061422e9050565b60b8821015614214576001856020015103925080600101935061422b565b602085015182820160b51901945082900360b60192505b50505b915091565b8051805160009190821a90608082101561425257600092505050610b62565b60b882108061426d575060c0821015801561426d575060f882105b1561427d57600192505050610b62565b60c0821015614292575060b519019050610b62565b5060f5190192915050565b8051600090811a60808110156142b657600191506142c7565b60b88110156142c757607e19810191505b50919050565b6040805161014081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152610100810161431b614573565b81526020016143286145a8565b905290565b604080516101a081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081019190915290565b8154818355818111156143c5576006028160060283600052602060002091820191016143c591906145ec565b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061440b57805160ff1916838001178555614438565b82800160010185558215614438579182015b8281111561443857825182559160200191906001019061441d565b5061444492915061464e565b5090565b8154818355818111156143c5576002028160020283600052602060002091820191016143c59190614668565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915290565b60405180610120016040528060006001600160401b031681526020016000815260200160006001600160401b0316815260200160006001600160a01b0316815260200160008152602001606081526020016000815260200160008152602001600081525090565b604051806040016040528060008152602001600081525090565b6040518060400160405280614566614539565b8152602001600081525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b61147691905b808211156144445780546001600160e01b03191681556001810180546001600160a01b0319908116909155600282018054909116905560006003820181905560048201819055614645600583018261469e565b506006016145f2565b61147691905b808211156144445760008155600101614654565b61147691905b808211156144445780546001600160c81b03191681556001810180546001600160e01b031916905560020161466e565b50805460018160011615610100020316600290046000825580601f106146c45750610c08565b601f016020900490600052602060002090810190610c08919061464e565b80356110c781615663565b60008083601f8401126146ff57600080fd5b5081356001600160401b0381111561471657600080fd5b60208301915083602082028301111561472e57600080fd5b9250929050565b80356110c781615677565b80516110c781615677565b80356110c781615680565b60008083601f84011261476857600080fd5b5081356001600160401b0381111561477f57600080fd5b60208301915083600182028301111561472e57600080fd5b600082601f8301126147a857600080fd5b81356147bb6147b682615580565b61555a565b915080825260208301602083018583830111156147d757600080fd5b6147e2838284615621565b50505092915050565b6000602082840312156147fd57600080fd5b600061480984846146e2565b949350505050565b6000806040838503121561482457600080fd5b600061483085856146e2565b9250506020614841858286016146e2565b9150509250929050565b60008060006060848603121561486057600080fd5b600061486c86866146e2565b935050602061487d8682870161474b565b92505060408401356001600160401b0381111561489957600080fd5b6148a586828701614797565b9150509250925092565b6000602082840312156148c157600080fd5b60006148098484614740565b6000602082840312156148df57600080fd5b6000614809848461474b565b600080604083850312156148fe57600080fd5b600061490a858561474b565b925050602061484185828601614735565b6000806000806080858703121561493157600080fd5b600061493d878761474b565b945050602061494e8782880161474b565b935050604061495f8782880161474b565b92505060606149708782880161474b565b91505092959194509250565b60008060008060008060008060a0898b03121561499857600080fd5b60006149a48b8b61474b565b98505060208901356001600160401b038111156149c057600080fd5b6149cc8b828c01614756565b975097505060408901356001600160401b038111156149ea57600080fd5b6149f68b828c01614756565b95509550506060614a098b828c0161474b565b93505060808901356001600160401b03811115614a2557600080fd5b614a318b828c016146ed565b92509250509295985092959890939650565b60008060408385031215614a5657600080fd5b6000614a62858561474b565b92505060206148418582860161474b565b600080600080600060a08688031215614a8b57600080fd5b6000614a97888861474b565b9550506020614aa88882890161474b565b9450506040614ab98882890161474b565b9350506060614aca8882890161474b565b9250506080614adb8882890161474b565b9150509295509295909350565b600080600080600080600060a0888a031215614b0357600080fd5b6000614b0f8a8a61474b565b9750506020614b208a828b0161474b565b9650506040614b318a828b0161474b565b95505060608801356001600160401b03811115614b4d57600080fd5b614b598a828b01614756565b945094505060808801356001600160401b03811115614b7757600080fd5b614b838a828b01614756565b925092505092959891949750929550565b614b9d816155f5565b82525050565b614b9d816155b4565b614b9d816155bf565b614b9d81611476565b614b9d614bca82611476565b611476565b614b9d614bca826155c4565b6000614be6826155a7565b614bf081856155ab565b9350614c0081856020860161562d565b614c0981615659565b9093019392505050565b6000614c1e826155a7565b614c288185610b62565b9350614c3881856020860161562d565b9290920192915050565b614b9d81615600565b6000614c58603283610b62565b7f7375626d69744e52452875696e743235362c75696e743235362c627974657333815271322c627974657333322c627974657333322960701b602082015260320192915050565b6000614cac603c83610b62565b7f6170706c7952657175657374496e4368696c64436861696e28626f6f6c2c756981527f6e743235362c616464726573732c627974657333322c627974657329000000006020820152603c0192915050565b6000614d0b600e836155ab565b6d696e70757420746f6f206c6f6e6760901b815260200192915050565b6000614d35602a83610b62565b7f7375626d69744f52422875696e743235362c627974657333322c627974657333815269322c627974657333322960b01b6020820152602a0192915050565b6000614d81603b83610b62565b7f6170706c7952657175657374496e526f6f74436861696e28626f6f6c2c75696e81527f743235362c616464726573732c627974657333322c62797465732900000000006020820152603b0192915050565b80516102c0830190614de584826150b3565b506020820151614df860208501826150b3565b506040820151614e0b60408501826150b3565b506060820151614e1e6060850182614bac565b506080820151614e316080850182614bac565b5060a0820151614e4460a0850182614bac565b5060c0820151614e5760c0850182614bac565b5060e0820151614e6a60e0850182614bac565b50610100820151614e7f610100850182615031565b50610120820151614e946101c0850182614e9a565b50505050565b8051610100830190614eac8482614bb5565b506020820151614ebf6020850182614bb5565b506040820151614ed26040850182614bb5565b506060820151614ee560608501826150b3565b506080820151614ef860808501826150b3565b5060a0820151614f0b60a0850182614bac565b5060c0820151614f1e60c0850182614bac565b5060e0820151614e9460e0850182614bac565b80516101a0830190614f4384826150b3565b506020820151614f5660208501826150b3565b506040820151614f6960408501826150b3565b506060820151614f7c60608501826150b3565b506080820151614f8f60808501826150b3565b5060a0820151614fa260a0850182614bb5565b5060c0820151614fb560c0850182614bb5565b5060e0820151614fc860e0850182614bb5565b50610100820151614fdd610100850182614bac565b50610120820151614ff2610120850182614bac565b50610140820151615007610140850182614bac565b5061016082015161501c610160850182614bac565b50610180820151614e94610180850182614bac565b805160c083019061504284826150b3565b50602082015161505560208501826150b3565b50604082015161506860408501826150b3565b50606082015161507b60608501826150b3565b50608082015161508e60808501826150b3565b5060a0820151614e9460a08501826150b3565b614b9d816155d1565b614b9d81615616565b614b9d816155e9565b60006150c88285614bbe565b6020820191506150d88284614bbe565b5060200192915050565b60006150ee8285614bcf565b6004820191506148098284614c13565b6000610d5e8284614c13565b60006110c782614c4b565b60006110c782614c9f565b60006110c782614d28565b60006110c782614d74565b602081016110c78284614ba3565b604081016151528285614ba3565b610d5e6020830184614ba3565b602081016110c78284614bac565b60a0810161517b8288614bac565b6151886020830187614bb5565b6151956040830186614b94565b6151a26060830185614bb5565b8181036080830152610c468184614bdb565b60c081016151c28289614bac565b6151cf60208301886150b3565b6151dc60408301876150b3565b6151e960608301866150b3565b6151f660808301856150b3565b610c4660a0830184614ba3565b60a081016152118288614bb5565b61521e6020830187614bb5565b6151956040830186614bb5565b60208082528101610d5e8184614bdb565b602080825281016110c781614cfe565b6102c081016110c78284614dd3565b6101a081016110c78284614f31565b602081016110c78284614bb5565b6101008101615287828b614bb5565b615294602083018a614b94565b6152a16040830189614ba3565b6152ae6060830188614c42565b6152bb6080830187614bb5565b81810360a08301526152cd8186614bdb565b90506152dc60c0830185614bac565b6152e960e0830184614bac565b9998505050505050505050565b6101008101615305828b614bb5565b615312602083018a614b94565b61531f6040830189614ba3565b6152ae6060830188614bb5565b6040810161533a8285614bb5565b610d5e6020830184614bac565b608081016153558287614bb5565b6153626020830186614bb5565b61536f6040830185614bb5565b612ba46060830184614bb5565b6040810161538a8285614bb5565b610d5e6020830184614bb5565b60a081016153a58288614bb5565b6153b26020830187614bb5565b6153bf6040830186614bb5565b6153cc6060830185614bb5565b61235c6080830184614bb5565b608081016153e78287614bb5565b6153f46020830186614bb5565b61540160408301856150aa565b612ba460608301846150aa565b610160810161541d828e6150b3565b61542a602083018d614bac565b615437604083018c614bac565b615444606083018b614bac565b615451608083018a614bac565b61545e60a08301896150a1565b61546b60c0830188614ba3565b61547860e0830187614ba3565b615486610100830186614bb5565b615494610120830185614bb5565b8181036101408301526154a78184614bdb565b9d9c50505050505050505050505050565b61018081016154c7828f6150b3565b6154d4602083018e6150b3565b6154e1604083018d6150b3565b6154ee606083018c6150b3565b6154fb608083018b6150b3565b61550860a083018a6150b3565b61551560c08301896150b3565b61552260e08301886150b3565b6155306101008301876150b3565b61553e6101208301866150b3565b61554c6101408301856150b3565b6154a7610160830184614bac565b6040518181016001600160401b038111828210171561557857600080fd5b604052919050565b60006001600160401b0382111561559657600080fd5b506020601f91909101601f19160190565b5190565b90815260200190565b60006110c7826155dd565b151590565b6001600160e01b03191690565b6001600160801b031690565b6001600160a01b031690565b6001600160401b031690565b60006110c78261560b565b60006110c782611476565b60006110c7826155b4565b60006110c7826155e9565b82818337506000910152565b60005b83811015615648578181015183820152602001615630565b83811115614e945750506000910152565b601f01601f191690565b61566c816155b4565b8114610c0857600080fd5b61566c816155bf565b61566c8161147656fea365627a7a723158206eecf876ed164303d30cc733813ff412105ba8be23583e9e6eed2b5ae04b06016c6578706572696d656e74616cf564736f6c634300050c0040"
  2135  
  2136  // DeployRootChain deploys a new Ethereum contract, binding an instance of RootChain to it.
  2137  func DeployRootChain(auth *bind.TransactOpts, backend bind.ContractBackend, _epochHandler common.Address, _submitHandler common.Address, _etherToken common.Address, _development bool, _NRELength *big.Int, _statesRoot [32]byte, _transactionsRoot [32]byte, _receiptsRoot [32]byte) (common.Address, *types.Transaction, *RootChain, error) {
  2138  	parsed, err := abi.JSON(strings.NewReader(RootChainABI))
  2139  	if err != nil {
  2140  		return common.Address{}, nil, nil, err
  2141  	}
  2142  
  2143  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RootChainBin), backend, _epochHandler, _submitHandler, _etherToken, _development, _NRELength, _statesRoot, _transactionsRoot, _receiptsRoot)
  2144  	if err != nil {
  2145  		return common.Address{}, nil, nil, err
  2146  	}
  2147  	return address, tx, &RootChain{RootChainCaller: RootChainCaller{contract: contract}, RootChainTransactor: RootChainTransactor{contract: contract}, RootChainFilterer: RootChainFilterer{contract: contract}}, nil
  2148  }
  2149  
  2150  // RootChain is an auto generated Go binding around an Ethereum contract.
  2151  type RootChain struct {
  2152  	RootChainCaller     // Read-only binding to the contract
  2153  	RootChainTransactor // Write-only binding to the contract
  2154  	RootChainFilterer   // Log filterer for contract events
  2155  }
  2156  
  2157  // RootChainCaller is an auto generated read-only Go binding around an Ethereum contract.
  2158  type RootChainCaller struct {
  2159  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2160  }
  2161  
  2162  // RootChainTransactor is an auto generated write-only Go binding around an Ethereum contract.
  2163  type RootChainTransactor struct {
  2164  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2165  }
  2166  
  2167  // RootChainFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  2168  type RootChainFilterer struct {
  2169  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2170  }
  2171  
  2172  // RootChainSession is an auto generated Go binding around an Ethereum contract,
  2173  // with pre-set call and transact options.
  2174  type RootChainSession struct {
  2175  	Contract     *RootChain        // Generic contract binding to set the session for
  2176  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  2177  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2178  }
  2179  
  2180  // RootChainCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  2181  // with pre-set call options.
  2182  type RootChainCallerSession struct {
  2183  	Contract *RootChainCaller // Generic contract caller binding to set the session for
  2184  	CallOpts bind.CallOpts    // Call options to use throughout this session
  2185  }
  2186  
  2187  // RootChainTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  2188  // with pre-set transact options.
  2189  type RootChainTransactorSession struct {
  2190  	Contract     *RootChainTransactor // Generic contract transactor binding to set the session for
  2191  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
  2192  }
  2193  
  2194  // RootChainRaw is an auto generated low-level Go binding around an Ethereum contract.
  2195  type RootChainRaw struct {
  2196  	Contract *RootChain // Generic contract binding to access the raw methods on
  2197  }
  2198  
  2199  // RootChainCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  2200  type RootChainCallerRaw struct {
  2201  	Contract *RootChainCaller // Generic read-only contract binding to access the raw methods on
  2202  }
  2203  
  2204  // RootChainTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  2205  type RootChainTransactorRaw struct {
  2206  	Contract *RootChainTransactor // Generic write-only contract binding to access the raw methods on
  2207  }
  2208  
  2209  // NewRootChain creates a new instance of RootChain, bound to a specific deployed contract.
  2210  func NewRootChain(address common.Address, backend bind.ContractBackend) (*RootChain, error) {
  2211  	contract, err := bindRootChain(address, backend, backend, backend)
  2212  	if err != nil {
  2213  		return nil, err
  2214  	}
  2215  	return &RootChain{RootChainCaller: RootChainCaller{contract: contract}, RootChainTransactor: RootChainTransactor{contract: contract}, RootChainFilterer: RootChainFilterer{contract: contract}}, nil
  2216  }
  2217  
  2218  // NewRootChainCaller creates a new read-only instance of RootChain, bound to a specific deployed contract.
  2219  func NewRootChainCaller(address common.Address, caller bind.ContractCaller) (*RootChainCaller, error) {
  2220  	contract, err := bindRootChain(address, caller, nil, nil)
  2221  	if err != nil {
  2222  		return nil, err
  2223  	}
  2224  	return &RootChainCaller{contract: contract}, nil
  2225  }
  2226  
  2227  // NewRootChainTransactor creates a new write-only instance of RootChain, bound to a specific deployed contract.
  2228  func NewRootChainTransactor(address common.Address, transactor bind.ContractTransactor) (*RootChainTransactor, error) {
  2229  	contract, err := bindRootChain(address, nil, transactor, nil)
  2230  	if err != nil {
  2231  		return nil, err
  2232  	}
  2233  	return &RootChainTransactor{contract: contract}, nil
  2234  }
  2235  
  2236  // NewRootChainFilterer creates a new log filterer instance of RootChain, bound to a specific deployed contract.
  2237  func NewRootChainFilterer(address common.Address, filterer bind.ContractFilterer) (*RootChainFilterer, error) {
  2238  	contract, err := bindRootChain(address, nil, nil, filterer)
  2239  	if err != nil {
  2240  		return nil, err
  2241  	}
  2242  	return &RootChainFilterer{contract: contract}, nil
  2243  }
  2244  
  2245  // bindRootChain binds a generic wrapper to an already deployed contract.
  2246  func bindRootChain(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2247  	parsed, err := abi.JSON(strings.NewReader(RootChainABI))
  2248  	if err != nil {
  2249  		return nil, err
  2250  	}
  2251  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  2252  }
  2253  
  2254  // Call invokes the (constant) contract method with params as input values and
  2255  // sets the output to result. The result type might be a single field for simple
  2256  // returns, a slice of interfaces for anonymous returns and a struct for named
  2257  // returns.
  2258  func (_RootChain *RootChainRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2259  	return _RootChain.Contract.RootChainCaller.contract.Call(opts, result, method, params...)
  2260  }
  2261  
  2262  // Transfer initiates a plain transaction to move funds to the contract, calling
  2263  // its default method if one is available.
  2264  func (_RootChain *RootChainRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2265  	return _RootChain.Contract.RootChainTransactor.contract.Transfer(opts)
  2266  }
  2267  
  2268  // Transact invokes the (paid) contract method with params as input values.
  2269  func (_RootChain *RootChainRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2270  	return _RootChain.Contract.RootChainTransactor.contract.Transact(opts, method, params...)
  2271  }
  2272  
  2273  // Call invokes the (constant) contract method with params as input values and
  2274  // sets the output to result. The result type might be a single field for simple
  2275  // returns, a slice of interfaces for anonymous returns and a struct for named
  2276  // returns.
  2277  func (_RootChain *RootChainCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2278  	return _RootChain.Contract.contract.Call(opts, result, method, params...)
  2279  }
  2280  
  2281  // Transfer initiates a plain transaction to move funds to the contract, calling
  2282  // its default method if one is available.
  2283  func (_RootChain *RootChainTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2284  	return _RootChain.Contract.contract.Transfer(opts)
  2285  }
  2286  
  2287  // Transact invokes the (paid) contract method with params as input values.
  2288  func (_RootChain *RootChainTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2289  	return _RootChain.Contract.contract.Transact(opts, method, params...)
  2290  }
  2291  
  2292  // COSTERO is a free data retrieval call binding the contract method 0xd691acd8.
  2293  //
  2294  // Solidity: function COST_ERO() constant returns(uint256)
  2295  func (_RootChain *RootChainCaller) COSTERO(opts *bind.CallOpts) (*big.Int, error) {
  2296  	var (
  2297  		ret0 = new(*big.Int)
  2298  	)
  2299  	out := ret0
  2300  	err := _RootChain.contract.Call(opts, out, "COST_ERO")
  2301  	return *ret0, err
  2302  }
  2303  
  2304  // COSTERO is a free data retrieval call binding the contract method 0xd691acd8.
  2305  //
  2306  // Solidity: function COST_ERO() constant returns(uint256)
  2307  func (_RootChain *RootChainSession) COSTERO() (*big.Int, error) {
  2308  	return _RootChain.Contract.COSTERO(&_RootChain.CallOpts)
  2309  }
  2310  
  2311  // COSTERO is a free data retrieval call binding the contract method 0xd691acd8.
  2312  //
  2313  // Solidity: function COST_ERO() constant returns(uint256)
  2314  func (_RootChain *RootChainCallerSession) COSTERO() (*big.Int, error) {
  2315  	return _RootChain.Contract.COSTERO(&_RootChain.CallOpts)
  2316  }
  2317  
  2318  // COSTERU is a free data retrieval call binding the contract method 0x8b5172d0.
  2319  //
  2320  // Solidity: function COST_ERU() constant returns(uint256)
  2321  func (_RootChain *RootChainCaller) COSTERU(opts *bind.CallOpts) (*big.Int, error) {
  2322  	var (
  2323  		ret0 = new(*big.Int)
  2324  	)
  2325  	out := ret0
  2326  	err := _RootChain.contract.Call(opts, out, "COST_ERU")
  2327  	return *ret0, err
  2328  }
  2329  
  2330  // COSTERU is a free data retrieval call binding the contract method 0x8b5172d0.
  2331  //
  2332  // Solidity: function COST_ERU() constant returns(uint256)
  2333  func (_RootChain *RootChainSession) COSTERU() (*big.Int, error) {
  2334  	return _RootChain.Contract.COSTERU(&_RootChain.CallOpts)
  2335  }
  2336  
  2337  // COSTERU is a free data retrieval call binding the contract method 0x8b5172d0.
  2338  //
  2339  // Solidity: function COST_ERU() constant returns(uint256)
  2340  func (_RootChain *RootChainCallerSession) COSTERU() (*big.Int, error) {
  2341  	return _RootChain.Contract.COSTERU(&_RootChain.CallOpts)
  2342  }
  2343  
  2344  // COSTNRB is a free data retrieval call binding the contract method 0x94be3aa5.
  2345  //
  2346  // Solidity: function COST_NRB() constant returns(uint256)
  2347  func (_RootChain *RootChainCaller) COSTNRB(opts *bind.CallOpts) (*big.Int, error) {
  2348  	var (
  2349  		ret0 = new(*big.Int)
  2350  	)
  2351  	out := ret0
  2352  	err := _RootChain.contract.Call(opts, out, "COST_NRB")
  2353  	return *ret0, err
  2354  }
  2355  
  2356  // COSTNRB is a free data retrieval call binding the contract method 0x94be3aa5.
  2357  //
  2358  // Solidity: function COST_NRB() constant returns(uint256)
  2359  func (_RootChain *RootChainSession) COSTNRB() (*big.Int, error) {
  2360  	return _RootChain.Contract.COSTNRB(&_RootChain.CallOpts)
  2361  }
  2362  
  2363  // COSTNRB is a free data retrieval call binding the contract method 0x94be3aa5.
  2364  //
  2365  // Solidity: function COST_NRB() constant returns(uint256)
  2366  func (_RootChain *RootChainCallerSession) COSTNRB() (*big.Int, error) {
  2367  	return _RootChain.Contract.COSTNRB(&_RootChain.CallOpts)
  2368  }
  2369  
  2370  // COSTORB is a free data retrieval call binding the contract method 0xb2ae9ba8.
  2371  //
  2372  // Solidity: function COST_ORB() constant returns(uint256)
  2373  func (_RootChain *RootChainCaller) COSTORB(opts *bind.CallOpts) (*big.Int, error) {
  2374  	var (
  2375  		ret0 = new(*big.Int)
  2376  	)
  2377  	out := ret0
  2378  	err := _RootChain.contract.Call(opts, out, "COST_ORB")
  2379  	return *ret0, err
  2380  }
  2381  
  2382  // COSTORB is a free data retrieval call binding the contract method 0xb2ae9ba8.
  2383  //
  2384  // Solidity: function COST_ORB() constant returns(uint256)
  2385  func (_RootChain *RootChainSession) COSTORB() (*big.Int, error) {
  2386  	return _RootChain.Contract.COSTORB(&_RootChain.CallOpts)
  2387  }
  2388  
  2389  // COSTORB is a free data retrieval call binding the contract method 0xb2ae9ba8.
  2390  //
  2391  // Solidity: function COST_ORB() constant returns(uint256)
  2392  func (_RootChain *RootChainCallerSession) COSTORB() (*big.Int, error) {
  2393  	return _RootChain.Contract.COSTORB(&_RootChain.CallOpts)
  2394  }
  2395  
  2396  // COSTURB is a free data retrieval call binding the contract method 0x192adc5b.
  2397  //
  2398  // Solidity: function COST_URB() constant returns(uint256)
  2399  func (_RootChain *RootChainCaller) COSTURB(opts *bind.CallOpts) (*big.Int, error) {
  2400  	var (
  2401  		ret0 = new(*big.Int)
  2402  	)
  2403  	out := ret0
  2404  	err := _RootChain.contract.Call(opts, out, "COST_URB")
  2405  	return *ret0, err
  2406  }
  2407  
  2408  // COSTURB is a free data retrieval call binding the contract method 0x192adc5b.
  2409  //
  2410  // Solidity: function COST_URB() constant returns(uint256)
  2411  func (_RootChain *RootChainSession) COSTURB() (*big.Int, error) {
  2412  	return _RootChain.Contract.COSTURB(&_RootChain.CallOpts)
  2413  }
  2414  
  2415  // COSTURB is a free data retrieval call binding the contract method 0x192adc5b.
  2416  //
  2417  // Solidity: function COST_URB() constant returns(uint256)
  2418  func (_RootChain *RootChainCallerSession) COSTURB() (*big.Int, error) {
  2419  	return _RootChain.Contract.COSTURB(&_RootChain.CallOpts)
  2420  }
  2421  
  2422  // COSTURBPREPARE is a free data retrieval call binding the contract method 0x033cfbed.
  2423  //
  2424  // Solidity: function COST_URB_PREPARE() constant returns(uint256)
  2425  func (_RootChain *RootChainCaller) COSTURBPREPARE(opts *bind.CallOpts) (*big.Int, error) {
  2426  	var (
  2427  		ret0 = new(*big.Int)
  2428  	)
  2429  	out := ret0
  2430  	err := _RootChain.contract.Call(opts, out, "COST_URB_PREPARE")
  2431  	return *ret0, err
  2432  }
  2433  
  2434  // COSTURBPREPARE is a free data retrieval call binding the contract method 0x033cfbed.
  2435  //
  2436  // Solidity: function COST_URB_PREPARE() constant returns(uint256)
  2437  func (_RootChain *RootChainSession) COSTURBPREPARE() (*big.Int, error) {
  2438  	return _RootChain.Contract.COSTURBPREPARE(&_RootChain.CallOpts)
  2439  }
  2440  
  2441  // COSTURBPREPARE is a free data retrieval call binding the contract method 0x033cfbed.
  2442  //
  2443  // Solidity: function COST_URB_PREPARE() constant returns(uint256)
  2444  func (_RootChain *RootChainCallerSession) COSTURBPREPARE() (*big.Int, error) {
  2445  	return _RootChain.Contract.COSTURBPREPARE(&_RootChain.CallOpts)
  2446  }
  2447  
  2448  // CPCOMPUTATION is a free data retrieval call binding the contract method 0x08c4fff0.
  2449  //
  2450  // Solidity: function CP_COMPUTATION() constant returns(uint256)
  2451  func (_RootChain *RootChainCaller) CPCOMPUTATION(opts *bind.CallOpts) (*big.Int, error) {
  2452  	var (
  2453  		ret0 = new(*big.Int)
  2454  	)
  2455  	out := ret0
  2456  	err := _RootChain.contract.Call(opts, out, "CP_COMPUTATION")
  2457  	return *ret0, err
  2458  }
  2459  
  2460  // CPCOMPUTATION is a free data retrieval call binding the contract method 0x08c4fff0.
  2461  //
  2462  // Solidity: function CP_COMPUTATION() constant returns(uint256)
  2463  func (_RootChain *RootChainSession) CPCOMPUTATION() (*big.Int, error) {
  2464  	return _RootChain.Contract.CPCOMPUTATION(&_RootChain.CallOpts)
  2465  }
  2466  
  2467  // CPCOMPUTATION is a free data retrieval call binding the contract method 0x08c4fff0.
  2468  //
  2469  // Solidity: function CP_COMPUTATION() constant returns(uint256)
  2470  func (_RootChain *RootChainCallerSession) CPCOMPUTATION() (*big.Int, error) {
  2471  	return _RootChain.Contract.CPCOMPUTATION(&_RootChain.CallOpts)
  2472  }
  2473  
  2474  // CPEXIT is a free data retrieval call binding the contract method 0x8155717d.
  2475  //
  2476  // Solidity: function CP_EXIT() constant returns(uint256)
  2477  func (_RootChain *RootChainCaller) CPEXIT(opts *bind.CallOpts) (*big.Int, error) {
  2478  	var (
  2479  		ret0 = new(*big.Int)
  2480  	)
  2481  	out := ret0
  2482  	err := _RootChain.contract.Call(opts, out, "CP_EXIT")
  2483  	return *ret0, err
  2484  }
  2485  
  2486  // CPEXIT is a free data retrieval call binding the contract method 0x8155717d.
  2487  //
  2488  // Solidity: function CP_EXIT() constant returns(uint256)
  2489  func (_RootChain *RootChainSession) CPEXIT() (*big.Int, error) {
  2490  	return _RootChain.Contract.CPEXIT(&_RootChain.CallOpts)
  2491  }
  2492  
  2493  // CPEXIT is a free data retrieval call binding the contract method 0x8155717d.
  2494  //
  2495  // Solidity: function CP_EXIT() constant returns(uint256)
  2496  func (_RootChain *RootChainCallerSession) CPEXIT() (*big.Int, error) {
  2497  	return _RootChain.Contract.CPEXIT(&_RootChain.CallOpts)
  2498  }
  2499  
  2500  // CPWITHHOLDING is a free data retrieval call binding the contract method 0xb17fa6e9.
  2501  //
  2502  // Solidity: function CP_WITHHOLDING() constant returns(uint256)
  2503  func (_RootChain *RootChainCaller) CPWITHHOLDING(opts *bind.CallOpts) (*big.Int, error) {
  2504  	var (
  2505  		ret0 = new(*big.Int)
  2506  	)
  2507  	out := ret0
  2508  	err := _RootChain.contract.Call(opts, out, "CP_WITHHOLDING")
  2509  	return *ret0, err
  2510  }
  2511  
  2512  // CPWITHHOLDING is a free data retrieval call binding the contract method 0xb17fa6e9.
  2513  //
  2514  // Solidity: function CP_WITHHOLDING() constant returns(uint256)
  2515  func (_RootChain *RootChainSession) CPWITHHOLDING() (*big.Int, error) {
  2516  	return _RootChain.Contract.CPWITHHOLDING(&_RootChain.CallOpts)
  2517  }
  2518  
  2519  // CPWITHHOLDING is a free data retrieval call binding the contract method 0xb17fa6e9.
  2520  //
  2521  // Solidity: function CP_WITHHOLDING() constant returns(uint256)
  2522  func (_RootChain *RootChainCallerSession) CPWITHHOLDING() (*big.Int, error) {
  2523  	return _RootChain.Contract.CPWITHHOLDING(&_RootChain.CallOpts)
  2524  }
  2525  
  2526  // EROIdToFinalize is a free data retrieval call binding the contract method 0x2dc6bb7b.
  2527  //
  2528  // Solidity: function EROIdToFinalize() constant returns(uint256)
  2529  func (_RootChain *RootChainCaller) EROIdToFinalize(opts *bind.CallOpts) (*big.Int, error) {
  2530  	var (
  2531  		ret0 = new(*big.Int)
  2532  	)
  2533  	out := ret0
  2534  	err := _RootChain.contract.Call(opts, out, "EROIdToFinalize")
  2535  	return *ret0, err
  2536  }
  2537  
  2538  // EROIdToFinalize is a free data retrieval call binding the contract method 0x2dc6bb7b.
  2539  //
  2540  // Solidity: function EROIdToFinalize() constant returns(uint256)
  2541  func (_RootChain *RootChainSession) EROIdToFinalize() (*big.Int, error) {
  2542  	return _RootChain.Contract.EROIdToFinalize(&_RootChain.CallOpts)
  2543  }
  2544  
  2545  // EROIdToFinalize is a free data retrieval call binding the contract method 0x2dc6bb7b.
  2546  //
  2547  // Solidity: function EROIdToFinalize() constant returns(uint256)
  2548  func (_RootChain *RootChainCallerSession) EROIdToFinalize() (*big.Int, error) {
  2549  	return _RootChain.Contract.EROIdToFinalize(&_RootChain.CallOpts)
  2550  }
  2551  
  2552  // EROs is a free data retrieval call binding the contract method 0xb443f3cc.
  2553  //
  2554  // Solidity: function EROs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
  2555  func (_RootChain *RootChainCaller) EROs(opts *bind.CallOpts, arg0 *big.Int) (struct {
  2556  	Timestamp  uint64
  2557  	IsExit     bool
  2558  	IsTransfer bool
  2559  	Finalized  bool
  2560  	Challenged bool
  2561  	Value      *big.Int
  2562  	Requestor  common.Address
  2563  	To         common.Address
  2564  	TrieKey    [32]byte
  2565  	Hash       [32]byte
  2566  	TrieValue  []byte
  2567  }, error) {
  2568  	ret := new(struct {
  2569  		Timestamp  uint64
  2570  		IsExit     bool
  2571  		IsTransfer bool
  2572  		Finalized  bool
  2573  		Challenged bool
  2574  		Value      *big.Int
  2575  		Requestor  common.Address
  2576  		To         common.Address
  2577  		TrieKey    [32]byte
  2578  		Hash       [32]byte
  2579  		TrieValue  []byte
  2580  	})
  2581  	out := ret
  2582  	err := _RootChain.contract.Call(opts, out, "EROs", arg0)
  2583  	return *ret, err
  2584  }
  2585  
  2586  // EROs is a free data retrieval call binding the contract method 0xb443f3cc.
  2587  //
  2588  // Solidity: function EROs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
  2589  func (_RootChain *RootChainSession) EROs(arg0 *big.Int) (struct {
  2590  	Timestamp  uint64
  2591  	IsExit     bool
  2592  	IsTransfer bool
  2593  	Finalized  bool
  2594  	Challenged bool
  2595  	Value      *big.Int
  2596  	Requestor  common.Address
  2597  	To         common.Address
  2598  	TrieKey    [32]byte
  2599  	Hash       [32]byte
  2600  	TrieValue  []byte
  2601  }, error) {
  2602  	return _RootChain.Contract.EROs(&_RootChain.CallOpts, arg0)
  2603  }
  2604  
  2605  // EROs is a free data retrieval call binding the contract method 0xb443f3cc.
  2606  //
  2607  // Solidity: function EROs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
  2608  func (_RootChain *RootChainCallerSession) EROs(arg0 *big.Int) (struct {
  2609  	Timestamp  uint64
  2610  	IsExit     bool
  2611  	IsTransfer bool
  2612  	Finalized  bool
  2613  	Challenged bool
  2614  	Value      *big.Int
  2615  	Requestor  common.Address
  2616  	To         common.Address
  2617  	TrieKey    [32]byte
  2618  	Hash       [32]byte
  2619  	TrieValue  []byte
  2620  }, error) {
  2621  	return _RootChain.Contract.EROs(&_RootChain.CallOpts, arg0)
  2622  }
  2623  
  2624  // ERUIdToFinalize is a free data retrieval call binding the contract method 0xc54626cc.
  2625  //
  2626  // Solidity: function ERUIdToFinalize() constant returns(uint256)
  2627  func (_RootChain *RootChainCaller) ERUIdToFinalize(opts *bind.CallOpts) (*big.Int, error) {
  2628  	var (
  2629  		ret0 = new(*big.Int)
  2630  	)
  2631  	out := ret0
  2632  	err := _RootChain.contract.Call(opts, out, "ERUIdToFinalize")
  2633  	return *ret0, err
  2634  }
  2635  
  2636  // ERUIdToFinalize is a free data retrieval call binding the contract method 0xc54626cc.
  2637  //
  2638  // Solidity: function ERUIdToFinalize() constant returns(uint256)
  2639  func (_RootChain *RootChainSession) ERUIdToFinalize() (*big.Int, error) {
  2640  	return _RootChain.Contract.ERUIdToFinalize(&_RootChain.CallOpts)
  2641  }
  2642  
  2643  // ERUIdToFinalize is a free data retrieval call binding the contract method 0xc54626cc.
  2644  //
  2645  // Solidity: function ERUIdToFinalize() constant returns(uint256)
  2646  func (_RootChain *RootChainCallerSession) ERUIdToFinalize() (*big.Int, error) {
  2647  	return _RootChain.Contract.ERUIdToFinalize(&_RootChain.CallOpts)
  2648  }
  2649  
  2650  // ERUs is a free data retrieval call binding the contract method 0xf4f31de4.
  2651  //
  2652  // Solidity: function ERUs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
  2653  func (_RootChain *RootChainCaller) ERUs(opts *bind.CallOpts, arg0 *big.Int) (struct {
  2654  	Timestamp  uint64
  2655  	IsExit     bool
  2656  	IsTransfer bool
  2657  	Finalized  bool
  2658  	Challenged bool
  2659  	Value      *big.Int
  2660  	Requestor  common.Address
  2661  	To         common.Address
  2662  	TrieKey    [32]byte
  2663  	Hash       [32]byte
  2664  	TrieValue  []byte
  2665  }, error) {
  2666  	ret := new(struct {
  2667  		Timestamp  uint64
  2668  		IsExit     bool
  2669  		IsTransfer bool
  2670  		Finalized  bool
  2671  		Challenged bool
  2672  		Value      *big.Int
  2673  		Requestor  common.Address
  2674  		To         common.Address
  2675  		TrieKey    [32]byte
  2676  		Hash       [32]byte
  2677  		TrieValue  []byte
  2678  	})
  2679  	out := ret
  2680  	err := _RootChain.contract.Call(opts, out, "ERUs", arg0)
  2681  	return *ret, err
  2682  }
  2683  
  2684  // ERUs is a free data retrieval call binding the contract method 0xf4f31de4.
  2685  //
  2686  // Solidity: function ERUs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
  2687  func (_RootChain *RootChainSession) ERUs(arg0 *big.Int) (struct {
  2688  	Timestamp  uint64
  2689  	IsExit     bool
  2690  	IsTransfer bool
  2691  	Finalized  bool
  2692  	Challenged bool
  2693  	Value      *big.Int
  2694  	Requestor  common.Address
  2695  	To         common.Address
  2696  	TrieKey    [32]byte
  2697  	Hash       [32]byte
  2698  	TrieValue  []byte
  2699  }, error) {
  2700  	return _RootChain.Contract.ERUs(&_RootChain.CallOpts, arg0)
  2701  }
  2702  
  2703  // ERUs is a free data retrieval call binding the contract method 0xf4f31de4.
  2704  //
  2705  // Solidity: function ERUs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
  2706  func (_RootChain *RootChainCallerSession) ERUs(arg0 *big.Int) (struct {
  2707  	Timestamp  uint64
  2708  	IsExit     bool
  2709  	IsTransfer bool
  2710  	Finalized  bool
  2711  	Challenged bool
  2712  	Value      *big.Int
  2713  	Requestor  common.Address
  2714  	To         common.Address
  2715  	TrieKey    [32]byte
  2716  	Hash       [32]byte
  2717  	TrieValue  []byte
  2718  }, error) {
  2719  	return _RootChain.Contract.ERUs(&_RootChain.CallOpts, arg0)
  2720  }
  2721  
  2722  // MAXREQUESTS is a free data retrieval call binding the contract method 0x93521222.
  2723  //
  2724  // Solidity: function MAX_REQUESTS() constant returns(uint256 maxRequests)
  2725  func (_RootChain *RootChainCaller) MAXREQUESTS(opts *bind.CallOpts) (*big.Int, error) {
  2726  	var (
  2727  		ret0 = new(*big.Int)
  2728  	)
  2729  	out := ret0
  2730  	err := _RootChain.contract.Call(opts, out, "MAX_REQUESTS")
  2731  	return *ret0, err
  2732  }
  2733  
  2734  // MAXREQUESTS is a free data retrieval call binding the contract method 0x93521222.
  2735  //
  2736  // Solidity: function MAX_REQUESTS() constant returns(uint256 maxRequests)
  2737  func (_RootChain *RootChainSession) MAXREQUESTS() (*big.Int, error) {
  2738  	return _RootChain.Contract.MAXREQUESTS(&_RootChain.CallOpts)
  2739  }
  2740  
  2741  // MAXREQUESTS is a free data retrieval call binding the contract method 0x93521222.
  2742  //
  2743  // Solidity: function MAX_REQUESTS() constant returns(uint256 maxRequests)
  2744  func (_RootChain *RootChainCallerSession) MAXREQUESTS() (*big.Int, error) {
  2745  	return _RootChain.Contract.MAXREQUESTS(&_RootChain.CallOpts)
  2746  }
  2747  
  2748  // NRELength is a free data retrieval call binding the contract method 0xab96da2d.
  2749  //
  2750  // Solidity: function NRELength() constant returns(uint256)
  2751  func (_RootChain *RootChainCaller) NRELength(opts *bind.CallOpts) (*big.Int, error) {
  2752  	var (
  2753  		ret0 = new(*big.Int)
  2754  	)
  2755  	out := ret0
  2756  	err := _RootChain.contract.Call(opts, out, "NRELength")
  2757  	return *ret0, err
  2758  }
  2759  
  2760  // NRELength is a free data retrieval call binding the contract method 0xab96da2d.
  2761  //
  2762  // Solidity: function NRELength() constant returns(uint256)
  2763  func (_RootChain *RootChainSession) NRELength() (*big.Int, error) {
  2764  	return _RootChain.Contract.NRELength(&_RootChain.CallOpts)
  2765  }
  2766  
  2767  // NRELength is a free data retrieval call binding the contract method 0xab96da2d.
  2768  //
  2769  // Solidity: function NRELength() constant returns(uint256)
  2770  func (_RootChain *RootChainCallerSession) NRELength() (*big.Int, error) {
  2771  	return _RootChain.Contract.NRELength(&_RootChain.CallOpts)
  2772  }
  2773  
  2774  // NULLADDRESS is a free data retrieval call binding the contract method 0xde0ce17d.
  2775  //
  2776  // Solidity: function NULL_ADDRESS() constant returns(address)
  2777  func (_RootChain *RootChainCaller) NULLADDRESS(opts *bind.CallOpts) (common.Address, error) {
  2778  	var (
  2779  		ret0 = new(common.Address)
  2780  	)
  2781  	out := ret0
  2782  	err := _RootChain.contract.Call(opts, out, "NULL_ADDRESS")
  2783  	return *ret0, err
  2784  }
  2785  
  2786  // NULLADDRESS is a free data retrieval call binding the contract method 0xde0ce17d.
  2787  //
  2788  // Solidity: function NULL_ADDRESS() constant returns(address)
  2789  func (_RootChain *RootChainSession) NULLADDRESS() (common.Address, error) {
  2790  	return _RootChain.Contract.NULLADDRESS(&_RootChain.CallOpts)
  2791  }
  2792  
  2793  // NULLADDRESS is a free data retrieval call binding the contract method 0xde0ce17d.
  2794  //
  2795  // Solidity: function NULL_ADDRESS() constant returns(address)
  2796  func (_RootChain *RootChainCallerSession) NULLADDRESS() (common.Address, error) {
  2797  	return _RootChain.Contract.NULLADDRESS(&_RootChain.CallOpts)
  2798  }
  2799  
  2800  // ORBs is a free data retrieval call binding the contract method 0xea7f22a8.
  2801  //
  2802  // Solidity: function ORBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  2803  func (_RootChain *RootChainCaller) ORBs(opts *bind.CallOpts, arg0 *big.Int) (struct {
  2804  	Submitted    bool
  2805  	NumEnter     uint64
  2806  	EpochNumber  uint64
  2807  	RequestStart uint64
  2808  	RequestEnd   uint64
  2809  	Trie         common.Address
  2810  }, error) {
  2811  	ret := new(struct {
  2812  		Submitted    bool
  2813  		NumEnter     uint64
  2814  		EpochNumber  uint64
  2815  		RequestStart uint64
  2816  		RequestEnd   uint64
  2817  		Trie         common.Address
  2818  	})
  2819  	out := ret
  2820  	err := _RootChain.contract.Call(opts, out, "ORBs", arg0)
  2821  	return *ret, err
  2822  }
  2823  
  2824  // ORBs is a free data retrieval call binding the contract method 0xea7f22a8.
  2825  //
  2826  // Solidity: function ORBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  2827  func (_RootChain *RootChainSession) ORBs(arg0 *big.Int) (struct {
  2828  	Submitted    bool
  2829  	NumEnter     uint64
  2830  	EpochNumber  uint64
  2831  	RequestStart uint64
  2832  	RequestEnd   uint64
  2833  	Trie         common.Address
  2834  }, error) {
  2835  	return _RootChain.Contract.ORBs(&_RootChain.CallOpts, arg0)
  2836  }
  2837  
  2838  // ORBs is a free data retrieval call binding the contract method 0xea7f22a8.
  2839  //
  2840  // Solidity: function ORBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  2841  func (_RootChain *RootChainCallerSession) ORBs(arg0 *big.Int) (struct {
  2842  	Submitted    bool
  2843  	NumEnter     uint64
  2844  	EpochNumber  uint64
  2845  	RequestStart uint64
  2846  	RequestEnd   uint64
  2847  	Trie         common.Address
  2848  }, error) {
  2849  	return _RootChain.Contract.ORBs(&_RootChain.CallOpts, arg0)
  2850  }
  2851  
  2852  // PREPARETIMEOUT is a free data retrieval call binding the contract method 0xc2bc88fa.
  2853  //
  2854  // Solidity: function PREPARE_TIMEOUT() constant returns(uint256)
  2855  func (_RootChain *RootChainCaller) PREPARETIMEOUT(opts *bind.CallOpts) (*big.Int, error) {
  2856  	var (
  2857  		ret0 = new(*big.Int)
  2858  	)
  2859  	out := ret0
  2860  	err := _RootChain.contract.Call(opts, out, "PREPARE_TIMEOUT")
  2861  	return *ret0, err
  2862  }
  2863  
  2864  // PREPARETIMEOUT is a free data retrieval call binding the contract method 0xc2bc88fa.
  2865  //
  2866  // Solidity: function PREPARE_TIMEOUT() constant returns(uint256)
  2867  func (_RootChain *RootChainSession) PREPARETIMEOUT() (*big.Int, error) {
  2868  	return _RootChain.Contract.PREPARETIMEOUT(&_RootChain.CallOpts)
  2869  }
  2870  
  2871  // PREPARETIMEOUT is a free data retrieval call binding the contract method 0xc2bc88fa.
  2872  //
  2873  // Solidity: function PREPARE_TIMEOUT() constant returns(uint256)
  2874  func (_RootChain *RootChainCallerSession) PREPARETIMEOUT() (*big.Int, error) {
  2875  	return _RootChain.Contract.PREPARETIMEOUT(&_RootChain.CallOpts)
  2876  }
  2877  
  2878  // REQUESTGAS is a free data retrieval call binding the contract method 0x8eb288ca.
  2879  //
  2880  // Solidity: function REQUEST_GAS() constant returns(uint256)
  2881  func (_RootChain *RootChainCaller) REQUESTGAS(opts *bind.CallOpts) (*big.Int, error) {
  2882  	var (
  2883  		ret0 = new(*big.Int)
  2884  	)
  2885  	out := ret0
  2886  	err := _RootChain.contract.Call(opts, out, "REQUEST_GAS")
  2887  	return *ret0, err
  2888  }
  2889  
  2890  // REQUESTGAS is a free data retrieval call binding the contract method 0x8eb288ca.
  2891  //
  2892  // Solidity: function REQUEST_GAS() constant returns(uint256)
  2893  func (_RootChain *RootChainSession) REQUESTGAS() (*big.Int, error) {
  2894  	return _RootChain.Contract.REQUESTGAS(&_RootChain.CallOpts)
  2895  }
  2896  
  2897  // REQUESTGAS is a free data retrieval call binding the contract method 0x8eb288ca.
  2898  //
  2899  // Solidity: function REQUEST_GAS() constant returns(uint256)
  2900  func (_RootChain *RootChainCallerSession) REQUESTGAS() (*big.Int, error) {
  2901  	return _RootChain.Contract.REQUESTGAS(&_RootChain.CallOpts)
  2902  }
  2903  
  2904  // URBs is a free data retrieval call binding the contract method 0xc0e86064.
  2905  //
  2906  // Solidity: function URBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  2907  func (_RootChain *RootChainCaller) URBs(opts *bind.CallOpts, arg0 *big.Int) (struct {
  2908  	Submitted    bool
  2909  	NumEnter     uint64
  2910  	EpochNumber  uint64
  2911  	RequestStart uint64
  2912  	RequestEnd   uint64
  2913  	Trie         common.Address
  2914  }, error) {
  2915  	ret := new(struct {
  2916  		Submitted    bool
  2917  		NumEnter     uint64
  2918  		EpochNumber  uint64
  2919  		RequestStart uint64
  2920  		RequestEnd   uint64
  2921  		Trie         common.Address
  2922  	})
  2923  	out := ret
  2924  	err := _RootChain.contract.Call(opts, out, "URBs", arg0)
  2925  	return *ret, err
  2926  }
  2927  
  2928  // URBs is a free data retrieval call binding the contract method 0xc0e86064.
  2929  //
  2930  // Solidity: function URBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  2931  func (_RootChain *RootChainSession) URBs(arg0 *big.Int) (struct {
  2932  	Submitted    bool
  2933  	NumEnter     uint64
  2934  	EpochNumber  uint64
  2935  	RequestStart uint64
  2936  	RequestEnd   uint64
  2937  	Trie         common.Address
  2938  }, error) {
  2939  	return _RootChain.Contract.URBs(&_RootChain.CallOpts, arg0)
  2940  }
  2941  
  2942  // URBs is a free data retrieval call binding the contract method 0xc0e86064.
  2943  //
  2944  // Solidity: function URBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  2945  func (_RootChain *RootChainCallerSession) URBs(arg0 *big.Int) (struct {
  2946  	Submitted    bool
  2947  	NumEnter     uint64
  2948  	EpochNumber  uint64
  2949  	RequestStart uint64
  2950  	RequestEnd   uint64
  2951  	Trie         common.Address
  2952  }, error) {
  2953  	return _RootChain.Contract.URBs(&_RootChain.CallOpts, arg0)
  2954  }
  2955  
  2956  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
  2957  //
  2958  // Solidity: function currentFork() constant returns(uint256)
  2959  func (_RootChain *RootChainCaller) CurrentFork(opts *bind.CallOpts) (*big.Int, error) {
  2960  	var (
  2961  		ret0 = new(*big.Int)
  2962  	)
  2963  	out := ret0
  2964  	err := _RootChain.contract.Call(opts, out, "currentFork")
  2965  	return *ret0, err
  2966  }
  2967  
  2968  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
  2969  //
  2970  // Solidity: function currentFork() constant returns(uint256)
  2971  func (_RootChain *RootChainSession) CurrentFork() (*big.Int, error) {
  2972  	return _RootChain.Contract.CurrentFork(&_RootChain.CallOpts)
  2973  }
  2974  
  2975  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
  2976  //
  2977  // Solidity: function currentFork() constant returns(uint256)
  2978  func (_RootChain *RootChainCallerSession) CurrentFork() (*big.Int, error) {
  2979  	return _RootChain.Contract.CurrentFork(&_RootChain.CallOpts)
  2980  }
  2981  
  2982  // Development is a free data retrieval call binding the contract method 0x7b929c27.
  2983  //
  2984  // Solidity: function development() constant returns(bool)
  2985  func (_RootChain *RootChainCaller) Development(opts *bind.CallOpts) (bool, error) {
  2986  	var (
  2987  		ret0 = new(bool)
  2988  	)
  2989  	out := ret0
  2990  	err := _RootChain.contract.Call(opts, out, "development")
  2991  	return *ret0, err
  2992  }
  2993  
  2994  // Development is a free data retrieval call binding the contract method 0x7b929c27.
  2995  //
  2996  // Solidity: function development() constant returns(bool)
  2997  func (_RootChain *RootChainSession) Development() (bool, error) {
  2998  	return _RootChain.Contract.Development(&_RootChain.CallOpts)
  2999  }
  3000  
  3001  // Development is a free data retrieval call binding the contract method 0x7b929c27.
  3002  //
  3003  // Solidity: function development() constant returns(bool)
  3004  func (_RootChain *RootChainCallerSession) Development() (bool, error) {
  3005  	return _RootChain.Contract.Development(&_RootChain.CallOpts)
  3006  }
  3007  
  3008  // EpochHandler is a free data retrieval call binding the contract method 0xe7b88b80.
  3009  //
  3010  // Solidity: function epochHandler() constant returns(address)
  3011  func (_RootChain *RootChainCaller) EpochHandler(opts *bind.CallOpts) (common.Address, error) {
  3012  	var (
  3013  		ret0 = new(common.Address)
  3014  	)
  3015  	out := ret0
  3016  	err := _RootChain.contract.Call(opts, out, "epochHandler")
  3017  	return *ret0, err
  3018  }
  3019  
  3020  // EpochHandler is a free data retrieval call binding the contract method 0xe7b88b80.
  3021  //
  3022  // Solidity: function epochHandler() constant returns(address)
  3023  func (_RootChain *RootChainSession) EpochHandler() (common.Address, error) {
  3024  	return _RootChain.Contract.EpochHandler(&_RootChain.CallOpts)
  3025  }
  3026  
  3027  // EpochHandler is a free data retrieval call binding the contract method 0xe7b88b80.
  3028  //
  3029  // Solidity: function epochHandler() constant returns(address)
  3030  func (_RootChain *RootChainCallerSession) EpochHandler() (common.Address, error) {
  3031  	return _RootChain.Contract.EpochHandler(&_RootChain.CallOpts)
  3032  }
  3033  
  3034  // EtherToken is a free data retrieval call binding the contract method 0xb8066bcb.
  3035  //
  3036  // Solidity: function etherToken() constant returns(address)
  3037  func (_RootChain *RootChainCaller) EtherToken(opts *bind.CallOpts) (common.Address, error) {
  3038  	var (
  3039  		ret0 = new(common.Address)
  3040  	)
  3041  	out := ret0
  3042  	err := _RootChain.contract.Call(opts, out, "etherToken")
  3043  	return *ret0, err
  3044  }
  3045  
  3046  // EtherToken is a free data retrieval call binding the contract method 0xb8066bcb.
  3047  //
  3048  // Solidity: function etherToken() constant returns(address)
  3049  func (_RootChain *RootChainSession) EtherToken() (common.Address, error) {
  3050  	return _RootChain.Contract.EtherToken(&_RootChain.CallOpts)
  3051  }
  3052  
  3053  // EtherToken is a free data retrieval call binding the contract method 0xb8066bcb.
  3054  //
  3055  // Solidity: function etherToken() constant returns(address)
  3056  func (_RootChain *RootChainCallerSession) EtherToken() (common.Address, error) {
  3057  	return _RootChain.Contract.EtherToken(&_RootChain.CallOpts)
  3058  }
  3059  
  3060  // FirstFilledORENumber is a free data retrieval call binding the contract method 0x72ecb9a8.
  3061  //
  3062  // Solidity: function firstFilledORENumber(uint256 ) constant returns(uint256)
  3063  func (_RootChain *RootChainCaller) FirstFilledORENumber(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
  3064  	var (
  3065  		ret0 = new(*big.Int)
  3066  	)
  3067  	out := ret0
  3068  	err := _RootChain.contract.Call(opts, out, "firstFilledORENumber", arg0)
  3069  	return *ret0, err
  3070  }
  3071  
  3072  // FirstFilledORENumber is a free data retrieval call binding the contract method 0x72ecb9a8.
  3073  //
  3074  // Solidity: function firstFilledORENumber(uint256 ) constant returns(uint256)
  3075  func (_RootChain *RootChainSession) FirstFilledORENumber(arg0 *big.Int) (*big.Int, error) {
  3076  	return _RootChain.Contract.FirstFilledORENumber(&_RootChain.CallOpts, arg0)
  3077  }
  3078  
  3079  // FirstFilledORENumber is a free data retrieval call binding the contract method 0x72ecb9a8.
  3080  //
  3081  // Solidity: function firstFilledORENumber(uint256 ) constant returns(uint256)
  3082  func (_RootChain *RootChainCallerSession) FirstFilledORENumber(arg0 *big.Int) (*big.Int, error) {
  3083  	return _RootChain.Contract.FirstFilledORENumber(&_RootChain.CallOpts, arg0)
  3084  }
  3085  
  3086  // FirstNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xca6f6380.
  3087  //
  3088  // Solidity: function firstNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  3089  func (_RootChain *RootChainCaller) FirstNonEmptyRequestEpoch(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
  3090  	var (
  3091  		ret0 = new(*big.Int)
  3092  	)
  3093  	out := ret0
  3094  	err := _RootChain.contract.Call(opts, out, "firstNonEmptyRequestEpoch", arg0)
  3095  	return *ret0, err
  3096  }
  3097  
  3098  // FirstNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xca6f6380.
  3099  //
  3100  // Solidity: function firstNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  3101  func (_RootChain *RootChainSession) FirstNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
  3102  	return _RootChain.Contract.FirstNonEmptyRequestEpoch(&_RootChain.CallOpts, arg0)
  3103  }
  3104  
  3105  // FirstNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xca6f6380.
  3106  //
  3107  // Solidity: function firstNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  3108  func (_RootChain *RootChainCallerSession) FirstNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
  3109  	return _RootChain.Contract.FirstNonEmptyRequestEpoch(&_RootChain.CallOpts, arg0)
  3110  }
  3111  
  3112  // Forked is a free data retrieval call binding the contract method 0xce8a2bc2.
  3113  //
  3114  // Solidity: function forked(uint256 _forkNumber) constant returns(bool result)
  3115  func (_RootChain *RootChainCaller) Forked(opts *bind.CallOpts, _forkNumber *big.Int) (bool, error) {
  3116  	var (
  3117  		ret0 = new(bool)
  3118  	)
  3119  	out := ret0
  3120  	err := _RootChain.contract.Call(opts, out, "forked", _forkNumber)
  3121  	return *ret0, err
  3122  }
  3123  
  3124  // Forked is a free data retrieval call binding the contract method 0xce8a2bc2.
  3125  //
  3126  // Solidity: function forked(uint256 _forkNumber) constant returns(bool result)
  3127  func (_RootChain *RootChainSession) Forked(_forkNumber *big.Int) (bool, error) {
  3128  	return _RootChain.Contract.Forked(&_RootChain.CallOpts, _forkNumber)
  3129  }
  3130  
  3131  // Forked is a free data retrieval call binding the contract method 0xce8a2bc2.
  3132  //
  3133  // Solidity: function forked(uint256 _forkNumber) constant returns(bool result)
  3134  func (_RootChain *RootChainCallerSession) Forked(_forkNumber *big.Int) (bool, error) {
  3135  	return _RootChain.Contract.Forked(&_RootChain.CallOpts, _forkNumber)
  3136  }
  3137  
  3138  // Forks is a free data retrieval call binding the contract method 0x4ba3a126.
  3139  //
  3140  // Solidity: function forks(uint256 ) constant returns(uint64 forkedBlock, uint64 firstEpoch, uint64 lastEpoch, uint64 firstBlock, uint64 lastBlock, uint64 lastFinalizedEpoch, uint64 lastFinalizedBlock, uint64 timestamp, uint64 firstEnterEpoch, uint64 lastEnterEpoch, uint64 nextBlockToRebase, bool rebased)
  3141  func (_RootChain *RootChainCaller) Forks(opts *bind.CallOpts, arg0 *big.Int) (struct {
  3142  	ForkedBlock        uint64
  3143  	FirstEpoch         uint64
  3144  	LastEpoch          uint64
  3145  	FirstBlock         uint64
  3146  	LastBlock          uint64
  3147  	LastFinalizedEpoch uint64
  3148  	LastFinalizedBlock uint64
  3149  	Timestamp          uint64
  3150  	FirstEnterEpoch    uint64
  3151  	LastEnterEpoch     uint64
  3152  	NextBlockToRebase  uint64
  3153  	Rebased            bool
  3154  }, error) {
  3155  	ret := new(struct {
  3156  		ForkedBlock        uint64
  3157  		FirstEpoch         uint64
  3158  		LastEpoch          uint64
  3159  		FirstBlock         uint64
  3160  		LastBlock          uint64
  3161  		LastFinalizedEpoch uint64
  3162  		LastFinalizedBlock uint64
  3163  		Timestamp          uint64
  3164  		FirstEnterEpoch    uint64
  3165  		LastEnterEpoch     uint64
  3166  		NextBlockToRebase  uint64
  3167  		Rebased            bool
  3168  	})
  3169  	out := ret
  3170  	err := _RootChain.contract.Call(opts, out, "forks", arg0)
  3171  	return *ret, err
  3172  }
  3173  
  3174  // Forks is a free data retrieval call binding the contract method 0x4ba3a126.
  3175  //
  3176  // Solidity: function forks(uint256 ) constant returns(uint64 forkedBlock, uint64 firstEpoch, uint64 lastEpoch, uint64 firstBlock, uint64 lastBlock, uint64 lastFinalizedEpoch, uint64 lastFinalizedBlock, uint64 timestamp, uint64 firstEnterEpoch, uint64 lastEnterEpoch, uint64 nextBlockToRebase, bool rebased)
  3177  func (_RootChain *RootChainSession) Forks(arg0 *big.Int) (struct {
  3178  	ForkedBlock        uint64
  3179  	FirstEpoch         uint64
  3180  	LastEpoch          uint64
  3181  	FirstBlock         uint64
  3182  	LastBlock          uint64
  3183  	LastFinalizedEpoch uint64
  3184  	LastFinalizedBlock uint64
  3185  	Timestamp          uint64
  3186  	FirstEnterEpoch    uint64
  3187  	LastEnterEpoch     uint64
  3188  	NextBlockToRebase  uint64
  3189  	Rebased            bool
  3190  }, error) {
  3191  	return _RootChain.Contract.Forks(&_RootChain.CallOpts, arg0)
  3192  }
  3193  
  3194  // Forks is a free data retrieval call binding the contract method 0x4ba3a126.
  3195  //
  3196  // Solidity: function forks(uint256 ) constant returns(uint64 forkedBlock, uint64 firstEpoch, uint64 lastEpoch, uint64 firstBlock, uint64 lastBlock, uint64 lastFinalizedEpoch, uint64 lastFinalizedBlock, uint64 timestamp, uint64 firstEnterEpoch, uint64 lastEnterEpoch, uint64 nextBlockToRebase, bool rebased)
  3197  func (_RootChain *RootChainCallerSession) Forks(arg0 *big.Int) (struct {
  3198  	ForkedBlock        uint64
  3199  	FirstEpoch         uint64
  3200  	LastEpoch          uint64
  3201  	FirstBlock         uint64
  3202  	LastBlock          uint64
  3203  	LastFinalizedEpoch uint64
  3204  	LastFinalizedBlock uint64
  3205  	Timestamp          uint64
  3206  	FirstEnterEpoch    uint64
  3207  	LastEnterEpoch     uint64
  3208  	NextBlockToRebase  uint64
  3209  	Rebased            bool
  3210  }, error) {
  3211  	return _RootChain.Contract.Forks(&_RootChain.CallOpts, arg0)
  3212  }
  3213  
  3214  // GetBlock is a free data retrieval call binding the contract method 0x4a44bdb8.
  3215  //
  3216  // Solidity: function getBlock(uint256 forkNumber, uint256 blockNumber) constant returns(DataPlasmaBlock)
  3217  func (_RootChain *RootChainCaller) GetBlock(opts *bind.CallOpts, forkNumber *big.Int, blockNumber *big.Int) (DataPlasmaBlock, error) {
  3218  	var (
  3219  		ret0 = new(DataPlasmaBlock)
  3220  	)
  3221  	out := ret0
  3222  	err := _RootChain.contract.Call(opts, out, "getBlock", forkNumber, blockNumber)
  3223  	return *ret0, err
  3224  }
  3225  
  3226  // GetBlock is a free data retrieval call binding the contract method 0x4a44bdb8.
  3227  //
  3228  // Solidity: function getBlock(uint256 forkNumber, uint256 blockNumber) constant returns(DataPlasmaBlock)
  3229  func (_RootChain *RootChainSession) GetBlock(forkNumber *big.Int, blockNumber *big.Int) (DataPlasmaBlock, error) {
  3230  	return _RootChain.Contract.GetBlock(&_RootChain.CallOpts, forkNumber, blockNumber)
  3231  }
  3232  
  3233  // GetBlock is a free data retrieval call binding the contract method 0x4a44bdb8.
  3234  //
  3235  // Solidity: function getBlock(uint256 forkNumber, uint256 blockNumber) constant returns(DataPlasmaBlock)
  3236  func (_RootChain *RootChainCallerSession) GetBlock(forkNumber *big.Int, blockNumber *big.Int) (DataPlasmaBlock, error) {
  3237  	return _RootChain.Contract.GetBlock(&_RootChain.CallOpts, forkNumber, blockNumber)
  3238  }
  3239  
  3240  // GetBlockFinalizedAt is a free data retrieval call binding the contract method 0x5b884682.
  3241  //
  3242  // Solidity: function getBlockFinalizedAt(uint256 forkNumber, uint256 blockNumber) constant returns(uint256)
  3243  func (_RootChain *RootChainCaller) GetBlockFinalizedAt(opts *bind.CallOpts, forkNumber *big.Int, blockNumber *big.Int) (*big.Int, error) {
  3244  	var (
  3245  		ret0 = new(*big.Int)
  3246  	)
  3247  	out := ret0
  3248  	err := _RootChain.contract.Call(opts, out, "getBlockFinalizedAt", forkNumber, blockNumber)
  3249  	return *ret0, err
  3250  }
  3251  
  3252  // GetBlockFinalizedAt is a free data retrieval call binding the contract method 0x5b884682.
  3253  //
  3254  // Solidity: function getBlockFinalizedAt(uint256 forkNumber, uint256 blockNumber) constant returns(uint256)
  3255  func (_RootChain *RootChainSession) GetBlockFinalizedAt(forkNumber *big.Int, blockNumber *big.Int) (*big.Int, error) {
  3256  	return _RootChain.Contract.GetBlockFinalizedAt(&_RootChain.CallOpts, forkNumber, blockNumber)
  3257  }
  3258  
  3259  // GetBlockFinalizedAt is a free data retrieval call binding the contract method 0x5b884682.
  3260  //
  3261  // Solidity: function getBlockFinalizedAt(uint256 forkNumber, uint256 blockNumber) constant returns(uint256)
  3262  func (_RootChain *RootChainCallerSession) GetBlockFinalizedAt(forkNumber *big.Int, blockNumber *big.Int) (*big.Int, error) {
  3263  	return _RootChain.Contract.GetBlockFinalizedAt(&_RootChain.CallOpts, forkNumber, blockNumber)
  3264  }
  3265  
  3266  // GetEROBytes is a free data retrieval call binding the contract method 0xd1723a96.
  3267  //
  3268  // Solidity: function getEROBytes(uint256 _requestId) constant returns(bytes out)
  3269  func (_RootChain *RootChainCaller) GetEROBytes(opts *bind.CallOpts, _requestId *big.Int) ([]byte, error) {
  3270  	var (
  3271  		ret0 = new([]byte)
  3272  	)
  3273  	out := ret0
  3274  	err := _RootChain.contract.Call(opts, out, "getEROBytes", _requestId)
  3275  	return *ret0, err
  3276  }
  3277  
  3278  // GetEROBytes is a free data retrieval call binding the contract method 0xd1723a96.
  3279  //
  3280  // Solidity: function getEROBytes(uint256 _requestId) constant returns(bytes out)
  3281  func (_RootChain *RootChainSession) GetEROBytes(_requestId *big.Int) ([]byte, error) {
  3282  	return _RootChain.Contract.GetEROBytes(&_RootChain.CallOpts, _requestId)
  3283  }
  3284  
  3285  // GetEROBytes is a free data retrieval call binding the contract method 0xd1723a96.
  3286  //
  3287  // Solidity: function getEROBytes(uint256 _requestId) constant returns(bytes out)
  3288  func (_RootChain *RootChainCallerSession) GetEROBytes(_requestId *big.Int) ([]byte, error) {
  3289  	return _RootChain.Contract.GetEROBytes(&_RootChain.CallOpts, _requestId)
  3290  }
  3291  
  3292  // GetEpoch is a free data retrieval call binding the contract method 0x2b25a38b.
  3293  //
  3294  // Solidity: function getEpoch(uint256 forkNumber, uint256 epochNumber) constant returns(DataEpoch epoch)
  3295  func (_RootChain *RootChainCaller) GetEpoch(opts *bind.CallOpts, forkNumber *big.Int, epochNumber *big.Int) (DataEpoch, error) {
  3296  	var (
  3297  		ret0 = new(DataEpoch)
  3298  	)
  3299  	out := ret0
  3300  	err := _RootChain.contract.Call(opts, out, "getEpoch", forkNumber, epochNumber)
  3301  	return *ret0, err
  3302  }
  3303  
  3304  // GetEpoch is a free data retrieval call binding the contract method 0x2b25a38b.
  3305  //
  3306  // Solidity: function getEpoch(uint256 forkNumber, uint256 epochNumber) constant returns(DataEpoch epoch)
  3307  func (_RootChain *RootChainSession) GetEpoch(forkNumber *big.Int, epochNumber *big.Int) (DataEpoch, error) {
  3308  	return _RootChain.Contract.GetEpoch(&_RootChain.CallOpts, forkNumber, epochNumber)
  3309  }
  3310  
  3311  // GetEpoch is a free data retrieval call binding the contract method 0x2b25a38b.
  3312  //
  3313  // Solidity: function getEpoch(uint256 forkNumber, uint256 epochNumber) constant returns(DataEpoch epoch)
  3314  func (_RootChain *RootChainCallerSession) GetEpoch(forkNumber *big.Int, epochNumber *big.Int) (DataEpoch, error) {
  3315  	return _RootChain.Contract.GetEpoch(&_RootChain.CallOpts, forkNumber, epochNumber)
  3316  }
  3317  
  3318  // GetLastEpoch is a free data retrieval call binding the contract method 0x398bac63.
  3319  //
  3320  // Solidity: function getLastEpoch() constant returns(DataEpoch)
  3321  func (_RootChain *RootChainCaller) GetLastEpoch(opts *bind.CallOpts) (DataEpoch, error) {
  3322  	var (
  3323  		ret0 = new(DataEpoch)
  3324  	)
  3325  	out := ret0
  3326  	err := _RootChain.contract.Call(opts, out, "getLastEpoch")
  3327  	return *ret0, err
  3328  }
  3329  
  3330  // GetLastEpoch is a free data retrieval call binding the contract method 0x398bac63.
  3331  //
  3332  // Solidity: function getLastEpoch() constant returns(DataEpoch)
  3333  func (_RootChain *RootChainSession) GetLastEpoch() (DataEpoch, error) {
  3334  	return _RootChain.Contract.GetLastEpoch(&_RootChain.CallOpts)
  3335  }
  3336  
  3337  // GetLastEpoch is a free data retrieval call binding the contract method 0x398bac63.
  3338  //
  3339  // Solidity: function getLastEpoch() constant returns(DataEpoch)
  3340  func (_RootChain *RootChainCallerSession) GetLastEpoch() (DataEpoch, error) {
  3341  	return _RootChain.Contract.GetLastEpoch(&_RootChain.CallOpts)
  3342  }
  3343  
  3344  // GetLastFinalizedBlock is a free data retrieval call binding the contract method 0xd636857e.
  3345  //
  3346  // Solidity: function getLastFinalizedBlock(uint256 forkNumber) constant returns(uint256)
  3347  func (_RootChain *RootChainCaller) GetLastFinalizedBlock(opts *bind.CallOpts, forkNumber *big.Int) (*big.Int, error) {
  3348  	var (
  3349  		ret0 = new(*big.Int)
  3350  	)
  3351  	out := ret0
  3352  	err := _RootChain.contract.Call(opts, out, "getLastFinalizedBlock", forkNumber)
  3353  	return *ret0, err
  3354  }
  3355  
  3356  // GetLastFinalizedBlock is a free data retrieval call binding the contract method 0xd636857e.
  3357  //
  3358  // Solidity: function getLastFinalizedBlock(uint256 forkNumber) constant returns(uint256)
  3359  func (_RootChain *RootChainSession) GetLastFinalizedBlock(forkNumber *big.Int) (*big.Int, error) {
  3360  	return _RootChain.Contract.GetLastFinalizedBlock(&_RootChain.CallOpts, forkNumber)
  3361  }
  3362  
  3363  // GetLastFinalizedBlock is a free data retrieval call binding the contract method 0xd636857e.
  3364  //
  3365  // Solidity: function getLastFinalizedBlock(uint256 forkNumber) constant returns(uint256)
  3366  func (_RootChain *RootChainCallerSession) GetLastFinalizedBlock(forkNumber *big.Int) (*big.Int, error) {
  3367  	return _RootChain.Contract.GetLastFinalizedBlock(&_RootChain.CallOpts, forkNumber)
  3368  }
  3369  
  3370  // GetLastFinalizedEpoch is a free data retrieval call binding the contract method 0x019dc099.
  3371  //
  3372  // Solidity: function getLastFinalizedEpoch(uint256 forkNumber) constant returns(uint256)
  3373  func (_RootChain *RootChainCaller) GetLastFinalizedEpoch(opts *bind.CallOpts, forkNumber *big.Int) (*big.Int, error) {
  3374  	var (
  3375  		ret0 = new(*big.Int)
  3376  	)
  3377  	out := ret0
  3378  	err := _RootChain.contract.Call(opts, out, "getLastFinalizedEpoch", forkNumber)
  3379  	return *ret0, err
  3380  }
  3381  
  3382  // GetLastFinalizedEpoch is a free data retrieval call binding the contract method 0x019dc099.
  3383  //
  3384  // Solidity: function getLastFinalizedEpoch(uint256 forkNumber) constant returns(uint256)
  3385  func (_RootChain *RootChainSession) GetLastFinalizedEpoch(forkNumber *big.Int) (*big.Int, error) {
  3386  	return _RootChain.Contract.GetLastFinalizedEpoch(&_RootChain.CallOpts, forkNumber)
  3387  }
  3388  
  3389  // GetLastFinalizedEpoch is a free data retrieval call binding the contract method 0x019dc099.
  3390  //
  3391  // Solidity: function getLastFinalizedEpoch(uint256 forkNumber) constant returns(uint256)
  3392  func (_RootChain *RootChainCallerSession) GetLastFinalizedEpoch(forkNumber *big.Int) (*big.Int, error) {
  3393  	return _RootChain.Contract.GetLastFinalizedEpoch(&_RootChain.CallOpts, forkNumber)
  3394  }
  3395  
  3396  // GetNumEROs is a free data retrieval call binding the contract method 0xb540adba.
  3397  //
  3398  // Solidity: function getNumEROs() constant returns(uint256)
  3399  func (_RootChain *RootChainCaller) GetNumEROs(opts *bind.CallOpts) (*big.Int, error) {
  3400  	var (
  3401  		ret0 = new(*big.Int)
  3402  	)
  3403  	out := ret0
  3404  	err := _RootChain.contract.Call(opts, out, "getNumEROs")
  3405  	return *ret0, err
  3406  }
  3407  
  3408  // GetNumEROs is a free data retrieval call binding the contract method 0xb540adba.
  3409  //
  3410  // Solidity: function getNumEROs() constant returns(uint256)
  3411  func (_RootChain *RootChainSession) GetNumEROs() (*big.Int, error) {
  3412  	return _RootChain.Contract.GetNumEROs(&_RootChain.CallOpts)
  3413  }
  3414  
  3415  // GetNumEROs is a free data retrieval call binding the contract method 0xb540adba.
  3416  //
  3417  // Solidity: function getNumEROs() constant returns(uint256)
  3418  func (_RootChain *RootChainCallerSession) GetNumEROs() (*big.Int, error) {
  3419  	return _RootChain.Contract.GetNumEROs(&_RootChain.CallOpts)
  3420  }
  3421  
  3422  // GetNumORBs is a free data retrieval call binding the contract method 0xea0c73f6.
  3423  //
  3424  // Solidity: function getNumORBs() constant returns(uint256)
  3425  func (_RootChain *RootChainCaller) GetNumORBs(opts *bind.CallOpts) (*big.Int, error) {
  3426  	var (
  3427  		ret0 = new(*big.Int)
  3428  	)
  3429  	out := ret0
  3430  	err := _RootChain.contract.Call(opts, out, "getNumORBs")
  3431  	return *ret0, err
  3432  }
  3433  
  3434  // GetNumORBs is a free data retrieval call binding the contract method 0xea0c73f6.
  3435  //
  3436  // Solidity: function getNumORBs() constant returns(uint256)
  3437  func (_RootChain *RootChainSession) GetNumORBs() (*big.Int, error) {
  3438  	return _RootChain.Contract.GetNumORBs(&_RootChain.CallOpts)
  3439  }
  3440  
  3441  // GetNumORBs is a free data retrieval call binding the contract method 0xea0c73f6.
  3442  //
  3443  // Solidity: function getNumORBs() constant returns(uint256)
  3444  func (_RootChain *RootChainCallerSession) GetNumORBs() (*big.Int, error) {
  3445  	return _RootChain.Contract.GetNumORBs(&_RootChain.CallOpts)
  3446  }
  3447  
  3448  // GetRequestFinalized is a free data retrieval call binding the contract method 0xf28a7afa.
  3449  //
  3450  // Solidity: function getRequestFinalized(uint256 _requestId, bool _userActivated) constant returns(bool finalized)
  3451  func (_RootChain *RootChainCaller) GetRequestFinalized(opts *bind.CallOpts, _requestId *big.Int, _userActivated bool) (bool, error) {
  3452  	var (
  3453  		ret0 = new(bool)
  3454  	)
  3455  	out := ret0
  3456  	err := _RootChain.contract.Call(opts, out, "getRequestFinalized", _requestId, _userActivated)
  3457  	return *ret0, err
  3458  }
  3459  
  3460  // GetRequestFinalized is a free data retrieval call binding the contract method 0xf28a7afa.
  3461  //
  3462  // Solidity: function getRequestFinalized(uint256 _requestId, bool _userActivated) constant returns(bool finalized)
  3463  func (_RootChain *RootChainSession) GetRequestFinalized(_requestId *big.Int, _userActivated bool) (bool, error) {
  3464  	return _RootChain.Contract.GetRequestFinalized(&_RootChain.CallOpts, _requestId, _userActivated)
  3465  }
  3466  
  3467  // GetRequestFinalized is a free data retrieval call binding the contract method 0xf28a7afa.
  3468  //
  3469  // Solidity: function getRequestFinalized(uint256 _requestId, bool _userActivated) constant returns(bool finalized)
  3470  func (_RootChain *RootChainCallerSession) GetRequestFinalized(_requestId *big.Int, _userActivated bool) (bool, error) {
  3471  	return _RootChain.Contract.GetRequestFinalized(&_RootChain.CallOpts, _requestId, _userActivated)
  3472  }
  3473  
  3474  // IsMapper is a free data retrieval call binding the contract method 0xc0c49c2a.
  3475  //
  3476  // Solidity: function isMapper(address account) constant returns(bool)
  3477  func (_RootChain *RootChainCaller) IsMapper(opts *bind.CallOpts, account common.Address) (bool, error) {
  3478  	var (
  3479  		ret0 = new(bool)
  3480  	)
  3481  	out := ret0
  3482  	err := _RootChain.contract.Call(opts, out, "isMapper", account)
  3483  	return *ret0, err
  3484  }
  3485  
  3486  // IsMapper is a free data retrieval call binding the contract method 0xc0c49c2a.
  3487  //
  3488  // Solidity: function isMapper(address account) constant returns(bool)
  3489  func (_RootChain *RootChainSession) IsMapper(account common.Address) (bool, error) {
  3490  	return _RootChain.Contract.IsMapper(&_RootChain.CallOpts, account)
  3491  }
  3492  
  3493  // IsMapper is a free data retrieval call binding the contract method 0xc0c49c2a.
  3494  //
  3495  // Solidity: function isMapper(address account) constant returns(bool)
  3496  func (_RootChain *RootChainCallerSession) IsMapper(account common.Address) (bool, error) {
  3497  	return _RootChain.Contract.IsMapper(&_RootChain.CallOpts, account)
  3498  }
  3499  
  3500  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
  3501  //
  3502  // Solidity: function isRootChain() constant returns(bool)
  3503  func (_RootChain *RootChainCaller) IsRootChain(opts *bind.CallOpts) (bool, error) {
  3504  	var (
  3505  		ret0 = new(bool)
  3506  	)
  3507  	out := ret0
  3508  	err := _RootChain.contract.Call(opts, out, "isRootChain")
  3509  	return *ret0, err
  3510  }
  3511  
  3512  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
  3513  //
  3514  // Solidity: function isRootChain() constant returns(bool)
  3515  func (_RootChain *RootChainSession) IsRootChain() (bool, error) {
  3516  	return _RootChain.Contract.IsRootChain(&_RootChain.CallOpts)
  3517  }
  3518  
  3519  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
  3520  //
  3521  // Solidity: function isRootChain() constant returns(bool)
  3522  func (_RootChain *RootChainCallerSession) IsRootChain() (bool, error) {
  3523  	return _RootChain.Contract.IsRootChain(&_RootChain.CallOpts)
  3524  }
  3525  
  3526  // IsSubmitter is a free data retrieval call binding the contract method 0xa926fdbc.
  3527  //
  3528  // Solidity: function isSubmitter(address account) constant returns(bool)
  3529  func (_RootChain *RootChainCaller) IsSubmitter(opts *bind.CallOpts, account common.Address) (bool, error) {
  3530  	var (
  3531  		ret0 = new(bool)
  3532  	)
  3533  	out := ret0
  3534  	err := _RootChain.contract.Call(opts, out, "isSubmitter", account)
  3535  	return *ret0, err
  3536  }
  3537  
  3538  // IsSubmitter is a free data retrieval call binding the contract method 0xa926fdbc.
  3539  //
  3540  // Solidity: function isSubmitter(address account) constant returns(bool)
  3541  func (_RootChain *RootChainSession) IsSubmitter(account common.Address) (bool, error) {
  3542  	return _RootChain.Contract.IsSubmitter(&_RootChain.CallOpts, account)
  3543  }
  3544  
  3545  // IsSubmitter is a free data retrieval call binding the contract method 0xa926fdbc.
  3546  //
  3547  // Solidity: function isSubmitter(address account) constant returns(bool)
  3548  func (_RootChain *RootChainCallerSession) IsSubmitter(account common.Address) (bool, error) {
  3549  	return _RootChain.Contract.IsSubmitter(&_RootChain.CallOpts, account)
  3550  }
  3551  
  3552  // LastAppliedBlockNumber is a free data retrieval call binding the contract method 0xfb788a27.
  3553  //
  3554  // Solidity: function lastAppliedBlockNumber() constant returns(uint256)
  3555  func (_RootChain *RootChainCaller) LastAppliedBlockNumber(opts *bind.CallOpts) (*big.Int, error) {
  3556  	var (
  3557  		ret0 = new(*big.Int)
  3558  	)
  3559  	out := ret0
  3560  	err := _RootChain.contract.Call(opts, out, "lastAppliedBlockNumber")
  3561  	return *ret0, err
  3562  }
  3563  
  3564  // LastAppliedBlockNumber is a free data retrieval call binding the contract method 0xfb788a27.
  3565  //
  3566  // Solidity: function lastAppliedBlockNumber() constant returns(uint256)
  3567  func (_RootChain *RootChainSession) LastAppliedBlockNumber() (*big.Int, error) {
  3568  	return _RootChain.Contract.LastAppliedBlockNumber(&_RootChain.CallOpts)
  3569  }
  3570  
  3571  // LastAppliedBlockNumber is a free data retrieval call binding the contract method 0xfb788a27.
  3572  //
  3573  // Solidity: function lastAppliedBlockNumber() constant returns(uint256)
  3574  func (_RootChain *RootChainCallerSession) LastAppliedBlockNumber() (*big.Int, error) {
  3575  	return _RootChain.Contract.LastAppliedBlockNumber(&_RootChain.CallOpts)
  3576  }
  3577  
  3578  // LastAppliedEpochNumber is a free data retrieval call binding the contract method 0xc8ad329f.
  3579  //
  3580  // Solidity: function lastAppliedEpochNumber() constant returns(uint256)
  3581  func (_RootChain *RootChainCaller) LastAppliedEpochNumber(opts *bind.CallOpts) (*big.Int, error) {
  3582  	var (
  3583  		ret0 = new(*big.Int)
  3584  	)
  3585  	out := ret0
  3586  	err := _RootChain.contract.Call(opts, out, "lastAppliedEpochNumber")
  3587  	return *ret0, err
  3588  }
  3589  
  3590  // LastAppliedEpochNumber is a free data retrieval call binding the contract method 0xc8ad329f.
  3591  //
  3592  // Solidity: function lastAppliedEpochNumber() constant returns(uint256)
  3593  func (_RootChain *RootChainSession) LastAppliedEpochNumber() (*big.Int, error) {
  3594  	return _RootChain.Contract.LastAppliedEpochNumber(&_RootChain.CallOpts)
  3595  }
  3596  
  3597  // LastAppliedEpochNumber is a free data retrieval call binding the contract method 0xc8ad329f.
  3598  //
  3599  // Solidity: function lastAppliedEpochNumber() constant returns(uint256)
  3600  func (_RootChain *RootChainCallerSession) LastAppliedEpochNumber() (*big.Int, error) {
  3601  	return _RootChain.Contract.LastAppliedEpochNumber(&_RootChain.CallOpts)
  3602  }
  3603  
  3604  // LastAppliedForkNumber is a free data retrieval call binding the contract method 0x164bc2ae.
  3605  //
  3606  // Solidity: function lastAppliedForkNumber() constant returns(uint256)
  3607  func (_RootChain *RootChainCaller) LastAppliedForkNumber(opts *bind.CallOpts) (*big.Int, error) {
  3608  	var (
  3609  		ret0 = new(*big.Int)
  3610  	)
  3611  	out := ret0
  3612  	err := _RootChain.contract.Call(opts, out, "lastAppliedForkNumber")
  3613  	return *ret0, err
  3614  }
  3615  
  3616  // LastAppliedForkNumber is a free data retrieval call binding the contract method 0x164bc2ae.
  3617  //
  3618  // Solidity: function lastAppliedForkNumber() constant returns(uint256)
  3619  func (_RootChain *RootChainSession) LastAppliedForkNumber() (*big.Int, error) {
  3620  	return _RootChain.Contract.LastAppliedForkNumber(&_RootChain.CallOpts)
  3621  }
  3622  
  3623  // LastAppliedForkNumber is a free data retrieval call binding the contract method 0x164bc2ae.
  3624  //
  3625  // Solidity: function lastAppliedForkNumber() constant returns(uint256)
  3626  func (_RootChain *RootChainCallerSession) LastAppliedForkNumber() (*big.Int, error) {
  3627  	return _RootChain.Contract.LastAppliedForkNumber(&_RootChain.CallOpts)
  3628  }
  3629  
  3630  // LastBlock is a free data retrieval call binding the contract method 0x1ec2042b.
  3631  //
  3632  // Solidity: function lastBlock(uint256 forkNumber) constant returns(uint256 lastBlock)
  3633  func (_RootChain *RootChainCaller) LastBlock(opts *bind.CallOpts, forkNumber *big.Int) (*big.Int, error) {
  3634  	var (
  3635  		ret0 = new(*big.Int)
  3636  	)
  3637  	out := ret0
  3638  	err := _RootChain.contract.Call(opts, out, "lastBlock", forkNumber)
  3639  	return *ret0, err
  3640  }
  3641  
  3642  // LastBlock is a free data retrieval call binding the contract method 0x1ec2042b.
  3643  //
  3644  // Solidity: function lastBlock(uint256 forkNumber) constant returns(uint256 lastBlock)
  3645  func (_RootChain *RootChainSession) LastBlock(forkNumber *big.Int) (*big.Int, error) {
  3646  	return _RootChain.Contract.LastBlock(&_RootChain.CallOpts, forkNumber)
  3647  }
  3648  
  3649  // LastBlock is a free data retrieval call binding the contract method 0x1ec2042b.
  3650  //
  3651  // Solidity: function lastBlock(uint256 forkNumber) constant returns(uint256 lastBlock)
  3652  func (_RootChain *RootChainCallerSession) LastBlock(forkNumber *big.Int) (*big.Int, error) {
  3653  	return _RootChain.Contract.LastBlock(&_RootChain.CallOpts, forkNumber)
  3654  }
  3655  
  3656  // LastEpoch is a free data retrieval call binding the contract method 0x11e4c914.
  3657  //
  3658  // Solidity: function lastEpoch(uint256 forkNumber) constant returns(uint256 lastBlock)
  3659  func (_RootChain *RootChainCaller) LastEpoch(opts *bind.CallOpts, forkNumber *big.Int) (*big.Int, error) {
  3660  	var (
  3661  		ret0 = new(*big.Int)
  3662  	)
  3663  	out := ret0
  3664  	err := _RootChain.contract.Call(opts, out, "lastEpoch", forkNumber)
  3665  	return *ret0, err
  3666  }
  3667  
  3668  // LastEpoch is a free data retrieval call binding the contract method 0x11e4c914.
  3669  //
  3670  // Solidity: function lastEpoch(uint256 forkNumber) constant returns(uint256 lastBlock)
  3671  func (_RootChain *RootChainSession) LastEpoch(forkNumber *big.Int) (*big.Int, error) {
  3672  	return _RootChain.Contract.LastEpoch(&_RootChain.CallOpts, forkNumber)
  3673  }
  3674  
  3675  // LastEpoch is a free data retrieval call binding the contract method 0x11e4c914.
  3676  //
  3677  // Solidity: function lastEpoch(uint256 forkNumber) constant returns(uint256 lastBlock)
  3678  func (_RootChain *RootChainCallerSession) LastEpoch(forkNumber *big.Int) (*big.Int, error) {
  3679  	return _RootChain.Contract.LastEpoch(&_RootChain.CallOpts, forkNumber)
  3680  }
  3681  
  3682  // LastNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xb6715647.
  3683  //
  3684  // Solidity: function lastNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  3685  func (_RootChain *RootChainCaller) LastNonEmptyRequestEpoch(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
  3686  	var (
  3687  		ret0 = new(*big.Int)
  3688  	)
  3689  	out := ret0
  3690  	err := _RootChain.contract.Call(opts, out, "lastNonEmptyRequestEpoch", arg0)
  3691  	return *ret0, err
  3692  }
  3693  
  3694  // LastNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xb6715647.
  3695  //
  3696  // Solidity: function lastNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  3697  func (_RootChain *RootChainSession) LastNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
  3698  	return _RootChain.Contract.LastNonEmptyRequestEpoch(&_RootChain.CallOpts, arg0)
  3699  }
  3700  
  3701  // LastNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xb6715647.
  3702  //
  3703  // Solidity: function lastNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  3704  func (_RootChain *RootChainCallerSession) LastNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
  3705  	return _RootChain.Contract.LastNonEmptyRequestEpoch(&_RootChain.CallOpts, arg0)
  3706  }
  3707  
  3708  // NumEnterForORB is a free data retrieval call binding the contract method 0x23691566.
  3709  //
  3710  // Solidity: function numEnterForORB() constant returns(uint256)
  3711  func (_RootChain *RootChainCaller) NumEnterForORB(opts *bind.CallOpts) (*big.Int, error) {
  3712  	var (
  3713  		ret0 = new(*big.Int)
  3714  	)
  3715  	out := ret0
  3716  	err := _RootChain.contract.Call(opts, out, "numEnterForORB")
  3717  	return *ret0, err
  3718  }
  3719  
  3720  // NumEnterForORB is a free data retrieval call binding the contract method 0x23691566.
  3721  //
  3722  // Solidity: function numEnterForORB() constant returns(uint256)
  3723  func (_RootChain *RootChainSession) NumEnterForORB() (*big.Int, error) {
  3724  	return _RootChain.Contract.NumEnterForORB(&_RootChain.CallOpts)
  3725  }
  3726  
  3727  // NumEnterForORB is a free data retrieval call binding the contract method 0x23691566.
  3728  //
  3729  // Solidity: function numEnterForORB() constant returns(uint256)
  3730  func (_RootChain *RootChainCallerSession) NumEnterForORB() (*big.Int, error) {
  3731  	return _RootChain.Contract.NumEnterForORB(&_RootChain.CallOpts)
  3732  }
  3733  
  3734  // Operator is a free data retrieval call binding the contract method 0x570ca735.
  3735  //
  3736  // Solidity: function operator() constant returns(address)
  3737  func (_RootChain *RootChainCaller) Operator(opts *bind.CallOpts) (common.Address, error) {
  3738  	var (
  3739  		ret0 = new(common.Address)
  3740  	)
  3741  	out := ret0
  3742  	err := _RootChain.contract.Call(opts, out, "operator")
  3743  	return *ret0, err
  3744  }
  3745  
  3746  // Operator is a free data retrieval call binding the contract method 0x570ca735.
  3747  //
  3748  // Solidity: function operator() constant returns(address)
  3749  func (_RootChain *RootChainSession) Operator() (common.Address, error) {
  3750  	return _RootChain.Contract.Operator(&_RootChain.CallOpts)
  3751  }
  3752  
  3753  // Operator is a free data retrieval call binding the contract method 0x570ca735.
  3754  //
  3755  // Solidity: function operator() constant returns(address)
  3756  func (_RootChain *RootChainCallerSession) Operator() (common.Address, error) {
  3757  	return _RootChain.Contract.Operator(&_RootChain.CallOpts)
  3758  }
  3759  
  3760  // RequestableContracts is a free data retrieval call binding the contract method 0xda0185f8.
  3761  //
  3762  // Solidity: function requestableContracts(address ) constant returns(address)
  3763  func (_RootChain *RootChainCaller) RequestableContracts(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
  3764  	var (
  3765  		ret0 = new(common.Address)
  3766  	)
  3767  	out := ret0
  3768  	err := _RootChain.contract.Call(opts, out, "requestableContracts", arg0)
  3769  	return *ret0, err
  3770  }
  3771  
  3772  // RequestableContracts is a free data retrieval call binding the contract method 0xda0185f8.
  3773  //
  3774  // Solidity: function requestableContracts(address ) constant returns(address)
  3775  func (_RootChain *RootChainSession) RequestableContracts(arg0 common.Address) (common.Address, error) {
  3776  	return _RootChain.Contract.RequestableContracts(&_RootChain.CallOpts, arg0)
  3777  }
  3778  
  3779  // RequestableContracts is a free data retrieval call binding the contract method 0xda0185f8.
  3780  //
  3781  // Solidity: function requestableContracts(address ) constant returns(address)
  3782  func (_RootChain *RootChainCallerSession) RequestableContracts(arg0 common.Address) (common.Address, error) {
  3783  	return _RootChain.Contract.RequestableContracts(&_RootChain.CallOpts, arg0)
  3784  }
  3785  
  3786  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  3787  //
  3788  // Solidity: function seigManager() constant returns(address)
  3789  func (_RootChain *RootChainCaller) SeigManager(opts *bind.CallOpts) (common.Address, error) {
  3790  	var (
  3791  		ret0 = new(common.Address)
  3792  	)
  3793  	out := ret0
  3794  	err := _RootChain.contract.Call(opts, out, "seigManager")
  3795  	return *ret0, err
  3796  }
  3797  
  3798  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  3799  //
  3800  // Solidity: function seigManager() constant returns(address)
  3801  func (_RootChain *RootChainSession) SeigManager() (common.Address, error) {
  3802  	return _RootChain.Contract.SeigManager(&_RootChain.CallOpts)
  3803  }
  3804  
  3805  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  3806  //
  3807  // Solidity: function seigManager() constant returns(address)
  3808  func (_RootChain *RootChainCallerSession) SeigManager() (common.Address, error) {
  3809  	return _RootChain.Contract.SeigManager(&_RootChain.CallOpts)
  3810  }
  3811  
  3812  // SubmitHandler is a free data retrieval call binding the contract method 0xe259faf7.
  3813  //
  3814  // Solidity: function submitHandler() constant returns(address)
  3815  func (_RootChain *RootChainCaller) SubmitHandler(opts *bind.CallOpts) (common.Address, error) {
  3816  	var (
  3817  		ret0 = new(common.Address)
  3818  	)
  3819  	out := ret0
  3820  	err := _RootChain.contract.Call(opts, out, "submitHandler")
  3821  	return *ret0, err
  3822  }
  3823  
  3824  // SubmitHandler is a free data retrieval call binding the contract method 0xe259faf7.
  3825  //
  3826  // Solidity: function submitHandler() constant returns(address)
  3827  func (_RootChain *RootChainSession) SubmitHandler() (common.Address, error) {
  3828  	return _RootChain.Contract.SubmitHandler(&_RootChain.CallOpts)
  3829  }
  3830  
  3831  // SubmitHandler is a free data retrieval call binding the contract method 0xe259faf7.
  3832  //
  3833  // Solidity: function submitHandler() constant returns(address)
  3834  func (_RootChain *RootChainCallerSession) SubmitHandler() (common.Address, error) {
  3835  	return _RootChain.Contract.SubmitHandler(&_RootChain.CallOpts)
  3836  }
  3837  
  3838  // AddMapper is a paid mutator transaction binding the contract method 0x80e3e81d.
  3839  //
  3840  // Solidity: function addMapper(address account) returns()
  3841  func (_RootChain *RootChainTransactor) AddMapper(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  3842  	return _RootChain.contract.Transact(opts, "addMapper", account)
  3843  }
  3844  
  3845  // AddMapper is a paid mutator transaction binding the contract method 0x80e3e81d.
  3846  //
  3847  // Solidity: function addMapper(address account) returns()
  3848  func (_RootChain *RootChainSession) AddMapper(account common.Address) (*types.Transaction, error) {
  3849  	return _RootChain.Contract.AddMapper(&_RootChain.TransactOpts, account)
  3850  }
  3851  
  3852  // AddMapper is a paid mutator transaction binding the contract method 0x80e3e81d.
  3853  //
  3854  // Solidity: function addMapper(address account) returns()
  3855  func (_RootChain *RootChainTransactorSession) AddMapper(account common.Address) (*types.Transaction, error) {
  3856  	return _RootChain.Contract.AddMapper(&_RootChain.TransactOpts, account)
  3857  }
  3858  
  3859  // AddSubmitter is a paid mutator transaction binding the contract method 0x072900f9.
  3860  //
  3861  // Solidity: function addSubmitter(address account) returns()
  3862  func (_RootChain *RootChainTransactor) AddSubmitter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  3863  	return _RootChain.contract.Transact(opts, "addSubmitter", account)
  3864  }
  3865  
  3866  // AddSubmitter is a paid mutator transaction binding the contract method 0x072900f9.
  3867  //
  3868  // Solidity: function addSubmitter(address account) returns()
  3869  func (_RootChain *RootChainSession) AddSubmitter(account common.Address) (*types.Transaction, error) {
  3870  	return _RootChain.Contract.AddSubmitter(&_RootChain.TransactOpts, account)
  3871  }
  3872  
  3873  // AddSubmitter is a paid mutator transaction binding the contract method 0x072900f9.
  3874  //
  3875  // Solidity: function addSubmitter(address account) returns()
  3876  func (_RootChain *RootChainTransactorSession) AddSubmitter(account common.Address) (*types.Transaction, error) {
  3877  	return _RootChain.Contract.AddSubmitter(&_RootChain.TransactOpts, account)
  3878  }
  3879  
  3880  // ChallengeExit is a paid mutator transaction binding the contract method 0x404f7d66.
  3881  //
  3882  // Solidity: function challengeExit(uint256 _forkNumber, uint256 _blockNumber, uint256 _index, bytes _receiptData, bytes _proof) returns()
  3883  func (_RootChain *RootChainTransactor) ChallengeExit(opts *bind.TransactOpts, _forkNumber *big.Int, _blockNumber *big.Int, _index *big.Int, _receiptData []byte, _proof []byte) (*types.Transaction, error) {
  3884  	return _RootChain.contract.Transact(opts, "challengeExit", _forkNumber, _blockNumber, _index, _receiptData, _proof)
  3885  }
  3886  
  3887  // ChallengeExit is a paid mutator transaction binding the contract method 0x404f7d66.
  3888  //
  3889  // Solidity: function challengeExit(uint256 _forkNumber, uint256 _blockNumber, uint256 _index, bytes _receiptData, bytes _proof) returns()
  3890  func (_RootChain *RootChainSession) ChallengeExit(_forkNumber *big.Int, _blockNumber *big.Int, _index *big.Int, _receiptData []byte, _proof []byte) (*types.Transaction, error) {
  3891  	return _RootChain.Contract.ChallengeExit(&_RootChain.TransactOpts, _forkNumber, _blockNumber, _index, _receiptData, _proof)
  3892  }
  3893  
  3894  // ChallengeExit is a paid mutator transaction binding the contract method 0x404f7d66.
  3895  //
  3896  // Solidity: function challengeExit(uint256 _forkNumber, uint256 _blockNumber, uint256 _index, bytes _receiptData, bytes _proof) returns()
  3897  func (_RootChain *RootChainTransactorSession) ChallengeExit(_forkNumber *big.Int, _blockNumber *big.Int, _index *big.Int, _receiptData []byte, _proof []byte) (*types.Transaction, error) {
  3898  	return _RootChain.Contract.ChallengeExit(&_RootChain.TransactOpts, _forkNumber, _blockNumber, _index, _receiptData, _proof)
  3899  }
  3900  
  3901  // ChallengeNullAddress is a paid mutator transaction binding the contract method 0x6299fb24.
  3902  //
  3903  // Solidity: function challengeNullAddress(uint256 _blockNumber, bytes _key, bytes _txByte, uint256 _branchMask, bytes32[] _siblings) returns()
  3904  func (_RootChain *RootChainTransactor) ChallengeNullAddress(opts *bind.TransactOpts, _blockNumber *big.Int, _key []byte, _txByte []byte, _branchMask *big.Int, _siblings [][32]byte) (*types.Transaction, error) {
  3905  	return _RootChain.contract.Transact(opts, "challengeNullAddress", _blockNumber, _key, _txByte, _branchMask, _siblings)
  3906  }
  3907  
  3908  // ChallengeNullAddress is a paid mutator transaction binding the contract method 0x6299fb24.
  3909  //
  3910  // Solidity: function challengeNullAddress(uint256 _blockNumber, bytes _key, bytes _txByte, uint256 _branchMask, bytes32[] _siblings) returns()
  3911  func (_RootChain *RootChainSession) ChallengeNullAddress(_blockNumber *big.Int, _key []byte, _txByte []byte, _branchMask *big.Int, _siblings [][32]byte) (*types.Transaction, error) {
  3912  	return _RootChain.Contract.ChallengeNullAddress(&_RootChain.TransactOpts, _blockNumber, _key, _txByte, _branchMask, _siblings)
  3913  }
  3914  
  3915  // ChallengeNullAddress is a paid mutator transaction binding the contract method 0x6299fb24.
  3916  //
  3917  // Solidity: function challengeNullAddress(uint256 _blockNumber, bytes _key, bytes _txByte, uint256 _branchMask, bytes32[] _siblings) returns()
  3918  func (_RootChain *RootChainTransactorSession) ChallengeNullAddress(_blockNumber *big.Int, _key []byte, _txByte []byte, _branchMask *big.Int, _siblings [][32]byte) (*types.Transaction, error) {
  3919  	return _RootChain.Contract.ChallengeNullAddress(&_RootChain.TransactOpts, _blockNumber, _key, _txByte, _branchMask, _siblings)
  3920  }
  3921  
  3922  // ChangeOperator is a paid mutator transaction binding the contract method 0x06394c9b.
  3923  //
  3924  // Solidity: function changeOperator(address _operator) returns()
  3925  func (_RootChain *RootChainTransactor) ChangeOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
  3926  	return _RootChain.contract.Transact(opts, "changeOperator", _operator)
  3927  }
  3928  
  3929  // ChangeOperator is a paid mutator transaction binding the contract method 0x06394c9b.
  3930  //
  3931  // Solidity: function changeOperator(address _operator) returns()
  3932  func (_RootChain *RootChainSession) ChangeOperator(_operator common.Address) (*types.Transaction, error) {
  3933  	return _RootChain.Contract.ChangeOperator(&_RootChain.TransactOpts, _operator)
  3934  }
  3935  
  3936  // ChangeOperator is a paid mutator transaction binding the contract method 0x06394c9b.
  3937  //
  3938  // Solidity: function changeOperator(address _operator) returns()
  3939  func (_RootChain *RootChainTransactorSession) ChangeOperator(_operator common.Address) (*types.Transaction, error) {
  3940  	return _RootChain.Contract.ChangeOperator(&_RootChain.TransactOpts, _operator)
  3941  }
  3942  
  3943  // FinalizeBlock is a paid mutator transaction binding the contract method 0x75395a58.
  3944  //
  3945  // Solidity: function finalizeBlock() returns(bool success)
  3946  func (_RootChain *RootChainTransactor) FinalizeBlock(opts *bind.TransactOpts) (*types.Transaction, error) {
  3947  	return _RootChain.contract.Transact(opts, "finalizeBlock")
  3948  }
  3949  
  3950  // FinalizeBlock is a paid mutator transaction binding the contract method 0x75395a58.
  3951  //
  3952  // Solidity: function finalizeBlock() returns(bool success)
  3953  func (_RootChain *RootChainSession) FinalizeBlock() (*types.Transaction, error) {
  3954  	return _RootChain.Contract.FinalizeBlock(&_RootChain.TransactOpts)
  3955  }
  3956  
  3957  // FinalizeBlock is a paid mutator transaction binding the contract method 0x75395a58.
  3958  //
  3959  // Solidity: function finalizeBlock() returns(bool success)
  3960  func (_RootChain *RootChainTransactorSession) FinalizeBlock() (*types.Transaction, error) {
  3961  	return _RootChain.Contract.FinalizeBlock(&_RootChain.TransactOpts)
  3962  }
  3963  
  3964  // FinalizeRequest is a paid mutator transaction binding the contract method 0x99bd3600.
  3965  //
  3966  // Solidity: function finalizeRequest() returns(bool success)
  3967  func (_RootChain *RootChainTransactor) FinalizeRequest(opts *bind.TransactOpts) (*types.Transaction, error) {
  3968  	return _RootChain.contract.Transact(opts, "finalizeRequest")
  3969  }
  3970  
  3971  // FinalizeRequest is a paid mutator transaction binding the contract method 0x99bd3600.
  3972  //
  3973  // Solidity: function finalizeRequest() returns(bool success)
  3974  func (_RootChain *RootChainSession) FinalizeRequest() (*types.Transaction, error) {
  3975  	return _RootChain.Contract.FinalizeRequest(&_RootChain.TransactOpts)
  3976  }
  3977  
  3978  // FinalizeRequest is a paid mutator transaction binding the contract method 0x99bd3600.
  3979  //
  3980  // Solidity: function finalizeRequest() returns(bool success)
  3981  func (_RootChain *RootChainTransactorSession) FinalizeRequest() (*types.Transaction, error) {
  3982  	return _RootChain.Contract.FinalizeRequest(&_RootChain.TransactOpts)
  3983  }
  3984  
  3985  // FinalizeRequests is a paid mutator transaction binding the contract method 0x54768571.
  3986  //
  3987  // Solidity: function finalizeRequests(uint256 n) returns(bool success)
  3988  func (_RootChain *RootChainTransactor) FinalizeRequests(opts *bind.TransactOpts, n *big.Int) (*types.Transaction, error) {
  3989  	return _RootChain.contract.Transact(opts, "finalizeRequests", n)
  3990  }
  3991  
  3992  // FinalizeRequests is a paid mutator transaction binding the contract method 0x54768571.
  3993  //
  3994  // Solidity: function finalizeRequests(uint256 n) returns(bool success)
  3995  func (_RootChain *RootChainSession) FinalizeRequests(n *big.Int) (*types.Transaction, error) {
  3996  	return _RootChain.Contract.FinalizeRequests(&_RootChain.TransactOpts, n)
  3997  }
  3998  
  3999  // FinalizeRequests is a paid mutator transaction binding the contract method 0x54768571.
  4000  //
  4001  // Solidity: function finalizeRequests(uint256 n) returns(bool success)
  4002  func (_RootChain *RootChainTransactorSession) FinalizeRequests(n *big.Int) (*types.Transaction, error) {
  4003  	return _RootChain.Contract.FinalizeRequests(&_RootChain.TransactOpts, n)
  4004  }
  4005  
  4006  // MakeERU is a paid mutator transaction binding the contract method 0x78fe705f.
  4007  //
  4008  // Solidity: function makeERU(address _to, bytes32 _trieKey, bytes _trieValue) returns(bool success)
  4009  func (_RootChain *RootChainTransactor) MakeERU(opts *bind.TransactOpts, _to common.Address, _trieKey [32]byte, _trieValue []byte) (*types.Transaction, error) {
  4010  	return _RootChain.contract.Transact(opts, "makeERU", _to, _trieKey, _trieValue)
  4011  }
  4012  
  4013  // MakeERU is a paid mutator transaction binding the contract method 0x78fe705f.
  4014  //
  4015  // Solidity: function makeERU(address _to, bytes32 _trieKey, bytes _trieValue) returns(bool success)
  4016  func (_RootChain *RootChainSession) MakeERU(_to common.Address, _trieKey [32]byte, _trieValue []byte) (*types.Transaction, error) {
  4017  	return _RootChain.Contract.MakeERU(&_RootChain.TransactOpts, _to, _trieKey, _trieValue)
  4018  }
  4019  
  4020  // MakeERU is a paid mutator transaction binding the contract method 0x78fe705f.
  4021  //
  4022  // Solidity: function makeERU(address _to, bytes32 _trieKey, bytes _trieValue) returns(bool success)
  4023  func (_RootChain *RootChainTransactorSession) MakeERU(_to common.Address, _trieKey [32]byte, _trieValue []byte) (*types.Transaction, error) {
  4024  	return _RootChain.Contract.MakeERU(&_RootChain.TransactOpts, _to, _trieKey, _trieValue)
  4025  }
  4026  
  4027  // MapRequestableContractByOperator is a paid mutator transaction binding the contract method 0xcb5d742f.
  4028  //
  4029  // Solidity: function mapRequestableContractByOperator(address _rootchain, address _childchain) returns(bool success)
  4030  func (_RootChain *RootChainTransactor) MapRequestableContractByOperator(opts *bind.TransactOpts, _rootchain common.Address, _childchain common.Address) (*types.Transaction, error) {
  4031  	return _RootChain.contract.Transact(opts, "mapRequestableContractByOperator", _rootchain, _childchain)
  4032  }
  4033  
  4034  // MapRequestableContractByOperator is a paid mutator transaction binding the contract method 0xcb5d742f.
  4035  //
  4036  // Solidity: function mapRequestableContractByOperator(address _rootchain, address _childchain) returns(bool success)
  4037  func (_RootChain *RootChainSession) MapRequestableContractByOperator(_rootchain common.Address, _childchain common.Address) (*types.Transaction, error) {
  4038  	return _RootChain.Contract.MapRequestableContractByOperator(&_RootChain.TransactOpts, _rootchain, _childchain)
  4039  }
  4040  
  4041  // MapRequestableContractByOperator is a paid mutator transaction binding the contract method 0xcb5d742f.
  4042  //
  4043  // Solidity: function mapRequestableContractByOperator(address _rootchain, address _childchain) returns(bool success)
  4044  func (_RootChain *RootChainTransactorSession) MapRequestableContractByOperator(_rootchain common.Address, _childchain common.Address) (*types.Transaction, error) {
  4045  	return _RootChain.Contract.MapRequestableContractByOperator(&_RootChain.TransactOpts, _rootchain, _childchain)
  4046  }
  4047  
  4048  // PrepareToSubmitURB is a paid mutator transaction binding the contract method 0xe6925d08.
  4049  //
  4050  // Solidity: function prepareToSubmitURB() returns()
  4051  func (_RootChain *RootChainTransactor) PrepareToSubmitURB(opts *bind.TransactOpts) (*types.Transaction, error) {
  4052  	return _RootChain.contract.Transact(opts, "prepareToSubmitURB")
  4053  }
  4054  
  4055  // PrepareToSubmitURB is a paid mutator transaction binding the contract method 0xe6925d08.
  4056  //
  4057  // Solidity: function prepareToSubmitURB() returns()
  4058  func (_RootChain *RootChainSession) PrepareToSubmitURB() (*types.Transaction, error) {
  4059  	return _RootChain.Contract.PrepareToSubmitURB(&_RootChain.TransactOpts)
  4060  }
  4061  
  4062  // PrepareToSubmitURB is a paid mutator transaction binding the contract method 0xe6925d08.
  4063  //
  4064  // Solidity: function prepareToSubmitURB() returns()
  4065  func (_RootChain *RootChainTransactorSession) PrepareToSubmitURB() (*types.Transaction, error) {
  4066  	return _RootChain.Contract.PrepareToSubmitURB(&_RootChain.TransactOpts)
  4067  }
  4068  
  4069  // RenounceMapper is a paid mutator transaction binding the contract method 0x3565fb0d.
  4070  //
  4071  // Solidity: function renounceMapper() returns()
  4072  func (_RootChain *RootChainTransactor) RenounceMapper(opts *bind.TransactOpts) (*types.Transaction, error) {
  4073  	return _RootChain.contract.Transact(opts, "renounceMapper")
  4074  }
  4075  
  4076  // RenounceMapper is a paid mutator transaction binding the contract method 0x3565fb0d.
  4077  //
  4078  // Solidity: function renounceMapper() returns()
  4079  func (_RootChain *RootChainSession) RenounceMapper() (*types.Transaction, error) {
  4080  	return _RootChain.Contract.RenounceMapper(&_RootChain.TransactOpts)
  4081  }
  4082  
  4083  // RenounceMapper is a paid mutator transaction binding the contract method 0x3565fb0d.
  4084  //
  4085  // Solidity: function renounceMapper() returns()
  4086  func (_RootChain *RootChainTransactorSession) RenounceMapper() (*types.Transaction, error) {
  4087  	return _RootChain.Contract.RenounceMapper(&_RootChain.TransactOpts)
  4088  }
  4089  
  4090  // RenounceSubmitter is a paid mutator transaction binding the contract method 0x5e0ca71b.
  4091  //
  4092  // Solidity: function renounceSubmitter() returns()
  4093  func (_RootChain *RootChainTransactor) RenounceSubmitter(opts *bind.TransactOpts) (*types.Transaction, error) {
  4094  	return _RootChain.contract.Transact(opts, "renounceSubmitter")
  4095  }
  4096  
  4097  // RenounceSubmitter is a paid mutator transaction binding the contract method 0x5e0ca71b.
  4098  //
  4099  // Solidity: function renounceSubmitter() returns()
  4100  func (_RootChain *RootChainSession) RenounceSubmitter() (*types.Transaction, error) {
  4101  	return _RootChain.Contract.RenounceSubmitter(&_RootChain.TransactOpts)
  4102  }
  4103  
  4104  // RenounceSubmitter is a paid mutator transaction binding the contract method 0x5e0ca71b.
  4105  //
  4106  // Solidity: function renounceSubmitter() returns()
  4107  func (_RootChain *RootChainTransactorSession) RenounceSubmitter() (*types.Transaction, error) {
  4108  	return _RootChain.Contract.RenounceSubmitter(&_RootChain.TransactOpts)
  4109  }
  4110  
  4111  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
  4112  //
  4113  // Solidity: function setSeigManager(address account) returns()
  4114  func (_RootChain *RootChainTransactor) SetSeigManager(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  4115  	return _RootChain.contract.Transact(opts, "setSeigManager", account)
  4116  }
  4117  
  4118  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
  4119  //
  4120  // Solidity: function setSeigManager(address account) returns()
  4121  func (_RootChain *RootChainSession) SetSeigManager(account common.Address) (*types.Transaction, error) {
  4122  	return _RootChain.Contract.SetSeigManager(&_RootChain.TransactOpts, account)
  4123  }
  4124  
  4125  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
  4126  //
  4127  // Solidity: function setSeigManager(address account) returns()
  4128  func (_RootChain *RootChainTransactorSession) SetSeigManager(account common.Address) (*types.Transaction, error) {
  4129  	return _RootChain.Contract.SetSeigManager(&_RootChain.TransactOpts, account)
  4130  }
  4131  
  4132  // StartEnter is a paid mutator transaction binding the contract method 0x2aa196c8.
  4133  //
  4134  // Solidity: function startEnter(address _to, bytes32 _trieKey, bytes _trieValue) returns(bool success)
  4135  func (_RootChain *RootChainTransactor) StartEnter(opts *bind.TransactOpts, _to common.Address, _trieKey [32]byte, _trieValue []byte) (*types.Transaction, error) {
  4136  	return _RootChain.contract.Transact(opts, "startEnter", _to, _trieKey, _trieValue)
  4137  }
  4138  
  4139  // StartEnter is a paid mutator transaction binding the contract method 0x2aa196c8.
  4140  //
  4141  // Solidity: function startEnter(address _to, bytes32 _trieKey, bytes _trieValue) returns(bool success)
  4142  func (_RootChain *RootChainSession) StartEnter(_to common.Address, _trieKey [32]byte, _trieValue []byte) (*types.Transaction, error) {
  4143  	return _RootChain.Contract.StartEnter(&_RootChain.TransactOpts, _to, _trieKey, _trieValue)
  4144  }
  4145  
  4146  // StartEnter is a paid mutator transaction binding the contract method 0x2aa196c8.
  4147  //
  4148  // Solidity: function startEnter(address _to, bytes32 _trieKey, bytes _trieValue) returns(bool success)
  4149  func (_RootChain *RootChainTransactorSession) StartEnter(_to common.Address, _trieKey [32]byte, _trieValue []byte) (*types.Transaction, error) {
  4150  	return _RootChain.Contract.StartEnter(&_RootChain.TransactOpts, _to, _trieKey, _trieValue)
  4151  }
  4152  
  4153  // StartExit is a paid mutator transaction binding the contract method 0xe7f96505.
  4154  //
  4155  // Solidity: function startExit(address _to, bytes32 _trieKey, bytes _trieValue) returns(bool success)
  4156  func (_RootChain *RootChainTransactor) StartExit(opts *bind.TransactOpts, _to common.Address, _trieKey [32]byte, _trieValue []byte) (*types.Transaction, error) {
  4157  	return _RootChain.contract.Transact(opts, "startExit", _to, _trieKey, _trieValue)
  4158  }
  4159  
  4160  // StartExit is a paid mutator transaction binding the contract method 0xe7f96505.
  4161  //
  4162  // Solidity: function startExit(address _to, bytes32 _trieKey, bytes _trieValue) returns(bool success)
  4163  func (_RootChain *RootChainSession) StartExit(_to common.Address, _trieKey [32]byte, _trieValue []byte) (*types.Transaction, error) {
  4164  	return _RootChain.Contract.StartExit(&_RootChain.TransactOpts, _to, _trieKey, _trieValue)
  4165  }
  4166  
  4167  // StartExit is a paid mutator transaction binding the contract method 0xe7f96505.
  4168  //
  4169  // Solidity: function startExit(address _to, bytes32 _trieKey, bytes _trieValue) returns(bool success)
  4170  func (_RootChain *RootChainTransactorSession) StartExit(_to common.Address, _trieKey [32]byte, _trieValue []byte) (*types.Transaction, error) {
  4171  	return _RootChain.Contract.StartExit(&_RootChain.TransactOpts, _to, _trieKey, _trieValue)
  4172  }
  4173  
  4174  // SubmitNRE is a paid mutator transaction binding the contract method 0x0eaf45a8.
  4175  //
  4176  // Solidity: function submitNRE(uint256 _pos1, uint256 _pos2, bytes32 _epochStateRoot, bytes32 _epochTransactionsRoot, bytes32 _epochReceiptsRoot) returns(bool success)
  4177  func (_RootChain *RootChainTransactor) SubmitNRE(opts *bind.TransactOpts, _pos1 *big.Int, _pos2 *big.Int, _epochStateRoot [32]byte, _epochTransactionsRoot [32]byte, _epochReceiptsRoot [32]byte) (*types.Transaction, error) {
  4178  	return _RootChain.contract.Transact(opts, "submitNRE", _pos1, _pos2, _epochStateRoot, _epochTransactionsRoot, _epochReceiptsRoot)
  4179  }
  4180  
  4181  // SubmitNRE is a paid mutator transaction binding the contract method 0x0eaf45a8.
  4182  //
  4183  // Solidity: function submitNRE(uint256 _pos1, uint256 _pos2, bytes32 _epochStateRoot, bytes32 _epochTransactionsRoot, bytes32 _epochReceiptsRoot) returns(bool success)
  4184  func (_RootChain *RootChainSession) SubmitNRE(_pos1 *big.Int, _pos2 *big.Int, _epochStateRoot [32]byte, _epochTransactionsRoot [32]byte, _epochReceiptsRoot [32]byte) (*types.Transaction, error) {
  4185  	return _RootChain.Contract.SubmitNRE(&_RootChain.TransactOpts, _pos1, _pos2, _epochStateRoot, _epochTransactionsRoot, _epochReceiptsRoot)
  4186  }
  4187  
  4188  // SubmitNRE is a paid mutator transaction binding the contract method 0x0eaf45a8.
  4189  //
  4190  // Solidity: function submitNRE(uint256 _pos1, uint256 _pos2, bytes32 _epochStateRoot, bytes32 _epochTransactionsRoot, bytes32 _epochReceiptsRoot) returns(bool success)
  4191  func (_RootChain *RootChainTransactorSession) SubmitNRE(_pos1 *big.Int, _pos2 *big.Int, _epochStateRoot [32]byte, _epochTransactionsRoot [32]byte, _epochReceiptsRoot [32]byte) (*types.Transaction, error) {
  4192  	return _RootChain.Contract.SubmitNRE(&_RootChain.TransactOpts, _pos1, _pos2, _epochStateRoot, _epochTransactionsRoot, _epochReceiptsRoot)
  4193  }
  4194  
  4195  // SubmitORB is a paid mutator transaction binding the contract method 0xa820c067.
  4196  //
  4197  // Solidity: function submitORB(uint256 _pos, bytes32 _statesRoot, bytes32 _transactionsRoot, bytes32 _receiptsRoot) returns(bool success)
  4198  func (_RootChain *RootChainTransactor) SubmitORB(opts *bind.TransactOpts, _pos *big.Int, _statesRoot [32]byte, _transactionsRoot [32]byte, _receiptsRoot [32]byte) (*types.Transaction, error) {
  4199  	return _RootChain.contract.Transact(opts, "submitORB", _pos, _statesRoot, _transactionsRoot, _receiptsRoot)
  4200  }
  4201  
  4202  // SubmitORB is a paid mutator transaction binding the contract method 0xa820c067.
  4203  //
  4204  // Solidity: function submitORB(uint256 _pos, bytes32 _statesRoot, bytes32 _transactionsRoot, bytes32 _receiptsRoot) returns(bool success)
  4205  func (_RootChain *RootChainSession) SubmitORB(_pos *big.Int, _statesRoot [32]byte, _transactionsRoot [32]byte, _receiptsRoot [32]byte) (*types.Transaction, error) {
  4206  	return _RootChain.Contract.SubmitORB(&_RootChain.TransactOpts, _pos, _statesRoot, _transactionsRoot, _receiptsRoot)
  4207  }
  4208  
  4209  // SubmitORB is a paid mutator transaction binding the contract method 0xa820c067.
  4210  //
  4211  // Solidity: function submitORB(uint256 _pos, bytes32 _statesRoot, bytes32 _transactionsRoot, bytes32 _receiptsRoot) returns(bool success)
  4212  func (_RootChain *RootChainTransactorSession) SubmitORB(_pos *big.Int, _statesRoot [32]byte, _transactionsRoot [32]byte, _receiptsRoot [32]byte) (*types.Transaction, error) {
  4213  	return _RootChain.Contract.SubmitORB(&_RootChain.TransactOpts, _pos, _statesRoot, _transactionsRoot, _receiptsRoot)
  4214  }
  4215  
  4216  // SubmitURB is a paid mutator transaction binding the contract method 0x6f3e4b90.
  4217  //
  4218  // Solidity: function submitURB(uint256 _pos, bytes32 _statesRoot, bytes32 _transactionsRoot, bytes32 _receiptsRoot) returns(bool success)
  4219  func (_RootChain *RootChainTransactor) SubmitURB(opts *bind.TransactOpts, _pos *big.Int, _statesRoot [32]byte, _transactionsRoot [32]byte, _receiptsRoot [32]byte) (*types.Transaction, error) {
  4220  	return _RootChain.contract.Transact(opts, "submitURB", _pos, _statesRoot, _transactionsRoot, _receiptsRoot)
  4221  }
  4222  
  4223  // SubmitURB is a paid mutator transaction binding the contract method 0x6f3e4b90.
  4224  //
  4225  // Solidity: function submitURB(uint256 _pos, bytes32 _statesRoot, bytes32 _transactionsRoot, bytes32 _receiptsRoot) returns(bool success)
  4226  func (_RootChain *RootChainSession) SubmitURB(_pos *big.Int, _statesRoot [32]byte, _transactionsRoot [32]byte, _receiptsRoot [32]byte) (*types.Transaction, error) {
  4227  	return _RootChain.Contract.SubmitURB(&_RootChain.TransactOpts, _pos, _statesRoot, _transactionsRoot, _receiptsRoot)
  4228  }
  4229  
  4230  // SubmitURB is a paid mutator transaction binding the contract method 0x6f3e4b90.
  4231  //
  4232  // Solidity: function submitURB(uint256 _pos, bytes32 _statesRoot, bytes32 _transactionsRoot, bytes32 _receiptsRoot) returns(bool success)
  4233  func (_RootChain *RootChainTransactorSession) SubmitURB(_pos *big.Int, _statesRoot [32]byte, _transactionsRoot [32]byte, _receiptsRoot [32]byte) (*types.Transaction, error) {
  4234  	return _RootChain.Contract.SubmitURB(&_RootChain.TransactOpts, _pos, _statesRoot, _transactionsRoot, _receiptsRoot)
  4235  }
  4236  
  4237  // RootChainBlockFinalizedIterator is returned from FilterBlockFinalized and is used to iterate over the raw logs and unpacked data for BlockFinalized events raised by the RootChain contract.
  4238  type RootChainBlockFinalizedIterator struct {
  4239  	Event *RootChainBlockFinalized // Event containing the contract specifics and raw log
  4240  
  4241  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4242  	event    string              // Event name to use for unpacking event data
  4243  
  4244  	logs chan types.Log        // Log channel receiving the found contract events
  4245  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4246  	done bool                  // Whether the subscription completed delivering logs
  4247  	fail error                 // Occurred error to stop iteration
  4248  }
  4249  
  4250  // Next advances the iterator to the subsequent event, returning whether there
  4251  // are any more events found. In case of a retrieval or parsing error, false is
  4252  // returned and Error() can be queried for the exact failure.
  4253  func (it *RootChainBlockFinalizedIterator) Next() bool {
  4254  	// If the iterator failed, stop iterating
  4255  	if it.fail != nil {
  4256  		return false
  4257  	}
  4258  	// If the iterator completed, deliver directly whatever's available
  4259  	if it.done {
  4260  		select {
  4261  		case log := <-it.logs:
  4262  			it.Event = new(RootChainBlockFinalized)
  4263  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4264  				it.fail = err
  4265  				return false
  4266  			}
  4267  			it.Event.Raw = log
  4268  			return true
  4269  
  4270  		default:
  4271  			return false
  4272  		}
  4273  	}
  4274  	// Iterator still in progress, wait for either a data or an error event
  4275  	select {
  4276  	case log := <-it.logs:
  4277  		it.Event = new(RootChainBlockFinalized)
  4278  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4279  			it.fail = err
  4280  			return false
  4281  		}
  4282  		it.Event.Raw = log
  4283  		return true
  4284  
  4285  	case err := <-it.sub.Err():
  4286  		it.done = true
  4287  		it.fail = err
  4288  		return it.Next()
  4289  	}
  4290  }
  4291  
  4292  // Error returns any retrieval or parsing error occurred during filtering.
  4293  func (it *RootChainBlockFinalizedIterator) Error() error {
  4294  	return it.fail
  4295  }
  4296  
  4297  // Close terminates the iteration process, releasing any pending underlying
  4298  // resources.
  4299  func (it *RootChainBlockFinalizedIterator) Close() error {
  4300  	it.sub.Unsubscribe()
  4301  	return nil
  4302  }
  4303  
  4304  // RootChainBlockFinalized represents a BlockFinalized event raised by the RootChain contract.
  4305  type RootChainBlockFinalized struct {
  4306  	ForkNumber  *big.Int
  4307  	BlockNumber *big.Int
  4308  	Raw         types.Log // Blockchain specific contextual infos
  4309  }
  4310  
  4311  // FilterBlockFinalized is a free log retrieval operation binding the contract event 0xfb96205e4b3633fd57aa805b26b51ecf528714a10241a4af015929dce86768d9.
  4312  //
  4313  // Solidity: event BlockFinalized(uint256 forkNumber, uint256 blockNumber)
  4314  func (_RootChain *RootChainFilterer) FilterBlockFinalized(opts *bind.FilterOpts) (*RootChainBlockFinalizedIterator, error) {
  4315  
  4316  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "BlockFinalized")
  4317  	if err != nil {
  4318  		return nil, err
  4319  	}
  4320  	return &RootChainBlockFinalizedIterator{contract: _RootChain.contract, event: "BlockFinalized", logs: logs, sub: sub}, nil
  4321  }
  4322  
  4323  // WatchBlockFinalized is a free log subscription operation binding the contract event 0xfb96205e4b3633fd57aa805b26b51ecf528714a10241a4af015929dce86768d9.
  4324  //
  4325  // Solidity: event BlockFinalized(uint256 forkNumber, uint256 blockNumber)
  4326  func (_RootChain *RootChainFilterer) WatchBlockFinalized(opts *bind.WatchOpts, sink chan<- *RootChainBlockFinalized) (event.Subscription, error) {
  4327  
  4328  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "BlockFinalized")
  4329  	if err != nil {
  4330  		return nil, err
  4331  	}
  4332  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4333  		defer sub.Unsubscribe()
  4334  		for {
  4335  			select {
  4336  			case log := <-logs:
  4337  				// New log arrived, parse the event and forward to the user
  4338  				event := new(RootChainBlockFinalized)
  4339  				if err := _RootChain.contract.UnpackLog(event, "BlockFinalized", log); err != nil {
  4340  					return err
  4341  				}
  4342  				event.Raw = log
  4343  
  4344  				select {
  4345  				case sink <- event:
  4346  				case err := <-sub.Err():
  4347  					return err
  4348  				case <-quit:
  4349  					return nil
  4350  				}
  4351  			case err := <-sub.Err():
  4352  				return err
  4353  			case <-quit:
  4354  				return nil
  4355  			}
  4356  		}
  4357  	}), nil
  4358  }
  4359  
  4360  // ParseBlockFinalized is a log parse operation binding the contract event 0xfb96205e4b3633fd57aa805b26b51ecf528714a10241a4af015929dce86768d9.
  4361  //
  4362  // Solidity: event BlockFinalized(uint256 forkNumber, uint256 blockNumber)
  4363  func (_RootChain *RootChainFilterer) ParseBlockFinalized(log types.Log) (*RootChainBlockFinalized, error) {
  4364  	event := new(RootChainBlockFinalized)
  4365  	if err := _RootChain.contract.UnpackLog(event, "BlockFinalized", log); err != nil {
  4366  		return nil, err
  4367  	}
  4368  	return event, nil
  4369  }
  4370  
  4371  // RootChainBlockSubmittedIterator is returned from FilterBlockSubmitted and is used to iterate over the raw logs and unpacked data for BlockSubmitted events raised by the RootChain contract.
  4372  type RootChainBlockSubmittedIterator struct {
  4373  	Event *RootChainBlockSubmitted // Event containing the contract specifics and raw log
  4374  
  4375  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4376  	event    string              // Event name to use for unpacking event data
  4377  
  4378  	logs chan types.Log        // Log channel receiving the found contract events
  4379  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4380  	done bool                  // Whether the subscription completed delivering logs
  4381  	fail error                 // Occurred error to stop iteration
  4382  }
  4383  
  4384  // Next advances the iterator to the subsequent event, returning whether there
  4385  // are any more events found. In case of a retrieval or parsing error, false is
  4386  // returned and Error() can be queried for the exact failure.
  4387  func (it *RootChainBlockSubmittedIterator) Next() bool {
  4388  	// If the iterator failed, stop iterating
  4389  	if it.fail != nil {
  4390  		return false
  4391  	}
  4392  	// If the iterator completed, deliver directly whatever's available
  4393  	if it.done {
  4394  		select {
  4395  		case log := <-it.logs:
  4396  			it.Event = new(RootChainBlockSubmitted)
  4397  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4398  				it.fail = err
  4399  				return false
  4400  			}
  4401  			it.Event.Raw = log
  4402  			return true
  4403  
  4404  		default:
  4405  			return false
  4406  		}
  4407  	}
  4408  	// Iterator still in progress, wait for either a data or an error event
  4409  	select {
  4410  	case log := <-it.logs:
  4411  		it.Event = new(RootChainBlockSubmitted)
  4412  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4413  			it.fail = err
  4414  			return false
  4415  		}
  4416  		it.Event.Raw = log
  4417  		return true
  4418  
  4419  	case err := <-it.sub.Err():
  4420  		it.done = true
  4421  		it.fail = err
  4422  		return it.Next()
  4423  	}
  4424  }
  4425  
  4426  // Error returns any retrieval or parsing error occurred during filtering.
  4427  func (it *RootChainBlockSubmittedIterator) Error() error {
  4428  	return it.fail
  4429  }
  4430  
  4431  // Close terminates the iteration process, releasing any pending underlying
  4432  // resources.
  4433  func (it *RootChainBlockSubmittedIterator) Close() error {
  4434  	it.sub.Unsubscribe()
  4435  	return nil
  4436  }
  4437  
  4438  // RootChainBlockSubmitted represents a BlockSubmitted event raised by the RootChain contract.
  4439  type RootChainBlockSubmitted struct {
  4440  	Fork          *big.Int
  4441  	EpochNumber   *big.Int
  4442  	BlockNumber   *big.Int
  4443  	IsRequest     bool
  4444  	UserActivated bool
  4445  	Raw           types.Log // Blockchain specific contextual infos
  4446  }
  4447  
  4448  // FilterBlockSubmitted is a free log retrieval operation binding the contract event 0x3d4a04291c66b06f39a4ecb817875b12b5485a05ec563133a56a905305c48e55.
  4449  //
  4450  // Solidity: event BlockSubmitted(uint256 fork, uint256 epochNumber, uint256 blockNumber, bool isRequest, bool userActivated)
  4451  func (_RootChain *RootChainFilterer) FilterBlockSubmitted(opts *bind.FilterOpts) (*RootChainBlockSubmittedIterator, error) {
  4452  
  4453  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "BlockSubmitted")
  4454  	if err != nil {
  4455  		return nil, err
  4456  	}
  4457  	return &RootChainBlockSubmittedIterator{contract: _RootChain.contract, event: "BlockSubmitted", logs: logs, sub: sub}, nil
  4458  }
  4459  
  4460  // WatchBlockSubmitted is a free log subscription operation binding the contract event 0x3d4a04291c66b06f39a4ecb817875b12b5485a05ec563133a56a905305c48e55.
  4461  //
  4462  // Solidity: event BlockSubmitted(uint256 fork, uint256 epochNumber, uint256 blockNumber, bool isRequest, bool userActivated)
  4463  func (_RootChain *RootChainFilterer) WatchBlockSubmitted(opts *bind.WatchOpts, sink chan<- *RootChainBlockSubmitted) (event.Subscription, error) {
  4464  
  4465  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "BlockSubmitted")
  4466  	if err != nil {
  4467  		return nil, err
  4468  	}
  4469  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4470  		defer sub.Unsubscribe()
  4471  		for {
  4472  			select {
  4473  			case log := <-logs:
  4474  				// New log arrived, parse the event and forward to the user
  4475  				event := new(RootChainBlockSubmitted)
  4476  				if err := _RootChain.contract.UnpackLog(event, "BlockSubmitted", log); err != nil {
  4477  					return err
  4478  				}
  4479  				event.Raw = log
  4480  
  4481  				select {
  4482  				case sink <- event:
  4483  				case err := <-sub.Err():
  4484  					return err
  4485  				case <-quit:
  4486  					return nil
  4487  				}
  4488  			case err := <-sub.Err():
  4489  				return err
  4490  			case <-quit:
  4491  				return nil
  4492  			}
  4493  		}
  4494  	}), nil
  4495  }
  4496  
  4497  // ParseBlockSubmitted is a log parse operation binding the contract event 0x3d4a04291c66b06f39a4ecb817875b12b5485a05ec563133a56a905305c48e55.
  4498  //
  4499  // Solidity: event BlockSubmitted(uint256 fork, uint256 epochNumber, uint256 blockNumber, bool isRequest, bool userActivated)
  4500  func (_RootChain *RootChainFilterer) ParseBlockSubmitted(log types.Log) (*RootChainBlockSubmitted, error) {
  4501  	event := new(RootChainBlockSubmitted)
  4502  	if err := _RootChain.contract.UnpackLog(event, "BlockSubmitted", log); err != nil {
  4503  		return nil, err
  4504  	}
  4505  	return event, nil
  4506  }
  4507  
  4508  // RootChainERUCreatedIterator is returned from FilterERUCreated and is used to iterate over the raw logs and unpacked data for ERUCreated events raised by the RootChain contract.
  4509  type RootChainERUCreatedIterator struct {
  4510  	Event *RootChainERUCreated // Event containing the contract specifics and raw log
  4511  
  4512  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4513  	event    string              // Event name to use for unpacking event data
  4514  
  4515  	logs chan types.Log        // Log channel receiving the found contract events
  4516  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4517  	done bool                  // Whether the subscription completed delivering logs
  4518  	fail error                 // Occurred error to stop iteration
  4519  }
  4520  
  4521  // Next advances the iterator to the subsequent event, returning whether there
  4522  // are any more events found. In case of a retrieval or parsing error, false is
  4523  // returned and Error() can be queried for the exact failure.
  4524  func (it *RootChainERUCreatedIterator) Next() bool {
  4525  	// If the iterator failed, stop iterating
  4526  	if it.fail != nil {
  4527  		return false
  4528  	}
  4529  	// If the iterator completed, deliver directly whatever's available
  4530  	if it.done {
  4531  		select {
  4532  		case log := <-it.logs:
  4533  			it.Event = new(RootChainERUCreated)
  4534  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4535  				it.fail = err
  4536  				return false
  4537  			}
  4538  			it.Event.Raw = log
  4539  			return true
  4540  
  4541  		default:
  4542  			return false
  4543  		}
  4544  	}
  4545  	// Iterator still in progress, wait for either a data or an error event
  4546  	select {
  4547  	case log := <-it.logs:
  4548  		it.Event = new(RootChainERUCreated)
  4549  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4550  			it.fail = err
  4551  			return false
  4552  		}
  4553  		it.Event.Raw = log
  4554  		return true
  4555  
  4556  	case err := <-it.sub.Err():
  4557  		it.done = true
  4558  		it.fail = err
  4559  		return it.Next()
  4560  	}
  4561  }
  4562  
  4563  // Error returns any retrieval or parsing error occurred during filtering.
  4564  func (it *RootChainERUCreatedIterator) Error() error {
  4565  	return it.fail
  4566  }
  4567  
  4568  // Close terminates the iteration process, releasing any pending underlying
  4569  // resources.
  4570  func (it *RootChainERUCreatedIterator) Close() error {
  4571  	it.sub.Unsubscribe()
  4572  	return nil
  4573  }
  4574  
  4575  // RootChainERUCreated represents a ERUCreated event raised by the RootChain contract.
  4576  type RootChainERUCreated struct {
  4577  	RequestId *big.Int
  4578  	Requestor common.Address
  4579  	To        common.Address
  4580  	TrieKey   []byte
  4581  	TrieValue [32]byte
  4582  	Raw       types.Log // Blockchain specific contextual infos
  4583  }
  4584  
  4585  // FilterERUCreated is a free log retrieval operation binding the contract event 0xfcbdc2083dadd644b854d91b49aef8db06b8f5a3d5c1192de38ca0ba271d5a0d.
  4586  //
  4587  // Solidity: event ERUCreated(uint256 requestId, address requestor, address to, bytes trieKey, bytes32 trieValue)
  4588  func (_RootChain *RootChainFilterer) FilterERUCreated(opts *bind.FilterOpts) (*RootChainERUCreatedIterator, error) {
  4589  
  4590  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "ERUCreated")
  4591  	if err != nil {
  4592  		return nil, err
  4593  	}
  4594  	return &RootChainERUCreatedIterator{contract: _RootChain.contract, event: "ERUCreated", logs: logs, sub: sub}, nil
  4595  }
  4596  
  4597  // WatchERUCreated is a free log subscription operation binding the contract event 0xfcbdc2083dadd644b854d91b49aef8db06b8f5a3d5c1192de38ca0ba271d5a0d.
  4598  //
  4599  // Solidity: event ERUCreated(uint256 requestId, address requestor, address to, bytes trieKey, bytes32 trieValue)
  4600  func (_RootChain *RootChainFilterer) WatchERUCreated(opts *bind.WatchOpts, sink chan<- *RootChainERUCreated) (event.Subscription, error) {
  4601  
  4602  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "ERUCreated")
  4603  	if err != nil {
  4604  		return nil, err
  4605  	}
  4606  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4607  		defer sub.Unsubscribe()
  4608  		for {
  4609  			select {
  4610  			case log := <-logs:
  4611  				// New log arrived, parse the event and forward to the user
  4612  				event := new(RootChainERUCreated)
  4613  				if err := _RootChain.contract.UnpackLog(event, "ERUCreated", log); err != nil {
  4614  					return err
  4615  				}
  4616  				event.Raw = log
  4617  
  4618  				select {
  4619  				case sink <- event:
  4620  				case err := <-sub.Err():
  4621  					return err
  4622  				case <-quit:
  4623  					return nil
  4624  				}
  4625  			case err := <-sub.Err():
  4626  				return err
  4627  			case <-quit:
  4628  				return nil
  4629  			}
  4630  		}
  4631  	}), nil
  4632  }
  4633  
  4634  // ParseERUCreated is a log parse operation binding the contract event 0xfcbdc2083dadd644b854d91b49aef8db06b8f5a3d5c1192de38ca0ba271d5a0d.
  4635  //
  4636  // Solidity: event ERUCreated(uint256 requestId, address requestor, address to, bytes trieKey, bytes32 trieValue)
  4637  func (_RootChain *RootChainFilterer) ParseERUCreated(log types.Log) (*RootChainERUCreated, error) {
  4638  	event := new(RootChainERUCreated)
  4639  	if err := _RootChain.contract.UnpackLog(event, "ERUCreated", log); err != nil {
  4640  		return nil, err
  4641  	}
  4642  	return event, nil
  4643  }
  4644  
  4645  // RootChainEpochFilledIterator is returned from FilterEpochFilled and is used to iterate over the raw logs and unpacked data for EpochFilled events raised by the RootChain contract.
  4646  type RootChainEpochFilledIterator struct {
  4647  	Event *RootChainEpochFilled // Event containing the contract specifics and raw log
  4648  
  4649  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4650  	event    string              // Event name to use for unpacking event data
  4651  
  4652  	logs chan types.Log        // Log channel receiving the found contract events
  4653  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4654  	done bool                  // Whether the subscription completed delivering logs
  4655  	fail error                 // Occurred error to stop iteration
  4656  }
  4657  
  4658  // Next advances the iterator to the subsequent event, returning whether there
  4659  // are any more events found. In case of a retrieval or parsing error, false is
  4660  // returned and Error() can be queried for the exact failure.
  4661  func (it *RootChainEpochFilledIterator) Next() bool {
  4662  	// If the iterator failed, stop iterating
  4663  	if it.fail != nil {
  4664  		return false
  4665  	}
  4666  	// If the iterator completed, deliver directly whatever's available
  4667  	if it.done {
  4668  		select {
  4669  		case log := <-it.logs:
  4670  			it.Event = new(RootChainEpochFilled)
  4671  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4672  				it.fail = err
  4673  				return false
  4674  			}
  4675  			it.Event.Raw = log
  4676  			return true
  4677  
  4678  		default:
  4679  			return false
  4680  		}
  4681  	}
  4682  	// Iterator still in progress, wait for either a data or an error event
  4683  	select {
  4684  	case log := <-it.logs:
  4685  		it.Event = new(RootChainEpochFilled)
  4686  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4687  			it.fail = err
  4688  			return false
  4689  		}
  4690  		it.Event.Raw = log
  4691  		return true
  4692  
  4693  	case err := <-it.sub.Err():
  4694  		it.done = true
  4695  		it.fail = err
  4696  		return it.Next()
  4697  	}
  4698  }
  4699  
  4700  // Error returns any retrieval or parsing error occurred during filtering.
  4701  func (it *RootChainEpochFilledIterator) Error() error {
  4702  	return it.fail
  4703  }
  4704  
  4705  // Close terminates the iteration process, releasing any pending underlying
  4706  // resources.
  4707  func (it *RootChainEpochFilledIterator) Close() error {
  4708  	it.sub.Unsubscribe()
  4709  	return nil
  4710  }
  4711  
  4712  // RootChainEpochFilled represents a EpochFilled event raised by the RootChain contract.
  4713  type RootChainEpochFilled struct {
  4714  	ForkNumber  *big.Int
  4715  	EpochNumber *big.Int
  4716  	Raw         types.Log // Blockchain specific contextual infos
  4717  }
  4718  
  4719  // FilterEpochFilled is a free log retrieval operation binding the contract event 0x2fdeb407bf5c2b621f04b5c784822dae806c45b49a68aba413cc270128c96816.
  4720  //
  4721  // Solidity: event EpochFilled(uint256 forkNumber, uint256 epochNumber)
  4722  func (_RootChain *RootChainFilterer) FilterEpochFilled(opts *bind.FilterOpts) (*RootChainEpochFilledIterator, error) {
  4723  
  4724  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "EpochFilled")
  4725  	if err != nil {
  4726  		return nil, err
  4727  	}
  4728  	return &RootChainEpochFilledIterator{contract: _RootChain.contract, event: "EpochFilled", logs: logs, sub: sub}, nil
  4729  }
  4730  
  4731  // WatchEpochFilled is a free log subscription operation binding the contract event 0x2fdeb407bf5c2b621f04b5c784822dae806c45b49a68aba413cc270128c96816.
  4732  //
  4733  // Solidity: event EpochFilled(uint256 forkNumber, uint256 epochNumber)
  4734  func (_RootChain *RootChainFilterer) WatchEpochFilled(opts *bind.WatchOpts, sink chan<- *RootChainEpochFilled) (event.Subscription, error) {
  4735  
  4736  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "EpochFilled")
  4737  	if err != nil {
  4738  		return nil, err
  4739  	}
  4740  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4741  		defer sub.Unsubscribe()
  4742  		for {
  4743  			select {
  4744  			case log := <-logs:
  4745  				// New log arrived, parse the event and forward to the user
  4746  				event := new(RootChainEpochFilled)
  4747  				if err := _RootChain.contract.UnpackLog(event, "EpochFilled", log); err != nil {
  4748  					return err
  4749  				}
  4750  				event.Raw = log
  4751  
  4752  				select {
  4753  				case sink <- event:
  4754  				case err := <-sub.Err():
  4755  					return err
  4756  				case <-quit:
  4757  					return nil
  4758  				}
  4759  			case err := <-sub.Err():
  4760  				return err
  4761  			case <-quit:
  4762  				return nil
  4763  			}
  4764  		}
  4765  	}), nil
  4766  }
  4767  
  4768  // ParseEpochFilled is a log parse operation binding the contract event 0x2fdeb407bf5c2b621f04b5c784822dae806c45b49a68aba413cc270128c96816.
  4769  //
  4770  // Solidity: event EpochFilled(uint256 forkNumber, uint256 epochNumber)
  4771  func (_RootChain *RootChainFilterer) ParseEpochFilled(log types.Log) (*RootChainEpochFilled, error) {
  4772  	event := new(RootChainEpochFilled)
  4773  	if err := _RootChain.contract.UnpackLog(event, "EpochFilled", log); err != nil {
  4774  		return nil, err
  4775  	}
  4776  	return event, nil
  4777  }
  4778  
  4779  // RootChainEpochFillingIterator is returned from FilterEpochFilling and is used to iterate over the raw logs and unpacked data for EpochFilling events raised by the RootChain contract.
  4780  type RootChainEpochFillingIterator struct {
  4781  	Event *RootChainEpochFilling // Event containing the contract specifics and raw log
  4782  
  4783  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4784  	event    string              // Event name to use for unpacking event data
  4785  
  4786  	logs chan types.Log        // Log channel receiving the found contract events
  4787  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4788  	done bool                  // Whether the subscription completed delivering logs
  4789  	fail error                 // Occurred error to stop iteration
  4790  }
  4791  
  4792  // Next advances the iterator to the subsequent event, returning whether there
  4793  // are any more events found. In case of a retrieval or parsing error, false is
  4794  // returned and Error() can be queried for the exact failure.
  4795  func (it *RootChainEpochFillingIterator) Next() bool {
  4796  	// If the iterator failed, stop iterating
  4797  	if it.fail != nil {
  4798  		return false
  4799  	}
  4800  	// If the iterator completed, deliver directly whatever's available
  4801  	if it.done {
  4802  		select {
  4803  		case log := <-it.logs:
  4804  			it.Event = new(RootChainEpochFilling)
  4805  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4806  				it.fail = err
  4807  				return false
  4808  			}
  4809  			it.Event.Raw = log
  4810  			return true
  4811  
  4812  		default:
  4813  			return false
  4814  		}
  4815  	}
  4816  	// Iterator still in progress, wait for either a data or an error event
  4817  	select {
  4818  	case log := <-it.logs:
  4819  		it.Event = new(RootChainEpochFilling)
  4820  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4821  			it.fail = err
  4822  			return false
  4823  		}
  4824  		it.Event.Raw = log
  4825  		return true
  4826  
  4827  	case err := <-it.sub.Err():
  4828  		it.done = true
  4829  		it.fail = err
  4830  		return it.Next()
  4831  	}
  4832  }
  4833  
  4834  // Error returns any retrieval or parsing error occurred during filtering.
  4835  func (it *RootChainEpochFillingIterator) Error() error {
  4836  	return it.fail
  4837  }
  4838  
  4839  // Close terminates the iteration process, releasing any pending underlying
  4840  // resources.
  4841  func (it *RootChainEpochFillingIterator) Close() error {
  4842  	it.sub.Unsubscribe()
  4843  	return nil
  4844  }
  4845  
  4846  // RootChainEpochFilling represents a EpochFilling event raised by the RootChain contract.
  4847  type RootChainEpochFilling struct {
  4848  	ForkNumber  *big.Int
  4849  	EpochNumber *big.Int
  4850  	Raw         types.Log // Blockchain specific contextual infos
  4851  }
  4852  
  4853  // FilterEpochFilling is a free log retrieval operation binding the contract event 0x27b09f0953d27bbff306fe25b2987ac5a813248ac30cb2bbd5daf95e7b0e6dc0.
  4854  //
  4855  // Solidity: event EpochFilling(uint256 forkNumber, uint256 epochNumber)
  4856  func (_RootChain *RootChainFilterer) FilterEpochFilling(opts *bind.FilterOpts) (*RootChainEpochFillingIterator, error) {
  4857  
  4858  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "EpochFilling")
  4859  	if err != nil {
  4860  		return nil, err
  4861  	}
  4862  	return &RootChainEpochFillingIterator{contract: _RootChain.contract, event: "EpochFilling", logs: logs, sub: sub}, nil
  4863  }
  4864  
  4865  // WatchEpochFilling is a free log subscription operation binding the contract event 0x27b09f0953d27bbff306fe25b2987ac5a813248ac30cb2bbd5daf95e7b0e6dc0.
  4866  //
  4867  // Solidity: event EpochFilling(uint256 forkNumber, uint256 epochNumber)
  4868  func (_RootChain *RootChainFilterer) WatchEpochFilling(opts *bind.WatchOpts, sink chan<- *RootChainEpochFilling) (event.Subscription, error) {
  4869  
  4870  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "EpochFilling")
  4871  	if err != nil {
  4872  		return nil, err
  4873  	}
  4874  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4875  		defer sub.Unsubscribe()
  4876  		for {
  4877  			select {
  4878  			case log := <-logs:
  4879  				// New log arrived, parse the event and forward to the user
  4880  				event := new(RootChainEpochFilling)
  4881  				if err := _RootChain.contract.UnpackLog(event, "EpochFilling", log); err != nil {
  4882  					return err
  4883  				}
  4884  				event.Raw = log
  4885  
  4886  				select {
  4887  				case sink <- event:
  4888  				case err := <-sub.Err():
  4889  					return err
  4890  				case <-quit:
  4891  					return nil
  4892  				}
  4893  			case err := <-sub.Err():
  4894  				return err
  4895  			case <-quit:
  4896  				return nil
  4897  			}
  4898  		}
  4899  	}), nil
  4900  }
  4901  
  4902  // ParseEpochFilling is a log parse operation binding the contract event 0x27b09f0953d27bbff306fe25b2987ac5a813248ac30cb2bbd5daf95e7b0e6dc0.
  4903  //
  4904  // Solidity: event EpochFilling(uint256 forkNumber, uint256 epochNumber)
  4905  func (_RootChain *RootChainFilterer) ParseEpochFilling(log types.Log) (*RootChainEpochFilling, error) {
  4906  	event := new(RootChainEpochFilling)
  4907  	if err := _RootChain.contract.UnpackLog(event, "EpochFilling", log); err != nil {
  4908  		return nil, err
  4909  	}
  4910  	return event, nil
  4911  }
  4912  
  4913  // RootChainEpochFinalizedIterator is returned from FilterEpochFinalized and is used to iterate over the raw logs and unpacked data for EpochFinalized events raised by the RootChain contract.
  4914  type RootChainEpochFinalizedIterator struct {
  4915  	Event *RootChainEpochFinalized // Event containing the contract specifics and raw log
  4916  
  4917  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4918  	event    string              // Event name to use for unpacking event data
  4919  
  4920  	logs chan types.Log        // Log channel receiving the found contract events
  4921  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4922  	done bool                  // Whether the subscription completed delivering logs
  4923  	fail error                 // Occurred error to stop iteration
  4924  }
  4925  
  4926  // Next advances the iterator to the subsequent event, returning whether there
  4927  // are any more events found. In case of a retrieval or parsing error, false is
  4928  // returned and Error() can be queried for the exact failure.
  4929  func (it *RootChainEpochFinalizedIterator) Next() bool {
  4930  	// If the iterator failed, stop iterating
  4931  	if it.fail != nil {
  4932  		return false
  4933  	}
  4934  	// If the iterator completed, deliver directly whatever's available
  4935  	if it.done {
  4936  		select {
  4937  		case log := <-it.logs:
  4938  			it.Event = new(RootChainEpochFinalized)
  4939  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4940  				it.fail = err
  4941  				return false
  4942  			}
  4943  			it.Event.Raw = log
  4944  			return true
  4945  
  4946  		default:
  4947  			return false
  4948  		}
  4949  	}
  4950  	// Iterator still in progress, wait for either a data or an error event
  4951  	select {
  4952  	case log := <-it.logs:
  4953  		it.Event = new(RootChainEpochFinalized)
  4954  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4955  			it.fail = err
  4956  			return false
  4957  		}
  4958  		it.Event.Raw = log
  4959  		return true
  4960  
  4961  	case err := <-it.sub.Err():
  4962  		it.done = true
  4963  		it.fail = err
  4964  		return it.Next()
  4965  	}
  4966  }
  4967  
  4968  // Error returns any retrieval or parsing error occurred during filtering.
  4969  func (it *RootChainEpochFinalizedIterator) Error() error {
  4970  	return it.fail
  4971  }
  4972  
  4973  // Close terminates the iteration process, releasing any pending underlying
  4974  // resources.
  4975  func (it *RootChainEpochFinalizedIterator) Close() error {
  4976  	it.sub.Unsubscribe()
  4977  	return nil
  4978  }
  4979  
  4980  // RootChainEpochFinalized represents a EpochFinalized event raised by the RootChain contract.
  4981  type RootChainEpochFinalized struct {
  4982  	ForkNumber       *big.Int
  4983  	EpochNumber      *big.Int
  4984  	StartBlockNumber *big.Int
  4985  	EndBlockNumber   *big.Int
  4986  	Raw              types.Log // Blockchain specific contextual infos
  4987  }
  4988  
  4989  // FilterEpochFinalized is a free log retrieval operation binding the contract event 0x70801d4d63b3da6c19ba7349911f45bed5a99ccdfb51b8138c105872529bebd5.
  4990  //
  4991  // Solidity: event EpochFinalized(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber)
  4992  func (_RootChain *RootChainFilterer) FilterEpochFinalized(opts *bind.FilterOpts) (*RootChainEpochFinalizedIterator, error) {
  4993  
  4994  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "EpochFinalized")
  4995  	if err != nil {
  4996  		return nil, err
  4997  	}
  4998  	return &RootChainEpochFinalizedIterator{contract: _RootChain.contract, event: "EpochFinalized", logs: logs, sub: sub}, nil
  4999  }
  5000  
  5001  // WatchEpochFinalized is a free log subscription operation binding the contract event 0x70801d4d63b3da6c19ba7349911f45bed5a99ccdfb51b8138c105872529bebd5.
  5002  //
  5003  // Solidity: event EpochFinalized(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber)
  5004  func (_RootChain *RootChainFilterer) WatchEpochFinalized(opts *bind.WatchOpts, sink chan<- *RootChainEpochFinalized) (event.Subscription, error) {
  5005  
  5006  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "EpochFinalized")
  5007  	if err != nil {
  5008  		return nil, err
  5009  	}
  5010  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5011  		defer sub.Unsubscribe()
  5012  		for {
  5013  			select {
  5014  			case log := <-logs:
  5015  				// New log arrived, parse the event and forward to the user
  5016  				event := new(RootChainEpochFinalized)
  5017  				if err := _RootChain.contract.UnpackLog(event, "EpochFinalized", log); err != nil {
  5018  					return err
  5019  				}
  5020  				event.Raw = log
  5021  
  5022  				select {
  5023  				case sink <- event:
  5024  				case err := <-sub.Err():
  5025  					return err
  5026  				case <-quit:
  5027  					return nil
  5028  				}
  5029  			case err := <-sub.Err():
  5030  				return err
  5031  			case <-quit:
  5032  				return nil
  5033  			}
  5034  		}
  5035  	}), nil
  5036  }
  5037  
  5038  // ParseEpochFinalized is a log parse operation binding the contract event 0x70801d4d63b3da6c19ba7349911f45bed5a99ccdfb51b8138c105872529bebd5.
  5039  //
  5040  // Solidity: event EpochFinalized(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber)
  5041  func (_RootChain *RootChainFilterer) ParseEpochFinalized(log types.Log) (*RootChainEpochFinalized, error) {
  5042  	event := new(RootChainEpochFinalized)
  5043  	if err := _RootChain.contract.UnpackLog(event, "EpochFinalized", log); err != nil {
  5044  		return nil, err
  5045  	}
  5046  	return event, nil
  5047  }
  5048  
  5049  // RootChainEpochPreparedIterator is returned from FilterEpochPrepared and is used to iterate over the raw logs and unpacked data for EpochPrepared events raised by the RootChain contract.
  5050  type RootChainEpochPreparedIterator struct {
  5051  	Event *RootChainEpochPrepared // Event containing the contract specifics and raw log
  5052  
  5053  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5054  	event    string              // Event name to use for unpacking event data
  5055  
  5056  	logs chan types.Log        // Log channel receiving the found contract events
  5057  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5058  	done bool                  // Whether the subscription completed delivering logs
  5059  	fail error                 // Occurred error to stop iteration
  5060  }
  5061  
  5062  // Next advances the iterator to the subsequent event, returning whether there
  5063  // are any more events found. In case of a retrieval or parsing error, false is
  5064  // returned and Error() can be queried for the exact failure.
  5065  func (it *RootChainEpochPreparedIterator) Next() bool {
  5066  	// If the iterator failed, stop iterating
  5067  	if it.fail != nil {
  5068  		return false
  5069  	}
  5070  	// If the iterator completed, deliver directly whatever's available
  5071  	if it.done {
  5072  		select {
  5073  		case log := <-it.logs:
  5074  			it.Event = new(RootChainEpochPrepared)
  5075  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5076  				it.fail = err
  5077  				return false
  5078  			}
  5079  			it.Event.Raw = log
  5080  			return true
  5081  
  5082  		default:
  5083  			return false
  5084  		}
  5085  	}
  5086  	// Iterator still in progress, wait for either a data or an error event
  5087  	select {
  5088  	case log := <-it.logs:
  5089  		it.Event = new(RootChainEpochPrepared)
  5090  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5091  			it.fail = err
  5092  			return false
  5093  		}
  5094  		it.Event.Raw = log
  5095  		return true
  5096  
  5097  	case err := <-it.sub.Err():
  5098  		it.done = true
  5099  		it.fail = err
  5100  		return it.Next()
  5101  	}
  5102  }
  5103  
  5104  // Error returns any retrieval or parsing error occurred during filtering.
  5105  func (it *RootChainEpochPreparedIterator) Error() error {
  5106  	return it.fail
  5107  }
  5108  
  5109  // Close terminates the iteration process, releasing any pending underlying
  5110  // resources.
  5111  func (it *RootChainEpochPreparedIterator) Close() error {
  5112  	it.sub.Unsubscribe()
  5113  	return nil
  5114  }
  5115  
  5116  // RootChainEpochPrepared represents a EpochPrepared event raised by the RootChain contract.
  5117  type RootChainEpochPrepared struct {
  5118  	ForkNumber       *big.Int
  5119  	EpochNumber      *big.Int
  5120  	StartBlockNumber *big.Int
  5121  	EndBlockNumber   *big.Int
  5122  	RequestStart     *big.Int
  5123  	RequestEnd       *big.Int
  5124  	EpochIsEmpty     bool
  5125  	IsRequest        bool
  5126  	UserActivated    bool
  5127  	Rebase           bool
  5128  	Raw              types.Log // Blockchain specific contextual infos
  5129  }
  5130  
  5131  // FilterEpochPrepared is a free log retrieval operation binding the contract event 0x1a69c0760aa329b76f72579129869013ebd3d41594db019c0e997b939fcb32e3.
  5132  //
  5133  // Solidity: event EpochPrepared(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated, bool rebase)
  5134  func (_RootChain *RootChainFilterer) FilterEpochPrepared(opts *bind.FilterOpts) (*RootChainEpochPreparedIterator, error) {
  5135  
  5136  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "EpochPrepared")
  5137  	if err != nil {
  5138  		return nil, err
  5139  	}
  5140  	return &RootChainEpochPreparedIterator{contract: _RootChain.contract, event: "EpochPrepared", logs: logs, sub: sub}, nil
  5141  }
  5142  
  5143  // WatchEpochPrepared is a free log subscription operation binding the contract event 0x1a69c0760aa329b76f72579129869013ebd3d41594db019c0e997b939fcb32e3.
  5144  //
  5145  // Solidity: event EpochPrepared(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated, bool rebase)
  5146  func (_RootChain *RootChainFilterer) WatchEpochPrepared(opts *bind.WatchOpts, sink chan<- *RootChainEpochPrepared) (event.Subscription, error) {
  5147  
  5148  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "EpochPrepared")
  5149  	if err != nil {
  5150  		return nil, err
  5151  	}
  5152  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5153  		defer sub.Unsubscribe()
  5154  		for {
  5155  			select {
  5156  			case log := <-logs:
  5157  				// New log arrived, parse the event and forward to the user
  5158  				event := new(RootChainEpochPrepared)
  5159  				if err := _RootChain.contract.UnpackLog(event, "EpochPrepared", log); err != nil {
  5160  					return err
  5161  				}
  5162  				event.Raw = log
  5163  
  5164  				select {
  5165  				case sink <- event:
  5166  				case err := <-sub.Err():
  5167  					return err
  5168  				case <-quit:
  5169  					return nil
  5170  				}
  5171  			case err := <-sub.Err():
  5172  				return err
  5173  			case <-quit:
  5174  				return nil
  5175  			}
  5176  		}
  5177  	}), nil
  5178  }
  5179  
  5180  // ParseEpochPrepared is a log parse operation binding the contract event 0x1a69c0760aa329b76f72579129869013ebd3d41594db019c0e997b939fcb32e3.
  5181  //
  5182  // Solidity: event EpochPrepared(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated, bool rebase)
  5183  func (_RootChain *RootChainFilterer) ParseEpochPrepared(log types.Log) (*RootChainEpochPrepared, error) {
  5184  	event := new(RootChainEpochPrepared)
  5185  	if err := _RootChain.contract.UnpackLog(event, "EpochPrepared", log); err != nil {
  5186  		return nil, err
  5187  	}
  5188  	return event, nil
  5189  }
  5190  
  5191  // RootChainEpochRebasedIterator is returned from FilterEpochRebased and is used to iterate over the raw logs and unpacked data for EpochRebased events raised by the RootChain contract.
  5192  type RootChainEpochRebasedIterator struct {
  5193  	Event *RootChainEpochRebased // Event containing the contract specifics and raw log
  5194  
  5195  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5196  	event    string              // Event name to use for unpacking event data
  5197  
  5198  	logs chan types.Log        // Log channel receiving the found contract events
  5199  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5200  	done bool                  // Whether the subscription completed delivering logs
  5201  	fail error                 // Occurred error to stop iteration
  5202  }
  5203  
  5204  // Next advances the iterator to the subsequent event, returning whether there
  5205  // are any more events found. In case of a retrieval or parsing error, false is
  5206  // returned and Error() can be queried for the exact failure.
  5207  func (it *RootChainEpochRebasedIterator) Next() bool {
  5208  	// If the iterator failed, stop iterating
  5209  	if it.fail != nil {
  5210  		return false
  5211  	}
  5212  	// If the iterator completed, deliver directly whatever's available
  5213  	if it.done {
  5214  		select {
  5215  		case log := <-it.logs:
  5216  			it.Event = new(RootChainEpochRebased)
  5217  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5218  				it.fail = err
  5219  				return false
  5220  			}
  5221  			it.Event.Raw = log
  5222  			return true
  5223  
  5224  		default:
  5225  			return false
  5226  		}
  5227  	}
  5228  	// Iterator still in progress, wait for either a data or an error event
  5229  	select {
  5230  	case log := <-it.logs:
  5231  		it.Event = new(RootChainEpochRebased)
  5232  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5233  			it.fail = err
  5234  			return false
  5235  		}
  5236  		it.Event.Raw = log
  5237  		return true
  5238  
  5239  	case err := <-it.sub.Err():
  5240  		it.done = true
  5241  		it.fail = err
  5242  		return it.Next()
  5243  	}
  5244  }
  5245  
  5246  // Error returns any retrieval or parsing error occurred during filtering.
  5247  func (it *RootChainEpochRebasedIterator) Error() error {
  5248  	return it.fail
  5249  }
  5250  
  5251  // Close terminates the iteration process, releasing any pending underlying
  5252  // resources.
  5253  func (it *RootChainEpochRebasedIterator) Close() error {
  5254  	it.sub.Unsubscribe()
  5255  	return nil
  5256  }
  5257  
  5258  // RootChainEpochRebased represents a EpochRebased event raised by the RootChain contract.
  5259  type RootChainEpochRebased struct {
  5260  	ForkNumber       *big.Int
  5261  	EpochNumber      *big.Int
  5262  	StartBlockNumber *big.Int
  5263  	EndBlockNumber   *big.Int
  5264  	RequestStart     *big.Int
  5265  	RequestEnd       *big.Int
  5266  	EpochIsEmpty     bool
  5267  	IsRequest        bool
  5268  	UserActivated    bool
  5269  	Raw              types.Log // Blockchain specific contextual infos
  5270  }
  5271  
  5272  // FilterEpochRebased is a free log retrieval operation binding the contract event 0x030c1c69405c93021f28f57557240dee939a320b826a1fd0d39bf6e629ecab47.
  5273  //
  5274  // Solidity: event EpochRebased(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated)
  5275  func (_RootChain *RootChainFilterer) FilterEpochRebased(opts *bind.FilterOpts) (*RootChainEpochRebasedIterator, error) {
  5276  
  5277  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "EpochRebased")
  5278  	if err != nil {
  5279  		return nil, err
  5280  	}
  5281  	return &RootChainEpochRebasedIterator{contract: _RootChain.contract, event: "EpochRebased", logs: logs, sub: sub}, nil
  5282  }
  5283  
  5284  // WatchEpochRebased is a free log subscription operation binding the contract event 0x030c1c69405c93021f28f57557240dee939a320b826a1fd0d39bf6e629ecab47.
  5285  //
  5286  // Solidity: event EpochRebased(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated)
  5287  func (_RootChain *RootChainFilterer) WatchEpochRebased(opts *bind.WatchOpts, sink chan<- *RootChainEpochRebased) (event.Subscription, error) {
  5288  
  5289  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "EpochRebased")
  5290  	if err != nil {
  5291  		return nil, err
  5292  	}
  5293  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5294  		defer sub.Unsubscribe()
  5295  		for {
  5296  			select {
  5297  			case log := <-logs:
  5298  				// New log arrived, parse the event and forward to the user
  5299  				event := new(RootChainEpochRebased)
  5300  				if err := _RootChain.contract.UnpackLog(event, "EpochRebased", log); err != nil {
  5301  					return err
  5302  				}
  5303  				event.Raw = log
  5304  
  5305  				select {
  5306  				case sink <- event:
  5307  				case err := <-sub.Err():
  5308  					return err
  5309  				case <-quit:
  5310  					return nil
  5311  				}
  5312  			case err := <-sub.Err():
  5313  				return err
  5314  			case <-quit:
  5315  				return nil
  5316  			}
  5317  		}
  5318  	}), nil
  5319  }
  5320  
  5321  // ParseEpochRebased is a log parse operation binding the contract event 0x030c1c69405c93021f28f57557240dee939a320b826a1fd0d39bf6e629ecab47.
  5322  //
  5323  // Solidity: event EpochRebased(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated)
  5324  func (_RootChain *RootChainFilterer) ParseEpochRebased(log types.Log) (*RootChainEpochRebased, error) {
  5325  	event := new(RootChainEpochRebased)
  5326  	if err := _RootChain.contract.UnpackLog(event, "EpochRebased", log); err != nil {
  5327  		return nil, err
  5328  	}
  5329  	return event, nil
  5330  }
  5331  
  5332  // RootChainForkedIterator is returned from FilterForked and is used to iterate over the raw logs and unpacked data for Forked events raised by the RootChain contract.
  5333  type RootChainForkedIterator struct {
  5334  	Event *RootChainForked // Event containing the contract specifics and raw log
  5335  
  5336  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5337  	event    string              // Event name to use for unpacking event data
  5338  
  5339  	logs chan types.Log        // Log channel receiving the found contract events
  5340  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5341  	done bool                  // Whether the subscription completed delivering logs
  5342  	fail error                 // Occurred error to stop iteration
  5343  }
  5344  
  5345  // Next advances the iterator to the subsequent event, returning whether there
  5346  // are any more events found. In case of a retrieval or parsing error, false is
  5347  // returned and Error() can be queried for the exact failure.
  5348  func (it *RootChainForkedIterator) Next() bool {
  5349  	// If the iterator failed, stop iterating
  5350  	if it.fail != nil {
  5351  		return false
  5352  	}
  5353  	// If the iterator completed, deliver directly whatever's available
  5354  	if it.done {
  5355  		select {
  5356  		case log := <-it.logs:
  5357  			it.Event = new(RootChainForked)
  5358  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5359  				it.fail = err
  5360  				return false
  5361  			}
  5362  			it.Event.Raw = log
  5363  			return true
  5364  
  5365  		default:
  5366  			return false
  5367  		}
  5368  	}
  5369  	// Iterator still in progress, wait for either a data or an error event
  5370  	select {
  5371  	case log := <-it.logs:
  5372  		it.Event = new(RootChainForked)
  5373  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5374  			it.fail = err
  5375  			return false
  5376  		}
  5377  		it.Event.Raw = log
  5378  		return true
  5379  
  5380  	case err := <-it.sub.Err():
  5381  		it.done = true
  5382  		it.fail = err
  5383  		return it.Next()
  5384  	}
  5385  }
  5386  
  5387  // Error returns any retrieval or parsing error occurred during filtering.
  5388  func (it *RootChainForkedIterator) Error() error {
  5389  	return it.fail
  5390  }
  5391  
  5392  // Close terminates the iteration process, releasing any pending underlying
  5393  // resources.
  5394  func (it *RootChainForkedIterator) Close() error {
  5395  	it.sub.Unsubscribe()
  5396  	return nil
  5397  }
  5398  
  5399  // RootChainForked represents a Forked event raised by the RootChain contract.
  5400  type RootChainForked struct {
  5401  	NewFork           *big.Int
  5402  	EpochNumber       *big.Int
  5403  	ForkedBlockNumber *big.Int
  5404  	Raw               types.Log // Blockchain specific contextual infos
  5405  }
  5406  
  5407  // FilterForked is a free log retrieval operation binding the contract event 0x0647d42ab02f6e0ae76959757dcb6aa6feac1d4ba6f077f1223fb4b1b429f06c.
  5408  //
  5409  // Solidity: event Forked(uint256 newFork, uint256 epochNumber, uint256 forkedBlockNumber)
  5410  func (_RootChain *RootChainFilterer) FilterForked(opts *bind.FilterOpts) (*RootChainForkedIterator, error) {
  5411  
  5412  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "Forked")
  5413  	if err != nil {
  5414  		return nil, err
  5415  	}
  5416  	return &RootChainForkedIterator{contract: _RootChain.contract, event: "Forked", logs: logs, sub: sub}, nil
  5417  }
  5418  
  5419  // WatchForked is a free log subscription operation binding the contract event 0x0647d42ab02f6e0ae76959757dcb6aa6feac1d4ba6f077f1223fb4b1b429f06c.
  5420  //
  5421  // Solidity: event Forked(uint256 newFork, uint256 epochNumber, uint256 forkedBlockNumber)
  5422  func (_RootChain *RootChainFilterer) WatchForked(opts *bind.WatchOpts, sink chan<- *RootChainForked) (event.Subscription, error) {
  5423  
  5424  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "Forked")
  5425  	if err != nil {
  5426  		return nil, err
  5427  	}
  5428  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5429  		defer sub.Unsubscribe()
  5430  		for {
  5431  			select {
  5432  			case log := <-logs:
  5433  				// New log arrived, parse the event and forward to the user
  5434  				event := new(RootChainForked)
  5435  				if err := _RootChain.contract.UnpackLog(event, "Forked", log); err != nil {
  5436  					return err
  5437  				}
  5438  				event.Raw = log
  5439  
  5440  				select {
  5441  				case sink <- event:
  5442  				case err := <-sub.Err():
  5443  					return err
  5444  				case <-quit:
  5445  					return nil
  5446  				}
  5447  			case err := <-sub.Err():
  5448  				return err
  5449  			case <-quit:
  5450  				return nil
  5451  			}
  5452  		}
  5453  	}), nil
  5454  }
  5455  
  5456  // ParseForked is a log parse operation binding the contract event 0x0647d42ab02f6e0ae76959757dcb6aa6feac1d4ba6f077f1223fb4b1b429f06c.
  5457  //
  5458  // Solidity: event Forked(uint256 newFork, uint256 epochNumber, uint256 forkedBlockNumber)
  5459  func (_RootChain *RootChainFilterer) ParseForked(log types.Log) (*RootChainForked, error) {
  5460  	event := new(RootChainForked)
  5461  	if err := _RootChain.contract.UnpackLog(event, "Forked", log); err != nil {
  5462  		return nil, err
  5463  	}
  5464  	return event, nil
  5465  }
  5466  
  5467  // RootChainMapperAddedIterator is returned from FilterMapperAdded and is used to iterate over the raw logs and unpacked data for MapperAdded events raised by the RootChain contract.
  5468  type RootChainMapperAddedIterator struct {
  5469  	Event *RootChainMapperAdded // Event containing the contract specifics and raw log
  5470  
  5471  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5472  	event    string              // Event name to use for unpacking event data
  5473  
  5474  	logs chan types.Log        // Log channel receiving the found contract events
  5475  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5476  	done bool                  // Whether the subscription completed delivering logs
  5477  	fail error                 // Occurred error to stop iteration
  5478  }
  5479  
  5480  // Next advances the iterator to the subsequent event, returning whether there
  5481  // are any more events found. In case of a retrieval or parsing error, false is
  5482  // returned and Error() can be queried for the exact failure.
  5483  func (it *RootChainMapperAddedIterator) Next() bool {
  5484  	// If the iterator failed, stop iterating
  5485  	if it.fail != nil {
  5486  		return false
  5487  	}
  5488  	// If the iterator completed, deliver directly whatever's available
  5489  	if it.done {
  5490  		select {
  5491  		case log := <-it.logs:
  5492  			it.Event = new(RootChainMapperAdded)
  5493  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5494  				it.fail = err
  5495  				return false
  5496  			}
  5497  			it.Event.Raw = log
  5498  			return true
  5499  
  5500  		default:
  5501  			return false
  5502  		}
  5503  	}
  5504  	// Iterator still in progress, wait for either a data or an error event
  5505  	select {
  5506  	case log := <-it.logs:
  5507  		it.Event = new(RootChainMapperAdded)
  5508  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5509  			it.fail = err
  5510  			return false
  5511  		}
  5512  		it.Event.Raw = log
  5513  		return true
  5514  
  5515  	case err := <-it.sub.Err():
  5516  		it.done = true
  5517  		it.fail = err
  5518  		return it.Next()
  5519  	}
  5520  }
  5521  
  5522  // Error returns any retrieval or parsing error occurred during filtering.
  5523  func (it *RootChainMapperAddedIterator) Error() error {
  5524  	return it.fail
  5525  }
  5526  
  5527  // Close terminates the iteration process, releasing any pending underlying
  5528  // resources.
  5529  func (it *RootChainMapperAddedIterator) Close() error {
  5530  	it.sub.Unsubscribe()
  5531  	return nil
  5532  }
  5533  
  5534  // RootChainMapperAdded represents a MapperAdded event raised by the RootChain contract.
  5535  type RootChainMapperAdded struct {
  5536  	Account common.Address
  5537  	Raw     types.Log // Blockchain specific contextual infos
  5538  }
  5539  
  5540  // FilterMapperAdded is a free log retrieval operation binding the contract event 0xa199526a01dbcba68aa3ab9d7d06c6692c83fb1a8bcf2184e6d94ad34f5aaf95.
  5541  //
  5542  // Solidity: event MapperAdded(address indexed account)
  5543  func (_RootChain *RootChainFilterer) FilterMapperAdded(opts *bind.FilterOpts, account []common.Address) (*RootChainMapperAddedIterator, error) {
  5544  
  5545  	var accountRule []interface{}
  5546  	for _, accountItem := range account {
  5547  		accountRule = append(accountRule, accountItem)
  5548  	}
  5549  
  5550  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "MapperAdded", accountRule)
  5551  	if err != nil {
  5552  		return nil, err
  5553  	}
  5554  	return &RootChainMapperAddedIterator{contract: _RootChain.contract, event: "MapperAdded", logs: logs, sub: sub}, nil
  5555  }
  5556  
  5557  // WatchMapperAdded is a free log subscription operation binding the contract event 0xa199526a01dbcba68aa3ab9d7d06c6692c83fb1a8bcf2184e6d94ad34f5aaf95.
  5558  //
  5559  // Solidity: event MapperAdded(address indexed account)
  5560  func (_RootChain *RootChainFilterer) WatchMapperAdded(opts *bind.WatchOpts, sink chan<- *RootChainMapperAdded, account []common.Address) (event.Subscription, error) {
  5561  
  5562  	var accountRule []interface{}
  5563  	for _, accountItem := range account {
  5564  		accountRule = append(accountRule, accountItem)
  5565  	}
  5566  
  5567  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "MapperAdded", accountRule)
  5568  	if err != nil {
  5569  		return nil, err
  5570  	}
  5571  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5572  		defer sub.Unsubscribe()
  5573  		for {
  5574  			select {
  5575  			case log := <-logs:
  5576  				// New log arrived, parse the event and forward to the user
  5577  				event := new(RootChainMapperAdded)
  5578  				if err := _RootChain.contract.UnpackLog(event, "MapperAdded", log); err != nil {
  5579  					return err
  5580  				}
  5581  				event.Raw = log
  5582  
  5583  				select {
  5584  				case sink <- event:
  5585  				case err := <-sub.Err():
  5586  					return err
  5587  				case <-quit:
  5588  					return nil
  5589  				}
  5590  			case err := <-sub.Err():
  5591  				return err
  5592  			case <-quit:
  5593  				return nil
  5594  			}
  5595  		}
  5596  	}), nil
  5597  }
  5598  
  5599  // ParseMapperAdded is a log parse operation binding the contract event 0xa199526a01dbcba68aa3ab9d7d06c6692c83fb1a8bcf2184e6d94ad34f5aaf95.
  5600  //
  5601  // Solidity: event MapperAdded(address indexed account)
  5602  func (_RootChain *RootChainFilterer) ParseMapperAdded(log types.Log) (*RootChainMapperAdded, error) {
  5603  	event := new(RootChainMapperAdded)
  5604  	if err := _RootChain.contract.UnpackLog(event, "MapperAdded", log); err != nil {
  5605  		return nil, err
  5606  	}
  5607  	return event, nil
  5608  }
  5609  
  5610  // RootChainMapperRemovedIterator is returned from FilterMapperRemoved and is used to iterate over the raw logs and unpacked data for MapperRemoved events raised by the RootChain contract.
  5611  type RootChainMapperRemovedIterator struct {
  5612  	Event *RootChainMapperRemoved // Event containing the contract specifics and raw log
  5613  
  5614  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5615  	event    string              // Event name to use for unpacking event data
  5616  
  5617  	logs chan types.Log        // Log channel receiving the found contract events
  5618  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5619  	done bool                  // Whether the subscription completed delivering logs
  5620  	fail error                 // Occurred error to stop iteration
  5621  }
  5622  
  5623  // Next advances the iterator to the subsequent event, returning whether there
  5624  // are any more events found. In case of a retrieval or parsing error, false is
  5625  // returned and Error() can be queried for the exact failure.
  5626  func (it *RootChainMapperRemovedIterator) Next() bool {
  5627  	// If the iterator failed, stop iterating
  5628  	if it.fail != nil {
  5629  		return false
  5630  	}
  5631  	// If the iterator completed, deliver directly whatever's available
  5632  	if it.done {
  5633  		select {
  5634  		case log := <-it.logs:
  5635  			it.Event = new(RootChainMapperRemoved)
  5636  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5637  				it.fail = err
  5638  				return false
  5639  			}
  5640  			it.Event.Raw = log
  5641  			return true
  5642  
  5643  		default:
  5644  			return false
  5645  		}
  5646  	}
  5647  	// Iterator still in progress, wait for either a data or an error event
  5648  	select {
  5649  	case log := <-it.logs:
  5650  		it.Event = new(RootChainMapperRemoved)
  5651  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5652  			it.fail = err
  5653  			return false
  5654  		}
  5655  		it.Event.Raw = log
  5656  		return true
  5657  
  5658  	case err := <-it.sub.Err():
  5659  		it.done = true
  5660  		it.fail = err
  5661  		return it.Next()
  5662  	}
  5663  }
  5664  
  5665  // Error returns any retrieval or parsing error occurred during filtering.
  5666  func (it *RootChainMapperRemovedIterator) Error() error {
  5667  	return it.fail
  5668  }
  5669  
  5670  // Close terminates the iteration process, releasing any pending underlying
  5671  // resources.
  5672  func (it *RootChainMapperRemovedIterator) Close() error {
  5673  	it.sub.Unsubscribe()
  5674  	return nil
  5675  }
  5676  
  5677  // RootChainMapperRemoved represents a MapperRemoved event raised by the RootChain contract.
  5678  type RootChainMapperRemoved struct {
  5679  	Account common.Address
  5680  	Raw     types.Log // Blockchain specific contextual infos
  5681  }
  5682  
  5683  // FilterMapperRemoved is a free log retrieval operation binding the contract event 0xf012269e1b6bb33c7800e7e54167ddd74f0ae7244108030b6876821d3779822f.
  5684  //
  5685  // Solidity: event MapperRemoved(address indexed account)
  5686  func (_RootChain *RootChainFilterer) FilterMapperRemoved(opts *bind.FilterOpts, account []common.Address) (*RootChainMapperRemovedIterator, error) {
  5687  
  5688  	var accountRule []interface{}
  5689  	for _, accountItem := range account {
  5690  		accountRule = append(accountRule, accountItem)
  5691  	}
  5692  
  5693  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "MapperRemoved", accountRule)
  5694  	if err != nil {
  5695  		return nil, err
  5696  	}
  5697  	return &RootChainMapperRemovedIterator{contract: _RootChain.contract, event: "MapperRemoved", logs: logs, sub: sub}, nil
  5698  }
  5699  
  5700  // WatchMapperRemoved is a free log subscription operation binding the contract event 0xf012269e1b6bb33c7800e7e54167ddd74f0ae7244108030b6876821d3779822f.
  5701  //
  5702  // Solidity: event MapperRemoved(address indexed account)
  5703  func (_RootChain *RootChainFilterer) WatchMapperRemoved(opts *bind.WatchOpts, sink chan<- *RootChainMapperRemoved, account []common.Address) (event.Subscription, error) {
  5704  
  5705  	var accountRule []interface{}
  5706  	for _, accountItem := range account {
  5707  		accountRule = append(accountRule, accountItem)
  5708  	}
  5709  
  5710  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "MapperRemoved", accountRule)
  5711  	if err != nil {
  5712  		return nil, err
  5713  	}
  5714  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5715  		defer sub.Unsubscribe()
  5716  		for {
  5717  			select {
  5718  			case log := <-logs:
  5719  				// New log arrived, parse the event and forward to the user
  5720  				event := new(RootChainMapperRemoved)
  5721  				if err := _RootChain.contract.UnpackLog(event, "MapperRemoved", log); err != nil {
  5722  					return err
  5723  				}
  5724  				event.Raw = log
  5725  
  5726  				select {
  5727  				case sink <- event:
  5728  				case err := <-sub.Err():
  5729  					return err
  5730  				case <-quit:
  5731  					return nil
  5732  				}
  5733  			case err := <-sub.Err():
  5734  				return err
  5735  			case <-quit:
  5736  				return nil
  5737  			}
  5738  		}
  5739  	}), nil
  5740  }
  5741  
  5742  // ParseMapperRemoved is a log parse operation binding the contract event 0xf012269e1b6bb33c7800e7e54167ddd74f0ae7244108030b6876821d3779822f.
  5743  //
  5744  // Solidity: event MapperRemoved(address indexed account)
  5745  func (_RootChain *RootChainFilterer) ParseMapperRemoved(log types.Log) (*RootChainMapperRemoved, error) {
  5746  	event := new(RootChainMapperRemoved)
  5747  	if err := _RootChain.contract.UnpackLog(event, "MapperRemoved", log); err != nil {
  5748  		return nil, err
  5749  	}
  5750  	return event, nil
  5751  }
  5752  
  5753  // RootChainOperatorChangedIterator is returned from FilterOperatorChanged and is used to iterate over the raw logs and unpacked data for OperatorChanged events raised by the RootChain contract.
  5754  type RootChainOperatorChangedIterator struct {
  5755  	Event *RootChainOperatorChanged // Event containing the contract specifics and raw log
  5756  
  5757  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5758  	event    string              // Event name to use for unpacking event data
  5759  
  5760  	logs chan types.Log        // Log channel receiving the found contract events
  5761  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5762  	done bool                  // Whether the subscription completed delivering logs
  5763  	fail error                 // Occurred error to stop iteration
  5764  }
  5765  
  5766  // Next advances the iterator to the subsequent event, returning whether there
  5767  // are any more events found. In case of a retrieval or parsing error, false is
  5768  // returned and Error() can be queried for the exact failure.
  5769  func (it *RootChainOperatorChangedIterator) Next() bool {
  5770  	// If the iterator failed, stop iterating
  5771  	if it.fail != nil {
  5772  		return false
  5773  	}
  5774  	// If the iterator completed, deliver directly whatever's available
  5775  	if it.done {
  5776  		select {
  5777  		case log := <-it.logs:
  5778  			it.Event = new(RootChainOperatorChanged)
  5779  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5780  				it.fail = err
  5781  				return false
  5782  			}
  5783  			it.Event.Raw = log
  5784  			return true
  5785  
  5786  		default:
  5787  			return false
  5788  		}
  5789  	}
  5790  	// Iterator still in progress, wait for either a data or an error event
  5791  	select {
  5792  	case log := <-it.logs:
  5793  		it.Event = new(RootChainOperatorChanged)
  5794  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5795  			it.fail = err
  5796  			return false
  5797  		}
  5798  		it.Event.Raw = log
  5799  		return true
  5800  
  5801  	case err := <-it.sub.Err():
  5802  		it.done = true
  5803  		it.fail = err
  5804  		return it.Next()
  5805  	}
  5806  }
  5807  
  5808  // Error returns any retrieval or parsing error occurred during filtering.
  5809  func (it *RootChainOperatorChangedIterator) Error() error {
  5810  	return it.fail
  5811  }
  5812  
  5813  // Close terminates the iteration process, releasing any pending underlying
  5814  // resources.
  5815  func (it *RootChainOperatorChangedIterator) Close() error {
  5816  	it.sub.Unsubscribe()
  5817  	return nil
  5818  }
  5819  
  5820  // RootChainOperatorChanged represents a OperatorChanged event raised by the RootChain contract.
  5821  type RootChainOperatorChanged struct {
  5822  	NewOperator common.Address
  5823  	Raw         types.Log // Blockchain specific contextual infos
  5824  }
  5825  
  5826  // FilterOperatorChanged is a free log retrieval operation binding the contract event 0x4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e54.
  5827  //
  5828  // Solidity: event OperatorChanged(address _newOperator)
  5829  func (_RootChain *RootChainFilterer) FilterOperatorChanged(opts *bind.FilterOpts) (*RootChainOperatorChangedIterator, error) {
  5830  
  5831  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "OperatorChanged")
  5832  	if err != nil {
  5833  		return nil, err
  5834  	}
  5835  	return &RootChainOperatorChangedIterator{contract: _RootChain.contract, event: "OperatorChanged", logs: logs, sub: sub}, nil
  5836  }
  5837  
  5838  // WatchOperatorChanged is a free log subscription operation binding the contract event 0x4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e54.
  5839  //
  5840  // Solidity: event OperatorChanged(address _newOperator)
  5841  func (_RootChain *RootChainFilterer) WatchOperatorChanged(opts *bind.WatchOpts, sink chan<- *RootChainOperatorChanged) (event.Subscription, error) {
  5842  
  5843  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "OperatorChanged")
  5844  	if err != nil {
  5845  		return nil, err
  5846  	}
  5847  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5848  		defer sub.Unsubscribe()
  5849  		for {
  5850  			select {
  5851  			case log := <-logs:
  5852  				// New log arrived, parse the event and forward to the user
  5853  				event := new(RootChainOperatorChanged)
  5854  				if err := _RootChain.contract.UnpackLog(event, "OperatorChanged", log); err != nil {
  5855  					return err
  5856  				}
  5857  				event.Raw = log
  5858  
  5859  				select {
  5860  				case sink <- event:
  5861  				case err := <-sub.Err():
  5862  					return err
  5863  				case <-quit:
  5864  					return nil
  5865  				}
  5866  			case err := <-sub.Err():
  5867  				return err
  5868  			case <-quit:
  5869  				return nil
  5870  			}
  5871  		}
  5872  	}), nil
  5873  }
  5874  
  5875  // ParseOperatorChanged is a log parse operation binding the contract event 0x4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e54.
  5876  //
  5877  // Solidity: event OperatorChanged(address _newOperator)
  5878  func (_RootChain *RootChainFilterer) ParseOperatorChanged(log types.Log) (*RootChainOperatorChanged, error) {
  5879  	event := new(RootChainOperatorChanged)
  5880  	if err := _RootChain.contract.UnpackLog(event, "OperatorChanged", log); err != nil {
  5881  		return nil, err
  5882  	}
  5883  	return event, nil
  5884  }
  5885  
  5886  // RootChainRequestAppliedIterator is returned from FilterRequestApplied and is used to iterate over the raw logs and unpacked data for RequestApplied events raised by the RootChain contract.
  5887  type RootChainRequestAppliedIterator struct {
  5888  	Event *RootChainRequestApplied // Event containing the contract specifics and raw log
  5889  
  5890  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5891  	event    string              // Event name to use for unpacking event data
  5892  
  5893  	logs chan types.Log        // Log channel receiving the found contract events
  5894  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5895  	done bool                  // Whether the subscription completed delivering logs
  5896  	fail error                 // Occurred error to stop iteration
  5897  }
  5898  
  5899  // Next advances the iterator to the subsequent event, returning whether there
  5900  // are any more events found. In case of a retrieval or parsing error, false is
  5901  // returned and Error() can be queried for the exact failure.
  5902  func (it *RootChainRequestAppliedIterator) Next() bool {
  5903  	// If the iterator failed, stop iterating
  5904  	if it.fail != nil {
  5905  		return false
  5906  	}
  5907  	// If the iterator completed, deliver directly whatever's available
  5908  	if it.done {
  5909  		select {
  5910  		case log := <-it.logs:
  5911  			it.Event = new(RootChainRequestApplied)
  5912  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5913  				it.fail = err
  5914  				return false
  5915  			}
  5916  			it.Event.Raw = log
  5917  			return true
  5918  
  5919  		default:
  5920  			return false
  5921  		}
  5922  	}
  5923  	// Iterator still in progress, wait for either a data or an error event
  5924  	select {
  5925  	case log := <-it.logs:
  5926  		it.Event = new(RootChainRequestApplied)
  5927  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5928  			it.fail = err
  5929  			return false
  5930  		}
  5931  		it.Event.Raw = log
  5932  		return true
  5933  
  5934  	case err := <-it.sub.Err():
  5935  		it.done = true
  5936  		it.fail = err
  5937  		return it.Next()
  5938  	}
  5939  }
  5940  
  5941  // Error returns any retrieval or parsing error occurred during filtering.
  5942  func (it *RootChainRequestAppliedIterator) Error() error {
  5943  	return it.fail
  5944  }
  5945  
  5946  // Close terminates the iteration process, releasing any pending underlying
  5947  // resources.
  5948  func (it *RootChainRequestAppliedIterator) Close() error {
  5949  	it.sub.Unsubscribe()
  5950  	return nil
  5951  }
  5952  
  5953  // RootChainRequestApplied represents a RequestApplied event raised by the RootChain contract.
  5954  type RootChainRequestApplied struct {
  5955  	RequestId     *big.Int
  5956  	UserActivated bool
  5957  	Raw           types.Log // Blockchain specific contextual infos
  5958  }
  5959  
  5960  // FilterRequestApplied is a free log retrieval operation binding the contract event 0x6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c2.
  5961  //
  5962  // Solidity: event RequestApplied(uint256 requestId, bool userActivated)
  5963  func (_RootChain *RootChainFilterer) FilterRequestApplied(opts *bind.FilterOpts) (*RootChainRequestAppliedIterator, error) {
  5964  
  5965  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "RequestApplied")
  5966  	if err != nil {
  5967  		return nil, err
  5968  	}
  5969  	return &RootChainRequestAppliedIterator{contract: _RootChain.contract, event: "RequestApplied", logs: logs, sub: sub}, nil
  5970  }
  5971  
  5972  // WatchRequestApplied is a free log subscription operation binding the contract event 0x6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c2.
  5973  //
  5974  // Solidity: event RequestApplied(uint256 requestId, bool userActivated)
  5975  func (_RootChain *RootChainFilterer) WatchRequestApplied(opts *bind.WatchOpts, sink chan<- *RootChainRequestApplied) (event.Subscription, error) {
  5976  
  5977  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "RequestApplied")
  5978  	if err != nil {
  5979  		return nil, err
  5980  	}
  5981  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5982  		defer sub.Unsubscribe()
  5983  		for {
  5984  			select {
  5985  			case log := <-logs:
  5986  				// New log arrived, parse the event and forward to the user
  5987  				event := new(RootChainRequestApplied)
  5988  				if err := _RootChain.contract.UnpackLog(event, "RequestApplied", log); err != nil {
  5989  					return err
  5990  				}
  5991  				event.Raw = log
  5992  
  5993  				select {
  5994  				case sink <- event:
  5995  				case err := <-sub.Err():
  5996  					return err
  5997  				case <-quit:
  5998  					return nil
  5999  				}
  6000  			case err := <-sub.Err():
  6001  				return err
  6002  			case <-quit:
  6003  				return nil
  6004  			}
  6005  		}
  6006  	}), nil
  6007  }
  6008  
  6009  // ParseRequestApplied is a log parse operation binding the contract event 0x6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c2.
  6010  //
  6011  // Solidity: event RequestApplied(uint256 requestId, bool userActivated)
  6012  func (_RootChain *RootChainFilterer) ParseRequestApplied(log types.Log) (*RootChainRequestApplied, error) {
  6013  	event := new(RootChainRequestApplied)
  6014  	if err := _RootChain.contract.UnpackLog(event, "RequestApplied", log); err != nil {
  6015  		return nil, err
  6016  	}
  6017  	return event, nil
  6018  }
  6019  
  6020  // RootChainRequestChallengedIterator is returned from FilterRequestChallenged and is used to iterate over the raw logs and unpacked data for RequestChallenged events raised by the RootChain contract.
  6021  type RootChainRequestChallengedIterator struct {
  6022  	Event *RootChainRequestChallenged // Event containing the contract specifics and raw log
  6023  
  6024  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6025  	event    string              // Event name to use for unpacking event data
  6026  
  6027  	logs chan types.Log        // Log channel receiving the found contract events
  6028  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6029  	done bool                  // Whether the subscription completed delivering logs
  6030  	fail error                 // Occurred error to stop iteration
  6031  }
  6032  
  6033  // Next advances the iterator to the subsequent event, returning whether there
  6034  // are any more events found. In case of a retrieval or parsing error, false is
  6035  // returned and Error() can be queried for the exact failure.
  6036  func (it *RootChainRequestChallengedIterator) Next() bool {
  6037  	// If the iterator failed, stop iterating
  6038  	if it.fail != nil {
  6039  		return false
  6040  	}
  6041  	// If the iterator completed, deliver directly whatever's available
  6042  	if it.done {
  6043  		select {
  6044  		case log := <-it.logs:
  6045  			it.Event = new(RootChainRequestChallenged)
  6046  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6047  				it.fail = err
  6048  				return false
  6049  			}
  6050  			it.Event.Raw = log
  6051  			return true
  6052  
  6053  		default:
  6054  			return false
  6055  		}
  6056  	}
  6057  	// Iterator still in progress, wait for either a data or an error event
  6058  	select {
  6059  	case log := <-it.logs:
  6060  		it.Event = new(RootChainRequestChallenged)
  6061  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6062  			it.fail = err
  6063  			return false
  6064  		}
  6065  		it.Event.Raw = log
  6066  		return true
  6067  
  6068  	case err := <-it.sub.Err():
  6069  		it.done = true
  6070  		it.fail = err
  6071  		return it.Next()
  6072  	}
  6073  }
  6074  
  6075  // Error returns any retrieval or parsing error occurred during filtering.
  6076  func (it *RootChainRequestChallengedIterator) Error() error {
  6077  	return it.fail
  6078  }
  6079  
  6080  // Close terminates the iteration process, releasing any pending underlying
  6081  // resources.
  6082  func (it *RootChainRequestChallengedIterator) Close() error {
  6083  	it.sub.Unsubscribe()
  6084  	return nil
  6085  }
  6086  
  6087  // RootChainRequestChallenged represents a RequestChallenged event raised by the RootChain contract.
  6088  type RootChainRequestChallenged struct {
  6089  	RequestId     *big.Int
  6090  	UserActivated bool
  6091  	Raw           types.Log // Blockchain specific contextual infos
  6092  }
  6093  
  6094  // FilterRequestChallenged is a free log retrieval operation binding the contract event 0xc8135db115644ed4ae193313c4c801235ef740d2a57a8d5e6fe26ab66635698a.
  6095  //
  6096  // Solidity: event RequestChallenged(uint256 requestId, bool userActivated)
  6097  func (_RootChain *RootChainFilterer) FilterRequestChallenged(opts *bind.FilterOpts) (*RootChainRequestChallengedIterator, error) {
  6098  
  6099  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "RequestChallenged")
  6100  	if err != nil {
  6101  		return nil, err
  6102  	}
  6103  	return &RootChainRequestChallengedIterator{contract: _RootChain.contract, event: "RequestChallenged", logs: logs, sub: sub}, nil
  6104  }
  6105  
  6106  // WatchRequestChallenged is a free log subscription operation binding the contract event 0xc8135db115644ed4ae193313c4c801235ef740d2a57a8d5e6fe26ab66635698a.
  6107  //
  6108  // Solidity: event RequestChallenged(uint256 requestId, bool userActivated)
  6109  func (_RootChain *RootChainFilterer) WatchRequestChallenged(opts *bind.WatchOpts, sink chan<- *RootChainRequestChallenged) (event.Subscription, error) {
  6110  
  6111  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "RequestChallenged")
  6112  	if err != nil {
  6113  		return nil, err
  6114  	}
  6115  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6116  		defer sub.Unsubscribe()
  6117  		for {
  6118  			select {
  6119  			case log := <-logs:
  6120  				// New log arrived, parse the event and forward to the user
  6121  				event := new(RootChainRequestChallenged)
  6122  				if err := _RootChain.contract.UnpackLog(event, "RequestChallenged", log); err != nil {
  6123  					return err
  6124  				}
  6125  				event.Raw = log
  6126  
  6127  				select {
  6128  				case sink <- event:
  6129  				case err := <-sub.Err():
  6130  					return err
  6131  				case <-quit:
  6132  					return nil
  6133  				}
  6134  			case err := <-sub.Err():
  6135  				return err
  6136  			case <-quit:
  6137  				return nil
  6138  			}
  6139  		}
  6140  	}), nil
  6141  }
  6142  
  6143  // ParseRequestChallenged is a log parse operation binding the contract event 0xc8135db115644ed4ae193313c4c801235ef740d2a57a8d5e6fe26ab66635698a.
  6144  //
  6145  // Solidity: event RequestChallenged(uint256 requestId, bool userActivated)
  6146  func (_RootChain *RootChainFilterer) ParseRequestChallenged(log types.Log) (*RootChainRequestChallenged, error) {
  6147  	event := new(RootChainRequestChallenged)
  6148  	if err := _RootChain.contract.UnpackLog(event, "RequestChallenged", log); err != nil {
  6149  		return nil, err
  6150  	}
  6151  	return event, nil
  6152  }
  6153  
  6154  // RootChainRequestCreatedIterator is returned from FilterRequestCreated and is used to iterate over the raw logs and unpacked data for RequestCreated events raised by the RootChain contract.
  6155  type RootChainRequestCreatedIterator struct {
  6156  	Event *RootChainRequestCreated // Event containing the contract specifics and raw log
  6157  
  6158  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6159  	event    string              // Event name to use for unpacking event data
  6160  
  6161  	logs chan types.Log        // Log channel receiving the found contract events
  6162  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6163  	done bool                  // Whether the subscription completed delivering logs
  6164  	fail error                 // Occurred error to stop iteration
  6165  }
  6166  
  6167  // Next advances the iterator to the subsequent event, returning whether there
  6168  // are any more events found. In case of a retrieval or parsing error, false is
  6169  // returned and Error() can be queried for the exact failure.
  6170  func (it *RootChainRequestCreatedIterator) Next() bool {
  6171  	// If the iterator failed, stop iterating
  6172  	if it.fail != nil {
  6173  		return false
  6174  	}
  6175  	// If the iterator completed, deliver directly whatever's available
  6176  	if it.done {
  6177  		select {
  6178  		case log := <-it.logs:
  6179  			it.Event = new(RootChainRequestCreated)
  6180  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6181  				it.fail = err
  6182  				return false
  6183  			}
  6184  			it.Event.Raw = log
  6185  			return true
  6186  
  6187  		default:
  6188  			return false
  6189  		}
  6190  	}
  6191  	// Iterator still in progress, wait for either a data or an error event
  6192  	select {
  6193  	case log := <-it.logs:
  6194  		it.Event = new(RootChainRequestCreated)
  6195  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6196  			it.fail = err
  6197  			return false
  6198  		}
  6199  		it.Event.Raw = log
  6200  		return true
  6201  
  6202  	case err := <-it.sub.Err():
  6203  		it.done = true
  6204  		it.fail = err
  6205  		return it.Next()
  6206  	}
  6207  }
  6208  
  6209  // Error returns any retrieval or parsing error occurred during filtering.
  6210  func (it *RootChainRequestCreatedIterator) Error() error {
  6211  	return it.fail
  6212  }
  6213  
  6214  // Close terminates the iteration process, releasing any pending underlying
  6215  // resources.
  6216  func (it *RootChainRequestCreatedIterator) Close() error {
  6217  	it.sub.Unsubscribe()
  6218  	return nil
  6219  }
  6220  
  6221  // RootChainRequestCreated represents a RequestCreated event raised by the RootChain contract.
  6222  type RootChainRequestCreated struct {
  6223  	RequestId     *big.Int
  6224  	Requestor     common.Address
  6225  	To            common.Address
  6226  	WeiAmount     *big.Int
  6227  	TrieKey       [32]byte
  6228  	TrieValue     []byte
  6229  	IsExit        bool
  6230  	UserActivated bool
  6231  	Raw           types.Log // Blockchain specific contextual infos
  6232  }
  6233  
  6234  // FilterRequestCreated is a free log retrieval operation binding the contract event 0x879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d.
  6235  //
  6236  // Solidity: event RequestCreated(uint256 requestId, address requestor, address to, uint256 weiAmount, bytes32 trieKey, bytes trieValue, bool isExit, bool userActivated)
  6237  func (_RootChain *RootChainFilterer) FilterRequestCreated(opts *bind.FilterOpts) (*RootChainRequestCreatedIterator, error) {
  6238  
  6239  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "RequestCreated")
  6240  	if err != nil {
  6241  		return nil, err
  6242  	}
  6243  	return &RootChainRequestCreatedIterator{contract: _RootChain.contract, event: "RequestCreated", logs: logs, sub: sub}, nil
  6244  }
  6245  
  6246  // WatchRequestCreated is a free log subscription operation binding the contract event 0x879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d.
  6247  //
  6248  // Solidity: event RequestCreated(uint256 requestId, address requestor, address to, uint256 weiAmount, bytes32 trieKey, bytes trieValue, bool isExit, bool userActivated)
  6249  func (_RootChain *RootChainFilterer) WatchRequestCreated(opts *bind.WatchOpts, sink chan<- *RootChainRequestCreated) (event.Subscription, error) {
  6250  
  6251  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "RequestCreated")
  6252  	if err != nil {
  6253  		return nil, err
  6254  	}
  6255  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6256  		defer sub.Unsubscribe()
  6257  		for {
  6258  			select {
  6259  			case log := <-logs:
  6260  				// New log arrived, parse the event and forward to the user
  6261  				event := new(RootChainRequestCreated)
  6262  				if err := _RootChain.contract.UnpackLog(event, "RequestCreated", log); err != nil {
  6263  					return err
  6264  				}
  6265  				event.Raw = log
  6266  
  6267  				select {
  6268  				case sink <- event:
  6269  				case err := <-sub.Err():
  6270  					return err
  6271  				case <-quit:
  6272  					return nil
  6273  				}
  6274  			case err := <-sub.Err():
  6275  				return err
  6276  			case <-quit:
  6277  				return nil
  6278  			}
  6279  		}
  6280  	}), nil
  6281  }
  6282  
  6283  // ParseRequestCreated is a log parse operation binding the contract event 0x879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d.
  6284  //
  6285  // Solidity: event RequestCreated(uint256 requestId, address requestor, address to, uint256 weiAmount, bytes32 trieKey, bytes trieValue, bool isExit, bool userActivated)
  6286  func (_RootChain *RootChainFilterer) ParseRequestCreated(log types.Log) (*RootChainRequestCreated, error) {
  6287  	event := new(RootChainRequestCreated)
  6288  	if err := _RootChain.contract.UnpackLog(event, "RequestCreated", log); err != nil {
  6289  		return nil, err
  6290  	}
  6291  	return event, nil
  6292  }
  6293  
  6294  // RootChainRequestFinalizedIterator is returned from FilterRequestFinalized and is used to iterate over the raw logs and unpacked data for RequestFinalized events raised by the RootChain contract.
  6295  type RootChainRequestFinalizedIterator struct {
  6296  	Event *RootChainRequestFinalized // Event containing the contract specifics and raw log
  6297  
  6298  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6299  	event    string              // Event name to use for unpacking event data
  6300  
  6301  	logs chan types.Log        // Log channel receiving the found contract events
  6302  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6303  	done bool                  // Whether the subscription completed delivering logs
  6304  	fail error                 // Occurred error to stop iteration
  6305  }
  6306  
  6307  // Next advances the iterator to the subsequent event, returning whether there
  6308  // are any more events found. In case of a retrieval or parsing error, false is
  6309  // returned and Error() can be queried for the exact failure.
  6310  func (it *RootChainRequestFinalizedIterator) Next() bool {
  6311  	// If the iterator failed, stop iterating
  6312  	if it.fail != nil {
  6313  		return false
  6314  	}
  6315  	// If the iterator completed, deliver directly whatever's available
  6316  	if it.done {
  6317  		select {
  6318  		case log := <-it.logs:
  6319  			it.Event = new(RootChainRequestFinalized)
  6320  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6321  				it.fail = err
  6322  				return false
  6323  			}
  6324  			it.Event.Raw = log
  6325  			return true
  6326  
  6327  		default:
  6328  			return false
  6329  		}
  6330  	}
  6331  	// Iterator still in progress, wait for either a data or an error event
  6332  	select {
  6333  	case log := <-it.logs:
  6334  		it.Event = new(RootChainRequestFinalized)
  6335  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6336  			it.fail = err
  6337  			return false
  6338  		}
  6339  		it.Event.Raw = log
  6340  		return true
  6341  
  6342  	case err := <-it.sub.Err():
  6343  		it.done = true
  6344  		it.fail = err
  6345  		return it.Next()
  6346  	}
  6347  }
  6348  
  6349  // Error returns any retrieval or parsing error occurred during filtering.
  6350  func (it *RootChainRequestFinalizedIterator) Error() error {
  6351  	return it.fail
  6352  }
  6353  
  6354  // Close terminates the iteration process, releasing any pending underlying
  6355  // resources.
  6356  func (it *RootChainRequestFinalizedIterator) Close() error {
  6357  	it.sub.Unsubscribe()
  6358  	return nil
  6359  }
  6360  
  6361  // RootChainRequestFinalized represents a RequestFinalized event raised by the RootChain contract.
  6362  type RootChainRequestFinalized struct {
  6363  	RequestId     *big.Int
  6364  	UserActivated bool
  6365  	Raw           types.Log // Blockchain specific contextual infos
  6366  }
  6367  
  6368  // FilterRequestFinalized is a free log retrieval operation binding the contract event 0x134017cf3262b18f892ee95dde3b0aec9a80cc70a7c96f09c64bd237aceb0473.
  6369  //
  6370  // Solidity: event RequestFinalized(uint256 requestId, bool userActivated)
  6371  func (_RootChain *RootChainFilterer) FilterRequestFinalized(opts *bind.FilterOpts) (*RootChainRequestFinalizedIterator, error) {
  6372  
  6373  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "RequestFinalized")
  6374  	if err != nil {
  6375  		return nil, err
  6376  	}
  6377  	return &RootChainRequestFinalizedIterator{contract: _RootChain.contract, event: "RequestFinalized", logs: logs, sub: sub}, nil
  6378  }
  6379  
  6380  // WatchRequestFinalized is a free log subscription operation binding the contract event 0x134017cf3262b18f892ee95dde3b0aec9a80cc70a7c96f09c64bd237aceb0473.
  6381  //
  6382  // Solidity: event RequestFinalized(uint256 requestId, bool userActivated)
  6383  func (_RootChain *RootChainFilterer) WatchRequestFinalized(opts *bind.WatchOpts, sink chan<- *RootChainRequestFinalized) (event.Subscription, error) {
  6384  
  6385  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "RequestFinalized")
  6386  	if err != nil {
  6387  		return nil, err
  6388  	}
  6389  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6390  		defer sub.Unsubscribe()
  6391  		for {
  6392  			select {
  6393  			case log := <-logs:
  6394  				// New log arrived, parse the event and forward to the user
  6395  				event := new(RootChainRequestFinalized)
  6396  				if err := _RootChain.contract.UnpackLog(event, "RequestFinalized", log); err != nil {
  6397  					return err
  6398  				}
  6399  				event.Raw = log
  6400  
  6401  				select {
  6402  				case sink <- event:
  6403  				case err := <-sub.Err():
  6404  					return err
  6405  				case <-quit:
  6406  					return nil
  6407  				}
  6408  			case err := <-sub.Err():
  6409  				return err
  6410  			case <-quit:
  6411  				return nil
  6412  			}
  6413  		}
  6414  	}), nil
  6415  }
  6416  
  6417  // ParseRequestFinalized is a log parse operation binding the contract event 0x134017cf3262b18f892ee95dde3b0aec9a80cc70a7c96f09c64bd237aceb0473.
  6418  //
  6419  // Solidity: event RequestFinalized(uint256 requestId, bool userActivated)
  6420  func (_RootChain *RootChainFilterer) ParseRequestFinalized(log types.Log) (*RootChainRequestFinalized, error) {
  6421  	event := new(RootChainRequestFinalized)
  6422  	if err := _RootChain.contract.UnpackLog(event, "RequestFinalized", log); err != nil {
  6423  		return nil, err
  6424  	}
  6425  	return event, nil
  6426  }
  6427  
  6428  // RootChainRequestableContractMappedIterator is returned from FilterRequestableContractMapped and is used to iterate over the raw logs and unpacked data for RequestableContractMapped events raised by the RootChain contract.
  6429  type RootChainRequestableContractMappedIterator struct {
  6430  	Event *RootChainRequestableContractMapped // Event containing the contract specifics and raw log
  6431  
  6432  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6433  	event    string              // Event name to use for unpacking event data
  6434  
  6435  	logs chan types.Log        // Log channel receiving the found contract events
  6436  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6437  	done bool                  // Whether the subscription completed delivering logs
  6438  	fail error                 // Occurred error to stop iteration
  6439  }
  6440  
  6441  // Next advances the iterator to the subsequent event, returning whether there
  6442  // are any more events found. In case of a retrieval or parsing error, false is
  6443  // returned and Error() can be queried for the exact failure.
  6444  func (it *RootChainRequestableContractMappedIterator) Next() bool {
  6445  	// If the iterator failed, stop iterating
  6446  	if it.fail != nil {
  6447  		return false
  6448  	}
  6449  	// If the iterator completed, deliver directly whatever's available
  6450  	if it.done {
  6451  		select {
  6452  		case log := <-it.logs:
  6453  			it.Event = new(RootChainRequestableContractMapped)
  6454  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6455  				it.fail = err
  6456  				return false
  6457  			}
  6458  			it.Event.Raw = log
  6459  			return true
  6460  
  6461  		default:
  6462  			return false
  6463  		}
  6464  	}
  6465  	// Iterator still in progress, wait for either a data or an error event
  6466  	select {
  6467  	case log := <-it.logs:
  6468  		it.Event = new(RootChainRequestableContractMapped)
  6469  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6470  			it.fail = err
  6471  			return false
  6472  		}
  6473  		it.Event.Raw = log
  6474  		return true
  6475  
  6476  	case err := <-it.sub.Err():
  6477  		it.done = true
  6478  		it.fail = err
  6479  		return it.Next()
  6480  	}
  6481  }
  6482  
  6483  // Error returns any retrieval or parsing error occurred during filtering.
  6484  func (it *RootChainRequestableContractMappedIterator) Error() error {
  6485  	return it.fail
  6486  }
  6487  
  6488  // Close terminates the iteration process, releasing any pending underlying
  6489  // resources.
  6490  func (it *RootChainRequestableContractMappedIterator) Close() error {
  6491  	it.sub.Unsubscribe()
  6492  	return nil
  6493  }
  6494  
  6495  // RootChainRequestableContractMapped represents a RequestableContractMapped event raised by the RootChain contract.
  6496  type RootChainRequestableContractMapped struct {
  6497  	ContractInRootchain  common.Address
  6498  	ContractInChildchain common.Address
  6499  	Raw                  types.Log // Blockchain specific contextual infos
  6500  }
  6501  
  6502  // FilterRequestableContractMapped is a free log retrieval operation binding the contract event 0xc5ec2ed49686197edd2ed642c7e6096893cc81e6658cde2527030316037715d0.
  6503  //
  6504  // Solidity: event RequestableContractMapped(address contractInRootchain, address contractInChildchain)
  6505  func (_RootChain *RootChainFilterer) FilterRequestableContractMapped(opts *bind.FilterOpts) (*RootChainRequestableContractMappedIterator, error) {
  6506  
  6507  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "RequestableContractMapped")
  6508  	if err != nil {
  6509  		return nil, err
  6510  	}
  6511  	return &RootChainRequestableContractMappedIterator{contract: _RootChain.contract, event: "RequestableContractMapped", logs: logs, sub: sub}, nil
  6512  }
  6513  
  6514  // WatchRequestableContractMapped is a free log subscription operation binding the contract event 0xc5ec2ed49686197edd2ed642c7e6096893cc81e6658cde2527030316037715d0.
  6515  //
  6516  // Solidity: event RequestableContractMapped(address contractInRootchain, address contractInChildchain)
  6517  func (_RootChain *RootChainFilterer) WatchRequestableContractMapped(opts *bind.WatchOpts, sink chan<- *RootChainRequestableContractMapped) (event.Subscription, error) {
  6518  
  6519  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "RequestableContractMapped")
  6520  	if err != nil {
  6521  		return nil, err
  6522  	}
  6523  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6524  		defer sub.Unsubscribe()
  6525  		for {
  6526  			select {
  6527  			case log := <-logs:
  6528  				// New log arrived, parse the event and forward to the user
  6529  				event := new(RootChainRequestableContractMapped)
  6530  				if err := _RootChain.contract.UnpackLog(event, "RequestableContractMapped", log); err != nil {
  6531  					return err
  6532  				}
  6533  				event.Raw = log
  6534  
  6535  				select {
  6536  				case sink <- event:
  6537  				case err := <-sub.Err():
  6538  					return err
  6539  				case <-quit:
  6540  					return nil
  6541  				}
  6542  			case err := <-sub.Err():
  6543  				return err
  6544  			case <-quit:
  6545  				return nil
  6546  			}
  6547  		}
  6548  	}), nil
  6549  }
  6550  
  6551  // ParseRequestableContractMapped is a log parse operation binding the contract event 0xc5ec2ed49686197edd2ed642c7e6096893cc81e6658cde2527030316037715d0.
  6552  //
  6553  // Solidity: event RequestableContractMapped(address contractInRootchain, address contractInChildchain)
  6554  func (_RootChain *RootChainFilterer) ParseRequestableContractMapped(log types.Log) (*RootChainRequestableContractMapped, error) {
  6555  	event := new(RootChainRequestableContractMapped)
  6556  	if err := _RootChain.contract.UnpackLog(event, "RequestableContractMapped", log); err != nil {
  6557  		return nil, err
  6558  	}
  6559  	return event, nil
  6560  }
  6561  
  6562  // RootChainSessionTimeoutIterator is returned from FilterSessionTimeout and is used to iterate over the raw logs and unpacked data for SessionTimeout events raised by the RootChain contract.
  6563  type RootChainSessionTimeoutIterator struct {
  6564  	Event *RootChainSessionTimeout // Event containing the contract specifics and raw log
  6565  
  6566  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6567  	event    string              // Event name to use for unpacking event data
  6568  
  6569  	logs chan types.Log        // Log channel receiving the found contract events
  6570  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6571  	done bool                  // Whether the subscription completed delivering logs
  6572  	fail error                 // Occurred error to stop iteration
  6573  }
  6574  
  6575  // Next advances the iterator to the subsequent event, returning whether there
  6576  // are any more events found. In case of a retrieval or parsing error, false is
  6577  // returned and Error() can be queried for the exact failure.
  6578  func (it *RootChainSessionTimeoutIterator) Next() bool {
  6579  	// If the iterator failed, stop iterating
  6580  	if it.fail != nil {
  6581  		return false
  6582  	}
  6583  	// If the iterator completed, deliver directly whatever's available
  6584  	if it.done {
  6585  		select {
  6586  		case log := <-it.logs:
  6587  			it.Event = new(RootChainSessionTimeout)
  6588  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6589  				it.fail = err
  6590  				return false
  6591  			}
  6592  			it.Event.Raw = log
  6593  			return true
  6594  
  6595  		default:
  6596  			return false
  6597  		}
  6598  	}
  6599  	// Iterator still in progress, wait for either a data or an error event
  6600  	select {
  6601  	case log := <-it.logs:
  6602  		it.Event = new(RootChainSessionTimeout)
  6603  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6604  			it.fail = err
  6605  			return false
  6606  		}
  6607  		it.Event.Raw = log
  6608  		return true
  6609  
  6610  	case err := <-it.sub.Err():
  6611  		it.done = true
  6612  		it.fail = err
  6613  		return it.Next()
  6614  	}
  6615  }
  6616  
  6617  // Error returns any retrieval or parsing error occurred during filtering.
  6618  func (it *RootChainSessionTimeoutIterator) Error() error {
  6619  	return it.fail
  6620  }
  6621  
  6622  // Close terminates the iteration process, releasing any pending underlying
  6623  // resources.
  6624  func (it *RootChainSessionTimeoutIterator) Close() error {
  6625  	it.sub.Unsubscribe()
  6626  	return nil
  6627  }
  6628  
  6629  // RootChainSessionTimeout represents a SessionTimeout event raised by the RootChain contract.
  6630  type RootChainSessionTimeout struct {
  6631  	UserActivated bool
  6632  	Raw           types.Log // Blockchain specific contextual infos
  6633  }
  6634  
  6635  // FilterSessionTimeout is a free log retrieval operation binding the contract event 0x2122ec719581cd177f225f59a1ee005831211196831f8f1ccffa817d2e7bd108.
  6636  //
  6637  // Solidity: event SessionTimeout(bool userActivated)
  6638  func (_RootChain *RootChainFilterer) FilterSessionTimeout(opts *bind.FilterOpts) (*RootChainSessionTimeoutIterator, error) {
  6639  
  6640  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "SessionTimeout")
  6641  	if err != nil {
  6642  		return nil, err
  6643  	}
  6644  	return &RootChainSessionTimeoutIterator{contract: _RootChain.contract, event: "SessionTimeout", logs: logs, sub: sub}, nil
  6645  }
  6646  
  6647  // WatchSessionTimeout is a free log subscription operation binding the contract event 0x2122ec719581cd177f225f59a1ee005831211196831f8f1ccffa817d2e7bd108.
  6648  //
  6649  // Solidity: event SessionTimeout(bool userActivated)
  6650  func (_RootChain *RootChainFilterer) WatchSessionTimeout(opts *bind.WatchOpts, sink chan<- *RootChainSessionTimeout) (event.Subscription, error) {
  6651  
  6652  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "SessionTimeout")
  6653  	if err != nil {
  6654  		return nil, err
  6655  	}
  6656  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6657  		defer sub.Unsubscribe()
  6658  		for {
  6659  			select {
  6660  			case log := <-logs:
  6661  				// New log arrived, parse the event and forward to the user
  6662  				event := new(RootChainSessionTimeout)
  6663  				if err := _RootChain.contract.UnpackLog(event, "SessionTimeout", log); err != nil {
  6664  					return err
  6665  				}
  6666  				event.Raw = log
  6667  
  6668  				select {
  6669  				case sink <- event:
  6670  				case err := <-sub.Err():
  6671  					return err
  6672  				case <-quit:
  6673  					return nil
  6674  				}
  6675  			case err := <-sub.Err():
  6676  				return err
  6677  			case <-quit:
  6678  				return nil
  6679  			}
  6680  		}
  6681  	}), nil
  6682  }
  6683  
  6684  // ParseSessionTimeout is a log parse operation binding the contract event 0x2122ec719581cd177f225f59a1ee005831211196831f8f1ccffa817d2e7bd108.
  6685  //
  6686  // Solidity: event SessionTimeout(bool userActivated)
  6687  func (_RootChain *RootChainFilterer) ParseSessionTimeout(log types.Log) (*RootChainSessionTimeout, error) {
  6688  	event := new(RootChainSessionTimeout)
  6689  	if err := _RootChain.contract.UnpackLog(event, "SessionTimeout", log); err != nil {
  6690  		return nil, err
  6691  	}
  6692  	return event, nil
  6693  }
  6694  
  6695  // RootChainSubmitterAddedIterator is returned from FilterSubmitterAdded and is used to iterate over the raw logs and unpacked data for SubmitterAdded events raised by the RootChain contract.
  6696  type RootChainSubmitterAddedIterator struct {
  6697  	Event *RootChainSubmitterAdded // Event containing the contract specifics and raw log
  6698  
  6699  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6700  	event    string              // Event name to use for unpacking event data
  6701  
  6702  	logs chan types.Log        // Log channel receiving the found contract events
  6703  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6704  	done bool                  // Whether the subscription completed delivering logs
  6705  	fail error                 // Occurred error to stop iteration
  6706  }
  6707  
  6708  // Next advances the iterator to the subsequent event, returning whether there
  6709  // are any more events found. In case of a retrieval or parsing error, false is
  6710  // returned and Error() can be queried for the exact failure.
  6711  func (it *RootChainSubmitterAddedIterator) Next() bool {
  6712  	// If the iterator failed, stop iterating
  6713  	if it.fail != nil {
  6714  		return false
  6715  	}
  6716  	// If the iterator completed, deliver directly whatever's available
  6717  	if it.done {
  6718  		select {
  6719  		case log := <-it.logs:
  6720  			it.Event = new(RootChainSubmitterAdded)
  6721  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6722  				it.fail = err
  6723  				return false
  6724  			}
  6725  			it.Event.Raw = log
  6726  			return true
  6727  
  6728  		default:
  6729  			return false
  6730  		}
  6731  	}
  6732  	// Iterator still in progress, wait for either a data or an error event
  6733  	select {
  6734  	case log := <-it.logs:
  6735  		it.Event = new(RootChainSubmitterAdded)
  6736  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6737  			it.fail = err
  6738  			return false
  6739  		}
  6740  		it.Event.Raw = log
  6741  		return true
  6742  
  6743  	case err := <-it.sub.Err():
  6744  		it.done = true
  6745  		it.fail = err
  6746  		return it.Next()
  6747  	}
  6748  }
  6749  
  6750  // Error returns any retrieval or parsing error occurred during filtering.
  6751  func (it *RootChainSubmitterAddedIterator) Error() error {
  6752  	return it.fail
  6753  }
  6754  
  6755  // Close terminates the iteration process, releasing any pending underlying
  6756  // resources.
  6757  func (it *RootChainSubmitterAddedIterator) Close() error {
  6758  	it.sub.Unsubscribe()
  6759  	return nil
  6760  }
  6761  
  6762  // RootChainSubmitterAdded represents a SubmitterAdded event raised by the RootChain contract.
  6763  type RootChainSubmitterAdded struct {
  6764  	Account common.Address
  6765  	Raw     types.Log // Blockchain specific contextual infos
  6766  }
  6767  
  6768  // FilterSubmitterAdded is a free log retrieval operation binding the contract event 0xb079bc2cbde1f186e0b351d4a87c4597e3ed098f571548617449e73506428d8b.
  6769  //
  6770  // Solidity: event SubmitterAdded(address indexed account)
  6771  func (_RootChain *RootChainFilterer) FilterSubmitterAdded(opts *bind.FilterOpts, account []common.Address) (*RootChainSubmitterAddedIterator, error) {
  6772  
  6773  	var accountRule []interface{}
  6774  	for _, accountItem := range account {
  6775  		accountRule = append(accountRule, accountItem)
  6776  	}
  6777  
  6778  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "SubmitterAdded", accountRule)
  6779  	if err != nil {
  6780  		return nil, err
  6781  	}
  6782  	return &RootChainSubmitterAddedIterator{contract: _RootChain.contract, event: "SubmitterAdded", logs: logs, sub: sub}, nil
  6783  }
  6784  
  6785  // WatchSubmitterAdded is a free log subscription operation binding the contract event 0xb079bc2cbde1f186e0b351d4a87c4597e3ed098f571548617449e73506428d8b.
  6786  //
  6787  // Solidity: event SubmitterAdded(address indexed account)
  6788  func (_RootChain *RootChainFilterer) WatchSubmitterAdded(opts *bind.WatchOpts, sink chan<- *RootChainSubmitterAdded, account []common.Address) (event.Subscription, error) {
  6789  
  6790  	var accountRule []interface{}
  6791  	for _, accountItem := range account {
  6792  		accountRule = append(accountRule, accountItem)
  6793  	}
  6794  
  6795  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "SubmitterAdded", accountRule)
  6796  	if err != nil {
  6797  		return nil, err
  6798  	}
  6799  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6800  		defer sub.Unsubscribe()
  6801  		for {
  6802  			select {
  6803  			case log := <-logs:
  6804  				// New log arrived, parse the event and forward to the user
  6805  				event := new(RootChainSubmitterAdded)
  6806  				if err := _RootChain.contract.UnpackLog(event, "SubmitterAdded", log); err != nil {
  6807  					return err
  6808  				}
  6809  				event.Raw = log
  6810  
  6811  				select {
  6812  				case sink <- event:
  6813  				case err := <-sub.Err():
  6814  					return err
  6815  				case <-quit:
  6816  					return nil
  6817  				}
  6818  			case err := <-sub.Err():
  6819  				return err
  6820  			case <-quit:
  6821  				return nil
  6822  			}
  6823  		}
  6824  	}), nil
  6825  }
  6826  
  6827  // ParseSubmitterAdded is a log parse operation binding the contract event 0xb079bc2cbde1f186e0b351d4a87c4597e3ed098f571548617449e73506428d8b.
  6828  //
  6829  // Solidity: event SubmitterAdded(address indexed account)
  6830  func (_RootChain *RootChainFilterer) ParseSubmitterAdded(log types.Log) (*RootChainSubmitterAdded, error) {
  6831  	event := new(RootChainSubmitterAdded)
  6832  	if err := _RootChain.contract.UnpackLog(event, "SubmitterAdded", log); err != nil {
  6833  		return nil, err
  6834  	}
  6835  	return event, nil
  6836  }
  6837  
  6838  // RootChainSubmitterRemovedIterator is returned from FilterSubmitterRemoved and is used to iterate over the raw logs and unpacked data for SubmitterRemoved events raised by the RootChain contract.
  6839  type RootChainSubmitterRemovedIterator struct {
  6840  	Event *RootChainSubmitterRemoved // Event containing the contract specifics and raw log
  6841  
  6842  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6843  	event    string              // Event name to use for unpacking event data
  6844  
  6845  	logs chan types.Log        // Log channel receiving the found contract events
  6846  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6847  	done bool                  // Whether the subscription completed delivering logs
  6848  	fail error                 // Occurred error to stop iteration
  6849  }
  6850  
  6851  // Next advances the iterator to the subsequent event, returning whether there
  6852  // are any more events found. In case of a retrieval or parsing error, false is
  6853  // returned and Error() can be queried for the exact failure.
  6854  func (it *RootChainSubmitterRemovedIterator) Next() bool {
  6855  	// If the iterator failed, stop iterating
  6856  	if it.fail != nil {
  6857  		return false
  6858  	}
  6859  	// If the iterator completed, deliver directly whatever's available
  6860  	if it.done {
  6861  		select {
  6862  		case log := <-it.logs:
  6863  			it.Event = new(RootChainSubmitterRemoved)
  6864  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6865  				it.fail = err
  6866  				return false
  6867  			}
  6868  			it.Event.Raw = log
  6869  			return true
  6870  
  6871  		default:
  6872  			return false
  6873  		}
  6874  	}
  6875  	// Iterator still in progress, wait for either a data or an error event
  6876  	select {
  6877  	case log := <-it.logs:
  6878  		it.Event = new(RootChainSubmitterRemoved)
  6879  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6880  			it.fail = err
  6881  			return false
  6882  		}
  6883  		it.Event.Raw = log
  6884  		return true
  6885  
  6886  	case err := <-it.sub.Err():
  6887  		it.done = true
  6888  		it.fail = err
  6889  		return it.Next()
  6890  	}
  6891  }
  6892  
  6893  // Error returns any retrieval or parsing error occurred during filtering.
  6894  func (it *RootChainSubmitterRemovedIterator) Error() error {
  6895  	return it.fail
  6896  }
  6897  
  6898  // Close terminates the iteration process, releasing any pending underlying
  6899  // resources.
  6900  func (it *RootChainSubmitterRemovedIterator) Close() error {
  6901  	it.sub.Unsubscribe()
  6902  	return nil
  6903  }
  6904  
  6905  // RootChainSubmitterRemoved represents a SubmitterRemoved event raised by the RootChain contract.
  6906  type RootChainSubmitterRemoved struct {
  6907  	Account common.Address
  6908  	Raw     types.Log // Blockchain specific contextual infos
  6909  }
  6910  
  6911  // FilterSubmitterRemoved is a free log retrieval operation binding the contract event 0xf84a004e1673d2f349a7c93c72b3794b8eba6d2f9338044d8c8cd260e51a57a1.
  6912  //
  6913  // Solidity: event SubmitterRemoved(address indexed account)
  6914  func (_RootChain *RootChainFilterer) FilterSubmitterRemoved(opts *bind.FilterOpts, account []common.Address) (*RootChainSubmitterRemovedIterator, error) {
  6915  
  6916  	var accountRule []interface{}
  6917  	for _, accountItem := range account {
  6918  		accountRule = append(accountRule, accountItem)
  6919  	}
  6920  
  6921  	logs, sub, err := _RootChain.contract.FilterLogs(opts, "SubmitterRemoved", accountRule)
  6922  	if err != nil {
  6923  		return nil, err
  6924  	}
  6925  	return &RootChainSubmitterRemovedIterator{contract: _RootChain.contract, event: "SubmitterRemoved", logs: logs, sub: sub}, nil
  6926  }
  6927  
  6928  // WatchSubmitterRemoved is a free log subscription operation binding the contract event 0xf84a004e1673d2f349a7c93c72b3794b8eba6d2f9338044d8c8cd260e51a57a1.
  6929  //
  6930  // Solidity: event SubmitterRemoved(address indexed account)
  6931  func (_RootChain *RootChainFilterer) WatchSubmitterRemoved(opts *bind.WatchOpts, sink chan<- *RootChainSubmitterRemoved, account []common.Address) (event.Subscription, error) {
  6932  
  6933  	var accountRule []interface{}
  6934  	for _, accountItem := range account {
  6935  		accountRule = append(accountRule, accountItem)
  6936  	}
  6937  
  6938  	logs, sub, err := _RootChain.contract.WatchLogs(opts, "SubmitterRemoved", accountRule)
  6939  	if err != nil {
  6940  		return nil, err
  6941  	}
  6942  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6943  		defer sub.Unsubscribe()
  6944  		for {
  6945  			select {
  6946  			case log := <-logs:
  6947  				// New log arrived, parse the event and forward to the user
  6948  				event := new(RootChainSubmitterRemoved)
  6949  				if err := _RootChain.contract.UnpackLog(event, "SubmitterRemoved", log); err != nil {
  6950  					return err
  6951  				}
  6952  				event.Raw = log
  6953  
  6954  				select {
  6955  				case sink <- event:
  6956  				case err := <-sub.Err():
  6957  					return err
  6958  				case <-quit:
  6959  					return nil
  6960  				}
  6961  			case err := <-sub.Err():
  6962  				return err
  6963  			case <-quit:
  6964  				return nil
  6965  			}
  6966  		}
  6967  	}), nil
  6968  }
  6969  
  6970  // ParseSubmitterRemoved is a log parse operation binding the contract event 0xf84a004e1673d2f349a7c93c72b3794b8eba6d2f9338044d8c8cd260e51a57a1.
  6971  //
  6972  // Solidity: event SubmitterRemoved(address indexed account)
  6973  func (_RootChain *RootChainFilterer) ParseSubmitterRemoved(log types.Log) (*RootChainSubmitterRemoved, error) {
  6974  	event := new(RootChainSubmitterRemoved)
  6975  	if err := _RootChain.contract.UnpackLog(event, "SubmitterRemoved", log); err != nil {
  6976  		return nil, err
  6977  	}
  6978  	return event, nil
  6979  }
  6980  
  6981  // RootChainBaseABI is the input ABI used to generate the binding from.
  6982  const RootChainBaseABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"BlockFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fork\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isRequest\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"BlockSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"requestor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trieKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"trieValue\",\"type\":\"bytes32\"}],\"name\":\"ERUCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"}],\"name\":\"EpochFilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"}],\"name\":\"EpochFilling\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endBlockNumber\",\"type\":\"uint256\"}],\"name\":\"EpochFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestStart\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestEnd\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"epochIsEmpty\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isRequest\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"rebase\",\"type\":\"bool\"}],\"name\":\"EpochPrepared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestStart\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestEnd\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"epochIsEmpty\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isRequest\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"EpochRebased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFork\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkedBlockNumber\",\"type\":\"uint256\"}],\"name\":\"Forked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newOperator\",\"type\":\"address\"}],\"name\":\"OperatorChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"RequestApplied\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"RequestChallenged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"requestor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weiAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"trieKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trieValue\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isExit\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"RequestCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"RequestFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractInRootchain\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractInChildchain\",\"type\":\"address\"}],\"name\":\"RequestableContractMapped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"SessionTimeout\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"COST_ERO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"COST_ERU\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"COST_NRB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"COST_ORB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"COST_URB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"COST_URB_PREPARE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CP_COMPUTATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CP_EXIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CP_WITHHOLDING\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"EROIdToFinalize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"EROs\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isExit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isTransfer\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"challenged\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"internalType\":\"addresspayable\",\"name\":\"requestor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"trieKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"trieValue\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ERUIdToFinalize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ERUs\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isExit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isTransfer\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"challenged\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"internalType\":\"addresspayable\",\"name\":\"requestor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"trieKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"trieValue\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"NRELength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"NULL_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ORBs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"submitted\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"numEnter\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"epochNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestStart\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestEnd\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"trie\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PREPARE_TIMEOUT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"REQUEST_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"URBs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"submitted\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"numEnter\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"epochNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestStart\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestEnd\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"trie\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"development\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"epochHandler\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"etherToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"firstFilledORENumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"firstNonEmptyRequestEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"forks\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"forkedBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"firstEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"firstBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastFinalizedEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastFinalizedBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"firstEnterEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastEnterEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextBlockToRebase\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"rebased\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRootChain\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastAppliedBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastAppliedEpochNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastAppliedForkNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lastNonEmptyRequestEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"numEnterForORB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"requestableContracts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"seigManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"submitHandler\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  6983  
  6984  // RootChainBaseFuncSigs maps the 4-byte function signature to its string representation.
  6985  var RootChainBaseFuncSigs = map[string]string{
  6986  	"d691acd8": "COST_ERO()",
  6987  	"8b5172d0": "COST_ERU()",
  6988  	"94be3aa5": "COST_NRB()",
  6989  	"b2ae9ba8": "COST_ORB()",
  6990  	"192adc5b": "COST_URB()",
  6991  	"033cfbed": "COST_URB_PREPARE()",
  6992  	"08c4fff0": "CP_COMPUTATION()",
  6993  	"8155717d": "CP_EXIT()",
  6994  	"b17fa6e9": "CP_WITHHOLDING()",
  6995  	"2dc6bb7b": "EROIdToFinalize()",
  6996  	"b443f3cc": "EROs(uint256)",
  6997  	"c54626cc": "ERUIdToFinalize()",
  6998  	"f4f31de4": "ERUs(uint256)",
  6999  	"ab96da2d": "NRELength()",
  7000  	"de0ce17d": "NULL_ADDRESS()",
  7001  	"ea7f22a8": "ORBs(uint256)",
  7002  	"c2bc88fa": "PREPARE_TIMEOUT()",
  7003  	"8eb288ca": "REQUEST_GAS()",
  7004  	"c0e86064": "URBs(uint256)",
  7005  	"183d2d1c": "currentFork()",
  7006  	"7b929c27": "development()",
  7007  	"e7b88b80": "epochHandler()",
  7008  	"b8066bcb": "etherToken()",
  7009  	"72ecb9a8": "firstFilledORENumber(uint256)",
  7010  	"ca6f6380": "firstNonEmptyRequestEpoch(uint256)",
  7011  	"4ba3a126": "forks(uint256)",
  7012  	"420bb4b8": "isRootChain()",
  7013  	"fb788a27": "lastAppliedBlockNumber()",
  7014  	"c8ad329f": "lastAppliedEpochNumber()",
  7015  	"164bc2ae": "lastAppliedForkNumber()",
  7016  	"b6715647": "lastNonEmptyRequestEpoch(uint256)",
  7017  	"23691566": "numEnterForORB()",
  7018  	"570ca735": "operator()",
  7019  	"da0185f8": "requestableContracts(address)",
  7020  	"6fb7f558": "seigManager()",
  7021  	"e259faf7": "submitHandler()",
  7022  }
  7023  
  7024  // RootChainBaseBin is the compiled bytecode used for deploying new contracts.
  7025  var RootChainBaseBin = "0x608060405234801561001057600080fd5b50610927806100206000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c8063b17fa6e911610125578063ca6f6380116100ad578063e259faf71161007c578063e259faf714610585578063e7b88b801461058d578063ea7f22a814610595578063f4f31de4146105b2578063fb788a27146105cf5761021c565b8063ca6f63801461053a578063d691acd814610221578063da0185f814610557578063de0ce17d1461057d5761021c565b8063b8066bcb116100f4578063b8066bcb146104b1578063c0e86064146104b9578063c2bc88fa14610522578063c54626cc1461052a578063c8ad329f146105325761021c565b8063b17fa6e91461037c578063b2ae9ba814610221578063b443f3cc14610384578063b6715647146104945761021c565b8063570ca735116101a85780638155717d116101775780638155717d146103645780638b5172d0146102215780638eb288ca1461036c57806394be3aa514610221578063ab96da2d146103745761021c565b8063570ca735146103135780636fb7f5581461033757806372ecb9a81461033f5780637b929c271461035c5761021c565b8063192adc5b116101ef578063192adc5b1461022157806323691566146102535780632dc6bb7b1461025b578063420bb4b8146102635780634ba3a1261461027f5761021c565b8063033cfbed1461022157806308c4fff01461023b578063164bc2ae14610243578063183d2d1c1461024b575b600080fd5b6102296105d7565b60408051918252519081900360200190f35b6102296105dc565b6102296105e1565b6102296105e7565b6102296105ed565b6102296105f3565b61026b6105f9565b604080519115158252519081900360200190f35b61029c6004803603602081101561029557600080fd5b50356105fe565b6040805167ffffffffffffffff9d8e1681529b8d1660208d0152998c168b8b0152978b1660608b0152958a1660808a015293891660a089015291881660c0880152871660e0870152861661010086015285166101208501529093166101408301529115156101608201529051908190036101800190f35b61031b610676565b604080516001600160a01b039092168252519081900360200190f35b61031b61068a565b6102296004803603602081101561035557600080fd5b5035610699565b61026b6106ab565b6102296106b4565b6102296106b9565b6102296106c0565b6102296106c6565b6103a16004803603602081101561039a57600080fd5b50356106cb565b6040805167ffffffffffffffff8d1681528b15156020808301919091528b151592820192909252891515606082015288151560808201526001600160801b03881660a08201526001600160a01b0380881660c0830152861660e082015261010081018590526101208101849052610160610140820181815284519183019190915283519192909161018084019185019080838360005b8381101561044f578181015183820152602001610437565b50505050905090810190601f16801561047c5780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060405180910390f35b610229600480360360208110156104aa57600080fd5b50356107ed565b61031b6107ff565b6104d6600480360360208110156104cf57600080fd5b503561080e565b60408051961515875267ffffffffffffffff958616602088015293851686850152918416606086015290921660808401526001600160a01b0390911660a0830152519081900360c00190f35b610229610876565b61022961087b565b610229610881565b6102296004803603602081101561055057600080fd5b5035610887565b61031b6004803603602081101561056d57600080fd5b50356001600160a01b0316610899565b61031b6105d7565b61031b6108b4565b61031b6108c3565b6104d6600480360360208110156105ab57600080fd5b50356108d2565b6103a1600480360360208110156105c857600080fd5b50356108df565b6102296108ec565b600081565b600f81565b60105481565b60065481565b600d5481565b60135481565b600181565b60086020526000908152604090208054600182015460029092015467ffffffffffffffff80831693600160401b808504831694600160801b808204851695600160c01b92839004861695858116958581048216958482048316959182900483169484841694918204841693908204169160ff9104168c565b60005461010090046001600160a01b031681565b6004546001600160a01b031681565b60076020526000908152604090205481565b60005460ff1681565b600a81565b620186a081565b60055481565b601481565b600981815481106106d857fe5b6000918252602091829020600691909102018054600180830154600280850154600386015460048701546005880180546040805161010099831615999099026000190190911695909504601f81018b90048b0288018b0190955284875267ffffffffffffffff88169a50600160401b880460ff9081169a600160481b8a0482169a600160501b8b0483169a600160581b810490931699600160601b9093046001600160801b0316986001600160a01b03908116989716969093918301828280156107e35780601f106107b8576101008083540402835291602001916107e3565b820191906000526020600020905b8154815290600101906020018083116107c657829003601f168201915b505050505090508b565b600e6020526000908152604090205481565b6003546001600160a01b031681565b600c818154811061081b57fe5b60009182526020909120600290910201805460019091015460ff8216925067ffffffffffffffff6101008304811692600160481b8104821692600160881b9091048216918116906001600160a01b03600160401b9091041686565b603c81565b60145481565b60115481565b600f6020526000908152604090205481565b6015602052600090815260409020546001600160a01b031681565b6002546001600160a01b031681565b6001546001600160a01b031681565b600b818154811061081b57fe5b600a81815481106106d857fe5b6012548156fea265627a7a72315820caa1bece88c45e45da9bb43f2c28f1168891cf641eeeb099e1f946f89f73c30f64736f6c634300050c0032"
  7026  
  7027  // DeployRootChainBase deploys a new Ethereum contract, binding an instance of RootChainBase to it.
  7028  func DeployRootChainBase(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *RootChainBase, error) {
  7029  	parsed, err := abi.JSON(strings.NewReader(RootChainBaseABI))
  7030  	if err != nil {
  7031  		return common.Address{}, nil, nil, err
  7032  	}
  7033  
  7034  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RootChainBaseBin), backend)
  7035  	if err != nil {
  7036  		return common.Address{}, nil, nil, err
  7037  	}
  7038  	return address, tx, &RootChainBase{RootChainBaseCaller: RootChainBaseCaller{contract: contract}, RootChainBaseTransactor: RootChainBaseTransactor{contract: contract}, RootChainBaseFilterer: RootChainBaseFilterer{contract: contract}}, nil
  7039  }
  7040  
  7041  // RootChainBase is an auto generated Go binding around an Ethereum contract.
  7042  type RootChainBase struct {
  7043  	RootChainBaseCaller     // Read-only binding to the contract
  7044  	RootChainBaseTransactor // Write-only binding to the contract
  7045  	RootChainBaseFilterer   // Log filterer for contract events
  7046  }
  7047  
  7048  // RootChainBaseCaller is an auto generated read-only Go binding around an Ethereum contract.
  7049  type RootChainBaseCaller struct {
  7050  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7051  }
  7052  
  7053  // RootChainBaseTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7054  type RootChainBaseTransactor struct {
  7055  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7056  }
  7057  
  7058  // RootChainBaseFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7059  type RootChainBaseFilterer struct {
  7060  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7061  }
  7062  
  7063  // RootChainBaseSession is an auto generated Go binding around an Ethereum contract,
  7064  // with pre-set call and transact options.
  7065  type RootChainBaseSession struct {
  7066  	Contract     *RootChainBase    // Generic contract binding to set the session for
  7067  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7068  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7069  }
  7070  
  7071  // RootChainBaseCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7072  // with pre-set call options.
  7073  type RootChainBaseCallerSession struct {
  7074  	Contract *RootChainBaseCaller // Generic contract caller binding to set the session for
  7075  	CallOpts bind.CallOpts        // Call options to use throughout this session
  7076  }
  7077  
  7078  // RootChainBaseTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7079  // with pre-set transact options.
  7080  type RootChainBaseTransactorSession struct {
  7081  	Contract     *RootChainBaseTransactor // Generic contract transactor binding to set the session for
  7082  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  7083  }
  7084  
  7085  // RootChainBaseRaw is an auto generated low-level Go binding around an Ethereum contract.
  7086  type RootChainBaseRaw struct {
  7087  	Contract *RootChainBase // Generic contract binding to access the raw methods on
  7088  }
  7089  
  7090  // RootChainBaseCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7091  type RootChainBaseCallerRaw struct {
  7092  	Contract *RootChainBaseCaller // Generic read-only contract binding to access the raw methods on
  7093  }
  7094  
  7095  // RootChainBaseTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  7096  type RootChainBaseTransactorRaw struct {
  7097  	Contract *RootChainBaseTransactor // Generic write-only contract binding to access the raw methods on
  7098  }
  7099  
  7100  // NewRootChainBase creates a new instance of RootChainBase, bound to a specific deployed contract.
  7101  func NewRootChainBase(address common.Address, backend bind.ContractBackend) (*RootChainBase, error) {
  7102  	contract, err := bindRootChainBase(address, backend, backend, backend)
  7103  	if err != nil {
  7104  		return nil, err
  7105  	}
  7106  	return &RootChainBase{RootChainBaseCaller: RootChainBaseCaller{contract: contract}, RootChainBaseTransactor: RootChainBaseTransactor{contract: contract}, RootChainBaseFilterer: RootChainBaseFilterer{contract: contract}}, nil
  7107  }
  7108  
  7109  // NewRootChainBaseCaller creates a new read-only instance of RootChainBase, bound to a specific deployed contract.
  7110  func NewRootChainBaseCaller(address common.Address, caller bind.ContractCaller) (*RootChainBaseCaller, error) {
  7111  	contract, err := bindRootChainBase(address, caller, nil, nil)
  7112  	if err != nil {
  7113  		return nil, err
  7114  	}
  7115  	return &RootChainBaseCaller{contract: contract}, nil
  7116  }
  7117  
  7118  // NewRootChainBaseTransactor creates a new write-only instance of RootChainBase, bound to a specific deployed contract.
  7119  func NewRootChainBaseTransactor(address common.Address, transactor bind.ContractTransactor) (*RootChainBaseTransactor, error) {
  7120  	contract, err := bindRootChainBase(address, nil, transactor, nil)
  7121  	if err != nil {
  7122  		return nil, err
  7123  	}
  7124  	return &RootChainBaseTransactor{contract: contract}, nil
  7125  }
  7126  
  7127  // NewRootChainBaseFilterer creates a new log filterer instance of RootChainBase, bound to a specific deployed contract.
  7128  func NewRootChainBaseFilterer(address common.Address, filterer bind.ContractFilterer) (*RootChainBaseFilterer, error) {
  7129  	contract, err := bindRootChainBase(address, nil, nil, filterer)
  7130  	if err != nil {
  7131  		return nil, err
  7132  	}
  7133  	return &RootChainBaseFilterer{contract: contract}, nil
  7134  }
  7135  
  7136  // bindRootChainBase binds a generic wrapper to an already deployed contract.
  7137  func bindRootChainBase(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7138  	parsed, err := abi.JSON(strings.NewReader(RootChainBaseABI))
  7139  	if err != nil {
  7140  		return nil, err
  7141  	}
  7142  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7143  }
  7144  
  7145  // Call invokes the (constant) contract method with params as input values and
  7146  // sets the output to result. The result type might be a single field for simple
  7147  // returns, a slice of interfaces for anonymous returns and a struct for named
  7148  // returns.
  7149  func (_RootChainBase *RootChainBaseRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7150  	return _RootChainBase.Contract.RootChainBaseCaller.contract.Call(opts, result, method, params...)
  7151  }
  7152  
  7153  // Transfer initiates a plain transaction to move funds to the contract, calling
  7154  // its default method if one is available.
  7155  func (_RootChainBase *RootChainBaseRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7156  	return _RootChainBase.Contract.RootChainBaseTransactor.contract.Transfer(opts)
  7157  }
  7158  
  7159  // Transact invokes the (paid) contract method with params as input values.
  7160  func (_RootChainBase *RootChainBaseRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7161  	return _RootChainBase.Contract.RootChainBaseTransactor.contract.Transact(opts, method, params...)
  7162  }
  7163  
  7164  // Call invokes the (constant) contract method with params as input values and
  7165  // sets the output to result. The result type might be a single field for simple
  7166  // returns, a slice of interfaces for anonymous returns and a struct for named
  7167  // returns.
  7168  func (_RootChainBase *RootChainBaseCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7169  	return _RootChainBase.Contract.contract.Call(opts, result, method, params...)
  7170  }
  7171  
  7172  // Transfer initiates a plain transaction to move funds to the contract, calling
  7173  // its default method if one is available.
  7174  func (_RootChainBase *RootChainBaseTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7175  	return _RootChainBase.Contract.contract.Transfer(opts)
  7176  }
  7177  
  7178  // Transact invokes the (paid) contract method with params as input values.
  7179  func (_RootChainBase *RootChainBaseTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7180  	return _RootChainBase.Contract.contract.Transact(opts, method, params...)
  7181  }
  7182  
  7183  // COSTERO is a free data retrieval call binding the contract method 0xd691acd8.
  7184  //
  7185  // Solidity: function COST_ERO() constant returns(uint256)
  7186  func (_RootChainBase *RootChainBaseCaller) COSTERO(opts *bind.CallOpts) (*big.Int, error) {
  7187  	var (
  7188  		ret0 = new(*big.Int)
  7189  	)
  7190  	out := ret0
  7191  	err := _RootChainBase.contract.Call(opts, out, "COST_ERO")
  7192  	return *ret0, err
  7193  }
  7194  
  7195  // COSTERO is a free data retrieval call binding the contract method 0xd691acd8.
  7196  //
  7197  // Solidity: function COST_ERO() constant returns(uint256)
  7198  func (_RootChainBase *RootChainBaseSession) COSTERO() (*big.Int, error) {
  7199  	return _RootChainBase.Contract.COSTERO(&_RootChainBase.CallOpts)
  7200  }
  7201  
  7202  // COSTERO is a free data retrieval call binding the contract method 0xd691acd8.
  7203  //
  7204  // Solidity: function COST_ERO() constant returns(uint256)
  7205  func (_RootChainBase *RootChainBaseCallerSession) COSTERO() (*big.Int, error) {
  7206  	return _RootChainBase.Contract.COSTERO(&_RootChainBase.CallOpts)
  7207  }
  7208  
  7209  // COSTERU is a free data retrieval call binding the contract method 0x8b5172d0.
  7210  //
  7211  // Solidity: function COST_ERU() constant returns(uint256)
  7212  func (_RootChainBase *RootChainBaseCaller) COSTERU(opts *bind.CallOpts) (*big.Int, error) {
  7213  	var (
  7214  		ret0 = new(*big.Int)
  7215  	)
  7216  	out := ret0
  7217  	err := _RootChainBase.contract.Call(opts, out, "COST_ERU")
  7218  	return *ret0, err
  7219  }
  7220  
  7221  // COSTERU is a free data retrieval call binding the contract method 0x8b5172d0.
  7222  //
  7223  // Solidity: function COST_ERU() constant returns(uint256)
  7224  func (_RootChainBase *RootChainBaseSession) COSTERU() (*big.Int, error) {
  7225  	return _RootChainBase.Contract.COSTERU(&_RootChainBase.CallOpts)
  7226  }
  7227  
  7228  // COSTERU is a free data retrieval call binding the contract method 0x8b5172d0.
  7229  //
  7230  // Solidity: function COST_ERU() constant returns(uint256)
  7231  func (_RootChainBase *RootChainBaseCallerSession) COSTERU() (*big.Int, error) {
  7232  	return _RootChainBase.Contract.COSTERU(&_RootChainBase.CallOpts)
  7233  }
  7234  
  7235  // COSTNRB is a free data retrieval call binding the contract method 0x94be3aa5.
  7236  //
  7237  // Solidity: function COST_NRB() constant returns(uint256)
  7238  func (_RootChainBase *RootChainBaseCaller) COSTNRB(opts *bind.CallOpts) (*big.Int, error) {
  7239  	var (
  7240  		ret0 = new(*big.Int)
  7241  	)
  7242  	out := ret0
  7243  	err := _RootChainBase.contract.Call(opts, out, "COST_NRB")
  7244  	return *ret0, err
  7245  }
  7246  
  7247  // COSTNRB is a free data retrieval call binding the contract method 0x94be3aa5.
  7248  //
  7249  // Solidity: function COST_NRB() constant returns(uint256)
  7250  func (_RootChainBase *RootChainBaseSession) COSTNRB() (*big.Int, error) {
  7251  	return _RootChainBase.Contract.COSTNRB(&_RootChainBase.CallOpts)
  7252  }
  7253  
  7254  // COSTNRB is a free data retrieval call binding the contract method 0x94be3aa5.
  7255  //
  7256  // Solidity: function COST_NRB() constant returns(uint256)
  7257  func (_RootChainBase *RootChainBaseCallerSession) COSTNRB() (*big.Int, error) {
  7258  	return _RootChainBase.Contract.COSTNRB(&_RootChainBase.CallOpts)
  7259  }
  7260  
  7261  // COSTORB is a free data retrieval call binding the contract method 0xb2ae9ba8.
  7262  //
  7263  // Solidity: function COST_ORB() constant returns(uint256)
  7264  func (_RootChainBase *RootChainBaseCaller) COSTORB(opts *bind.CallOpts) (*big.Int, error) {
  7265  	var (
  7266  		ret0 = new(*big.Int)
  7267  	)
  7268  	out := ret0
  7269  	err := _RootChainBase.contract.Call(opts, out, "COST_ORB")
  7270  	return *ret0, err
  7271  }
  7272  
  7273  // COSTORB is a free data retrieval call binding the contract method 0xb2ae9ba8.
  7274  //
  7275  // Solidity: function COST_ORB() constant returns(uint256)
  7276  func (_RootChainBase *RootChainBaseSession) COSTORB() (*big.Int, error) {
  7277  	return _RootChainBase.Contract.COSTORB(&_RootChainBase.CallOpts)
  7278  }
  7279  
  7280  // COSTORB is a free data retrieval call binding the contract method 0xb2ae9ba8.
  7281  //
  7282  // Solidity: function COST_ORB() constant returns(uint256)
  7283  func (_RootChainBase *RootChainBaseCallerSession) COSTORB() (*big.Int, error) {
  7284  	return _RootChainBase.Contract.COSTORB(&_RootChainBase.CallOpts)
  7285  }
  7286  
  7287  // COSTURB is a free data retrieval call binding the contract method 0x192adc5b.
  7288  //
  7289  // Solidity: function COST_URB() constant returns(uint256)
  7290  func (_RootChainBase *RootChainBaseCaller) COSTURB(opts *bind.CallOpts) (*big.Int, error) {
  7291  	var (
  7292  		ret0 = new(*big.Int)
  7293  	)
  7294  	out := ret0
  7295  	err := _RootChainBase.contract.Call(opts, out, "COST_URB")
  7296  	return *ret0, err
  7297  }
  7298  
  7299  // COSTURB is a free data retrieval call binding the contract method 0x192adc5b.
  7300  //
  7301  // Solidity: function COST_URB() constant returns(uint256)
  7302  func (_RootChainBase *RootChainBaseSession) COSTURB() (*big.Int, error) {
  7303  	return _RootChainBase.Contract.COSTURB(&_RootChainBase.CallOpts)
  7304  }
  7305  
  7306  // COSTURB is a free data retrieval call binding the contract method 0x192adc5b.
  7307  //
  7308  // Solidity: function COST_URB() constant returns(uint256)
  7309  func (_RootChainBase *RootChainBaseCallerSession) COSTURB() (*big.Int, error) {
  7310  	return _RootChainBase.Contract.COSTURB(&_RootChainBase.CallOpts)
  7311  }
  7312  
  7313  // COSTURBPREPARE is a free data retrieval call binding the contract method 0x033cfbed.
  7314  //
  7315  // Solidity: function COST_URB_PREPARE() constant returns(uint256)
  7316  func (_RootChainBase *RootChainBaseCaller) COSTURBPREPARE(opts *bind.CallOpts) (*big.Int, error) {
  7317  	var (
  7318  		ret0 = new(*big.Int)
  7319  	)
  7320  	out := ret0
  7321  	err := _RootChainBase.contract.Call(opts, out, "COST_URB_PREPARE")
  7322  	return *ret0, err
  7323  }
  7324  
  7325  // COSTURBPREPARE is a free data retrieval call binding the contract method 0x033cfbed.
  7326  //
  7327  // Solidity: function COST_URB_PREPARE() constant returns(uint256)
  7328  func (_RootChainBase *RootChainBaseSession) COSTURBPREPARE() (*big.Int, error) {
  7329  	return _RootChainBase.Contract.COSTURBPREPARE(&_RootChainBase.CallOpts)
  7330  }
  7331  
  7332  // COSTURBPREPARE is a free data retrieval call binding the contract method 0x033cfbed.
  7333  //
  7334  // Solidity: function COST_URB_PREPARE() constant returns(uint256)
  7335  func (_RootChainBase *RootChainBaseCallerSession) COSTURBPREPARE() (*big.Int, error) {
  7336  	return _RootChainBase.Contract.COSTURBPREPARE(&_RootChainBase.CallOpts)
  7337  }
  7338  
  7339  // CPCOMPUTATION is a free data retrieval call binding the contract method 0x08c4fff0.
  7340  //
  7341  // Solidity: function CP_COMPUTATION() constant returns(uint256)
  7342  func (_RootChainBase *RootChainBaseCaller) CPCOMPUTATION(opts *bind.CallOpts) (*big.Int, error) {
  7343  	var (
  7344  		ret0 = new(*big.Int)
  7345  	)
  7346  	out := ret0
  7347  	err := _RootChainBase.contract.Call(opts, out, "CP_COMPUTATION")
  7348  	return *ret0, err
  7349  }
  7350  
  7351  // CPCOMPUTATION is a free data retrieval call binding the contract method 0x08c4fff0.
  7352  //
  7353  // Solidity: function CP_COMPUTATION() constant returns(uint256)
  7354  func (_RootChainBase *RootChainBaseSession) CPCOMPUTATION() (*big.Int, error) {
  7355  	return _RootChainBase.Contract.CPCOMPUTATION(&_RootChainBase.CallOpts)
  7356  }
  7357  
  7358  // CPCOMPUTATION is a free data retrieval call binding the contract method 0x08c4fff0.
  7359  //
  7360  // Solidity: function CP_COMPUTATION() constant returns(uint256)
  7361  func (_RootChainBase *RootChainBaseCallerSession) CPCOMPUTATION() (*big.Int, error) {
  7362  	return _RootChainBase.Contract.CPCOMPUTATION(&_RootChainBase.CallOpts)
  7363  }
  7364  
  7365  // CPEXIT is a free data retrieval call binding the contract method 0x8155717d.
  7366  //
  7367  // Solidity: function CP_EXIT() constant returns(uint256)
  7368  func (_RootChainBase *RootChainBaseCaller) CPEXIT(opts *bind.CallOpts) (*big.Int, error) {
  7369  	var (
  7370  		ret0 = new(*big.Int)
  7371  	)
  7372  	out := ret0
  7373  	err := _RootChainBase.contract.Call(opts, out, "CP_EXIT")
  7374  	return *ret0, err
  7375  }
  7376  
  7377  // CPEXIT is a free data retrieval call binding the contract method 0x8155717d.
  7378  //
  7379  // Solidity: function CP_EXIT() constant returns(uint256)
  7380  func (_RootChainBase *RootChainBaseSession) CPEXIT() (*big.Int, error) {
  7381  	return _RootChainBase.Contract.CPEXIT(&_RootChainBase.CallOpts)
  7382  }
  7383  
  7384  // CPEXIT is a free data retrieval call binding the contract method 0x8155717d.
  7385  //
  7386  // Solidity: function CP_EXIT() constant returns(uint256)
  7387  func (_RootChainBase *RootChainBaseCallerSession) CPEXIT() (*big.Int, error) {
  7388  	return _RootChainBase.Contract.CPEXIT(&_RootChainBase.CallOpts)
  7389  }
  7390  
  7391  // CPWITHHOLDING is a free data retrieval call binding the contract method 0xb17fa6e9.
  7392  //
  7393  // Solidity: function CP_WITHHOLDING() constant returns(uint256)
  7394  func (_RootChainBase *RootChainBaseCaller) CPWITHHOLDING(opts *bind.CallOpts) (*big.Int, error) {
  7395  	var (
  7396  		ret0 = new(*big.Int)
  7397  	)
  7398  	out := ret0
  7399  	err := _RootChainBase.contract.Call(opts, out, "CP_WITHHOLDING")
  7400  	return *ret0, err
  7401  }
  7402  
  7403  // CPWITHHOLDING is a free data retrieval call binding the contract method 0xb17fa6e9.
  7404  //
  7405  // Solidity: function CP_WITHHOLDING() constant returns(uint256)
  7406  func (_RootChainBase *RootChainBaseSession) CPWITHHOLDING() (*big.Int, error) {
  7407  	return _RootChainBase.Contract.CPWITHHOLDING(&_RootChainBase.CallOpts)
  7408  }
  7409  
  7410  // CPWITHHOLDING is a free data retrieval call binding the contract method 0xb17fa6e9.
  7411  //
  7412  // Solidity: function CP_WITHHOLDING() constant returns(uint256)
  7413  func (_RootChainBase *RootChainBaseCallerSession) CPWITHHOLDING() (*big.Int, error) {
  7414  	return _RootChainBase.Contract.CPWITHHOLDING(&_RootChainBase.CallOpts)
  7415  }
  7416  
  7417  // EROIdToFinalize is a free data retrieval call binding the contract method 0x2dc6bb7b.
  7418  //
  7419  // Solidity: function EROIdToFinalize() constant returns(uint256)
  7420  func (_RootChainBase *RootChainBaseCaller) EROIdToFinalize(opts *bind.CallOpts) (*big.Int, error) {
  7421  	var (
  7422  		ret0 = new(*big.Int)
  7423  	)
  7424  	out := ret0
  7425  	err := _RootChainBase.contract.Call(opts, out, "EROIdToFinalize")
  7426  	return *ret0, err
  7427  }
  7428  
  7429  // EROIdToFinalize is a free data retrieval call binding the contract method 0x2dc6bb7b.
  7430  //
  7431  // Solidity: function EROIdToFinalize() constant returns(uint256)
  7432  func (_RootChainBase *RootChainBaseSession) EROIdToFinalize() (*big.Int, error) {
  7433  	return _RootChainBase.Contract.EROIdToFinalize(&_RootChainBase.CallOpts)
  7434  }
  7435  
  7436  // EROIdToFinalize is a free data retrieval call binding the contract method 0x2dc6bb7b.
  7437  //
  7438  // Solidity: function EROIdToFinalize() constant returns(uint256)
  7439  func (_RootChainBase *RootChainBaseCallerSession) EROIdToFinalize() (*big.Int, error) {
  7440  	return _RootChainBase.Contract.EROIdToFinalize(&_RootChainBase.CallOpts)
  7441  }
  7442  
  7443  // EROs is a free data retrieval call binding the contract method 0xb443f3cc.
  7444  //
  7445  // Solidity: function EROs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
  7446  func (_RootChainBase *RootChainBaseCaller) EROs(opts *bind.CallOpts, arg0 *big.Int) (struct {
  7447  	Timestamp  uint64
  7448  	IsExit     bool
  7449  	IsTransfer bool
  7450  	Finalized  bool
  7451  	Challenged bool
  7452  	Value      *big.Int
  7453  	Requestor  common.Address
  7454  	To         common.Address
  7455  	TrieKey    [32]byte
  7456  	Hash       [32]byte
  7457  	TrieValue  []byte
  7458  }, error) {
  7459  	ret := new(struct {
  7460  		Timestamp  uint64
  7461  		IsExit     bool
  7462  		IsTransfer bool
  7463  		Finalized  bool
  7464  		Challenged bool
  7465  		Value      *big.Int
  7466  		Requestor  common.Address
  7467  		To         common.Address
  7468  		TrieKey    [32]byte
  7469  		Hash       [32]byte
  7470  		TrieValue  []byte
  7471  	})
  7472  	out := ret
  7473  	err := _RootChainBase.contract.Call(opts, out, "EROs", arg0)
  7474  	return *ret, err
  7475  }
  7476  
  7477  // EROs is a free data retrieval call binding the contract method 0xb443f3cc.
  7478  //
  7479  // Solidity: function EROs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
  7480  func (_RootChainBase *RootChainBaseSession) EROs(arg0 *big.Int) (struct {
  7481  	Timestamp  uint64
  7482  	IsExit     bool
  7483  	IsTransfer bool
  7484  	Finalized  bool
  7485  	Challenged bool
  7486  	Value      *big.Int
  7487  	Requestor  common.Address
  7488  	To         common.Address
  7489  	TrieKey    [32]byte
  7490  	Hash       [32]byte
  7491  	TrieValue  []byte
  7492  }, error) {
  7493  	return _RootChainBase.Contract.EROs(&_RootChainBase.CallOpts, arg0)
  7494  }
  7495  
  7496  // EROs is a free data retrieval call binding the contract method 0xb443f3cc.
  7497  //
  7498  // Solidity: function EROs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
  7499  func (_RootChainBase *RootChainBaseCallerSession) EROs(arg0 *big.Int) (struct {
  7500  	Timestamp  uint64
  7501  	IsExit     bool
  7502  	IsTransfer bool
  7503  	Finalized  bool
  7504  	Challenged bool
  7505  	Value      *big.Int
  7506  	Requestor  common.Address
  7507  	To         common.Address
  7508  	TrieKey    [32]byte
  7509  	Hash       [32]byte
  7510  	TrieValue  []byte
  7511  }, error) {
  7512  	return _RootChainBase.Contract.EROs(&_RootChainBase.CallOpts, arg0)
  7513  }
  7514  
  7515  // ERUIdToFinalize is a free data retrieval call binding the contract method 0xc54626cc.
  7516  //
  7517  // Solidity: function ERUIdToFinalize() constant returns(uint256)
  7518  func (_RootChainBase *RootChainBaseCaller) ERUIdToFinalize(opts *bind.CallOpts) (*big.Int, error) {
  7519  	var (
  7520  		ret0 = new(*big.Int)
  7521  	)
  7522  	out := ret0
  7523  	err := _RootChainBase.contract.Call(opts, out, "ERUIdToFinalize")
  7524  	return *ret0, err
  7525  }
  7526  
  7527  // ERUIdToFinalize is a free data retrieval call binding the contract method 0xc54626cc.
  7528  //
  7529  // Solidity: function ERUIdToFinalize() constant returns(uint256)
  7530  func (_RootChainBase *RootChainBaseSession) ERUIdToFinalize() (*big.Int, error) {
  7531  	return _RootChainBase.Contract.ERUIdToFinalize(&_RootChainBase.CallOpts)
  7532  }
  7533  
  7534  // ERUIdToFinalize is a free data retrieval call binding the contract method 0xc54626cc.
  7535  //
  7536  // Solidity: function ERUIdToFinalize() constant returns(uint256)
  7537  func (_RootChainBase *RootChainBaseCallerSession) ERUIdToFinalize() (*big.Int, error) {
  7538  	return _RootChainBase.Contract.ERUIdToFinalize(&_RootChainBase.CallOpts)
  7539  }
  7540  
  7541  // ERUs is a free data retrieval call binding the contract method 0xf4f31de4.
  7542  //
  7543  // Solidity: function ERUs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
  7544  func (_RootChainBase *RootChainBaseCaller) ERUs(opts *bind.CallOpts, arg0 *big.Int) (struct {
  7545  	Timestamp  uint64
  7546  	IsExit     bool
  7547  	IsTransfer bool
  7548  	Finalized  bool
  7549  	Challenged bool
  7550  	Value      *big.Int
  7551  	Requestor  common.Address
  7552  	To         common.Address
  7553  	TrieKey    [32]byte
  7554  	Hash       [32]byte
  7555  	TrieValue  []byte
  7556  }, error) {
  7557  	ret := new(struct {
  7558  		Timestamp  uint64
  7559  		IsExit     bool
  7560  		IsTransfer bool
  7561  		Finalized  bool
  7562  		Challenged bool
  7563  		Value      *big.Int
  7564  		Requestor  common.Address
  7565  		To         common.Address
  7566  		TrieKey    [32]byte
  7567  		Hash       [32]byte
  7568  		TrieValue  []byte
  7569  	})
  7570  	out := ret
  7571  	err := _RootChainBase.contract.Call(opts, out, "ERUs", arg0)
  7572  	return *ret, err
  7573  }
  7574  
  7575  // ERUs is a free data retrieval call binding the contract method 0xf4f31de4.
  7576  //
  7577  // Solidity: function ERUs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
  7578  func (_RootChainBase *RootChainBaseSession) ERUs(arg0 *big.Int) (struct {
  7579  	Timestamp  uint64
  7580  	IsExit     bool
  7581  	IsTransfer bool
  7582  	Finalized  bool
  7583  	Challenged bool
  7584  	Value      *big.Int
  7585  	Requestor  common.Address
  7586  	To         common.Address
  7587  	TrieKey    [32]byte
  7588  	Hash       [32]byte
  7589  	TrieValue  []byte
  7590  }, error) {
  7591  	return _RootChainBase.Contract.ERUs(&_RootChainBase.CallOpts, arg0)
  7592  }
  7593  
  7594  // ERUs is a free data retrieval call binding the contract method 0xf4f31de4.
  7595  //
  7596  // Solidity: function ERUs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
  7597  func (_RootChainBase *RootChainBaseCallerSession) ERUs(arg0 *big.Int) (struct {
  7598  	Timestamp  uint64
  7599  	IsExit     bool
  7600  	IsTransfer bool
  7601  	Finalized  bool
  7602  	Challenged bool
  7603  	Value      *big.Int
  7604  	Requestor  common.Address
  7605  	To         common.Address
  7606  	TrieKey    [32]byte
  7607  	Hash       [32]byte
  7608  	TrieValue  []byte
  7609  }, error) {
  7610  	return _RootChainBase.Contract.ERUs(&_RootChainBase.CallOpts, arg0)
  7611  }
  7612  
  7613  // NRELength is a free data retrieval call binding the contract method 0xab96da2d.
  7614  //
  7615  // Solidity: function NRELength() constant returns(uint256)
  7616  func (_RootChainBase *RootChainBaseCaller) NRELength(opts *bind.CallOpts) (*big.Int, error) {
  7617  	var (
  7618  		ret0 = new(*big.Int)
  7619  	)
  7620  	out := ret0
  7621  	err := _RootChainBase.contract.Call(opts, out, "NRELength")
  7622  	return *ret0, err
  7623  }
  7624  
  7625  // NRELength is a free data retrieval call binding the contract method 0xab96da2d.
  7626  //
  7627  // Solidity: function NRELength() constant returns(uint256)
  7628  func (_RootChainBase *RootChainBaseSession) NRELength() (*big.Int, error) {
  7629  	return _RootChainBase.Contract.NRELength(&_RootChainBase.CallOpts)
  7630  }
  7631  
  7632  // NRELength is a free data retrieval call binding the contract method 0xab96da2d.
  7633  //
  7634  // Solidity: function NRELength() constant returns(uint256)
  7635  func (_RootChainBase *RootChainBaseCallerSession) NRELength() (*big.Int, error) {
  7636  	return _RootChainBase.Contract.NRELength(&_RootChainBase.CallOpts)
  7637  }
  7638  
  7639  // NULLADDRESS is a free data retrieval call binding the contract method 0xde0ce17d.
  7640  //
  7641  // Solidity: function NULL_ADDRESS() constant returns(address)
  7642  func (_RootChainBase *RootChainBaseCaller) NULLADDRESS(opts *bind.CallOpts) (common.Address, error) {
  7643  	var (
  7644  		ret0 = new(common.Address)
  7645  	)
  7646  	out := ret0
  7647  	err := _RootChainBase.contract.Call(opts, out, "NULL_ADDRESS")
  7648  	return *ret0, err
  7649  }
  7650  
  7651  // NULLADDRESS is a free data retrieval call binding the contract method 0xde0ce17d.
  7652  //
  7653  // Solidity: function NULL_ADDRESS() constant returns(address)
  7654  func (_RootChainBase *RootChainBaseSession) NULLADDRESS() (common.Address, error) {
  7655  	return _RootChainBase.Contract.NULLADDRESS(&_RootChainBase.CallOpts)
  7656  }
  7657  
  7658  // NULLADDRESS is a free data retrieval call binding the contract method 0xde0ce17d.
  7659  //
  7660  // Solidity: function NULL_ADDRESS() constant returns(address)
  7661  func (_RootChainBase *RootChainBaseCallerSession) NULLADDRESS() (common.Address, error) {
  7662  	return _RootChainBase.Contract.NULLADDRESS(&_RootChainBase.CallOpts)
  7663  }
  7664  
  7665  // ORBs is a free data retrieval call binding the contract method 0xea7f22a8.
  7666  //
  7667  // Solidity: function ORBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  7668  func (_RootChainBase *RootChainBaseCaller) ORBs(opts *bind.CallOpts, arg0 *big.Int) (struct {
  7669  	Submitted    bool
  7670  	NumEnter     uint64
  7671  	EpochNumber  uint64
  7672  	RequestStart uint64
  7673  	RequestEnd   uint64
  7674  	Trie         common.Address
  7675  }, error) {
  7676  	ret := new(struct {
  7677  		Submitted    bool
  7678  		NumEnter     uint64
  7679  		EpochNumber  uint64
  7680  		RequestStart uint64
  7681  		RequestEnd   uint64
  7682  		Trie         common.Address
  7683  	})
  7684  	out := ret
  7685  	err := _RootChainBase.contract.Call(opts, out, "ORBs", arg0)
  7686  	return *ret, err
  7687  }
  7688  
  7689  // ORBs is a free data retrieval call binding the contract method 0xea7f22a8.
  7690  //
  7691  // Solidity: function ORBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  7692  func (_RootChainBase *RootChainBaseSession) ORBs(arg0 *big.Int) (struct {
  7693  	Submitted    bool
  7694  	NumEnter     uint64
  7695  	EpochNumber  uint64
  7696  	RequestStart uint64
  7697  	RequestEnd   uint64
  7698  	Trie         common.Address
  7699  }, error) {
  7700  	return _RootChainBase.Contract.ORBs(&_RootChainBase.CallOpts, arg0)
  7701  }
  7702  
  7703  // ORBs is a free data retrieval call binding the contract method 0xea7f22a8.
  7704  //
  7705  // Solidity: function ORBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  7706  func (_RootChainBase *RootChainBaseCallerSession) ORBs(arg0 *big.Int) (struct {
  7707  	Submitted    bool
  7708  	NumEnter     uint64
  7709  	EpochNumber  uint64
  7710  	RequestStart uint64
  7711  	RequestEnd   uint64
  7712  	Trie         common.Address
  7713  }, error) {
  7714  	return _RootChainBase.Contract.ORBs(&_RootChainBase.CallOpts, arg0)
  7715  }
  7716  
  7717  // PREPARETIMEOUT is a free data retrieval call binding the contract method 0xc2bc88fa.
  7718  //
  7719  // Solidity: function PREPARE_TIMEOUT() constant returns(uint256)
  7720  func (_RootChainBase *RootChainBaseCaller) PREPARETIMEOUT(opts *bind.CallOpts) (*big.Int, error) {
  7721  	var (
  7722  		ret0 = new(*big.Int)
  7723  	)
  7724  	out := ret0
  7725  	err := _RootChainBase.contract.Call(opts, out, "PREPARE_TIMEOUT")
  7726  	return *ret0, err
  7727  }
  7728  
  7729  // PREPARETIMEOUT is a free data retrieval call binding the contract method 0xc2bc88fa.
  7730  //
  7731  // Solidity: function PREPARE_TIMEOUT() constant returns(uint256)
  7732  func (_RootChainBase *RootChainBaseSession) PREPARETIMEOUT() (*big.Int, error) {
  7733  	return _RootChainBase.Contract.PREPARETIMEOUT(&_RootChainBase.CallOpts)
  7734  }
  7735  
  7736  // PREPARETIMEOUT is a free data retrieval call binding the contract method 0xc2bc88fa.
  7737  //
  7738  // Solidity: function PREPARE_TIMEOUT() constant returns(uint256)
  7739  func (_RootChainBase *RootChainBaseCallerSession) PREPARETIMEOUT() (*big.Int, error) {
  7740  	return _RootChainBase.Contract.PREPARETIMEOUT(&_RootChainBase.CallOpts)
  7741  }
  7742  
  7743  // REQUESTGAS is a free data retrieval call binding the contract method 0x8eb288ca.
  7744  //
  7745  // Solidity: function REQUEST_GAS() constant returns(uint256)
  7746  func (_RootChainBase *RootChainBaseCaller) REQUESTGAS(opts *bind.CallOpts) (*big.Int, error) {
  7747  	var (
  7748  		ret0 = new(*big.Int)
  7749  	)
  7750  	out := ret0
  7751  	err := _RootChainBase.contract.Call(opts, out, "REQUEST_GAS")
  7752  	return *ret0, err
  7753  }
  7754  
  7755  // REQUESTGAS is a free data retrieval call binding the contract method 0x8eb288ca.
  7756  //
  7757  // Solidity: function REQUEST_GAS() constant returns(uint256)
  7758  func (_RootChainBase *RootChainBaseSession) REQUESTGAS() (*big.Int, error) {
  7759  	return _RootChainBase.Contract.REQUESTGAS(&_RootChainBase.CallOpts)
  7760  }
  7761  
  7762  // REQUESTGAS is a free data retrieval call binding the contract method 0x8eb288ca.
  7763  //
  7764  // Solidity: function REQUEST_GAS() constant returns(uint256)
  7765  func (_RootChainBase *RootChainBaseCallerSession) REQUESTGAS() (*big.Int, error) {
  7766  	return _RootChainBase.Contract.REQUESTGAS(&_RootChainBase.CallOpts)
  7767  }
  7768  
  7769  // URBs is a free data retrieval call binding the contract method 0xc0e86064.
  7770  //
  7771  // Solidity: function URBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  7772  func (_RootChainBase *RootChainBaseCaller) URBs(opts *bind.CallOpts, arg0 *big.Int) (struct {
  7773  	Submitted    bool
  7774  	NumEnter     uint64
  7775  	EpochNumber  uint64
  7776  	RequestStart uint64
  7777  	RequestEnd   uint64
  7778  	Trie         common.Address
  7779  }, error) {
  7780  	ret := new(struct {
  7781  		Submitted    bool
  7782  		NumEnter     uint64
  7783  		EpochNumber  uint64
  7784  		RequestStart uint64
  7785  		RequestEnd   uint64
  7786  		Trie         common.Address
  7787  	})
  7788  	out := ret
  7789  	err := _RootChainBase.contract.Call(opts, out, "URBs", arg0)
  7790  	return *ret, err
  7791  }
  7792  
  7793  // URBs is a free data retrieval call binding the contract method 0xc0e86064.
  7794  //
  7795  // Solidity: function URBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  7796  func (_RootChainBase *RootChainBaseSession) URBs(arg0 *big.Int) (struct {
  7797  	Submitted    bool
  7798  	NumEnter     uint64
  7799  	EpochNumber  uint64
  7800  	RequestStart uint64
  7801  	RequestEnd   uint64
  7802  	Trie         common.Address
  7803  }, error) {
  7804  	return _RootChainBase.Contract.URBs(&_RootChainBase.CallOpts, arg0)
  7805  }
  7806  
  7807  // URBs is a free data retrieval call binding the contract method 0xc0e86064.
  7808  //
  7809  // Solidity: function URBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  7810  func (_RootChainBase *RootChainBaseCallerSession) URBs(arg0 *big.Int) (struct {
  7811  	Submitted    bool
  7812  	NumEnter     uint64
  7813  	EpochNumber  uint64
  7814  	RequestStart uint64
  7815  	RequestEnd   uint64
  7816  	Trie         common.Address
  7817  }, error) {
  7818  	return _RootChainBase.Contract.URBs(&_RootChainBase.CallOpts, arg0)
  7819  }
  7820  
  7821  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
  7822  //
  7823  // Solidity: function currentFork() constant returns(uint256)
  7824  func (_RootChainBase *RootChainBaseCaller) CurrentFork(opts *bind.CallOpts) (*big.Int, error) {
  7825  	var (
  7826  		ret0 = new(*big.Int)
  7827  	)
  7828  	out := ret0
  7829  	err := _RootChainBase.contract.Call(opts, out, "currentFork")
  7830  	return *ret0, err
  7831  }
  7832  
  7833  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
  7834  //
  7835  // Solidity: function currentFork() constant returns(uint256)
  7836  func (_RootChainBase *RootChainBaseSession) CurrentFork() (*big.Int, error) {
  7837  	return _RootChainBase.Contract.CurrentFork(&_RootChainBase.CallOpts)
  7838  }
  7839  
  7840  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
  7841  //
  7842  // Solidity: function currentFork() constant returns(uint256)
  7843  func (_RootChainBase *RootChainBaseCallerSession) CurrentFork() (*big.Int, error) {
  7844  	return _RootChainBase.Contract.CurrentFork(&_RootChainBase.CallOpts)
  7845  }
  7846  
  7847  // Development is a free data retrieval call binding the contract method 0x7b929c27.
  7848  //
  7849  // Solidity: function development() constant returns(bool)
  7850  func (_RootChainBase *RootChainBaseCaller) Development(opts *bind.CallOpts) (bool, error) {
  7851  	var (
  7852  		ret0 = new(bool)
  7853  	)
  7854  	out := ret0
  7855  	err := _RootChainBase.contract.Call(opts, out, "development")
  7856  	return *ret0, err
  7857  }
  7858  
  7859  // Development is a free data retrieval call binding the contract method 0x7b929c27.
  7860  //
  7861  // Solidity: function development() constant returns(bool)
  7862  func (_RootChainBase *RootChainBaseSession) Development() (bool, error) {
  7863  	return _RootChainBase.Contract.Development(&_RootChainBase.CallOpts)
  7864  }
  7865  
  7866  // Development is a free data retrieval call binding the contract method 0x7b929c27.
  7867  //
  7868  // Solidity: function development() constant returns(bool)
  7869  func (_RootChainBase *RootChainBaseCallerSession) Development() (bool, error) {
  7870  	return _RootChainBase.Contract.Development(&_RootChainBase.CallOpts)
  7871  }
  7872  
  7873  // EpochHandler is a free data retrieval call binding the contract method 0xe7b88b80.
  7874  //
  7875  // Solidity: function epochHandler() constant returns(address)
  7876  func (_RootChainBase *RootChainBaseCaller) EpochHandler(opts *bind.CallOpts) (common.Address, error) {
  7877  	var (
  7878  		ret0 = new(common.Address)
  7879  	)
  7880  	out := ret0
  7881  	err := _RootChainBase.contract.Call(opts, out, "epochHandler")
  7882  	return *ret0, err
  7883  }
  7884  
  7885  // EpochHandler is a free data retrieval call binding the contract method 0xe7b88b80.
  7886  //
  7887  // Solidity: function epochHandler() constant returns(address)
  7888  func (_RootChainBase *RootChainBaseSession) EpochHandler() (common.Address, error) {
  7889  	return _RootChainBase.Contract.EpochHandler(&_RootChainBase.CallOpts)
  7890  }
  7891  
  7892  // EpochHandler is a free data retrieval call binding the contract method 0xe7b88b80.
  7893  //
  7894  // Solidity: function epochHandler() constant returns(address)
  7895  func (_RootChainBase *RootChainBaseCallerSession) EpochHandler() (common.Address, error) {
  7896  	return _RootChainBase.Contract.EpochHandler(&_RootChainBase.CallOpts)
  7897  }
  7898  
  7899  // EtherToken is a free data retrieval call binding the contract method 0xb8066bcb.
  7900  //
  7901  // Solidity: function etherToken() constant returns(address)
  7902  func (_RootChainBase *RootChainBaseCaller) EtherToken(opts *bind.CallOpts) (common.Address, error) {
  7903  	var (
  7904  		ret0 = new(common.Address)
  7905  	)
  7906  	out := ret0
  7907  	err := _RootChainBase.contract.Call(opts, out, "etherToken")
  7908  	return *ret0, err
  7909  }
  7910  
  7911  // EtherToken is a free data retrieval call binding the contract method 0xb8066bcb.
  7912  //
  7913  // Solidity: function etherToken() constant returns(address)
  7914  func (_RootChainBase *RootChainBaseSession) EtherToken() (common.Address, error) {
  7915  	return _RootChainBase.Contract.EtherToken(&_RootChainBase.CallOpts)
  7916  }
  7917  
  7918  // EtherToken is a free data retrieval call binding the contract method 0xb8066bcb.
  7919  //
  7920  // Solidity: function etherToken() constant returns(address)
  7921  func (_RootChainBase *RootChainBaseCallerSession) EtherToken() (common.Address, error) {
  7922  	return _RootChainBase.Contract.EtherToken(&_RootChainBase.CallOpts)
  7923  }
  7924  
  7925  // FirstFilledORENumber is a free data retrieval call binding the contract method 0x72ecb9a8.
  7926  //
  7927  // Solidity: function firstFilledORENumber(uint256 ) constant returns(uint256)
  7928  func (_RootChainBase *RootChainBaseCaller) FirstFilledORENumber(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
  7929  	var (
  7930  		ret0 = new(*big.Int)
  7931  	)
  7932  	out := ret0
  7933  	err := _RootChainBase.contract.Call(opts, out, "firstFilledORENumber", arg0)
  7934  	return *ret0, err
  7935  }
  7936  
  7937  // FirstFilledORENumber is a free data retrieval call binding the contract method 0x72ecb9a8.
  7938  //
  7939  // Solidity: function firstFilledORENumber(uint256 ) constant returns(uint256)
  7940  func (_RootChainBase *RootChainBaseSession) FirstFilledORENumber(arg0 *big.Int) (*big.Int, error) {
  7941  	return _RootChainBase.Contract.FirstFilledORENumber(&_RootChainBase.CallOpts, arg0)
  7942  }
  7943  
  7944  // FirstFilledORENumber is a free data retrieval call binding the contract method 0x72ecb9a8.
  7945  //
  7946  // Solidity: function firstFilledORENumber(uint256 ) constant returns(uint256)
  7947  func (_RootChainBase *RootChainBaseCallerSession) FirstFilledORENumber(arg0 *big.Int) (*big.Int, error) {
  7948  	return _RootChainBase.Contract.FirstFilledORENumber(&_RootChainBase.CallOpts, arg0)
  7949  }
  7950  
  7951  // FirstNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xca6f6380.
  7952  //
  7953  // Solidity: function firstNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  7954  func (_RootChainBase *RootChainBaseCaller) FirstNonEmptyRequestEpoch(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
  7955  	var (
  7956  		ret0 = new(*big.Int)
  7957  	)
  7958  	out := ret0
  7959  	err := _RootChainBase.contract.Call(opts, out, "firstNonEmptyRequestEpoch", arg0)
  7960  	return *ret0, err
  7961  }
  7962  
  7963  // FirstNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xca6f6380.
  7964  //
  7965  // Solidity: function firstNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  7966  func (_RootChainBase *RootChainBaseSession) FirstNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
  7967  	return _RootChainBase.Contract.FirstNonEmptyRequestEpoch(&_RootChainBase.CallOpts, arg0)
  7968  }
  7969  
  7970  // FirstNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xca6f6380.
  7971  //
  7972  // Solidity: function firstNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  7973  func (_RootChainBase *RootChainBaseCallerSession) FirstNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
  7974  	return _RootChainBase.Contract.FirstNonEmptyRequestEpoch(&_RootChainBase.CallOpts, arg0)
  7975  }
  7976  
  7977  // Forks is a free data retrieval call binding the contract method 0x4ba3a126.
  7978  //
  7979  // Solidity: function forks(uint256 ) constant returns(uint64 forkedBlock, uint64 firstEpoch, uint64 lastEpoch, uint64 firstBlock, uint64 lastBlock, uint64 lastFinalizedEpoch, uint64 lastFinalizedBlock, uint64 timestamp, uint64 firstEnterEpoch, uint64 lastEnterEpoch, uint64 nextBlockToRebase, bool rebased)
  7980  func (_RootChainBase *RootChainBaseCaller) Forks(opts *bind.CallOpts, arg0 *big.Int) (struct {
  7981  	ForkedBlock        uint64
  7982  	FirstEpoch         uint64
  7983  	LastEpoch          uint64
  7984  	FirstBlock         uint64
  7985  	LastBlock          uint64
  7986  	LastFinalizedEpoch uint64
  7987  	LastFinalizedBlock uint64
  7988  	Timestamp          uint64
  7989  	FirstEnterEpoch    uint64
  7990  	LastEnterEpoch     uint64
  7991  	NextBlockToRebase  uint64
  7992  	Rebased            bool
  7993  }, error) {
  7994  	ret := new(struct {
  7995  		ForkedBlock        uint64
  7996  		FirstEpoch         uint64
  7997  		LastEpoch          uint64
  7998  		FirstBlock         uint64
  7999  		LastBlock          uint64
  8000  		LastFinalizedEpoch uint64
  8001  		LastFinalizedBlock uint64
  8002  		Timestamp          uint64
  8003  		FirstEnterEpoch    uint64
  8004  		LastEnterEpoch     uint64
  8005  		NextBlockToRebase  uint64
  8006  		Rebased            bool
  8007  	})
  8008  	out := ret
  8009  	err := _RootChainBase.contract.Call(opts, out, "forks", arg0)
  8010  	return *ret, err
  8011  }
  8012  
  8013  // Forks is a free data retrieval call binding the contract method 0x4ba3a126.
  8014  //
  8015  // Solidity: function forks(uint256 ) constant returns(uint64 forkedBlock, uint64 firstEpoch, uint64 lastEpoch, uint64 firstBlock, uint64 lastBlock, uint64 lastFinalizedEpoch, uint64 lastFinalizedBlock, uint64 timestamp, uint64 firstEnterEpoch, uint64 lastEnterEpoch, uint64 nextBlockToRebase, bool rebased)
  8016  func (_RootChainBase *RootChainBaseSession) Forks(arg0 *big.Int) (struct {
  8017  	ForkedBlock        uint64
  8018  	FirstEpoch         uint64
  8019  	LastEpoch          uint64
  8020  	FirstBlock         uint64
  8021  	LastBlock          uint64
  8022  	LastFinalizedEpoch uint64
  8023  	LastFinalizedBlock uint64
  8024  	Timestamp          uint64
  8025  	FirstEnterEpoch    uint64
  8026  	LastEnterEpoch     uint64
  8027  	NextBlockToRebase  uint64
  8028  	Rebased            bool
  8029  }, error) {
  8030  	return _RootChainBase.Contract.Forks(&_RootChainBase.CallOpts, arg0)
  8031  }
  8032  
  8033  // Forks is a free data retrieval call binding the contract method 0x4ba3a126.
  8034  //
  8035  // Solidity: function forks(uint256 ) constant returns(uint64 forkedBlock, uint64 firstEpoch, uint64 lastEpoch, uint64 firstBlock, uint64 lastBlock, uint64 lastFinalizedEpoch, uint64 lastFinalizedBlock, uint64 timestamp, uint64 firstEnterEpoch, uint64 lastEnterEpoch, uint64 nextBlockToRebase, bool rebased)
  8036  func (_RootChainBase *RootChainBaseCallerSession) Forks(arg0 *big.Int) (struct {
  8037  	ForkedBlock        uint64
  8038  	FirstEpoch         uint64
  8039  	LastEpoch          uint64
  8040  	FirstBlock         uint64
  8041  	LastBlock          uint64
  8042  	LastFinalizedEpoch uint64
  8043  	LastFinalizedBlock uint64
  8044  	Timestamp          uint64
  8045  	FirstEnterEpoch    uint64
  8046  	LastEnterEpoch     uint64
  8047  	NextBlockToRebase  uint64
  8048  	Rebased            bool
  8049  }, error) {
  8050  	return _RootChainBase.Contract.Forks(&_RootChainBase.CallOpts, arg0)
  8051  }
  8052  
  8053  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
  8054  //
  8055  // Solidity: function isRootChain() constant returns(bool)
  8056  func (_RootChainBase *RootChainBaseCaller) IsRootChain(opts *bind.CallOpts) (bool, error) {
  8057  	var (
  8058  		ret0 = new(bool)
  8059  	)
  8060  	out := ret0
  8061  	err := _RootChainBase.contract.Call(opts, out, "isRootChain")
  8062  	return *ret0, err
  8063  }
  8064  
  8065  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
  8066  //
  8067  // Solidity: function isRootChain() constant returns(bool)
  8068  func (_RootChainBase *RootChainBaseSession) IsRootChain() (bool, error) {
  8069  	return _RootChainBase.Contract.IsRootChain(&_RootChainBase.CallOpts)
  8070  }
  8071  
  8072  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
  8073  //
  8074  // Solidity: function isRootChain() constant returns(bool)
  8075  func (_RootChainBase *RootChainBaseCallerSession) IsRootChain() (bool, error) {
  8076  	return _RootChainBase.Contract.IsRootChain(&_RootChainBase.CallOpts)
  8077  }
  8078  
  8079  // LastAppliedBlockNumber is a free data retrieval call binding the contract method 0xfb788a27.
  8080  //
  8081  // Solidity: function lastAppliedBlockNumber() constant returns(uint256)
  8082  func (_RootChainBase *RootChainBaseCaller) LastAppliedBlockNumber(opts *bind.CallOpts) (*big.Int, error) {
  8083  	var (
  8084  		ret0 = new(*big.Int)
  8085  	)
  8086  	out := ret0
  8087  	err := _RootChainBase.contract.Call(opts, out, "lastAppliedBlockNumber")
  8088  	return *ret0, err
  8089  }
  8090  
  8091  // LastAppliedBlockNumber is a free data retrieval call binding the contract method 0xfb788a27.
  8092  //
  8093  // Solidity: function lastAppliedBlockNumber() constant returns(uint256)
  8094  func (_RootChainBase *RootChainBaseSession) LastAppliedBlockNumber() (*big.Int, error) {
  8095  	return _RootChainBase.Contract.LastAppliedBlockNumber(&_RootChainBase.CallOpts)
  8096  }
  8097  
  8098  // LastAppliedBlockNumber is a free data retrieval call binding the contract method 0xfb788a27.
  8099  //
  8100  // Solidity: function lastAppliedBlockNumber() constant returns(uint256)
  8101  func (_RootChainBase *RootChainBaseCallerSession) LastAppliedBlockNumber() (*big.Int, error) {
  8102  	return _RootChainBase.Contract.LastAppliedBlockNumber(&_RootChainBase.CallOpts)
  8103  }
  8104  
  8105  // LastAppliedEpochNumber is a free data retrieval call binding the contract method 0xc8ad329f.
  8106  //
  8107  // Solidity: function lastAppliedEpochNumber() constant returns(uint256)
  8108  func (_RootChainBase *RootChainBaseCaller) LastAppliedEpochNumber(opts *bind.CallOpts) (*big.Int, error) {
  8109  	var (
  8110  		ret0 = new(*big.Int)
  8111  	)
  8112  	out := ret0
  8113  	err := _RootChainBase.contract.Call(opts, out, "lastAppliedEpochNumber")
  8114  	return *ret0, err
  8115  }
  8116  
  8117  // LastAppliedEpochNumber is a free data retrieval call binding the contract method 0xc8ad329f.
  8118  //
  8119  // Solidity: function lastAppliedEpochNumber() constant returns(uint256)
  8120  func (_RootChainBase *RootChainBaseSession) LastAppliedEpochNumber() (*big.Int, error) {
  8121  	return _RootChainBase.Contract.LastAppliedEpochNumber(&_RootChainBase.CallOpts)
  8122  }
  8123  
  8124  // LastAppliedEpochNumber is a free data retrieval call binding the contract method 0xc8ad329f.
  8125  //
  8126  // Solidity: function lastAppliedEpochNumber() constant returns(uint256)
  8127  func (_RootChainBase *RootChainBaseCallerSession) LastAppliedEpochNumber() (*big.Int, error) {
  8128  	return _RootChainBase.Contract.LastAppliedEpochNumber(&_RootChainBase.CallOpts)
  8129  }
  8130  
  8131  // LastAppliedForkNumber is a free data retrieval call binding the contract method 0x164bc2ae.
  8132  //
  8133  // Solidity: function lastAppliedForkNumber() constant returns(uint256)
  8134  func (_RootChainBase *RootChainBaseCaller) LastAppliedForkNumber(opts *bind.CallOpts) (*big.Int, error) {
  8135  	var (
  8136  		ret0 = new(*big.Int)
  8137  	)
  8138  	out := ret0
  8139  	err := _RootChainBase.contract.Call(opts, out, "lastAppliedForkNumber")
  8140  	return *ret0, err
  8141  }
  8142  
  8143  // LastAppliedForkNumber is a free data retrieval call binding the contract method 0x164bc2ae.
  8144  //
  8145  // Solidity: function lastAppliedForkNumber() constant returns(uint256)
  8146  func (_RootChainBase *RootChainBaseSession) LastAppliedForkNumber() (*big.Int, error) {
  8147  	return _RootChainBase.Contract.LastAppliedForkNumber(&_RootChainBase.CallOpts)
  8148  }
  8149  
  8150  // LastAppliedForkNumber is a free data retrieval call binding the contract method 0x164bc2ae.
  8151  //
  8152  // Solidity: function lastAppliedForkNumber() constant returns(uint256)
  8153  func (_RootChainBase *RootChainBaseCallerSession) LastAppliedForkNumber() (*big.Int, error) {
  8154  	return _RootChainBase.Contract.LastAppliedForkNumber(&_RootChainBase.CallOpts)
  8155  }
  8156  
  8157  // LastNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xb6715647.
  8158  //
  8159  // Solidity: function lastNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  8160  func (_RootChainBase *RootChainBaseCaller) LastNonEmptyRequestEpoch(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
  8161  	var (
  8162  		ret0 = new(*big.Int)
  8163  	)
  8164  	out := ret0
  8165  	err := _RootChainBase.contract.Call(opts, out, "lastNonEmptyRequestEpoch", arg0)
  8166  	return *ret0, err
  8167  }
  8168  
  8169  // LastNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xb6715647.
  8170  //
  8171  // Solidity: function lastNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  8172  func (_RootChainBase *RootChainBaseSession) LastNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
  8173  	return _RootChainBase.Contract.LastNonEmptyRequestEpoch(&_RootChainBase.CallOpts, arg0)
  8174  }
  8175  
  8176  // LastNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xb6715647.
  8177  //
  8178  // Solidity: function lastNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  8179  func (_RootChainBase *RootChainBaseCallerSession) LastNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
  8180  	return _RootChainBase.Contract.LastNonEmptyRequestEpoch(&_RootChainBase.CallOpts, arg0)
  8181  }
  8182  
  8183  // NumEnterForORB is a free data retrieval call binding the contract method 0x23691566.
  8184  //
  8185  // Solidity: function numEnterForORB() constant returns(uint256)
  8186  func (_RootChainBase *RootChainBaseCaller) NumEnterForORB(opts *bind.CallOpts) (*big.Int, error) {
  8187  	var (
  8188  		ret0 = new(*big.Int)
  8189  	)
  8190  	out := ret0
  8191  	err := _RootChainBase.contract.Call(opts, out, "numEnterForORB")
  8192  	return *ret0, err
  8193  }
  8194  
  8195  // NumEnterForORB is a free data retrieval call binding the contract method 0x23691566.
  8196  //
  8197  // Solidity: function numEnterForORB() constant returns(uint256)
  8198  func (_RootChainBase *RootChainBaseSession) NumEnterForORB() (*big.Int, error) {
  8199  	return _RootChainBase.Contract.NumEnterForORB(&_RootChainBase.CallOpts)
  8200  }
  8201  
  8202  // NumEnterForORB is a free data retrieval call binding the contract method 0x23691566.
  8203  //
  8204  // Solidity: function numEnterForORB() constant returns(uint256)
  8205  func (_RootChainBase *RootChainBaseCallerSession) NumEnterForORB() (*big.Int, error) {
  8206  	return _RootChainBase.Contract.NumEnterForORB(&_RootChainBase.CallOpts)
  8207  }
  8208  
  8209  // Operator is a free data retrieval call binding the contract method 0x570ca735.
  8210  //
  8211  // Solidity: function operator() constant returns(address)
  8212  func (_RootChainBase *RootChainBaseCaller) Operator(opts *bind.CallOpts) (common.Address, error) {
  8213  	var (
  8214  		ret0 = new(common.Address)
  8215  	)
  8216  	out := ret0
  8217  	err := _RootChainBase.contract.Call(opts, out, "operator")
  8218  	return *ret0, err
  8219  }
  8220  
  8221  // Operator is a free data retrieval call binding the contract method 0x570ca735.
  8222  //
  8223  // Solidity: function operator() constant returns(address)
  8224  func (_RootChainBase *RootChainBaseSession) Operator() (common.Address, error) {
  8225  	return _RootChainBase.Contract.Operator(&_RootChainBase.CallOpts)
  8226  }
  8227  
  8228  // Operator is a free data retrieval call binding the contract method 0x570ca735.
  8229  //
  8230  // Solidity: function operator() constant returns(address)
  8231  func (_RootChainBase *RootChainBaseCallerSession) Operator() (common.Address, error) {
  8232  	return _RootChainBase.Contract.Operator(&_RootChainBase.CallOpts)
  8233  }
  8234  
  8235  // RequestableContracts is a free data retrieval call binding the contract method 0xda0185f8.
  8236  //
  8237  // Solidity: function requestableContracts(address ) constant returns(address)
  8238  func (_RootChainBase *RootChainBaseCaller) RequestableContracts(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
  8239  	var (
  8240  		ret0 = new(common.Address)
  8241  	)
  8242  	out := ret0
  8243  	err := _RootChainBase.contract.Call(opts, out, "requestableContracts", arg0)
  8244  	return *ret0, err
  8245  }
  8246  
  8247  // RequestableContracts is a free data retrieval call binding the contract method 0xda0185f8.
  8248  //
  8249  // Solidity: function requestableContracts(address ) constant returns(address)
  8250  func (_RootChainBase *RootChainBaseSession) RequestableContracts(arg0 common.Address) (common.Address, error) {
  8251  	return _RootChainBase.Contract.RequestableContracts(&_RootChainBase.CallOpts, arg0)
  8252  }
  8253  
  8254  // RequestableContracts is a free data retrieval call binding the contract method 0xda0185f8.
  8255  //
  8256  // Solidity: function requestableContracts(address ) constant returns(address)
  8257  func (_RootChainBase *RootChainBaseCallerSession) RequestableContracts(arg0 common.Address) (common.Address, error) {
  8258  	return _RootChainBase.Contract.RequestableContracts(&_RootChainBase.CallOpts, arg0)
  8259  }
  8260  
  8261  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  8262  //
  8263  // Solidity: function seigManager() constant returns(address)
  8264  func (_RootChainBase *RootChainBaseCaller) SeigManager(opts *bind.CallOpts) (common.Address, error) {
  8265  	var (
  8266  		ret0 = new(common.Address)
  8267  	)
  8268  	out := ret0
  8269  	err := _RootChainBase.contract.Call(opts, out, "seigManager")
  8270  	return *ret0, err
  8271  }
  8272  
  8273  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  8274  //
  8275  // Solidity: function seigManager() constant returns(address)
  8276  func (_RootChainBase *RootChainBaseSession) SeigManager() (common.Address, error) {
  8277  	return _RootChainBase.Contract.SeigManager(&_RootChainBase.CallOpts)
  8278  }
  8279  
  8280  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  8281  //
  8282  // Solidity: function seigManager() constant returns(address)
  8283  func (_RootChainBase *RootChainBaseCallerSession) SeigManager() (common.Address, error) {
  8284  	return _RootChainBase.Contract.SeigManager(&_RootChainBase.CallOpts)
  8285  }
  8286  
  8287  // SubmitHandler is a free data retrieval call binding the contract method 0xe259faf7.
  8288  //
  8289  // Solidity: function submitHandler() constant returns(address)
  8290  func (_RootChainBase *RootChainBaseCaller) SubmitHandler(opts *bind.CallOpts) (common.Address, error) {
  8291  	var (
  8292  		ret0 = new(common.Address)
  8293  	)
  8294  	out := ret0
  8295  	err := _RootChainBase.contract.Call(opts, out, "submitHandler")
  8296  	return *ret0, err
  8297  }
  8298  
  8299  // SubmitHandler is a free data retrieval call binding the contract method 0xe259faf7.
  8300  //
  8301  // Solidity: function submitHandler() constant returns(address)
  8302  func (_RootChainBase *RootChainBaseSession) SubmitHandler() (common.Address, error) {
  8303  	return _RootChainBase.Contract.SubmitHandler(&_RootChainBase.CallOpts)
  8304  }
  8305  
  8306  // SubmitHandler is a free data retrieval call binding the contract method 0xe259faf7.
  8307  //
  8308  // Solidity: function submitHandler() constant returns(address)
  8309  func (_RootChainBase *RootChainBaseCallerSession) SubmitHandler() (common.Address, error) {
  8310  	return _RootChainBase.Contract.SubmitHandler(&_RootChainBase.CallOpts)
  8311  }
  8312  
  8313  // RootChainBaseBlockFinalizedIterator is returned from FilterBlockFinalized and is used to iterate over the raw logs and unpacked data for BlockFinalized events raised by the RootChainBase contract.
  8314  type RootChainBaseBlockFinalizedIterator struct {
  8315  	Event *RootChainBaseBlockFinalized // Event containing the contract specifics and raw log
  8316  
  8317  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8318  	event    string              // Event name to use for unpacking event data
  8319  
  8320  	logs chan types.Log        // Log channel receiving the found contract events
  8321  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8322  	done bool                  // Whether the subscription completed delivering logs
  8323  	fail error                 // Occurred error to stop iteration
  8324  }
  8325  
  8326  // Next advances the iterator to the subsequent event, returning whether there
  8327  // are any more events found. In case of a retrieval or parsing error, false is
  8328  // returned and Error() can be queried for the exact failure.
  8329  func (it *RootChainBaseBlockFinalizedIterator) Next() bool {
  8330  	// If the iterator failed, stop iterating
  8331  	if it.fail != nil {
  8332  		return false
  8333  	}
  8334  	// If the iterator completed, deliver directly whatever's available
  8335  	if it.done {
  8336  		select {
  8337  		case log := <-it.logs:
  8338  			it.Event = new(RootChainBaseBlockFinalized)
  8339  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8340  				it.fail = err
  8341  				return false
  8342  			}
  8343  			it.Event.Raw = log
  8344  			return true
  8345  
  8346  		default:
  8347  			return false
  8348  		}
  8349  	}
  8350  	// Iterator still in progress, wait for either a data or an error event
  8351  	select {
  8352  	case log := <-it.logs:
  8353  		it.Event = new(RootChainBaseBlockFinalized)
  8354  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8355  			it.fail = err
  8356  			return false
  8357  		}
  8358  		it.Event.Raw = log
  8359  		return true
  8360  
  8361  	case err := <-it.sub.Err():
  8362  		it.done = true
  8363  		it.fail = err
  8364  		return it.Next()
  8365  	}
  8366  }
  8367  
  8368  // Error returns any retrieval or parsing error occurred during filtering.
  8369  func (it *RootChainBaseBlockFinalizedIterator) Error() error {
  8370  	return it.fail
  8371  }
  8372  
  8373  // Close terminates the iteration process, releasing any pending underlying
  8374  // resources.
  8375  func (it *RootChainBaseBlockFinalizedIterator) Close() error {
  8376  	it.sub.Unsubscribe()
  8377  	return nil
  8378  }
  8379  
  8380  // RootChainBaseBlockFinalized represents a BlockFinalized event raised by the RootChainBase contract.
  8381  type RootChainBaseBlockFinalized struct {
  8382  	ForkNumber  *big.Int
  8383  	BlockNumber *big.Int
  8384  	Raw         types.Log // Blockchain specific contextual infos
  8385  }
  8386  
  8387  // FilterBlockFinalized is a free log retrieval operation binding the contract event 0xfb96205e4b3633fd57aa805b26b51ecf528714a10241a4af015929dce86768d9.
  8388  //
  8389  // Solidity: event BlockFinalized(uint256 forkNumber, uint256 blockNumber)
  8390  func (_RootChainBase *RootChainBaseFilterer) FilterBlockFinalized(opts *bind.FilterOpts) (*RootChainBaseBlockFinalizedIterator, error) {
  8391  
  8392  	logs, sub, err := _RootChainBase.contract.FilterLogs(opts, "BlockFinalized")
  8393  	if err != nil {
  8394  		return nil, err
  8395  	}
  8396  	return &RootChainBaseBlockFinalizedIterator{contract: _RootChainBase.contract, event: "BlockFinalized", logs: logs, sub: sub}, nil
  8397  }
  8398  
  8399  // WatchBlockFinalized is a free log subscription operation binding the contract event 0xfb96205e4b3633fd57aa805b26b51ecf528714a10241a4af015929dce86768d9.
  8400  //
  8401  // Solidity: event BlockFinalized(uint256 forkNumber, uint256 blockNumber)
  8402  func (_RootChainBase *RootChainBaseFilterer) WatchBlockFinalized(opts *bind.WatchOpts, sink chan<- *RootChainBaseBlockFinalized) (event.Subscription, error) {
  8403  
  8404  	logs, sub, err := _RootChainBase.contract.WatchLogs(opts, "BlockFinalized")
  8405  	if err != nil {
  8406  		return nil, err
  8407  	}
  8408  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8409  		defer sub.Unsubscribe()
  8410  		for {
  8411  			select {
  8412  			case log := <-logs:
  8413  				// New log arrived, parse the event and forward to the user
  8414  				event := new(RootChainBaseBlockFinalized)
  8415  				if err := _RootChainBase.contract.UnpackLog(event, "BlockFinalized", log); err != nil {
  8416  					return err
  8417  				}
  8418  				event.Raw = log
  8419  
  8420  				select {
  8421  				case sink <- event:
  8422  				case err := <-sub.Err():
  8423  					return err
  8424  				case <-quit:
  8425  					return nil
  8426  				}
  8427  			case err := <-sub.Err():
  8428  				return err
  8429  			case <-quit:
  8430  				return nil
  8431  			}
  8432  		}
  8433  	}), nil
  8434  }
  8435  
  8436  // ParseBlockFinalized is a log parse operation binding the contract event 0xfb96205e4b3633fd57aa805b26b51ecf528714a10241a4af015929dce86768d9.
  8437  //
  8438  // Solidity: event BlockFinalized(uint256 forkNumber, uint256 blockNumber)
  8439  func (_RootChainBase *RootChainBaseFilterer) ParseBlockFinalized(log types.Log) (*RootChainBaseBlockFinalized, error) {
  8440  	event := new(RootChainBaseBlockFinalized)
  8441  	if err := _RootChainBase.contract.UnpackLog(event, "BlockFinalized", log); err != nil {
  8442  		return nil, err
  8443  	}
  8444  	return event, nil
  8445  }
  8446  
  8447  // RootChainBaseBlockSubmittedIterator is returned from FilterBlockSubmitted and is used to iterate over the raw logs and unpacked data for BlockSubmitted events raised by the RootChainBase contract.
  8448  type RootChainBaseBlockSubmittedIterator struct {
  8449  	Event *RootChainBaseBlockSubmitted // Event containing the contract specifics and raw log
  8450  
  8451  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8452  	event    string              // Event name to use for unpacking event data
  8453  
  8454  	logs chan types.Log        // Log channel receiving the found contract events
  8455  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8456  	done bool                  // Whether the subscription completed delivering logs
  8457  	fail error                 // Occurred error to stop iteration
  8458  }
  8459  
  8460  // Next advances the iterator to the subsequent event, returning whether there
  8461  // are any more events found. In case of a retrieval or parsing error, false is
  8462  // returned and Error() can be queried for the exact failure.
  8463  func (it *RootChainBaseBlockSubmittedIterator) Next() bool {
  8464  	// If the iterator failed, stop iterating
  8465  	if it.fail != nil {
  8466  		return false
  8467  	}
  8468  	// If the iterator completed, deliver directly whatever's available
  8469  	if it.done {
  8470  		select {
  8471  		case log := <-it.logs:
  8472  			it.Event = new(RootChainBaseBlockSubmitted)
  8473  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8474  				it.fail = err
  8475  				return false
  8476  			}
  8477  			it.Event.Raw = log
  8478  			return true
  8479  
  8480  		default:
  8481  			return false
  8482  		}
  8483  	}
  8484  	// Iterator still in progress, wait for either a data or an error event
  8485  	select {
  8486  	case log := <-it.logs:
  8487  		it.Event = new(RootChainBaseBlockSubmitted)
  8488  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8489  			it.fail = err
  8490  			return false
  8491  		}
  8492  		it.Event.Raw = log
  8493  		return true
  8494  
  8495  	case err := <-it.sub.Err():
  8496  		it.done = true
  8497  		it.fail = err
  8498  		return it.Next()
  8499  	}
  8500  }
  8501  
  8502  // Error returns any retrieval or parsing error occurred during filtering.
  8503  func (it *RootChainBaseBlockSubmittedIterator) Error() error {
  8504  	return it.fail
  8505  }
  8506  
  8507  // Close terminates the iteration process, releasing any pending underlying
  8508  // resources.
  8509  func (it *RootChainBaseBlockSubmittedIterator) Close() error {
  8510  	it.sub.Unsubscribe()
  8511  	return nil
  8512  }
  8513  
  8514  // RootChainBaseBlockSubmitted represents a BlockSubmitted event raised by the RootChainBase contract.
  8515  type RootChainBaseBlockSubmitted struct {
  8516  	Fork          *big.Int
  8517  	EpochNumber   *big.Int
  8518  	BlockNumber   *big.Int
  8519  	IsRequest     bool
  8520  	UserActivated bool
  8521  	Raw           types.Log // Blockchain specific contextual infos
  8522  }
  8523  
  8524  // FilterBlockSubmitted is a free log retrieval operation binding the contract event 0x3d4a04291c66b06f39a4ecb817875b12b5485a05ec563133a56a905305c48e55.
  8525  //
  8526  // Solidity: event BlockSubmitted(uint256 fork, uint256 epochNumber, uint256 blockNumber, bool isRequest, bool userActivated)
  8527  func (_RootChainBase *RootChainBaseFilterer) FilterBlockSubmitted(opts *bind.FilterOpts) (*RootChainBaseBlockSubmittedIterator, error) {
  8528  
  8529  	logs, sub, err := _RootChainBase.contract.FilterLogs(opts, "BlockSubmitted")
  8530  	if err != nil {
  8531  		return nil, err
  8532  	}
  8533  	return &RootChainBaseBlockSubmittedIterator{contract: _RootChainBase.contract, event: "BlockSubmitted", logs: logs, sub: sub}, nil
  8534  }
  8535  
  8536  // WatchBlockSubmitted is a free log subscription operation binding the contract event 0x3d4a04291c66b06f39a4ecb817875b12b5485a05ec563133a56a905305c48e55.
  8537  //
  8538  // Solidity: event BlockSubmitted(uint256 fork, uint256 epochNumber, uint256 blockNumber, bool isRequest, bool userActivated)
  8539  func (_RootChainBase *RootChainBaseFilterer) WatchBlockSubmitted(opts *bind.WatchOpts, sink chan<- *RootChainBaseBlockSubmitted) (event.Subscription, error) {
  8540  
  8541  	logs, sub, err := _RootChainBase.contract.WatchLogs(opts, "BlockSubmitted")
  8542  	if err != nil {
  8543  		return nil, err
  8544  	}
  8545  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8546  		defer sub.Unsubscribe()
  8547  		for {
  8548  			select {
  8549  			case log := <-logs:
  8550  				// New log arrived, parse the event and forward to the user
  8551  				event := new(RootChainBaseBlockSubmitted)
  8552  				if err := _RootChainBase.contract.UnpackLog(event, "BlockSubmitted", log); err != nil {
  8553  					return err
  8554  				}
  8555  				event.Raw = log
  8556  
  8557  				select {
  8558  				case sink <- event:
  8559  				case err := <-sub.Err():
  8560  					return err
  8561  				case <-quit:
  8562  					return nil
  8563  				}
  8564  			case err := <-sub.Err():
  8565  				return err
  8566  			case <-quit:
  8567  				return nil
  8568  			}
  8569  		}
  8570  	}), nil
  8571  }
  8572  
  8573  // ParseBlockSubmitted is a log parse operation binding the contract event 0x3d4a04291c66b06f39a4ecb817875b12b5485a05ec563133a56a905305c48e55.
  8574  //
  8575  // Solidity: event BlockSubmitted(uint256 fork, uint256 epochNumber, uint256 blockNumber, bool isRequest, bool userActivated)
  8576  func (_RootChainBase *RootChainBaseFilterer) ParseBlockSubmitted(log types.Log) (*RootChainBaseBlockSubmitted, error) {
  8577  	event := new(RootChainBaseBlockSubmitted)
  8578  	if err := _RootChainBase.contract.UnpackLog(event, "BlockSubmitted", log); err != nil {
  8579  		return nil, err
  8580  	}
  8581  	return event, nil
  8582  }
  8583  
  8584  // RootChainBaseERUCreatedIterator is returned from FilterERUCreated and is used to iterate over the raw logs and unpacked data for ERUCreated events raised by the RootChainBase contract.
  8585  type RootChainBaseERUCreatedIterator struct {
  8586  	Event *RootChainBaseERUCreated // Event containing the contract specifics and raw log
  8587  
  8588  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8589  	event    string              // Event name to use for unpacking event data
  8590  
  8591  	logs chan types.Log        // Log channel receiving the found contract events
  8592  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8593  	done bool                  // Whether the subscription completed delivering logs
  8594  	fail error                 // Occurred error to stop iteration
  8595  }
  8596  
  8597  // Next advances the iterator to the subsequent event, returning whether there
  8598  // are any more events found. In case of a retrieval or parsing error, false is
  8599  // returned and Error() can be queried for the exact failure.
  8600  func (it *RootChainBaseERUCreatedIterator) Next() bool {
  8601  	// If the iterator failed, stop iterating
  8602  	if it.fail != nil {
  8603  		return false
  8604  	}
  8605  	// If the iterator completed, deliver directly whatever's available
  8606  	if it.done {
  8607  		select {
  8608  		case log := <-it.logs:
  8609  			it.Event = new(RootChainBaseERUCreated)
  8610  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8611  				it.fail = err
  8612  				return false
  8613  			}
  8614  			it.Event.Raw = log
  8615  			return true
  8616  
  8617  		default:
  8618  			return false
  8619  		}
  8620  	}
  8621  	// Iterator still in progress, wait for either a data or an error event
  8622  	select {
  8623  	case log := <-it.logs:
  8624  		it.Event = new(RootChainBaseERUCreated)
  8625  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8626  			it.fail = err
  8627  			return false
  8628  		}
  8629  		it.Event.Raw = log
  8630  		return true
  8631  
  8632  	case err := <-it.sub.Err():
  8633  		it.done = true
  8634  		it.fail = err
  8635  		return it.Next()
  8636  	}
  8637  }
  8638  
  8639  // Error returns any retrieval or parsing error occurred during filtering.
  8640  func (it *RootChainBaseERUCreatedIterator) Error() error {
  8641  	return it.fail
  8642  }
  8643  
  8644  // Close terminates the iteration process, releasing any pending underlying
  8645  // resources.
  8646  func (it *RootChainBaseERUCreatedIterator) Close() error {
  8647  	it.sub.Unsubscribe()
  8648  	return nil
  8649  }
  8650  
  8651  // RootChainBaseERUCreated represents a ERUCreated event raised by the RootChainBase contract.
  8652  type RootChainBaseERUCreated struct {
  8653  	RequestId *big.Int
  8654  	Requestor common.Address
  8655  	To        common.Address
  8656  	TrieKey   []byte
  8657  	TrieValue [32]byte
  8658  	Raw       types.Log // Blockchain specific contextual infos
  8659  }
  8660  
  8661  // FilterERUCreated is a free log retrieval operation binding the contract event 0xfcbdc2083dadd644b854d91b49aef8db06b8f5a3d5c1192de38ca0ba271d5a0d.
  8662  //
  8663  // Solidity: event ERUCreated(uint256 requestId, address requestor, address to, bytes trieKey, bytes32 trieValue)
  8664  func (_RootChainBase *RootChainBaseFilterer) FilterERUCreated(opts *bind.FilterOpts) (*RootChainBaseERUCreatedIterator, error) {
  8665  
  8666  	logs, sub, err := _RootChainBase.contract.FilterLogs(opts, "ERUCreated")
  8667  	if err != nil {
  8668  		return nil, err
  8669  	}
  8670  	return &RootChainBaseERUCreatedIterator{contract: _RootChainBase.contract, event: "ERUCreated", logs: logs, sub: sub}, nil
  8671  }
  8672  
  8673  // WatchERUCreated is a free log subscription operation binding the contract event 0xfcbdc2083dadd644b854d91b49aef8db06b8f5a3d5c1192de38ca0ba271d5a0d.
  8674  //
  8675  // Solidity: event ERUCreated(uint256 requestId, address requestor, address to, bytes trieKey, bytes32 trieValue)
  8676  func (_RootChainBase *RootChainBaseFilterer) WatchERUCreated(opts *bind.WatchOpts, sink chan<- *RootChainBaseERUCreated) (event.Subscription, error) {
  8677  
  8678  	logs, sub, err := _RootChainBase.contract.WatchLogs(opts, "ERUCreated")
  8679  	if err != nil {
  8680  		return nil, err
  8681  	}
  8682  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8683  		defer sub.Unsubscribe()
  8684  		for {
  8685  			select {
  8686  			case log := <-logs:
  8687  				// New log arrived, parse the event and forward to the user
  8688  				event := new(RootChainBaseERUCreated)
  8689  				if err := _RootChainBase.contract.UnpackLog(event, "ERUCreated", log); err != nil {
  8690  					return err
  8691  				}
  8692  				event.Raw = log
  8693  
  8694  				select {
  8695  				case sink <- event:
  8696  				case err := <-sub.Err():
  8697  					return err
  8698  				case <-quit:
  8699  					return nil
  8700  				}
  8701  			case err := <-sub.Err():
  8702  				return err
  8703  			case <-quit:
  8704  				return nil
  8705  			}
  8706  		}
  8707  	}), nil
  8708  }
  8709  
  8710  // ParseERUCreated is a log parse operation binding the contract event 0xfcbdc2083dadd644b854d91b49aef8db06b8f5a3d5c1192de38ca0ba271d5a0d.
  8711  //
  8712  // Solidity: event ERUCreated(uint256 requestId, address requestor, address to, bytes trieKey, bytes32 trieValue)
  8713  func (_RootChainBase *RootChainBaseFilterer) ParseERUCreated(log types.Log) (*RootChainBaseERUCreated, error) {
  8714  	event := new(RootChainBaseERUCreated)
  8715  	if err := _RootChainBase.contract.UnpackLog(event, "ERUCreated", log); err != nil {
  8716  		return nil, err
  8717  	}
  8718  	return event, nil
  8719  }
  8720  
  8721  // RootChainBaseEpochFilledIterator is returned from FilterEpochFilled and is used to iterate over the raw logs and unpacked data for EpochFilled events raised by the RootChainBase contract.
  8722  type RootChainBaseEpochFilledIterator struct {
  8723  	Event *RootChainBaseEpochFilled // Event containing the contract specifics and raw log
  8724  
  8725  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8726  	event    string              // Event name to use for unpacking event data
  8727  
  8728  	logs chan types.Log        // Log channel receiving the found contract events
  8729  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8730  	done bool                  // Whether the subscription completed delivering logs
  8731  	fail error                 // Occurred error to stop iteration
  8732  }
  8733  
  8734  // Next advances the iterator to the subsequent event, returning whether there
  8735  // are any more events found. In case of a retrieval or parsing error, false is
  8736  // returned and Error() can be queried for the exact failure.
  8737  func (it *RootChainBaseEpochFilledIterator) Next() bool {
  8738  	// If the iterator failed, stop iterating
  8739  	if it.fail != nil {
  8740  		return false
  8741  	}
  8742  	// If the iterator completed, deliver directly whatever's available
  8743  	if it.done {
  8744  		select {
  8745  		case log := <-it.logs:
  8746  			it.Event = new(RootChainBaseEpochFilled)
  8747  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8748  				it.fail = err
  8749  				return false
  8750  			}
  8751  			it.Event.Raw = log
  8752  			return true
  8753  
  8754  		default:
  8755  			return false
  8756  		}
  8757  	}
  8758  	// Iterator still in progress, wait for either a data or an error event
  8759  	select {
  8760  	case log := <-it.logs:
  8761  		it.Event = new(RootChainBaseEpochFilled)
  8762  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8763  			it.fail = err
  8764  			return false
  8765  		}
  8766  		it.Event.Raw = log
  8767  		return true
  8768  
  8769  	case err := <-it.sub.Err():
  8770  		it.done = true
  8771  		it.fail = err
  8772  		return it.Next()
  8773  	}
  8774  }
  8775  
  8776  // Error returns any retrieval or parsing error occurred during filtering.
  8777  func (it *RootChainBaseEpochFilledIterator) Error() error {
  8778  	return it.fail
  8779  }
  8780  
  8781  // Close terminates the iteration process, releasing any pending underlying
  8782  // resources.
  8783  func (it *RootChainBaseEpochFilledIterator) Close() error {
  8784  	it.sub.Unsubscribe()
  8785  	return nil
  8786  }
  8787  
  8788  // RootChainBaseEpochFilled represents a EpochFilled event raised by the RootChainBase contract.
  8789  type RootChainBaseEpochFilled struct {
  8790  	ForkNumber  *big.Int
  8791  	EpochNumber *big.Int
  8792  	Raw         types.Log // Blockchain specific contextual infos
  8793  }
  8794  
  8795  // FilterEpochFilled is a free log retrieval operation binding the contract event 0x2fdeb407bf5c2b621f04b5c784822dae806c45b49a68aba413cc270128c96816.
  8796  //
  8797  // Solidity: event EpochFilled(uint256 forkNumber, uint256 epochNumber)
  8798  func (_RootChainBase *RootChainBaseFilterer) FilterEpochFilled(opts *bind.FilterOpts) (*RootChainBaseEpochFilledIterator, error) {
  8799  
  8800  	logs, sub, err := _RootChainBase.contract.FilterLogs(opts, "EpochFilled")
  8801  	if err != nil {
  8802  		return nil, err
  8803  	}
  8804  	return &RootChainBaseEpochFilledIterator{contract: _RootChainBase.contract, event: "EpochFilled", logs: logs, sub: sub}, nil
  8805  }
  8806  
  8807  // WatchEpochFilled is a free log subscription operation binding the contract event 0x2fdeb407bf5c2b621f04b5c784822dae806c45b49a68aba413cc270128c96816.
  8808  //
  8809  // Solidity: event EpochFilled(uint256 forkNumber, uint256 epochNumber)
  8810  func (_RootChainBase *RootChainBaseFilterer) WatchEpochFilled(opts *bind.WatchOpts, sink chan<- *RootChainBaseEpochFilled) (event.Subscription, error) {
  8811  
  8812  	logs, sub, err := _RootChainBase.contract.WatchLogs(opts, "EpochFilled")
  8813  	if err != nil {
  8814  		return nil, err
  8815  	}
  8816  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8817  		defer sub.Unsubscribe()
  8818  		for {
  8819  			select {
  8820  			case log := <-logs:
  8821  				// New log arrived, parse the event and forward to the user
  8822  				event := new(RootChainBaseEpochFilled)
  8823  				if err := _RootChainBase.contract.UnpackLog(event, "EpochFilled", log); err != nil {
  8824  					return err
  8825  				}
  8826  				event.Raw = log
  8827  
  8828  				select {
  8829  				case sink <- event:
  8830  				case err := <-sub.Err():
  8831  					return err
  8832  				case <-quit:
  8833  					return nil
  8834  				}
  8835  			case err := <-sub.Err():
  8836  				return err
  8837  			case <-quit:
  8838  				return nil
  8839  			}
  8840  		}
  8841  	}), nil
  8842  }
  8843  
  8844  // ParseEpochFilled is a log parse operation binding the contract event 0x2fdeb407bf5c2b621f04b5c784822dae806c45b49a68aba413cc270128c96816.
  8845  //
  8846  // Solidity: event EpochFilled(uint256 forkNumber, uint256 epochNumber)
  8847  func (_RootChainBase *RootChainBaseFilterer) ParseEpochFilled(log types.Log) (*RootChainBaseEpochFilled, error) {
  8848  	event := new(RootChainBaseEpochFilled)
  8849  	if err := _RootChainBase.contract.UnpackLog(event, "EpochFilled", log); err != nil {
  8850  		return nil, err
  8851  	}
  8852  	return event, nil
  8853  }
  8854  
  8855  // RootChainBaseEpochFillingIterator is returned from FilterEpochFilling and is used to iterate over the raw logs and unpacked data for EpochFilling events raised by the RootChainBase contract.
  8856  type RootChainBaseEpochFillingIterator struct {
  8857  	Event *RootChainBaseEpochFilling // Event containing the contract specifics and raw log
  8858  
  8859  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8860  	event    string              // Event name to use for unpacking event data
  8861  
  8862  	logs chan types.Log        // Log channel receiving the found contract events
  8863  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8864  	done bool                  // Whether the subscription completed delivering logs
  8865  	fail error                 // Occurred error to stop iteration
  8866  }
  8867  
  8868  // Next advances the iterator to the subsequent event, returning whether there
  8869  // are any more events found. In case of a retrieval or parsing error, false is
  8870  // returned and Error() can be queried for the exact failure.
  8871  func (it *RootChainBaseEpochFillingIterator) Next() bool {
  8872  	// If the iterator failed, stop iterating
  8873  	if it.fail != nil {
  8874  		return false
  8875  	}
  8876  	// If the iterator completed, deliver directly whatever's available
  8877  	if it.done {
  8878  		select {
  8879  		case log := <-it.logs:
  8880  			it.Event = new(RootChainBaseEpochFilling)
  8881  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8882  				it.fail = err
  8883  				return false
  8884  			}
  8885  			it.Event.Raw = log
  8886  			return true
  8887  
  8888  		default:
  8889  			return false
  8890  		}
  8891  	}
  8892  	// Iterator still in progress, wait for either a data or an error event
  8893  	select {
  8894  	case log := <-it.logs:
  8895  		it.Event = new(RootChainBaseEpochFilling)
  8896  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8897  			it.fail = err
  8898  			return false
  8899  		}
  8900  		it.Event.Raw = log
  8901  		return true
  8902  
  8903  	case err := <-it.sub.Err():
  8904  		it.done = true
  8905  		it.fail = err
  8906  		return it.Next()
  8907  	}
  8908  }
  8909  
  8910  // Error returns any retrieval or parsing error occurred during filtering.
  8911  func (it *RootChainBaseEpochFillingIterator) Error() error {
  8912  	return it.fail
  8913  }
  8914  
  8915  // Close terminates the iteration process, releasing any pending underlying
  8916  // resources.
  8917  func (it *RootChainBaseEpochFillingIterator) Close() error {
  8918  	it.sub.Unsubscribe()
  8919  	return nil
  8920  }
  8921  
  8922  // RootChainBaseEpochFilling represents a EpochFilling event raised by the RootChainBase contract.
  8923  type RootChainBaseEpochFilling struct {
  8924  	ForkNumber  *big.Int
  8925  	EpochNumber *big.Int
  8926  	Raw         types.Log // Blockchain specific contextual infos
  8927  }
  8928  
  8929  // FilterEpochFilling is a free log retrieval operation binding the contract event 0x27b09f0953d27bbff306fe25b2987ac5a813248ac30cb2bbd5daf95e7b0e6dc0.
  8930  //
  8931  // Solidity: event EpochFilling(uint256 forkNumber, uint256 epochNumber)
  8932  func (_RootChainBase *RootChainBaseFilterer) FilterEpochFilling(opts *bind.FilterOpts) (*RootChainBaseEpochFillingIterator, error) {
  8933  
  8934  	logs, sub, err := _RootChainBase.contract.FilterLogs(opts, "EpochFilling")
  8935  	if err != nil {
  8936  		return nil, err
  8937  	}
  8938  	return &RootChainBaseEpochFillingIterator{contract: _RootChainBase.contract, event: "EpochFilling", logs: logs, sub: sub}, nil
  8939  }
  8940  
  8941  // WatchEpochFilling is a free log subscription operation binding the contract event 0x27b09f0953d27bbff306fe25b2987ac5a813248ac30cb2bbd5daf95e7b0e6dc0.
  8942  //
  8943  // Solidity: event EpochFilling(uint256 forkNumber, uint256 epochNumber)
  8944  func (_RootChainBase *RootChainBaseFilterer) WatchEpochFilling(opts *bind.WatchOpts, sink chan<- *RootChainBaseEpochFilling) (event.Subscription, error) {
  8945  
  8946  	logs, sub, err := _RootChainBase.contract.WatchLogs(opts, "EpochFilling")
  8947  	if err != nil {
  8948  		return nil, err
  8949  	}
  8950  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8951  		defer sub.Unsubscribe()
  8952  		for {
  8953  			select {
  8954  			case log := <-logs:
  8955  				// New log arrived, parse the event and forward to the user
  8956  				event := new(RootChainBaseEpochFilling)
  8957  				if err := _RootChainBase.contract.UnpackLog(event, "EpochFilling", log); err != nil {
  8958  					return err
  8959  				}
  8960  				event.Raw = log
  8961  
  8962  				select {
  8963  				case sink <- event:
  8964  				case err := <-sub.Err():
  8965  					return err
  8966  				case <-quit:
  8967  					return nil
  8968  				}
  8969  			case err := <-sub.Err():
  8970  				return err
  8971  			case <-quit:
  8972  				return nil
  8973  			}
  8974  		}
  8975  	}), nil
  8976  }
  8977  
  8978  // ParseEpochFilling is a log parse operation binding the contract event 0x27b09f0953d27bbff306fe25b2987ac5a813248ac30cb2bbd5daf95e7b0e6dc0.
  8979  //
  8980  // Solidity: event EpochFilling(uint256 forkNumber, uint256 epochNumber)
  8981  func (_RootChainBase *RootChainBaseFilterer) ParseEpochFilling(log types.Log) (*RootChainBaseEpochFilling, error) {
  8982  	event := new(RootChainBaseEpochFilling)
  8983  	if err := _RootChainBase.contract.UnpackLog(event, "EpochFilling", log); err != nil {
  8984  		return nil, err
  8985  	}
  8986  	return event, nil
  8987  }
  8988  
  8989  // RootChainBaseEpochFinalizedIterator is returned from FilterEpochFinalized and is used to iterate over the raw logs and unpacked data for EpochFinalized events raised by the RootChainBase contract.
  8990  type RootChainBaseEpochFinalizedIterator struct {
  8991  	Event *RootChainBaseEpochFinalized // Event containing the contract specifics and raw log
  8992  
  8993  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8994  	event    string              // Event name to use for unpacking event data
  8995  
  8996  	logs chan types.Log        // Log channel receiving the found contract events
  8997  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8998  	done bool                  // Whether the subscription completed delivering logs
  8999  	fail error                 // Occurred error to stop iteration
  9000  }
  9001  
  9002  // Next advances the iterator to the subsequent event, returning whether there
  9003  // are any more events found. In case of a retrieval or parsing error, false is
  9004  // returned and Error() can be queried for the exact failure.
  9005  func (it *RootChainBaseEpochFinalizedIterator) Next() bool {
  9006  	// If the iterator failed, stop iterating
  9007  	if it.fail != nil {
  9008  		return false
  9009  	}
  9010  	// If the iterator completed, deliver directly whatever's available
  9011  	if it.done {
  9012  		select {
  9013  		case log := <-it.logs:
  9014  			it.Event = new(RootChainBaseEpochFinalized)
  9015  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9016  				it.fail = err
  9017  				return false
  9018  			}
  9019  			it.Event.Raw = log
  9020  			return true
  9021  
  9022  		default:
  9023  			return false
  9024  		}
  9025  	}
  9026  	// Iterator still in progress, wait for either a data or an error event
  9027  	select {
  9028  	case log := <-it.logs:
  9029  		it.Event = new(RootChainBaseEpochFinalized)
  9030  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9031  			it.fail = err
  9032  			return false
  9033  		}
  9034  		it.Event.Raw = log
  9035  		return true
  9036  
  9037  	case err := <-it.sub.Err():
  9038  		it.done = true
  9039  		it.fail = err
  9040  		return it.Next()
  9041  	}
  9042  }
  9043  
  9044  // Error returns any retrieval or parsing error occurred during filtering.
  9045  func (it *RootChainBaseEpochFinalizedIterator) Error() error {
  9046  	return it.fail
  9047  }
  9048  
  9049  // Close terminates the iteration process, releasing any pending underlying
  9050  // resources.
  9051  func (it *RootChainBaseEpochFinalizedIterator) Close() error {
  9052  	it.sub.Unsubscribe()
  9053  	return nil
  9054  }
  9055  
  9056  // RootChainBaseEpochFinalized represents a EpochFinalized event raised by the RootChainBase contract.
  9057  type RootChainBaseEpochFinalized struct {
  9058  	ForkNumber       *big.Int
  9059  	EpochNumber      *big.Int
  9060  	StartBlockNumber *big.Int
  9061  	EndBlockNumber   *big.Int
  9062  	Raw              types.Log // Blockchain specific contextual infos
  9063  }
  9064  
  9065  // FilterEpochFinalized is a free log retrieval operation binding the contract event 0x70801d4d63b3da6c19ba7349911f45bed5a99ccdfb51b8138c105872529bebd5.
  9066  //
  9067  // Solidity: event EpochFinalized(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber)
  9068  func (_RootChainBase *RootChainBaseFilterer) FilterEpochFinalized(opts *bind.FilterOpts) (*RootChainBaseEpochFinalizedIterator, error) {
  9069  
  9070  	logs, sub, err := _RootChainBase.contract.FilterLogs(opts, "EpochFinalized")
  9071  	if err != nil {
  9072  		return nil, err
  9073  	}
  9074  	return &RootChainBaseEpochFinalizedIterator{contract: _RootChainBase.contract, event: "EpochFinalized", logs: logs, sub: sub}, nil
  9075  }
  9076  
  9077  // WatchEpochFinalized is a free log subscription operation binding the contract event 0x70801d4d63b3da6c19ba7349911f45bed5a99ccdfb51b8138c105872529bebd5.
  9078  //
  9079  // Solidity: event EpochFinalized(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber)
  9080  func (_RootChainBase *RootChainBaseFilterer) WatchEpochFinalized(opts *bind.WatchOpts, sink chan<- *RootChainBaseEpochFinalized) (event.Subscription, error) {
  9081  
  9082  	logs, sub, err := _RootChainBase.contract.WatchLogs(opts, "EpochFinalized")
  9083  	if err != nil {
  9084  		return nil, err
  9085  	}
  9086  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9087  		defer sub.Unsubscribe()
  9088  		for {
  9089  			select {
  9090  			case log := <-logs:
  9091  				// New log arrived, parse the event and forward to the user
  9092  				event := new(RootChainBaseEpochFinalized)
  9093  				if err := _RootChainBase.contract.UnpackLog(event, "EpochFinalized", log); err != nil {
  9094  					return err
  9095  				}
  9096  				event.Raw = log
  9097  
  9098  				select {
  9099  				case sink <- event:
  9100  				case err := <-sub.Err():
  9101  					return err
  9102  				case <-quit:
  9103  					return nil
  9104  				}
  9105  			case err := <-sub.Err():
  9106  				return err
  9107  			case <-quit:
  9108  				return nil
  9109  			}
  9110  		}
  9111  	}), nil
  9112  }
  9113  
  9114  // ParseEpochFinalized is a log parse operation binding the contract event 0x70801d4d63b3da6c19ba7349911f45bed5a99ccdfb51b8138c105872529bebd5.
  9115  //
  9116  // Solidity: event EpochFinalized(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber)
  9117  func (_RootChainBase *RootChainBaseFilterer) ParseEpochFinalized(log types.Log) (*RootChainBaseEpochFinalized, error) {
  9118  	event := new(RootChainBaseEpochFinalized)
  9119  	if err := _RootChainBase.contract.UnpackLog(event, "EpochFinalized", log); err != nil {
  9120  		return nil, err
  9121  	}
  9122  	return event, nil
  9123  }
  9124  
  9125  // RootChainBaseEpochPreparedIterator is returned from FilterEpochPrepared and is used to iterate over the raw logs and unpacked data for EpochPrepared events raised by the RootChainBase contract.
  9126  type RootChainBaseEpochPreparedIterator struct {
  9127  	Event *RootChainBaseEpochPrepared // Event containing the contract specifics and raw log
  9128  
  9129  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9130  	event    string              // Event name to use for unpacking event data
  9131  
  9132  	logs chan types.Log        // Log channel receiving the found contract events
  9133  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9134  	done bool                  // Whether the subscription completed delivering logs
  9135  	fail error                 // Occurred error to stop iteration
  9136  }
  9137  
  9138  // Next advances the iterator to the subsequent event, returning whether there
  9139  // are any more events found. In case of a retrieval or parsing error, false is
  9140  // returned and Error() can be queried for the exact failure.
  9141  func (it *RootChainBaseEpochPreparedIterator) Next() bool {
  9142  	// If the iterator failed, stop iterating
  9143  	if it.fail != nil {
  9144  		return false
  9145  	}
  9146  	// If the iterator completed, deliver directly whatever's available
  9147  	if it.done {
  9148  		select {
  9149  		case log := <-it.logs:
  9150  			it.Event = new(RootChainBaseEpochPrepared)
  9151  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9152  				it.fail = err
  9153  				return false
  9154  			}
  9155  			it.Event.Raw = log
  9156  			return true
  9157  
  9158  		default:
  9159  			return false
  9160  		}
  9161  	}
  9162  	// Iterator still in progress, wait for either a data or an error event
  9163  	select {
  9164  	case log := <-it.logs:
  9165  		it.Event = new(RootChainBaseEpochPrepared)
  9166  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9167  			it.fail = err
  9168  			return false
  9169  		}
  9170  		it.Event.Raw = log
  9171  		return true
  9172  
  9173  	case err := <-it.sub.Err():
  9174  		it.done = true
  9175  		it.fail = err
  9176  		return it.Next()
  9177  	}
  9178  }
  9179  
  9180  // Error returns any retrieval or parsing error occurred during filtering.
  9181  func (it *RootChainBaseEpochPreparedIterator) Error() error {
  9182  	return it.fail
  9183  }
  9184  
  9185  // Close terminates the iteration process, releasing any pending underlying
  9186  // resources.
  9187  func (it *RootChainBaseEpochPreparedIterator) Close() error {
  9188  	it.sub.Unsubscribe()
  9189  	return nil
  9190  }
  9191  
  9192  // RootChainBaseEpochPrepared represents a EpochPrepared event raised by the RootChainBase contract.
  9193  type RootChainBaseEpochPrepared struct {
  9194  	ForkNumber       *big.Int
  9195  	EpochNumber      *big.Int
  9196  	StartBlockNumber *big.Int
  9197  	EndBlockNumber   *big.Int
  9198  	RequestStart     *big.Int
  9199  	RequestEnd       *big.Int
  9200  	EpochIsEmpty     bool
  9201  	IsRequest        bool
  9202  	UserActivated    bool
  9203  	Rebase           bool
  9204  	Raw              types.Log // Blockchain specific contextual infos
  9205  }
  9206  
  9207  // FilterEpochPrepared is a free log retrieval operation binding the contract event 0x1a69c0760aa329b76f72579129869013ebd3d41594db019c0e997b939fcb32e3.
  9208  //
  9209  // Solidity: event EpochPrepared(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated, bool rebase)
  9210  func (_RootChainBase *RootChainBaseFilterer) FilterEpochPrepared(opts *bind.FilterOpts) (*RootChainBaseEpochPreparedIterator, error) {
  9211  
  9212  	logs, sub, err := _RootChainBase.contract.FilterLogs(opts, "EpochPrepared")
  9213  	if err != nil {
  9214  		return nil, err
  9215  	}
  9216  	return &RootChainBaseEpochPreparedIterator{contract: _RootChainBase.contract, event: "EpochPrepared", logs: logs, sub: sub}, nil
  9217  }
  9218  
  9219  // WatchEpochPrepared is a free log subscription operation binding the contract event 0x1a69c0760aa329b76f72579129869013ebd3d41594db019c0e997b939fcb32e3.
  9220  //
  9221  // Solidity: event EpochPrepared(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated, bool rebase)
  9222  func (_RootChainBase *RootChainBaseFilterer) WatchEpochPrepared(opts *bind.WatchOpts, sink chan<- *RootChainBaseEpochPrepared) (event.Subscription, error) {
  9223  
  9224  	logs, sub, err := _RootChainBase.contract.WatchLogs(opts, "EpochPrepared")
  9225  	if err != nil {
  9226  		return nil, err
  9227  	}
  9228  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9229  		defer sub.Unsubscribe()
  9230  		for {
  9231  			select {
  9232  			case log := <-logs:
  9233  				// New log arrived, parse the event and forward to the user
  9234  				event := new(RootChainBaseEpochPrepared)
  9235  				if err := _RootChainBase.contract.UnpackLog(event, "EpochPrepared", log); err != nil {
  9236  					return err
  9237  				}
  9238  				event.Raw = log
  9239  
  9240  				select {
  9241  				case sink <- event:
  9242  				case err := <-sub.Err():
  9243  					return err
  9244  				case <-quit:
  9245  					return nil
  9246  				}
  9247  			case err := <-sub.Err():
  9248  				return err
  9249  			case <-quit:
  9250  				return nil
  9251  			}
  9252  		}
  9253  	}), nil
  9254  }
  9255  
  9256  // ParseEpochPrepared is a log parse operation binding the contract event 0x1a69c0760aa329b76f72579129869013ebd3d41594db019c0e997b939fcb32e3.
  9257  //
  9258  // Solidity: event EpochPrepared(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated, bool rebase)
  9259  func (_RootChainBase *RootChainBaseFilterer) ParseEpochPrepared(log types.Log) (*RootChainBaseEpochPrepared, error) {
  9260  	event := new(RootChainBaseEpochPrepared)
  9261  	if err := _RootChainBase.contract.UnpackLog(event, "EpochPrepared", log); err != nil {
  9262  		return nil, err
  9263  	}
  9264  	return event, nil
  9265  }
  9266  
  9267  // RootChainBaseEpochRebasedIterator is returned from FilterEpochRebased and is used to iterate over the raw logs and unpacked data for EpochRebased events raised by the RootChainBase contract.
  9268  type RootChainBaseEpochRebasedIterator struct {
  9269  	Event *RootChainBaseEpochRebased // Event containing the contract specifics and raw log
  9270  
  9271  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9272  	event    string              // Event name to use for unpacking event data
  9273  
  9274  	logs chan types.Log        // Log channel receiving the found contract events
  9275  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9276  	done bool                  // Whether the subscription completed delivering logs
  9277  	fail error                 // Occurred error to stop iteration
  9278  }
  9279  
  9280  // Next advances the iterator to the subsequent event, returning whether there
  9281  // are any more events found. In case of a retrieval or parsing error, false is
  9282  // returned and Error() can be queried for the exact failure.
  9283  func (it *RootChainBaseEpochRebasedIterator) Next() bool {
  9284  	// If the iterator failed, stop iterating
  9285  	if it.fail != nil {
  9286  		return false
  9287  	}
  9288  	// If the iterator completed, deliver directly whatever's available
  9289  	if it.done {
  9290  		select {
  9291  		case log := <-it.logs:
  9292  			it.Event = new(RootChainBaseEpochRebased)
  9293  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9294  				it.fail = err
  9295  				return false
  9296  			}
  9297  			it.Event.Raw = log
  9298  			return true
  9299  
  9300  		default:
  9301  			return false
  9302  		}
  9303  	}
  9304  	// Iterator still in progress, wait for either a data or an error event
  9305  	select {
  9306  	case log := <-it.logs:
  9307  		it.Event = new(RootChainBaseEpochRebased)
  9308  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9309  			it.fail = err
  9310  			return false
  9311  		}
  9312  		it.Event.Raw = log
  9313  		return true
  9314  
  9315  	case err := <-it.sub.Err():
  9316  		it.done = true
  9317  		it.fail = err
  9318  		return it.Next()
  9319  	}
  9320  }
  9321  
  9322  // Error returns any retrieval or parsing error occurred during filtering.
  9323  func (it *RootChainBaseEpochRebasedIterator) Error() error {
  9324  	return it.fail
  9325  }
  9326  
  9327  // Close terminates the iteration process, releasing any pending underlying
  9328  // resources.
  9329  func (it *RootChainBaseEpochRebasedIterator) Close() error {
  9330  	it.sub.Unsubscribe()
  9331  	return nil
  9332  }
  9333  
  9334  // RootChainBaseEpochRebased represents a EpochRebased event raised by the RootChainBase contract.
  9335  type RootChainBaseEpochRebased struct {
  9336  	ForkNumber       *big.Int
  9337  	EpochNumber      *big.Int
  9338  	StartBlockNumber *big.Int
  9339  	EndBlockNumber   *big.Int
  9340  	RequestStart     *big.Int
  9341  	RequestEnd       *big.Int
  9342  	EpochIsEmpty     bool
  9343  	IsRequest        bool
  9344  	UserActivated    bool
  9345  	Raw              types.Log // Blockchain specific contextual infos
  9346  }
  9347  
  9348  // FilterEpochRebased is a free log retrieval operation binding the contract event 0x030c1c69405c93021f28f57557240dee939a320b826a1fd0d39bf6e629ecab47.
  9349  //
  9350  // Solidity: event EpochRebased(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated)
  9351  func (_RootChainBase *RootChainBaseFilterer) FilterEpochRebased(opts *bind.FilterOpts) (*RootChainBaseEpochRebasedIterator, error) {
  9352  
  9353  	logs, sub, err := _RootChainBase.contract.FilterLogs(opts, "EpochRebased")
  9354  	if err != nil {
  9355  		return nil, err
  9356  	}
  9357  	return &RootChainBaseEpochRebasedIterator{contract: _RootChainBase.contract, event: "EpochRebased", logs: logs, sub: sub}, nil
  9358  }
  9359  
  9360  // WatchEpochRebased is a free log subscription operation binding the contract event 0x030c1c69405c93021f28f57557240dee939a320b826a1fd0d39bf6e629ecab47.
  9361  //
  9362  // Solidity: event EpochRebased(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated)
  9363  func (_RootChainBase *RootChainBaseFilterer) WatchEpochRebased(opts *bind.WatchOpts, sink chan<- *RootChainBaseEpochRebased) (event.Subscription, error) {
  9364  
  9365  	logs, sub, err := _RootChainBase.contract.WatchLogs(opts, "EpochRebased")
  9366  	if err != nil {
  9367  		return nil, err
  9368  	}
  9369  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9370  		defer sub.Unsubscribe()
  9371  		for {
  9372  			select {
  9373  			case log := <-logs:
  9374  				// New log arrived, parse the event and forward to the user
  9375  				event := new(RootChainBaseEpochRebased)
  9376  				if err := _RootChainBase.contract.UnpackLog(event, "EpochRebased", log); err != nil {
  9377  					return err
  9378  				}
  9379  				event.Raw = log
  9380  
  9381  				select {
  9382  				case sink <- event:
  9383  				case err := <-sub.Err():
  9384  					return err
  9385  				case <-quit:
  9386  					return nil
  9387  				}
  9388  			case err := <-sub.Err():
  9389  				return err
  9390  			case <-quit:
  9391  				return nil
  9392  			}
  9393  		}
  9394  	}), nil
  9395  }
  9396  
  9397  // ParseEpochRebased is a log parse operation binding the contract event 0x030c1c69405c93021f28f57557240dee939a320b826a1fd0d39bf6e629ecab47.
  9398  //
  9399  // Solidity: event EpochRebased(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated)
  9400  func (_RootChainBase *RootChainBaseFilterer) ParseEpochRebased(log types.Log) (*RootChainBaseEpochRebased, error) {
  9401  	event := new(RootChainBaseEpochRebased)
  9402  	if err := _RootChainBase.contract.UnpackLog(event, "EpochRebased", log); err != nil {
  9403  		return nil, err
  9404  	}
  9405  	return event, nil
  9406  }
  9407  
  9408  // RootChainBaseForkedIterator is returned from FilterForked and is used to iterate over the raw logs and unpacked data for Forked events raised by the RootChainBase contract.
  9409  type RootChainBaseForkedIterator struct {
  9410  	Event *RootChainBaseForked // Event containing the contract specifics and raw log
  9411  
  9412  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9413  	event    string              // Event name to use for unpacking event data
  9414  
  9415  	logs chan types.Log        // Log channel receiving the found contract events
  9416  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9417  	done bool                  // Whether the subscription completed delivering logs
  9418  	fail error                 // Occurred error to stop iteration
  9419  }
  9420  
  9421  // Next advances the iterator to the subsequent event, returning whether there
  9422  // are any more events found. In case of a retrieval or parsing error, false is
  9423  // returned and Error() can be queried for the exact failure.
  9424  func (it *RootChainBaseForkedIterator) Next() bool {
  9425  	// If the iterator failed, stop iterating
  9426  	if it.fail != nil {
  9427  		return false
  9428  	}
  9429  	// If the iterator completed, deliver directly whatever's available
  9430  	if it.done {
  9431  		select {
  9432  		case log := <-it.logs:
  9433  			it.Event = new(RootChainBaseForked)
  9434  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9435  				it.fail = err
  9436  				return false
  9437  			}
  9438  			it.Event.Raw = log
  9439  			return true
  9440  
  9441  		default:
  9442  			return false
  9443  		}
  9444  	}
  9445  	// Iterator still in progress, wait for either a data or an error event
  9446  	select {
  9447  	case log := <-it.logs:
  9448  		it.Event = new(RootChainBaseForked)
  9449  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9450  			it.fail = err
  9451  			return false
  9452  		}
  9453  		it.Event.Raw = log
  9454  		return true
  9455  
  9456  	case err := <-it.sub.Err():
  9457  		it.done = true
  9458  		it.fail = err
  9459  		return it.Next()
  9460  	}
  9461  }
  9462  
  9463  // Error returns any retrieval or parsing error occurred during filtering.
  9464  func (it *RootChainBaseForkedIterator) Error() error {
  9465  	return it.fail
  9466  }
  9467  
  9468  // Close terminates the iteration process, releasing any pending underlying
  9469  // resources.
  9470  func (it *RootChainBaseForkedIterator) Close() error {
  9471  	it.sub.Unsubscribe()
  9472  	return nil
  9473  }
  9474  
  9475  // RootChainBaseForked represents a Forked event raised by the RootChainBase contract.
  9476  type RootChainBaseForked struct {
  9477  	NewFork           *big.Int
  9478  	EpochNumber       *big.Int
  9479  	ForkedBlockNumber *big.Int
  9480  	Raw               types.Log // Blockchain specific contextual infos
  9481  }
  9482  
  9483  // FilterForked is a free log retrieval operation binding the contract event 0x0647d42ab02f6e0ae76959757dcb6aa6feac1d4ba6f077f1223fb4b1b429f06c.
  9484  //
  9485  // Solidity: event Forked(uint256 newFork, uint256 epochNumber, uint256 forkedBlockNumber)
  9486  func (_RootChainBase *RootChainBaseFilterer) FilterForked(opts *bind.FilterOpts) (*RootChainBaseForkedIterator, error) {
  9487  
  9488  	logs, sub, err := _RootChainBase.contract.FilterLogs(opts, "Forked")
  9489  	if err != nil {
  9490  		return nil, err
  9491  	}
  9492  	return &RootChainBaseForkedIterator{contract: _RootChainBase.contract, event: "Forked", logs: logs, sub: sub}, nil
  9493  }
  9494  
  9495  // WatchForked is a free log subscription operation binding the contract event 0x0647d42ab02f6e0ae76959757dcb6aa6feac1d4ba6f077f1223fb4b1b429f06c.
  9496  //
  9497  // Solidity: event Forked(uint256 newFork, uint256 epochNumber, uint256 forkedBlockNumber)
  9498  func (_RootChainBase *RootChainBaseFilterer) WatchForked(opts *bind.WatchOpts, sink chan<- *RootChainBaseForked) (event.Subscription, error) {
  9499  
  9500  	logs, sub, err := _RootChainBase.contract.WatchLogs(opts, "Forked")
  9501  	if err != nil {
  9502  		return nil, err
  9503  	}
  9504  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9505  		defer sub.Unsubscribe()
  9506  		for {
  9507  			select {
  9508  			case log := <-logs:
  9509  				// New log arrived, parse the event and forward to the user
  9510  				event := new(RootChainBaseForked)
  9511  				if err := _RootChainBase.contract.UnpackLog(event, "Forked", log); err != nil {
  9512  					return err
  9513  				}
  9514  				event.Raw = log
  9515  
  9516  				select {
  9517  				case sink <- event:
  9518  				case err := <-sub.Err():
  9519  					return err
  9520  				case <-quit:
  9521  					return nil
  9522  				}
  9523  			case err := <-sub.Err():
  9524  				return err
  9525  			case <-quit:
  9526  				return nil
  9527  			}
  9528  		}
  9529  	}), nil
  9530  }
  9531  
  9532  // ParseForked is a log parse operation binding the contract event 0x0647d42ab02f6e0ae76959757dcb6aa6feac1d4ba6f077f1223fb4b1b429f06c.
  9533  //
  9534  // Solidity: event Forked(uint256 newFork, uint256 epochNumber, uint256 forkedBlockNumber)
  9535  func (_RootChainBase *RootChainBaseFilterer) ParseForked(log types.Log) (*RootChainBaseForked, error) {
  9536  	event := new(RootChainBaseForked)
  9537  	if err := _RootChainBase.contract.UnpackLog(event, "Forked", log); err != nil {
  9538  		return nil, err
  9539  	}
  9540  	return event, nil
  9541  }
  9542  
  9543  // RootChainBaseOperatorChangedIterator is returned from FilterOperatorChanged and is used to iterate over the raw logs and unpacked data for OperatorChanged events raised by the RootChainBase contract.
  9544  type RootChainBaseOperatorChangedIterator struct {
  9545  	Event *RootChainBaseOperatorChanged // Event containing the contract specifics and raw log
  9546  
  9547  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9548  	event    string              // Event name to use for unpacking event data
  9549  
  9550  	logs chan types.Log        // Log channel receiving the found contract events
  9551  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9552  	done bool                  // Whether the subscription completed delivering logs
  9553  	fail error                 // Occurred error to stop iteration
  9554  }
  9555  
  9556  // Next advances the iterator to the subsequent event, returning whether there
  9557  // are any more events found. In case of a retrieval or parsing error, false is
  9558  // returned and Error() can be queried for the exact failure.
  9559  func (it *RootChainBaseOperatorChangedIterator) Next() bool {
  9560  	// If the iterator failed, stop iterating
  9561  	if it.fail != nil {
  9562  		return false
  9563  	}
  9564  	// If the iterator completed, deliver directly whatever's available
  9565  	if it.done {
  9566  		select {
  9567  		case log := <-it.logs:
  9568  			it.Event = new(RootChainBaseOperatorChanged)
  9569  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9570  				it.fail = err
  9571  				return false
  9572  			}
  9573  			it.Event.Raw = log
  9574  			return true
  9575  
  9576  		default:
  9577  			return false
  9578  		}
  9579  	}
  9580  	// Iterator still in progress, wait for either a data or an error event
  9581  	select {
  9582  	case log := <-it.logs:
  9583  		it.Event = new(RootChainBaseOperatorChanged)
  9584  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9585  			it.fail = err
  9586  			return false
  9587  		}
  9588  		it.Event.Raw = log
  9589  		return true
  9590  
  9591  	case err := <-it.sub.Err():
  9592  		it.done = true
  9593  		it.fail = err
  9594  		return it.Next()
  9595  	}
  9596  }
  9597  
  9598  // Error returns any retrieval or parsing error occurred during filtering.
  9599  func (it *RootChainBaseOperatorChangedIterator) Error() error {
  9600  	return it.fail
  9601  }
  9602  
  9603  // Close terminates the iteration process, releasing any pending underlying
  9604  // resources.
  9605  func (it *RootChainBaseOperatorChangedIterator) Close() error {
  9606  	it.sub.Unsubscribe()
  9607  	return nil
  9608  }
  9609  
  9610  // RootChainBaseOperatorChanged represents a OperatorChanged event raised by the RootChainBase contract.
  9611  type RootChainBaseOperatorChanged struct {
  9612  	NewOperator common.Address
  9613  	Raw         types.Log // Blockchain specific contextual infos
  9614  }
  9615  
  9616  // FilterOperatorChanged is a free log retrieval operation binding the contract event 0x4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e54.
  9617  //
  9618  // Solidity: event OperatorChanged(address _newOperator)
  9619  func (_RootChainBase *RootChainBaseFilterer) FilterOperatorChanged(opts *bind.FilterOpts) (*RootChainBaseOperatorChangedIterator, error) {
  9620  
  9621  	logs, sub, err := _RootChainBase.contract.FilterLogs(opts, "OperatorChanged")
  9622  	if err != nil {
  9623  		return nil, err
  9624  	}
  9625  	return &RootChainBaseOperatorChangedIterator{contract: _RootChainBase.contract, event: "OperatorChanged", logs: logs, sub: sub}, nil
  9626  }
  9627  
  9628  // WatchOperatorChanged is a free log subscription operation binding the contract event 0x4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e54.
  9629  //
  9630  // Solidity: event OperatorChanged(address _newOperator)
  9631  func (_RootChainBase *RootChainBaseFilterer) WatchOperatorChanged(opts *bind.WatchOpts, sink chan<- *RootChainBaseOperatorChanged) (event.Subscription, error) {
  9632  
  9633  	logs, sub, err := _RootChainBase.contract.WatchLogs(opts, "OperatorChanged")
  9634  	if err != nil {
  9635  		return nil, err
  9636  	}
  9637  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9638  		defer sub.Unsubscribe()
  9639  		for {
  9640  			select {
  9641  			case log := <-logs:
  9642  				// New log arrived, parse the event and forward to the user
  9643  				event := new(RootChainBaseOperatorChanged)
  9644  				if err := _RootChainBase.contract.UnpackLog(event, "OperatorChanged", log); err != nil {
  9645  					return err
  9646  				}
  9647  				event.Raw = log
  9648  
  9649  				select {
  9650  				case sink <- event:
  9651  				case err := <-sub.Err():
  9652  					return err
  9653  				case <-quit:
  9654  					return nil
  9655  				}
  9656  			case err := <-sub.Err():
  9657  				return err
  9658  			case <-quit:
  9659  				return nil
  9660  			}
  9661  		}
  9662  	}), nil
  9663  }
  9664  
  9665  // ParseOperatorChanged is a log parse operation binding the contract event 0x4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e54.
  9666  //
  9667  // Solidity: event OperatorChanged(address _newOperator)
  9668  func (_RootChainBase *RootChainBaseFilterer) ParseOperatorChanged(log types.Log) (*RootChainBaseOperatorChanged, error) {
  9669  	event := new(RootChainBaseOperatorChanged)
  9670  	if err := _RootChainBase.contract.UnpackLog(event, "OperatorChanged", log); err != nil {
  9671  		return nil, err
  9672  	}
  9673  	return event, nil
  9674  }
  9675  
  9676  // RootChainBaseRequestAppliedIterator is returned from FilterRequestApplied and is used to iterate over the raw logs and unpacked data for RequestApplied events raised by the RootChainBase contract.
  9677  type RootChainBaseRequestAppliedIterator struct {
  9678  	Event *RootChainBaseRequestApplied // Event containing the contract specifics and raw log
  9679  
  9680  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9681  	event    string              // Event name to use for unpacking event data
  9682  
  9683  	logs chan types.Log        // Log channel receiving the found contract events
  9684  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9685  	done bool                  // Whether the subscription completed delivering logs
  9686  	fail error                 // Occurred error to stop iteration
  9687  }
  9688  
  9689  // Next advances the iterator to the subsequent event, returning whether there
  9690  // are any more events found. In case of a retrieval or parsing error, false is
  9691  // returned and Error() can be queried for the exact failure.
  9692  func (it *RootChainBaseRequestAppliedIterator) Next() bool {
  9693  	// If the iterator failed, stop iterating
  9694  	if it.fail != nil {
  9695  		return false
  9696  	}
  9697  	// If the iterator completed, deliver directly whatever's available
  9698  	if it.done {
  9699  		select {
  9700  		case log := <-it.logs:
  9701  			it.Event = new(RootChainBaseRequestApplied)
  9702  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9703  				it.fail = err
  9704  				return false
  9705  			}
  9706  			it.Event.Raw = log
  9707  			return true
  9708  
  9709  		default:
  9710  			return false
  9711  		}
  9712  	}
  9713  	// Iterator still in progress, wait for either a data or an error event
  9714  	select {
  9715  	case log := <-it.logs:
  9716  		it.Event = new(RootChainBaseRequestApplied)
  9717  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9718  			it.fail = err
  9719  			return false
  9720  		}
  9721  		it.Event.Raw = log
  9722  		return true
  9723  
  9724  	case err := <-it.sub.Err():
  9725  		it.done = true
  9726  		it.fail = err
  9727  		return it.Next()
  9728  	}
  9729  }
  9730  
  9731  // Error returns any retrieval or parsing error occurred during filtering.
  9732  func (it *RootChainBaseRequestAppliedIterator) Error() error {
  9733  	return it.fail
  9734  }
  9735  
  9736  // Close terminates the iteration process, releasing any pending underlying
  9737  // resources.
  9738  func (it *RootChainBaseRequestAppliedIterator) Close() error {
  9739  	it.sub.Unsubscribe()
  9740  	return nil
  9741  }
  9742  
  9743  // RootChainBaseRequestApplied represents a RequestApplied event raised by the RootChainBase contract.
  9744  type RootChainBaseRequestApplied struct {
  9745  	RequestId     *big.Int
  9746  	UserActivated bool
  9747  	Raw           types.Log // Blockchain specific contextual infos
  9748  }
  9749  
  9750  // FilterRequestApplied is a free log retrieval operation binding the contract event 0x6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c2.
  9751  //
  9752  // Solidity: event RequestApplied(uint256 requestId, bool userActivated)
  9753  func (_RootChainBase *RootChainBaseFilterer) FilterRequestApplied(opts *bind.FilterOpts) (*RootChainBaseRequestAppliedIterator, error) {
  9754  
  9755  	logs, sub, err := _RootChainBase.contract.FilterLogs(opts, "RequestApplied")
  9756  	if err != nil {
  9757  		return nil, err
  9758  	}
  9759  	return &RootChainBaseRequestAppliedIterator{contract: _RootChainBase.contract, event: "RequestApplied", logs: logs, sub: sub}, nil
  9760  }
  9761  
  9762  // WatchRequestApplied is a free log subscription operation binding the contract event 0x6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c2.
  9763  //
  9764  // Solidity: event RequestApplied(uint256 requestId, bool userActivated)
  9765  func (_RootChainBase *RootChainBaseFilterer) WatchRequestApplied(opts *bind.WatchOpts, sink chan<- *RootChainBaseRequestApplied) (event.Subscription, error) {
  9766  
  9767  	logs, sub, err := _RootChainBase.contract.WatchLogs(opts, "RequestApplied")
  9768  	if err != nil {
  9769  		return nil, err
  9770  	}
  9771  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9772  		defer sub.Unsubscribe()
  9773  		for {
  9774  			select {
  9775  			case log := <-logs:
  9776  				// New log arrived, parse the event and forward to the user
  9777  				event := new(RootChainBaseRequestApplied)
  9778  				if err := _RootChainBase.contract.UnpackLog(event, "RequestApplied", log); err != nil {
  9779  					return err
  9780  				}
  9781  				event.Raw = log
  9782  
  9783  				select {
  9784  				case sink <- event:
  9785  				case err := <-sub.Err():
  9786  					return err
  9787  				case <-quit:
  9788  					return nil
  9789  				}
  9790  			case err := <-sub.Err():
  9791  				return err
  9792  			case <-quit:
  9793  				return nil
  9794  			}
  9795  		}
  9796  	}), nil
  9797  }
  9798  
  9799  // ParseRequestApplied is a log parse operation binding the contract event 0x6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c2.
  9800  //
  9801  // Solidity: event RequestApplied(uint256 requestId, bool userActivated)
  9802  func (_RootChainBase *RootChainBaseFilterer) ParseRequestApplied(log types.Log) (*RootChainBaseRequestApplied, error) {
  9803  	event := new(RootChainBaseRequestApplied)
  9804  	if err := _RootChainBase.contract.UnpackLog(event, "RequestApplied", log); err != nil {
  9805  		return nil, err
  9806  	}
  9807  	return event, nil
  9808  }
  9809  
  9810  // RootChainBaseRequestChallengedIterator is returned from FilterRequestChallenged and is used to iterate over the raw logs and unpacked data for RequestChallenged events raised by the RootChainBase contract.
  9811  type RootChainBaseRequestChallengedIterator struct {
  9812  	Event *RootChainBaseRequestChallenged // Event containing the contract specifics and raw log
  9813  
  9814  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9815  	event    string              // Event name to use for unpacking event data
  9816  
  9817  	logs chan types.Log        // Log channel receiving the found contract events
  9818  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9819  	done bool                  // Whether the subscription completed delivering logs
  9820  	fail error                 // Occurred error to stop iteration
  9821  }
  9822  
  9823  // Next advances the iterator to the subsequent event, returning whether there
  9824  // are any more events found. In case of a retrieval or parsing error, false is
  9825  // returned and Error() can be queried for the exact failure.
  9826  func (it *RootChainBaseRequestChallengedIterator) Next() bool {
  9827  	// If the iterator failed, stop iterating
  9828  	if it.fail != nil {
  9829  		return false
  9830  	}
  9831  	// If the iterator completed, deliver directly whatever's available
  9832  	if it.done {
  9833  		select {
  9834  		case log := <-it.logs:
  9835  			it.Event = new(RootChainBaseRequestChallenged)
  9836  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9837  				it.fail = err
  9838  				return false
  9839  			}
  9840  			it.Event.Raw = log
  9841  			return true
  9842  
  9843  		default:
  9844  			return false
  9845  		}
  9846  	}
  9847  	// Iterator still in progress, wait for either a data or an error event
  9848  	select {
  9849  	case log := <-it.logs:
  9850  		it.Event = new(RootChainBaseRequestChallenged)
  9851  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9852  			it.fail = err
  9853  			return false
  9854  		}
  9855  		it.Event.Raw = log
  9856  		return true
  9857  
  9858  	case err := <-it.sub.Err():
  9859  		it.done = true
  9860  		it.fail = err
  9861  		return it.Next()
  9862  	}
  9863  }
  9864  
  9865  // Error returns any retrieval or parsing error occurred during filtering.
  9866  func (it *RootChainBaseRequestChallengedIterator) Error() error {
  9867  	return it.fail
  9868  }
  9869  
  9870  // Close terminates the iteration process, releasing any pending underlying
  9871  // resources.
  9872  func (it *RootChainBaseRequestChallengedIterator) Close() error {
  9873  	it.sub.Unsubscribe()
  9874  	return nil
  9875  }
  9876  
  9877  // RootChainBaseRequestChallenged represents a RequestChallenged event raised by the RootChainBase contract.
  9878  type RootChainBaseRequestChallenged struct {
  9879  	RequestId     *big.Int
  9880  	UserActivated bool
  9881  	Raw           types.Log // Blockchain specific contextual infos
  9882  }
  9883  
  9884  // FilterRequestChallenged is a free log retrieval operation binding the contract event 0xc8135db115644ed4ae193313c4c801235ef740d2a57a8d5e6fe26ab66635698a.
  9885  //
  9886  // Solidity: event RequestChallenged(uint256 requestId, bool userActivated)
  9887  func (_RootChainBase *RootChainBaseFilterer) FilterRequestChallenged(opts *bind.FilterOpts) (*RootChainBaseRequestChallengedIterator, error) {
  9888  
  9889  	logs, sub, err := _RootChainBase.contract.FilterLogs(opts, "RequestChallenged")
  9890  	if err != nil {
  9891  		return nil, err
  9892  	}
  9893  	return &RootChainBaseRequestChallengedIterator{contract: _RootChainBase.contract, event: "RequestChallenged", logs: logs, sub: sub}, nil
  9894  }
  9895  
  9896  // WatchRequestChallenged is a free log subscription operation binding the contract event 0xc8135db115644ed4ae193313c4c801235ef740d2a57a8d5e6fe26ab66635698a.
  9897  //
  9898  // Solidity: event RequestChallenged(uint256 requestId, bool userActivated)
  9899  func (_RootChainBase *RootChainBaseFilterer) WatchRequestChallenged(opts *bind.WatchOpts, sink chan<- *RootChainBaseRequestChallenged) (event.Subscription, error) {
  9900  
  9901  	logs, sub, err := _RootChainBase.contract.WatchLogs(opts, "RequestChallenged")
  9902  	if err != nil {
  9903  		return nil, err
  9904  	}
  9905  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9906  		defer sub.Unsubscribe()
  9907  		for {
  9908  			select {
  9909  			case log := <-logs:
  9910  				// New log arrived, parse the event and forward to the user
  9911  				event := new(RootChainBaseRequestChallenged)
  9912  				if err := _RootChainBase.contract.UnpackLog(event, "RequestChallenged", log); err != nil {
  9913  					return err
  9914  				}
  9915  				event.Raw = log
  9916  
  9917  				select {
  9918  				case sink <- event:
  9919  				case err := <-sub.Err():
  9920  					return err
  9921  				case <-quit:
  9922  					return nil
  9923  				}
  9924  			case err := <-sub.Err():
  9925  				return err
  9926  			case <-quit:
  9927  				return nil
  9928  			}
  9929  		}
  9930  	}), nil
  9931  }
  9932  
  9933  // ParseRequestChallenged is a log parse operation binding the contract event 0xc8135db115644ed4ae193313c4c801235ef740d2a57a8d5e6fe26ab66635698a.
  9934  //
  9935  // Solidity: event RequestChallenged(uint256 requestId, bool userActivated)
  9936  func (_RootChainBase *RootChainBaseFilterer) ParseRequestChallenged(log types.Log) (*RootChainBaseRequestChallenged, error) {
  9937  	event := new(RootChainBaseRequestChallenged)
  9938  	if err := _RootChainBase.contract.UnpackLog(event, "RequestChallenged", log); err != nil {
  9939  		return nil, err
  9940  	}
  9941  	return event, nil
  9942  }
  9943  
  9944  // RootChainBaseRequestCreatedIterator is returned from FilterRequestCreated and is used to iterate over the raw logs and unpacked data for RequestCreated events raised by the RootChainBase contract.
  9945  type RootChainBaseRequestCreatedIterator struct {
  9946  	Event *RootChainBaseRequestCreated // Event containing the contract specifics and raw log
  9947  
  9948  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9949  	event    string              // Event name to use for unpacking event data
  9950  
  9951  	logs chan types.Log        // Log channel receiving the found contract events
  9952  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9953  	done bool                  // Whether the subscription completed delivering logs
  9954  	fail error                 // Occurred error to stop iteration
  9955  }
  9956  
  9957  // Next advances the iterator to the subsequent event, returning whether there
  9958  // are any more events found. In case of a retrieval or parsing error, false is
  9959  // returned and Error() can be queried for the exact failure.
  9960  func (it *RootChainBaseRequestCreatedIterator) Next() bool {
  9961  	// If the iterator failed, stop iterating
  9962  	if it.fail != nil {
  9963  		return false
  9964  	}
  9965  	// If the iterator completed, deliver directly whatever's available
  9966  	if it.done {
  9967  		select {
  9968  		case log := <-it.logs:
  9969  			it.Event = new(RootChainBaseRequestCreated)
  9970  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9971  				it.fail = err
  9972  				return false
  9973  			}
  9974  			it.Event.Raw = log
  9975  			return true
  9976  
  9977  		default:
  9978  			return false
  9979  		}
  9980  	}
  9981  	// Iterator still in progress, wait for either a data or an error event
  9982  	select {
  9983  	case log := <-it.logs:
  9984  		it.Event = new(RootChainBaseRequestCreated)
  9985  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9986  			it.fail = err
  9987  			return false
  9988  		}
  9989  		it.Event.Raw = log
  9990  		return true
  9991  
  9992  	case err := <-it.sub.Err():
  9993  		it.done = true
  9994  		it.fail = err
  9995  		return it.Next()
  9996  	}
  9997  }
  9998  
  9999  // Error returns any retrieval or parsing error occurred during filtering.
 10000  func (it *RootChainBaseRequestCreatedIterator) Error() error {
 10001  	return it.fail
 10002  }
 10003  
 10004  // Close terminates the iteration process, releasing any pending underlying
 10005  // resources.
 10006  func (it *RootChainBaseRequestCreatedIterator) Close() error {
 10007  	it.sub.Unsubscribe()
 10008  	return nil
 10009  }
 10010  
 10011  // RootChainBaseRequestCreated represents a RequestCreated event raised by the RootChainBase contract.
 10012  type RootChainBaseRequestCreated struct {
 10013  	RequestId     *big.Int
 10014  	Requestor     common.Address
 10015  	To            common.Address
 10016  	WeiAmount     *big.Int
 10017  	TrieKey       [32]byte
 10018  	TrieValue     []byte
 10019  	IsExit        bool
 10020  	UserActivated bool
 10021  	Raw           types.Log // Blockchain specific contextual infos
 10022  }
 10023  
 10024  // FilterRequestCreated is a free log retrieval operation binding the contract event 0x879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d.
 10025  //
 10026  // Solidity: event RequestCreated(uint256 requestId, address requestor, address to, uint256 weiAmount, bytes32 trieKey, bytes trieValue, bool isExit, bool userActivated)
 10027  func (_RootChainBase *RootChainBaseFilterer) FilterRequestCreated(opts *bind.FilterOpts) (*RootChainBaseRequestCreatedIterator, error) {
 10028  
 10029  	logs, sub, err := _RootChainBase.contract.FilterLogs(opts, "RequestCreated")
 10030  	if err != nil {
 10031  		return nil, err
 10032  	}
 10033  	return &RootChainBaseRequestCreatedIterator{contract: _RootChainBase.contract, event: "RequestCreated", logs: logs, sub: sub}, nil
 10034  }
 10035  
 10036  // WatchRequestCreated is a free log subscription operation binding the contract event 0x879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d.
 10037  //
 10038  // Solidity: event RequestCreated(uint256 requestId, address requestor, address to, uint256 weiAmount, bytes32 trieKey, bytes trieValue, bool isExit, bool userActivated)
 10039  func (_RootChainBase *RootChainBaseFilterer) WatchRequestCreated(opts *bind.WatchOpts, sink chan<- *RootChainBaseRequestCreated) (event.Subscription, error) {
 10040  
 10041  	logs, sub, err := _RootChainBase.contract.WatchLogs(opts, "RequestCreated")
 10042  	if err != nil {
 10043  		return nil, err
 10044  	}
 10045  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10046  		defer sub.Unsubscribe()
 10047  		for {
 10048  			select {
 10049  			case log := <-logs:
 10050  				// New log arrived, parse the event and forward to the user
 10051  				event := new(RootChainBaseRequestCreated)
 10052  				if err := _RootChainBase.contract.UnpackLog(event, "RequestCreated", log); err != nil {
 10053  					return err
 10054  				}
 10055  				event.Raw = log
 10056  
 10057  				select {
 10058  				case sink <- event:
 10059  				case err := <-sub.Err():
 10060  					return err
 10061  				case <-quit:
 10062  					return nil
 10063  				}
 10064  			case err := <-sub.Err():
 10065  				return err
 10066  			case <-quit:
 10067  				return nil
 10068  			}
 10069  		}
 10070  	}), nil
 10071  }
 10072  
 10073  // ParseRequestCreated is a log parse operation binding the contract event 0x879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d.
 10074  //
 10075  // Solidity: event RequestCreated(uint256 requestId, address requestor, address to, uint256 weiAmount, bytes32 trieKey, bytes trieValue, bool isExit, bool userActivated)
 10076  func (_RootChainBase *RootChainBaseFilterer) ParseRequestCreated(log types.Log) (*RootChainBaseRequestCreated, error) {
 10077  	event := new(RootChainBaseRequestCreated)
 10078  	if err := _RootChainBase.contract.UnpackLog(event, "RequestCreated", log); err != nil {
 10079  		return nil, err
 10080  	}
 10081  	return event, nil
 10082  }
 10083  
 10084  // RootChainBaseRequestFinalizedIterator is returned from FilterRequestFinalized and is used to iterate over the raw logs and unpacked data for RequestFinalized events raised by the RootChainBase contract.
 10085  type RootChainBaseRequestFinalizedIterator struct {
 10086  	Event *RootChainBaseRequestFinalized // Event containing the contract specifics and raw log
 10087  
 10088  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10089  	event    string              // Event name to use for unpacking event data
 10090  
 10091  	logs chan types.Log        // Log channel receiving the found contract events
 10092  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 10093  	done bool                  // Whether the subscription completed delivering logs
 10094  	fail error                 // Occurred error to stop iteration
 10095  }
 10096  
 10097  // Next advances the iterator to the subsequent event, returning whether there
 10098  // are any more events found. In case of a retrieval or parsing error, false is
 10099  // returned and Error() can be queried for the exact failure.
 10100  func (it *RootChainBaseRequestFinalizedIterator) Next() bool {
 10101  	// If the iterator failed, stop iterating
 10102  	if it.fail != nil {
 10103  		return false
 10104  	}
 10105  	// If the iterator completed, deliver directly whatever's available
 10106  	if it.done {
 10107  		select {
 10108  		case log := <-it.logs:
 10109  			it.Event = new(RootChainBaseRequestFinalized)
 10110  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10111  				it.fail = err
 10112  				return false
 10113  			}
 10114  			it.Event.Raw = log
 10115  			return true
 10116  
 10117  		default:
 10118  			return false
 10119  		}
 10120  	}
 10121  	// Iterator still in progress, wait for either a data or an error event
 10122  	select {
 10123  	case log := <-it.logs:
 10124  		it.Event = new(RootChainBaseRequestFinalized)
 10125  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10126  			it.fail = err
 10127  			return false
 10128  		}
 10129  		it.Event.Raw = log
 10130  		return true
 10131  
 10132  	case err := <-it.sub.Err():
 10133  		it.done = true
 10134  		it.fail = err
 10135  		return it.Next()
 10136  	}
 10137  }
 10138  
 10139  // Error returns any retrieval or parsing error occurred during filtering.
 10140  func (it *RootChainBaseRequestFinalizedIterator) Error() error {
 10141  	return it.fail
 10142  }
 10143  
 10144  // Close terminates the iteration process, releasing any pending underlying
 10145  // resources.
 10146  func (it *RootChainBaseRequestFinalizedIterator) Close() error {
 10147  	it.sub.Unsubscribe()
 10148  	return nil
 10149  }
 10150  
 10151  // RootChainBaseRequestFinalized represents a RequestFinalized event raised by the RootChainBase contract.
 10152  type RootChainBaseRequestFinalized struct {
 10153  	RequestId     *big.Int
 10154  	UserActivated bool
 10155  	Raw           types.Log // Blockchain specific contextual infos
 10156  }
 10157  
 10158  // FilterRequestFinalized is a free log retrieval operation binding the contract event 0x134017cf3262b18f892ee95dde3b0aec9a80cc70a7c96f09c64bd237aceb0473.
 10159  //
 10160  // Solidity: event RequestFinalized(uint256 requestId, bool userActivated)
 10161  func (_RootChainBase *RootChainBaseFilterer) FilterRequestFinalized(opts *bind.FilterOpts) (*RootChainBaseRequestFinalizedIterator, error) {
 10162  
 10163  	logs, sub, err := _RootChainBase.contract.FilterLogs(opts, "RequestFinalized")
 10164  	if err != nil {
 10165  		return nil, err
 10166  	}
 10167  	return &RootChainBaseRequestFinalizedIterator{contract: _RootChainBase.contract, event: "RequestFinalized", logs: logs, sub: sub}, nil
 10168  }
 10169  
 10170  // WatchRequestFinalized is a free log subscription operation binding the contract event 0x134017cf3262b18f892ee95dde3b0aec9a80cc70a7c96f09c64bd237aceb0473.
 10171  //
 10172  // Solidity: event RequestFinalized(uint256 requestId, bool userActivated)
 10173  func (_RootChainBase *RootChainBaseFilterer) WatchRequestFinalized(opts *bind.WatchOpts, sink chan<- *RootChainBaseRequestFinalized) (event.Subscription, error) {
 10174  
 10175  	logs, sub, err := _RootChainBase.contract.WatchLogs(opts, "RequestFinalized")
 10176  	if err != nil {
 10177  		return nil, err
 10178  	}
 10179  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10180  		defer sub.Unsubscribe()
 10181  		for {
 10182  			select {
 10183  			case log := <-logs:
 10184  				// New log arrived, parse the event and forward to the user
 10185  				event := new(RootChainBaseRequestFinalized)
 10186  				if err := _RootChainBase.contract.UnpackLog(event, "RequestFinalized", log); err != nil {
 10187  					return err
 10188  				}
 10189  				event.Raw = log
 10190  
 10191  				select {
 10192  				case sink <- event:
 10193  				case err := <-sub.Err():
 10194  					return err
 10195  				case <-quit:
 10196  					return nil
 10197  				}
 10198  			case err := <-sub.Err():
 10199  				return err
 10200  			case <-quit:
 10201  				return nil
 10202  			}
 10203  		}
 10204  	}), nil
 10205  }
 10206  
 10207  // ParseRequestFinalized is a log parse operation binding the contract event 0x134017cf3262b18f892ee95dde3b0aec9a80cc70a7c96f09c64bd237aceb0473.
 10208  //
 10209  // Solidity: event RequestFinalized(uint256 requestId, bool userActivated)
 10210  func (_RootChainBase *RootChainBaseFilterer) ParseRequestFinalized(log types.Log) (*RootChainBaseRequestFinalized, error) {
 10211  	event := new(RootChainBaseRequestFinalized)
 10212  	if err := _RootChainBase.contract.UnpackLog(event, "RequestFinalized", log); err != nil {
 10213  		return nil, err
 10214  	}
 10215  	return event, nil
 10216  }
 10217  
 10218  // RootChainBaseRequestableContractMappedIterator is returned from FilterRequestableContractMapped and is used to iterate over the raw logs and unpacked data for RequestableContractMapped events raised by the RootChainBase contract.
 10219  type RootChainBaseRequestableContractMappedIterator struct {
 10220  	Event *RootChainBaseRequestableContractMapped // Event containing the contract specifics and raw log
 10221  
 10222  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10223  	event    string              // Event name to use for unpacking event data
 10224  
 10225  	logs chan types.Log        // Log channel receiving the found contract events
 10226  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 10227  	done bool                  // Whether the subscription completed delivering logs
 10228  	fail error                 // Occurred error to stop iteration
 10229  }
 10230  
 10231  // Next advances the iterator to the subsequent event, returning whether there
 10232  // are any more events found. In case of a retrieval or parsing error, false is
 10233  // returned and Error() can be queried for the exact failure.
 10234  func (it *RootChainBaseRequestableContractMappedIterator) Next() bool {
 10235  	// If the iterator failed, stop iterating
 10236  	if it.fail != nil {
 10237  		return false
 10238  	}
 10239  	// If the iterator completed, deliver directly whatever's available
 10240  	if it.done {
 10241  		select {
 10242  		case log := <-it.logs:
 10243  			it.Event = new(RootChainBaseRequestableContractMapped)
 10244  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10245  				it.fail = err
 10246  				return false
 10247  			}
 10248  			it.Event.Raw = log
 10249  			return true
 10250  
 10251  		default:
 10252  			return false
 10253  		}
 10254  	}
 10255  	// Iterator still in progress, wait for either a data or an error event
 10256  	select {
 10257  	case log := <-it.logs:
 10258  		it.Event = new(RootChainBaseRequestableContractMapped)
 10259  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10260  			it.fail = err
 10261  			return false
 10262  		}
 10263  		it.Event.Raw = log
 10264  		return true
 10265  
 10266  	case err := <-it.sub.Err():
 10267  		it.done = true
 10268  		it.fail = err
 10269  		return it.Next()
 10270  	}
 10271  }
 10272  
 10273  // Error returns any retrieval or parsing error occurred during filtering.
 10274  func (it *RootChainBaseRequestableContractMappedIterator) Error() error {
 10275  	return it.fail
 10276  }
 10277  
 10278  // Close terminates the iteration process, releasing any pending underlying
 10279  // resources.
 10280  func (it *RootChainBaseRequestableContractMappedIterator) Close() error {
 10281  	it.sub.Unsubscribe()
 10282  	return nil
 10283  }
 10284  
 10285  // RootChainBaseRequestableContractMapped represents a RequestableContractMapped event raised by the RootChainBase contract.
 10286  type RootChainBaseRequestableContractMapped struct {
 10287  	ContractInRootchain  common.Address
 10288  	ContractInChildchain common.Address
 10289  	Raw                  types.Log // Blockchain specific contextual infos
 10290  }
 10291  
 10292  // FilterRequestableContractMapped is a free log retrieval operation binding the contract event 0xc5ec2ed49686197edd2ed642c7e6096893cc81e6658cde2527030316037715d0.
 10293  //
 10294  // Solidity: event RequestableContractMapped(address contractInRootchain, address contractInChildchain)
 10295  func (_RootChainBase *RootChainBaseFilterer) FilterRequestableContractMapped(opts *bind.FilterOpts) (*RootChainBaseRequestableContractMappedIterator, error) {
 10296  
 10297  	logs, sub, err := _RootChainBase.contract.FilterLogs(opts, "RequestableContractMapped")
 10298  	if err != nil {
 10299  		return nil, err
 10300  	}
 10301  	return &RootChainBaseRequestableContractMappedIterator{contract: _RootChainBase.contract, event: "RequestableContractMapped", logs: logs, sub: sub}, nil
 10302  }
 10303  
 10304  // WatchRequestableContractMapped is a free log subscription operation binding the contract event 0xc5ec2ed49686197edd2ed642c7e6096893cc81e6658cde2527030316037715d0.
 10305  //
 10306  // Solidity: event RequestableContractMapped(address contractInRootchain, address contractInChildchain)
 10307  func (_RootChainBase *RootChainBaseFilterer) WatchRequestableContractMapped(opts *bind.WatchOpts, sink chan<- *RootChainBaseRequestableContractMapped) (event.Subscription, error) {
 10308  
 10309  	logs, sub, err := _RootChainBase.contract.WatchLogs(opts, "RequestableContractMapped")
 10310  	if err != nil {
 10311  		return nil, err
 10312  	}
 10313  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10314  		defer sub.Unsubscribe()
 10315  		for {
 10316  			select {
 10317  			case log := <-logs:
 10318  				// New log arrived, parse the event and forward to the user
 10319  				event := new(RootChainBaseRequestableContractMapped)
 10320  				if err := _RootChainBase.contract.UnpackLog(event, "RequestableContractMapped", log); err != nil {
 10321  					return err
 10322  				}
 10323  				event.Raw = log
 10324  
 10325  				select {
 10326  				case sink <- event:
 10327  				case err := <-sub.Err():
 10328  					return err
 10329  				case <-quit:
 10330  					return nil
 10331  				}
 10332  			case err := <-sub.Err():
 10333  				return err
 10334  			case <-quit:
 10335  				return nil
 10336  			}
 10337  		}
 10338  	}), nil
 10339  }
 10340  
 10341  // ParseRequestableContractMapped is a log parse operation binding the contract event 0xc5ec2ed49686197edd2ed642c7e6096893cc81e6658cde2527030316037715d0.
 10342  //
 10343  // Solidity: event RequestableContractMapped(address contractInRootchain, address contractInChildchain)
 10344  func (_RootChainBase *RootChainBaseFilterer) ParseRequestableContractMapped(log types.Log) (*RootChainBaseRequestableContractMapped, error) {
 10345  	event := new(RootChainBaseRequestableContractMapped)
 10346  	if err := _RootChainBase.contract.UnpackLog(event, "RequestableContractMapped", log); err != nil {
 10347  		return nil, err
 10348  	}
 10349  	return event, nil
 10350  }
 10351  
 10352  // RootChainBaseSessionTimeoutIterator is returned from FilterSessionTimeout and is used to iterate over the raw logs and unpacked data for SessionTimeout events raised by the RootChainBase contract.
 10353  type RootChainBaseSessionTimeoutIterator struct {
 10354  	Event *RootChainBaseSessionTimeout // Event containing the contract specifics and raw log
 10355  
 10356  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10357  	event    string              // Event name to use for unpacking event data
 10358  
 10359  	logs chan types.Log        // Log channel receiving the found contract events
 10360  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 10361  	done bool                  // Whether the subscription completed delivering logs
 10362  	fail error                 // Occurred error to stop iteration
 10363  }
 10364  
 10365  // Next advances the iterator to the subsequent event, returning whether there
 10366  // are any more events found. In case of a retrieval or parsing error, false is
 10367  // returned and Error() can be queried for the exact failure.
 10368  func (it *RootChainBaseSessionTimeoutIterator) Next() bool {
 10369  	// If the iterator failed, stop iterating
 10370  	if it.fail != nil {
 10371  		return false
 10372  	}
 10373  	// If the iterator completed, deliver directly whatever's available
 10374  	if it.done {
 10375  		select {
 10376  		case log := <-it.logs:
 10377  			it.Event = new(RootChainBaseSessionTimeout)
 10378  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10379  				it.fail = err
 10380  				return false
 10381  			}
 10382  			it.Event.Raw = log
 10383  			return true
 10384  
 10385  		default:
 10386  			return false
 10387  		}
 10388  	}
 10389  	// Iterator still in progress, wait for either a data or an error event
 10390  	select {
 10391  	case log := <-it.logs:
 10392  		it.Event = new(RootChainBaseSessionTimeout)
 10393  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10394  			it.fail = err
 10395  			return false
 10396  		}
 10397  		it.Event.Raw = log
 10398  		return true
 10399  
 10400  	case err := <-it.sub.Err():
 10401  		it.done = true
 10402  		it.fail = err
 10403  		return it.Next()
 10404  	}
 10405  }
 10406  
 10407  // Error returns any retrieval or parsing error occurred during filtering.
 10408  func (it *RootChainBaseSessionTimeoutIterator) Error() error {
 10409  	return it.fail
 10410  }
 10411  
 10412  // Close terminates the iteration process, releasing any pending underlying
 10413  // resources.
 10414  func (it *RootChainBaseSessionTimeoutIterator) Close() error {
 10415  	it.sub.Unsubscribe()
 10416  	return nil
 10417  }
 10418  
 10419  // RootChainBaseSessionTimeout represents a SessionTimeout event raised by the RootChainBase contract.
 10420  type RootChainBaseSessionTimeout struct {
 10421  	UserActivated bool
 10422  	Raw           types.Log // Blockchain specific contextual infos
 10423  }
 10424  
 10425  // FilterSessionTimeout is a free log retrieval operation binding the contract event 0x2122ec719581cd177f225f59a1ee005831211196831f8f1ccffa817d2e7bd108.
 10426  //
 10427  // Solidity: event SessionTimeout(bool userActivated)
 10428  func (_RootChainBase *RootChainBaseFilterer) FilterSessionTimeout(opts *bind.FilterOpts) (*RootChainBaseSessionTimeoutIterator, error) {
 10429  
 10430  	logs, sub, err := _RootChainBase.contract.FilterLogs(opts, "SessionTimeout")
 10431  	if err != nil {
 10432  		return nil, err
 10433  	}
 10434  	return &RootChainBaseSessionTimeoutIterator{contract: _RootChainBase.contract, event: "SessionTimeout", logs: logs, sub: sub}, nil
 10435  }
 10436  
 10437  // WatchSessionTimeout is a free log subscription operation binding the contract event 0x2122ec719581cd177f225f59a1ee005831211196831f8f1ccffa817d2e7bd108.
 10438  //
 10439  // Solidity: event SessionTimeout(bool userActivated)
 10440  func (_RootChainBase *RootChainBaseFilterer) WatchSessionTimeout(opts *bind.WatchOpts, sink chan<- *RootChainBaseSessionTimeout) (event.Subscription, error) {
 10441  
 10442  	logs, sub, err := _RootChainBase.contract.WatchLogs(opts, "SessionTimeout")
 10443  	if err != nil {
 10444  		return nil, err
 10445  	}
 10446  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10447  		defer sub.Unsubscribe()
 10448  		for {
 10449  			select {
 10450  			case log := <-logs:
 10451  				// New log arrived, parse the event and forward to the user
 10452  				event := new(RootChainBaseSessionTimeout)
 10453  				if err := _RootChainBase.contract.UnpackLog(event, "SessionTimeout", log); err != nil {
 10454  					return err
 10455  				}
 10456  				event.Raw = log
 10457  
 10458  				select {
 10459  				case sink <- event:
 10460  				case err := <-sub.Err():
 10461  					return err
 10462  				case <-quit:
 10463  					return nil
 10464  				}
 10465  			case err := <-sub.Err():
 10466  				return err
 10467  			case <-quit:
 10468  				return nil
 10469  			}
 10470  		}
 10471  	}), nil
 10472  }
 10473  
 10474  // ParseSessionTimeout is a log parse operation binding the contract event 0x2122ec719581cd177f225f59a1ee005831211196831f8f1ccffa817d2e7bd108.
 10475  //
 10476  // Solidity: event SessionTimeout(bool userActivated)
 10477  func (_RootChainBase *RootChainBaseFilterer) ParseSessionTimeout(log types.Log) (*RootChainBaseSessionTimeout, error) {
 10478  	event := new(RootChainBaseSessionTimeout)
 10479  	if err := _RootChainBase.contract.UnpackLog(event, "SessionTimeout", log); err != nil {
 10480  		return nil, err
 10481  	}
 10482  	return event, nil
 10483  }
 10484  
 10485  // RootChainEventABI is the input ABI used to generate the binding from.
 10486  const RootChainEventABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"BlockFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fork\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isRequest\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"BlockSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"requestor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trieKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"trieValue\",\"type\":\"bytes32\"}],\"name\":\"ERUCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"}],\"name\":\"EpochFilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"}],\"name\":\"EpochFilling\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endBlockNumber\",\"type\":\"uint256\"}],\"name\":\"EpochFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestStart\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestEnd\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"epochIsEmpty\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isRequest\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"rebase\",\"type\":\"bool\"}],\"name\":\"EpochPrepared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestStart\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestEnd\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"epochIsEmpty\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isRequest\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"EpochRebased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFork\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epochNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"forkedBlockNumber\",\"type\":\"uint256\"}],\"name\":\"Forked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newOperator\",\"type\":\"address\"}],\"name\":\"OperatorChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"RequestApplied\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"RequestChallenged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"requestor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weiAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"trieKey\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"trieValue\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isExit\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"RequestCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"RequestFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractInRootchain\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractInChildchain\",\"type\":\"address\"}],\"name\":\"RequestableContractMapped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"userActivated\",\"type\":\"bool\"}],\"name\":\"SessionTimeout\",\"type\":\"event\"}]"
 10487  
 10488  // RootChainEventBin is the compiled bytecode used for deploying new contracts.
 10489  var RootChainEventBin = "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158209eca3e6c0985f0e87007d8dee1de52ecce4b4b712a00ee740621f2a988b3d29764736f6c634300050c0032"
 10490  
 10491  // DeployRootChainEvent deploys a new Ethereum contract, binding an instance of RootChainEvent to it.
 10492  func DeployRootChainEvent(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *RootChainEvent, error) {
 10493  	parsed, err := abi.JSON(strings.NewReader(RootChainEventABI))
 10494  	if err != nil {
 10495  		return common.Address{}, nil, nil, err
 10496  	}
 10497  
 10498  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RootChainEventBin), backend)
 10499  	if err != nil {
 10500  		return common.Address{}, nil, nil, err
 10501  	}
 10502  	return address, tx, &RootChainEvent{RootChainEventCaller: RootChainEventCaller{contract: contract}, RootChainEventTransactor: RootChainEventTransactor{contract: contract}, RootChainEventFilterer: RootChainEventFilterer{contract: contract}}, nil
 10503  }
 10504  
 10505  // RootChainEvent is an auto generated Go binding around an Ethereum contract.
 10506  type RootChainEvent struct {
 10507  	RootChainEventCaller     // Read-only binding to the contract
 10508  	RootChainEventTransactor // Write-only binding to the contract
 10509  	RootChainEventFilterer   // Log filterer for contract events
 10510  }
 10511  
 10512  // RootChainEventCaller is an auto generated read-only Go binding around an Ethereum contract.
 10513  type RootChainEventCaller struct {
 10514  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10515  }
 10516  
 10517  // RootChainEventTransactor is an auto generated write-only Go binding around an Ethereum contract.
 10518  type RootChainEventTransactor struct {
 10519  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10520  }
 10521  
 10522  // RootChainEventFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
 10523  type RootChainEventFilterer struct {
 10524  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10525  }
 10526  
 10527  // RootChainEventSession is an auto generated Go binding around an Ethereum contract,
 10528  // with pre-set call and transact options.
 10529  type RootChainEventSession struct {
 10530  	Contract     *RootChainEvent   // Generic contract binding to set the session for
 10531  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 10532  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 10533  }
 10534  
 10535  // RootChainEventCallerSession is an auto generated read-only Go binding around an Ethereum contract,
 10536  // with pre-set call options.
 10537  type RootChainEventCallerSession struct {
 10538  	Contract *RootChainEventCaller // Generic contract caller binding to set the session for
 10539  	CallOpts bind.CallOpts         // Call options to use throughout this session
 10540  }
 10541  
 10542  // RootChainEventTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
 10543  // with pre-set transact options.
 10544  type RootChainEventTransactorSession struct {
 10545  	Contract     *RootChainEventTransactor // Generic contract transactor binding to set the session for
 10546  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
 10547  }
 10548  
 10549  // RootChainEventRaw is an auto generated low-level Go binding around an Ethereum contract.
 10550  type RootChainEventRaw struct {
 10551  	Contract *RootChainEvent // Generic contract binding to access the raw methods on
 10552  }
 10553  
 10554  // RootChainEventCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 10555  type RootChainEventCallerRaw struct {
 10556  	Contract *RootChainEventCaller // Generic read-only contract binding to access the raw methods on
 10557  }
 10558  
 10559  // RootChainEventTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 10560  type RootChainEventTransactorRaw struct {
 10561  	Contract *RootChainEventTransactor // Generic write-only contract binding to access the raw methods on
 10562  }
 10563  
 10564  // NewRootChainEvent creates a new instance of RootChainEvent, bound to a specific deployed contract.
 10565  func NewRootChainEvent(address common.Address, backend bind.ContractBackend) (*RootChainEvent, error) {
 10566  	contract, err := bindRootChainEvent(address, backend, backend, backend)
 10567  	if err != nil {
 10568  		return nil, err
 10569  	}
 10570  	return &RootChainEvent{RootChainEventCaller: RootChainEventCaller{contract: contract}, RootChainEventTransactor: RootChainEventTransactor{contract: contract}, RootChainEventFilterer: RootChainEventFilterer{contract: contract}}, nil
 10571  }
 10572  
 10573  // NewRootChainEventCaller creates a new read-only instance of RootChainEvent, bound to a specific deployed contract.
 10574  func NewRootChainEventCaller(address common.Address, caller bind.ContractCaller) (*RootChainEventCaller, error) {
 10575  	contract, err := bindRootChainEvent(address, caller, nil, nil)
 10576  	if err != nil {
 10577  		return nil, err
 10578  	}
 10579  	return &RootChainEventCaller{contract: contract}, nil
 10580  }
 10581  
 10582  // NewRootChainEventTransactor creates a new write-only instance of RootChainEvent, bound to a specific deployed contract.
 10583  func NewRootChainEventTransactor(address common.Address, transactor bind.ContractTransactor) (*RootChainEventTransactor, error) {
 10584  	contract, err := bindRootChainEvent(address, nil, transactor, nil)
 10585  	if err != nil {
 10586  		return nil, err
 10587  	}
 10588  	return &RootChainEventTransactor{contract: contract}, nil
 10589  }
 10590  
 10591  // NewRootChainEventFilterer creates a new log filterer instance of RootChainEvent, bound to a specific deployed contract.
 10592  func NewRootChainEventFilterer(address common.Address, filterer bind.ContractFilterer) (*RootChainEventFilterer, error) {
 10593  	contract, err := bindRootChainEvent(address, nil, nil, filterer)
 10594  	if err != nil {
 10595  		return nil, err
 10596  	}
 10597  	return &RootChainEventFilterer{contract: contract}, nil
 10598  }
 10599  
 10600  // bindRootChainEvent binds a generic wrapper to an already deployed contract.
 10601  func bindRootChainEvent(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 10602  	parsed, err := abi.JSON(strings.NewReader(RootChainEventABI))
 10603  	if err != nil {
 10604  		return nil, err
 10605  	}
 10606  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 10607  }
 10608  
 10609  // Call invokes the (constant) contract method with params as input values and
 10610  // sets the output to result. The result type might be a single field for simple
 10611  // returns, a slice of interfaces for anonymous returns and a struct for named
 10612  // returns.
 10613  func (_RootChainEvent *RootChainEventRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 10614  	return _RootChainEvent.Contract.RootChainEventCaller.contract.Call(opts, result, method, params...)
 10615  }
 10616  
 10617  // Transfer initiates a plain transaction to move funds to the contract, calling
 10618  // its default method if one is available.
 10619  func (_RootChainEvent *RootChainEventRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10620  	return _RootChainEvent.Contract.RootChainEventTransactor.contract.Transfer(opts)
 10621  }
 10622  
 10623  // Transact invokes the (paid) contract method with params as input values.
 10624  func (_RootChainEvent *RootChainEventRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10625  	return _RootChainEvent.Contract.RootChainEventTransactor.contract.Transact(opts, method, params...)
 10626  }
 10627  
 10628  // Call invokes the (constant) contract method with params as input values and
 10629  // sets the output to result. The result type might be a single field for simple
 10630  // returns, a slice of interfaces for anonymous returns and a struct for named
 10631  // returns.
 10632  func (_RootChainEvent *RootChainEventCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 10633  	return _RootChainEvent.Contract.contract.Call(opts, result, method, params...)
 10634  }
 10635  
 10636  // Transfer initiates a plain transaction to move funds to the contract, calling
 10637  // its default method if one is available.
 10638  func (_RootChainEvent *RootChainEventTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10639  	return _RootChainEvent.Contract.contract.Transfer(opts)
 10640  }
 10641  
 10642  // Transact invokes the (paid) contract method with params as input values.
 10643  func (_RootChainEvent *RootChainEventTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10644  	return _RootChainEvent.Contract.contract.Transact(opts, method, params...)
 10645  }
 10646  
 10647  // RootChainEventBlockFinalizedIterator is returned from FilterBlockFinalized and is used to iterate over the raw logs and unpacked data for BlockFinalized events raised by the RootChainEvent contract.
 10648  type RootChainEventBlockFinalizedIterator struct {
 10649  	Event *RootChainEventBlockFinalized // Event containing the contract specifics and raw log
 10650  
 10651  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10652  	event    string              // Event name to use for unpacking event data
 10653  
 10654  	logs chan types.Log        // Log channel receiving the found contract events
 10655  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 10656  	done bool                  // Whether the subscription completed delivering logs
 10657  	fail error                 // Occurred error to stop iteration
 10658  }
 10659  
 10660  // Next advances the iterator to the subsequent event, returning whether there
 10661  // are any more events found. In case of a retrieval or parsing error, false is
 10662  // returned and Error() can be queried for the exact failure.
 10663  func (it *RootChainEventBlockFinalizedIterator) Next() bool {
 10664  	// If the iterator failed, stop iterating
 10665  	if it.fail != nil {
 10666  		return false
 10667  	}
 10668  	// If the iterator completed, deliver directly whatever's available
 10669  	if it.done {
 10670  		select {
 10671  		case log := <-it.logs:
 10672  			it.Event = new(RootChainEventBlockFinalized)
 10673  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10674  				it.fail = err
 10675  				return false
 10676  			}
 10677  			it.Event.Raw = log
 10678  			return true
 10679  
 10680  		default:
 10681  			return false
 10682  		}
 10683  	}
 10684  	// Iterator still in progress, wait for either a data or an error event
 10685  	select {
 10686  	case log := <-it.logs:
 10687  		it.Event = new(RootChainEventBlockFinalized)
 10688  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10689  			it.fail = err
 10690  			return false
 10691  		}
 10692  		it.Event.Raw = log
 10693  		return true
 10694  
 10695  	case err := <-it.sub.Err():
 10696  		it.done = true
 10697  		it.fail = err
 10698  		return it.Next()
 10699  	}
 10700  }
 10701  
 10702  // Error returns any retrieval or parsing error occurred during filtering.
 10703  func (it *RootChainEventBlockFinalizedIterator) Error() error {
 10704  	return it.fail
 10705  }
 10706  
 10707  // Close terminates the iteration process, releasing any pending underlying
 10708  // resources.
 10709  func (it *RootChainEventBlockFinalizedIterator) Close() error {
 10710  	it.sub.Unsubscribe()
 10711  	return nil
 10712  }
 10713  
 10714  // RootChainEventBlockFinalized represents a BlockFinalized event raised by the RootChainEvent contract.
 10715  type RootChainEventBlockFinalized struct {
 10716  	ForkNumber  *big.Int
 10717  	BlockNumber *big.Int
 10718  	Raw         types.Log // Blockchain specific contextual infos
 10719  }
 10720  
 10721  // FilterBlockFinalized is a free log retrieval operation binding the contract event 0xfb96205e4b3633fd57aa805b26b51ecf528714a10241a4af015929dce86768d9.
 10722  //
 10723  // Solidity: event BlockFinalized(uint256 forkNumber, uint256 blockNumber)
 10724  func (_RootChainEvent *RootChainEventFilterer) FilterBlockFinalized(opts *bind.FilterOpts) (*RootChainEventBlockFinalizedIterator, error) {
 10725  
 10726  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "BlockFinalized")
 10727  	if err != nil {
 10728  		return nil, err
 10729  	}
 10730  	return &RootChainEventBlockFinalizedIterator{contract: _RootChainEvent.contract, event: "BlockFinalized", logs: logs, sub: sub}, nil
 10731  }
 10732  
 10733  // WatchBlockFinalized is a free log subscription operation binding the contract event 0xfb96205e4b3633fd57aa805b26b51ecf528714a10241a4af015929dce86768d9.
 10734  //
 10735  // Solidity: event BlockFinalized(uint256 forkNumber, uint256 blockNumber)
 10736  func (_RootChainEvent *RootChainEventFilterer) WatchBlockFinalized(opts *bind.WatchOpts, sink chan<- *RootChainEventBlockFinalized) (event.Subscription, error) {
 10737  
 10738  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "BlockFinalized")
 10739  	if err != nil {
 10740  		return nil, err
 10741  	}
 10742  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10743  		defer sub.Unsubscribe()
 10744  		for {
 10745  			select {
 10746  			case log := <-logs:
 10747  				// New log arrived, parse the event and forward to the user
 10748  				event := new(RootChainEventBlockFinalized)
 10749  				if err := _RootChainEvent.contract.UnpackLog(event, "BlockFinalized", log); err != nil {
 10750  					return err
 10751  				}
 10752  				event.Raw = log
 10753  
 10754  				select {
 10755  				case sink <- event:
 10756  				case err := <-sub.Err():
 10757  					return err
 10758  				case <-quit:
 10759  					return nil
 10760  				}
 10761  			case err := <-sub.Err():
 10762  				return err
 10763  			case <-quit:
 10764  				return nil
 10765  			}
 10766  		}
 10767  	}), nil
 10768  }
 10769  
 10770  // ParseBlockFinalized is a log parse operation binding the contract event 0xfb96205e4b3633fd57aa805b26b51ecf528714a10241a4af015929dce86768d9.
 10771  //
 10772  // Solidity: event BlockFinalized(uint256 forkNumber, uint256 blockNumber)
 10773  func (_RootChainEvent *RootChainEventFilterer) ParseBlockFinalized(log types.Log) (*RootChainEventBlockFinalized, error) {
 10774  	event := new(RootChainEventBlockFinalized)
 10775  	if err := _RootChainEvent.contract.UnpackLog(event, "BlockFinalized", log); err != nil {
 10776  		return nil, err
 10777  	}
 10778  	return event, nil
 10779  }
 10780  
 10781  // RootChainEventBlockSubmittedIterator is returned from FilterBlockSubmitted and is used to iterate over the raw logs and unpacked data for BlockSubmitted events raised by the RootChainEvent contract.
 10782  type RootChainEventBlockSubmittedIterator struct {
 10783  	Event *RootChainEventBlockSubmitted // Event containing the contract specifics and raw log
 10784  
 10785  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10786  	event    string              // Event name to use for unpacking event data
 10787  
 10788  	logs chan types.Log        // Log channel receiving the found contract events
 10789  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 10790  	done bool                  // Whether the subscription completed delivering logs
 10791  	fail error                 // Occurred error to stop iteration
 10792  }
 10793  
 10794  // Next advances the iterator to the subsequent event, returning whether there
 10795  // are any more events found. In case of a retrieval or parsing error, false is
 10796  // returned and Error() can be queried for the exact failure.
 10797  func (it *RootChainEventBlockSubmittedIterator) Next() bool {
 10798  	// If the iterator failed, stop iterating
 10799  	if it.fail != nil {
 10800  		return false
 10801  	}
 10802  	// If the iterator completed, deliver directly whatever's available
 10803  	if it.done {
 10804  		select {
 10805  		case log := <-it.logs:
 10806  			it.Event = new(RootChainEventBlockSubmitted)
 10807  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10808  				it.fail = err
 10809  				return false
 10810  			}
 10811  			it.Event.Raw = log
 10812  			return true
 10813  
 10814  		default:
 10815  			return false
 10816  		}
 10817  	}
 10818  	// Iterator still in progress, wait for either a data or an error event
 10819  	select {
 10820  	case log := <-it.logs:
 10821  		it.Event = new(RootChainEventBlockSubmitted)
 10822  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10823  			it.fail = err
 10824  			return false
 10825  		}
 10826  		it.Event.Raw = log
 10827  		return true
 10828  
 10829  	case err := <-it.sub.Err():
 10830  		it.done = true
 10831  		it.fail = err
 10832  		return it.Next()
 10833  	}
 10834  }
 10835  
 10836  // Error returns any retrieval or parsing error occurred during filtering.
 10837  func (it *RootChainEventBlockSubmittedIterator) Error() error {
 10838  	return it.fail
 10839  }
 10840  
 10841  // Close terminates the iteration process, releasing any pending underlying
 10842  // resources.
 10843  func (it *RootChainEventBlockSubmittedIterator) Close() error {
 10844  	it.sub.Unsubscribe()
 10845  	return nil
 10846  }
 10847  
 10848  // RootChainEventBlockSubmitted represents a BlockSubmitted event raised by the RootChainEvent contract.
 10849  type RootChainEventBlockSubmitted struct {
 10850  	Fork          *big.Int
 10851  	EpochNumber   *big.Int
 10852  	BlockNumber   *big.Int
 10853  	IsRequest     bool
 10854  	UserActivated bool
 10855  	Raw           types.Log // Blockchain specific contextual infos
 10856  }
 10857  
 10858  // FilterBlockSubmitted is a free log retrieval operation binding the contract event 0x3d4a04291c66b06f39a4ecb817875b12b5485a05ec563133a56a905305c48e55.
 10859  //
 10860  // Solidity: event BlockSubmitted(uint256 fork, uint256 epochNumber, uint256 blockNumber, bool isRequest, bool userActivated)
 10861  func (_RootChainEvent *RootChainEventFilterer) FilterBlockSubmitted(opts *bind.FilterOpts) (*RootChainEventBlockSubmittedIterator, error) {
 10862  
 10863  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "BlockSubmitted")
 10864  	if err != nil {
 10865  		return nil, err
 10866  	}
 10867  	return &RootChainEventBlockSubmittedIterator{contract: _RootChainEvent.contract, event: "BlockSubmitted", logs: logs, sub: sub}, nil
 10868  }
 10869  
 10870  // WatchBlockSubmitted is a free log subscription operation binding the contract event 0x3d4a04291c66b06f39a4ecb817875b12b5485a05ec563133a56a905305c48e55.
 10871  //
 10872  // Solidity: event BlockSubmitted(uint256 fork, uint256 epochNumber, uint256 blockNumber, bool isRequest, bool userActivated)
 10873  func (_RootChainEvent *RootChainEventFilterer) WatchBlockSubmitted(opts *bind.WatchOpts, sink chan<- *RootChainEventBlockSubmitted) (event.Subscription, error) {
 10874  
 10875  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "BlockSubmitted")
 10876  	if err != nil {
 10877  		return nil, err
 10878  	}
 10879  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10880  		defer sub.Unsubscribe()
 10881  		for {
 10882  			select {
 10883  			case log := <-logs:
 10884  				// New log arrived, parse the event and forward to the user
 10885  				event := new(RootChainEventBlockSubmitted)
 10886  				if err := _RootChainEvent.contract.UnpackLog(event, "BlockSubmitted", log); err != nil {
 10887  					return err
 10888  				}
 10889  				event.Raw = log
 10890  
 10891  				select {
 10892  				case sink <- event:
 10893  				case err := <-sub.Err():
 10894  					return err
 10895  				case <-quit:
 10896  					return nil
 10897  				}
 10898  			case err := <-sub.Err():
 10899  				return err
 10900  			case <-quit:
 10901  				return nil
 10902  			}
 10903  		}
 10904  	}), nil
 10905  }
 10906  
 10907  // ParseBlockSubmitted is a log parse operation binding the contract event 0x3d4a04291c66b06f39a4ecb817875b12b5485a05ec563133a56a905305c48e55.
 10908  //
 10909  // Solidity: event BlockSubmitted(uint256 fork, uint256 epochNumber, uint256 blockNumber, bool isRequest, bool userActivated)
 10910  func (_RootChainEvent *RootChainEventFilterer) ParseBlockSubmitted(log types.Log) (*RootChainEventBlockSubmitted, error) {
 10911  	event := new(RootChainEventBlockSubmitted)
 10912  	if err := _RootChainEvent.contract.UnpackLog(event, "BlockSubmitted", log); err != nil {
 10913  		return nil, err
 10914  	}
 10915  	return event, nil
 10916  }
 10917  
 10918  // RootChainEventERUCreatedIterator is returned from FilterERUCreated and is used to iterate over the raw logs and unpacked data for ERUCreated events raised by the RootChainEvent contract.
 10919  type RootChainEventERUCreatedIterator struct {
 10920  	Event *RootChainEventERUCreated // Event containing the contract specifics and raw log
 10921  
 10922  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10923  	event    string              // Event name to use for unpacking event data
 10924  
 10925  	logs chan types.Log        // Log channel receiving the found contract events
 10926  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 10927  	done bool                  // Whether the subscription completed delivering logs
 10928  	fail error                 // Occurred error to stop iteration
 10929  }
 10930  
 10931  // Next advances the iterator to the subsequent event, returning whether there
 10932  // are any more events found. In case of a retrieval or parsing error, false is
 10933  // returned and Error() can be queried for the exact failure.
 10934  func (it *RootChainEventERUCreatedIterator) Next() bool {
 10935  	// If the iterator failed, stop iterating
 10936  	if it.fail != nil {
 10937  		return false
 10938  	}
 10939  	// If the iterator completed, deliver directly whatever's available
 10940  	if it.done {
 10941  		select {
 10942  		case log := <-it.logs:
 10943  			it.Event = new(RootChainEventERUCreated)
 10944  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10945  				it.fail = err
 10946  				return false
 10947  			}
 10948  			it.Event.Raw = log
 10949  			return true
 10950  
 10951  		default:
 10952  			return false
 10953  		}
 10954  	}
 10955  	// Iterator still in progress, wait for either a data or an error event
 10956  	select {
 10957  	case log := <-it.logs:
 10958  		it.Event = new(RootChainEventERUCreated)
 10959  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10960  			it.fail = err
 10961  			return false
 10962  		}
 10963  		it.Event.Raw = log
 10964  		return true
 10965  
 10966  	case err := <-it.sub.Err():
 10967  		it.done = true
 10968  		it.fail = err
 10969  		return it.Next()
 10970  	}
 10971  }
 10972  
 10973  // Error returns any retrieval or parsing error occurred during filtering.
 10974  func (it *RootChainEventERUCreatedIterator) Error() error {
 10975  	return it.fail
 10976  }
 10977  
 10978  // Close terminates the iteration process, releasing any pending underlying
 10979  // resources.
 10980  func (it *RootChainEventERUCreatedIterator) Close() error {
 10981  	it.sub.Unsubscribe()
 10982  	return nil
 10983  }
 10984  
 10985  // RootChainEventERUCreated represents a ERUCreated event raised by the RootChainEvent contract.
 10986  type RootChainEventERUCreated struct {
 10987  	RequestId *big.Int
 10988  	Requestor common.Address
 10989  	To        common.Address
 10990  	TrieKey   []byte
 10991  	TrieValue [32]byte
 10992  	Raw       types.Log // Blockchain specific contextual infos
 10993  }
 10994  
 10995  // FilterERUCreated is a free log retrieval operation binding the contract event 0xfcbdc2083dadd644b854d91b49aef8db06b8f5a3d5c1192de38ca0ba271d5a0d.
 10996  //
 10997  // Solidity: event ERUCreated(uint256 requestId, address requestor, address to, bytes trieKey, bytes32 trieValue)
 10998  func (_RootChainEvent *RootChainEventFilterer) FilterERUCreated(opts *bind.FilterOpts) (*RootChainEventERUCreatedIterator, error) {
 10999  
 11000  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "ERUCreated")
 11001  	if err != nil {
 11002  		return nil, err
 11003  	}
 11004  	return &RootChainEventERUCreatedIterator{contract: _RootChainEvent.contract, event: "ERUCreated", logs: logs, sub: sub}, nil
 11005  }
 11006  
 11007  // WatchERUCreated is a free log subscription operation binding the contract event 0xfcbdc2083dadd644b854d91b49aef8db06b8f5a3d5c1192de38ca0ba271d5a0d.
 11008  //
 11009  // Solidity: event ERUCreated(uint256 requestId, address requestor, address to, bytes trieKey, bytes32 trieValue)
 11010  func (_RootChainEvent *RootChainEventFilterer) WatchERUCreated(opts *bind.WatchOpts, sink chan<- *RootChainEventERUCreated) (event.Subscription, error) {
 11011  
 11012  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "ERUCreated")
 11013  	if err != nil {
 11014  		return nil, err
 11015  	}
 11016  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11017  		defer sub.Unsubscribe()
 11018  		for {
 11019  			select {
 11020  			case log := <-logs:
 11021  				// New log arrived, parse the event and forward to the user
 11022  				event := new(RootChainEventERUCreated)
 11023  				if err := _RootChainEvent.contract.UnpackLog(event, "ERUCreated", log); err != nil {
 11024  					return err
 11025  				}
 11026  				event.Raw = log
 11027  
 11028  				select {
 11029  				case sink <- event:
 11030  				case err := <-sub.Err():
 11031  					return err
 11032  				case <-quit:
 11033  					return nil
 11034  				}
 11035  			case err := <-sub.Err():
 11036  				return err
 11037  			case <-quit:
 11038  				return nil
 11039  			}
 11040  		}
 11041  	}), nil
 11042  }
 11043  
 11044  // ParseERUCreated is a log parse operation binding the contract event 0xfcbdc2083dadd644b854d91b49aef8db06b8f5a3d5c1192de38ca0ba271d5a0d.
 11045  //
 11046  // Solidity: event ERUCreated(uint256 requestId, address requestor, address to, bytes trieKey, bytes32 trieValue)
 11047  func (_RootChainEvent *RootChainEventFilterer) ParseERUCreated(log types.Log) (*RootChainEventERUCreated, error) {
 11048  	event := new(RootChainEventERUCreated)
 11049  	if err := _RootChainEvent.contract.UnpackLog(event, "ERUCreated", log); err != nil {
 11050  		return nil, err
 11051  	}
 11052  	return event, nil
 11053  }
 11054  
 11055  // RootChainEventEpochFilledIterator is returned from FilterEpochFilled and is used to iterate over the raw logs and unpacked data for EpochFilled events raised by the RootChainEvent contract.
 11056  type RootChainEventEpochFilledIterator struct {
 11057  	Event *RootChainEventEpochFilled // Event containing the contract specifics and raw log
 11058  
 11059  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11060  	event    string              // Event name to use for unpacking event data
 11061  
 11062  	logs chan types.Log        // Log channel receiving the found contract events
 11063  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11064  	done bool                  // Whether the subscription completed delivering logs
 11065  	fail error                 // Occurred error to stop iteration
 11066  }
 11067  
 11068  // Next advances the iterator to the subsequent event, returning whether there
 11069  // are any more events found. In case of a retrieval or parsing error, false is
 11070  // returned and Error() can be queried for the exact failure.
 11071  func (it *RootChainEventEpochFilledIterator) Next() bool {
 11072  	// If the iterator failed, stop iterating
 11073  	if it.fail != nil {
 11074  		return false
 11075  	}
 11076  	// If the iterator completed, deliver directly whatever's available
 11077  	if it.done {
 11078  		select {
 11079  		case log := <-it.logs:
 11080  			it.Event = new(RootChainEventEpochFilled)
 11081  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11082  				it.fail = err
 11083  				return false
 11084  			}
 11085  			it.Event.Raw = log
 11086  			return true
 11087  
 11088  		default:
 11089  			return false
 11090  		}
 11091  	}
 11092  	// Iterator still in progress, wait for either a data or an error event
 11093  	select {
 11094  	case log := <-it.logs:
 11095  		it.Event = new(RootChainEventEpochFilled)
 11096  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11097  			it.fail = err
 11098  			return false
 11099  		}
 11100  		it.Event.Raw = log
 11101  		return true
 11102  
 11103  	case err := <-it.sub.Err():
 11104  		it.done = true
 11105  		it.fail = err
 11106  		return it.Next()
 11107  	}
 11108  }
 11109  
 11110  // Error returns any retrieval or parsing error occurred during filtering.
 11111  func (it *RootChainEventEpochFilledIterator) Error() error {
 11112  	return it.fail
 11113  }
 11114  
 11115  // Close terminates the iteration process, releasing any pending underlying
 11116  // resources.
 11117  func (it *RootChainEventEpochFilledIterator) Close() error {
 11118  	it.sub.Unsubscribe()
 11119  	return nil
 11120  }
 11121  
 11122  // RootChainEventEpochFilled represents a EpochFilled event raised by the RootChainEvent contract.
 11123  type RootChainEventEpochFilled struct {
 11124  	ForkNumber  *big.Int
 11125  	EpochNumber *big.Int
 11126  	Raw         types.Log // Blockchain specific contextual infos
 11127  }
 11128  
 11129  // FilterEpochFilled is a free log retrieval operation binding the contract event 0x2fdeb407bf5c2b621f04b5c784822dae806c45b49a68aba413cc270128c96816.
 11130  //
 11131  // Solidity: event EpochFilled(uint256 forkNumber, uint256 epochNumber)
 11132  func (_RootChainEvent *RootChainEventFilterer) FilterEpochFilled(opts *bind.FilterOpts) (*RootChainEventEpochFilledIterator, error) {
 11133  
 11134  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "EpochFilled")
 11135  	if err != nil {
 11136  		return nil, err
 11137  	}
 11138  	return &RootChainEventEpochFilledIterator{contract: _RootChainEvent.contract, event: "EpochFilled", logs: logs, sub: sub}, nil
 11139  }
 11140  
 11141  // WatchEpochFilled is a free log subscription operation binding the contract event 0x2fdeb407bf5c2b621f04b5c784822dae806c45b49a68aba413cc270128c96816.
 11142  //
 11143  // Solidity: event EpochFilled(uint256 forkNumber, uint256 epochNumber)
 11144  func (_RootChainEvent *RootChainEventFilterer) WatchEpochFilled(opts *bind.WatchOpts, sink chan<- *RootChainEventEpochFilled) (event.Subscription, error) {
 11145  
 11146  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "EpochFilled")
 11147  	if err != nil {
 11148  		return nil, err
 11149  	}
 11150  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11151  		defer sub.Unsubscribe()
 11152  		for {
 11153  			select {
 11154  			case log := <-logs:
 11155  				// New log arrived, parse the event and forward to the user
 11156  				event := new(RootChainEventEpochFilled)
 11157  				if err := _RootChainEvent.contract.UnpackLog(event, "EpochFilled", log); err != nil {
 11158  					return err
 11159  				}
 11160  				event.Raw = log
 11161  
 11162  				select {
 11163  				case sink <- event:
 11164  				case err := <-sub.Err():
 11165  					return err
 11166  				case <-quit:
 11167  					return nil
 11168  				}
 11169  			case err := <-sub.Err():
 11170  				return err
 11171  			case <-quit:
 11172  				return nil
 11173  			}
 11174  		}
 11175  	}), nil
 11176  }
 11177  
 11178  // ParseEpochFilled is a log parse operation binding the contract event 0x2fdeb407bf5c2b621f04b5c784822dae806c45b49a68aba413cc270128c96816.
 11179  //
 11180  // Solidity: event EpochFilled(uint256 forkNumber, uint256 epochNumber)
 11181  func (_RootChainEvent *RootChainEventFilterer) ParseEpochFilled(log types.Log) (*RootChainEventEpochFilled, error) {
 11182  	event := new(RootChainEventEpochFilled)
 11183  	if err := _RootChainEvent.contract.UnpackLog(event, "EpochFilled", log); err != nil {
 11184  		return nil, err
 11185  	}
 11186  	return event, nil
 11187  }
 11188  
 11189  // RootChainEventEpochFillingIterator is returned from FilterEpochFilling and is used to iterate over the raw logs and unpacked data for EpochFilling events raised by the RootChainEvent contract.
 11190  type RootChainEventEpochFillingIterator struct {
 11191  	Event *RootChainEventEpochFilling // Event containing the contract specifics and raw log
 11192  
 11193  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11194  	event    string              // Event name to use for unpacking event data
 11195  
 11196  	logs chan types.Log        // Log channel receiving the found contract events
 11197  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11198  	done bool                  // Whether the subscription completed delivering logs
 11199  	fail error                 // Occurred error to stop iteration
 11200  }
 11201  
 11202  // Next advances the iterator to the subsequent event, returning whether there
 11203  // are any more events found. In case of a retrieval or parsing error, false is
 11204  // returned and Error() can be queried for the exact failure.
 11205  func (it *RootChainEventEpochFillingIterator) Next() bool {
 11206  	// If the iterator failed, stop iterating
 11207  	if it.fail != nil {
 11208  		return false
 11209  	}
 11210  	// If the iterator completed, deliver directly whatever's available
 11211  	if it.done {
 11212  		select {
 11213  		case log := <-it.logs:
 11214  			it.Event = new(RootChainEventEpochFilling)
 11215  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11216  				it.fail = err
 11217  				return false
 11218  			}
 11219  			it.Event.Raw = log
 11220  			return true
 11221  
 11222  		default:
 11223  			return false
 11224  		}
 11225  	}
 11226  	// Iterator still in progress, wait for either a data or an error event
 11227  	select {
 11228  	case log := <-it.logs:
 11229  		it.Event = new(RootChainEventEpochFilling)
 11230  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11231  			it.fail = err
 11232  			return false
 11233  		}
 11234  		it.Event.Raw = log
 11235  		return true
 11236  
 11237  	case err := <-it.sub.Err():
 11238  		it.done = true
 11239  		it.fail = err
 11240  		return it.Next()
 11241  	}
 11242  }
 11243  
 11244  // Error returns any retrieval or parsing error occurred during filtering.
 11245  func (it *RootChainEventEpochFillingIterator) Error() error {
 11246  	return it.fail
 11247  }
 11248  
 11249  // Close terminates the iteration process, releasing any pending underlying
 11250  // resources.
 11251  func (it *RootChainEventEpochFillingIterator) Close() error {
 11252  	it.sub.Unsubscribe()
 11253  	return nil
 11254  }
 11255  
 11256  // RootChainEventEpochFilling represents a EpochFilling event raised by the RootChainEvent contract.
 11257  type RootChainEventEpochFilling struct {
 11258  	ForkNumber  *big.Int
 11259  	EpochNumber *big.Int
 11260  	Raw         types.Log // Blockchain specific contextual infos
 11261  }
 11262  
 11263  // FilterEpochFilling is a free log retrieval operation binding the contract event 0x27b09f0953d27bbff306fe25b2987ac5a813248ac30cb2bbd5daf95e7b0e6dc0.
 11264  //
 11265  // Solidity: event EpochFilling(uint256 forkNumber, uint256 epochNumber)
 11266  func (_RootChainEvent *RootChainEventFilterer) FilterEpochFilling(opts *bind.FilterOpts) (*RootChainEventEpochFillingIterator, error) {
 11267  
 11268  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "EpochFilling")
 11269  	if err != nil {
 11270  		return nil, err
 11271  	}
 11272  	return &RootChainEventEpochFillingIterator{contract: _RootChainEvent.contract, event: "EpochFilling", logs: logs, sub: sub}, nil
 11273  }
 11274  
 11275  // WatchEpochFilling is a free log subscription operation binding the contract event 0x27b09f0953d27bbff306fe25b2987ac5a813248ac30cb2bbd5daf95e7b0e6dc0.
 11276  //
 11277  // Solidity: event EpochFilling(uint256 forkNumber, uint256 epochNumber)
 11278  func (_RootChainEvent *RootChainEventFilterer) WatchEpochFilling(opts *bind.WatchOpts, sink chan<- *RootChainEventEpochFilling) (event.Subscription, error) {
 11279  
 11280  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "EpochFilling")
 11281  	if err != nil {
 11282  		return nil, err
 11283  	}
 11284  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11285  		defer sub.Unsubscribe()
 11286  		for {
 11287  			select {
 11288  			case log := <-logs:
 11289  				// New log arrived, parse the event and forward to the user
 11290  				event := new(RootChainEventEpochFilling)
 11291  				if err := _RootChainEvent.contract.UnpackLog(event, "EpochFilling", log); err != nil {
 11292  					return err
 11293  				}
 11294  				event.Raw = log
 11295  
 11296  				select {
 11297  				case sink <- event:
 11298  				case err := <-sub.Err():
 11299  					return err
 11300  				case <-quit:
 11301  					return nil
 11302  				}
 11303  			case err := <-sub.Err():
 11304  				return err
 11305  			case <-quit:
 11306  				return nil
 11307  			}
 11308  		}
 11309  	}), nil
 11310  }
 11311  
 11312  // ParseEpochFilling is a log parse operation binding the contract event 0x27b09f0953d27bbff306fe25b2987ac5a813248ac30cb2bbd5daf95e7b0e6dc0.
 11313  //
 11314  // Solidity: event EpochFilling(uint256 forkNumber, uint256 epochNumber)
 11315  func (_RootChainEvent *RootChainEventFilterer) ParseEpochFilling(log types.Log) (*RootChainEventEpochFilling, error) {
 11316  	event := new(RootChainEventEpochFilling)
 11317  	if err := _RootChainEvent.contract.UnpackLog(event, "EpochFilling", log); err != nil {
 11318  		return nil, err
 11319  	}
 11320  	return event, nil
 11321  }
 11322  
 11323  // RootChainEventEpochFinalizedIterator is returned from FilterEpochFinalized and is used to iterate over the raw logs and unpacked data for EpochFinalized events raised by the RootChainEvent contract.
 11324  type RootChainEventEpochFinalizedIterator struct {
 11325  	Event *RootChainEventEpochFinalized // Event containing the contract specifics and raw log
 11326  
 11327  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11328  	event    string              // Event name to use for unpacking event data
 11329  
 11330  	logs chan types.Log        // Log channel receiving the found contract events
 11331  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11332  	done bool                  // Whether the subscription completed delivering logs
 11333  	fail error                 // Occurred error to stop iteration
 11334  }
 11335  
 11336  // Next advances the iterator to the subsequent event, returning whether there
 11337  // are any more events found. In case of a retrieval or parsing error, false is
 11338  // returned and Error() can be queried for the exact failure.
 11339  func (it *RootChainEventEpochFinalizedIterator) Next() bool {
 11340  	// If the iterator failed, stop iterating
 11341  	if it.fail != nil {
 11342  		return false
 11343  	}
 11344  	// If the iterator completed, deliver directly whatever's available
 11345  	if it.done {
 11346  		select {
 11347  		case log := <-it.logs:
 11348  			it.Event = new(RootChainEventEpochFinalized)
 11349  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11350  				it.fail = err
 11351  				return false
 11352  			}
 11353  			it.Event.Raw = log
 11354  			return true
 11355  
 11356  		default:
 11357  			return false
 11358  		}
 11359  	}
 11360  	// Iterator still in progress, wait for either a data or an error event
 11361  	select {
 11362  	case log := <-it.logs:
 11363  		it.Event = new(RootChainEventEpochFinalized)
 11364  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11365  			it.fail = err
 11366  			return false
 11367  		}
 11368  		it.Event.Raw = log
 11369  		return true
 11370  
 11371  	case err := <-it.sub.Err():
 11372  		it.done = true
 11373  		it.fail = err
 11374  		return it.Next()
 11375  	}
 11376  }
 11377  
 11378  // Error returns any retrieval or parsing error occurred during filtering.
 11379  func (it *RootChainEventEpochFinalizedIterator) Error() error {
 11380  	return it.fail
 11381  }
 11382  
 11383  // Close terminates the iteration process, releasing any pending underlying
 11384  // resources.
 11385  func (it *RootChainEventEpochFinalizedIterator) Close() error {
 11386  	it.sub.Unsubscribe()
 11387  	return nil
 11388  }
 11389  
 11390  // RootChainEventEpochFinalized represents a EpochFinalized event raised by the RootChainEvent contract.
 11391  type RootChainEventEpochFinalized struct {
 11392  	ForkNumber       *big.Int
 11393  	EpochNumber      *big.Int
 11394  	StartBlockNumber *big.Int
 11395  	EndBlockNumber   *big.Int
 11396  	Raw              types.Log // Blockchain specific contextual infos
 11397  }
 11398  
 11399  // FilterEpochFinalized is a free log retrieval operation binding the contract event 0x70801d4d63b3da6c19ba7349911f45bed5a99ccdfb51b8138c105872529bebd5.
 11400  //
 11401  // Solidity: event EpochFinalized(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber)
 11402  func (_RootChainEvent *RootChainEventFilterer) FilterEpochFinalized(opts *bind.FilterOpts) (*RootChainEventEpochFinalizedIterator, error) {
 11403  
 11404  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "EpochFinalized")
 11405  	if err != nil {
 11406  		return nil, err
 11407  	}
 11408  	return &RootChainEventEpochFinalizedIterator{contract: _RootChainEvent.contract, event: "EpochFinalized", logs: logs, sub: sub}, nil
 11409  }
 11410  
 11411  // WatchEpochFinalized is a free log subscription operation binding the contract event 0x70801d4d63b3da6c19ba7349911f45bed5a99ccdfb51b8138c105872529bebd5.
 11412  //
 11413  // Solidity: event EpochFinalized(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber)
 11414  func (_RootChainEvent *RootChainEventFilterer) WatchEpochFinalized(opts *bind.WatchOpts, sink chan<- *RootChainEventEpochFinalized) (event.Subscription, error) {
 11415  
 11416  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "EpochFinalized")
 11417  	if err != nil {
 11418  		return nil, err
 11419  	}
 11420  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11421  		defer sub.Unsubscribe()
 11422  		for {
 11423  			select {
 11424  			case log := <-logs:
 11425  				// New log arrived, parse the event and forward to the user
 11426  				event := new(RootChainEventEpochFinalized)
 11427  				if err := _RootChainEvent.contract.UnpackLog(event, "EpochFinalized", log); err != nil {
 11428  					return err
 11429  				}
 11430  				event.Raw = log
 11431  
 11432  				select {
 11433  				case sink <- event:
 11434  				case err := <-sub.Err():
 11435  					return err
 11436  				case <-quit:
 11437  					return nil
 11438  				}
 11439  			case err := <-sub.Err():
 11440  				return err
 11441  			case <-quit:
 11442  				return nil
 11443  			}
 11444  		}
 11445  	}), nil
 11446  }
 11447  
 11448  // ParseEpochFinalized is a log parse operation binding the contract event 0x70801d4d63b3da6c19ba7349911f45bed5a99ccdfb51b8138c105872529bebd5.
 11449  //
 11450  // Solidity: event EpochFinalized(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber)
 11451  func (_RootChainEvent *RootChainEventFilterer) ParseEpochFinalized(log types.Log) (*RootChainEventEpochFinalized, error) {
 11452  	event := new(RootChainEventEpochFinalized)
 11453  	if err := _RootChainEvent.contract.UnpackLog(event, "EpochFinalized", log); err != nil {
 11454  		return nil, err
 11455  	}
 11456  	return event, nil
 11457  }
 11458  
 11459  // RootChainEventEpochPreparedIterator is returned from FilterEpochPrepared and is used to iterate over the raw logs and unpacked data for EpochPrepared events raised by the RootChainEvent contract.
 11460  type RootChainEventEpochPreparedIterator struct {
 11461  	Event *RootChainEventEpochPrepared // Event containing the contract specifics and raw log
 11462  
 11463  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11464  	event    string              // Event name to use for unpacking event data
 11465  
 11466  	logs chan types.Log        // Log channel receiving the found contract events
 11467  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11468  	done bool                  // Whether the subscription completed delivering logs
 11469  	fail error                 // Occurred error to stop iteration
 11470  }
 11471  
 11472  // Next advances the iterator to the subsequent event, returning whether there
 11473  // are any more events found. In case of a retrieval or parsing error, false is
 11474  // returned and Error() can be queried for the exact failure.
 11475  func (it *RootChainEventEpochPreparedIterator) Next() bool {
 11476  	// If the iterator failed, stop iterating
 11477  	if it.fail != nil {
 11478  		return false
 11479  	}
 11480  	// If the iterator completed, deliver directly whatever's available
 11481  	if it.done {
 11482  		select {
 11483  		case log := <-it.logs:
 11484  			it.Event = new(RootChainEventEpochPrepared)
 11485  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11486  				it.fail = err
 11487  				return false
 11488  			}
 11489  			it.Event.Raw = log
 11490  			return true
 11491  
 11492  		default:
 11493  			return false
 11494  		}
 11495  	}
 11496  	// Iterator still in progress, wait for either a data or an error event
 11497  	select {
 11498  	case log := <-it.logs:
 11499  		it.Event = new(RootChainEventEpochPrepared)
 11500  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11501  			it.fail = err
 11502  			return false
 11503  		}
 11504  		it.Event.Raw = log
 11505  		return true
 11506  
 11507  	case err := <-it.sub.Err():
 11508  		it.done = true
 11509  		it.fail = err
 11510  		return it.Next()
 11511  	}
 11512  }
 11513  
 11514  // Error returns any retrieval or parsing error occurred during filtering.
 11515  func (it *RootChainEventEpochPreparedIterator) Error() error {
 11516  	return it.fail
 11517  }
 11518  
 11519  // Close terminates the iteration process, releasing any pending underlying
 11520  // resources.
 11521  func (it *RootChainEventEpochPreparedIterator) Close() error {
 11522  	it.sub.Unsubscribe()
 11523  	return nil
 11524  }
 11525  
 11526  // RootChainEventEpochPrepared represents a EpochPrepared event raised by the RootChainEvent contract.
 11527  type RootChainEventEpochPrepared struct {
 11528  	ForkNumber       *big.Int
 11529  	EpochNumber      *big.Int
 11530  	StartBlockNumber *big.Int
 11531  	EndBlockNumber   *big.Int
 11532  	RequestStart     *big.Int
 11533  	RequestEnd       *big.Int
 11534  	EpochIsEmpty     bool
 11535  	IsRequest        bool
 11536  	UserActivated    bool
 11537  	Rebase           bool
 11538  	Raw              types.Log // Blockchain specific contextual infos
 11539  }
 11540  
 11541  // FilterEpochPrepared is a free log retrieval operation binding the contract event 0x1a69c0760aa329b76f72579129869013ebd3d41594db019c0e997b939fcb32e3.
 11542  //
 11543  // Solidity: event EpochPrepared(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated, bool rebase)
 11544  func (_RootChainEvent *RootChainEventFilterer) FilterEpochPrepared(opts *bind.FilterOpts) (*RootChainEventEpochPreparedIterator, error) {
 11545  
 11546  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "EpochPrepared")
 11547  	if err != nil {
 11548  		return nil, err
 11549  	}
 11550  	return &RootChainEventEpochPreparedIterator{contract: _RootChainEvent.contract, event: "EpochPrepared", logs: logs, sub: sub}, nil
 11551  }
 11552  
 11553  // WatchEpochPrepared is a free log subscription operation binding the contract event 0x1a69c0760aa329b76f72579129869013ebd3d41594db019c0e997b939fcb32e3.
 11554  //
 11555  // Solidity: event EpochPrepared(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated, bool rebase)
 11556  func (_RootChainEvent *RootChainEventFilterer) WatchEpochPrepared(opts *bind.WatchOpts, sink chan<- *RootChainEventEpochPrepared) (event.Subscription, error) {
 11557  
 11558  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "EpochPrepared")
 11559  	if err != nil {
 11560  		return nil, err
 11561  	}
 11562  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11563  		defer sub.Unsubscribe()
 11564  		for {
 11565  			select {
 11566  			case log := <-logs:
 11567  				// New log arrived, parse the event and forward to the user
 11568  				event := new(RootChainEventEpochPrepared)
 11569  				if err := _RootChainEvent.contract.UnpackLog(event, "EpochPrepared", log); err != nil {
 11570  					return err
 11571  				}
 11572  				event.Raw = log
 11573  
 11574  				select {
 11575  				case sink <- event:
 11576  				case err := <-sub.Err():
 11577  					return err
 11578  				case <-quit:
 11579  					return nil
 11580  				}
 11581  			case err := <-sub.Err():
 11582  				return err
 11583  			case <-quit:
 11584  				return nil
 11585  			}
 11586  		}
 11587  	}), nil
 11588  }
 11589  
 11590  // ParseEpochPrepared is a log parse operation binding the contract event 0x1a69c0760aa329b76f72579129869013ebd3d41594db019c0e997b939fcb32e3.
 11591  //
 11592  // Solidity: event EpochPrepared(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated, bool rebase)
 11593  func (_RootChainEvent *RootChainEventFilterer) ParseEpochPrepared(log types.Log) (*RootChainEventEpochPrepared, error) {
 11594  	event := new(RootChainEventEpochPrepared)
 11595  	if err := _RootChainEvent.contract.UnpackLog(event, "EpochPrepared", log); err != nil {
 11596  		return nil, err
 11597  	}
 11598  	return event, nil
 11599  }
 11600  
 11601  // RootChainEventEpochRebasedIterator is returned from FilterEpochRebased and is used to iterate over the raw logs and unpacked data for EpochRebased events raised by the RootChainEvent contract.
 11602  type RootChainEventEpochRebasedIterator struct {
 11603  	Event *RootChainEventEpochRebased // Event containing the contract specifics and raw log
 11604  
 11605  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11606  	event    string              // Event name to use for unpacking event data
 11607  
 11608  	logs chan types.Log        // Log channel receiving the found contract events
 11609  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11610  	done bool                  // Whether the subscription completed delivering logs
 11611  	fail error                 // Occurred error to stop iteration
 11612  }
 11613  
 11614  // Next advances the iterator to the subsequent event, returning whether there
 11615  // are any more events found. In case of a retrieval or parsing error, false is
 11616  // returned and Error() can be queried for the exact failure.
 11617  func (it *RootChainEventEpochRebasedIterator) Next() bool {
 11618  	// If the iterator failed, stop iterating
 11619  	if it.fail != nil {
 11620  		return false
 11621  	}
 11622  	// If the iterator completed, deliver directly whatever's available
 11623  	if it.done {
 11624  		select {
 11625  		case log := <-it.logs:
 11626  			it.Event = new(RootChainEventEpochRebased)
 11627  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11628  				it.fail = err
 11629  				return false
 11630  			}
 11631  			it.Event.Raw = log
 11632  			return true
 11633  
 11634  		default:
 11635  			return false
 11636  		}
 11637  	}
 11638  	// Iterator still in progress, wait for either a data or an error event
 11639  	select {
 11640  	case log := <-it.logs:
 11641  		it.Event = new(RootChainEventEpochRebased)
 11642  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11643  			it.fail = err
 11644  			return false
 11645  		}
 11646  		it.Event.Raw = log
 11647  		return true
 11648  
 11649  	case err := <-it.sub.Err():
 11650  		it.done = true
 11651  		it.fail = err
 11652  		return it.Next()
 11653  	}
 11654  }
 11655  
 11656  // Error returns any retrieval or parsing error occurred during filtering.
 11657  func (it *RootChainEventEpochRebasedIterator) Error() error {
 11658  	return it.fail
 11659  }
 11660  
 11661  // Close terminates the iteration process, releasing any pending underlying
 11662  // resources.
 11663  func (it *RootChainEventEpochRebasedIterator) Close() error {
 11664  	it.sub.Unsubscribe()
 11665  	return nil
 11666  }
 11667  
 11668  // RootChainEventEpochRebased represents a EpochRebased event raised by the RootChainEvent contract.
 11669  type RootChainEventEpochRebased struct {
 11670  	ForkNumber       *big.Int
 11671  	EpochNumber      *big.Int
 11672  	StartBlockNumber *big.Int
 11673  	EndBlockNumber   *big.Int
 11674  	RequestStart     *big.Int
 11675  	RequestEnd       *big.Int
 11676  	EpochIsEmpty     bool
 11677  	IsRequest        bool
 11678  	UserActivated    bool
 11679  	Raw              types.Log // Blockchain specific contextual infos
 11680  }
 11681  
 11682  // FilterEpochRebased is a free log retrieval operation binding the contract event 0x030c1c69405c93021f28f57557240dee939a320b826a1fd0d39bf6e629ecab47.
 11683  //
 11684  // Solidity: event EpochRebased(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated)
 11685  func (_RootChainEvent *RootChainEventFilterer) FilterEpochRebased(opts *bind.FilterOpts) (*RootChainEventEpochRebasedIterator, error) {
 11686  
 11687  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "EpochRebased")
 11688  	if err != nil {
 11689  		return nil, err
 11690  	}
 11691  	return &RootChainEventEpochRebasedIterator{contract: _RootChainEvent.contract, event: "EpochRebased", logs: logs, sub: sub}, nil
 11692  }
 11693  
 11694  // WatchEpochRebased is a free log subscription operation binding the contract event 0x030c1c69405c93021f28f57557240dee939a320b826a1fd0d39bf6e629ecab47.
 11695  //
 11696  // Solidity: event EpochRebased(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated)
 11697  func (_RootChainEvent *RootChainEventFilterer) WatchEpochRebased(opts *bind.WatchOpts, sink chan<- *RootChainEventEpochRebased) (event.Subscription, error) {
 11698  
 11699  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "EpochRebased")
 11700  	if err != nil {
 11701  		return nil, err
 11702  	}
 11703  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11704  		defer sub.Unsubscribe()
 11705  		for {
 11706  			select {
 11707  			case log := <-logs:
 11708  				// New log arrived, parse the event and forward to the user
 11709  				event := new(RootChainEventEpochRebased)
 11710  				if err := _RootChainEvent.contract.UnpackLog(event, "EpochRebased", log); err != nil {
 11711  					return err
 11712  				}
 11713  				event.Raw = log
 11714  
 11715  				select {
 11716  				case sink <- event:
 11717  				case err := <-sub.Err():
 11718  					return err
 11719  				case <-quit:
 11720  					return nil
 11721  				}
 11722  			case err := <-sub.Err():
 11723  				return err
 11724  			case <-quit:
 11725  				return nil
 11726  			}
 11727  		}
 11728  	}), nil
 11729  }
 11730  
 11731  // ParseEpochRebased is a log parse operation binding the contract event 0x030c1c69405c93021f28f57557240dee939a320b826a1fd0d39bf6e629ecab47.
 11732  //
 11733  // Solidity: event EpochRebased(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated)
 11734  func (_RootChainEvent *RootChainEventFilterer) ParseEpochRebased(log types.Log) (*RootChainEventEpochRebased, error) {
 11735  	event := new(RootChainEventEpochRebased)
 11736  	if err := _RootChainEvent.contract.UnpackLog(event, "EpochRebased", log); err != nil {
 11737  		return nil, err
 11738  	}
 11739  	return event, nil
 11740  }
 11741  
 11742  // RootChainEventForkedIterator is returned from FilterForked and is used to iterate over the raw logs and unpacked data for Forked events raised by the RootChainEvent contract.
 11743  type RootChainEventForkedIterator struct {
 11744  	Event *RootChainEventForked // Event containing the contract specifics and raw log
 11745  
 11746  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11747  	event    string              // Event name to use for unpacking event data
 11748  
 11749  	logs chan types.Log        // Log channel receiving the found contract events
 11750  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11751  	done bool                  // Whether the subscription completed delivering logs
 11752  	fail error                 // Occurred error to stop iteration
 11753  }
 11754  
 11755  // Next advances the iterator to the subsequent event, returning whether there
 11756  // are any more events found. In case of a retrieval or parsing error, false is
 11757  // returned and Error() can be queried for the exact failure.
 11758  func (it *RootChainEventForkedIterator) Next() bool {
 11759  	// If the iterator failed, stop iterating
 11760  	if it.fail != nil {
 11761  		return false
 11762  	}
 11763  	// If the iterator completed, deliver directly whatever's available
 11764  	if it.done {
 11765  		select {
 11766  		case log := <-it.logs:
 11767  			it.Event = new(RootChainEventForked)
 11768  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11769  				it.fail = err
 11770  				return false
 11771  			}
 11772  			it.Event.Raw = log
 11773  			return true
 11774  
 11775  		default:
 11776  			return false
 11777  		}
 11778  	}
 11779  	// Iterator still in progress, wait for either a data or an error event
 11780  	select {
 11781  	case log := <-it.logs:
 11782  		it.Event = new(RootChainEventForked)
 11783  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11784  			it.fail = err
 11785  			return false
 11786  		}
 11787  		it.Event.Raw = log
 11788  		return true
 11789  
 11790  	case err := <-it.sub.Err():
 11791  		it.done = true
 11792  		it.fail = err
 11793  		return it.Next()
 11794  	}
 11795  }
 11796  
 11797  // Error returns any retrieval or parsing error occurred during filtering.
 11798  func (it *RootChainEventForkedIterator) Error() error {
 11799  	return it.fail
 11800  }
 11801  
 11802  // Close terminates the iteration process, releasing any pending underlying
 11803  // resources.
 11804  func (it *RootChainEventForkedIterator) Close() error {
 11805  	it.sub.Unsubscribe()
 11806  	return nil
 11807  }
 11808  
 11809  // RootChainEventForked represents a Forked event raised by the RootChainEvent contract.
 11810  type RootChainEventForked struct {
 11811  	NewFork           *big.Int
 11812  	EpochNumber       *big.Int
 11813  	ForkedBlockNumber *big.Int
 11814  	Raw               types.Log // Blockchain specific contextual infos
 11815  }
 11816  
 11817  // FilterForked is a free log retrieval operation binding the contract event 0x0647d42ab02f6e0ae76959757dcb6aa6feac1d4ba6f077f1223fb4b1b429f06c.
 11818  //
 11819  // Solidity: event Forked(uint256 newFork, uint256 epochNumber, uint256 forkedBlockNumber)
 11820  func (_RootChainEvent *RootChainEventFilterer) FilterForked(opts *bind.FilterOpts) (*RootChainEventForkedIterator, error) {
 11821  
 11822  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "Forked")
 11823  	if err != nil {
 11824  		return nil, err
 11825  	}
 11826  	return &RootChainEventForkedIterator{contract: _RootChainEvent.contract, event: "Forked", logs: logs, sub: sub}, nil
 11827  }
 11828  
 11829  // WatchForked is a free log subscription operation binding the contract event 0x0647d42ab02f6e0ae76959757dcb6aa6feac1d4ba6f077f1223fb4b1b429f06c.
 11830  //
 11831  // Solidity: event Forked(uint256 newFork, uint256 epochNumber, uint256 forkedBlockNumber)
 11832  func (_RootChainEvent *RootChainEventFilterer) WatchForked(opts *bind.WatchOpts, sink chan<- *RootChainEventForked) (event.Subscription, error) {
 11833  
 11834  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "Forked")
 11835  	if err != nil {
 11836  		return nil, err
 11837  	}
 11838  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11839  		defer sub.Unsubscribe()
 11840  		for {
 11841  			select {
 11842  			case log := <-logs:
 11843  				// New log arrived, parse the event and forward to the user
 11844  				event := new(RootChainEventForked)
 11845  				if err := _RootChainEvent.contract.UnpackLog(event, "Forked", log); err != nil {
 11846  					return err
 11847  				}
 11848  				event.Raw = log
 11849  
 11850  				select {
 11851  				case sink <- event:
 11852  				case err := <-sub.Err():
 11853  					return err
 11854  				case <-quit:
 11855  					return nil
 11856  				}
 11857  			case err := <-sub.Err():
 11858  				return err
 11859  			case <-quit:
 11860  				return nil
 11861  			}
 11862  		}
 11863  	}), nil
 11864  }
 11865  
 11866  // ParseForked is a log parse operation binding the contract event 0x0647d42ab02f6e0ae76959757dcb6aa6feac1d4ba6f077f1223fb4b1b429f06c.
 11867  //
 11868  // Solidity: event Forked(uint256 newFork, uint256 epochNumber, uint256 forkedBlockNumber)
 11869  func (_RootChainEvent *RootChainEventFilterer) ParseForked(log types.Log) (*RootChainEventForked, error) {
 11870  	event := new(RootChainEventForked)
 11871  	if err := _RootChainEvent.contract.UnpackLog(event, "Forked", log); err != nil {
 11872  		return nil, err
 11873  	}
 11874  	return event, nil
 11875  }
 11876  
 11877  // RootChainEventOperatorChangedIterator is returned from FilterOperatorChanged and is used to iterate over the raw logs and unpacked data for OperatorChanged events raised by the RootChainEvent contract.
 11878  type RootChainEventOperatorChangedIterator struct {
 11879  	Event *RootChainEventOperatorChanged // Event containing the contract specifics and raw log
 11880  
 11881  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11882  	event    string              // Event name to use for unpacking event data
 11883  
 11884  	logs chan types.Log        // Log channel receiving the found contract events
 11885  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11886  	done bool                  // Whether the subscription completed delivering logs
 11887  	fail error                 // Occurred error to stop iteration
 11888  }
 11889  
 11890  // Next advances the iterator to the subsequent event, returning whether there
 11891  // are any more events found. In case of a retrieval or parsing error, false is
 11892  // returned and Error() can be queried for the exact failure.
 11893  func (it *RootChainEventOperatorChangedIterator) Next() bool {
 11894  	// If the iterator failed, stop iterating
 11895  	if it.fail != nil {
 11896  		return false
 11897  	}
 11898  	// If the iterator completed, deliver directly whatever's available
 11899  	if it.done {
 11900  		select {
 11901  		case log := <-it.logs:
 11902  			it.Event = new(RootChainEventOperatorChanged)
 11903  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11904  				it.fail = err
 11905  				return false
 11906  			}
 11907  			it.Event.Raw = log
 11908  			return true
 11909  
 11910  		default:
 11911  			return false
 11912  		}
 11913  	}
 11914  	// Iterator still in progress, wait for either a data or an error event
 11915  	select {
 11916  	case log := <-it.logs:
 11917  		it.Event = new(RootChainEventOperatorChanged)
 11918  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11919  			it.fail = err
 11920  			return false
 11921  		}
 11922  		it.Event.Raw = log
 11923  		return true
 11924  
 11925  	case err := <-it.sub.Err():
 11926  		it.done = true
 11927  		it.fail = err
 11928  		return it.Next()
 11929  	}
 11930  }
 11931  
 11932  // Error returns any retrieval or parsing error occurred during filtering.
 11933  func (it *RootChainEventOperatorChangedIterator) Error() error {
 11934  	return it.fail
 11935  }
 11936  
 11937  // Close terminates the iteration process, releasing any pending underlying
 11938  // resources.
 11939  func (it *RootChainEventOperatorChangedIterator) Close() error {
 11940  	it.sub.Unsubscribe()
 11941  	return nil
 11942  }
 11943  
 11944  // RootChainEventOperatorChanged represents a OperatorChanged event raised by the RootChainEvent contract.
 11945  type RootChainEventOperatorChanged struct {
 11946  	NewOperator common.Address
 11947  	Raw         types.Log // Blockchain specific contextual infos
 11948  }
 11949  
 11950  // FilterOperatorChanged is a free log retrieval operation binding the contract event 0x4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e54.
 11951  //
 11952  // Solidity: event OperatorChanged(address _newOperator)
 11953  func (_RootChainEvent *RootChainEventFilterer) FilterOperatorChanged(opts *bind.FilterOpts) (*RootChainEventOperatorChangedIterator, error) {
 11954  
 11955  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "OperatorChanged")
 11956  	if err != nil {
 11957  		return nil, err
 11958  	}
 11959  	return &RootChainEventOperatorChangedIterator{contract: _RootChainEvent.contract, event: "OperatorChanged", logs: logs, sub: sub}, nil
 11960  }
 11961  
 11962  // WatchOperatorChanged is a free log subscription operation binding the contract event 0x4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e54.
 11963  //
 11964  // Solidity: event OperatorChanged(address _newOperator)
 11965  func (_RootChainEvent *RootChainEventFilterer) WatchOperatorChanged(opts *bind.WatchOpts, sink chan<- *RootChainEventOperatorChanged) (event.Subscription, error) {
 11966  
 11967  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "OperatorChanged")
 11968  	if err != nil {
 11969  		return nil, err
 11970  	}
 11971  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11972  		defer sub.Unsubscribe()
 11973  		for {
 11974  			select {
 11975  			case log := <-logs:
 11976  				// New log arrived, parse the event and forward to the user
 11977  				event := new(RootChainEventOperatorChanged)
 11978  				if err := _RootChainEvent.contract.UnpackLog(event, "OperatorChanged", log); err != nil {
 11979  					return err
 11980  				}
 11981  				event.Raw = log
 11982  
 11983  				select {
 11984  				case sink <- event:
 11985  				case err := <-sub.Err():
 11986  					return err
 11987  				case <-quit:
 11988  					return nil
 11989  				}
 11990  			case err := <-sub.Err():
 11991  				return err
 11992  			case <-quit:
 11993  				return nil
 11994  			}
 11995  		}
 11996  	}), nil
 11997  }
 11998  
 11999  // ParseOperatorChanged is a log parse operation binding the contract event 0x4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e54.
 12000  //
 12001  // Solidity: event OperatorChanged(address _newOperator)
 12002  func (_RootChainEvent *RootChainEventFilterer) ParseOperatorChanged(log types.Log) (*RootChainEventOperatorChanged, error) {
 12003  	event := new(RootChainEventOperatorChanged)
 12004  	if err := _RootChainEvent.contract.UnpackLog(event, "OperatorChanged", log); err != nil {
 12005  		return nil, err
 12006  	}
 12007  	return event, nil
 12008  }
 12009  
 12010  // RootChainEventRequestAppliedIterator is returned from FilterRequestApplied and is used to iterate over the raw logs and unpacked data for RequestApplied events raised by the RootChainEvent contract.
 12011  type RootChainEventRequestAppliedIterator struct {
 12012  	Event *RootChainEventRequestApplied // Event containing the contract specifics and raw log
 12013  
 12014  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 12015  	event    string              // Event name to use for unpacking event data
 12016  
 12017  	logs chan types.Log        // Log channel receiving the found contract events
 12018  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 12019  	done bool                  // Whether the subscription completed delivering logs
 12020  	fail error                 // Occurred error to stop iteration
 12021  }
 12022  
 12023  // Next advances the iterator to the subsequent event, returning whether there
 12024  // are any more events found. In case of a retrieval or parsing error, false is
 12025  // returned and Error() can be queried for the exact failure.
 12026  func (it *RootChainEventRequestAppliedIterator) Next() bool {
 12027  	// If the iterator failed, stop iterating
 12028  	if it.fail != nil {
 12029  		return false
 12030  	}
 12031  	// If the iterator completed, deliver directly whatever's available
 12032  	if it.done {
 12033  		select {
 12034  		case log := <-it.logs:
 12035  			it.Event = new(RootChainEventRequestApplied)
 12036  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12037  				it.fail = err
 12038  				return false
 12039  			}
 12040  			it.Event.Raw = log
 12041  			return true
 12042  
 12043  		default:
 12044  			return false
 12045  		}
 12046  	}
 12047  	// Iterator still in progress, wait for either a data or an error event
 12048  	select {
 12049  	case log := <-it.logs:
 12050  		it.Event = new(RootChainEventRequestApplied)
 12051  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12052  			it.fail = err
 12053  			return false
 12054  		}
 12055  		it.Event.Raw = log
 12056  		return true
 12057  
 12058  	case err := <-it.sub.Err():
 12059  		it.done = true
 12060  		it.fail = err
 12061  		return it.Next()
 12062  	}
 12063  }
 12064  
 12065  // Error returns any retrieval or parsing error occurred during filtering.
 12066  func (it *RootChainEventRequestAppliedIterator) Error() error {
 12067  	return it.fail
 12068  }
 12069  
 12070  // Close terminates the iteration process, releasing any pending underlying
 12071  // resources.
 12072  func (it *RootChainEventRequestAppliedIterator) Close() error {
 12073  	it.sub.Unsubscribe()
 12074  	return nil
 12075  }
 12076  
 12077  // RootChainEventRequestApplied represents a RequestApplied event raised by the RootChainEvent contract.
 12078  type RootChainEventRequestApplied struct {
 12079  	RequestId     *big.Int
 12080  	UserActivated bool
 12081  	Raw           types.Log // Blockchain specific contextual infos
 12082  }
 12083  
 12084  // FilterRequestApplied is a free log retrieval operation binding the contract event 0x6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c2.
 12085  //
 12086  // Solidity: event RequestApplied(uint256 requestId, bool userActivated)
 12087  func (_RootChainEvent *RootChainEventFilterer) FilterRequestApplied(opts *bind.FilterOpts) (*RootChainEventRequestAppliedIterator, error) {
 12088  
 12089  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "RequestApplied")
 12090  	if err != nil {
 12091  		return nil, err
 12092  	}
 12093  	return &RootChainEventRequestAppliedIterator{contract: _RootChainEvent.contract, event: "RequestApplied", logs: logs, sub: sub}, nil
 12094  }
 12095  
 12096  // WatchRequestApplied is a free log subscription operation binding the contract event 0x6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c2.
 12097  //
 12098  // Solidity: event RequestApplied(uint256 requestId, bool userActivated)
 12099  func (_RootChainEvent *RootChainEventFilterer) WatchRequestApplied(opts *bind.WatchOpts, sink chan<- *RootChainEventRequestApplied) (event.Subscription, error) {
 12100  
 12101  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "RequestApplied")
 12102  	if err != nil {
 12103  		return nil, err
 12104  	}
 12105  	return event.NewSubscription(func(quit <-chan struct{}) error {
 12106  		defer sub.Unsubscribe()
 12107  		for {
 12108  			select {
 12109  			case log := <-logs:
 12110  				// New log arrived, parse the event and forward to the user
 12111  				event := new(RootChainEventRequestApplied)
 12112  				if err := _RootChainEvent.contract.UnpackLog(event, "RequestApplied", log); err != nil {
 12113  					return err
 12114  				}
 12115  				event.Raw = log
 12116  
 12117  				select {
 12118  				case sink <- event:
 12119  				case err := <-sub.Err():
 12120  					return err
 12121  				case <-quit:
 12122  					return nil
 12123  				}
 12124  			case err := <-sub.Err():
 12125  				return err
 12126  			case <-quit:
 12127  				return nil
 12128  			}
 12129  		}
 12130  	}), nil
 12131  }
 12132  
 12133  // ParseRequestApplied is a log parse operation binding the contract event 0x6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c2.
 12134  //
 12135  // Solidity: event RequestApplied(uint256 requestId, bool userActivated)
 12136  func (_RootChainEvent *RootChainEventFilterer) ParseRequestApplied(log types.Log) (*RootChainEventRequestApplied, error) {
 12137  	event := new(RootChainEventRequestApplied)
 12138  	if err := _RootChainEvent.contract.UnpackLog(event, "RequestApplied", log); err != nil {
 12139  		return nil, err
 12140  	}
 12141  	return event, nil
 12142  }
 12143  
 12144  // RootChainEventRequestChallengedIterator is returned from FilterRequestChallenged and is used to iterate over the raw logs and unpacked data for RequestChallenged events raised by the RootChainEvent contract.
 12145  type RootChainEventRequestChallengedIterator struct {
 12146  	Event *RootChainEventRequestChallenged // Event containing the contract specifics and raw log
 12147  
 12148  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 12149  	event    string              // Event name to use for unpacking event data
 12150  
 12151  	logs chan types.Log        // Log channel receiving the found contract events
 12152  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 12153  	done bool                  // Whether the subscription completed delivering logs
 12154  	fail error                 // Occurred error to stop iteration
 12155  }
 12156  
 12157  // Next advances the iterator to the subsequent event, returning whether there
 12158  // are any more events found. In case of a retrieval or parsing error, false is
 12159  // returned and Error() can be queried for the exact failure.
 12160  func (it *RootChainEventRequestChallengedIterator) Next() bool {
 12161  	// If the iterator failed, stop iterating
 12162  	if it.fail != nil {
 12163  		return false
 12164  	}
 12165  	// If the iterator completed, deliver directly whatever's available
 12166  	if it.done {
 12167  		select {
 12168  		case log := <-it.logs:
 12169  			it.Event = new(RootChainEventRequestChallenged)
 12170  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12171  				it.fail = err
 12172  				return false
 12173  			}
 12174  			it.Event.Raw = log
 12175  			return true
 12176  
 12177  		default:
 12178  			return false
 12179  		}
 12180  	}
 12181  	// Iterator still in progress, wait for either a data or an error event
 12182  	select {
 12183  	case log := <-it.logs:
 12184  		it.Event = new(RootChainEventRequestChallenged)
 12185  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12186  			it.fail = err
 12187  			return false
 12188  		}
 12189  		it.Event.Raw = log
 12190  		return true
 12191  
 12192  	case err := <-it.sub.Err():
 12193  		it.done = true
 12194  		it.fail = err
 12195  		return it.Next()
 12196  	}
 12197  }
 12198  
 12199  // Error returns any retrieval or parsing error occurred during filtering.
 12200  func (it *RootChainEventRequestChallengedIterator) Error() error {
 12201  	return it.fail
 12202  }
 12203  
 12204  // Close terminates the iteration process, releasing any pending underlying
 12205  // resources.
 12206  func (it *RootChainEventRequestChallengedIterator) Close() error {
 12207  	it.sub.Unsubscribe()
 12208  	return nil
 12209  }
 12210  
 12211  // RootChainEventRequestChallenged represents a RequestChallenged event raised by the RootChainEvent contract.
 12212  type RootChainEventRequestChallenged struct {
 12213  	RequestId     *big.Int
 12214  	UserActivated bool
 12215  	Raw           types.Log // Blockchain specific contextual infos
 12216  }
 12217  
 12218  // FilterRequestChallenged is a free log retrieval operation binding the contract event 0xc8135db115644ed4ae193313c4c801235ef740d2a57a8d5e6fe26ab66635698a.
 12219  //
 12220  // Solidity: event RequestChallenged(uint256 requestId, bool userActivated)
 12221  func (_RootChainEvent *RootChainEventFilterer) FilterRequestChallenged(opts *bind.FilterOpts) (*RootChainEventRequestChallengedIterator, error) {
 12222  
 12223  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "RequestChallenged")
 12224  	if err != nil {
 12225  		return nil, err
 12226  	}
 12227  	return &RootChainEventRequestChallengedIterator{contract: _RootChainEvent.contract, event: "RequestChallenged", logs: logs, sub: sub}, nil
 12228  }
 12229  
 12230  // WatchRequestChallenged is a free log subscription operation binding the contract event 0xc8135db115644ed4ae193313c4c801235ef740d2a57a8d5e6fe26ab66635698a.
 12231  //
 12232  // Solidity: event RequestChallenged(uint256 requestId, bool userActivated)
 12233  func (_RootChainEvent *RootChainEventFilterer) WatchRequestChallenged(opts *bind.WatchOpts, sink chan<- *RootChainEventRequestChallenged) (event.Subscription, error) {
 12234  
 12235  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "RequestChallenged")
 12236  	if err != nil {
 12237  		return nil, err
 12238  	}
 12239  	return event.NewSubscription(func(quit <-chan struct{}) error {
 12240  		defer sub.Unsubscribe()
 12241  		for {
 12242  			select {
 12243  			case log := <-logs:
 12244  				// New log arrived, parse the event and forward to the user
 12245  				event := new(RootChainEventRequestChallenged)
 12246  				if err := _RootChainEvent.contract.UnpackLog(event, "RequestChallenged", log); err != nil {
 12247  					return err
 12248  				}
 12249  				event.Raw = log
 12250  
 12251  				select {
 12252  				case sink <- event:
 12253  				case err := <-sub.Err():
 12254  					return err
 12255  				case <-quit:
 12256  					return nil
 12257  				}
 12258  			case err := <-sub.Err():
 12259  				return err
 12260  			case <-quit:
 12261  				return nil
 12262  			}
 12263  		}
 12264  	}), nil
 12265  }
 12266  
 12267  // ParseRequestChallenged is a log parse operation binding the contract event 0xc8135db115644ed4ae193313c4c801235ef740d2a57a8d5e6fe26ab66635698a.
 12268  //
 12269  // Solidity: event RequestChallenged(uint256 requestId, bool userActivated)
 12270  func (_RootChainEvent *RootChainEventFilterer) ParseRequestChallenged(log types.Log) (*RootChainEventRequestChallenged, error) {
 12271  	event := new(RootChainEventRequestChallenged)
 12272  	if err := _RootChainEvent.contract.UnpackLog(event, "RequestChallenged", log); err != nil {
 12273  		return nil, err
 12274  	}
 12275  	return event, nil
 12276  }
 12277  
 12278  // RootChainEventRequestCreatedIterator is returned from FilterRequestCreated and is used to iterate over the raw logs and unpacked data for RequestCreated events raised by the RootChainEvent contract.
 12279  type RootChainEventRequestCreatedIterator struct {
 12280  	Event *RootChainEventRequestCreated // Event containing the contract specifics and raw log
 12281  
 12282  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 12283  	event    string              // Event name to use for unpacking event data
 12284  
 12285  	logs chan types.Log        // Log channel receiving the found contract events
 12286  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 12287  	done bool                  // Whether the subscription completed delivering logs
 12288  	fail error                 // Occurred error to stop iteration
 12289  }
 12290  
 12291  // Next advances the iterator to the subsequent event, returning whether there
 12292  // are any more events found. In case of a retrieval or parsing error, false is
 12293  // returned and Error() can be queried for the exact failure.
 12294  func (it *RootChainEventRequestCreatedIterator) Next() bool {
 12295  	// If the iterator failed, stop iterating
 12296  	if it.fail != nil {
 12297  		return false
 12298  	}
 12299  	// If the iterator completed, deliver directly whatever's available
 12300  	if it.done {
 12301  		select {
 12302  		case log := <-it.logs:
 12303  			it.Event = new(RootChainEventRequestCreated)
 12304  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12305  				it.fail = err
 12306  				return false
 12307  			}
 12308  			it.Event.Raw = log
 12309  			return true
 12310  
 12311  		default:
 12312  			return false
 12313  		}
 12314  	}
 12315  	// Iterator still in progress, wait for either a data or an error event
 12316  	select {
 12317  	case log := <-it.logs:
 12318  		it.Event = new(RootChainEventRequestCreated)
 12319  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12320  			it.fail = err
 12321  			return false
 12322  		}
 12323  		it.Event.Raw = log
 12324  		return true
 12325  
 12326  	case err := <-it.sub.Err():
 12327  		it.done = true
 12328  		it.fail = err
 12329  		return it.Next()
 12330  	}
 12331  }
 12332  
 12333  // Error returns any retrieval or parsing error occurred during filtering.
 12334  func (it *RootChainEventRequestCreatedIterator) Error() error {
 12335  	return it.fail
 12336  }
 12337  
 12338  // Close terminates the iteration process, releasing any pending underlying
 12339  // resources.
 12340  func (it *RootChainEventRequestCreatedIterator) Close() error {
 12341  	it.sub.Unsubscribe()
 12342  	return nil
 12343  }
 12344  
 12345  // RootChainEventRequestCreated represents a RequestCreated event raised by the RootChainEvent contract.
 12346  type RootChainEventRequestCreated struct {
 12347  	RequestId     *big.Int
 12348  	Requestor     common.Address
 12349  	To            common.Address
 12350  	WeiAmount     *big.Int
 12351  	TrieKey       [32]byte
 12352  	TrieValue     []byte
 12353  	IsExit        bool
 12354  	UserActivated bool
 12355  	Raw           types.Log // Blockchain specific contextual infos
 12356  }
 12357  
 12358  // FilterRequestCreated is a free log retrieval operation binding the contract event 0x879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d.
 12359  //
 12360  // Solidity: event RequestCreated(uint256 requestId, address requestor, address to, uint256 weiAmount, bytes32 trieKey, bytes trieValue, bool isExit, bool userActivated)
 12361  func (_RootChainEvent *RootChainEventFilterer) FilterRequestCreated(opts *bind.FilterOpts) (*RootChainEventRequestCreatedIterator, error) {
 12362  
 12363  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "RequestCreated")
 12364  	if err != nil {
 12365  		return nil, err
 12366  	}
 12367  	return &RootChainEventRequestCreatedIterator{contract: _RootChainEvent.contract, event: "RequestCreated", logs: logs, sub: sub}, nil
 12368  }
 12369  
 12370  // WatchRequestCreated is a free log subscription operation binding the contract event 0x879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d.
 12371  //
 12372  // Solidity: event RequestCreated(uint256 requestId, address requestor, address to, uint256 weiAmount, bytes32 trieKey, bytes trieValue, bool isExit, bool userActivated)
 12373  func (_RootChainEvent *RootChainEventFilterer) WatchRequestCreated(opts *bind.WatchOpts, sink chan<- *RootChainEventRequestCreated) (event.Subscription, error) {
 12374  
 12375  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "RequestCreated")
 12376  	if err != nil {
 12377  		return nil, err
 12378  	}
 12379  	return event.NewSubscription(func(quit <-chan struct{}) error {
 12380  		defer sub.Unsubscribe()
 12381  		for {
 12382  			select {
 12383  			case log := <-logs:
 12384  				// New log arrived, parse the event and forward to the user
 12385  				event := new(RootChainEventRequestCreated)
 12386  				if err := _RootChainEvent.contract.UnpackLog(event, "RequestCreated", log); err != nil {
 12387  					return err
 12388  				}
 12389  				event.Raw = log
 12390  
 12391  				select {
 12392  				case sink <- event:
 12393  				case err := <-sub.Err():
 12394  					return err
 12395  				case <-quit:
 12396  					return nil
 12397  				}
 12398  			case err := <-sub.Err():
 12399  				return err
 12400  			case <-quit:
 12401  				return nil
 12402  			}
 12403  		}
 12404  	}), nil
 12405  }
 12406  
 12407  // ParseRequestCreated is a log parse operation binding the contract event 0x879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d.
 12408  //
 12409  // Solidity: event RequestCreated(uint256 requestId, address requestor, address to, uint256 weiAmount, bytes32 trieKey, bytes trieValue, bool isExit, bool userActivated)
 12410  func (_RootChainEvent *RootChainEventFilterer) ParseRequestCreated(log types.Log) (*RootChainEventRequestCreated, error) {
 12411  	event := new(RootChainEventRequestCreated)
 12412  	if err := _RootChainEvent.contract.UnpackLog(event, "RequestCreated", log); err != nil {
 12413  		return nil, err
 12414  	}
 12415  	return event, nil
 12416  }
 12417  
 12418  // RootChainEventRequestFinalizedIterator is returned from FilterRequestFinalized and is used to iterate over the raw logs and unpacked data for RequestFinalized events raised by the RootChainEvent contract.
 12419  type RootChainEventRequestFinalizedIterator struct {
 12420  	Event *RootChainEventRequestFinalized // Event containing the contract specifics and raw log
 12421  
 12422  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 12423  	event    string              // Event name to use for unpacking event data
 12424  
 12425  	logs chan types.Log        // Log channel receiving the found contract events
 12426  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 12427  	done bool                  // Whether the subscription completed delivering logs
 12428  	fail error                 // Occurred error to stop iteration
 12429  }
 12430  
 12431  // Next advances the iterator to the subsequent event, returning whether there
 12432  // are any more events found. In case of a retrieval or parsing error, false is
 12433  // returned and Error() can be queried for the exact failure.
 12434  func (it *RootChainEventRequestFinalizedIterator) Next() bool {
 12435  	// If the iterator failed, stop iterating
 12436  	if it.fail != nil {
 12437  		return false
 12438  	}
 12439  	// If the iterator completed, deliver directly whatever's available
 12440  	if it.done {
 12441  		select {
 12442  		case log := <-it.logs:
 12443  			it.Event = new(RootChainEventRequestFinalized)
 12444  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12445  				it.fail = err
 12446  				return false
 12447  			}
 12448  			it.Event.Raw = log
 12449  			return true
 12450  
 12451  		default:
 12452  			return false
 12453  		}
 12454  	}
 12455  	// Iterator still in progress, wait for either a data or an error event
 12456  	select {
 12457  	case log := <-it.logs:
 12458  		it.Event = new(RootChainEventRequestFinalized)
 12459  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12460  			it.fail = err
 12461  			return false
 12462  		}
 12463  		it.Event.Raw = log
 12464  		return true
 12465  
 12466  	case err := <-it.sub.Err():
 12467  		it.done = true
 12468  		it.fail = err
 12469  		return it.Next()
 12470  	}
 12471  }
 12472  
 12473  // Error returns any retrieval or parsing error occurred during filtering.
 12474  func (it *RootChainEventRequestFinalizedIterator) Error() error {
 12475  	return it.fail
 12476  }
 12477  
 12478  // Close terminates the iteration process, releasing any pending underlying
 12479  // resources.
 12480  func (it *RootChainEventRequestFinalizedIterator) Close() error {
 12481  	it.sub.Unsubscribe()
 12482  	return nil
 12483  }
 12484  
 12485  // RootChainEventRequestFinalized represents a RequestFinalized event raised by the RootChainEvent contract.
 12486  type RootChainEventRequestFinalized struct {
 12487  	RequestId     *big.Int
 12488  	UserActivated bool
 12489  	Raw           types.Log // Blockchain specific contextual infos
 12490  }
 12491  
 12492  // FilterRequestFinalized is a free log retrieval operation binding the contract event 0x134017cf3262b18f892ee95dde3b0aec9a80cc70a7c96f09c64bd237aceb0473.
 12493  //
 12494  // Solidity: event RequestFinalized(uint256 requestId, bool userActivated)
 12495  func (_RootChainEvent *RootChainEventFilterer) FilterRequestFinalized(opts *bind.FilterOpts) (*RootChainEventRequestFinalizedIterator, error) {
 12496  
 12497  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "RequestFinalized")
 12498  	if err != nil {
 12499  		return nil, err
 12500  	}
 12501  	return &RootChainEventRequestFinalizedIterator{contract: _RootChainEvent.contract, event: "RequestFinalized", logs: logs, sub: sub}, nil
 12502  }
 12503  
 12504  // WatchRequestFinalized is a free log subscription operation binding the contract event 0x134017cf3262b18f892ee95dde3b0aec9a80cc70a7c96f09c64bd237aceb0473.
 12505  //
 12506  // Solidity: event RequestFinalized(uint256 requestId, bool userActivated)
 12507  func (_RootChainEvent *RootChainEventFilterer) WatchRequestFinalized(opts *bind.WatchOpts, sink chan<- *RootChainEventRequestFinalized) (event.Subscription, error) {
 12508  
 12509  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "RequestFinalized")
 12510  	if err != nil {
 12511  		return nil, err
 12512  	}
 12513  	return event.NewSubscription(func(quit <-chan struct{}) error {
 12514  		defer sub.Unsubscribe()
 12515  		for {
 12516  			select {
 12517  			case log := <-logs:
 12518  				// New log arrived, parse the event and forward to the user
 12519  				event := new(RootChainEventRequestFinalized)
 12520  				if err := _RootChainEvent.contract.UnpackLog(event, "RequestFinalized", log); err != nil {
 12521  					return err
 12522  				}
 12523  				event.Raw = log
 12524  
 12525  				select {
 12526  				case sink <- event:
 12527  				case err := <-sub.Err():
 12528  					return err
 12529  				case <-quit:
 12530  					return nil
 12531  				}
 12532  			case err := <-sub.Err():
 12533  				return err
 12534  			case <-quit:
 12535  				return nil
 12536  			}
 12537  		}
 12538  	}), nil
 12539  }
 12540  
 12541  // ParseRequestFinalized is a log parse operation binding the contract event 0x134017cf3262b18f892ee95dde3b0aec9a80cc70a7c96f09c64bd237aceb0473.
 12542  //
 12543  // Solidity: event RequestFinalized(uint256 requestId, bool userActivated)
 12544  func (_RootChainEvent *RootChainEventFilterer) ParseRequestFinalized(log types.Log) (*RootChainEventRequestFinalized, error) {
 12545  	event := new(RootChainEventRequestFinalized)
 12546  	if err := _RootChainEvent.contract.UnpackLog(event, "RequestFinalized", log); err != nil {
 12547  		return nil, err
 12548  	}
 12549  	return event, nil
 12550  }
 12551  
 12552  // RootChainEventRequestableContractMappedIterator is returned from FilterRequestableContractMapped and is used to iterate over the raw logs and unpacked data for RequestableContractMapped events raised by the RootChainEvent contract.
 12553  type RootChainEventRequestableContractMappedIterator struct {
 12554  	Event *RootChainEventRequestableContractMapped // Event containing the contract specifics and raw log
 12555  
 12556  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 12557  	event    string              // Event name to use for unpacking event data
 12558  
 12559  	logs chan types.Log        // Log channel receiving the found contract events
 12560  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 12561  	done bool                  // Whether the subscription completed delivering logs
 12562  	fail error                 // Occurred error to stop iteration
 12563  }
 12564  
 12565  // Next advances the iterator to the subsequent event, returning whether there
 12566  // are any more events found. In case of a retrieval or parsing error, false is
 12567  // returned and Error() can be queried for the exact failure.
 12568  func (it *RootChainEventRequestableContractMappedIterator) Next() bool {
 12569  	// If the iterator failed, stop iterating
 12570  	if it.fail != nil {
 12571  		return false
 12572  	}
 12573  	// If the iterator completed, deliver directly whatever's available
 12574  	if it.done {
 12575  		select {
 12576  		case log := <-it.logs:
 12577  			it.Event = new(RootChainEventRequestableContractMapped)
 12578  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12579  				it.fail = err
 12580  				return false
 12581  			}
 12582  			it.Event.Raw = log
 12583  			return true
 12584  
 12585  		default:
 12586  			return false
 12587  		}
 12588  	}
 12589  	// Iterator still in progress, wait for either a data or an error event
 12590  	select {
 12591  	case log := <-it.logs:
 12592  		it.Event = new(RootChainEventRequestableContractMapped)
 12593  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12594  			it.fail = err
 12595  			return false
 12596  		}
 12597  		it.Event.Raw = log
 12598  		return true
 12599  
 12600  	case err := <-it.sub.Err():
 12601  		it.done = true
 12602  		it.fail = err
 12603  		return it.Next()
 12604  	}
 12605  }
 12606  
 12607  // Error returns any retrieval or parsing error occurred during filtering.
 12608  func (it *RootChainEventRequestableContractMappedIterator) Error() error {
 12609  	return it.fail
 12610  }
 12611  
 12612  // Close terminates the iteration process, releasing any pending underlying
 12613  // resources.
 12614  func (it *RootChainEventRequestableContractMappedIterator) Close() error {
 12615  	it.sub.Unsubscribe()
 12616  	return nil
 12617  }
 12618  
 12619  // RootChainEventRequestableContractMapped represents a RequestableContractMapped event raised by the RootChainEvent contract.
 12620  type RootChainEventRequestableContractMapped struct {
 12621  	ContractInRootchain  common.Address
 12622  	ContractInChildchain common.Address
 12623  	Raw                  types.Log // Blockchain specific contextual infos
 12624  }
 12625  
 12626  // FilterRequestableContractMapped is a free log retrieval operation binding the contract event 0xc5ec2ed49686197edd2ed642c7e6096893cc81e6658cde2527030316037715d0.
 12627  //
 12628  // Solidity: event RequestableContractMapped(address contractInRootchain, address contractInChildchain)
 12629  func (_RootChainEvent *RootChainEventFilterer) FilterRequestableContractMapped(opts *bind.FilterOpts) (*RootChainEventRequestableContractMappedIterator, error) {
 12630  
 12631  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "RequestableContractMapped")
 12632  	if err != nil {
 12633  		return nil, err
 12634  	}
 12635  	return &RootChainEventRequestableContractMappedIterator{contract: _RootChainEvent.contract, event: "RequestableContractMapped", logs: logs, sub: sub}, nil
 12636  }
 12637  
 12638  // WatchRequestableContractMapped is a free log subscription operation binding the contract event 0xc5ec2ed49686197edd2ed642c7e6096893cc81e6658cde2527030316037715d0.
 12639  //
 12640  // Solidity: event RequestableContractMapped(address contractInRootchain, address contractInChildchain)
 12641  func (_RootChainEvent *RootChainEventFilterer) WatchRequestableContractMapped(opts *bind.WatchOpts, sink chan<- *RootChainEventRequestableContractMapped) (event.Subscription, error) {
 12642  
 12643  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "RequestableContractMapped")
 12644  	if err != nil {
 12645  		return nil, err
 12646  	}
 12647  	return event.NewSubscription(func(quit <-chan struct{}) error {
 12648  		defer sub.Unsubscribe()
 12649  		for {
 12650  			select {
 12651  			case log := <-logs:
 12652  				// New log arrived, parse the event and forward to the user
 12653  				event := new(RootChainEventRequestableContractMapped)
 12654  				if err := _RootChainEvent.contract.UnpackLog(event, "RequestableContractMapped", log); err != nil {
 12655  					return err
 12656  				}
 12657  				event.Raw = log
 12658  
 12659  				select {
 12660  				case sink <- event:
 12661  				case err := <-sub.Err():
 12662  					return err
 12663  				case <-quit:
 12664  					return nil
 12665  				}
 12666  			case err := <-sub.Err():
 12667  				return err
 12668  			case <-quit:
 12669  				return nil
 12670  			}
 12671  		}
 12672  	}), nil
 12673  }
 12674  
 12675  // ParseRequestableContractMapped is a log parse operation binding the contract event 0xc5ec2ed49686197edd2ed642c7e6096893cc81e6658cde2527030316037715d0.
 12676  //
 12677  // Solidity: event RequestableContractMapped(address contractInRootchain, address contractInChildchain)
 12678  func (_RootChainEvent *RootChainEventFilterer) ParseRequestableContractMapped(log types.Log) (*RootChainEventRequestableContractMapped, error) {
 12679  	event := new(RootChainEventRequestableContractMapped)
 12680  	if err := _RootChainEvent.contract.UnpackLog(event, "RequestableContractMapped", log); err != nil {
 12681  		return nil, err
 12682  	}
 12683  	return event, nil
 12684  }
 12685  
 12686  // RootChainEventSessionTimeoutIterator is returned from FilterSessionTimeout and is used to iterate over the raw logs and unpacked data for SessionTimeout events raised by the RootChainEvent contract.
 12687  type RootChainEventSessionTimeoutIterator struct {
 12688  	Event *RootChainEventSessionTimeout // Event containing the contract specifics and raw log
 12689  
 12690  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 12691  	event    string              // Event name to use for unpacking event data
 12692  
 12693  	logs chan types.Log        // Log channel receiving the found contract events
 12694  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 12695  	done bool                  // Whether the subscription completed delivering logs
 12696  	fail error                 // Occurred error to stop iteration
 12697  }
 12698  
 12699  // Next advances the iterator to the subsequent event, returning whether there
 12700  // are any more events found. In case of a retrieval or parsing error, false is
 12701  // returned and Error() can be queried for the exact failure.
 12702  func (it *RootChainEventSessionTimeoutIterator) Next() bool {
 12703  	// If the iterator failed, stop iterating
 12704  	if it.fail != nil {
 12705  		return false
 12706  	}
 12707  	// If the iterator completed, deliver directly whatever's available
 12708  	if it.done {
 12709  		select {
 12710  		case log := <-it.logs:
 12711  			it.Event = new(RootChainEventSessionTimeout)
 12712  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12713  				it.fail = err
 12714  				return false
 12715  			}
 12716  			it.Event.Raw = log
 12717  			return true
 12718  
 12719  		default:
 12720  			return false
 12721  		}
 12722  	}
 12723  	// Iterator still in progress, wait for either a data or an error event
 12724  	select {
 12725  	case log := <-it.logs:
 12726  		it.Event = new(RootChainEventSessionTimeout)
 12727  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12728  			it.fail = err
 12729  			return false
 12730  		}
 12731  		it.Event.Raw = log
 12732  		return true
 12733  
 12734  	case err := <-it.sub.Err():
 12735  		it.done = true
 12736  		it.fail = err
 12737  		return it.Next()
 12738  	}
 12739  }
 12740  
 12741  // Error returns any retrieval or parsing error occurred during filtering.
 12742  func (it *RootChainEventSessionTimeoutIterator) Error() error {
 12743  	return it.fail
 12744  }
 12745  
 12746  // Close terminates the iteration process, releasing any pending underlying
 12747  // resources.
 12748  func (it *RootChainEventSessionTimeoutIterator) Close() error {
 12749  	it.sub.Unsubscribe()
 12750  	return nil
 12751  }
 12752  
 12753  // RootChainEventSessionTimeout represents a SessionTimeout event raised by the RootChainEvent contract.
 12754  type RootChainEventSessionTimeout struct {
 12755  	UserActivated bool
 12756  	Raw           types.Log // Blockchain specific contextual infos
 12757  }
 12758  
 12759  // FilterSessionTimeout is a free log retrieval operation binding the contract event 0x2122ec719581cd177f225f59a1ee005831211196831f8f1ccffa817d2e7bd108.
 12760  //
 12761  // Solidity: event SessionTimeout(bool userActivated)
 12762  func (_RootChainEvent *RootChainEventFilterer) FilterSessionTimeout(opts *bind.FilterOpts) (*RootChainEventSessionTimeoutIterator, error) {
 12763  
 12764  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "SessionTimeout")
 12765  	if err != nil {
 12766  		return nil, err
 12767  	}
 12768  	return &RootChainEventSessionTimeoutIterator{contract: _RootChainEvent.contract, event: "SessionTimeout", logs: logs, sub: sub}, nil
 12769  }
 12770  
 12771  // WatchSessionTimeout is a free log subscription operation binding the contract event 0x2122ec719581cd177f225f59a1ee005831211196831f8f1ccffa817d2e7bd108.
 12772  //
 12773  // Solidity: event SessionTimeout(bool userActivated)
 12774  func (_RootChainEvent *RootChainEventFilterer) WatchSessionTimeout(opts *bind.WatchOpts, sink chan<- *RootChainEventSessionTimeout) (event.Subscription, error) {
 12775  
 12776  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "SessionTimeout")
 12777  	if err != nil {
 12778  		return nil, err
 12779  	}
 12780  	return event.NewSubscription(func(quit <-chan struct{}) error {
 12781  		defer sub.Unsubscribe()
 12782  		for {
 12783  			select {
 12784  			case log := <-logs:
 12785  				// New log arrived, parse the event and forward to the user
 12786  				event := new(RootChainEventSessionTimeout)
 12787  				if err := _RootChainEvent.contract.UnpackLog(event, "SessionTimeout", log); err != nil {
 12788  					return err
 12789  				}
 12790  				event.Raw = log
 12791  
 12792  				select {
 12793  				case sink <- event:
 12794  				case err := <-sub.Err():
 12795  					return err
 12796  				case <-quit:
 12797  					return nil
 12798  				}
 12799  			case err := <-sub.Err():
 12800  				return err
 12801  			case <-quit:
 12802  				return nil
 12803  			}
 12804  		}
 12805  	}), nil
 12806  }
 12807  
 12808  // ParseSessionTimeout is a log parse operation binding the contract event 0x2122ec719581cd177f225f59a1ee005831211196831f8f1ccffa817d2e7bd108.
 12809  //
 12810  // Solidity: event SessionTimeout(bool userActivated)
 12811  func (_RootChainEvent *RootChainEventFilterer) ParseSessionTimeout(log types.Log) (*RootChainEventSessionTimeout, error) {
 12812  	event := new(RootChainEventSessionTimeout)
 12813  	if err := _RootChainEvent.contract.UnpackLog(event, "SessionTimeout", log); err != nil {
 12814  		return nil, err
 12815  	}
 12816  	return event, nil
 12817  }
 12818  
 12819  // RootChainStorageABI is the input ABI used to generate the binding from.
 12820  const RootChainStorageABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"COST_ERO\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"COST_ERU\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"COST_NRB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"COST_ORB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"COST_URB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"COST_URB_PREPARE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CP_COMPUTATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CP_EXIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"CP_WITHHOLDING\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"EROIdToFinalize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"EROs\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isExit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isTransfer\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"challenged\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"internalType\":\"addresspayable\",\"name\":\"requestor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"trieKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"trieValue\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ERUIdToFinalize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ERUs\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"isExit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isTransfer\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"finalized\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"challenged\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"internalType\":\"addresspayable\",\"name\":\"requestor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"trieKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"trieValue\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"NRELength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"NULL_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ORBs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"submitted\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"numEnter\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"epochNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestStart\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestEnd\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"trie\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"PREPARE_TIMEOUT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"REQUEST_GAS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"URBs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"submitted\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"numEnter\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"epochNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestStart\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"requestEnd\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"trie\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentFork\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"development\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"epochHandler\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"etherToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"firstFilledORENumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"firstNonEmptyRequestEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"forks\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"forkedBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"firstEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"firstBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastFinalizedEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastFinalizedBlock\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"timestamp\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"firstEnterEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastEnterEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nextBlockToRebase\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"rebased\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRootChain\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastAppliedBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastAppliedEpochNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastAppliedForkNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lastNonEmptyRequestEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"numEnterForORB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"requestableContracts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"seigManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"submitHandler\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
 12821  
 12822  // RootChainStorageFuncSigs maps the 4-byte function signature to its string representation.
 12823  var RootChainStorageFuncSigs = map[string]string{
 12824  	"d691acd8": "COST_ERO()",
 12825  	"8b5172d0": "COST_ERU()",
 12826  	"94be3aa5": "COST_NRB()",
 12827  	"b2ae9ba8": "COST_ORB()",
 12828  	"192adc5b": "COST_URB()",
 12829  	"033cfbed": "COST_URB_PREPARE()",
 12830  	"08c4fff0": "CP_COMPUTATION()",
 12831  	"8155717d": "CP_EXIT()",
 12832  	"b17fa6e9": "CP_WITHHOLDING()",
 12833  	"2dc6bb7b": "EROIdToFinalize()",
 12834  	"b443f3cc": "EROs(uint256)",
 12835  	"c54626cc": "ERUIdToFinalize()",
 12836  	"f4f31de4": "ERUs(uint256)",
 12837  	"ab96da2d": "NRELength()",
 12838  	"de0ce17d": "NULL_ADDRESS()",
 12839  	"ea7f22a8": "ORBs(uint256)",
 12840  	"c2bc88fa": "PREPARE_TIMEOUT()",
 12841  	"8eb288ca": "REQUEST_GAS()",
 12842  	"c0e86064": "URBs(uint256)",
 12843  	"183d2d1c": "currentFork()",
 12844  	"7b929c27": "development()",
 12845  	"e7b88b80": "epochHandler()",
 12846  	"b8066bcb": "etherToken()",
 12847  	"72ecb9a8": "firstFilledORENumber(uint256)",
 12848  	"ca6f6380": "firstNonEmptyRequestEpoch(uint256)",
 12849  	"4ba3a126": "forks(uint256)",
 12850  	"420bb4b8": "isRootChain()",
 12851  	"fb788a27": "lastAppliedBlockNumber()",
 12852  	"c8ad329f": "lastAppliedEpochNumber()",
 12853  	"164bc2ae": "lastAppliedForkNumber()",
 12854  	"b6715647": "lastNonEmptyRequestEpoch(uint256)",
 12855  	"23691566": "numEnterForORB()",
 12856  	"570ca735": "operator()",
 12857  	"da0185f8": "requestableContracts(address)",
 12858  	"6fb7f558": "seigManager()",
 12859  	"e259faf7": "submitHandler()",
 12860  }
 12861  
 12862  // RootChainStorageBin is the compiled bytecode used for deploying new contracts.
 12863  var RootChainStorageBin = "0x608060405234801561001057600080fd5b50610927806100206000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c8063b17fa6e911610125578063ca6f6380116100ad578063e259faf71161007c578063e259faf714610585578063e7b88b801461058d578063ea7f22a814610595578063f4f31de4146105b2578063fb788a27146105cf5761021c565b8063ca6f63801461053a578063d691acd814610221578063da0185f814610557578063de0ce17d1461057d5761021c565b8063b8066bcb116100f4578063b8066bcb146104b1578063c0e86064146104b9578063c2bc88fa14610522578063c54626cc1461052a578063c8ad329f146105325761021c565b8063b17fa6e91461037c578063b2ae9ba814610221578063b443f3cc14610384578063b6715647146104945761021c565b8063570ca735116101a85780638155717d116101775780638155717d146103645780638b5172d0146102215780638eb288ca1461036c57806394be3aa514610221578063ab96da2d146103745761021c565b8063570ca735146103135780636fb7f5581461033757806372ecb9a81461033f5780637b929c271461035c5761021c565b8063192adc5b116101ef578063192adc5b1461022157806323691566146102535780632dc6bb7b1461025b578063420bb4b8146102635780634ba3a1261461027f5761021c565b8063033cfbed1461022157806308c4fff01461023b578063164bc2ae14610243578063183d2d1c1461024b575b600080fd5b6102296105d7565b60408051918252519081900360200190f35b6102296105dc565b6102296105e1565b6102296105e7565b6102296105ed565b6102296105f3565b61026b6105f9565b604080519115158252519081900360200190f35b61029c6004803603602081101561029557600080fd5b50356105fe565b6040805167ffffffffffffffff9d8e1681529b8d1660208d0152998c168b8b0152978b1660608b0152958a1660808a015293891660a089015291881660c0880152871660e0870152861661010086015285166101208501529093166101408301529115156101608201529051908190036101800190f35b61031b610676565b604080516001600160a01b039092168252519081900360200190f35b61031b61068a565b6102296004803603602081101561035557600080fd5b5035610699565b61026b6106ab565b6102296106b4565b6102296106b9565b6102296106c0565b6102296106c6565b6103a16004803603602081101561039a57600080fd5b50356106cb565b6040805167ffffffffffffffff8d1681528b15156020808301919091528b151592820192909252891515606082015288151560808201526001600160801b03881660a08201526001600160a01b0380881660c0830152861660e082015261010081018590526101208101849052610160610140820181815284519183019190915283519192909161018084019185019080838360005b8381101561044f578181015183820152602001610437565b50505050905090810190601f16801561047c5780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060405180910390f35b610229600480360360208110156104aa57600080fd5b50356107ed565b61031b6107ff565b6104d6600480360360208110156104cf57600080fd5b503561080e565b60408051961515875267ffffffffffffffff958616602088015293851686850152918416606086015290921660808401526001600160a01b0390911660a0830152519081900360c00190f35b610229610876565b61022961087b565b610229610881565b6102296004803603602081101561055057600080fd5b5035610887565b61031b6004803603602081101561056d57600080fd5b50356001600160a01b0316610899565b61031b6105d7565b61031b6108b4565b61031b6108c3565b6104d6600480360360208110156105ab57600080fd5b50356108d2565b6103a1600480360360208110156105c857600080fd5b50356108df565b6102296108ec565b600081565b600f81565b60105481565b60065481565b600d5481565b60135481565b600181565b60086020526000908152604090208054600182015460029092015467ffffffffffffffff80831693600160401b808504831694600160801b808204851695600160c01b92839004861695858116958581048216958482048316959182900483169484841694918204841693908204169160ff9104168c565b60005461010090046001600160a01b031681565b6004546001600160a01b031681565b60076020526000908152604090205481565b60005460ff1681565b600a81565b620186a081565b60055481565b601481565b600981815481106106d857fe5b6000918252602091829020600691909102018054600180830154600280850154600386015460048701546005880180546040805161010099831615999099026000190190911695909504601f81018b90048b0288018b0190955284875267ffffffffffffffff88169a50600160401b880460ff9081169a600160481b8a0482169a600160501b8b0483169a600160581b810490931699600160601b9093046001600160801b0316986001600160a01b03908116989716969093918301828280156107e35780601f106107b8576101008083540402835291602001916107e3565b820191906000526020600020905b8154815290600101906020018083116107c657829003601f168201915b505050505090508b565b600e6020526000908152604090205481565b6003546001600160a01b031681565b600c818154811061081b57fe5b60009182526020909120600290910201805460019091015460ff8216925067ffffffffffffffff6101008304811692600160481b8104821692600160881b9091048216918116906001600160a01b03600160401b9091041686565b603c81565b60145481565b60115481565b600f6020526000908152604090205481565b6015602052600090815260409020546001600160a01b031681565b6002546001600160a01b031681565b6001546001600160a01b031681565b600b818154811061081b57fe5b600a81815481106106d857fe5b6012548156fea265627a7a7231582050fb340a9c8ce204a949c7618e67ebead6f9d9e0b47c5a41d2ac573628ef8de264736f6c634300050c0032"
 12864  
 12865  // DeployRootChainStorage deploys a new Ethereum contract, binding an instance of RootChainStorage to it.
 12866  func DeployRootChainStorage(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *RootChainStorage, error) {
 12867  	parsed, err := abi.JSON(strings.NewReader(RootChainStorageABI))
 12868  	if err != nil {
 12869  		return common.Address{}, nil, nil, err
 12870  	}
 12871  
 12872  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RootChainStorageBin), backend)
 12873  	if err != nil {
 12874  		return common.Address{}, nil, nil, err
 12875  	}
 12876  	return address, tx, &RootChainStorage{RootChainStorageCaller: RootChainStorageCaller{contract: contract}, RootChainStorageTransactor: RootChainStorageTransactor{contract: contract}, RootChainStorageFilterer: RootChainStorageFilterer{contract: contract}}, nil
 12877  }
 12878  
 12879  // RootChainStorage is an auto generated Go binding around an Ethereum contract.
 12880  type RootChainStorage struct {
 12881  	RootChainStorageCaller     // Read-only binding to the contract
 12882  	RootChainStorageTransactor // Write-only binding to the contract
 12883  	RootChainStorageFilterer   // Log filterer for contract events
 12884  }
 12885  
 12886  // RootChainStorageCaller is an auto generated read-only Go binding around an Ethereum contract.
 12887  type RootChainStorageCaller struct {
 12888  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12889  }
 12890  
 12891  // RootChainStorageTransactor is an auto generated write-only Go binding around an Ethereum contract.
 12892  type RootChainStorageTransactor struct {
 12893  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12894  }
 12895  
 12896  // RootChainStorageFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
 12897  type RootChainStorageFilterer struct {
 12898  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12899  }
 12900  
 12901  // RootChainStorageSession is an auto generated Go binding around an Ethereum contract,
 12902  // with pre-set call and transact options.
 12903  type RootChainStorageSession struct {
 12904  	Contract     *RootChainStorage // Generic contract binding to set the session for
 12905  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 12906  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 12907  }
 12908  
 12909  // RootChainStorageCallerSession is an auto generated read-only Go binding around an Ethereum contract,
 12910  // with pre-set call options.
 12911  type RootChainStorageCallerSession struct {
 12912  	Contract *RootChainStorageCaller // Generic contract caller binding to set the session for
 12913  	CallOpts bind.CallOpts           // Call options to use throughout this session
 12914  }
 12915  
 12916  // RootChainStorageTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
 12917  // with pre-set transact options.
 12918  type RootChainStorageTransactorSession struct {
 12919  	Contract     *RootChainStorageTransactor // Generic contract transactor binding to set the session for
 12920  	TransactOpts bind.TransactOpts           // Transaction auth options to use throughout this session
 12921  }
 12922  
 12923  // RootChainStorageRaw is an auto generated low-level Go binding around an Ethereum contract.
 12924  type RootChainStorageRaw struct {
 12925  	Contract *RootChainStorage // Generic contract binding to access the raw methods on
 12926  }
 12927  
 12928  // RootChainStorageCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 12929  type RootChainStorageCallerRaw struct {
 12930  	Contract *RootChainStorageCaller // Generic read-only contract binding to access the raw methods on
 12931  }
 12932  
 12933  // RootChainStorageTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 12934  type RootChainStorageTransactorRaw struct {
 12935  	Contract *RootChainStorageTransactor // Generic write-only contract binding to access the raw methods on
 12936  }
 12937  
 12938  // NewRootChainStorage creates a new instance of RootChainStorage, bound to a specific deployed contract.
 12939  func NewRootChainStorage(address common.Address, backend bind.ContractBackend) (*RootChainStorage, error) {
 12940  	contract, err := bindRootChainStorage(address, backend, backend, backend)
 12941  	if err != nil {
 12942  		return nil, err
 12943  	}
 12944  	return &RootChainStorage{RootChainStorageCaller: RootChainStorageCaller{contract: contract}, RootChainStorageTransactor: RootChainStorageTransactor{contract: contract}, RootChainStorageFilterer: RootChainStorageFilterer{contract: contract}}, nil
 12945  }
 12946  
 12947  // NewRootChainStorageCaller creates a new read-only instance of RootChainStorage, bound to a specific deployed contract.
 12948  func NewRootChainStorageCaller(address common.Address, caller bind.ContractCaller) (*RootChainStorageCaller, error) {
 12949  	contract, err := bindRootChainStorage(address, caller, nil, nil)
 12950  	if err != nil {
 12951  		return nil, err
 12952  	}
 12953  	return &RootChainStorageCaller{contract: contract}, nil
 12954  }
 12955  
 12956  // NewRootChainStorageTransactor creates a new write-only instance of RootChainStorage, bound to a specific deployed contract.
 12957  func NewRootChainStorageTransactor(address common.Address, transactor bind.ContractTransactor) (*RootChainStorageTransactor, error) {
 12958  	contract, err := bindRootChainStorage(address, nil, transactor, nil)
 12959  	if err != nil {
 12960  		return nil, err
 12961  	}
 12962  	return &RootChainStorageTransactor{contract: contract}, nil
 12963  }
 12964  
 12965  // NewRootChainStorageFilterer creates a new log filterer instance of RootChainStorage, bound to a specific deployed contract.
 12966  func NewRootChainStorageFilterer(address common.Address, filterer bind.ContractFilterer) (*RootChainStorageFilterer, error) {
 12967  	contract, err := bindRootChainStorage(address, nil, nil, filterer)
 12968  	if err != nil {
 12969  		return nil, err
 12970  	}
 12971  	return &RootChainStorageFilterer{contract: contract}, nil
 12972  }
 12973  
 12974  // bindRootChainStorage binds a generic wrapper to an already deployed contract.
 12975  func bindRootChainStorage(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 12976  	parsed, err := abi.JSON(strings.NewReader(RootChainStorageABI))
 12977  	if err != nil {
 12978  		return nil, err
 12979  	}
 12980  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 12981  }
 12982  
 12983  // Call invokes the (constant) contract method with params as input values and
 12984  // sets the output to result. The result type might be a single field for simple
 12985  // returns, a slice of interfaces for anonymous returns and a struct for named
 12986  // returns.
 12987  func (_RootChainStorage *RootChainStorageRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 12988  	return _RootChainStorage.Contract.RootChainStorageCaller.contract.Call(opts, result, method, params...)
 12989  }
 12990  
 12991  // Transfer initiates a plain transaction to move funds to the contract, calling
 12992  // its default method if one is available.
 12993  func (_RootChainStorage *RootChainStorageRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12994  	return _RootChainStorage.Contract.RootChainStorageTransactor.contract.Transfer(opts)
 12995  }
 12996  
 12997  // Transact invokes the (paid) contract method with params as input values.
 12998  func (_RootChainStorage *RootChainStorageRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12999  	return _RootChainStorage.Contract.RootChainStorageTransactor.contract.Transact(opts, method, params...)
 13000  }
 13001  
 13002  // Call invokes the (constant) contract method with params as input values and
 13003  // sets the output to result. The result type might be a single field for simple
 13004  // returns, a slice of interfaces for anonymous returns and a struct for named
 13005  // returns.
 13006  func (_RootChainStorage *RootChainStorageCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 13007  	return _RootChainStorage.Contract.contract.Call(opts, result, method, params...)
 13008  }
 13009  
 13010  // Transfer initiates a plain transaction to move funds to the contract, calling
 13011  // its default method if one is available.
 13012  func (_RootChainStorage *RootChainStorageTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 13013  	return _RootChainStorage.Contract.contract.Transfer(opts)
 13014  }
 13015  
 13016  // Transact invokes the (paid) contract method with params as input values.
 13017  func (_RootChainStorage *RootChainStorageTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 13018  	return _RootChainStorage.Contract.contract.Transact(opts, method, params...)
 13019  }
 13020  
 13021  // COSTERO is a free data retrieval call binding the contract method 0xd691acd8.
 13022  //
 13023  // Solidity: function COST_ERO() constant returns(uint256)
 13024  func (_RootChainStorage *RootChainStorageCaller) COSTERO(opts *bind.CallOpts) (*big.Int, error) {
 13025  	var (
 13026  		ret0 = new(*big.Int)
 13027  	)
 13028  	out := ret0
 13029  	err := _RootChainStorage.contract.Call(opts, out, "COST_ERO")
 13030  	return *ret0, err
 13031  }
 13032  
 13033  // COSTERO is a free data retrieval call binding the contract method 0xd691acd8.
 13034  //
 13035  // Solidity: function COST_ERO() constant returns(uint256)
 13036  func (_RootChainStorage *RootChainStorageSession) COSTERO() (*big.Int, error) {
 13037  	return _RootChainStorage.Contract.COSTERO(&_RootChainStorage.CallOpts)
 13038  }
 13039  
 13040  // COSTERO is a free data retrieval call binding the contract method 0xd691acd8.
 13041  //
 13042  // Solidity: function COST_ERO() constant returns(uint256)
 13043  func (_RootChainStorage *RootChainStorageCallerSession) COSTERO() (*big.Int, error) {
 13044  	return _RootChainStorage.Contract.COSTERO(&_RootChainStorage.CallOpts)
 13045  }
 13046  
 13047  // COSTERU is a free data retrieval call binding the contract method 0x8b5172d0.
 13048  //
 13049  // Solidity: function COST_ERU() constant returns(uint256)
 13050  func (_RootChainStorage *RootChainStorageCaller) COSTERU(opts *bind.CallOpts) (*big.Int, error) {
 13051  	var (
 13052  		ret0 = new(*big.Int)
 13053  	)
 13054  	out := ret0
 13055  	err := _RootChainStorage.contract.Call(opts, out, "COST_ERU")
 13056  	return *ret0, err
 13057  }
 13058  
 13059  // COSTERU is a free data retrieval call binding the contract method 0x8b5172d0.
 13060  //
 13061  // Solidity: function COST_ERU() constant returns(uint256)
 13062  func (_RootChainStorage *RootChainStorageSession) COSTERU() (*big.Int, error) {
 13063  	return _RootChainStorage.Contract.COSTERU(&_RootChainStorage.CallOpts)
 13064  }
 13065  
 13066  // COSTERU is a free data retrieval call binding the contract method 0x8b5172d0.
 13067  //
 13068  // Solidity: function COST_ERU() constant returns(uint256)
 13069  func (_RootChainStorage *RootChainStorageCallerSession) COSTERU() (*big.Int, error) {
 13070  	return _RootChainStorage.Contract.COSTERU(&_RootChainStorage.CallOpts)
 13071  }
 13072  
 13073  // COSTNRB is a free data retrieval call binding the contract method 0x94be3aa5.
 13074  //
 13075  // Solidity: function COST_NRB() constant returns(uint256)
 13076  func (_RootChainStorage *RootChainStorageCaller) COSTNRB(opts *bind.CallOpts) (*big.Int, error) {
 13077  	var (
 13078  		ret0 = new(*big.Int)
 13079  	)
 13080  	out := ret0
 13081  	err := _RootChainStorage.contract.Call(opts, out, "COST_NRB")
 13082  	return *ret0, err
 13083  }
 13084  
 13085  // COSTNRB is a free data retrieval call binding the contract method 0x94be3aa5.
 13086  //
 13087  // Solidity: function COST_NRB() constant returns(uint256)
 13088  func (_RootChainStorage *RootChainStorageSession) COSTNRB() (*big.Int, error) {
 13089  	return _RootChainStorage.Contract.COSTNRB(&_RootChainStorage.CallOpts)
 13090  }
 13091  
 13092  // COSTNRB is a free data retrieval call binding the contract method 0x94be3aa5.
 13093  //
 13094  // Solidity: function COST_NRB() constant returns(uint256)
 13095  func (_RootChainStorage *RootChainStorageCallerSession) COSTNRB() (*big.Int, error) {
 13096  	return _RootChainStorage.Contract.COSTNRB(&_RootChainStorage.CallOpts)
 13097  }
 13098  
 13099  // COSTORB is a free data retrieval call binding the contract method 0xb2ae9ba8.
 13100  //
 13101  // Solidity: function COST_ORB() constant returns(uint256)
 13102  func (_RootChainStorage *RootChainStorageCaller) COSTORB(opts *bind.CallOpts) (*big.Int, error) {
 13103  	var (
 13104  		ret0 = new(*big.Int)
 13105  	)
 13106  	out := ret0
 13107  	err := _RootChainStorage.contract.Call(opts, out, "COST_ORB")
 13108  	return *ret0, err
 13109  }
 13110  
 13111  // COSTORB is a free data retrieval call binding the contract method 0xb2ae9ba8.
 13112  //
 13113  // Solidity: function COST_ORB() constant returns(uint256)
 13114  func (_RootChainStorage *RootChainStorageSession) COSTORB() (*big.Int, error) {
 13115  	return _RootChainStorage.Contract.COSTORB(&_RootChainStorage.CallOpts)
 13116  }
 13117  
 13118  // COSTORB is a free data retrieval call binding the contract method 0xb2ae9ba8.
 13119  //
 13120  // Solidity: function COST_ORB() constant returns(uint256)
 13121  func (_RootChainStorage *RootChainStorageCallerSession) COSTORB() (*big.Int, error) {
 13122  	return _RootChainStorage.Contract.COSTORB(&_RootChainStorage.CallOpts)
 13123  }
 13124  
 13125  // COSTURB is a free data retrieval call binding the contract method 0x192adc5b.
 13126  //
 13127  // Solidity: function COST_URB() constant returns(uint256)
 13128  func (_RootChainStorage *RootChainStorageCaller) COSTURB(opts *bind.CallOpts) (*big.Int, error) {
 13129  	var (
 13130  		ret0 = new(*big.Int)
 13131  	)
 13132  	out := ret0
 13133  	err := _RootChainStorage.contract.Call(opts, out, "COST_URB")
 13134  	return *ret0, err
 13135  }
 13136  
 13137  // COSTURB is a free data retrieval call binding the contract method 0x192adc5b.
 13138  //
 13139  // Solidity: function COST_URB() constant returns(uint256)
 13140  func (_RootChainStorage *RootChainStorageSession) COSTURB() (*big.Int, error) {
 13141  	return _RootChainStorage.Contract.COSTURB(&_RootChainStorage.CallOpts)
 13142  }
 13143  
 13144  // COSTURB is a free data retrieval call binding the contract method 0x192adc5b.
 13145  //
 13146  // Solidity: function COST_URB() constant returns(uint256)
 13147  func (_RootChainStorage *RootChainStorageCallerSession) COSTURB() (*big.Int, error) {
 13148  	return _RootChainStorage.Contract.COSTURB(&_RootChainStorage.CallOpts)
 13149  }
 13150  
 13151  // COSTURBPREPARE is a free data retrieval call binding the contract method 0x033cfbed.
 13152  //
 13153  // Solidity: function COST_URB_PREPARE() constant returns(uint256)
 13154  func (_RootChainStorage *RootChainStorageCaller) COSTURBPREPARE(opts *bind.CallOpts) (*big.Int, error) {
 13155  	var (
 13156  		ret0 = new(*big.Int)
 13157  	)
 13158  	out := ret0
 13159  	err := _RootChainStorage.contract.Call(opts, out, "COST_URB_PREPARE")
 13160  	return *ret0, err
 13161  }
 13162  
 13163  // COSTURBPREPARE is a free data retrieval call binding the contract method 0x033cfbed.
 13164  //
 13165  // Solidity: function COST_URB_PREPARE() constant returns(uint256)
 13166  func (_RootChainStorage *RootChainStorageSession) COSTURBPREPARE() (*big.Int, error) {
 13167  	return _RootChainStorage.Contract.COSTURBPREPARE(&_RootChainStorage.CallOpts)
 13168  }
 13169  
 13170  // COSTURBPREPARE is a free data retrieval call binding the contract method 0x033cfbed.
 13171  //
 13172  // Solidity: function COST_URB_PREPARE() constant returns(uint256)
 13173  func (_RootChainStorage *RootChainStorageCallerSession) COSTURBPREPARE() (*big.Int, error) {
 13174  	return _RootChainStorage.Contract.COSTURBPREPARE(&_RootChainStorage.CallOpts)
 13175  }
 13176  
 13177  // CPCOMPUTATION is a free data retrieval call binding the contract method 0x08c4fff0.
 13178  //
 13179  // Solidity: function CP_COMPUTATION() constant returns(uint256)
 13180  func (_RootChainStorage *RootChainStorageCaller) CPCOMPUTATION(opts *bind.CallOpts) (*big.Int, error) {
 13181  	var (
 13182  		ret0 = new(*big.Int)
 13183  	)
 13184  	out := ret0
 13185  	err := _RootChainStorage.contract.Call(opts, out, "CP_COMPUTATION")
 13186  	return *ret0, err
 13187  }
 13188  
 13189  // CPCOMPUTATION is a free data retrieval call binding the contract method 0x08c4fff0.
 13190  //
 13191  // Solidity: function CP_COMPUTATION() constant returns(uint256)
 13192  func (_RootChainStorage *RootChainStorageSession) CPCOMPUTATION() (*big.Int, error) {
 13193  	return _RootChainStorage.Contract.CPCOMPUTATION(&_RootChainStorage.CallOpts)
 13194  }
 13195  
 13196  // CPCOMPUTATION is a free data retrieval call binding the contract method 0x08c4fff0.
 13197  //
 13198  // Solidity: function CP_COMPUTATION() constant returns(uint256)
 13199  func (_RootChainStorage *RootChainStorageCallerSession) CPCOMPUTATION() (*big.Int, error) {
 13200  	return _RootChainStorage.Contract.CPCOMPUTATION(&_RootChainStorage.CallOpts)
 13201  }
 13202  
 13203  // CPEXIT is a free data retrieval call binding the contract method 0x8155717d.
 13204  //
 13205  // Solidity: function CP_EXIT() constant returns(uint256)
 13206  func (_RootChainStorage *RootChainStorageCaller) CPEXIT(opts *bind.CallOpts) (*big.Int, error) {
 13207  	var (
 13208  		ret0 = new(*big.Int)
 13209  	)
 13210  	out := ret0
 13211  	err := _RootChainStorage.contract.Call(opts, out, "CP_EXIT")
 13212  	return *ret0, err
 13213  }
 13214  
 13215  // CPEXIT is a free data retrieval call binding the contract method 0x8155717d.
 13216  //
 13217  // Solidity: function CP_EXIT() constant returns(uint256)
 13218  func (_RootChainStorage *RootChainStorageSession) CPEXIT() (*big.Int, error) {
 13219  	return _RootChainStorage.Contract.CPEXIT(&_RootChainStorage.CallOpts)
 13220  }
 13221  
 13222  // CPEXIT is a free data retrieval call binding the contract method 0x8155717d.
 13223  //
 13224  // Solidity: function CP_EXIT() constant returns(uint256)
 13225  func (_RootChainStorage *RootChainStorageCallerSession) CPEXIT() (*big.Int, error) {
 13226  	return _RootChainStorage.Contract.CPEXIT(&_RootChainStorage.CallOpts)
 13227  }
 13228  
 13229  // CPWITHHOLDING is a free data retrieval call binding the contract method 0xb17fa6e9.
 13230  //
 13231  // Solidity: function CP_WITHHOLDING() constant returns(uint256)
 13232  func (_RootChainStorage *RootChainStorageCaller) CPWITHHOLDING(opts *bind.CallOpts) (*big.Int, error) {
 13233  	var (
 13234  		ret0 = new(*big.Int)
 13235  	)
 13236  	out := ret0
 13237  	err := _RootChainStorage.contract.Call(opts, out, "CP_WITHHOLDING")
 13238  	return *ret0, err
 13239  }
 13240  
 13241  // CPWITHHOLDING is a free data retrieval call binding the contract method 0xb17fa6e9.
 13242  //
 13243  // Solidity: function CP_WITHHOLDING() constant returns(uint256)
 13244  func (_RootChainStorage *RootChainStorageSession) CPWITHHOLDING() (*big.Int, error) {
 13245  	return _RootChainStorage.Contract.CPWITHHOLDING(&_RootChainStorage.CallOpts)
 13246  }
 13247  
 13248  // CPWITHHOLDING is a free data retrieval call binding the contract method 0xb17fa6e9.
 13249  //
 13250  // Solidity: function CP_WITHHOLDING() constant returns(uint256)
 13251  func (_RootChainStorage *RootChainStorageCallerSession) CPWITHHOLDING() (*big.Int, error) {
 13252  	return _RootChainStorage.Contract.CPWITHHOLDING(&_RootChainStorage.CallOpts)
 13253  }
 13254  
 13255  // EROIdToFinalize is a free data retrieval call binding the contract method 0x2dc6bb7b.
 13256  //
 13257  // Solidity: function EROIdToFinalize() constant returns(uint256)
 13258  func (_RootChainStorage *RootChainStorageCaller) EROIdToFinalize(opts *bind.CallOpts) (*big.Int, error) {
 13259  	var (
 13260  		ret0 = new(*big.Int)
 13261  	)
 13262  	out := ret0
 13263  	err := _RootChainStorage.contract.Call(opts, out, "EROIdToFinalize")
 13264  	return *ret0, err
 13265  }
 13266  
 13267  // EROIdToFinalize is a free data retrieval call binding the contract method 0x2dc6bb7b.
 13268  //
 13269  // Solidity: function EROIdToFinalize() constant returns(uint256)
 13270  func (_RootChainStorage *RootChainStorageSession) EROIdToFinalize() (*big.Int, error) {
 13271  	return _RootChainStorage.Contract.EROIdToFinalize(&_RootChainStorage.CallOpts)
 13272  }
 13273  
 13274  // EROIdToFinalize is a free data retrieval call binding the contract method 0x2dc6bb7b.
 13275  //
 13276  // Solidity: function EROIdToFinalize() constant returns(uint256)
 13277  func (_RootChainStorage *RootChainStorageCallerSession) EROIdToFinalize() (*big.Int, error) {
 13278  	return _RootChainStorage.Contract.EROIdToFinalize(&_RootChainStorage.CallOpts)
 13279  }
 13280  
 13281  // EROs is a free data retrieval call binding the contract method 0xb443f3cc.
 13282  //
 13283  // Solidity: function EROs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
 13284  func (_RootChainStorage *RootChainStorageCaller) EROs(opts *bind.CallOpts, arg0 *big.Int) (struct {
 13285  	Timestamp  uint64
 13286  	IsExit     bool
 13287  	IsTransfer bool
 13288  	Finalized  bool
 13289  	Challenged bool
 13290  	Value      *big.Int
 13291  	Requestor  common.Address
 13292  	To         common.Address
 13293  	TrieKey    [32]byte
 13294  	Hash       [32]byte
 13295  	TrieValue  []byte
 13296  }, error) {
 13297  	ret := new(struct {
 13298  		Timestamp  uint64
 13299  		IsExit     bool
 13300  		IsTransfer bool
 13301  		Finalized  bool
 13302  		Challenged bool
 13303  		Value      *big.Int
 13304  		Requestor  common.Address
 13305  		To         common.Address
 13306  		TrieKey    [32]byte
 13307  		Hash       [32]byte
 13308  		TrieValue  []byte
 13309  	})
 13310  	out := ret
 13311  	err := _RootChainStorage.contract.Call(opts, out, "EROs", arg0)
 13312  	return *ret, err
 13313  }
 13314  
 13315  // EROs is a free data retrieval call binding the contract method 0xb443f3cc.
 13316  //
 13317  // Solidity: function EROs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
 13318  func (_RootChainStorage *RootChainStorageSession) EROs(arg0 *big.Int) (struct {
 13319  	Timestamp  uint64
 13320  	IsExit     bool
 13321  	IsTransfer bool
 13322  	Finalized  bool
 13323  	Challenged bool
 13324  	Value      *big.Int
 13325  	Requestor  common.Address
 13326  	To         common.Address
 13327  	TrieKey    [32]byte
 13328  	Hash       [32]byte
 13329  	TrieValue  []byte
 13330  }, error) {
 13331  	return _RootChainStorage.Contract.EROs(&_RootChainStorage.CallOpts, arg0)
 13332  }
 13333  
 13334  // EROs is a free data retrieval call binding the contract method 0xb443f3cc.
 13335  //
 13336  // Solidity: function EROs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
 13337  func (_RootChainStorage *RootChainStorageCallerSession) EROs(arg0 *big.Int) (struct {
 13338  	Timestamp  uint64
 13339  	IsExit     bool
 13340  	IsTransfer bool
 13341  	Finalized  bool
 13342  	Challenged bool
 13343  	Value      *big.Int
 13344  	Requestor  common.Address
 13345  	To         common.Address
 13346  	TrieKey    [32]byte
 13347  	Hash       [32]byte
 13348  	TrieValue  []byte
 13349  }, error) {
 13350  	return _RootChainStorage.Contract.EROs(&_RootChainStorage.CallOpts, arg0)
 13351  }
 13352  
 13353  // ERUIdToFinalize is a free data retrieval call binding the contract method 0xc54626cc.
 13354  //
 13355  // Solidity: function ERUIdToFinalize() constant returns(uint256)
 13356  func (_RootChainStorage *RootChainStorageCaller) ERUIdToFinalize(opts *bind.CallOpts) (*big.Int, error) {
 13357  	var (
 13358  		ret0 = new(*big.Int)
 13359  	)
 13360  	out := ret0
 13361  	err := _RootChainStorage.contract.Call(opts, out, "ERUIdToFinalize")
 13362  	return *ret0, err
 13363  }
 13364  
 13365  // ERUIdToFinalize is a free data retrieval call binding the contract method 0xc54626cc.
 13366  //
 13367  // Solidity: function ERUIdToFinalize() constant returns(uint256)
 13368  func (_RootChainStorage *RootChainStorageSession) ERUIdToFinalize() (*big.Int, error) {
 13369  	return _RootChainStorage.Contract.ERUIdToFinalize(&_RootChainStorage.CallOpts)
 13370  }
 13371  
 13372  // ERUIdToFinalize is a free data retrieval call binding the contract method 0xc54626cc.
 13373  //
 13374  // Solidity: function ERUIdToFinalize() constant returns(uint256)
 13375  func (_RootChainStorage *RootChainStorageCallerSession) ERUIdToFinalize() (*big.Int, error) {
 13376  	return _RootChainStorage.Contract.ERUIdToFinalize(&_RootChainStorage.CallOpts)
 13377  }
 13378  
 13379  // ERUs is a free data retrieval call binding the contract method 0xf4f31de4.
 13380  //
 13381  // Solidity: function ERUs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
 13382  func (_RootChainStorage *RootChainStorageCaller) ERUs(opts *bind.CallOpts, arg0 *big.Int) (struct {
 13383  	Timestamp  uint64
 13384  	IsExit     bool
 13385  	IsTransfer bool
 13386  	Finalized  bool
 13387  	Challenged bool
 13388  	Value      *big.Int
 13389  	Requestor  common.Address
 13390  	To         common.Address
 13391  	TrieKey    [32]byte
 13392  	Hash       [32]byte
 13393  	TrieValue  []byte
 13394  }, error) {
 13395  	ret := new(struct {
 13396  		Timestamp  uint64
 13397  		IsExit     bool
 13398  		IsTransfer bool
 13399  		Finalized  bool
 13400  		Challenged bool
 13401  		Value      *big.Int
 13402  		Requestor  common.Address
 13403  		To         common.Address
 13404  		TrieKey    [32]byte
 13405  		Hash       [32]byte
 13406  		TrieValue  []byte
 13407  	})
 13408  	out := ret
 13409  	err := _RootChainStorage.contract.Call(opts, out, "ERUs", arg0)
 13410  	return *ret, err
 13411  }
 13412  
 13413  // ERUs is a free data retrieval call binding the contract method 0xf4f31de4.
 13414  //
 13415  // Solidity: function ERUs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
 13416  func (_RootChainStorage *RootChainStorageSession) ERUs(arg0 *big.Int) (struct {
 13417  	Timestamp  uint64
 13418  	IsExit     bool
 13419  	IsTransfer bool
 13420  	Finalized  bool
 13421  	Challenged bool
 13422  	Value      *big.Int
 13423  	Requestor  common.Address
 13424  	To         common.Address
 13425  	TrieKey    [32]byte
 13426  	Hash       [32]byte
 13427  	TrieValue  []byte
 13428  }, error) {
 13429  	return _RootChainStorage.Contract.ERUs(&_RootChainStorage.CallOpts, arg0)
 13430  }
 13431  
 13432  // ERUs is a free data retrieval call binding the contract method 0xf4f31de4.
 13433  //
 13434  // Solidity: function ERUs(uint256 ) constant returns(uint64 timestamp, bool isExit, bool isTransfer, bool finalized, bool challenged, uint128 value, address requestor, address to, bytes32 trieKey, bytes32 hash, bytes trieValue)
 13435  func (_RootChainStorage *RootChainStorageCallerSession) ERUs(arg0 *big.Int) (struct {
 13436  	Timestamp  uint64
 13437  	IsExit     bool
 13438  	IsTransfer bool
 13439  	Finalized  bool
 13440  	Challenged bool
 13441  	Value      *big.Int
 13442  	Requestor  common.Address
 13443  	To         common.Address
 13444  	TrieKey    [32]byte
 13445  	Hash       [32]byte
 13446  	TrieValue  []byte
 13447  }, error) {
 13448  	return _RootChainStorage.Contract.ERUs(&_RootChainStorage.CallOpts, arg0)
 13449  }
 13450  
 13451  // NRELength is a free data retrieval call binding the contract method 0xab96da2d.
 13452  //
 13453  // Solidity: function NRELength() constant returns(uint256)
 13454  func (_RootChainStorage *RootChainStorageCaller) NRELength(opts *bind.CallOpts) (*big.Int, error) {
 13455  	var (
 13456  		ret0 = new(*big.Int)
 13457  	)
 13458  	out := ret0
 13459  	err := _RootChainStorage.contract.Call(opts, out, "NRELength")
 13460  	return *ret0, err
 13461  }
 13462  
 13463  // NRELength is a free data retrieval call binding the contract method 0xab96da2d.
 13464  //
 13465  // Solidity: function NRELength() constant returns(uint256)
 13466  func (_RootChainStorage *RootChainStorageSession) NRELength() (*big.Int, error) {
 13467  	return _RootChainStorage.Contract.NRELength(&_RootChainStorage.CallOpts)
 13468  }
 13469  
 13470  // NRELength is a free data retrieval call binding the contract method 0xab96da2d.
 13471  //
 13472  // Solidity: function NRELength() constant returns(uint256)
 13473  func (_RootChainStorage *RootChainStorageCallerSession) NRELength() (*big.Int, error) {
 13474  	return _RootChainStorage.Contract.NRELength(&_RootChainStorage.CallOpts)
 13475  }
 13476  
 13477  // NULLADDRESS is a free data retrieval call binding the contract method 0xde0ce17d.
 13478  //
 13479  // Solidity: function NULL_ADDRESS() constant returns(address)
 13480  func (_RootChainStorage *RootChainStorageCaller) NULLADDRESS(opts *bind.CallOpts) (common.Address, error) {
 13481  	var (
 13482  		ret0 = new(common.Address)
 13483  	)
 13484  	out := ret0
 13485  	err := _RootChainStorage.contract.Call(opts, out, "NULL_ADDRESS")
 13486  	return *ret0, err
 13487  }
 13488  
 13489  // NULLADDRESS is a free data retrieval call binding the contract method 0xde0ce17d.
 13490  //
 13491  // Solidity: function NULL_ADDRESS() constant returns(address)
 13492  func (_RootChainStorage *RootChainStorageSession) NULLADDRESS() (common.Address, error) {
 13493  	return _RootChainStorage.Contract.NULLADDRESS(&_RootChainStorage.CallOpts)
 13494  }
 13495  
 13496  // NULLADDRESS is a free data retrieval call binding the contract method 0xde0ce17d.
 13497  //
 13498  // Solidity: function NULL_ADDRESS() constant returns(address)
 13499  func (_RootChainStorage *RootChainStorageCallerSession) NULLADDRESS() (common.Address, error) {
 13500  	return _RootChainStorage.Contract.NULLADDRESS(&_RootChainStorage.CallOpts)
 13501  }
 13502  
 13503  // ORBs is a free data retrieval call binding the contract method 0xea7f22a8.
 13504  //
 13505  // Solidity: function ORBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
 13506  func (_RootChainStorage *RootChainStorageCaller) ORBs(opts *bind.CallOpts, arg0 *big.Int) (struct {
 13507  	Submitted    bool
 13508  	NumEnter     uint64
 13509  	EpochNumber  uint64
 13510  	RequestStart uint64
 13511  	RequestEnd   uint64
 13512  	Trie         common.Address
 13513  }, error) {
 13514  	ret := new(struct {
 13515  		Submitted    bool
 13516  		NumEnter     uint64
 13517  		EpochNumber  uint64
 13518  		RequestStart uint64
 13519  		RequestEnd   uint64
 13520  		Trie         common.Address
 13521  	})
 13522  	out := ret
 13523  	err := _RootChainStorage.contract.Call(opts, out, "ORBs", arg0)
 13524  	return *ret, err
 13525  }
 13526  
 13527  // ORBs is a free data retrieval call binding the contract method 0xea7f22a8.
 13528  //
 13529  // Solidity: function ORBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
 13530  func (_RootChainStorage *RootChainStorageSession) ORBs(arg0 *big.Int) (struct {
 13531  	Submitted    bool
 13532  	NumEnter     uint64
 13533  	EpochNumber  uint64
 13534  	RequestStart uint64
 13535  	RequestEnd   uint64
 13536  	Trie         common.Address
 13537  }, error) {
 13538  	return _RootChainStorage.Contract.ORBs(&_RootChainStorage.CallOpts, arg0)
 13539  }
 13540  
 13541  // ORBs is a free data retrieval call binding the contract method 0xea7f22a8.
 13542  //
 13543  // Solidity: function ORBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
 13544  func (_RootChainStorage *RootChainStorageCallerSession) ORBs(arg0 *big.Int) (struct {
 13545  	Submitted    bool
 13546  	NumEnter     uint64
 13547  	EpochNumber  uint64
 13548  	RequestStart uint64
 13549  	RequestEnd   uint64
 13550  	Trie         common.Address
 13551  }, error) {
 13552  	return _RootChainStorage.Contract.ORBs(&_RootChainStorage.CallOpts, arg0)
 13553  }
 13554  
 13555  // PREPARETIMEOUT is a free data retrieval call binding the contract method 0xc2bc88fa.
 13556  //
 13557  // Solidity: function PREPARE_TIMEOUT() constant returns(uint256)
 13558  func (_RootChainStorage *RootChainStorageCaller) PREPARETIMEOUT(opts *bind.CallOpts) (*big.Int, error) {
 13559  	var (
 13560  		ret0 = new(*big.Int)
 13561  	)
 13562  	out := ret0
 13563  	err := _RootChainStorage.contract.Call(opts, out, "PREPARE_TIMEOUT")
 13564  	return *ret0, err
 13565  }
 13566  
 13567  // PREPARETIMEOUT is a free data retrieval call binding the contract method 0xc2bc88fa.
 13568  //
 13569  // Solidity: function PREPARE_TIMEOUT() constant returns(uint256)
 13570  func (_RootChainStorage *RootChainStorageSession) PREPARETIMEOUT() (*big.Int, error) {
 13571  	return _RootChainStorage.Contract.PREPARETIMEOUT(&_RootChainStorage.CallOpts)
 13572  }
 13573  
 13574  // PREPARETIMEOUT is a free data retrieval call binding the contract method 0xc2bc88fa.
 13575  //
 13576  // Solidity: function PREPARE_TIMEOUT() constant returns(uint256)
 13577  func (_RootChainStorage *RootChainStorageCallerSession) PREPARETIMEOUT() (*big.Int, error) {
 13578  	return _RootChainStorage.Contract.PREPARETIMEOUT(&_RootChainStorage.CallOpts)
 13579  }
 13580  
 13581  // REQUESTGAS is a free data retrieval call binding the contract method 0x8eb288ca.
 13582  //
 13583  // Solidity: function REQUEST_GAS() constant returns(uint256)
 13584  func (_RootChainStorage *RootChainStorageCaller) REQUESTGAS(opts *bind.CallOpts) (*big.Int, error) {
 13585  	var (
 13586  		ret0 = new(*big.Int)
 13587  	)
 13588  	out := ret0
 13589  	err := _RootChainStorage.contract.Call(opts, out, "REQUEST_GAS")
 13590  	return *ret0, err
 13591  }
 13592  
 13593  // REQUESTGAS is a free data retrieval call binding the contract method 0x8eb288ca.
 13594  //
 13595  // Solidity: function REQUEST_GAS() constant returns(uint256)
 13596  func (_RootChainStorage *RootChainStorageSession) REQUESTGAS() (*big.Int, error) {
 13597  	return _RootChainStorage.Contract.REQUESTGAS(&_RootChainStorage.CallOpts)
 13598  }
 13599  
 13600  // REQUESTGAS is a free data retrieval call binding the contract method 0x8eb288ca.
 13601  //
 13602  // Solidity: function REQUEST_GAS() constant returns(uint256)
 13603  func (_RootChainStorage *RootChainStorageCallerSession) REQUESTGAS() (*big.Int, error) {
 13604  	return _RootChainStorage.Contract.REQUESTGAS(&_RootChainStorage.CallOpts)
 13605  }
 13606  
 13607  // URBs is a free data retrieval call binding the contract method 0xc0e86064.
 13608  //
 13609  // Solidity: function URBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
 13610  func (_RootChainStorage *RootChainStorageCaller) URBs(opts *bind.CallOpts, arg0 *big.Int) (struct {
 13611  	Submitted    bool
 13612  	NumEnter     uint64
 13613  	EpochNumber  uint64
 13614  	RequestStart uint64
 13615  	RequestEnd   uint64
 13616  	Trie         common.Address
 13617  }, error) {
 13618  	ret := new(struct {
 13619  		Submitted    bool
 13620  		NumEnter     uint64
 13621  		EpochNumber  uint64
 13622  		RequestStart uint64
 13623  		RequestEnd   uint64
 13624  		Trie         common.Address
 13625  	})
 13626  	out := ret
 13627  	err := _RootChainStorage.contract.Call(opts, out, "URBs", arg0)
 13628  	return *ret, err
 13629  }
 13630  
 13631  // URBs is a free data retrieval call binding the contract method 0xc0e86064.
 13632  //
 13633  // Solidity: function URBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
 13634  func (_RootChainStorage *RootChainStorageSession) URBs(arg0 *big.Int) (struct {
 13635  	Submitted    bool
 13636  	NumEnter     uint64
 13637  	EpochNumber  uint64
 13638  	RequestStart uint64
 13639  	RequestEnd   uint64
 13640  	Trie         common.Address
 13641  }, error) {
 13642  	return _RootChainStorage.Contract.URBs(&_RootChainStorage.CallOpts, arg0)
 13643  }
 13644  
 13645  // URBs is a free data retrieval call binding the contract method 0xc0e86064.
 13646  //
 13647  // Solidity: function URBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
 13648  func (_RootChainStorage *RootChainStorageCallerSession) URBs(arg0 *big.Int) (struct {
 13649  	Submitted    bool
 13650  	NumEnter     uint64
 13651  	EpochNumber  uint64
 13652  	RequestStart uint64
 13653  	RequestEnd   uint64
 13654  	Trie         common.Address
 13655  }, error) {
 13656  	return _RootChainStorage.Contract.URBs(&_RootChainStorage.CallOpts, arg0)
 13657  }
 13658  
 13659  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
 13660  //
 13661  // Solidity: function currentFork() constant returns(uint256)
 13662  func (_RootChainStorage *RootChainStorageCaller) CurrentFork(opts *bind.CallOpts) (*big.Int, error) {
 13663  	var (
 13664  		ret0 = new(*big.Int)
 13665  	)
 13666  	out := ret0
 13667  	err := _RootChainStorage.contract.Call(opts, out, "currentFork")
 13668  	return *ret0, err
 13669  }
 13670  
 13671  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
 13672  //
 13673  // Solidity: function currentFork() constant returns(uint256)
 13674  func (_RootChainStorage *RootChainStorageSession) CurrentFork() (*big.Int, error) {
 13675  	return _RootChainStorage.Contract.CurrentFork(&_RootChainStorage.CallOpts)
 13676  }
 13677  
 13678  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
 13679  //
 13680  // Solidity: function currentFork() constant returns(uint256)
 13681  func (_RootChainStorage *RootChainStorageCallerSession) CurrentFork() (*big.Int, error) {
 13682  	return _RootChainStorage.Contract.CurrentFork(&_RootChainStorage.CallOpts)
 13683  }
 13684  
 13685  // Development is a free data retrieval call binding the contract method 0x7b929c27.
 13686  //
 13687  // Solidity: function development() constant returns(bool)
 13688  func (_RootChainStorage *RootChainStorageCaller) Development(opts *bind.CallOpts) (bool, error) {
 13689  	var (
 13690  		ret0 = new(bool)
 13691  	)
 13692  	out := ret0
 13693  	err := _RootChainStorage.contract.Call(opts, out, "development")
 13694  	return *ret0, err
 13695  }
 13696  
 13697  // Development is a free data retrieval call binding the contract method 0x7b929c27.
 13698  //
 13699  // Solidity: function development() constant returns(bool)
 13700  func (_RootChainStorage *RootChainStorageSession) Development() (bool, error) {
 13701  	return _RootChainStorage.Contract.Development(&_RootChainStorage.CallOpts)
 13702  }
 13703  
 13704  // Development is a free data retrieval call binding the contract method 0x7b929c27.
 13705  //
 13706  // Solidity: function development() constant returns(bool)
 13707  func (_RootChainStorage *RootChainStorageCallerSession) Development() (bool, error) {
 13708  	return _RootChainStorage.Contract.Development(&_RootChainStorage.CallOpts)
 13709  }
 13710  
 13711  // EpochHandler is a free data retrieval call binding the contract method 0xe7b88b80.
 13712  //
 13713  // Solidity: function epochHandler() constant returns(address)
 13714  func (_RootChainStorage *RootChainStorageCaller) EpochHandler(opts *bind.CallOpts) (common.Address, error) {
 13715  	var (
 13716  		ret0 = new(common.Address)
 13717  	)
 13718  	out := ret0
 13719  	err := _RootChainStorage.contract.Call(opts, out, "epochHandler")
 13720  	return *ret0, err
 13721  }
 13722  
 13723  // EpochHandler is a free data retrieval call binding the contract method 0xe7b88b80.
 13724  //
 13725  // Solidity: function epochHandler() constant returns(address)
 13726  func (_RootChainStorage *RootChainStorageSession) EpochHandler() (common.Address, error) {
 13727  	return _RootChainStorage.Contract.EpochHandler(&_RootChainStorage.CallOpts)
 13728  }
 13729  
 13730  // EpochHandler is a free data retrieval call binding the contract method 0xe7b88b80.
 13731  //
 13732  // Solidity: function epochHandler() constant returns(address)
 13733  func (_RootChainStorage *RootChainStorageCallerSession) EpochHandler() (common.Address, error) {
 13734  	return _RootChainStorage.Contract.EpochHandler(&_RootChainStorage.CallOpts)
 13735  }
 13736  
 13737  // EtherToken is a free data retrieval call binding the contract method 0xb8066bcb.
 13738  //
 13739  // Solidity: function etherToken() constant returns(address)
 13740  func (_RootChainStorage *RootChainStorageCaller) EtherToken(opts *bind.CallOpts) (common.Address, error) {
 13741  	var (
 13742  		ret0 = new(common.Address)
 13743  	)
 13744  	out := ret0
 13745  	err := _RootChainStorage.contract.Call(opts, out, "etherToken")
 13746  	return *ret0, err
 13747  }
 13748  
 13749  // EtherToken is a free data retrieval call binding the contract method 0xb8066bcb.
 13750  //
 13751  // Solidity: function etherToken() constant returns(address)
 13752  func (_RootChainStorage *RootChainStorageSession) EtherToken() (common.Address, error) {
 13753  	return _RootChainStorage.Contract.EtherToken(&_RootChainStorage.CallOpts)
 13754  }
 13755  
 13756  // EtherToken is a free data retrieval call binding the contract method 0xb8066bcb.
 13757  //
 13758  // Solidity: function etherToken() constant returns(address)
 13759  func (_RootChainStorage *RootChainStorageCallerSession) EtherToken() (common.Address, error) {
 13760  	return _RootChainStorage.Contract.EtherToken(&_RootChainStorage.CallOpts)
 13761  }
 13762  
 13763  // FirstFilledORENumber is a free data retrieval call binding the contract method 0x72ecb9a8.
 13764  //
 13765  // Solidity: function firstFilledORENumber(uint256 ) constant returns(uint256)
 13766  func (_RootChainStorage *RootChainStorageCaller) FirstFilledORENumber(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
 13767  	var (
 13768  		ret0 = new(*big.Int)
 13769  	)
 13770  	out := ret0
 13771  	err := _RootChainStorage.contract.Call(opts, out, "firstFilledORENumber", arg0)
 13772  	return *ret0, err
 13773  }
 13774  
 13775  // FirstFilledORENumber is a free data retrieval call binding the contract method 0x72ecb9a8.
 13776  //
 13777  // Solidity: function firstFilledORENumber(uint256 ) constant returns(uint256)
 13778  func (_RootChainStorage *RootChainStorageSession) FirstFilledORENumber(arg0 *big.Int) (*big.Int, error) {
 13779  	return _RootChainStorage.Contract.FirstFilledORENumber(&_RootChainStorage.CallOpts, arg0)
 13780  }
 13781  
 13782  // FirstFilledORENumber is a free data retrieval call binding the contract method 0x72ecb9a8.
 13783  //
 13784  // Solidity: function firstFilledORENumber(uint256 ) constant returns(uint256)
 13785  func (_RootChainStorage *RootChainStorageCallerSession) FirstFilledORENumber(arg0 *big.Int) (*big.Int, error) {
 13786  	return _RootChainStorage.Contract.FirstFilledORENumber(&_RootChainStorage.CallOpts, arg0)
 13787  }
 13788  
 13789  // FirstNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xca6f6380.
 13790  //
 13791  // Solidity: function firstNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
 13792  func (_RootChainStorage *RootChainStorageCaller) FirstNonEmptyRequestEpoch(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
 13793  	var (
 13794  		ret0 = new(*big.Int)
 13795  	)
 13796  	out := ret0
 13797  	err := _RootChainStorage.contract.Call(opts, out, "firstNonEmptyRequestEpoch", arg0)
 13798  	return *ret0, err
 13799  }
 13800  
 13801  // FirstNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xca6f6380.
 13802  //
 13803  // Solidity: function firstNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
 13804  func (_RootChainStorage *RootChainStorageSession) FirstNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
 13805  	return _RootChainStorage.Contract.FirstNonEmptyRequestEpoch(&_RootChainStorage.CallOpts, arg0)
 13806  }
 13807  
 13808  // FirstNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xca6f6380.
 13809  //
 13810  // Solidity: function firstNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
 13811  func (_RootChainStorage *RootChainStorageCallerSession) FirstNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
 13812  	return _RootChainStorage.Contract.FirstNonEmptyRequestEpoch(&_RootChainStorage.CallOpts, arg0)
 13813  }
 13814  
 13815  // Forks is a free data retrieval call binding the contract method 0x4ba3a126.
 13816  //
 13817  // Solidity: function forks(uint256 ) constant returns(uint64 forkedBlock, uint64 firstEpoch, uint64 lastEpoch, uint64 firstBlock, uint64 lastBlock, uint64 lastFinalizedEpoch, uint64 lastFinalizedBlock, uint64 timestamp, uint64 firstEnterEpoch, uint64 lastEnterEpoch, uint64 nextBlockToRebase, bool rebased)
 13818  func (_RootChainStorage *RootChainStorageCaller) Forks(opts *bind.CallOpts, arg0 *big.Int) (struct {
 13819  	ForkedBlock        uint64
 13820  	FirstEpoch         uint64
 13821  	LastEpoch          uint64
 13822  	FirstBlock         uint64
 13823  	LastBlock          uint64
 13824  	LastFinalizedEpoch uint64
 13825  	LastFinalizedBlock uint64
 13826  	Timestamp          uint64
 13827  	FirstEnterEpoch    uint64
 13828  	LastEnterEpoch     uint64
 13829  	NextBlockToRebase  uint64
 13830  	Rebased            bool
 13831  }, error) {
 13832  	ret := new(struct {
 13833  		ForkedBlock        uint64
 13834  		FirstEpoch         uint64
 13835  		LastEpoch          uint64
 13836  		FirstBlock         uint64
 13837  		LastBlock          uint64
 13838  		LastFinalizedEpoch uint64
 13839  		LastFinalizedBlock uint64
 13840  		Timestamp          uint64
 13841  		FirstEnterEpoch    uint64
 13842  		LastEnterEpoch     uint64
 13843  		NextBlockToRebase  uint64
 13844  		Rebased            bool
 13845  	})
 13846  	out := ret
 13847  	err := _RootChainStorage.contract.Call(opts, out, "forks", arg0)
 13848  	return *ret, err
 13849  }
 13850  
 13851  // Forks is a free data retrieval call binding the contract method 0x4ba3a126.
 13852  //
 13853  // Solidity: function forks(uint256 ) constant returns(uint64 forkedBlock, uint64 firstEpoch, uint64 lastEpoch, uint64 firstBlock, uint64 lastBlock, uint64 lastFinalizedEpoch, uint64 lastFinalizedBlock, uint64 timestamp, uint64 firstEnterEpoch, uint64 lastEnterEpoch, uint64 nextBlockToRebase, bool rebased)
 13854  func (_RootChainStorage *RootChainStorageSession) Forks(arg0 *big.Int) (struct {
 13855  	ForkedBlock        uint64
 13856  	FirstEpoch         uint64
 13857  	LastEpoch          uint64
 13858  	FirstBlock         uint64
 13859  	LastBlock          uint64
 13860  	LastFinalizedEpoch uint64
 13861  	LastFinalizedBlock uint64
 13862  	Timestamp          uint64
 13863  	FirstEnterEpoch    uint64
 13864  	LastEnterEpoch     uint64
 13865  	NextBlockToRebase  uint64
 13866  	Rebased            bool
 13867  }, error) {
 13868  	return _RootChainStorage.Contract.Forks(&_RootChainStorage.CallOpts, arg0)
 13869  }
 13870  
 13871  // Forks is a free data retrieval call binding the contract method 0x4ba3a126.
 13872  //
 13873  // Solidity: function forks(uint256 ) constant returns(uint64 forkedBlock, uint64 firstEpoch, uint64 lastEpoch, uint64 firstBlock, uint64 lastBlock, uint64 lastFinalizedEpoch, uint64 lastFinalizedBlock, uint64 timestamp, uint64 firstEnterEpoch, uint64 lastEnterEpoch, uint64 nextBlockToRebase, bool rebased)
 13874  func (_RootChainStorage *RootChainStorageCallerSession) Forks(arg0 *big.Int) (struct {
 13875  	ForkedBlock        uint64
 13876  	FirstEpoch         uint64
 13877  	LastEpoch          uint64
 13878  	FirstBlock         uint64
 13879  	LastBlock          uint64
 13880  	LastFinalizedEpoch uint64
 13881  	LastFinalizedBlock uint64
 13882  	Timestamp          uint64
 13883  	FirstEnterEpoch    uint64
 13884  	LastEnterEpoch     uint64
 13885  	NextBlockToRebase  uint64
 13886  	Rebased            bool
 13887  }, error) {
 13888  	return _RootChainStorage.Contract.Forks(&_RootChainStorage.CallOpts, arg0)
 13889  }
 13890  
 13891  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
 13892  //
 13893  // Solidity: function isRootChain() constant returns(bool)
 13894  func (_RootChainStorage *RootChainStorageCaller) IsRootChain(opts *bind.CallOpts) (bool, error) {
 13895  	var (
 13896  		ret0 = new(bool)
 13897  	)
 13898  	out := ret0
 13899  	err := _RootChainStorage.contract.Call(opts, out, "isRootChain")
 13900  	return *ret0, err
 13901  }
 13902  
 13903  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
 13904  //
 13905  // Solidity: function isRootChain() constant returns(bool)
 13906  func (_RootChainStorage *RootChainStorageSession) IsRootChain() (bool, error) {
 13907  	return _RootChainStorage.Contract.IsRootChain(&_RootChainStorage.CallOpts)
 13908  }
 13909  
 13910  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
 13911  //
 13912  // Solidity: function isRootChain() constant returns(bool)
 13913  func (_RootChainStorage *RootChainStorageCallerSession) IsRootChain() (bool, error) {
 13914  	return _RootChainStorage.Contract.IsRootChain(&_RootChainStorage.CallOpts)
 13915  }
 13916  
 13917  // LastAppliedBlockNumber is a free data retrieval call binding the contract method 0xfb788a27.
 13918  //
 13919  // Solidity: function lastAppliedBlockNumber() constant returns(uint256)
 13920  func (_RootChainStorage *RootChainStorageCaller) LastAppliedBlockNumber(opts *bind.CallOpts) (*big.Int, error) {
 13921  	var (
 13922  		ret0 = new(*big.Int)
 13923  	)
 13924  	out := ret0
 13925  	err := _RootChainStorage.contract.Call(opts, out, "lastAppliedBlockNumber")
 13926  	return *ret0, err
 13927  }
 13928  
 13929  // LastAppliedBlockNumber is a free data retrieval call binding the contract method 0xfb788a27.
 13930  //
 13931  // Solidity: function lastAppliedBlockNumber() constant returns(uint256)
 13932  func (_RootChainStorage *RootChainStorageSession) LastAppliedBlockNumber() (*big.Int, error) {
 13933  	return _RootChainStorage.Contract.LastAppliedBlockNumber(&_RootChainStorage.CallOpts)
 13934  }
 13935  
 13936  // LastAppliedBlockNumber is a free data retrieval call binding the contract method 0xfb788a27.
 13937  //
 13938  // Solidity: function lastAppliedBlockNumber() constant returns(uint256)
 13939  func (_RootChainStorage *RootChainStorageCallerSession) LastAppliedBlockNumber() (*big.Int, error) {
 13940  	return _RootChainStorage.Contract.LastAppliedBlockNumber(&_RootChainStorage.CallOpts)
 13941  }
 13942  
 13943  // LastAppliedEpochNumber is a free data retrieval call binding the contract method 0xc8ad329f.
 13944  //
 13945  // Solidity: function lastAppliedEpochNumber() constant returns(uint256)
 13946  func (_RootChainStorage *RootChainStorageCaller) LastAppliedEpochNumber(opts *bind.CallOpts) (*big.Int, error) {
 13947  	var (
 13948  		ret0 = new(*big.Int)
 13949  	)
 13950  	out := ret0
 13951  	err := _RootChainStorage.contract.Call(opts, out, "lastAppliedEpochNumber")
 13952  	return *ret0, err
 13953  }
 13954  
 13955  // LastAppliedEpochNumber is a free data retrieval call binding the contract method 0xc8ad329f.
 13956  //
 13957  // Solidity: function lastAppliedEpochNumber() constant returns(uint256)
 13958  func (_RootChainStorage *RootChainStorageSession) LastAppliedEpochNumber() (*big.Int, error) {
 13959  	return _RootChainStorage.Contract.LastAppliedEpochNumber(&_RootChainStorage.CallOpts)
 13960  }
 13961  
 13962  // LastAppliedEpochNumber is a free data retrieval call binding the contract method 0xc8ad329f.
 13963  //
 13964  // Solidity: function lastAppliedEpochNumber() constant returns(uint256)
 13965  func (_RootChainStorage *RootChainStorageCallerSession) LastAppliedEpochNumber() (*big.Int, error) {
 13966  	return _RootChainStorage.Contract.LastAppliedEpochNumber(&_RootChainStorage.CallOpts)
 13967  }
 13968  
 13969  // LastAppliedForkNumber is a free data retrieval call binding the contract method 0x164bc2ae.
 13970  //
 13971  // Solidity: function lastAppliedForkNumber() constant returns(uint256)
 13972  func (_RootChainStorage *RootChainStorageCaller) LastAppliedForkNumber(opts *bind.CallOpts) (*big.Int, error) {
 13973  	var (
 13974  		ret0 = new(*big.Int)
 13975  	)
 13976  	out := ret0
 13977  	err := _RootChainStorage.contract.Call(opts, out, "lastAppliedForkNumber")
 13978  	return *ret0, err
 13979  }
 13980  
 13981  // LastAppliedForkNumber is a free data retrieval call binding the contract method 0x164bc2ae.
 13982  //
 13983  // Solidity: function lastAppliedForkNumber() constant returns(uint256)
 13984  func (_RootChainStorage *RootChainStorageSession) LastAppliedForkNumber() (*big.Int, error) {
 13985  	return _RootChainStorage.Contract.LastAppliedForkNumber(&_RootChainStorage.CallOpts)
 13986  }
 13987  
 13988  // LastAppliedForkNumber is a free data retrieval call binding the contract method 0x164bc2ae.
 13989  //
 13990  // Solidity: function lastAppliedForkNumber() constant returns(uint256)
 13991  func (_RootChainStorage *RootChainStorageCallerSession) LastAppliedForkNumber() (*big.Int, error) {
 13992  	return _RootChainStorage.Contract.LastAppliedForkNumber(&_RootChainStorage.CallOpts)
 13993  }
 13994  
 13995  // LastNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xb6715647.
 13996  //
 13997  // Solidity: function lastNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
 13998  func (_RootChainStorage *RootChainStorageCaller) LastNonEmptyRequestEpoch(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
 13999  	var (
 14000  		ret0 = new(*big.Int)
 14001  	)
 14002  	out := ret0
 14003  	err := _RootChainStorage.contract.Call(opts, out, "lastNonEmptyRequestEpoch", arg0)
 14004  	return *ret0, err
 14005  }
 14006  
 14007  // LastNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xb6715647.
 14008  //
 14009  // Solidity: function lastNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
 14010  func (_RootChainStorage *RootChainStorageSession) LastNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
 14011  	return _RootChainStorage.Contract.LastNonEmptyRequestEpoch(&_RootChainStorage.CallOpts, arg0)
 14012  }
 14013  
 14014  // LastNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xb6715647.
 14015  //
 14016  // Solidity: function lastNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
 14017  func (_RootChainStorage *RootChainStorageCallerSession) LastNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
 14018  	return _RootChainStorage.Contract.LastNonEmptyRequestEpoch(&_RootChainStorage.CallOpts, arg0)
 14019  }
 14020  
 14021  // NumEnterForORB is a free data retrieval call binding the contract method 0x23691566.
 14022  //
 14023  // Solidity: function numEnterForORB() constant returns(uint256)
 14024  func (_RootChainStorage *RootChainStorageCaller) NumEnterForORB(opts *bind.CallOpts) (*big.Int, error) {
 14025  	var (
 14026  		ret0 = new(*big.Int)
 14027  	)
 14028  	out := ret0
 14029  	err := _RootChainStorage.contract.Call(opts, out, "numEnterForORB")
 14030  	return *ret0, err
 14031  }
 14032  
 14033  // NumEnterForORB is a free data retrieval call binding the contract method 0x23691566.
 14034  //
 14035  // Solidity: function numEnterForORB() constant returns(uint256)
 14036  func (_RootChainStorage *RootChainStorageSession) NumEnterForORB() (*big.Int, error) {
 14037  	return _RootChainStorage.Contract.NumEnterForORB(&_RootChainStorage.CallOpts)
 14038  }
 14039  
 14040  // NumEnterForORB is a free data retrieval call binding the contract method 0x23691566.
 14041  //
 14042  // Solidity: function numEnterForORB() constant returns(uint256)
 14043  func (_RootChainStorage *RootChainStorageCallerSession) NumEnterForORB() (*big.Int, error) {
 14044  	return _RootChainStorage.Contract.NumEnterForORB(&_RootChainStorage.CallOpts)
 14045  }
 14046  
 14047  // Operator is a free data retrieval call binding the contract method 0x570ca735.
 14048  //
 14049  // Solidity: function operator() constant returns(address)
 14050  func (_RootChainStorage *RootChainStorageCaller) Operator(opts *bind.CallOpts) (common.Address, error) {
 14051  	var (
 14052  		ret0 = new(common.Address)
 14053  	)
 14054  	out := ret0
 14055  	err := _RootChainStorage.contract.Call(opts, out, "operator")
 14056  	return *ret0, err
 14057  }
 14058  
 14059  // Operator is a free data retrieval call binding the contract method 0x570ca735.
 14060  //
 14061  // Solidity: function operator() constant returns(address)
 14062  func (_RootChainStorage *RootChainStorageSession) Operator() (common.Address, error) {
 14063  	return _RootChainStorage.Contract.Operator(&_RootChainStorage.CallOpts)
 14064  }
 14065  
 14066  // Operator is a free data retrieval call binding the contract method 0x570ca735.
 14067  //
 14068  // Solidity: function operator() constant returns(address)
 14069  func (_RootChainStorage *RootChainStorageCallerSession) Operator() (common.Address, error) {
 14070  	return _RootChainStorage.Contract.Operator(&_RootChainStorage.CallOpts)
 14071  }
 14072  
 14073  // RequestableContracts is a free data retrieval call binding the contract method 0xda0185f8.
 14074  //
 14075  // Solidity: function requestableContracts(address ) constant returns(address)
 14076  func (_RootChainStorage *RootChainStorageCaller) RequestableContracts(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
 14077  	var (
 14078  		ret0 = new(common.Address)
 14079  	)
 14080  	out := ret0
 14081  	err := _RootChainStorage.contract.Call(opts, out, "requestableContracts", arg0)
 14082  	return *ret0, err
 14083  }
 14084  
 14085  // RequestableContracts is a free data retrieval call binding the contract method 0xda0185f8.
 14086  //
 14087  // Solidity: function requestableContracts(address ) constant returns(address)
 14088  func (_RootChainStorage *RootChainStorageSession) RequestableContracts(arg0 common.Address) (common.Address, error) {
 14089  	return _RootChainStorage.Contract.RequestableContracts(&_RootChainStorage.CallOpts, arg0)
 14090  }
 14091  
 14092  // RequestableContracts is a free data retrieval call binding the contract method 0xda0185f8.
 14093  //
 14094  // Solidity: function requestableContracts(address ) constant returns(address)
 14095  func (_RootChainStorage *RootChainStorageCallerSession) RequestableContracts(arg0 common.Address) (common.Address, error) {
 14096  	return _RootChainStorage.Contract.RequestableContracts(&_RootChainStorage.CallOpts, arg0)
 14097  }
 14098  
 14099  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 14100  //
 14101  // Solidity: function seigManager() constant returns(address)
 14102  func (_RootChainStorage *RootChainStorageCaller) SeigManager(opts *bind.CallOpts) (common.Address, error) {
 14103  	var (
 14104  		ret0 = new(common.Address)
 14105  	)
 14106  	out := ret0
 14107  	err := _RootChainStorage.contract.Call(opts, out, "seigManager")
 14108  	return *ret0, err
 14109  }
 14110  
 14111  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 14112  //
 14113  // Solidity: function seigManager() constant returns(address)
 14114  func (_RootChainStorage *RootChainStorageSession) SeigManager() (common.Address, error) {
 14115  	return _RootChainStorage.Contract.SeigManager(&_RootChainStorage.CallOpts)
 14116  }
 14117  
 14118  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 14119  //
 14120  // Solidity: function seigManager() constant returns(address)
 14121  func (_RootChainStorage *RootChainStorageCallerSession) SeigManager() (common.Address, error) {
 14122  	return _RootChainStorage.Contract.SeigManager(&_RootChainStorage.CallOpts)
 14123  }
 14124  
 14125  // SubmitHandler is a free data retrieval call binding the contract method 0xe259faf7.
 14126  //
 14127  // Solidity: function submitHandler() constant returns(address)
 14128  func (_RootChainStorage *RootChainStorageCaller) SubmitHandler(opts *bind.CallOpts) (common.Address, error) {
 14129  	var (
 14130  		ret0 = new(common.Address)
 14131  	)
 14132  	out := ret0
 14133  	err := _RootChainStorage.contract.Call(opts, out, "submitHandler")
 14134  	return *ret0, err
 14135  }
 14136  
 14137  // SubmitHandler is a free data retrieval call binding the contract method 0xe259faf7.
 14138  //
 14139  // Solidity: function submitHandler() constant returns(address)
 14140  func (_RootChainStorage *RootChainStorageSession) SubmitHandler() (common.Address, error) {
 14141  	return _RootChainStorage.Contract.SubmitHandler(&_RootChainStorage.CallOpts)
 14142  }
 14143  
 14144  // SubmitHandler is a free data retrieval call binding the contract method 0xe259faf7.
 14145  //
 14146  // Solidity: function submitHandler() constant returns(address)
 14147  func (_RootChainStorage *RootChainStorageCallerSession) SubmitHandler() (common.Address, error) {
 14148  	return _RootChainStorage.Contract.SubmitHandler(&_RootChainStorage.CallOpts)
 14149  }
 14150  
 14151  // SafeMathABI is the input ABI used to generate the binding from.
 14152  const SafeMathABI = "[]"
 14153  
 14154  // SafeMathBin is the compiled bytecode used for deploying new contracts.
 14155  var SafeMathBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582081abea5b57eb862cc535e559557e86893bc93410acfd1b3122d48a2c0cdee52a64736f6c634300050c0032"
 14156  
 14157  // DeploySafeMath deploys a new Ethereum contract, binding an instance of SafeMath to it.
 14158  func DeploySafeMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeMath, error) {
 14159  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
 14160  	if err != nil {
 14161  		return common.Address{}, nil, nil, err
 14162  	}
 14163  
 14164  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SafeMathBin), backend)
 14165  	if err != nil {
 14166  		return common.Address{}, nil, nil, err
 14167  	}
 14168  	return address, tx, &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
 14169  }
 14170  
 14171  // SafeMath is an auto generated Go binding around an Ethereum contract.
 14172  type SafeMath struct {
 14173  	SafeMathCaller     // Read-only binding to the contract
 14174  	SafeMathTransactor // Write-only binding to the contract
 14175  	SafeMathFilterer   // Log filterer for contract events
 14176  }
 14177  
 14178  // SafeMathCaller is an auto generated read-only Go binding around an Ethereum contract.
 14179  type SafeMathCaller struct {
 14180  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 14181  }
 14182  
 14183  // SafeMathTransactor is an auto generated write-only Go binding around an Ethereum contract.
 14184  type SafeMathTransactor struct {
 14185  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 14186  }
 14187  
 14188  // SafeMathFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
 14189  type SafeMathFilterer struct {
 14190  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 14191  }
 14192  
 14193  // SafeMathSession is an auto generated Go binding around an Ethereum contract,
 14194  // with pre-set call and transact options.
 14195  type SafeMathSession struct {
 14196  	Contract     *SafeMath         // Generic contract binding to set the session for
 14197  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 14198  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 14199  }
 14200  
 14201  // SafeMathCallerSession is an auto generated read-only Go binding around an Ethereum contract,
 14202  // with pre-set call options.
 14203  type SafeMathCallerSession struct {
 14204  	Contract *SafeMathCaller // Generic contract caller binding to set the session for
 14205  	CallOpts bind.CallOpts   // Call options to use throughout this session
 14206  }
 14207  
 14208  // SafeMathTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
 14209  // with pre-set transact options.
 14210  type SafeMathTransactorSession struct {
 14211  	Contract     *SafeMathTransactor // Generic contract transactor binding to set the session for
 14212  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
 14213  }
 14214  
 14215  // SafeMathRaw is an auto generated low-level Go binding around an Ethereum contract.
 14216  type SafeMathRaw struct {
 14217  	Contract *SafeMath // Generic contract binding to access the raw methods on
 14218  }
 14219  
 14220  // SafeMathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 14221  type SafeMathCallerRaw struct {
 14222  	Contract *SafeMathCaller // Generic read-only contract binding to access the raw methods on
 14223  }
 14224  
 14225  // SafeMathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 14226  type SafeMathTransactorRaw struct {
 14227  	Contract *SafeMathTransactor // Generic write-only contract binding to access the raw methods on
 14228  }
 14229  
 14230  // NewSafeMath creates a new instance of SafeMath, bound to a specific deployed contract.
 14231  func NewSafeMath(address common.Address, backend bind.ContractBackend) (*SafeMath, error) {
 14232  	contract, err := bindSafeMath(address, backend, backend, backend)
 14233  	if err != nil {
 14234  		return nil, err
 14235  	}
 14236  	return &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
 14237  }
 14238  
 14239  // NewSafeMathCaller creates a new read-only instance of SafeMath, bound to a specific deployed contract.
 14240  func NewSafeMathCaller(address common.Address, caller bind.ContractCaller) (*SafeMathCaller, error) {
 14241  	contract, err := bindSafeMath(address, caller, nil, nil)
 14242  	if err != nil {
 14243  		return nil, err
 14244  	}
 14245  	return &SafeMathCaller{contract: contract}, nil
 14246  }
 14247  
 14248  // NewSafeMathTransactor creates a new write-only instance of SafeMath, bound to a specific deployed contract.
 14249  func NewSafeMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeMathTransactor, error) {
 14250  	contract, err := bindSafeMath(address, nil, transactor, nil)
 14251  	if err != nil {
 14252  		return nil, err
 14253  	}
 14254  	return &SafeMathTransactor{contract: contract}, nil
 14255  }
 14256  
 14257  // NewSafeMathFilterer creates a new log filterer instance of SafeMath, bound to a specific deployed contract.
 14258  func NewSafeMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeMathFilterer, error) {
 14259  	contract, err := bindSafeMath(address, nil, nil, filterer)
 14260  	if err != nil {
 14261  		return nil, err
 14262  	}
 14263  	return &SafeMathFilterer{contract: contract}, nil
 14264  }
 14265  
 14266  // bindSafeMath binds a generic wrapper to an already deployed contract.
 14267  func bindSafeMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 14268  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
 14269  	if err != nil {
 14270  		return nil, err
 14271  	}
 14272  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 14273  }
 14274  
 14275  // Call invokes the (constant) contract method with params as input values and
 14276  // sets the output to result. The result type might be a single field for simple
 14277  // returns, a slice of interfaces for anonymous returns and a struct for named
 14278  // returns.
 14279  func (_SafeMath *SafeMathRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 14280  	return _SafeMath.Contract.SafeMathCaller.contract.Call(opts, result, method, params...)
 14281  }
 14282  
 14283  // Transfer initiates a plain transaction to move funds to the contract, calling
 14284  // its default method if one is available.
 14285  func (_SafeMath *SafeMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 14286  	return _SafeMath.Contract.SafeMathTransactor.contract.Transfer(opts)
 14287  }
 14288  
 14289  // Transact invokes the (paid) contract method with params as input values.
 14290  func (_SafeMath *SafeMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 14291  	return _SafeMath.Contract.SafeMathTransactor.contract.Transact(opts, method, params...)
 14292  }
 14293  
 14294  // Call invokes the (constant) contract method with params as input values and
 14295  // sets the output to result. The result type might be a single field for simple
 14296  // returns, a slice of interfaces for anonymous returns and a struct for named
 14297  // returns.
 14298  func (_SafeMath *SafeMathCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 14299  	return _SafeMath.Contract.contract.Call(opts, result, method, params...)
 14300  }
 14301  
 14302  // Transfer initiates a plain transaction to move funds to the contract, calling
 14303  // its default method if one is available.
 14304  func (_SafeMath *SafeMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 14305  	return _SafeMath.Contract.contract.Transfer(opts)
 14306  }
 14307  
 14308  // Transact invokes the (paid) contract method with params as input values.
 14309  func (_SafeMath *SafeMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 14310  	return _SafeMath.Contract.contract.Transact(opts, method, params...)
 14311  }
 14312  
 14313  // SubmitterRoleABI is the input ABI used to generate the binding from.
 14314  const SubmitterRoleABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"SubmitterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"SubmitterRemoved\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addSubmitter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isSubmitter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceSubmitter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
 14315  
 14316  // SubmitterRoleFuncSigs maps the 4-byte function signature to its string representation.
 14317  var SubmitterRoleFuncSigs = map[string]string{
 14318  	"072900f9": "addSubmitter(address)",
 14319  	"a926fdbc": "isSubmitter(address)",
 14320  	"5e0ca71b": "renounceSubmitter()",
 14321  }
 14322  
 14323  // SubmitterRole is an auto generated Go binding around an Ethereum contract.
 14324  type SubmitterRole struct {
 14325  	SubmitterRoleCaller     // Read-only binding to the contract
 14326  	SubmitterRoleTransactor // Write-only binding to the contract
 14327  	SubmitterRoleFilterer   // Log filterer for contract events
 14328  }
 14329  
 14330  // SubmitterRoleCaller is an auto generated read-only Go binding around an Ethereum contract.
 14331  type SubmitterRoleCaller struct {
 14332  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 14333  }
 14334  
 14335  // SubmitterRoleTransactor is an auto generated write-only Go binding around an Ethereum contract.
 14336  type SubmitterRoleTransactor struct {
 14337  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 14338  }
 14339  
 14340  // SubmitterRoleFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
 14341  type SubmitterRoleFilterer struct {
 14342  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 14343  }
 14344  
 14345  // SubmitterRoleSession is an auto generated Go binding around an Ethereum contract,
 14346  // with pre-set call and transact options.
 14347  type SubmitterRoleSession struct {
 14348  	Contract     *SubmitterRole    // Generic contract binding to set the session for
 14349  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 14350  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 14351  }
 14352  
 14353  // SubmitterRoleCallerSession is an auto generated read-only Go binding around an Ethereum contract,
 14354  // with pre-set call options.
 14355  type SubmitterRoleCallerSession struct {
 14356  	Contract *SubmitterRoleCaller // Generic contract caller binding to set the session for
 14357  	CallOpts bind.CallOpts        // Call options to use throughout this session
 14358  }
 14359  
 14360  // SubmitterRoleTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
 14361  // with pre-set transact options.
 14362  type SubmitterRoleTransactorSession struct {
 14363  	Contract     *SubmitterRoleTransactor // Generic contract transactor binding to set the session for
 14364  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
 14365  }
 14366  
 14367  // SubmitterRoleRaw is an auto generated low-level Go binding around an Ethereum contract.
 14368  type SubmitterRoleRaw struct {
 14369  	Contract *SubmitterRole // Generic contract binding to access the raw methods on
 14370  }
 14371  
 14372  // SubmitterRoleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 14373  type SubmitterRoleCallerRaw struct {
 14374  	Contract *SubmitterRoleCaller // Generic read-only contract binding to access the raw methods on
 14375  }
 14376  
 14377  // SubmitterRoleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 14378  type SubmitterRoleTransactorRaw struct {
 14379  	Contract *SubmitterRoleTransactor // Generic write-only contract binding to access the raw methods on
 14380  }
 14381  
 14382  // NewSubmitterRole creates a new instance of SubmitterRole, bound to a specific deployed contract.
 14383  func NewSubmitterRole(address common.Address, backend bind.ContractBackend) (*SubmitterRole, error) {
 14384  	contract, err := bindSubmitterRole(address, backend, backend, backend)
 14385  	if err != nil {
 14386  		return nil, err
 14387  	}
 14388  	return &SubmitterRole{SubmitterRoleCaller: SubmitterRoleCaller{contract: contract}, SubmitterRoleTransactor: SubmitterRoleTransactor{contract: contract}, SubmitterRoleFilterer: SubmitterRoleFilterer{contract: contract}}, nil
 14389  }
 14390  
 14391  // NewSubmitterRoleCaller creates a new read-only instance of SubmitterRole, bound to a specific deployed contract.
 14392  func NewSubmitterRoleCaller(address common.Address, caller bind.ContractCaller) (*SubmitterRoleCaller, error) {
 14393  	contract, err := bindSubmitterRole(address, caller, nil, nil)
 14394  	if err != nil {
 14395  		return nil, err
 14396  	}
 14397  	return &SubmitterRoleCaller{contract: contract}, nil
 14398  }
 14399  
 14400  // NewSubmitterRoleTransactor creates a new write-only instance of SubmitterRole, bound to a specific deployed contract.
 14401  func NewSubmitterRoleTransactor(address common.Address, transactor bind.ContractTransactor) (*SubmitterRoleTransactor, error) {
 14402  	contract, err := bindSubmitterRole(address, nil, transactor, nil)
 14403  	if err != nil {
 14404  		return nil, err
 14405  	}
 14406  	return &SubmitterRoleTransactor{contract: contract}, nil
 14407  }
 14408  
 14409  // NewSubmitterRoleFilterer creates a new log filterer instance of SubmitterRole, bound to a specific deployed contract.
 14410  func NewSubmitterRoleFilterer(address common.Address, filterer bind.ContractFilterer) (*SubmitterRoleFilterer, error) {
 14411  	contract, err := bindSubmitterRole(address, nil, nil, filterer)
 14412  	if err != nil {
 14413  		return nil, err
 14414  	}
 14415  	return &SubmitterRoleFilterer{contract: contract}, nil
 14416  }
 14417  
 14418  // bindSubmitterRole binds a generic wrapper to an already deployed contract.
 14419  func bindSubmitterRole(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 14420  	parsed, err := abi.JSON(strings.NewReader(SubmitterRoleABI))
 14421  	if err != nil {
 14422  		return nil, err
 14423  	}
 14424  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 14425  }
 14426  
 14427  // Call invokes the (constant) contract method with params as input values and
 14428  // sets the output to result. The result type might be a single field for simple
 14429  // returns, a slice of interfaces for anonymous returns and a struct for named
 14430  // returns.
 14431  func (_SubmitterRole *SubmitterRoleRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 14432  	return _SubmitterRole.Contract.SubmitterRoleCaller.contract.Call(opts, result, method, params...)
 14433  }
 14434  
 14435  // Transfer initiates a plain transaction to move funds to the contract, calling
 14436  // its default method if one is available.
 14437  func (_SubmitterRole *SubmitterRoleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 14438  	return _SubmitterRole.Contract.SubmitterRoleTransactor.contract.Transfer(opts)
 14439  }
 14440  
 14441  // Transact invokes the (paid) contract method with params as input values.
 14442  func (_SubmitterRole *SubmitterRoleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 14443  	return _SubmitterRole.Contract.SubmitterRoleTransactor.contract.Transact(opts, method, params...)
 14444  }
 14445  
 14446  // Call invokes the (constant) contract method with params as input values and
 14447  // sets the output to result. The result type might be a single field for simple
 14448  // returns, a slice of interfaces for anonymous returns and a struct for named
 14449  // returns.
 14450  func (_SubmitterRole *SubmitterRoleCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 14451  	return _SubmitterRole.Contract.contract.Call(opts, result, method, params...)
 14452  }
 14453  
 14454  // Transfer initiates a plain transaction to move funds to the contract, calling
 14455  // its default method if one is available.
 14456  func (_SubmitterRole *SubmitterRoleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 14457  	return _SubmitterRole.Contract.contract.Transfer(opts)
 14458  }
 14459  
 14460  // Transact invokes the (paid) contract method with params as input values.
 14461  func (_SubmitterRole *SubmitterRoleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 14462  	return _SubmitterRole.Contract.contract.Transact(opts, method, params...)
 14463  }
 14464  
 14465  // IsSubmitter is a free data retrieval call binding the contract method 0xa926fdbc.
 14466  //
 14467  // Solidity: function isSubmitter(address account) constant returns(bool)
 14468  func (_SubmitterRole *SubmitterRoleCaller) IsSubmitter(opts *bind.CallOpts, account common.Address) (bool, error) {
 14469  	var (
 14470  		ret0 = new(bool)
 14471  	)
 14472  	out := ret0
 14473  	err := _SubmitterRole.contract.Call(opts, out, "isSubmitter", account)
 14474  	return *ret0, err
 14475  }
 14476  
 14477  // IsSubmitter is a free data retrieval call binding the contract method 0xa926fdbc.
 14478  //
 14479  // Solidity: function isSubmitter(address account) constant returns(bool)
 14480  func (_SubmitterRole *SubmitterRoleSession) IsSubmitter(account common.Address) (bool, error) {
 14481  	return _SubmitterRole.Contract.IsSubmitter(&_SubmitterRole.CallOpts, account)
 14482  }
 14483  
 14484  // IsSubmitter is a free data retrieval call binding the contract method 0xa926fdbc.
 14485  //
 14486  // Solidity: function isSubmitter(address account) constant returns(bool)
 14487  func (_SubmitterRole *SubmitterRoleCallerSession) IsSubmitter(account common.Address) (bool, error) {
 14488  	return _SubmitterRole.Contract.IsSubmitter(&_SubmitterRole.CallOpts, account)
 14489  }
 14490  
 14491  // AddSubmitter is a paid mutator transaction binding the contract method 0x072900f9.
 14492  //
 14493  // Solidity: function addSubmitter(address account) returns()
 14494  func (_SubmitterRole *SubmitterRoleTransactor) AddSubmitter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
 14495  	return _SubmitterRole.contract.Transact(opts, "addSubmitter", account)
 14496  }
 14497  
 14498  // AddSubmitter is a paid mutator transaction binding the contract method 0x072900f9.
 14499  //
 14500  // Solidity: function addSubmitter(address account) returns()
 14501  func (_SubmitterRole *SubmitterRoleSession) AddSubmitter(account common.Address) (*types.Transaction, error) {
 14502  	return _SubmitterRole.Contract.AddSubmitter(&_SubmitterRole.TransactOpts, account)
 14503  }
 14504  
 14505  // AddSubmitter is a paid mutator transaction binding the contract method 0x072900f9.
 14506  //
 14507  // Solidity: function addSubmitter(address account) returns()
 14508  func (_SubmitterRole *SubmitterRoleTransactorSession) AddSubmitter(account common.Address) (*types.Transaction, error) {
 14509  	return _SubmitterRole.Contract.AddSubmitter(&_SubmitterRole.TransactOpts, account)
 14510  }
 14511  
 14512  // RenounceSubmitter is a paid mutator transaction binding the contract method 0x5e0ca71b.
 14513  //
 14514  // Solidity: function renounceSubmitter() returns()
 14515  func (_SubmitterRole *SubmitterRoleTransactor) RenounceSubmitter(opts *bind.TransactOpts) (*types.Transaction, error) {
 14516  	return _SubmitterRole.contract.Transact(opts, "renounceSubmitter")
 14517  }
 14518  
 14519  // RenounceSubmitter is a paid mutator transaction binding the contract method 0x5e0ca71b.
 14520  //
 14521  // Solidity: function renounceSubmitter() returns()
 14522  func (_SubmitterRole *SubmitterRoleSession) RenounceSubmitter() (*types.Transaction, error) {
 14523  	return _SubmitterRole.Contract.RenounceSubmitter(&_SubmitterRole.TransactOpts)
 14524  }
 14525  
 14526  // RenounceSubmitter is a paid mutator transaction binding the contract method 0x5e0ca71b.
 14527  //
 14528  // Solidity: function renounceSubmitter() returns()
 14529  func (_SubmitterRole *SubmitterRoleTransactorSession) RenounceSubmitter() (*types.Transaction, error) {
 14530  	return _SubmitterRole.Contract.RenounceSubmitter(&_SubmitterRole.TransactOpts)
 14531  }
 14532  
 14533  // SubmitterRoleSubmitterAddedIterator is returned from FilterSubmitterAdded and is used to iterate over the raw logs and unpacked data for SubmitterAdded events raised by the SubmitterRole contract.
 14534  type SubmitterRoleSubmitterAddedIterator struct {
 14535  	Event *SubmitterRoleSubmitterAdded // Event containing the contract specifics and raw log
 14536  
 14537  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 14538  	event    string              // Event name to use for unpacking event data
 14539  
 14540  	logs chan types.Log        // Log channel receiving the found contract events
 14541  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 14542  	done bool                  // Whether the subscription completed delivering logs
 14543  	fail error                 // Occurred error to stop iteration
 14544  }
 14545  
 14546  // Next advances the iterator to the subsequent event, returning whether there
 14547  // are any more events found. In case of a retrieval or parsing error, false is
 14548  // returned and Error() can be queried for the exact failure.
 14549  func (it *SubmitterRoleSubmitterAddedIterator) Next() bool {
 14550  	// If the iterator failed, stop iterating
 14551  	if it.fail != nil {
 14552  		return false
 14553  	}
 14554  	// If the iterator completed, deliver directly whatever's available
 14555  	if it.done {
 14556  		select {
 14557  		case log := <-it.logs:
 14558  			it.Event = new(SubmitterRoleSubmitterAdded)
 14559  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14560  				it.fail = err
 14561  				return false
 14562  			}
 14563  			it.Event.Raw = log
 14564  			return true
 14565  
 14566  		default:
 14567  			return false
 14568  		}
 14569  	}
 14570  	// Iterator still in progress, wait for either a data or an error event
 14571  	select {
 14572  	case log := <-it.logs:
 14573  		it.Event = new(SubmitterRoleSubmitterAdded)
 14574  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14575  			it.fail = err
 14576  			return false
 14577  		}
 14578  		it.Event.Raw = log
 14579  		return true
 14580  
 14581  	case err := <-it.sub.Err():
 14582  		it.done = true
 14583  		it.fail = err
 14584  		return it.Next()
 14585  	}
 14586  }
 14587  
 14588  // Error returns any retrieval or parsing error occurred during filtering.
 14589  func (it *SubmitterRoleSubmitterAddedIterator) Error() error {
 14590  	return it.fail
 14591  }
 14592  
 14593  // Close terminates the iteration process, releasing any pending underlying
 14594  // resources.
 14595  func (it *SubmitterRoleSubmitterAddedIterator) Close() error {
 14596  	it.sub.Unsubscribe()
 14597  	return nil
 14598  }
 14599  
 14600  // SubmitterRoleSubmitterAdded represents a SubmitterAdded event raised by the SubmitterRole contract.
 14601  type SubmitterRoleSubmitterAdded struct {
 14602  	Account common.Address
 14603  	Raw     types.Log // Blockchain specific contextual infos
 14604  }
 14605  
 14606  // FilterSubmitterAdded is a free log retrieval operation binding the contract event 0xb079bc2cbde1f186e0b351d4a87c4597e3ed098f571548617449e73506428d8b.
 14607  //
 14608  // Solidity: event SubmitterAdded(address indexed account)
 14609  func (_SubmitterRole *SubmitterRoleFilterer) FilterSubmitterAdded(opts *bind.FilterOpts, account []common.Address) (*SubmitterRoleSubmitterAddedIterator, error) {
 14610  
 14611  	var accountRule []interface{}
 14612  	for _, accountItem := range account {
 14613  		accountRule = append(accountRule, accountItem)
 14614  	}
 14615  
 14616  	logs, sub, err := _SubmitterRole.contract.FilterLogs(opts, "SubmitterAdded", accountRule)
 14617  	if err != nil {
 14618  		return nil, err
 14619  	}
 14620  	return &SubmitterRoleSubmitterAddedIterator{contract: _SubmitterRole.contract, event: "SubmitterAdded", logs: logs, sub: sub}, nil
 14621  }
 14622  
 14623  // WatchSubmitterAdded is a free log subscription operation binding the contract event 0xb079bc2cbde1f186e0b351d4a87c4597e3ed098f571548617449e73506428d8b.
 14624  //
 14625  // Solidity: event SubmitterAdded(address indexed account)
 14626  func (_SubmitterRole *SubmitterRoleFilterer) WatchSubmitterAdded(opts *bind.WatchOpts, sink chan<- *SubmitterRoleSubmitterAdded, account []common.Address) (event.Subscription, error) {
 14627  
 14628  	var accountRule []interface{}
 14629  	for _, accountItem := range account {
 14630  		accountRule = append(accountRule, accountItem)
 14631  	}
 14632  
 14633  	logs, sub, err := _SubmitterRole.contract.WatchLogs(opts, "SubmitterAdded", accountRule)
 14634  	if err != nil {
 14635  		return nil, err
 14636  	}
 14637  	return event.NewSubscription(func(quit <-chan struct{}) error {
 14638  		defer sub.Unsubscribe()
 14639  		for {
 14640  			select {
 14641  			case log := <-logs:
 14642  				// New log arrived, parse the event and forward to the user
 14643  				event := new(SubmitterRoleSubmitterAdded)
 14644  				if err := _SubmitterRole.contract.UnpackLog(event, "SubmitterAdded", log); err != nil {
 14645  					return err
 14646  				}
 14647  				event.Raw = log
 14648  
 14649  				select {
 14650  				case sink <- event:
 14651  				case err := <-sub.Err():
 14652  					return err
 14653  				case <-quit:
 14654  					return nil
 14655  				}
 14656  			case err := <-sub.Err():
 14657  				return err
 14658  			case <-quit:
 14659  				return nil
 14660  			}
 14661  		}
 14662  	}), nil
 14663  }
 14664  
 14665  // ParseSubmitterAdded is a log parse operation binding the contract event 0xb079bc2cbde1f186e0b351d4a87c4597e3ed098f571548617449e73506428d8b.
 14666  //
 14667  // Solidity: event SubmitterAdded(address indexed account)
 14668  func (_SubmitterRole *SubmitterRoleFilterer) ParseSubmitterAdded(log types.Log) (*SubmitterRoleSubmitterAdded, error) {
 14669  	event := new(SubmitterRoleSubmitterAdded)
 14670  	if err := _SubmitterRole.contract.UnpackLog(event, "SubmitterAdded", log); err != nil {
 14671  		return nil, err
 14672  	}
 14673  	return event, nil
 14674  }
 14675  
 14676  // SubmitterRoleSubmitterRemovedIterator is returned from FilterSubmitterRemoved and is used to iterate over the raw logs and unpacked data for SubmitterRemoved events raised by the SubmitterRole contract.
 14677  type SubmitterRoleSubmitterRemovedIterator struct {
 14678  	Event *SubmitterRoleSubmitterRemoved // Event containing the contract specifics and raw log
 14679  
 14680  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 14681  	event    string              // Event name to use for unpacking event data
 14682  
 14683  	logs chan types.Log        // Log channel receiving the found contract events
 14684  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 14685  	done bool                  // Whether the subscription completed delivering logs
 14686  	fail error                 // Occurred error to stop iteration
 14687  }
 14688  
 14689  // Next advances the iterator to the subsequent event, returning whether there
 14690  // are any more events found. In case of a retrieval or parsing error, false is
 14691  // returned and Error() can be queried for the exact failure.
 14692  func (it *SubmitterRoleSubmitterRemovedIterator) Next() bool {
 14693  	// If the iterator failed, stop iterating
 14694  	if it.fail != nil {
 14695  		return false
 14696  	}
 14697  	// If the iterator completed, deliver directly whatever's available
 14698  	if it.done {
 14699  		select {
 14700  		case log := <-it.logs:
 14701  			it.Event = new(SubmitterRoleSubmitterRemoved)
 14702  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14703  				it.fail = err
 14704  				return false
 14705  			}
 14706  			it.Event.Raw = log
 14707  			return true
 14708  
 14709  		default:
 14710  			return false
 14711  		}
 14712  	}
 14713  	// Iterator still in progress, wait for either a data or an error event
 14714  	select {
 14715  	case log := <-it.logs:
 14716  		it.Event = new(SubmitterRoleSubmitterRemoved)
 14717  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14718  			it.fail = err
 14719  			return false
 14720  		}
 14721  		it.Event.Raw = log
 14722  		return true
 14723  
 14724  	case err := <-it.sub.Err():
 14725  		it.done = true
 14726  		it.fail = err
 14727  		return it.Next()
 14728  	}
 14729  }
 14730  
 14731  // Error returns any retrieval or parsing error occurred during filtering.
 14732  func (it *SubmitterRoleSubmitterRemovedIterator) Error() error {
 14733  	return it.fail
 14734  }
 14735  
 14736  // Close terminates the iteration process, releasing any pending underlying
 14737  // resources.
 14738  func (it *SubmitterRoleSubmitterRemovedIterator) Close() error {
 14739  	it.sub.Unsubscribe()
 14740  	return nil
 14741  }
 14742  
 14743  // SubmitterRoleSubmitterRemoved represents a SubmitterRemoved event raised by the SubmitterRole contract.
 14744  type SubmitterRoleSubmitterRemoved struct {
 14745  	Account common.Address
 14746  	Raw     types.Log // Blockchain specific contextual infos
 14747  }
 14748  
 14749  // FilterSubmitterRemoved is a free log retrieval operation binding the contract event 0xf84a004e1673d2f349a7c93c72b3794b8eba6d2f9338044d8c8cd260e51a57a1.
 14750  //
 14751  // Solidity: event SubmitterRemoved(address indexed account)
 14752  func (_SubmitterRole *SubmitterRoleFilterer) FilterSubmitterRemoved(opts *bind.FilterOpts, account []common.Address) (*SubmitterRoleSubmitterRemovedIterator, error) {
 14753  
 14754  	var accountRule []interface{}
 14755  	for _, accountItem := range account {
 14756  		accountRule = append(accountRule, accountItem)
 14757  	}
 14758  
 14759  	logs, sub, err := _SubmitterRole.contract.FilterLogs(opts, "SubmitterRemoved", accountRule)
 14760  	if err != nil {
 14761  		return nil, err
 14762  	}
 14763  	return &SubmitterRoleSubmitterRemovedIterator{contract: _SubmitterRole.contract, event: "SubmitterRemoved", logs: logs, sub: sub}, nil
 14764  }
 14765  
 14766  // WatchSubmitterRemoved is a free log subscription operation binding the contract event 0xf84a004e1673d2f349a7c93c72b3794b8eba6d2f9338044d8c8cd260e51a57a1.
 14767  //
 14768  // Solidity: event SubmitterRemoved(address indexed account)
 14769  func (_SubmitterRole *SubmitterRoleFilterer) WatchSubmitterRemoved(opts *bind.WatchOpts, sink chan<- *SubmitterRoleSubmitterRemoved, account []common.Address) (event.Subscription, error) {
 14770  
 14771  	var accountRule []interface{}
 14772  	for _, accountItem := range account {
 14773  		accountRule = append(accountRule, accountItem)
 14774  	}
 14775  
 14776  	logs, sub, err := _SubmitterRole.contract.WatchLogs(opts, "SubmitterRemoved", accountRule)
 14777  	if err != nil {
 14778  		return nil, err
 14779  	}
 14780  	return event.NewSubscription(func(quit <-chan struct{}) error {
 14781  		defer sub.Unsubscribe()
 14782  		for {
 14783  			select {
 14784  			case log := <-logs:
 14785  				// New log arrived, parse the event and forward to the user
 14786  				event := new(SubmitterRoleSubmitterRemoved)
 14787  				if err := _SubmitterRole.contract.UnpackLog(event, "SubmitterRemoved", log); err != nil {
 14788  					return err
 14789  				}
 14790  				event.Raw = log
 14791  
 14792  				select {
 14793  				case sink <- event:
 14794  				case err := <-sub.Err():
 14795  					return err
 14796  				case <-quit:
 14797  					return nil
 14798  				}
 14799  			case err := <-sub.Err():
 14800  				return err
 14801  			case <-quit:
 14802  				return nil
 14803  			}
 14804  		}
 14805  	}), nil
 14806  }
 14807  
 14808  // ParseSubmitterRemoved is a log parse operation binding the contract event 0xf84a004e1673d2f349a7c93c72b3794b8eba6d2f9338044d8c8cd260e51a57a1.
 14809  //
 14810  // Solidity: event SubmitterRemoved(address indexed account)
 14811  func (_SubmitterRole *SubmitterRoleFilterer) ParseSubmitterRemoved(log types.Log) (*SubmitterRoleSubmitterRemoved, error) {
 14812  	event := new(SubmitterRoleSubmitterRemoved)
 14813  	if err := _SubmitterRole.contract.UnpackLog(event, "SubmitterRemoved", log); err != nil {
 14814  		return nil, err
 14815  	}
 14816  	return event, nil
 14817  }