github.com/Onther-Tech/plasma-evm@v0.0.0-rc7.7/contracts/plasma/epochhandler/epochhandler.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 epochhandler
     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  // AddressABI is the input ABI used to generate the binding from.
    31  const AddressABI = "[]"
    32  
    33  // AddressBin is the compiled bytecode used for deploying new contracts.
    34  var AddressBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820451b843ffb424b86bcba31db5f97373aa893055a6c8333b114cc3f724489f96264736f6c634300050c0032"
    35  
    36  // DeployAddress deploys a new Ethereum contract, binding an instance of Address to it.
    37  func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) {
    38  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
    39  	if err != nil {
    40  		return common.Address{}, nil, nil, err
    41  	}
    42  
    43  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(AddressBin), backend)
    44  	if err != nil {
    45  		return common.Address{}, nil, nil, err
    46  	}
    47  	return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
    48  }
    49  
    50  // Address is an auto generated Go binding around an Ethereum contract.
    51  type Address struct {
    52  	AddressCaller     // Read-only binding to the contract
    53  	AddressTransactor // Write-only binding to the contract
    54  	AddressFilterer   // Log filterer for contract events
    55  }
    56  
    57  // AddressCaller is an auto generated read-only Go binding around an Ethereum contract.
    58  type AddressCaller struct {
    59  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    60  }
    61  
    62  // AddressTransactor is an auto generated write-only Go binding around an Ethereum contract.
    63  type AddressTransactor struct {
    64  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    65  }
    66  
    67  // AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    68  type AddressFilterer struct {
    69  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    70  }
    71  
    72  // AddressSession is an auto generated Go binding around an Ethereum contract,
    73  // with pre-set call and transact options.
    74  type AddressSession struct {
    75  	Contract     *Address          // Generic contract binding to set the session for
    76  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    77  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    78  }
    79  
    80  // AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    81  // with pre-set call options.
    82  type AddressCallerSession struct {
    83  	Contract *AddressCaller // Generic contract caller binding to set the session for
    84  	CallOpts bind.CallOpts  // Call options to use throughout this session
    85  }
    86  
    87  // AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    88  // with pre-set transact options.
    89  type AddressTransactorSession struct {
    90  	Contract     *AddressTransactor // Generic contract transactor binding to set the session for
    91  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
    92  }
    93  
    94  // AddressRaw is an auto generated low-level Go binding around an Ethereum contract.
    95  type AddressRaw struct {
    96  	Contract *Address // Generic contract binding to access the raw methods on
    97  }
    98  
    99  // AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   100  type AddressCallerRaw struct {
   101  	Contract *AddressCaller // Generic read-only contract binding to access the raw methods on
   102  }
   103  
   104  // AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   105  type AddressTransactorRaw struct {
   106  	Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on
   107  }
   108  
   109  // NewAddress creates a new instance of Address, bound to a specific deployed contract.
   110  func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) {
   111  	contract, err := bindAddress(address, backend, backend, backend)
   112  	if err != nil {
   113  		return nil, err
   114  	}
   115  	return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
   116  }
   117  
   118  // NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract.
   119  func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) {
   120  	contract, err := bindAddress(address, caller, nil, nil)
   121  	if err != nil {
   122  		return nil, err
   123  	}
   124  	return &AddressCaller{contract: contract}, nil
   125  }
   126  
   127  // NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract.
   128  func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) {
   129  	contract, err := bindAddress(address, nil, transactor, nil)
   130  	if err != nil {
   131  		return nil, err
   132  	}
   133  	return &AddressTransactor{contract: contract}, nil
   134  }
   135  
   136  // NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract.
   137  func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) {
   138  	contract, err := bindAddress(address, nil, nil, filterer)
   139  	if err != nil {
   140  		return nil, err
   141  	}
   142  	return &AddressFilterer{contract: contract}, nil
   143  }
   144  
   145  // bindAddress binds a generic wrapper to an already deployed contract.
   146  func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   147  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
   148  	if err != nil {
   149  		return nil, err
   150  	}
   151  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   152  }
   153  
   154  // Call invokes the (constant) contract method with params as input values and
   155  // sets the output to result. The result type might be a single field for simple
   156  // returns, a slice of interfaces for anonymous returns and a struct for named
   157  // returns.
   158  func (_Address *AddressRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   159  	return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...)
   160  }
   161  
   162  // Transfer initiates a plain transaction to move funds to the contract, calling
   163  // its default method if one is available.
   164  func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   165  	return _Address.Contract.AddressTransactor.contract.Transfer(opts)
   166  }
   167  
   168  // Transact invokes the (paid) contract method with params as input values.
   169  func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   170  	return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...)
   171  }
   172  
   173  // Call invokes the (constant) contract method with params as input values and
   174  // sets the output to result. The result type might be a single field for simple
   175  // returns, a slice of interfaces for anonymous returns and a struct for named
   176  // returns.
   177  func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   178  	return _Address.Contract.contract.Call(opts, result, method, params...)
   179  }
   180  
   181  // Transfer initiates a plain transaction to move funds to the contract, calling
   182  // its default method if one is available.
   183  func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   184  	return _Address.Contract.contract.Transfer(opts)
   185  }
   186  
   187  // Transact invokes the (paid) contract method with params as input values.
   188  func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   189  	return _Address.Contract.contract.Transact(opts, method, params...)
   190  }
   191  
   192  // BMTABI is the input ABI used to generate the binding from.
   193  const BMTABI = "[]"
   194  
   195  // BMTBin is the compiled bytecode used for deploying new contracts.
   196  var BMTBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820e40cfcc115c891081c9c49cf067c463d7e9814fa3ea29c4a8d949bc82adcafb264736f6c634300050c0032"
   197  
   198  // DeployBMT deploys a new Ethereum contract, binding an instance of BMT to it.
   199  func DeployBMT(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BMT, error) {
   200  	parsed, err := abi.JSON(strings.NewReader(BMTABI))
   201  	if err != nil {
   202  		return common.Address{}, nil, nil, err
   203  	}
   204  
   205  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(BMTBin), backend)
   206  	if err != nil {
   207  		return common.Address{}, nil, nil, err
   208  	}
   209  	return address, tx, &BMT{BMTCaller: BMTCaller{contract: contract}, BMTTransactor: BMTTransactor{contract: contract}, BMTFilterer: BMTFilterer{contract: contract}}, nil
   210  }
   211  
   212  // BMT is an auto generated Go binding around an Ethereum contract.
   213  type BMT struct {
   214  	BMTCaller     // Read-only binding to the contract
   215  	BMTTransactor // Write-only binding to the contract
   216  	BMTFilterer   // Log filterer for contract events
   217  }
   218  
   219  // BMTCaller is an auto generated read-only Go binding around an Ethereum contract.
   220  type BMTCaller struct {
   221  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   222  }
   223  
   224  // BMTTransactor is an auto generated write-only Go binding around an Ethereum contract.
   225  type BMTTransactor struct {
   226  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   227  }
   228  
   229  // BMTFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   230  type BMTFilterer struct {
   231  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   232  }
   233  
   234  // BMTSession is an auto generated Go binding around an Ethereum contract,
   235  // with pre-set call and transact options.
   236  type BMTSession struct {
   237  	Contract     *BMT              // Generic contract binding to set the session for
   238  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   239  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   240  }
   241  
   242  // BMTCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   243  // with pre-set call options.
   244  type BMTCallerSession struct {
   245  	Contract *BMTCaller    // Generic contract caller binding to set the session for
   246  	CallOpts bind.CallOpts // Call options to use throughout this session
   247  }
   248  
   249  // BMTTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   250  // with pre-set transact options.
   251  type BMTTransactorSession struct {
   252  	Contract     *BMTTransactor    // Generic contract transactor binding to set the session for
   253  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   254  }
   255  
   256  // BMTRaw is an auto generated low-level Go binding around an Ethereum contract.
   257  type BMTRaw struct {
   258  	Contract *BMT // Generic contract binding to access the raw methods on
   259  }
   260  
   261  // BMTCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   262  type BMTCallerRaw struct {
   263  	Contract *BMTCaller // Generic read-only contract binding to access the raw methods on
   264  }
   265  
   266  // BMTTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   267  type BMTTransactorRaw struct {
   268  	Contract *BMTTransactor // Generic write-only contract binding to access the raw methods on
   269  }
   270  
   271  // NewBMT creates a new instance of BMT, bound to a specific deployed contract.
   272  func NewBMT(address common.Address, backend bind.ContractBackend) (*BMT, error) {
   273  	contract, err := bindBMT(address, backend, backend, backend)
   274  	if err != nil {
   275  		return nil, err
   276  	}
   277  	return &BMT{BMTCaller: BMTCaller{contract: contract}, BMTTransactor: BMTTransactor{contract: contract}, BMTFilterer: BMTFilterer{contract: contract}}, nil
   278  }
   279  
   280  // NewBMTCaller creates a new read-only instance of BMT, bound to a specific deployed contract.
   281  func NewBMTCaller(address common.Address, caller bind.ContractCaller) (*BMTCaller, error) {
   282  	contract, err := bindBMT(address, caller, nil, nil)
   283  	if err != nil {
   284  		return nil, err
   285  	}
   286  	return &BMTCaller{contract: contract}, nil
   287  }
   288  
   289  // NewBMTTransactor creates a new write-only instance of BMT, bound to a specific deployed contract.
   290  func NewBMTTransactor(address common.Address, transactor bind.ContractTransactor) (*BMTTransactor, error) {
   291  	contract, err := bindBMT(address, nil, transactor, nil)
   292  	if err != nil {
   293  		return nil, err
   294  	}
   295  	return &BMTTransactor{contract: contract}, nil
   296  }
   297  
   298  // NewBMTFilterer creates a new log filterer instance of BMT, bound to a specific deployed contract.
   299  func NewBMTFilterer(address common.Address, filterer bind.ContractFilterer) (*BMTFilterer, error) {
   300  	contract, err := bindBMT(address, nil, nil, filterer)
   301  	if err != nil {
   302  		return nil, err
   303  	}
   304  	return &BMTFilterer{contract: contract}, nil
   305  }
   306  
   307  // bindBMT binds a generic wrapper to an already deployed contract.
   308  func bindBMT(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   309  	parsed, err := abi.JSON(strings.NewReader(BMTABI))
   310  	if err != nil {
   311  		return nil, err
   312  	}
   313  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   314  }
   315  
   316  // Call invokes the (constant) contract method with params as input values and
   317  // sets the output to result. The result type might be a single field for simple
   318  // returns, a slice of interfaces for anonymous returns and a struct for named
   319  // returns.
   320  func (_BMT *BMTRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   321  	return _BMT.Contract.BMTCaller.contract.Call(opts, result, method, params...)
   322  }
   323  
   324  // Transfer initiates a plain transaction to move funds to the contract, calling
   325  // its default method if one is available.
   326  func (_BMT *BMTRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   327  	return _BMT.Contract.BMTTransactor.contract.Transfer(opts)
   328  }
   329  
   330  // Transact invokes the (paid) contract method with params as input values.
   331  func (_BMT *BMTRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   332  	return _BMT.Contract.BMTTransactor.contract.Transact(opts, method, params...)
   333  }
   334  
   335  // Call invokes the (constant) contract method with params as input values and
   336  // sets the output to result. The result type might be a single field for simple
   337  // returns, a slice of interfaces for anonymous returns and a struct for named
   338  // returns.
   339  func (_BMT *BMTCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   340  	return _BMT.Contract.contract.Call(opts, result, method, params...)
   341  }
   342  
   343  // Transfer initiates a plain transaction to move funds to the contract, calling
   344  // its default method if one is available.
   345  func (_BMT *BMTTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   346  	return _BMT.Contract.contract.Transfer(opts)
   347  }
   348  
   349  // Transact invokes the (paid) contract method with params as input values.
   350  func (_BMT *BMTTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   351  	return _BMT.Contract.contract.Transact(opts, method, params...)
   352  }
   353  
   354  // DataABI is the input ABI used to generate the binding from.
   355  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\"}]"
   356  
   357  // DataFuncSigs maps the 4-byte function signature to its string representation.
   358  var DataFuncSigs = map[string]string{
   359  	"a89ca766": "APPLY_IN_CHILDCHAIN_SIGNATURE()",
   360  	"a7b6ae28": "APPLY_IN_ROOTCHAIN_SIGNATURE()",
   361  	"ab73ff05": "NA()",
   362  	"90e84f56": "NA_TX_GAS_LIMIT()",
   363  	"1927ac58": "NA_TX_GAS_PRICE()",
   364  }
   365  
   366  // DataBin is the compiled bytecode used for deploying new contracts.
   367  var DataBin = "0x6101cf610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100615760003560e01c80631927ac581461006657806390e84f5614610080578063a7b6ae2814610088578063a89ca766146100ad578063ab73ff05146100b5575b600080fd5b61006e6100d9565b60408051918252519081900360200190f35b61006e6100e1565b6100906100e8565b604080516001600160e01b03199092168252519081900360200190f35b610090610103565b6100bd61011e565b604080516001600160a01b039092168252519081900360200190f35b633b9aca0081565b620186a081565b60405180603b6101608239603b019050604051809103902081565b60405180603c6101248239603c019050604051809103902081565b60008156fe6170706c7952657175657374496e4368696c64436861696e28626f6f6c2c75696e743235362c616464726573732c627974657333322c6279746573296170706c7952657175657374496e526f6f74436861696e28626f6f6c2c75696e743235362c616464726573732c627974657333322c627974657329a265627a7a723158204c9301a5408d81b999d438ab1834526edc3015412601cd9e2f1a4da5000c968364736f6c634300050c0032"
   368  
   369  // DeployData deploys a new Ethereum contract, binding an instance of Data to it.
   370  func DeployData(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Data, error) {
   371  	parsed, err := abi.JSON(strings.NewReader(DataABI))
   372  	if err != nil {
   373  		return common.Address{}, nil, nil, err
   374  	}
   375  
   376  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(DataBin), backend)
   377  	if err != nil {
   378  		return common.Address{}, nil, nil, err
   379  	}
   380  	return address, tx, &Data{DataCaller: DataCaller{contract: contract}, DataTransactor: DataTransactor{contract: contract}, DataFilterer: DataFilterer{contract: contract}}, nil
   381  }
   382  
   383  // Data is an auto generated Go binding around an Ethereum contract.
   384  type Data struct {
   385  	DataCaller     // Read-only binding to the contract
   386  	DataTransactor // Write-only binding to the contract
   387  	DataFilterer   // Log filterer for contract events
   388  }
   389  
   390  // DataCaller is an auto generated read-only Go binding around an Ethereum contract.
   391  type DataCaller struct {
   392  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   393  }
   394  
   395  // DataTransactor is an auto generated write-only Go binding around an Ethereum contract.
   396  type DataTransactor struct {
   397  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   398  }
   399  
   400  // DataFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   401  type DataFilterer struct {
   402  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   403  }
   404  
   405  // DataSession is an auto generated Go binding around an Ethereum contract,
   406  // with pre-set call and transact options.
   407  type DataSession struct {
   408  	Contract     *Data             // Generic contract binding to set the session for
   409  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   410  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   411  }
   412  
   413  // DataCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   414  // with pre-set call options.
   415  type DataCallerSession struct {
   416  	Contract *DataCaller   // Generic contract caller binding to set the session for
   417  	CallOpts bind.CallOpts // Call options to use throughout this session
   418  }
   419  
   420  // DataTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   421  // with pre-set transact options.
   422  type DataTransactorSession struct {
   423  	Contract     *DataTransactor   // Generic contract transactor binding to set the session for
   424  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   425  }
   426  
   427  // DataRaw is an auto generated low-level Go binding around an Ethereum contract.
   428  type DataRaw struct {
   429  	Contract *Data // Generic contract binding to access the raw methods on
   430  }
   431  
   432  // DataCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   433  type DataCallerRaw struct {
   434  	Contract *DataCaller // Generic read-only contract binding to access the raw methods on
   435  }
   436  
   437  // DataTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   438  type DataTransactorRaw struct {
   439  	Contract *DataTransactor // Generic write-only contract binding to access the raw methods on
   440  }
   441  
   442  // NewData creates a new instance of Data, bound to a specific deployed contract.
   443  func NewData(address common.Address, backend bind.ContractBackend) (*Data, error) {
   444  	contract, err := bindData(address, backend, backend, backend)
   445  	if err != nil {
   446  		return nil, err
   447  	}
   448  	return &Data{DataCaller: DataCaller{contract: contract}, DataTransactor: DataTransactor{contract: contract}, DataFilterer: DataFilterer{contract: contract}}, nil
   449  }
   450  
   451  // NewDataCaller creates a new read-only instance of Data, bound to a specific deployed contract.
   452  func NewDataCaller(address common.Address, caller bind.ContractCaller) (*DataCaller, error) {
   453  	contract, err := bindData(address, caller, nil, nil)
   454  	if err != nil {
   455  		return nil, err
   456  	}
   457  	return &DataCaller{contract: contract}, nil
   458  }
   459  
   460  // NewDataTransactor creates a new write-only instance of Data, bound to a specific deployed contract.
   461  func NewDataTransactor(address common.Address, transactor bind.ContractTransactor) (*DataTransactor, error) {
   462  	contract, err := bindData(address, nil, transactor, nil)
   463  	if err != nil {
   464  		return nil, err
   465  	}
   466  	return &DataTransactor{contract: contract}, nil
   467  }
   468  
   469  // NewDataFilterer creates a new log filterer instance of Data, bound to a specific deployed contract.
   470  func NewDataFilterer(address common.Address, filterer bind.ContractFilterer) (*DataFilterer, error) {
   471  	contract, err := bindData(address, nil, nil, filterer)
   472  	if err != nil {
   473  		return nil, err
   474  	}
   475  	return &DataFilterer{contract: contract}, nil
   476  }
   477  
   478  // bindData binds a generic wrapper to an already deployed contract.
   479  func bindData(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   480  	parsed, err := abi.JSON(strings.NewReader(DataABI))
   481  	if err != nil {
   482  		return nil, err
   483  	}
   484  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   485  }
   486  
   487  // Call invokes the (constant) contract method with params as input values and
   488  // sets the output to result. The result type might be a single field for simple
   489  // returns, a slice of interfaces for anonymous returns and a struct for named
   490  // returns.
   491  func (_Data *DataRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   492  	return _Data.Contract.DataCaller.contract.Call(opts, result, method, params...)
   493  }
   494  
   495  // Transfer initiates a plain transaction to move funds to the contract, calling
   496  // its default method if one is available.
   497  func (_Data *DataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   498  	return _Data.Contract.DataTransactor.contract.Transfer(opts)
   499  }
   500  
   501  // Transact invokes the (paid) contract method with params as input values.
   502  func (_Data *DataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   503  	return _Data.Contract.DataTransactor.contract.Transact(opts, method, params...)
   504  }
   505  
   506  // Call invokes the (constant) contract method with params as input values and
   507  // sets the output to result. The result type might be a single field for simple
   508  // returns, a slice of interfaces for anonymous returns and a struct for named
   509  // returns.
   510  func (_Data *DataCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   511  	return _Data.Contract.contract.Call(opts, result, method, params...)
   512  }
   513  
   514  // Transfer initiates a plain transaction to move funds to the contract, calling
   515  // its default method if one is available.
   516  func (_Data *DataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   517  	return _Data.Contract.contract.Transfer(opts)
   518  }
   519  
   520  // Transact invokes the (paid) contract method with params as input values.
   521  func (_Data *DataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   522  	return _Data.Contract.contract.Transact(opts, method, params...)
   523  }
   524  
   525  // APPLYINCHILDCHAINSIGNATURE is a free data retrieval call binding the contract method 0xa89ca766.
   526  //
   527  // Solidity: function APPLY_IN_CHILDCHAIN_SIGNATURE() constant returns(bytes4)
   528  func (_Data *DataCaller) APPLYINCHILDCHAINSIGNATURE(opts *bind.CallOpts) ([4]byte, error) {
   529  	var (
   530  		ret0 = new([4]byte)
   531  	)
   532  	out := ret0
   533  	err := _Data.contract.Call(opts, out, "APPLY_IN_CHILDCHAIN_SIGNATURE")
   534  	return *ret0, err
   535  }
   536  
   537  // APPLYINCHILDCHAINSIGNATURE is a free data retrieval call binding the contract method 0xa89ca766.
   538  //
   539  // Solidity: function APPLY_IN_CHILDCHAIN_SIGNATURE() constant returns(bytes4)
   540  func (_Data *DataSession) APPLYINCHILDCHAINSIGNATURE() ([4]byte, error) {
   541  	return _Data.Contract.APPLYINCHILDCHAINSIGNATURE(&_Data.CallOpts)
   542  }
   543  
   544  // APPLYINCHILDCHAINSIGNATURE is a free data retrieval call binding the contract method 0xa89ca766.
   545  //
   546  // Solidity: function APPLY_IN_CHILDCHAIN_SIGNATURE() constant returns(bytes4)
   547  func (_Data *DataCallerSession) APPLYINCHILDCHAINSIGNATURE() ([4]byte, error) {
   548  	return _Data.Contract.APPLYINCHILDCHAINSIGNATURE(&_Data.CallOpts)
   549  }
   550  
   551  // APPLYINROOTCHAINSIGNATURE is a free data retrieval call binding the contract method 0xa7b6ae28.
   552  //
   553  // Solidity: function APPLY_IN_ROOTCHAIN_SIGNATURE() constant returns(bytes4)
   554  func (_Data *DataCaller) APPLYINROOTCHAINSIGNATURE(opts *bind.CallOpts) ([4]byte, error) {
   555  	var (
   556  		ret0 = new([4]byte)
   557  	)
   558  	out := ret0
   559  	err := _Data.contract.Call(opts, out, "APPLY_IN_ROOTCHAIN_SIGNATURE")
   560  	return *ret0, err
   561  }
   562  
   563  // APPLYINROOTCHAINSIGNATURE is a free data retrieval call binding the contract method 0xa7b6ae28.
   564  //
   565  // Solidity: function APPLY_IN_ROOTCHAIN_SIGNATURE() constant returns(bytes4)
   566  func (_Data *DataSession) APPLYINROOTCHAINSIGNATURE() ([4]byte, error) {
   567  	return _Data.Contract.APPLYINROOTCHAINSIGNATURE(&_Data.CallOpts)
   568  }
   569  
   570  // APPLYINROOTCHAINSIGNATURE is a free data retrieval call binding the contract method 0xa7b6ae28.
   571  //
   572  // Solidity: function APPLY_IN_ROOTCHAIN_SIGNATURE() constant returns(bytes4)
   573  func (_Data *DataCallerSession) APPLYINROOTCHAINSIGNATURE() ([4]byte, error) {
   574  	return _Data.Contract.APPLYINROOTCHAINSIGNATURE(&_Data.CallOpts)
   575  }
   576  
   577  // NA is a free data retrieval call binding the contract method 0xab73ff05.
   578  //
   579  // Solidity: function NA() constant returns(address)
   580  func (_Data *DataCaller) NA(opts *bind.CallOpts) (common.Address, error) {
   581  	var (
   582  		ret0 = new(common.Address)
   583  	)
   584  	out := ret0
   585  	err := _Data.contract.Call(opts, out, "NA")
   586  	return *ret0, err
   587  }
   588  
   589  // NA is a free data retrieval call binding the contract method 0xab73ff05.
   590  //
   591  // Solidity: function NA() constant returns(address)
   592  func (_Data *DataSession) NA() (common.Address, error) {
   593  	return _Data.Contract.NA(&_Data.CallOpts)
   594  }
   595  
   596  // NA is a free data retrieval call binding the contract method 0xab73ff05.
   597  //
   598  // Solidity: function NA() constant returns(address)
   599  func (_Data *DataCallerSession) NA() (common.Address, error) {
   600  	return _Data.Contract.NA(&_Data.CallOpts)
   601  }
   602  
   603  // NATXGASLIMIT is a free data retrieval call binding the contract method 0x90e84f56.
   604  //
   605  // Solidity: function NA_TX_GAS_LIMIT() constant returns(uint256)
   606  func (_Data *DataCaller) NATXGASLIMIT(opts *bind.CallOpts) (*big.Int, error) {
   607  	var (
   608  		ret0 = new(*big.Int)
   609  	)
   610  	out := ret0
   611  	err := _Data.contract.Call(opts, out, "NA_TX_GAS_LIMIT")
   612  	return *ret0, err
   613  }
   614  
   615  // NATXGASLIMIT is a free data retrieval call binding the contract method 0x90e84f56.
   616  //
   617  // Solidity: function NA_TX_GAS_LIMIT() constant returns(uint256)
   618  func (_Data *DataSession) NATXGASLIMIT() (*big.Int, error) {
   619  	return _Data.Contract.NATXGASLIMIT(&_Data.CallOpts)
   620  }
   621  
   622  // NATXGASLIMIT is a free data retrieval call binding the contract method 0x90e84f56.
   623  //
   624  // Solidity: function NA_TX_GAS_LIMIT() constant returns(uint256)
   625  func (_Data *DataCallerSession) NATXGASLIMIT() (*big.Int, error) {
   626  	return _Data.Contract.NATXGASLIMIT(&_Data.CallOpts)
   627  }
   628  
   629  // NATXGASPRICE is a free data retrieval call binding the contract method 0x1927ac58.
   630  //
   631  // Solidity: function NA_TX_GAS_PRICE() constant returns(uint256)
   632  func (_Data *DataCaller) NATXGASPRICE(opts *bind.CallOpts) (*big.Int, error) {
   633  	var (
   634  		ret0 = new(*big.Int)
   635  	)
   636  	out := ret0
   637  	err := _Data.contract.Call(opts, out, "NA_TX_GAS_PRICE")
   638  	return *ret0, err
   639  }
   640  
   641  // NATXGASPRICE is a free data retrieval call binding the contract method 0x1927ac58.
   642  //
   643  // Solidity: function NA_TX_GAS_PRICE() constant returns(uint256)
   644  func (_Data *DataSession) NATXGASPRICE() (*big.Int, error) {
   645  	return _Data.Contract.NATXGASPRICE(&_Data.CallOpts)
   646  }
   647  
   648  // NATXGASPRICE is a free data retrieval call binding the contract method 0x1927ac58.
   649  //
   650  // Solidity: function NA_TX_GAS_PRICE() constant returns(uint256)
   651  func (_Data *DataCallerSession) NATXGASPRICE() (*big.Int, error) {
   652  	return _Data.Contract.NATXGASPRICE(&_Data.CallOpts)
   653  }
   654  
   655  // EpochHandlerABI is the input ABI used to generate the binding from.
   656  const EpochHandlerABI = "[{\"inputs\":[],\"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\":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\":false,\"inputs\":[],\"name\":\"prepareNRE\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"prepareNREAfterURE\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"prepareORE\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"prepareOREAfterURE\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"prepareToSubmitURB\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"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\"}]"
   657  
   658  // EpochHandlerFuncSigs maps the 4-byte function signature to its string representation.
   659  var EpochHandlerFuncSigs = map[string]string{
   660  	"d691acd8": "COST_ERO()",
   661  	"8b5172d0": "COST_ERU()",
   662  	"94be3aa5": "COST_NRB()",
   663  	"b2ae9ba8": "COST_ORB()",
   664  	"192adc5b": "COST_URB()",
   665  	"033cfbed": "COST_URB_PREPARE()",
   666  	"08c4fff0": "CP_COMPUTATION()",
   667  	"8155717d": "CP_EXIT()",
   668  	"b17fa6e9": "CP_WITHHOLDING()",
   669  	"2dc6bb7b": "EROIdToFinalize()",
   670  	"b443f3cc": "EROs(uint256)",
   671  	"c54626cc": "ERUIdToFinalize()",
   672  	"f4f31de4": "ERUs(uint256)",
   673  	"ab96da2d": "NRELength()",
   674  	"de0ce17d": "NULL_ADDRESS()",
   675  	"ea7f22a8": "ORBs(uint256)",
   676  	"c2bc88fa": "PREPARE_TIMEOUT()",
   677  	"8eb288ca": "REQUEST_GAS()",
   678  	"c0e86064": "URBs(uint256)",
   679  	"183d2d1c": "currentFork()",
   680  	"7b929c27": "development()",
   681  	"e7b88b80": "epochHandler()",
   682  	"b8066bcb": "etherToken()",
   683  	"72ecb9a8": "firstFilledORENumber(uint256)",
   684  	"ca6f6380": "firstNonEmptyRequestEpoch(uint256)",
   685  	"4ba3a126": "forks(uint256)",
   686  	"420bb4b8": "isRootChain()",
   687  	"fb788a27": "lastAppliedBlockNumber()",
   688  	"c8ad329f": "lastAppliedEpochNumber()",
   689  	"164bc2ae": "lastAppliedForkNumber()",
   690  	"b6715647": "lastNonEmptyRequestEpoch(uint256)",
   691  	"23691566": "numEnterForORB()",
   692  	"570ca735": "operator()",
   693  	"03787fa2": "prepareNRE()",
   694  	"5656225b": "prepareNREAfterURE()",
   695  	"12d87f07": "prepareORE()",
   696  	"5e9ef4f3": "prepareOREAfterURE()",
   697  	"e6925d08": "prepareToSubmitURB()",
   698  	"da0185f8": "requestableContracts(address)",
   699  	"6fb7f558": "seigManager()",
   700  	"e259faf7": "submitHandler()",
   701  }
   702  
   703  // EpochHandlerBin is the compiled bytecode used for deploying new contracts.
   704  var EpochHandlerBin = "0x608060405234801561001057600080fd5b50600180546001600160a01b031916301790556127da806100326000396000f3fe6080604052600436106102465760003560e01c806394be3aa511610139578063c8ad329f116100b6578063e259faf71161007a578063e259faf71461074a578063e6925d081461075f578063e7b88b8014610767578063ea7f22a81461077c578063f4f31de4146107a6578063fb788a27146107d057610246565b8063c8ad329f146106c3578063ca6f6380146106d8578063d691acd81461024b578063da0185f814610702578063de0ce17d1461073557610246565b8063b6715647116100fd578063b6715647146105e5578063b8066bcb1461060f578063c0e8606414610624578063c2bc88fa14610699578063c54626cc146106ae57610246565b806394be3aa51461024b578063ab96da2d1461049f578063b17fa6e9146104b4578063b2ae9ba81461024b578063b443f3cc146104c957610246565b80634ba3a126116101c757806372ecb9a81161018b57806372ecb9a8146104215780637b929c271461044b5780638155717d146104605780638b5172d0146104755780638eb288ca1461048a57610246565b80634ba3a1261461032b5780635656225b146103cb578063570ca735146103d35780635e9ef4f3146104045780636fb7f5581461040c57610246565b8063183d2d1c1161020e578063183d2d1c146102ae578063192adc5b146102c357806323691566146102d85780632dc6bb7b146102ed578063420bb4b81461030257610246565b8063033cfbed1461024b57806303787fa21461027257806308c4fff01461027c57806312d87f0714610291578063164bc2ae14610299575b600080fd5b34801561025757600080fd5b506102606107e5565b60408051918252519081900360200190f35b61027a6107ef565b005b34801561028857600080fd5b50610260610972565b61027a610977565b3480156102a557600080fd5b50610260611173565b3480156102ba57600080fd5b50610260611179565b3480156102cf57600080fd5b5061026061117f565b3480156102e457600080fd5b50610260611189565b3480156102f957600080fd5b5061026061118f565b34801561030e57600080fd5b50610317611195565b604080519115158252519081900360200190f35b34801561033757600080fd5b506103556004803603602081101561034e57600080fd5b503561119a565b604080516001600160401b039d8e1681529b8d1660208d0152998c168b8b0152978b1660608b0152958a1660808a015293891660a089015291881660c0880152871660e0870152861661010086015285166101208501529093166101408301529115156101608201529051908190036101800190f35b61027a611211565b3480156103df57600080fd5b506103e86113eb565b604080516001600160a01b039092168252519081900360200190f35b61027a6113ff565b34801561041857600080fd5b506103e86115f6565b34801561042d57600080fd5b506102606004803603602081101561044457600080fd5b5035611605565b34801561045757600080fd5b50610317611617565b34801561046c57600080fd5b50610260611620565b34801561048157600080fd5b50610260611625565b34801561049657600080fd5b5061026061162f565b3480156104ab57600080fd5b50610260611636565b3480156104c057600080fd5b5061026061163c565b3480156104d557600080fd5b506104f3600480360360208110156104ec57600080fd5b5035611641565b604080516001600160401b038d1681528b15156020808301919091528b151592820192909252891515606082015288151560808201526001600160801b03881660a08201526001600160a01b0380881660c0830152861660e082015261010081018590526101208101849052610160610140820181815284519183019190915283519192909161018084019185019080838360005b838110156105a0578181015183820152602001610588565b50505050905090810190601f1680156105cd5780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060405180910390f35b3480156105f157600080fd5b506102606004803603602081101561060857600080fd5b5035611762565b34801561061b57600080fd5b506103e8611774565b34801561063057600080fd5b5061064e6004803603602081101561064757600080fd5b5035611783565b6040805196151587526001600160401b03958616602088015293851686850152918416606086015290921660808401526001600160a01b0390911660a0830152519081900360c00190f35b3480156106a557600080fd5b506102606117ea565b3480156106ba57600080fd5b506102606117ef565b3480156106cf57600080fd5b506102606117f5565b3480156106e457600080fd5b50610260600480360360208110156106fb57600080fd5b50356117fb565b34801561070e57600080fd5b506103e86004803603602081101561072557600080fd5b50356001600160a01b031661180d565b34801561074157600080fd5b506103e8611828565b34801561075657600080fd5b506103e861182d565b61027a61183c565b34801561077357600080fd5b506103e8611d45565b34801561078857600080fd5b5061064e6004803603602081101561079f57600080fd5b5035611d54565b3480156107b257600080fd5b506104f3600480360360208110156107c957600080fd5b5035611d61565b3480156107dc57600080fd5b50610260611d6e565b6509184e72a00081565b600654600081815260086020526040902090158061081857506002810154600160c01b900460ff165b61082157600080fd5b805460016001600160401b03600160801b90920482168101918216600081815260038501602052604090209190811461088857508254600160801b90046001600160401b039081166000908152600385016020526040902054600160401b90048116600101165b8154600160c81b60ff60c81b1990911617600160801b600160c01b031916600160801b426001600160401b0390811691909102919091176001600160401b03191682821617808455600554600160401b600160801b0319909116600160401b91840160001901831682021780855560065460408051918252878516602083015282851682820152928204909316606084015260006080840181905260a0840181905260c0840181905260e0840181905261010084015260ff600160e01b9091041615156101208301525160008051602061278683398151915291610140908290030190a150505050565b600f81565b60065460008181526008602052604090209015806109a057506002810154600160c01b900460ff165b6109a957600080fd5b8054600160801b908190046001600160401b03908116600181810180841660009081526003808801602052604080832091909501861682529381208454600160c81b60ff60c81b1990911617600160801b600160c01b0319164287169097029690961784558554600160d01b60ff60d01b19909116178655600d805487850180546001600160c01b0316600160c01b928916830217905591905591830154909492939190041615610af05760028401546001600160401b0316610a88576002840180546001600160401b0319166001600160401b038516179055610ac9565b600284810154600160401b90046001600160401b039081166000908152600387016020526040902090910180546001600160401b0319169185169190911790555b600284018054600160401b600160801b031916600160401b6001600160401b038616021790555b600654600090815260076020526040902054158015610b1857508154600160c01b900460ff16155b15610b3b5760065460009081526007602052604090206001600160401b03841690555b8154600090600160c01b900460ff16610b8557600180840154610b80916001600160401b03808316600160401b9093048116929092030116610b7b611d74565b611d79565b610b88565b60005b8354909150600160c01b900460ff1615610bef576001600160401b0360001985018116600090815260038701602052604090205484546001600160401b031916600160401b9182900483161791821602600160401b600160801b0319909116178355610c68565b6001600160401b03600019850181166000908152600387016020526040902054610c2991600160401b90910416600163ffffffff611db016565b8354600160401b600160801b03196001600160401b03199091166001600160401b0392831617908116600160401b918316840160001901909216021783555b6009541580610c9357506001830154600954600160401b9091046001600160401b0316600019909101145b15610caa57815460ff60c01b1916600160c01b1782555b8154600160c01b900460ff16610e89576006546000908152600760205260409020546001600160401b038516148015610ceb57508254600160e01b900460ff165b15610d4f576001808401805484830180546001600160401b03600160401b9093048316850183166001600160401b0319909116178082559254600160801b908190048316909401909116909202600160801b600160c01b0319909116179055610e84565b600654600090815260076020526040902054610db9576001808401805491840180546001600160401b0319166001600160401b03600160401b9094048416178082559154600160801b90819004909316909202600160801b600160c01b0319909116179055610e84565b8254600160c01b900460ff16610e29576001808401805484830180546001600160401b03600160401b909304831690940182166001600160401b0319909416939093178084559154600160801b908190048216850190911602600160801b600160c01b0319909116179055610e84565b6001808401805484830180546001600160401b03600160401b9093048316850183166001600160401b0319909116178082559254600160801b908190048316909401909116909202600160801b600160c01b03199091161790555b610f3c565b6001838101549083018054600160401b9092046001600160401b03166001600160401b03199092169190911790558254600160c01b900460ff16610f08576001838101549083018054600160801b600160c01b031916600160801b928390046001600160401b0390811685016000190116909202919091179055610f3c565b6001838101549083018054600160801b600160c01b031916600160801b928390046001600160401b03169092029190911790555b8254600160c01b900460ff16610fed576006546000908152600f6020526040902054610f80576006546000908152600f602052604090206001600160401b03851690555b6006546000908152600e60205260409020548015610fce57600081815260038701602052604090206002018054600160401b600160801b031916600160401b6001600160401b038816021790555b506006546000908152600e602052604090206001600160401b03851690555b8154600160c01b900460ff161561102b57600182018054600160401b6001600160401b03821602600160401b600160801b0319909116179055611099565b60095460018381018054600160401b600160801b031916600160401b6000199094016001600160401b03169390930292909217909155600b805461106f9083611dce565b8154811061107957fe5b60009182526020909120600290910201805460ff19169115159190911790555b6006548354600180860154604080519485526001600160401b03808a16602087015280851686830152600160401b80860482166060880152838216608088015290920490911660a085015260ff600160c01b84048116151560c086015260e08501929092526000610100850152600160e01b90920416151561012083015251600080516020612786833981519152918190036101400190a18254600160c01b900460ff161561116c578454600160801b600160c01b031916600160801b6001600160401b0386160217855561116c6107ef565b5050505050565b60105481565b60065481565b6551dac207a00081565b600d5481565b60135481565b600181565b6008602052600090815260409020805460018201546002909201546001600160401b0380831693600160401b808504831694600160801b808204851695600160c01b92839004861695858116958581048216958482048316959182900483169484841694918204841693908204169160ff9104168c565b6006546000818152600860208190526040822092611251918491849061123e90600163ffffffff611dce16565b8152602001908152602001600020611de3565b825460065460016001600160401b03600160801b90930483168101808416600081815260038901602090815260408083205481519788529187019390935290951684820152606084018590526080840185905260a0840185905285151560c085015260e0840185905261010084019490945261012083019190915291519293509091600080516020612786833981519152918190036101400190a181156113e6576001808401546001600160401b03838116600081815260038801602090815260408083208054600160401b9787168802600160401b600160801b03199091161781558a54600160801b8602600160801b600160c01b0319909116178b5560028b01805460ff60c01b1916600160c01b1790556006548154918901548351918252938101959095528086168583015286900485166060850152818516608085015294900490921660a082015260c081019390935260e08301819052610100830152517f030c1c69405c93021f28f57557240dee939a320b826a1fd0d39bf6e629ecab47918190036101200190a16113e66107ef565b505050565b60005461010090046001600160a01b031681565b6006546000818152600860208190526040822092611441918491849061142c90600163ffffffff611dce16565b8152602001908152602001600020600b6120a5565b8254909150600160801b90046001600160401b03166001018161147c5760065460009081526007602052604090206001600160401b03821690555b6006546001600160401b0380831660008181526003870160209081526040808320805460019182015483519889529388019590955284861687830152600160401b948590048616606088015282861660808801529390910490931660a085015285151560c085015260e0840182905261010084015261012083015251600080516020612786833981519152918190036101400190a181156113e6576001808401546001600160401b03838116600081815260038801602090815260408083208054600160401b9787168802600160401b600160801b03199091161781558a54600160801b8602600160801b600160c01b0319909116178b556006548154918901548351918252938101959095528086168583015286900485166060850152818516608085015294900490921660a082015260c0810184905260e0810193909352610100830152517f030c1c69405c93021f28f57557240dee939a320b826a1fd0d39bf6e629ecab47918190036101200190a16113e6611211565b6004546001600160a01b031681565b60076020526000908152604090205481565b60005460ff1681565b600a81565b6512309ce5400081565b620186a081565b60055481565b601481565b6009818154811061164e57fe5b6000918252602091829020600691909102018054600180830154600280850154600386015460048701546005880180546040805161010099831615999099026000190190911695909504601f81018b90048b0288018b019095528487526001600160401b0388169a50600160401b880460ff9081169a600160481b8a0482169a600160501b8b0483169a600160581b810490931699600160601b9093046001600160801b0316986001600160a01b03908116989716969093918301828280156117585780601f1061172d57610100808354040283529160200191611758565b820191906000526020600020905b81548152906001019060200180831161173b57829003601f168201915b505050505090508b565b600e6020526000908152604090205481565b6003546001600160a01b031681565b600c818154811061179057fe5b60009182526020909120600290910201805460019091015460ff821692506001600160401b036101008304811692600160481b8104821692600160881b9091048216918116906001600160a01b03600160401b9091041686565b603c81565b60145481565b60115481565b600f6020526000908152604090205481565b6015602052600090815260409020546001600160a01b031681565b600081565b6002546001600160a01b031681565b600654600081815260086020908152604080832060018086018552828520818301805484546001600160401b03600160801b928390048116860181166001600160401b0319909216919091178087558454600160c01b91831682026001600160c01b039182161780875582810484168c52600489018b52898c2054600160401b9085168102600160401b600160801b03199092169190911781810485168602600160801b600160c01b031991821617808955965498880180544287169586029a8890048716880290831617909316989098179091559093041688526003830190965293909520805460ff60d81b1960ff60d01b199590960260ff60c81b19909116600160c81b179092169190911792909216600160d01b1792909216600160d81b178155909215908161199f5783546001600160401b03600160401b918290048116600090815260038701602052604090206001908101549290920416016119a2565b60005b6001820180546001600160401b0319166001600160401b0392831617808255600a54600160401b600160801b0319909116600160401b60001990920184168202179182905581048216911611156119f557fe5b6001810154600090611a1a906001600160401b0380821691600160401b90041661249b565b845483546001600160401b0319166001600160401b03600160c01b909204821617808555919250611a6e91600191611a5991168463ffffffff611db016565b6001600160401b03169063ffffffff6124d516565b82546001600160401b0391909116600160401b02600160401b600160801b031990911617825582611b355784546001600160401b03600160401b9182900481166000908152600388016020526040902054611b3092611af492600192611adf9281048216911663ffffffff6124d516565b6001600160401b03169063ffffffff611db016565b86546001600160401b03600160401b90910481166000908152600389016020526040902060010154600160801b9004169063ffffffff611db016565b611b38565b60005b6001830180546001600160401b0392909216600160801b02600160801b600160c01b031990921691909117905560005b816001600160401b0316816001600160401b03161015611c945782546001906004870190600090611ba8906001600160401b03168563ffffffff611db016565b6001600160401b03908116825260208201929092526040016000908120600501805460ff191693151593909317909255845460019260048901929091611bef911685611db0565b6001600160401b0390811682526020820192909252604001600090812060050180549315156101000261ff00199094169390931790925560018501548554600160801b909104821684019260048901929091611c5291168563ffffffff611db016565b6001600160401b03908116825260208201929092526040016000208054600160401b600160801b031916600160401b9390921692909202179055600101611b68565b5060065484548354600185810154604080519290950182526001600160401b03600160401b94859004811660208401528381168387015284840481166060840152818116608084015293900490921660a0830152600060c083015260ff600160d01b82048116151560e0840152600160d81b820481161515610100840152600160e01b9091041615156101208201529051600080516020612786833981519152918190036101400190a15050505050565b6001546001600160a01b031681565b600b818154811061179057fe5b600a818154811061164e57fe5b60125481565b601490565b6000818381611d8457fe5b0615611d9c57818381611d9357fe5b04600101611da7565b818381611da557fe5b045b90505b92915050565b60008282016001600160401b038085169082161015611da757600080fd5b600082821115611ddd57600080fd5b50900390565b6002820154600090600160c01b900460ff1615611dff57600080fd5b8254600160801b90046001600160401b0316600090815260038401602052604090208054600160e01b900460ff168015611e4157508054600160d01b900460ff165b8015611e5657508054600160d81b900460ff16155b611e5f57600080fd5b5060018381015484546001600160401b03600160801b91829004811660009081526003808901602081815260408085208054600160401b600160801b031916988716600160401b02989098179097558a548a548616855260048b0182528785205490879004861690980180861685529181528684208054600160e01b600160c81b60ff60c81b199092169190911760ff60e01b191617600160801b600160c01b031916428716909702969096178655969093168083529088019095529283205491939092909160ff600160d01b9091041615611f3e5781600101611f40565b815b6000818152600388016020526040902054909150600160c81b900460ff16611fca575050506001848101805483546001600160401b039182166001600160401b0319909116178085559154600160c01b600160401b600160801b03199093169116600160401b021760ff60c01b199081168217909355600286018054909316179091559050611daa565b6000818152600387016020526040902054600160d01b900460ff1615611fec57fe5b60018781015461200d916001600160401b039091169063ffffffff611db016565b84546001600160401b0319166001600160401b039190911617845581811461204e5760008181526003870160205260409020546001600160401b031661205a565b85546001600160401b03165b600288018054600160801b600160c01b031916600160801b6001600160401b0393841681029190911791829055885483169104909116101561209857fe5b5060009695505050505050565b6002830154600090600160c01b900460ff16156120c157600080fd5b8354600160801b90046001600160401b0316600090815260038501602052604090208054600160d01b900460ff16801561210357508054600160d81b900460ff165b61210c57600080fd5b50835483546001600160401b039081166000908152600486016020908152604080832054600160801b95869004851660010180861685526003808c0185528386208054600160e01b600160d01b600160c81b60ff60c81b199093169290921760ff60d01b1916821760ff60e01b191617600160801b600160c01b031916428a16909a0299909917815592909616808652958a019093529083205490949193929160ff9104166121be57816001016121c0565b815b90506121ca6124f6565b600187018054600160401b600160801b031916600160401b6001600160401b0393841602176001600160401b03191692821692909217600160801b600160c01b031916600160801b93909116929092029190911790556000818152600388016020526040902054600160c81b900460ff166122a0575050815460ff60c01b1916600160c01b17808355600187810180546001600160401b03199093166001600160401b03938416178086559054600160401b931692909202600160401b600160801b031990921691909117909255509050612494565b6000818152600388016020526040902054600160d01b900460ff166122c157fe5b60028701548454600160c01b6001600160401b03600160401b909304929092168411820260ff60c01b19909116178086550460ff1615612344575050506001808601805483546001600160401b0319166001600160401b03918216178085559154600160401b911602600160401b600160801b0319909116179091559050612494565b805b6000828152600389016020526040902060010154600160c01b90046001600160401b031661237657600201612346565b600189810154612397916001600160401b039091169063ffffffff611db016565b85546001600160401b0319166001600160401b03918216178655600082815260038a016020908152604080832054841680845260048d019092528220548a5491938b92600160401b909204169081106123ec57fe5b906000526020600020906002020190505b805461010090046001600160401b031661245d57600191909101600081815260048b01602052604090205489549192918a91600160401b90046001600160401b031690811061244857fe5b906000526020600020906002020190506123fd565b5060028a0180546001600160401b03909216600160801b02600160801b600160c01b03199092169190911790555060009450505050505b9392505050565b6000611da76124a8611d74565b6124c960016124bd868863ffffffff611dce16565b9063ffffffff61273716565b9063ffffffff611d7916565b6000826001600160401b0316826001600160401b03161115611ddd57600080fd5b6000806000806125126001600654611dce90919063ffffffff16565b90505b60008181526008602052604081209061252d82612749565b82546001600160401b03600160801b90910481166001018116600090815260038501602052604081205492909116925090600160d01b900460ff16612583578254600160801b90046001600160401b0316612599565b8254600160801b90046001600160401b03166001015b6001600160401b031690505b80821115612653576125be84600163ffffffff611dce16565b600081815260086020526040902090945092506125da83612749565b83546001600160401b03600160801b90910481166001018116600090815260038601602052604090205491169250600160d01b900460ff1661262d578254600160801b90046001600160401b0316612643565b8254600160801b90046001600160401b03166001015b6001600160401b031690506125a5565b6000818152600384016020526040902054600160c81b900460ff16156127175782546001600160401b0390811660009081526004850160209081526040808320549093168083526003870190915291902054600160d01b900460ff166126b7576001015b6000908152600384016020908152604080832093835280832080546001600160401b0390811685526004909701909252909120546001928301549290910154600160401b9182900485169850918416965090049091169250612732915050565b61272884600163ffffffff611dce16565b9350505050612515565b909192565b600082820183811015611da757600080fd5b80546000906001600160401b031661276057600080fd5b5080546001600160401b0390811660009081526004830160205260409020541691905056fe1a69c0760aa329b76f72579129869013ebd3d41594db019c0e997b939fcb32e3a265627a7a72315820d026c7bc076d20dbc9dd79bc69a40fe3bae5cbc9bb207c931b92eb4ed325519564736f6c634300050c0032"
   705  
   706  // DeployEpochHandler deploys a new Ethereum contract, binding an instance of EpochHandler to it.
   707  func DeployEpochHandler(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *EpochHandler, error) {
   708  	parsed, err := abi.JSON(strings.NewReader(EpochHandlerABI))
   709  	if err != nil {
   710  		return common.Address{}, nil, nil, err
   711  	}
   712  
   713  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(EpochHandlerBin), backend)
   714  	if err != nil {
   715  		return common.Address{}, nil, nil, err
   716  	}
   717  	return address, tx, &EpochHandler{EpochHandlerCaller: EpochHandlerCaller{contract: contract}, EpochHandlerTransactor: EpochHandlerTransactor{contract: contract}, EpochHandlerFilterer: EpochHandlerFilterer{contract: contract}}, nil
   718  }
   719  
   720  // EpochHandler is an auto generated Go binding around an Ethereum contract.
   721  type EpochHandler struct {
   722  	EpochHandlerCaller     // Read-only binding to the contract
   723  	EpochHandlerTransactor // Write-only binding to the contract
   724  	EpochHandlerFilterer   // Log filterer for contract events
   725  }
   726  
   727  // EpochHandlerCaller is an auto generated read-only Go binding around an Ethereum contract.
   728  type EpochHandlerCaller struct {
   729  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   730  }
   731  
   732  // EpochHandlerTransactor is an auto generated write-only Go binding around an Ethereum contract.
   733  type EpochHandlerTransactor struct {
   734  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   735  }
   736  
   737  // EpochHandlerFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   738  type EpochHandlerFilterer struct {
   739  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   740  }
   741  
   742  // EpochHandlerSession is an auto generated Go binding around an Ethereum contract,
   743  // with pre-set call and transact options.
   744  type EpochHandlerSession struct {
   745  	Contract     *EpochHandler     // Generic contract binding to set the session for
   746  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   747  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   748  }
   749  
   750  // EpochHandlerCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   751  // with pre-set call options.
   752  type EpochHandlerCallerSession struct {
   753  	Contract *EpochHandlerCaller // Generic contract caller binding to set the session for
   754  	CallOpts bind.CallOpts       // Call options to use throughout this session
   755  }
   756  
   757  // EpochHandlerTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   758  // with pre-set transact options.
   759  type EpochHandlerTransactorSession struct {
   760  	Contract     *EpochHandlerTransactor // Generic contract transactor binding to set the session for
   761  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
   762  }
   763  
   764  // EpochHandlerRaw is an auto generated low-level Go binding around an Ethereum contract.
   765  type EpochHandlerRaw struct {
   766  	Contract *EpochHandler // Generic contract binding to access the raw methods on
   767  }
   768  
   769  // EpochHandlerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   770  type EpochHandlerCallerRaw struct {
   771  	Contract *EpochHandlerCaller // Generic read-only contract binding to access the raw methods on
   772  }
   773  
   774  // EpochHandlerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   775  type EpochHandlerTransactorRaw struct {
   776  	Contract *EpochHandlerTransactor // Generic write-only contract binding to access the raw methods on
   777  }
   778  
   779  // NewEpochHandler creates a new instance of EpochHandler, bound to a specific deployed contract.
   780  func NewEpochHandler(address common.Address, backend bind.ContractBackend) (*EpochHandler, error) {
   781  	contract, err := bindEpochHandler(address, backend, backend, backend)
   782  	if err != nil {
   783  		return nil, err
   784  	}
   785  	return &EpochHandler{EpochHandlerCaller: EpochHandlerCaller{contract: contract}, EpochHandlerTransactor: EpochHandlerTransactor{contract: contract}, EpochHandlerFilterer: EpochHandlerFilterer{contract: contract}}, nil
   786  }
   787  
   788  // NewEpochHandlerCaller creates a new read-only instance of EpochHandler, bound to a specific deployed contract.
   789  func NewEpochHandlerCaller(address common.Address, caller bind.ContractCaller) (*EpochHandlerCaller, error) {
   790  	contract, err := bindEpochHandler(address, caller, nil, nil)
   791  	if err != nil {
   792  		return nil, err
   793  	}
   794  	return &EpochHandlerCaller{contract: contract}, nil
   795  }
   796  
   797  // NewEpochHandlerTransactor creates a new write-only instance of EpochHandler, bound to a specific deployed contract.
   798  func NewEpochHandlerTransactor(address common.Address, transactor bind.ContractTransactor) (*EpochHandlerTransactor, error) {
   799  	contract, err := bindEpochHandler(address, nil, transactor, nil)
   800  	if err != nil {
   801  		return nil, err
   802  	}
   803  	return &EpochHandlerTransactor{contract: contract}, nil
   804  }
   805  
   806  // NewEpochHandlerFilterer creates a new log filterer instance of EpochHandler, bound to a specific deployed contract.
   807  func NewEpochHandlerFilterer(address common.Address, filterer bind.ContractFilterer) (*EpochHandlerFilterer, error) {
   808  	contract, err := bindEpochHandler(address, nil, nil, filterer)
   809  	if err != nil {
   810  		return nil, err
   811  	}
   812  	return &EpochHandlerFilterer{contract: contract}, nil
   813  }
   814  
   815  // bindEpochHandler binds a generic wrapper to an already deployed contract.
   816  func bindEpochHandler(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   817  	parsed, err := abi.JSON(strings.NewReader(EpochHandlerABI))
   818  	if err != nil {
   819  		return nil, err
   820  	}
   821  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   822  }
   823  
   824  // Call invokes the (constant) contract method with params as input values and
   825  // sets the output to result. The result type might be a single field for simple
   826  // returns, a slice of interfaces for anonymous returns and a struct for named
   827  // returns.
   828  func (_EpochHandler *EpochHandlerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   829  	return _EpochHandler.Contract.EpochHandlerCaller.contract.Call(opts, result, method, params...)
   830  }
   831  
   832  // Transfer initiates a plain transaction to move funds to the contract, calling
   833  // its default method if one is available.
   834  func (_EpochHandler *EpochHandlerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   835  	return _EpochHandler.Contract.EpochHandlerTransactor.contract.Transfer(opts)
   836  }
   837  
   838  // Transact invokes the (paid) contract method with params as input values.
   839  func (_EpochHandler *EpochHandlerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   840  	return _EpochHandler.Contract.EpochHandlerTransactor.contract.Transact(opts, method, params...)
   841  }
   842  
   843  // Call invokes the (constant) contract method with params as input values and
   844  // sets the output to result. The result type might be a single field for simple
   845  // returns, a slice of interfaces for anonymous returns and a struct for named
   846  // returns.
   847  func (_EpochHandler *EpochHandlerCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   848  	return _EpochHandler.Contract.contract.Call(opts, result, method, params...)
   849  }
   850  
   851  // Transfer initiates a plain transaction to move funds to the contract, calling
   852  // its default method if one is available.
   853  func (_EpochHandler *EpochHandlerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   854  	return _EpochHandler.Contract.contract.Transfer(opts)
   855  }
   856  
   857  // Transact invokes the (paid) contract method with params as input values.
   858  func (_EpochHandler *EpochHandlerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   859  	return _EpochHandler.Contract.contract.Transact(opts, method, params...)
   860  }
   861  
   862  // COSTERO is a free data retrieval call binding the contract method 0xd691acd8.
   863  //
   864  // Solidity: function COST_ERO() constant returns(uint256)
   865  func (_EpochHandler *EpochHandlerCaller) COSTERO(opts *bind.CallOpts) (*big.Int, error) {
   866  	var (
   867  		ret0 = new(*big.Int)
   868  	)
   869  	out := ret0
   870  	err := _EpochHandler.contract.Call(opts, out, "COST_ERO")
   871  	return *ret0, err
   872  }
   873  
   874  // COSTERO is a free data retrieval call binding the contract method 0xd691acd8.
   875  //
   876  // Solidity: function COST_ERO() constant returns(uint256)
   877  func (_EpochHandler *EpochHandlerSession) COSTERO() (*big.Int, error) {
   878  	return _EpochHandler.Contract.COSTERO(&_EpochHandler.CallOpts)
   879  }
   880  
   881  // COSTERO is a free data retrieval call binding the contract method 0xd691acd8.
   882  //
   883  // Solidity: function COST_ERO() constant returns(uint256)
   884  func (_EpochHandler *EpochHandlerCallerSession) COSTERO() (*big.Int, error) {
   885  	return _EpochHandler.Contract.COSTERO(&_EpochHandler.CallOpts)
   886  }
   887  
   888  // COSTERU is a free data retrieval call binding the contract method 0x8b5172d0.
   889  //
   890  // Solidity: function COST_ERU() constant returns(uint256)
   891  func (_EpochHandler *EpochHandlerCaller) COSTERU(opts *bind.CallOpts) (*big.Int, error) {
   892  	var (
   893  		ret0 = new(*big.Int)
   894  	)
   895  	out := ret0
   896  	err := _EpochHandler.contract.Call(opts, out, "COST_ERU")
   897  	return *ret0, err
   898  }
   899  
   900  // COSTERU is a free data retrieval call binding the contract method 0x8b5172d0.
   901  //
   902  // Solidity: function COST_ERU() constant returns(uint256)
   903  func (_EpochHandler *EpochHandlerSession) COSTERU() (*big.Int, error) {
   904  	return _EpochHandler.Contract.COSTERU(&_EpochHandler.CallOpts)
   905  }
   906  
   907  // COSTERU is a free data retrieval call binding the contract method 0x8b5172d0.
   908  //
   909  // Solidity: function COST_ERU() constant returns(uint256)
   910  func (_EpochHandler *EpochHandlerCallerSession) COSTERU() (*big.Int, error) {
   911  	return _EpochHandler.Contract.COSTERU(&_EpochHandler.CallOpts)
   912  }
   913  
   914  // COSTNRB is a free data retrieval call binding the contract method 0x94be3aa5.
   915  //
   916  // Solidity: function COST_NRB() constant returns(uint256)
   917  func (_EpochHandler *EpochHandlerCaller) COSTNRB(opts *bind.CallOpts) (*big.Int, error) {
   918  	var (
   919  		ret0 = new(*big.Int)
   920  	)
   921  	out := ret0
   922  	err := _EpochHandler.contract.Call(opts, out, "COST_NRB")
   923  	return *ret0, err
   924  }
   925  
   926  // COSTNRB is a free data retrieval call binding the contract method 0x94be3aa5.
   927  //
   928  // Solidity: function COST_NRB() constant returns(uint256)
   929  func (_EpochHandler *EpochHandlerSession) COSTNRB() (*big.Int, error) {
   930  	return _EpochHandler.Contract.COSTNRB(&_EpochHandler.CallOpts)
   931  }
   932  
   933  // COSTNRB is a free data retrieval call binding the contract method 0x94be3aa5.
   934  //
   935  // Solidity: function COST_NRB() constant returns(uint256)
   936  func (_EpochHandler *EpochHandlerCallerSession) COSTNRB() (*big.Int, error) {
   937  	return _EpochHandler.Contract.COSTNRB(&_EpochHandler.CallOpts)
   938  }
   939  
   940  // COSTORB is a free data retrieval call binding the contract method 0xb2ae9ba8.
   941  //
   942  // Solidity: function COST_ORB() constant returns(uint256)
   943  func (_EpochHandler *EpochHandlerCaller) COSTORB(opts *bind.CallOpts) (*big.Int, error) {
   944  	var (
   945  		ret0 = new(*big.Int)
   946  	)
   947  	out := ret0
   948  	err := _EpochHandler.contract.Call(opts, out, "COST_ORB")
   949  	return *ret0, err
   950  }
   951  
   952  // COSTORB is a free data retrieval call binding the contract method 0xb2ae9ba8.
   953  //
   954  // Solidity: function COST_ORB() constant returns(uint256)
   955  func (_EpochHandler *EpochHandlerSession) COSTORB() (*big.Int, error) {
   956  	return _EpochHandler.Contract.COSTORB(&_EpochHandler.CallOpts)
   957  }
   958  
   959  // COSTORB is a free data retrieval call binding the contract method 0xb2ae9ba8.
   960  //
   961  // Solidity: function COST_ORB() constant returns(uint256)
   962  func (_EpochHandler *EpochHandlerCallerSession) COSTORB() (*big.Int, error) {
   963  	return _EpochHandler.Contract.COSTORB(&_EpochHandler.CallOpts)
   964  }
   965  
   966  // COSTURB is a free data retrieval call binding the contract method 0x192adc5b.
   967  //
   968  // Solidity: function COST_URB() constant returns(uint256)
   969  func (_EpochHandler *EpochHandlerCaller) COSTURB(opts *bind.CallOpts) (*big.Int, error) {
   970  	var (
   971  		ret0 = new(*big.Int)
   972  	)
   973  	out := ret0
   974  	err := _EpochHandler.contract.Call(opts, out, "COST_URB")
   975  	return *ret0, err
   976  }
   977  
   978  // COSTURB is a free data retrieval call binding the contract method 0x192adc5b.
   979  //
   980  // Solidity: function COST_URB() constant returns(uint256)
   981  func (_EpochHandler *EpochHandlerSession) COSTURB() (*big.Int, error) {
   982  	return _EpochHandler.Contract.COSTURB(&_EpochHandler.CallOpts)
   983  }
   984  
   985  // COSTURB is a free data retrieval call binding the contract method 0x192adc5b.
   986  //
   987  // Solidity: function COST_URB() constant returns(uint256)
   988  func (_EpochHandler *EpochHandlerCallerSession) COSTURB() (*big.Int, error) {
   989  	return _EpochHandler.Contract.COSTURB(&_EpochHandler.CallOpts)
   990  }
   991  
   992  // COSTURBPREPARE is a free data retrieval call binding the contract method 0x033cfbed.
   993  //
   994  // Solidity: function COST_URB_PREPARE() constant returns(uint256)
   995  func (_EpochHandler *EpochHandlerCaller) COSTURBPREPARE(opts *bind.CallOpts) (*big.Int, error) {
   996  	var (
   997  		ret0 = new(*big.Int)
   998  	)
   999  	out := ret0
  1000  	err := _EpochHandler.contract.Call(opts, out, "COST_URB_PREPARE")
  1001  	return *ret0, err
  1002  }
  1003  
  1004  // COSTURBPREPARE is a free data retrieval call binding the contract method 0x033cfbed.
  1005  //
  1006  // Solidity: function COST_URB_PREPARE() constant returns(uint256)
  1007  func (_EpochHandler *EpochHandlerSession) COSTURBPREPARE() (*big.Int, error) {
  1008  	return _EpochHandler.Contract.COSTURBPREPARE(&_EpochHandler.CallOpts)
  1009  }
  1010  
  1011  // COSTURBPREPARE is a free data retrieval call binding the contract method 0x033cfbed.
  1012  //
  1013  // Solidity: function COST_URB_PREPARE() constant returns(uint256)
  1014  func (_EpochHandler *EpochHandlerCallerSession) COSTURBPREPARE() (*big.Int, error) {
  1015  	return _EpochHandler.Contract.COSTURBPREPARE(&_EpochHandler.CallOpts)
  1016  }
  1017  
  1018  // CPCOMPUTATION is a free data retrieval call binding the contract method 0x08c4fff0.
  1019  //
  1020  // Solidity: function CP_COMPUTATION() constant returns(uint256)
  1021  func (_EpochHandler *EpochHandlerCaller) CPCOMPUTATION(opts *bind.CallOpts) (*big.Int, error) {
  1022  	var (
  1023  		ret0 = new(*big.Int)
  1024  	)
  1025  	out := ret0
  1026  	err := _EpochHandler.contract.Call(opts, out, "CP_COMPUTATION")
  1027  	return *ret0, err
  1028  }
  1029  
  1030  // CPCOMPUTATION is a free data retrieval call binding the contract method 0x08c4fff0.
  1031  //
  1032  // Solidity: function CP_COMPUTATION() constant returns(uint256)
  1033  func (_EpochHandler *EpochHandlerSession) CPCOMPUTATION() (*big.Int, error) {
  1034  	return _EpochHandler.Contract.CPCOMPUTATION(&_EpochHandler.CallOpts)
  1035  }
  1036  
  1037  // CPCOMPUTATION is a free data retrieval call binding the contract method 0x08c4fff0.
  1038  //
  1039  // Solidity: function CP_COMPUTATION() constant returns(uint256)
  1040  func (_EpochHandler *EpochHandlerCallerSession) CPCOMPUTATION() (*big.Int, error) {
  1041  	return _EpochHandler.Contract.CPCOMPUTATION(&_EpochHandler.CallOpts)
  1042  }
  1043  
  1044  // CPEXIT is a free data retrieval call binding the contract method 0x8155717d.
  1045  //
  1046  // Solidity: function CP_EXIT() constant returns(uint256)
  1047  func (_EpochHandler *EpochHandlerCaller) CPEXIT(opts *bind.CallOpts) (*big.Int, error) {
  1048  	var (
  1049  		ret0 = new(*big.Int)
  1050  	)
  1051  	out := ret0
  1052  	err := _EpochHandler.contract.Call(opts, out, "CP_EXIT")
  1053  	return *ret0, err
  1054  }
  1055  
  1056  // CPEXIT is a free data retrieval call binding the contract method 0x8155717d.
  1057  //
  1058  // Solidity: function CP_EXIT() constant returns(uint256)
  1059  func (_EpochHandler *EpochHandlerSession) CPEXIT() (*big.Int, error) {
  1060  	return _EpochHandler.Contract.CPEXIT(&_EpochHandler.CallOpts)
  1061  }
  1062  
  1063  // CPEXIT is a free data retrieval call binding the contract method 0x8155717d.
  1064  //
  1065  // Solidity: function CP_EXIT() constant returns(uint256)
  1066  func (_EpochHandler *EpochHandlerCallerSession) CPEXIT() (*big.Int, error) {
  1067  	return _EpochHandler.Contract.CPEXIT(&_EpochHandler.CallOpts)
  1068  }
  1069  
  1070  // CPWITHHOLDING is a free data retrieval call binding the contract method 0xb17fa6e9.
  1071  //
  1072  // Solidity: function CP_WITHHOLDING() constant returns(uint256)
  1073  func (_EpochHandler *EpochHandlerCaller) CPWITHHOLDING(opts *bind.CallOpts) (*big.Int, error) {
  1074  	var (
  1075  		ret0 = new(*big.Int)
  1076  	)
  1077  	out := ret0
  1078  	err := _EpochHandler.contract.Call(opts, out, "CP_WITHHOLDING")
  1079  	return *ret0, err
  1080  }
  1081  
  1082  // CPWITHHOLDING is a free data retrieval call binding the contract method 0xb17fa6e9.
  1083  //
  1084  // Solidity: function CP_WITHHOLDING() constant returns(uint256)
  1085  func (_EpochHandler *EpochHandlerSession) CPWITHHOLDING() (*big.Int, error) {
  1086  	return _EpochHandler.Contract.CPWITHHOLDING(&_EpochHandler.CallOpts)
  1087  }
  1088  
  1089  // CPWITHHOLDING is a free data retrieval call binding the contract method 0xb17fa6e9.
  1090  //
  1091  // Solidity: function CP_WITHHOLDING() constant returns(uint256)
  1092  func (_EpochHandler *EpochHandlerCallerSession) CPWITHHOLDING() (*big.Int, error) {
  1093  	return _EpochHandler.Contract.CPWITHHOLDING(&_EpochHandler.CallOpts)
  1094  }
  1095  
  1096  // EROIdToFinalize is a free data retrieval call binding the contract method 0x2dc6bb7b.
  1097  //
  1098  // Solidity: function EROIdToFinalize() constant returns(uint256)
  1099  func (_EpochHandler *EpochHandlerCaller) EROIdToFinalize(opts *bind.CallOpts) (*big.Int, error) {
  1100  	var (
  1101  		ret0 = new(*big.Int)
  1102  	)
  1103  	out := ret0
  1104  	err := _EpochHandler.contract.Call(opts, out, "EROIdToFinalize")
  1105  	return *ret0, err
  1106  }
  1107  
  1108  // EROIdToFinalize is a free data retrieval call binding the contract method 0x2dc6bb7b.
  1109  //
  1110  // Solidity: function EROIdToFinalize() constant returns(uint256)
  1111  func (_EpochHandler *EpochHandlerSession) EROIdToFinalize() (*big.Int, error) {
  1112  	return _EpochHandler.Contract.EROIdToFinalize(&_EpochHandler.CallOpts)
  1113  }
  1114  
  1115  // EROIdToFinalize is a free data retrieval call binding the contract method 0x2dc6bb7b.
  1116  //
  1117  // Solidity: function EROIdToFinalize() constant returns(uint256)
  1118  func (_EpochHandler *EpochHandlerCallerSession) EROIdToFinalize() (*big.Int, error) {
  1119  	return _EpochHandler.Contract.EROIdToFinalize(&_EpochHandler.CallOpts)
  1120  }
  1121  
  1122  // EROs is a free data retrieval call binding the contract method 0xb443f3cc.
  1123  //
  1124  // 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)
  1125  func (_EpochHandler *EpochHandlerCaller) EROs(opts *bind.CallOpts, arg0 *big.Int) (struct {
  1126  	Timestamp  uint64
  1127  	IsExit     bool
  1128  	IsTransfer bool
  1129  	Finalized  bool
  1130  	Challenged bool
  1131  	Value      *big.Int
  1132  	Requestor  common.Address
  1133  	To         common.Address
  1134  	TrieKey    [32]byte
  1135  	Hash       [32]byte
  1136  	TrieValue  []byte
  1137  }, error) {
  1138  	ret := new(struct {
  1139  		Timestamp  uint64
  1140  		IsExit     bool
  1141  		IsTransfer bool
  1142  		Finalized  bool
  1143  		Challenged bool
  1144  		Value      *big.Int
  1145  		Requestor  common.Address
  1146  		To         common.Address
  1147  		TrieKey    [32]byte
  1148  		Hash       [32]byte
  1149  		TrieValue  []byte
  1150  	})
  1151  	out := ret
  1152  	err := _EpochHandler.contract.Call(opts, out, "EROs", arg0)
  1153  	return *ret, err
  1154  }
  1155  
  1156  // EROs is a free data retrieval call binding the contract method 0xb443f3cc.
  1157  //
  1158  // 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)
  1159  func (_EpochHandler *EpochHandlerSession) EROs(arg0 *big.Int) (struct {
  1160  	Timestamp  uint64
  1161  	IsExit     bool
  1162  	IsTransfer bool
  1163  	Finalized  bool
  1164  	Challenged bool
  1165  	Value      *big.Int
  1166  	Requestor  common.Address
  1167  	To         common.Address
  1168  	TrieKey    [32]byte
  1169  	Hash       [32]byte
  1170  	TrieValue  []byte
  1171  }, error) {
  1172  	return _EpochHandler.Contract.EROs(&_EpochHandler.CallOpts, arg0)
  1173  }
  1174  
  1175  // EROs is a free data retrieval call binding the contract method 0xb443f3cc.
  1176  //
  1177  // 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)
  1178  func (_EpochHandler *EpochHandlerCallerSession) EROs(arg0 *big.Int) (struct {
  1179  	Timestamp  uint64
  1180  	IsExit     bool
  1181  	IsTransfer bool
  1182  	Finalized  bool
  1183  	Challenged bool
  1184  	Value      *big.Int
  1185  	Requestor  common.Address
  1186  	To         common.Address
  1187  	TrieKey    [32]byte
  1188  	Hash       [32]byte
  1189  	TrieValue  []byte
  1190  }, error) {
  1191  	return _EpochHandler.Contract.EROs(&_EpochHandler.CallOpts, arg0)
  1192  }
  1193  
  1194  // ERUIdToFinalize is a free data retrieval call binding the contract method 0xc54626cc.
  1195  //
  1196  // Solidity: function ERUIdToFinalize() constant returns(uint256)
  1197  func (_EpochHandler *EpochHandlerCaller) ERUIdToFinalize(opts *bind.CallOpts) (*big.Int, error) {
  1198  	var (
  1199  		ret0 = new(*big.Int)
  1200  	)
  1201  	out := ret0
  1202  	err := _EpochHandler.contract.Call(opts, out, "ERUIdToFinalize")
  1203  	return *ret0, err
  1204  }
  1205  
  1206  // ERUIdToFinalize is a free data retrieval call binding the contract method 0xc54626cc.
  1207  //
  1208  // Solidity: function ERUIdToFinalize() constant returns(uint256)
  1209  func (_EpochHandler *EpochHandlerSession) ERUIdToFinalize() (*big.Int, error) {
  1210  	return _EpochHandler.Contract.ERUIdToFinalize(&_EpochHandler.CallOpts)
  1211  }
  1212  
  1213  // ERUIdToFinalize is a free data retrieval call binding the contract method 0xc54626cc.
  1214  //
  1215  // Solidity: function ERUIdToFinalize() constant returns(uint256)
  1216  func (_EpochHandler *EpochHandlerCallerSession) ERUIdToFinalize() (*big.Int, error) {
  1217  	return _EpochHandler.Contract.ERUIdToFinalize(&_EpochHandler.CallOpts)
  1218  }
  1219  
  1220  // ERUs is a free data retrieval call binding the contract method 0xf4f31de4.
  1221  //
  1222  // 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)
  1223  func (_EpochHandler *EpochHandlerCaller) ERUs(opts *bind.CallOpts, arg0 *big.Int) (struct {
  1224  	Timestamp  uint64
  1225  	IsExit     bool
  1226  	IsTransfer bool
  1227  	Finalized  bool
  1228  	Challenged bool
  1229  	Value      *big.Int
  1230  	Requestor  common.Address
  1231  	To         common.Address
  1232  	TrieKey    [32]byte
  1233  	Hash       [32]byte
  1234  	TrieValue  []byte
  1235  }, error) {
  1236  	ret := new(struct {
  1237  		Timestamp  uint64
  1238  		IsExit     bool
  1239  		IsTransfer bool
  1240  		Finalized  bool
  1241  		Challenged bool
  1242  		Value      *big.Int
  1243  		Requestor  common.Address
  1244  		To         common.Address
  1245  		TrieKey    [32]byte
  1246  		Hash       [32]byte
  1247  		TrieValue  []byte
  1248  	})
  1249  	out := ret
  1250  	err := _EpochHandler.contract.Call(opts, out, "ERUs", arg0)
  1251  	return *ret, err
  1252  }
  1253  
  1254  // ERUs is a free data retrieval call binding the contract method 0xf4f31de4.
  1255  //
  1256  // 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)
  1257  func (_EpochHandler *EpochHandlerSession) ERUs(arg0 *big.Int) (struct {
  1258  	Timestamp  uint64
  1259  	IsExit     bool
  1260  	IsTransfer bool
  1261  	Finalized  bool
  1262  	Challenged bool
  1263  	Value      *big.Int
  1264  	Requestor  common.Address
  1265  	To         common.Address
  1266  	TrieKey    [32]byte
  1267  	Hash       [32]byte
  1268  	TrieValue  []byte
  1269  }, error) {
  1270  	return _EpochHandler.Contract.ERUs(&_EpochHandler.CallOpts, arg0)
  1271  }
  1272  
  1273  // ERUs is a free data retrieval call binding the contract method 0xf4f31de4.
  1274  //
  1275  // 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)
  1276  func (_EpochHandler *EpochHandlerCallerSession) ERUs(arg0 *big.Int) (struct {
  1277  	Timestamp  uint64
  1278  	IsExit     bool
  1279  	IsTransfer bool
  1280  	Finalized  bool
  1281  	Challenged bool
  1282  	Value      *big.Int
  1283  	Requestor  common.Address
  1284  	To         common.Address
  1285  	TrieKey    [32]byte
  1286  	Hash       [32]byte
  1287  	TrieValue  []byte
  1288  }, error) {
  1289  	return _EpochHandler.Contract.ERUs(&_EpochHandler.CallOpts, arg0)
  1290  }
  1291  
  1292  // NRELength is a free data retrieval call binding the contract method 0xab96da2d.
  1293  //
  1294  // Solidity: function NRELength() constant returns(uint256)
  1295  func (_EpochHandler *EpochHandlerCaller) NRELength(opts *bind.CallOpts) (*big.Int, error) {
  1296  	var (
  1297  		ret0 = new(*big.Int)
  1298  	)
  1299  	out := ret0
  1300  	err := _EpochHandler.contract.Call(opts, out, "NRELength")
  1301  	return *ret0, err
  1302  }
  1303  
  1304  // NRELength is a free data retrieval call binding the contract method 0xab96da2d.
  1305  //
  1306  // Solidity: function NRELength() constant returns(uint256)
  1307  func (_EpochHandler *EpochHandlerSession) NRELength() (*big.Int, error) {
  1308  	return _EpochHandler.Contract.NRELength(&_EpochHandler.CallOpts)
  1309  }
  1310  
  1311  // NRELength is a free data retrieval call binding the contract method 0xab96da2d.
  1312  //
  1313  // Solidity: function NRELength() constant returns(uint256)
  1314  func (_EpochHandler *EpochHandlerCallerSession) NRELength() (*big.Int, error) {
  1315  	return _EpochHandler.Contract.NRELength(&_EpochHandler.CallOpts)
  1316  }
  1317  
  1318  // NULLADDRESS is a free data retrieval call binding the contract method 0xde0ce17d.
  1319  //
  1320  // Solidity: function NULL_ADDRESS() constant returns(address)
  1321  func (_EpochHandler *EpochHandlerCaller) NULLADDRESS(opts *bind.CallOpts) (common.Address, error) {
  1322  	var (
  1323  		ret0 = new(common.Address)
  1324  	)
  1325  	out := ret0
  1326  	err := _EpochHandler.contract.Call(opts, out, "NULL_ADDRESS")
  1327  	return *ret0, err
  1328  }
  1329  
  1330  // NULLADDRESS is a free data retrieval call binding the contract method 0xde0ce17d.
  1331  //
  1332  // Solidity: function NULL_ADDRESS() constant returns(address)
  1333  func (_EpochHandler *EpochHandlerSession) NULLADDRESS() (common.Address, error) {
  1334  	return _EpochHandler.Contract.NULLADDRESS(&_EpochHandler.CallOpts)
  1335  }
  1336  
  1337  // NULLADDRESS is a free data retrieval call binding the contract method 0xde0ce17d.
  1338  //
  1339  // Solidity: function NULL_ADDRESS() constant returns(address)
  1340  func (_EpochHandler *EpochHandlerCallerSession) NULLADDRESS() (common.Address, error) {
  1341  	return _EpochHandler.Contract.NULLADDRESS(&_EpochHandler.CallOpts)
  1342  }
  1343  
  1344  // ORBs is a free data retrieval call binding the contract method 0xea7f22a8.
  1345  //
  1346  // Solidity: function ORBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  1347  func (_EpochHandler *EpochHandlerCaller) ORBs(opts *bind.CallOpts, arg0 *big.Int) (struct {
  1348  	Submitted    bool
  1349  	NumEnter     uint64
  1350  	EpochNumber  uint64
  1351  	RequestStart uint64
  1352  	RequestEnd   uint64
  1353  	Trie         common.Address
  1354  }, error) {
  1355  	ret := new(struct {
  1356  		Submitted    bool
  1357  		NumEnter     uint64
  1358  		EpochNumber  uint64
  1359  		RequestStart uint64
  1360  		RequestEnd   uint64
  1361  		Trie         common.Address
  1362  	})
  1363  	out := ret
  1364  	err := _EpochHandler.contract.Call(opts, out, "ORBs", arg0)
  1365  	return *ret, err
  1366  }
  1367  
  1368  // ORBs is a free data retrieval call binding the contract method 0xea7f22a8.
  1369  //
  1370  // Solidity: function ORBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  1371  func (_EpochHandler *EpochHandlerSession) ORBs(arg0 *big.Int) (struct {
  1372  	Submitted    bool
  1373  	NumEnter     uint64
  1374  	EpochNumber  uint64
  1375  	RequestStart uint64
  1376  	RequestEnd   uint64
  1377  	Trie         common.Address
  1378  }, error) {
  1379  	return _EpochHandler.Contract.ORBs(&_EpochHandler.CallOpts, arg0)
  1380  }
  1381  
  1382  // ORBs is a free data retrieval call binding the contract method 0xea7f22a8.
  1383  //
  1384  // Solidity: function ORBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  1385  func (_EpochHandler *EpochHandlerCallerSession) ORBs(arg0 *big.Int) (struct {
  1386  	Submitted    bool
  1387  	NumEnter     uint64
  1388  	EpochNumber  uint64
  1389  	RequestStart uint64
  1390  	RequestEnd   uint64
  1391  	Trie         common.Address
  1392  }, error) {
  1393  	return _EpochHandler.Contract.ORBs(&_EpochHandler.CallOpts, arg0)
  1394  }
  1395  
  1396  // PREPARETIMEOUT is a free data retrieval call binding the contract method 0xc2bc88fa.
  1397  //
  1398  // Solidity: function PREPARE_TIMEOUT() constant returns(uint256)
  1399  func (_EpochHandler *EpochHandlerCaller) PREPARETIMEOUT(opts *bind.CallOpts) (*big.Int, error) {
  1400  	var (
  1401  		ret0 = new(*big.Int)
  1402  	)
  1403  	out := ret0
  1404  	err := _EpochHandler.contract.Call(opts, out, "PREPARE_TIMEOUT")
  1405  	return *ret0, err
  1406  }
  1407  
  1408  // PREPARETIMEOUT is a free data retrieval call binding the contract method 0xc2bc88fa.
  1409  //
  1410  // Solidity: function PREPARE_TIMEOUT() constant returns(uint256)
  1411  func (_EpochHandler *EpochHandlerSession) PREPARETIMEOUT() (*big.Int, error) {
  1412  	return _EpochHandler.Contract.PREPARETIMEOUT(&_EpochHandler.CallOpts)
  1413  }
  1414  
  1415  // PREPARETIMEOUT is a free data retrieval call binding the contract method 0xc2bc88fa.
  1416  //
  1417  // Solidity: function PREPARE_TIMEOUT() constant returns(uint256)
  1418  func (_EpochHandler *EpochHandlerCallerSession) PREPARETIMEOUT() (*big.Int, error) {
  1419  	return _EpochHandler.Contract.PREPARETIMEOUT(&_EpochHandler.CallOpts)
  1420  }
  1421  
  1422  // REQUESTGAS is a free data retrieval call binding the contract method 0x8eb288ca.
  1423  //
  1424  // Solidity: function REQUEST_GAS() constant returns(uint256)
  1425  func (_EpochHandler *EpochHandlerCaller) REQUESTGAS(opts *bind.CallOpts) (*big.Int, error) {
  1426  	var (
  1427  		ret0 = new(*big.Int)
  1428  	)
  1429  	out := ret0
  1430  	err := _EpochHandler.contract.Call(opts, out, "REQUEST_GAS")
  1431  	return *ret0, err
  1432  }
  1433  
  1434  // REQUESTGAS is a free data retrieval call binding the contract method 0x8eb288ca.
  1435  //
  1436  // Solidity: function REQUEST_GAS() constant returns(uint256)
  1437  func (_EpochHandler *EpochHandlerSession) REQUESTGAS() (*big.Int, error) {
  1438  	return _EpochHandler.Contract.REQUESTGAS(&_EpochHandler.CallOpts)
  1439  }
  1440  
  1441  // REQUESTGAS is a free data retrieval call binding the contract method 0x8eb288ca.
  1442  //
  1443  // Solidity: function REQUEST_GAS() constant returns(uint256)
  1444  func (_EpochHandler *EpochHandlerCallerSession) REQUESTGAS() (*big.Int, error) {
  1445  	return _EpochHandler.Contract.REQUESTGAS(&_EpochHandler.CallOpts)
  1446  }
  1447  
  1448  // URBs is a free data retrieval call binding the contract method 0xc0e86064.
  1449  //
  1450  // Solidity: function URBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  1451  func (_EpochHandler *EpochHandlerCaller) URBs(opts *bind.CallOpts, arg0 *big.Int) (struct {
  1452  	Submitted    bool
  1453  	NumEnter     uint64
  1454  	EpochNumber  uint64
  1455  	RequestStart uint64
  1456  	RequestEnd   uint64
  1457  	Trie         common.Address
  1458  }, error) {
  1459  	ret := new(struct {
  1460  		Submitted    bool
  1461  		NumEnter     uint64
  1462  		EpochNumber  uint64
  1463  		RequestStart uint64
  1464  		RequestEnd   uint64
  1465  		Trie         common.Address
  1466  	})
  1467  	out := ret
  1468  	err := _EpochHandler.contract.Call(opts, out, "URBs", arg0)
  1469  	return *ret, err
  1470  }
  1471  
  1472  // URBs is a free data retrieval call binding the contract method 0xc0e86064.
  1473  //
  1474  // Solidity: function URBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  1475  func (_EpochHandler *EpochHandlerSession) URBs(arg0 *big.Int) (struct {
  1476  	Submitted    bool
  1477  	NumEnter     uint64
  1478  	EpochNumber  uint64
  1479  	RequestStart uint64
  1480  	RequestEnd   uint64
  1481  	Trie         common.Address
  1482  }, error) {
  1483  	return _EpochHandler.Contract.URBs(&_EpochHandler.CallOpts, arg0)
  1484  }
  1485  
  1486  // URBs is a free data retrieval call binding the contract method 0xc0e86064.
  1487  //
  1488  // Solidity: function URBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  1489  func (_EpochHandler *EpochHandlerCallerSession) URBs(arg0 *big.Int) (struct {
  1490  	Submitted    bool
  1491  	NumEnter     uint64
  1492  	EpochNumber  uint64
  1493  	RequestStart uint64
  1494  	RequestEnd   uint64
  1495  	Trie         common.Address
  1496  }, error) {
  1497  	return _EpochHandler.Contract.URBs(&_EpochHandler.CallOpts, arg0)
  1498  }
  1499  
  1500  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
  1501  //
  1502  // Solidity: function currentFork() constant returns(uint256)
  1503  func (_EpochHandler *EpochHandlerCaller) CurrentFork(opts *bind.CallOpts) (*big.Int, error) {
  1504  	var (
  1505  		ret0 = new(*big.Int)
  1506  	)
  1507  	out := ret0
  1508  	err := _EpochHandler.contract.Call(opts, out, "currentFork")
  1509  	return *ret0, err
  1510  }
  1511  
  1512  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
  1513  //
  1514  // Solidity: function currentFork() constant returns(uint256)
  1515  func (_EpochHandler *EpochHandlerSession) CurrentFork() (*big.Int, error) {
  1516  	return _EpochHandler.Contract.CurrentFork(&_EpochHandler.CallOpts)
  1517  }
  1518  
  1519  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
  1520  //
  1521  // Solidity: function currentFork() constant returns(uint256)
  1522  func (_EpochHandler *EpochHandlerCallerSession) CurrentFork() (*big.Int, error) {
  1523  	return _EpochHandler.Contract.CurrentFork(&_EpochHandler.CallOpts)
  1524  }
  1525  
  1526  // Development is a free data retrieval call binding the contract method 0x7b929c27.
  1527  //
  1528  // Solidity: function development() constant returns(bool)
  1529  func (_EpochHandler *EpochHandlerCaller) Development(opts *bind.CallOpts) (bool, error) {
  1530  	var (
  1531  		ret0 = new(bool)
  1532  	)
  1533  	out := ret0
  1534  	err := _EpochHandler.contract.Call(opts, out, "development")
  1535  	return *ret0, err
  1536  }
  1537  
  1538  // Development is a free data retrieval call binding the contract method 0x7b929c27.
  1539  //
  1540  // Solidity: function development() constant returns(bool)
  1541  func (_EpochHandler *EpochHandlerSession) Development() (bool, error) {
  1542  	return _EpochHandler.Contract.Development(&_EpochHandler.CallOpts)
  1543  }
  1544  
  1545  // Development is a free data retrieval call binding the contract method 0x7b929c27.
  1546  //
  1547  // Solidity: function development() constant returns(bool)
  1548  func (_EpochHandler *EpochHandlerCallerSession) Development() (bool, error) {
  1549  	return _EpochHandler.Contract.Development(&_EpochHandler.CallOpts)
  1550  }
  1551  
  1552  // EpochHandler is a free data retrieval call binding the contract method 0xe7b88b80.
  1553  //
  1554  // Solidity: function epochHandler() constant returns(address)
  1555  func (_EpochHandler *EpochHandlerCaller) EpochHandler(opts *bind.CallOpts) (common.Address, error) {
  1556  	var (
  1557  		ret0 = new(common.Address)
  1558  	)
  1559  	out := ret0
  1560  	err := _EpochHandler.contract.Call(opts, out, "epochHandler")
  1561  	return *ret0, err
  1562  }
  1563  
  1564  // EpochHandler is a free data retrieval call binding the contract method 0xe7b88b80.
  1565  //
  1566  // Solidity: function epochHandler() constant returns(address)
  1567  func (_EpochHandler *EpochHandlerSession) EpochHandler() (common.Address, error) {
  1568  	return _EpochHandler.Contract.EpochHandler(&_EpochHandler.CallOpts)
  1569  }
  1570  
  1571  // EpochHandler is a free data retrieval call binding the contract method 0xe7b88b80.
  1572  //
  1573  // Solidity: function epochHandler() constant returns(address)
  1574  func (_EpochHandler *EpochHandlerCallerSession) EpochHandler() (common.Address, error) {
  1575  	return _EpochHandler.Contract.EpochHandler(&_EpochHandler.CallOpts)
  1576  }
  1577  
  1578  // EtherToken is a free data retrieval call binding the contract method 0xb8066bcb.
  1579  //
  1580  // Solidity: function etherToken() constant returns(address)
  1581  func (_EpochHandler *EpochHandlerCaller) EtherToken(opts *bind.CallOpts) (common.Address, error) {
  1582  	var (
  1583  		ret0 = new(common.Address)
  1584  	)
  1585  	out := ret0
  1586  	err := _EpochHandler.contract.Call(opts, out, "etherToken")
  1587  	return *ret0, err
  1588  }
  1589  
  1590  // EtherToken is a free data retrieval call binding the contract method 0xb8066bcb.
  1591  //
  1592  // Solidity: function etherToken() constant returns(address)
  1593  func (_EpochHandler *EpochHandlerSession) EtherToken() (common.Address, error) {
  1594  	return _EpochHandler.Contract.EtherToken(&_EpochHandler.CallOpts)
  1595  }
  1596  
  1597  // EtherToken is a free data retrieval call binding the contract method 0xb8066bcb.
  1598  //
  1599  // Solidity: function etherToken() constant returns(address)
  1600  func (_EpochHandler *EpochHandlerCallerSession) EtherToken() (common.Address, error) {
  1601  	return _EpochHandler.Contract.EtherToken(&_EpochHandler.CallOpts)
  1602  }
  1603  
  1604  // FirstFilledORENumber is a free data retrieval call binding the contract method 0x72ecb9a8.
  1605  //
  1606  // Solidity: function firstFilledORENumber(uint256 ) constant returns(uint256)
  1607  func (_EpochHandler *EpochHandlerCaller) FirstFilledORENumber(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
  1608  	var (
  1609  		ret0 = new(*big.Int)
  1610  	)
  1611  	out := ret0
  1612  	err := _EpochHandler.contract.Call(opts, out, "firstFilledORENumber", arg0)
  1613  	return *ret0, err
  1614  }
  1615  
  1616  // FirstFilledORENumber is a free data retrieval call binding the contract method 0x72ecb9a8.
  1617  //
  1618  // Solidity: function firstFilledORENumber(uint256 ) constant returns(uint256)
  1619  func (_EpochHandler *EpochHandlerSession) FirstFilledORENumber(arg0 *big.Int) (*big.Int, error) {
  1620  	return _EpochHandler.Contract.FirstFilledORENumber(&_EpochHandler.CallOpts, arg0)
  1621  }
  1622  
  1623  // FirstFilledORENumber is a free data retrieval call binding the contract method 0x72ecb9a8.
  1624  //
  1625  // Solidity: function firstFilledORENumber(uint256 ) constant returns(uint256)
  1626  func (_EpochHandler *EpochHandlerCallerSession) FirstFilledORENumber(arg0 *big.Int) (*big.Int, error) {
  1627  	return _EpochHandler.Contract.FirstFilledORENumber(&_EpochHandler.CallOpts, arg0)
  1628  }
  1629  
  1630  // FirstNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xca6f6380.
  1631  //
  1632  // Solidity: function firstNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  1633  func (_EpochHandler *EpochHandlerCaller) FirstNonEmptyRequestEpoch(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
  1634  	var (
  1635  		ret0 = new(*big.Int)
  1636  	)
  1637  	out := ret0
  1638  	err := _EpochHandler.contract.Call(opts, out, "firstNonEmptyRequestEpoch", arg0)
  1639  	return *ret0, err
  1640  }
  1641  
  1642  // FirstNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xca6f6380.
  1643  //
  1644  // Solidity: function firstNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  1645  func (_EpochHandler *EpochHandlerSession) FirstNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
  1646  	return _EpochHandler.Contract.FirstNonEmptyRequestEpoch(&_EpochHandler.CallOpts, arg0)
  1647  }
  1648  
  1649  // FirstNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xca6f6380.
  1650  //
  1651  // Solidity: function firstNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  1652  func (_EpochHandler *EpochHandlerCallerSession) FirstNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
  1653  	return _EpochHandler.Contract.FirstNonEmptyRequestEpoch(&_EpochHandler.CallOpts, arg0)
  1654  }
  1655  
  1656  // Forks is a free data retrieval call binding the contract method 0x4ba3a126.
  1657  //
  1658  // 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)
  1659  func (_EpochHandler *EpochHandlerCaller) Forks(opts *bind.CallOpts, arg0 *big.Int) (struct {
  1660  	ForkedBlock        uint64
  1661  	FirstEpoch         uint64
  1662  	LastEpoch          uint64
  1663  	FirstBlock         uint64
  1664  	LastBlock          uint64
  1665  	LastFinalizedEpoch uint64
  1666  	LastFinalizedBlock uint64
  1667  	Timestamp          uint64
  1668  	FirstEnterEpoch    uint64
  1669  	LastEnterEpoch     uint64
  1670  	NextBlockToRebase  uint64
  1671  	Rebased            bool
  1672  }, error) {
  1673  	ret := new(struct {
  1674  		ForkedBlock        uint64
  1675  		FirstEpoch         uint64
  1676  		LastEpoch          uint64
  1677  		FirstBlock         uint64
  1678  		LastBlock          uint64
  1679  		LastFinalizedEpoch uint64
  1680  		LastFinalizedBlock uint64
  1681  		Timestamp          uint64
  1682  		FirstEnterEpoch    uint64
  1683  		LastEnterEpoch     uint64
  1684  		NextBlockToRebase  uint64
  1685  		Rebased            bool
  1686  	})
  1687  	out := ret
  1688  	err := _EpochHandler.contract.Call(opts, out, "forks", arg0)
  1689  	return *ret, err
  1690  }
  1691  
  1692  // Forks is a free data retrieval call binding the contract method 0x4ba3a126.
  1693  //
  1694  // 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)
  1695  func (_EpochHandler *EpochHandlerSession) Forks(arg0 *big.Int) (struct {
  1696  	ForkedBlock        uint64
  1697  	FirstEpoch         uint64
  1698  	LastEpoch          uint64
  1699  	FirstBlock         uint64
  1700  	LastBlock          uint64
  1701  	LastFinalizedEpoch uint64
  1702  	LastFinalizedBlock uint64
  1703  	Timestamp          uint64
  1704  	FirstEnterEpoch    uint64
  1705  	LastEnterEpoch     uint64
  1706  	NextBlockToRebase  uint64
  1707  	Rebased            bool
  1708  }, error) {
  1709  	return _EpochHandler.Contract.Forks(&_EpochHandler.CallOpts, arg0)
  1710  }
  1711  
  1712  // Forks is a free data retrieval call binding the contract method 0x4ba3a126.
  1713  //
  1714  // 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)
  1715  func (_EpochHandler *EpochHandlerCallerSession) Forks(arg0 *big.Int) (struct {
  1716  	ForkedBlock        uint64
  1717  	FirstEpoch         uint64
  1718  	LastEpoch          uint64
  1719  	FirstBlock         uint64
  1720  	LastBlock          uint64
  1721  	LastFinalizedEpoch uint64
  1722  	LastFinalizedBlock uint64
  1723  	Timestamp          uint64
  1724  	FirstEnterEpoch    uint64
  1725  	LastEnterEpoch     uint64
  1726  	NextBlockToRebase  uint64
  1727  	Rebased            bool
  1728  }, error) {
  1729  	return _EpochHandler.Contract.Forks(&_EpochHandler.CallOpts, arg0)
  1730  }
  1731  
  1732  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
  1733  //
  1734  // Solidity: function isRootChain() constant returns(bool)
  1735  func (_EpochHandler *EpochHandlerCaller) IsRootChain(opts *bind.CallOpts) (bool, error) {
  1736  	var (
  1737  		ret0 = new(bool)
  1738  	)
  1739  	out := ret0
  1740  	err := _EpochHandler.contract.Call(opts, out, "isRootChain")
  1741  	return *ret0, err
  1742  }
  1743  
  1744  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
  1745  //
  1746  // Solidity: function isRootChain() constant returns(bool)
  1747  func (_EpochHandler *EpochHandlerSession) IsRootChain() (bool, error) {
  1748  	return _EpochHandler.Contract.IsRootChain(&_EpochHandler.CallOpts)
  1749  }
  1750  
  1751  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
  1752  //
  1753  // Solidity: function isRootChain() constant returns(bool)
  1754  func (_EpochHandler *EpochHandlerCallerSession) IsRootChain() (bool, error) {
  1755  	return _EpochHandler.Contract.IsRootChain(&_EpochHandler.CallOpts)
  1756  }
  1757  
  1758  // LastAppliedBlockNumber is a free data retrieval call binding the contract method 0xfb788a27.
  1759  //
  1760  // Solidity: function lastAppliedBlockNumber() constant returns(uint256)
  1761  func (_EpochHandler *EpochHandlerCaller) LastAppliedBlockNumber(opts *bind.CallOpts) (*big.Int, error) {
  1762  	var (
  1763  		ret0 = new(*big.Int)
  1764  	)
  1765  	out := ret0
  1766  	err := _EpochHandler.contract.Call(opts, out, "lastAppliedBlockNumber")
  1767  	return *ret0, err
  1768  }
  1769  
  1770  // LastAppliedBlockNumber is a free data retrieval call binding the contract method 0xfb788a27.
  1771  //
  1772  // Solidity: function lastAppliedBlockNumber() constant returns(uint256)
  1773  func (_EpochHandler *EpochHandlerSession) LastAppliedBlockNumber() (*big.Int, error) {
  1774  	return _EpochHandler.Contract.LastAppliedBlockNumber(&_EpochHandler.CallOpts)
  1775  }
  1776  
  1777  // LastAppliedBlockNumber is a free data retrieval call binding the contract method 0xfb788a27.
  1778  //
  1779  // Solidity: function lastAppliedBlockNumber() constant returns(uint256)
  1780  func (_EpochHandler *EpochHandlerCallerSession) LastAppliedBlockNumber() (*big.Int, error) {
  1781  	return _EpochHandler.Contract.LastAppliedBlockNumber(&_EpochHandler.CallOpts)
  1782  }
  1783  
  1784  // LastAppliedEpochNumber is a free data retrieval call binding the contract method 0xc8ad329f.
  1785  //
  1786  // Solidity: function lastAppliedEpochNumber() constant returns(uint256)
  1787  func (_EpochHandler *EpochHandlerCaller) LastAppliedEpochNumber(opts *bind.CallOpts) (*big.Int, error) {
  1788  	var (
  1789  		ret0 = new(*big.Int)
  1790  	)
  1791  	out := ret0
  1792  	err := _EpochHandler.contract.Call(opts, out, "lastAppliedEpochNumber")
  1793  	return *ret0, err
  1794  }
  1795  
  1796  // LastAppliedEpochNumber is a free data retrieval call binding the contract method 0xc8ad329f.
  1797  //
  1798  // Solidity: function lastAppliedEpochNumber() constant returns(uint256)
  1799  func (_EpochHandler *EpochHandlerSession) LastAppliedEpochNumber() (*big.Int, error) {
  1800  	return _EpochHandler.Contract.LastAppliedEpochNumber(&_EpochHandler.CallOpts)
  1801  }
  1802  
  1803  // LastAppliedEpochNumber is a free data retrieval call binding the contract method 0xc8ad329f.
  1804  //
  1805  // Solidity: function lastAppliedEpochNumber() constant returns(uint256)
  1806  func (_EpochHandler *EpochHandlerCallerSession) LastAppliedEpochNumber() (*big.Int, error) {
  1807  	return _EpochHandler.Contract.LastAppliedEpochNumber(&_EpochHandler.CallOpts)
  1808  }
  1809  
  1810  // LastAppliedForkNumber is a free data retrieval call binding the contract method 0x164bc2ae.
  1811  //
  1812  // Solidity: function lastAppliedForkNumber() constant returns(uint256)
  1813  func (_EpochHandler *EpochHandlerCaller) LastAppliedForkNumber(opts *bind.CallOpts) (*big.Int, error) {
  1814  	var (
  1815  		ret0 = new(*big.Int)
  1816  	)
  1817  	out := ret0
  1818  	err := _EpochHandler.contract.Call(opts, out, "lastAppliedForkNumber")
  1819  	return *ret0, err
  1820  }
  1821  
  1822  // LastAppliedForkNumber is a free data retrieval call binding the contract method 0x164bc2ae.
  1823  //
  1824  // Solidity: function lastAppliedForkNumber() constant returns(uint256)
  1825  func (_EpochHandler *EpochHandlerSession) LastAppliedForkNumber() (*big.Int, error) {
  1826  	return _EpochHandler.Contract.LastAppliedForkNumber(&_EpochHandler.CallOpts)
  1827  }
  1828  
  1829  // LastAppliedForkNumber is a free data retrieval call binding the contract method 0x164bc2ae.
  1830  //
  1831  // Solidity: function lastAppliedForkNumber() constant returns(uint256)
  1832  func (_EpochHandler *EpochHandlerCallerSession) LastAppliedForkNumber() (*big.Int, error) {
  1833  	return _EpochHandler.Contract.LastAppliedForkNumber(&_EpochHandler.CallOpts)
  1834  }
  1835  
  1836  // LastNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xb6715647.
  1837  //
  1838  // Solidity: function lastNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  1839  func (_EpochHandler *EpochHandlerCaller) LastNonEmptyRequestEpoch(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
  1840  	var (
  1841  		ret0 = new(*big.Int)
  1842  	)
  1843  	out := ret0
  1844  	err := _EpochHandler.contract.Call(opts, out, "lastNonEmptyRequestEpoch", arg0)
  1845  	return *ret0, err
  1846  }
  1847  
  1848  // LastNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xb6715647.
  1849  //
  1850  // Solidity: function lastNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  1851  func (_EpochHandler *EpochHandlerSession) LastNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
  1852  	return _EpochHandler.Contract.LastNonEmptyRequestEpoch(&_EpochHandler.CallOpts, arg0)
  1853  }
  1854  
  1855  // LastNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xb6715647.
  1856  //
  1857  // Solidity: function lastNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  1858  func (_EpochHandler *EpochHandlerCallerSession) LastNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
  1859  	return _EpochHandler.Contract.LastNonEmptyRequestEpoch(&_EpochHandler.CallOpts, arg0)
  1860  }
  1861  
  1862  // NumEnterForORB is a free data retrieval call binding the contract method 0x23691566.
  1863  //
  1864  // Solidity: function numEnterForORB() constant returns(uint256)
  1865  func (_EpochHandler *EpochHandlerCaller) NumEnterForORB(opts *bind.CallOpts) (*big.Int, error) {
  1866  	var (
  1867  		ret0 = new(*big.Int)
  1868  	)
  1869  	out := ret0
  1870  	err := _EpochHandler.contract.Call(opts, out, "numEnterForORB")
  1871  	return *ret0, err
  1872  }
  1873  
  1874  // NumEnterForORB is a free data retrieval call binding the contract method 0x23691566.
  1875  //
  1876  // Solidity: function numEnterForORB() constant returns(uint256)
  1877  func (_EpochHandler *EpochHandlerSession) NumEnterForORB() (*big.Int, error) {
  1878  	return _EpochHandler.Contract.NumEnterForORB(&_EpochHandler.CallOpts)
  1879  }
  1880  
  1881  // NumEnterForORB is a free data retrieval call binding the contract method 0x23691566.
  1882  //
  1883  // Solidity: function numEnterForORB() constant returns(uint256)
  1884  func (_EpochHandler *EpochHandlerCallerSession) NumEnterForORB() (*big.Int, error) {
  1885  	return _EpochHandler.Contract.NumEnterForORB(&_EpochHandler.CallOpts)
  1886  }
  1887  
  1888  // Operator is a free data retrieval call binding the contract method 0x570ca735.
  1889  //
  1890  // Solidity: function operator() constant returns(address)
  1891  func (_EpochHandler *EpochHandlerCaller) Operator(opts *bind.CallOpts) (common.Address, error) {
  1892  	var (
  1893  		ret0 = new(common.Address)
  1894  	)
  1895  	out := ret0
  1896  	err := _EpochHandler.contract.Call(opts, out, "operator")
  1897  	return *ret0, err
  1898  }
  1899  
  1900  // Operator is a free data retrieval call binding the contract method 0x570ca735.
  1901  //
  1902  // Solidity: function operator() constant returns(address)
  1903  func (_EpochHandler *EpochHandlerSession) Operator() (common.Address, error) {
  1904  	return _EpochHandler.Contract.Operator(&_EpochHandler.CallOpts)
  1905  }
  1906  
  1907  // Operator is a free data retrieval call binding the contract method 0x570ca735.
  1908  //
  1909  // Solidity: function operator() constant returns(address)
  1910  func (_EpochHandler *EpochHandlerCallerSession) Operator() (common.Address, error) {
  1911  	return _EpochHandler.Contract.Operator(&_EpochHandler.CallOpts)
  1912  }
  1913  
  1914  // RequestableContracts is a free data retrieval call binding the contract method 0xda0185f8.
  1915  //
  1916  // Solidity: function requestableContracts(address ) constant returns(address)
  1917  func (_EpochHandler *EpochHandlerCaller) RequestableContracts(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
  1918  	var (
  1919  		ret0 = new(common.Address)
  1920  	)
  1921  	out := ret0
  1922  	err := _EpochHandler.contract.Call(opts, out, "requestableContracts", arg0)
  1923  	return *ret0, err
  1924  }
  1925  
  1926  // RequestableContracts is a free data retrieval call binding the contract method 0xda0185f8.
  1927  //
  1928  // Solidity: function requestableContracts(address ) constant returns(address)
  1929  func (_EpochHandler *EpochHandlerSession) RequestableContracts(arg0 common.Address) (common.Address, error) {
  1930  	return _EpochHandler.Contract.RequestableContracts(&_EpochHandler.CallOpts, arg0)
  1931  }
  1932  
  1933  // RequestableContracts is a free data retrieval call binding the contract method 0xda0185f8.
  1934  //
  1935  // Solidity: function requestableContracts(address ) constant returns(address)
  1936  func (_EpochHandler *EpochHandlerCallerSession) RequestableContracts(arg0 common.Address) (common.Address, error) {
  1937  	return _EpochHandler.Contract.RequestableContracts(&_EpochHandler.CallOpts, arg0)
  1938  }
  1939  
  1940  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  1941  //
  1942  // Solidity: function seigManager() constant returns(address)
  1943  func (_EpochHandler *EpochHandlerCaller) SeigManager(opts *bind.CallOpts) (common.Address, error) {
  1944  	var (
  1945  		ret0 = new(common.Address)
  1946  	)
  1947  	out := ret0
  1948  	err := _EpochHandler.contract.Call(opts, out, "seigManager")
  1949  	return *ret0, err
  1950  }
  1951  
  1952  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  1953  //
  1954  // Solidity: function seigManager() constant returns(address)
  1955  func (_EpochHandler *EpochHandlerSession) SeigManager() (common.Address, error) {
  1956  	return _EpochHandler.Contract.SeigManager(&_EpochHandler.CallOpts)
  1957  }
  1958  
  1959  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  1960  //
  1961  // Solidity: function seigManager() constant returns(address)
  1962  func (_EpochHandler *EpochHandlerCallerSession) SeigManager() (common.Address, error) {
  1963  	return _EpochHandler.Contract.SeigManager(&_EpochHandler.CallOpts)
  1964  }
  1965  
  1966  // SubmitHandler is a free data retrieval call binding the contract method 0xe259faf7.
  1967  //
  1968  // Solidity: function submitHandler() constant returns(address)
  1969  func (_EpochHandler *EpochHandlerCaller) SubmitHandler(opts *bind.CallOpts) (common.Address, error) {
  1970  	var (
  1971  		ret0 = new(common.Address)
  1972  	)
  1973  	out := ret0
  1974  	err := _EpochHandler.contract.Call(opts, out, "submitHandler")
  1975  	return *ret0, err
  1976  }
  1977  
  1978  // SubmitHandler is a free data retrieval call binding the contract method 0xe259faf7.
  1979  //
  1980  // Solidity: function submitHandler() constant returns(address)
  1981  func (_EpochHandler *EpochHandlerSession) SubmitHandler() (common.Address, error) {
  1982  	return _EpochHandler.Contract.SubmitHandler(&_EpochHandler.CallOpts)
  1983  }
  1984  
  1985  // SubmitHandler is a free data retrieval call binding the contract method 0xe259faf7.
  1986  //
  1987  // Solidity: function submitHandler() constant returns(address)
  1988  func (_EpochHandler *EpochHandlerCallerSession) SubmitHandler() (common.Address, error) {
  1989  	return _EpochHandler.Contract.SubmitHandler(&_EpochHandler.CallOpts)
  1990  }
  1991  
  1992  // PrepareNRE is a paid mutator transaction binding the contract method 0x03787fa2.
  1993  //
  1994  // Solidity: function prepareNRE() returns()
  1995  func (_EpochHandler *EpochHandlerTransactor) PrepareNRE(opts *bind.TransactOpts) (*types.Transaction, error) {
  1996  	return _EpochHandler.contract.Transact(opts, "prepareNRE")
  1997  }
  1998  
  1999  // PrepareNRE is a paid mutator transaction binding the contract method 0x03787fa2.
  2000  //
  2001  // Solidity: function prepareNRE() returns()
  2002  func (_EpochHandler *EpochHandlerSession) PrepareNRE() (*types.Transaction, error) {
  2003  	return _EpochHandler.Contract.PrepareNRE(&_EpochHandler.TransactOpts)
  2004  }
  2005  
  2006  // PrepareNRE is a paid mutator transaction binding the contract method 0x03787fa2.
  2007  //
  2008  // Solidity: function prepareNRE() returns()
  2009  func (_EpochHandler *EpochHandlerTransactorSession) PrepareNRE() (*types.Transaction, error) {
  2010  	return _EpochHandler.Contract.PrepareNRE(&_EpochHandler.TransactOpts)
  2011  }
  2012  
  2013  // PrepareNREAfterURE is a paid mutator transaction binding the contract method 0x5656225b.
  2014  //
  2015  // Solidity: function prepareNREAfterURE() returns()
  2016  func (_EpochHandler *EpochHandlerTransactor) PrepareNREAfterURE(opts *bind.TransactOpts) (*types.Transaction, error) {
  2017  	return _EpochHandler.contract.Transact(opts, "prepareNREAfterURE")
  2018  }
  2019  
  2020  // PrepareNREAfterURE is a paid mutator transaction binding the contract method 0x5656225b.
  2021  //
  2022  // Solidity: function prepareNREAfterURE() returns()
  2023  func (_EpochHandler *EpochHandlerSession) PrepareNREAfterURE() (*types.Transaction, error) {
  2024  	return _EpochHandler.Contract.PrepareNREAfterURE(&_EpochHandler.TransactOpts)
  2025  }
  2026  
  2027  // PrepareNREAfterURE is a paid mutator transaction binding the contract method 0x5656225b.
  2028  //
  2029  // Solidity: function prepareNREAfterURE() returns()
  2030  func (_EpochHandler *EpochHandlerTransactorSession) PrepareNREAfterURE() (*types.Transaction, error) {
  2031  	return _EpochHandler.Contract.PrepareNREAfterURE(&_EpochHandler.TransactOpts)
  2032  }
  2033  
  2034  // PrepareORE is a paid mutator transaction binding the contract method 0x12d87f07.
  2035  //
  2036  // Solidity: function prepareORE() returns()
  2037  func (_EpochHandler *EpochHandlerTransactor) PrepareORE(opts *bind.TransactOpts) (*types.Transaction, error) {
  2038  	return _EpochHandler.contract.Transact(opts, "prepareORE")
  2039  }
  2040  
  2041  // PrepareORE is a paid mutator transaction binding the contract method 0x12d87f07.
  2042  //
  2043  // Solidity: function prepareORE() returns()
  2044  func (_EpochHandler *EpochHandlerSession) PrepareORE() (*types.Transaction, error) {
  2045  	return _EpochHandler.Contract.PrepareORE(&_EpochHandler.TransactOpts)
  2046  }
  2047  
  2048  // PrepareORE is a paid mutator transaction binding the contract method 0x12d87f07.
  2049  //
  2050  // Solidity: function prepareORE() returns()
  2051  func (_EpochHandler *EpochHandlerTransactorSession) PrepareORE() (*types.Transaction, error) {
  2052  	return _EpochHandler.Contract.PrepareORE(&_EpochHandler.TransactOpts)
  2053  }
  2054  
  2055  // PrepareOREAfterURE is a paid mutator transaction binding the contract method 0x5e9ef4f3.
  2056  //
  2057  // Solidity: function prepareOREAfterURE() returns()
  2058  func (_EpochHandler *EpochHandlerTransactor) PrepareOREAfterURE(opts *bind.TransactOpts) (*types.Transaction, error) {
  2059  	return _EpochHandler.contract.Transact(opts, "prepareOREAfterURE")
  2060  }
  2061  
  2062  // PrepareOREAfterURE is a paid mutator transaction binding the contract method 0x5e9ef4f3.
  2063  //
  2064  // Solidity: function prepareOREAfterURE() returns()
  2065  func (_EpochHandler *EpochHandlerSession) PrepareOREAfterURE() (*types.Transaction, error) {
  2066  	return _EpochHandler.Contract.PrepareOREAfterURE(&_EpochHandler.TransactOpts)
  2067  }
  2068  
  2069  // PrepareOREAfterURE is a paid mutator transaction binding the contract method 0x5e9ef4f3.
  2070  //
  2071  // Solidity: function prepareOREAfterURE() returns()
  2072  func (_EpochHandler *EpochHandlerTransactorSession) PrepareOREAfterURE() (*types.Transaction, error) {
  2073  	return _EpochHandler.Contract.PrepareOREAfterURE(&_EpochHandler.TransactOpts)
  2074  }
  2075  
  2076  // PrepareToSubmitURB is a paid mutator transaction binding the contract method 0xe6925d08.
  2077  //
  2078  // Solidity: function prepareToSubmitURB() returns()
  2079  func (_EpochHandler *EpochHandlerTransactor) PrepareToSubmitURB(opts *bind.TransactOpts) (*types.Transaction, error) {
  2080  	return _EpochHandler.contract.Transact(opts, "prepareToSubmitURB")
  2081  }
  2082  
  2083  // PrepareToSubmitURB is a paid mutator transaction binding the contract method 0xe6925d08.
  2084  //
  2085  // Solidity: function prepareToSubmitURB() returns()
  2086  func (_EpochHandler *EpochHandlerSession) PrepareToSubmitURB() (*types.Transaction, error) {
  2087  	return _EpochHandler.Contract.PrepareToSubmitURB(&_EpochHandler.TransactOpts)
  2088  }
  2089  
  2090  // PrepareToSubmitURB is a paid mutator transaction binding the contract method 0xe6925d08.
  2091  //
  2092  // Solidity: function prepareToSubmitURB() returns()
  2093  func (_EpochHandler *EpochHandlerTransactorSession) PrepareToSubmitURB() (*types.Transaction, error) {
  2094  	return _EpochHandler.Contract.PrepareToSubmitURB(&_EpochHandler.TransactOpts)
  2095  }
  2096  
  2097  // EpochHandlerBlockFinalizedIterator is returned from FilterBlockFinalized and is used to iterate over the raw logs and unpacked data for BlockFinalized events raised by the EpochHandler contract.
  2098  type EpochHandlerBlockFinalizedIterator struct {
  2099  	Event *EpochHandlerBlockFinalized // Event containing the contract specifics and raw log
  2100  
  2101  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2102  	event    string              // Event name to use for unpacking event data
  2103  
  2104  	logs chan types.Log        // Log channel receiving the found contract events
  2105  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2106  	done bool                  // Whether the subscription completed delivering logs
  2107  	fail error                 // Occurred error to stop iteration
  2108  }
  2109  
  2110  // Next advances the iterator to the subsequent event, returning whether there
  2111  // are any more events found. In case of a retrieval or parsing error, false is
  2112  // returned and Error() can be queried for the exact failure.
  2113  func (it *EpochHandlerBlockFinalizedIterator) Next() bool {
  2114  	// If the iterator failed, stop iterating
  2115  	if it.fail != nil {
  2116  		return false
  2117  	}
  2118  	// If the iterator completed, deliver directly whatever's available
  2119  	if it.done {
  2120  		select {
  2121  		case log := <-it.logs:
  2122  			it.Event = new(EpochHandlerBlockFinalized)
  2123  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2124  				it.fail = err
  2125  				return false
  2126  			}
  2127  			it.Event.Raw = log
  2128  			return true
  2129  
  2130  		default:
  2131  			return false
  2132  		}
  2133  	}
  2134  	// Iterator still in progress, wait for either a data or an error event
  2135  	select {
  2136  	case log := <-it.logs:
  2137  		it.Event = new(EpochHandlerBlockFinalized)
  2138  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2139  			it.fail = err
  2140  			return false
  2141  		}
  2142  		it.Event.Raw = log
  2143  		return true
  2144  
  2145  	case err := <-it.sub.Err():
  2146  		it.done = true
  2147  		it.fail = err
  2148  		return it.Next()
  2149  	}
  2150  }
  2151  
  2152  // Error returns any retrieval or parsing error occurred during filtering.
  2153  func (it *EpochHandlerBlockFinalizedIterator) Error() error {
  2154  	return it.fail
  2155  }
  2156  
  2157  // Close terminates the iteration process, releasing any pending underlying
  2158  // resources.
  2159  func (it *EpochHandlerBlockFinalizedIterator) Close() error {
  2160  	it.sub.Unsubscribe()
  2161  	return nil
  2162  }
  2163  
  2164  // EpochHandlerBlockFinalized represents a BlockFinalized event raised by the EpochHandler contract.
  2165  type EpochHandlerBlockFinalized struct {
  2166  	ForkNumber  *big.Int
  2167  	BlockNumber *big.Int
  2168  	Raw         types.Log // Blockchain specific contextual infos
  2169  }
  2170  
  2171  // FilterBlockFinalized is a free log retrieval operation binding the contract event 0xfb96205e4b3633fd57aa805b26b51ecf528714a10241a4af015929dce86768d9.
  2172  //
  2173  // Solidity: event BlockFinalized(uint256 forkNumber, uint256 blockNumber)
  2174  func (_EpochHandler *EpochHandlerFilterer) FilterBlockFinalized(opts *bind.FilterOpts) (*EpochHandlerBlockFinalizedIterator, error) {
  2175  
  2176  	logs, sub, err := _EpochHandler.contract.FilterLogs(opts, "BlockFinalized")
  2177  	if err != nil {
  2178  		return nil, err
  2179  	}
  2180  	return &EpochHandlerBlockFinalizedIterator{contract: _EpochHandler.contract, event: "BlockFinalized", logs: logs, sub: sub}, nil
  2181  }
  2182  
  2183  // WatchBlockFinalized is a free log subscription operation binding the contract event 0xfb96205e4b3633fd57aa805b26b51ecf528714a10241a4af015929dce86768d9.
  2184  //
  2185  // Solidity: event BlockFinalized(uint256 forkNumber, uint256 blockNumber)
  2186  func (_EpochHandler *EpochHandlerFilterer) WatchBlockFinalized(opts *bind.WatchOpts, sink chan<- *EpochHandlerBlockFinalized) (event.Subscription, error) {
  2187  
  2188  	logs, sub, err := _EpochHandler.contract.WatchLogs(opts, "BlockFinalized")
  2189  	if err != nil {
  2190  		return nil, err
  2191  	}
  2192  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2193  		defer sub.Unsubscribe()
  2194  		for {
  2195  			select {
  2196  			case log := <-logs:
  2197  				// New log arrived, parse the event and forward to the user
  2198  				event := new(EpochHandlerBlockFinalized)
  2199  				if err := _EpochHandler.contract.UnpackLog(event, "BlockFinalized", log); err != nil {
  2200  					return err
  2201  				}
  2202  				event.Raw = log
  2203  
  2204  				select {
  2205  				case sink <- event:
  2206  				case err := <-sub.Err():
  2207  					return err
  2208  				case <-quit:
  2209  					return nil
  2210  				}
  2211  			case err := <-sub.Err():
  2212  				return err
  2213  			case <-quit:
  2214  				return nil
  2215  			}
  2216  		}
  2217  	}), nil
  2218  }
  2219  
  2220  // ParseBlockFinalized is a log parse operation binding the contract event 0xfb96205e4b3633fd57aa805b26b51ecf528714a10241a4af015929dce86768d9.
  2221  //
  2222  // Solidity: event BlockFinalized(uint256 forkNumber, uint256 blockNumber)
  2223  func (_EpochHandler *EpochHandlerFilterer) ParseBlockFinalized(log types.Log) (*EpochHandlerBlockFinalized, error) {
  2224  	event := new(EpochHandlerBlockFinalized)
  2225  	if err := _EpochHandler.contract.UnpackLog(event, "BlockFinalized", log); err != nil {
  2226  		return nil, err
  2227  	}
  2228  	return event, nil
  2229  }
  2230  
  2231  // EpochHandlerBlockSubmittedIterator is returned from FilterBlockSubmitted and is used to iterate over the raw logs and unpacked data for BlockSubmitted events raised by the EpochHandler contract.
  2232  type EpochHandlerBlockSubmittedIterator struct {
  2233  	Event *EpochHandlerBlockSubmitted // Event containing the contract specifics and raw log
  2234  
  2235  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2236  	event    string              // Event name to use for unpacking event data
  2237  
  2238  	logs chan types.Log        // Log channel receiving the found contract events
  2239  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2240  	done bool                  // Whether the subscription completed delivering logs
  2241  	fail error                 // Occurred error to stop iteration
  2242  }
  2243  
  2244  // Next advances the iterator to the subsequent event, returning whether there
  2245  // are any more events found. In case of a retrieval or parsing error, false is
  2246  // returned and Error() can be queried for the exact failure.
  2247  func (it *EpochHandlerBlockSubmittedIterator) Next() bool {
  2248  	// If the iterator failed, stop iterating
  2249  	if it.fail != nil {
  2250  		return false
  2251  	}
  2252  	// If the iterator completed, deliver directly whatever's available
  2253  	if it.done {
  2254  		select {
  2255  		case log := <-it.logs:
  2256  			it.Event = new(EpochHandlerBlockSubmitted)
  2257  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2258  				it.fail = err
  2259  				return false
  2260  			}
  2261  			it.Event.Raw = log
  2262  			return true
  2263  
  2264  		default:
  2265  			return false
  2266  		}
  2267  	}
  2268  	// Iterator still in progress, wait for either a data or an error event
  2269  	select {
  2270  	case log := <-it.logs:
  2271  		it.Event = new(EpochHandlerBlockSubmitted)
  2272  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2273  			it.fail = err
  2274  			return false
  2275  		}
  2276  		it.Event.Raw = log
  2277  		return true
  2278  
  2279  	case err := <-it.sub.Err():
  2280  		it.done = true
  2281  		it.fail = err
  2282  		return it.Next()
  2283  	}
  2284  }
  2285  
  2286  // Error returns any retrieval or parsing error occurred during filtering.
  2287  func (it *EpochHandlerBlockSubmittedIterator) Error() error {
  2288  	return it.fail
  2289  }
  2290  
  2291  // Close terminates the iteration process, releasing any pending underlying
  2292  // resources.
  2293  func (it *EpochHandlerBlockSubmittedIterator) Close() error {
  2294  	it.sub.Unsubscribe()
  2295  	return nil
  2296  }
  2297  
  2298  // EpochHandlerBlockSubmitted represents a BlockSubmitted event raised by the EpochHandler contract.
  2299  type EpochHandlerBlockSubmitted struct {
  2300  	Fork          *big.Int
  2301  	EpochNumber   *big.Int
  2302  	BlockNumber   *big.Int
  2303  	IsRequest     bool
  2304  	UserActivated bool
  2305  	Raw           types.Log // Blockchain specific contextual infos
  2306  }
  2307  
  2308  // FilterBlockSubmitted is a free log retrieval operation binding the contract event 0x3d4a04291c66b06f39a4ecb817875b12b5485a05ec563133a56a905305c48e55.
  2309  //
  2310  // Solidity: event BlockSubmitted(uint256 fork, uint256 epochNumber, uint256 blockNumber, bool isRequest, bool userActivated)
  2311  func (_EpochHandler *EpochHandlerFilterer) FilterBlockSubmitted(opts *bind.FilterOpts) (*EpochHandlerBlockSubmittedIterator, error) {
  2312  
  2313  	logs, sub, err := _EpochHandler.contract.FilterLogs(opts, "BlockSubmitted")
  2314  	if err != nil {
  2315  		return nil, err
  2316  	}
  2317  	return &EpochHandlerBlockSubmittedIterator{contract: _EpochHandler.contract, event: "BlockSubmitted", logs: logs, sub: sub}, nil
  2318  }
  2319  
  2320  // WatchBlockSubmitted is a free log subscription operation binding the contract event 0x3d4a04291c66b06f39a4ecb817875b12b5485a05ec563133a56a905305c48e55.
  2321  //
  2322  // Solidity: event BlockSubmitted(uint256 fork, uint256 epochNumber, uint256 blockNumber, bool isRequest, bool userActivated)
  2323  func (_EpochHandler *EpochHandlerFilterer) WatchBlockSubmitted(opts *bind.WatchOpts, sink chan<- *EpochHandlerBlockSubmitted) (event.Subscription, error) {
  2324  
  2325  	logs, sub, err := _EpochHandler.contract.WatchLogs(opts, "BlockSubmitted")
  2326  	if err != nil {
  2327  		return nil, err
  2328  	}
  2329  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2330  		defer sub.Unsubscribe()
  2331  		for {
  2332  			select {
  2333  			case log := <-logs:
  2334  				// New log arrived, parse the event and forward to the user
  2335  				event := new(EpochHandlerBlockSubmitted)
  2336  				if err := _EpochHandler.contract.UnpackLog(event, "BlockSubmitted", log); err != nil {
  2337  					return err
  2338  				}
  2339  				event.Raw = log
  2340  
  2341  				select {
  2342  				case sink <- event:
  2343  				case err := <-sub.Err():
  2344  					return err
  2345  				case <-quit:
  2346  					return nil
  2347  				}
  2348  			case err := <-sub.Err():
  2349  				return err
  2350  			case <-quit:
  2351  				return nil
  2352  			}
  2353  		}
  2354  	}), nil
  2355  }
  2356  
  2357  // ParseBlockSubmitted is a log parse operation binding the contract event 0x3d4a04291c66b06f39a4ecb817875b12b5485a05ec563133a56a905305c48e55.
  2358  //
  2359  // Solidity: event BlockSubmitted(uint256 fork, uint256 epochNumber, uint256 blockNumber, bool isRequest, bool userActivated)
  2360  func (_EpochHandler *EpochHandlerFilterer) ParseBlockSubmitted(log types.Log) (*EpochHandlerBlockSubmitted, error) {
  2361  	event := new(EpochHandlerBlockSubmitted)
  2362  	if err := _EpochHandler.contract.UnpackLog(event, "BlockSubmitted", log); err != nil {
  2363  		return nil, err
  2364  	}
  2365  	return event, nil
  2366  }
  2367  
  2368  // EpochHandlerERUCreatedIterator is returned from FilterERUCreated and is used to iterate over the raw logs and unpacked data for ERUCreated events raised by the EpochHandler contract.
  2369  type EpochHandlerERUCreatedIterator struct {
  2370  	Event *EpochHandlerERUCreated // Event containing the contract specifics and raw log
  2371  
  2372  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2373  	event    string              // Event name to use for unpacking event data
  2374  
  2375  	logs chan types.Log        // Log channel receiving the found contract events
  2376  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2377  	done bool                  // Whether the subscription completed delivering logs
  2378  	fail error                 // Occurred error to stop iteration
  2379  }
  2380  
  2381  // Next advances the iterator to the subsequent event, returning whether there
  2382  // are any more events found. In case of a retrieval or parsing error, false is
  2383  // returned and Error() can be queried for the exact failure.
  2384  func (it *EpochHandlerERUCreatedIterator) Next() bool {
  2385  	// If the iterator failed, stop iterating
  2386  	if it.fail != nil {
  2387  		return false
  2388  	}
  2389  	// If the iterator completed, deliver directly whatever's available
  2390  	if it.done {
  2391  		select {
  2392  		case log := <-it.logs:
  2393  			it.Event = new(EpochHandlerERUCreated)
  2394  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2395  				it.fail = err
  2396  				return false
  2397  			}
  2398  			it.Event.Raw = log
  2399  			return true
  2400  
  2401  		default:
  2402  			return false
  2403  		}
  2404  	}
  2405  	// Iterator still in progress, wait for either a data or an error event
  2406  	select {
  2407  	case log := <-it.logs:
  2408  		it.Event = new(EpochHandlerERUCreated)
  2409  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2410  			it.fail = err
  2411  			return false
  2412  		}
  2413  		it.Event.Raw = log
  2414  		return true
  2415  
  2416  	case err := <-it.sub.Err():
  2417  		it.done = true
  2418  		it.fail = err
  2419  		return it.Next()
  2420  	}
  2421  }
  2422  
  2423  // Error returns any retrieval or parsing error occurred during filtering.
  2424  func (it *EpochHandlerERUCreatedIterator) Error() error {
  2425  	return it.fail
  2426  }
  2427  
  2428  // Close terminates the iteration process, releasing any pending underlying
  2429  // resources.
  2430  func (it *EpochHandlerERUCreatedIterator) Close() error {
  2431  	it.sub.Unsubscribe()
  2432  	return nil
  2433  }
  2434  
  2435  // EpochHandlerERUCreated represents a ERUCreated event raised by the EpochHandler contract.
  2436  type EpochHandlerERUCreated struct {
  2437  	RequestId *big.Int
  2438  	Requestor common.Address
  2439  	To        common.Address
  2440  	TrieKey   []byte
  2441  	TrieValue [32]byte
  2442  	Raw       types.Log // Blockchain specific contextual infos
  2443  }
  2444  
  2445  // FilterERUCreated is a free log retrieval operation binding the contract event 0xfcbdc2083dadd644b854d91b49aef8db06b8f5a3d5c1192de38ca0ba271d5a0d.
  2446  //
  2447  // Solidity: event ERUCreated(uint256 requestId, address requestor, address to, bytes trieKey, bytes32 trieValue)
  2448  func (_EpochHandler *EpochHandlerFilterer) FilterERUCreated(opts *bind.FilterOpts) (*EpochHandlerERUCreatedIterator, error) {
  2449  
  2450  	logs, sub, err := _EpochHandler.contract.FilterLogs(opts, "ERUCreated")
  2451  	if err != nil {
  2452  		return nil, err
  2453  	}
  2454  	return &EpochHandlerERUCreatedIterator{contract: _EpochHandler.contract, event: "ERUCreated", logs: logs, sub: sub}, nil
  2455  }
  2456  
  2457  // WatchERUCreated is a free log subscription operation binding the contract event 0xfcbdc2083dadd644b854d91b49aef8db06b8f5a3d5c1192de38ca0ba271d5a0d.
  2458  //
  2459  // Solidity: event ERUCreated(uint256 requestId, address requestor, address to, bytes trieKey, bytes32 trieValue)
  2460  func (_EpochHandler *EpochHandlerFilterer) WatchERUCreated(opts *bind.WatchOpts, sink chan<- *EpochHandlerERUCreated) (event.Subscription, error) {
  2461  
  2462  	logs, sub, err := _EpochHandler.contract.WatchLogs(opts, "ERUCreated")
  2463  	if err != nil {
  2464  		return nil, err
  2465  	}
  2466  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2467  		defer sub.Unsubscribe()
  2468  		for {
  2469  			select {
  2470  			case log := <-logs:
  2471  				// New log arrived, parse the event and forward to the user
  2472  				event := new(EpochHandlerERUCreated)
  2473  				if err := _EpochHandler.contract.UnpackLog(event, "ERUCreated", log); err != nil {
  2474  					return err
  2475  				}
  2476  				event.Raw = log
  2477  
  2478  				select {
  2479  				case sink <- event:
  2480  				case err := <-sub.Err():
  2481  					return err
  2482  				case <-quit:
  2483  					return nil
  2484  				}
  2485  			case err := <-sub.Err():
  2486  				return err
  2487  			case <-quit:
  2488  				return nil
  2489  			}
  2490  		}
  2491  	}), nil
  2492  }
  2493  
  2494  // ParseERUCreated is a log parse operation binding the contract event 0xfcbdc2083dadd644b854d91b49aef8db06b8f5a3d5c1192de38ca0ba271d5a0d.
  2495  //
  2496  // Solidity: event ERUCreated(uint256 requestId, address requestor, address to, bytes trieKey, bytes32 trieValue)
  2497  func (_EpochHandler *EpochHandlerFilterer) ParseERUCreated(log types.Log) (*EpochHandlerERUCreated, error) {
  2498  	event := new(EpochHandlerERUCreated)
  2499  	if err := _EpochHandler.contract.UnpackLog(event, "ERUCreated", log); err != nil {
  2500  		return nil, err
  2501  	}
  2502  	return event, nil
  2503  }
  2504  
  2505  // EpochHandlerEpochFilledIterator is returned from FilterEpochFilled and is used to iterate over the raw logs and unpacked data for EpochFilled events raised by the EpochHandler contract.
  2506  type EpochHandlerEpochFilledIterator struct {
  2507  	Event *EpochHandlerEpochFilled // Event containing the contract specifics and raw log
  2508  
  2509  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2510  	event    string              // Event name to use for unpacking event data
  2511  
  2512  	logs chan types.Log        // Log channel receiving the found contract events
  2513  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2514  	done bool                  // Whether the subscription completed delivering logs
  2515  	fail error                 // Occurred error to stop iteration
  2516  }
  2517  
  2518  // Next advances the iterator to the subsequent event, returning whether there
  2519  // are any more events found. In case of a retrieval or parsing error, false is
  2520  // returned and Error() can be queried for the exact failure.
  2521  func (it *EpochHandlerEpochFilledIterator) Next() bool {
  2522  	// If the iterator failed, stop iterating
  2523  	if it.fail != nil {
  2524  		return false
  2525  	}
  2526  	// If the iterator completed, deliver directly whatever's available
  2527  	if it.done {
  2528  		select {
  2529  		case log := <-it.logs:
  2530  			it.Event = new(EpochHandlerEpochFilled)
  2531  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2532  				it.fail = err
  2533  				return false
  2534  			}
  2535  			it.Event.Raw = log
  2536  			return true
  2537  
  2538  		default:
  2539  			return false
  2540  		}
  2541  	}
  2542  	// Iterator still in progress, wait for either a data or an error event
  2543  	select {
  2544  	case log := <-it.logs:
  2545  		it.Event = new(EpochHandlerEpochFilled)
  2546  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2547  			it.fail = err
  2548  			return false
  2549  		}
  2550  		it.Event.Raw = log
  2551  		return true
  2552  
  2553  	case err := <-it.sub.Err():
  2554  		it.done = true
  2555  		it.fail = err
  2556  		return it.Next()
  2557  	}
  2558  }
  2559  
  2560  // Error returns any retrieval or parsing error occurred during filtering.
  2561  func (it *EpochHandlerEpochFilledIterator) Error() error {
  2562  	return it.fail
  2563  }
  2564  
  2565  // Close terminates the iteration process, releasing any pending underlying
  2566  // resources.
  2567  func (it *EpochHandlerEpochFilledIterator) Close() error {
  2568  	it.sub.Unsubscribe()
  2569  	return nil
  2570  }
  2571  
  2572  // EpochHandlerEpochFilled represents a EpochFilled event raised by the EpochHandler contract.
  2573  type EpochHandlerEpochFilled struct {
  2574  	ForkNumber  *big.Int
  2575  	EpochNumber *big.Int
  2576  	Raw         types.Log // Blockchain specific contextual infos
  2577  }
  2578  
  2579  // FilterEpochFilled is a free log retrieval operation binding the contract event 0x2fdeb407bf5c2b621f04b5c784822dae806c45b49a68aba413cc270128c96816.
  2580  //
  2581  // Solidity: event EpochFilled(uint256 forkNumber, uint256 epochNumber)
  2582  func (_EpochHandler *EpochHandlerFilterer) FilterEpochFilled(opts *bind.FilterOpts) (*EpochHandlerEpochFilledIterator, error) {
  2583  
  2584  	logs, sub, err := _EpochHandler.contract.FilterLogs(opts, "EpochFilled")
  2585  	if err != nil {
  2586  		return nil, err
  2587  	}
  2588  	return &EpochHandlerEpochFilledIterator{contract: _EpochHandler.contract, event: "EpochFilled", logs: logs, sub: sub}, nil
  2589  }
  2590  
  2591  // WatchEpochFilled is a free log subscription operation binding the contract event 0x2fdeb407bf5c2b621f04b5c784822dae806c45b49a68aba413cc270128c96816.
  2592  //
  2593  // Solidity: event EpochFilled(uint256 forkNumber, uint256 epochNumber)
  2594  func (_EpochHandler *EpochHandlerFilterer) WatchEpochFilled(opts *bind.WatchOpts, sink chan<- *EpochHandlerEpochFilled) (event.Subscription, error) {
  2595  
  2596  	logs, sub, err := _EpochHandler.contract.WatchLogs(opts, "EpochFilled")
  2597  	if err != nil {
  2598  		return nil, err
  2599  	}
  2600  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2601  		defer sub.Unsubscribe()
  2602  		for {
  2603  			select {
  2604  			case log := <-logs:
  2605  				// New log arrived, parse the event and forward to the user
  2606  				event := new(EpochHandlerEpochFilled)
  2607  				if err := _EpochHandler.contract.UnpackLog(event, "EpochFilled", log); err != nil {
  2608  					return err
  2609  				}
  2610  				event.Raw = log
  2611  
  2612  				select {
  2613  				case sink <- event:
  2614  				case err := <-sub.Err():
  2615  					return err
  2616  				case <-quit:
  2617  					return nil
  2618  				}
  2619  			case err := <-sub.Err():
  2620  				return err
  2621  			case <-quit:
  2622  				return nil
  2623  			}
  2624  		}
  2625  	}), nil
  2626  }
  2627  
  2628  // ParseEpochFilled is a log parse operation binding the contract event 0x2fdeb407bf5c2b621f04b5c784822dae806c45b49a68aba413cc270128c96816.
  2629  //
  2630  // Solidity: event EpochFilled(uint256 forkNumber, uint256 epochNumber)
  2631  func (_EpochHandler *EpochHandlerFilterer) ParseEpochFilled(log types.Log) (*EpochHandlerEpochFilled, error) {
  2632  	event := new(EpochHandlerEpochFilled)
  2633  	if err := _EpochHandler.contract.UnpackLog(event, "EpochFilled", log); err != nil {
  2634  		return nil, err
  2635  	}
  2636  	return event, nil
  2637  }
  2638  
  2639  // EpochHandlerEpochFillingIterator is returned from FilterEpochFilling and is used to iterate over the raw logs and unpacked data for EpochFilling events raised by the EpochHandler contract.
  2640  type EpochHandlerEpochFillingIterator struct {
  2641  	Event *EpochHandlerEpochFilling // Event containing the contract specifics and raw log
  2642  
  2643  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2644  	event    string              // Event name to use for unpacking event data
  2645  
  2646  	logs chan types.Log        // Log channel receiving the found contract events
  2647  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2648  	done bool                  // Whether the subscription completed delivering logs
  2649  	fail error                 // Occurred error to stop iteration
  2650  }
  2651  
  2652  // Next advances the iterator to the subsequent event, returning whether there
  2653  // are any more events found. In case of a retrieval or parsing error, false is
  2654  // returned and Error() can be queried for the exact failure.
  2655  func (it *EpochHandlerEpochFillingIterator) Next() bool {
  2656  	// If the iterator failed, stop iterating
  2657  	if it.fail != nil {
  2658  		return false
  2659  	}
  2660  	// If the iterator completed, deliver directly whatever's available
  2661  	if it.done {
  2662  		select {
  2663  		case log := <-it.logs:
  2664  			it.Event = new(EpochHandlerEpochFilling)
  2665  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2666  				it.fail = err
  2667  				return false
  2668  			}
  2669  			it.Event.Raw = log
  2670  			return true
  2671  
  2672  		default:
  2673  			return false
  2674  		}
  2675  	}
  2676  	// Iterator still in progress, wait for either a data or an error event
  2677  	select {
  2678  	case log := <-it.logs:
  2679  		it.Event = new(EpochHandlerEpochFilling)
  2680  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2681  			it.fail = err
  2682  			return false
  2683  		}
  2684  		it.Event.Raw = log
  2685  		return true
  2686  
  2687  	case err := <-it.sub.Err():
  2688  		it.done = true
  2689  		it.fail = err
  2690  		return it.Next()
  2691  	}
  2692  }
  2693  
  2694  // Error returns any retrieval or parsing error occurred during filtering.
  2695  func (it *EpochHandlerEpochFillingIterator) Error() error {
  2696  	return it.fail
  2697  }
  2698  
  2699  // Close terminates the iteration process, releasing any pending underlying
  2700  // resources.
  2701  func (it *EpochHandlerEpochFillingIterator) Close() error {
  2702  	it.sub.Unsubscribe()
  2703  	return nil
  2704  }
  2705  
  2706  // EpochHandlerEpochFilling represents a EpochFilling event raised by the EpochHandler contract.
  2707  type EpochHandlerEpochFilling struct {
  2708  	ForkNumber  *big.Int
  2709  	EpochNumber *big.Int
  2710  	Raw         types.Log // Blockchain specific contextual infos
  2711  }
  2712  
  2713  // FilterEpochFilling is a free log retrieval operation binding the contract event 0x27b09f0953d27bbff306fe25b2987ac5a813248ac30cb2bbd5daf95e7b0e6dc0.
  2714  //
  2715  // Solidity: event EpochFilling(uint256 forkNumber, uint256 epochNumber)
  2716  func (_EpochHandler *EpochHandlerFilterer) FilterEpochFilling(opts *bind.FilterOpts) (*EpochHandlerEpochFillingIterator, error) {
  2717  
  2718  	logs, sub, err := _EpochHandler.contract.FilterLogs(opts, "EpochFilling")
  2719  	if err != nil {
  2720  		return nil, err
  2721  	}
  2722  	return &EpochHandlerEpochFillingIterator{contract: _EpochHandler.contract, event: "EpochFilling", logs: logs, sub: sub}, nil
  2723  }
  2724  
  2725  // WatchEpochFilling is a free log subscription operation binding the contract event 0x27b09f0953d27bbff306fe25b2987ac5a813248ac30cb2bbd5daf95e7b0e6dc0.
  2726  //
  2727  // Solidity: event EpochFilling(uint256 forkNumber, uint256 epochNumber)
  2728  func (_EpochHandler *EpochHandlerFilterer) WatchEpochFilling(opts *bind.WatchOpts, sink chan<- *EpochHandlerEpochFilling) (event.Subscription, error) {
  2729  
  2730  	logs, sub, err := _EpochHandler.contract.WatchLogs(opts, "EpochFilling")
  2731  	if err != nil {
  2732  		return nil, err
  2733  	}
  2734  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2735  		defer sub.Unsubscribe()
  2736  		for {
  2737  			select {
  2738  			case log := <-logs:
  2739  				// New log arrived, parse the event and forward to the user
  2740  				event := new(EpochHandlerEpochFilling)
  2741  				if err := _EpochHandler.contract.UnpackLog(event, "EpochFilling", log); err != nil {
  2742  					return err
  2743  				}
  2744  				event.Raw = log
  2745  
  2746  				select {
  2747  				case sink <- event:
  2748  				case err := <-sub.Err():
  2749  					return err
  2750  				case <-quit:
  2751  					return nil
  2752  				}
  2753  			case err := <-sub.Err():
  2754  				return err
  2755  			case <-quit:
  2756  				return nil
  2757  			}
  2758  		}
  2759  	}), nil
  2760  }
  2761  
  2762  // ParseEpochFilling is a log parse operation binding the contract event 0x27b09f0953d27bbff306fe25b2987ac5a813248ac30cb2bbd5daf95e7b0e6dc0.
  2763  //
  2764  // Solidity: event EpochFilling(uint256 forkNumber, uint256 epochNumber)
  2765  func (_EpochHandler *EpochHandlerFilterer) ParseEpochFilling(log types.Log) (*EpochHandlerEpochFilling, error) {
  2766  	event := new(EpochHandlerEpochFilling)
  2767  	if err := _EpochHandler.contract.UnpackLog(event, "EpochFilling", log); err != nil {
  2768  		return nil, err
  2769  	}
  2770  	return event, nil
  2771  }
  2772  
  2773  // EpochHandlerEpochFinalizedIterator is returned from FilterEpochFinalized and is used to iterate over the raw logs and unpacked data for EpochFinalized events raised by the EpochHandler contract.
  2774  type EpochHandlerEpochFinalizedIterator struct {
  2775  	Event *EpochHandlerEpochFinalized // Event containing the contract specifics and raw log
  2776  
  2777  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2778  	event    string              // Event name to use for unpacking event data
  2779  
  2780  	logs chan types.Log        // Log channel receiving the found contract events
  2781  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2782  	done bool                  // Whether the subscription completed delivering logs
  2783  	fail error                 // Occurred error to stop iteration
  2784  }
  2785  
  2786  // Next advances the iterator to the subsequent event, returning whether there
  2787  // are any more events found. In case of a retrieval or parsing error, false is
  2788  // returned and Error() can be queried for the exact failure.
  2789  func (it *EpochHandlerEpochFinalizedIterator) Next() bool {
  2790  	// If the iterator failed, stop iterating
  2791  	if it.fail != nil {
  2792  		return false
  2793  	}
  2794  	// If the iterator completed, deliver directly whatever's available
  2795  	if it.done {
  2796  		select {
  2797  		case log := <-it.logs:
  2798  			it.Event = new(EpochHandlerEpochFinalized)
  2799  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2800  				it.fail = err
  2801  				return false
  2802  			}
  2803  			it.Event.Raw = log
  2804  			return true
  2805  
  2806  		default:
  2807  			return false
  2808  		}
  2809  	}
  2810  	// Iterator still in progress, wait for either a data or an error event
  2811  	select {
  2812  	case log := <-it.logs:
  2813  		it.Event = new(EpochHandlerEpochFinalized)
  2814  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2815  			it.fail = err
  2816  			return false
  2817  		}
  2818  		it.Event.Raw = log
  2819  		return true
  2820  
  2821  	case err := <-it.sub.Err():
  2822  		it.done = true
  2823  		it.fail = err
  2824  		return it.Next()
  2825  	}
  2826  }
  2827  
  2828  // Error returns any retrieval or parsing error occurred during filtering.
  2829  func (it *EpochHandlerEpochFinalizedIterator) Error() error {
  2830  	return it.fail
  2831  }
  2832  
  2833  // Close terminates the iteration process, releasing any pending underlying
  2834  // resources.
  2835  func (it *EpochHandlerEpochFinalizedIterator) Close() error {
  2836  	it.sub.Unsubscribe()
  2837  	return nil
  2838  }
  2839  
  2840  // EpochHandlerEpochFinalized represents a EpochFinalized event raised by the EpochHandler contract.
  2841  type EpochHandlerEpochFinalized struct {
  2842  	ForkNumber       *big.Int
  2843  	EpochNumber      *big.Int
  2844  	StartBlockNumber *big.Int
  2845  	EndBlockNumber   *big.Int
  2846  	Raw              types.Log // Blockchain specific contextual infos
  2847  }
  2848  
  2849  // FilterEpochFinalized is a free log retrieval operation binding the contract event 0x70801d4d63b3da6c19ba7349911f45bed5a99ccdfb51b8138c105872529bebd5.
  2850  //
  2851  // Solidity: event EpochFinalized(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber)
  2852  func (_EpochHandler *EpochHandlerFilterer) FilterEpochFinalized(opts *bind.FilterOpts) (*EpochHandlerEpochFinalizedIterator, error) {
  2853  
  2854  	logs, sub, err := _EpochHandler.contract.FilterLogs(opts, "EpochFinalized")
  2855  	if err != nil {
  2856  		return nil, err
  2857  	}
  2858  	return &EpochHandlerEpochFinalizedIterator{contract: _EpochHandler.contract, event: "EpochFinalized", logs: logs, sub: sub}, nil
  2859  }
  2860  
  2861  // WatchEpochFinalized is a free log subscription operation binding the contract event 0x70801d4d63b3da6c19ba7349911f45bed5a99ccdfb51b8138c105872529bebd5.
  2862  //
  2863  // Solidity: event EpochFinalized(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber)
  2864  func (_EpochHandler *EpochHandlerFilterer) WatchEpochFinalized(opts *bind.WatchOpts, sink chan<- *EpochHandlerEpochFinalized) (event.Subscription, error) {
  2865  
  2866  	logs, sub, err := _EpochHandler.contract.WatchLogs(opts, "EpochFinalized")
  2867  	if err != nil {
  2868  		return nil, err
  2869  	}
  2870  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2871  		defer sub.Unsubscribe()
  2872  		for {
  2873  			select {
  2874  			case log := <-logs:
  2875  				// New log arrived, parse the event and forward to the user
  2876  				event := new(EpochHandlerEpochFinalized)
  2877  				if err := _EpochHandler.contract.UnpackLog(event, "EpochFinalized", log); err != nil {
  2878  					return err
  2879  				}
  2880  				event.Raw = log
  2881  
  2882  				select {
  2883  				case sink <- event:
  2884  				case err := <-sub.Err():
  2885  					return err
  2886  				case <-quit:
  2887  					return nil
  2888  				}
  2889  			case err := <-sub.Err():
  2890  				return err
  2891  			case <-quit:
  2892  				return nil
  2893  			}
  2894  		}
  2895  	}), nil
  2896  }
  2897  
  2898  // ParseEpochFinalized is a log parse operation binding the contract event 0x70801d4d63b3da6c19ba7349911f45bed5a99ccdfb51b8138c105872529bebd5.
  2899  //
  2900  // Solidity: event EpochFinalized(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber)
  2901  func (_EpochHandler *EpochHandlerFilterer) ParseEpochFinalized(log types.Log) (*EpochHandlerEpochFinalized, error) {
  2902  	event := new(EpochHandlerEpochFinalized)
  2903  	if err := _EpochHandler.contract.UnpackLog(event, "EpochFinalized", log); err != nil {
  2904  		return nil, err
  2905  	}
  2906  	return event, nil
  2907  }
  2908  
  2909  // EpochHandlerEpochPreparedIterator is returned from FilterEpochPrepared and is used to iterate over the raw logs and unpacked data for EpochPrepared events raised by the EpochHandler contract.
  2910  type EpochHandlerEpochPreparedIterator struct {
  2911  	Event *EpochHandlerEpochPrepared // Event containing the contract specifics and raw log
  2912  
  2913  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2914  	event    string              // Event name to use for unpacking event data
  2915  
  2916  	logs chan types.Log        // Log channel receiving the found contract events
  2917  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2918  	done bool                  // Whether the subscription completed delivering logs
  2919  	fail error                 // Occurred error to stop iteration
  2920  }
  2921  
  2922  // Next advances the iterator to the subsequent event, returning whether there
  2923  // are any more events found. In case of a retrieval or parsing error, false is
  2924  // returned and Error() can be queried for the exact failure.
  2925  func (it *EpochHandlerEpochPreparedIterator) Next() bool {
  2926  	// If the iterator failed, stop iterating
  2927  	if it.fail != nil {
  2928  		return false
  2929  	}
  2930  	// If the iterator completed, deliver directly whatever's available
  2931  	if it.done {
  2932  		select {
  2933  		case log := <-it.logs:
  2934  			it.Event = new(EpochHandlerEpochPrepared)
  2935  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2936  				it.fail = err
  2937  				return false
  2938  			}
  2939  			it.Event.Raw = log
  2940  			return true
  2941  
  2942  		default:
  2943  			return false
  2944  		}
  2945  	}
  2946  	// Iterator still in progress, wait for either a data or an error event
  2947  	select {
  2948  	case log := <-it.logs:
  2949  		it.Event = new(EpochHandlerEpochPrepared)
  2950  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2951  			it.fail = err
  2952  			return false
  2953  		}
  2954  		it.Event.Raw = log
  2955  		return true
  2956  
  2957  	case err := <-it.sub.Err():
  2958  		it.done = true
  2959  		it.fail = err
  2960  		return it.Next()
  2961  	}
  2962  }
  2963  
  2964  // Error returns any retrieval or parsing error occurred during filtering.
  2965  func (it *EpochHandlerEpochPreparedIterator) Error() error {
  2966  	return it.fail
  2967  }
  2968  
  2969  // Close terminates the iteration process, releasing any pending underlying
  2970  // resources.
  2971  func (it *EpochHandlerEpochPreparedIterator) Close() error {
  2972  	it.sub.Unsubscribe()
  2973  	return nil
  2974  }
  2975  
  2976  // EpochHandlerEpochPrepared represents a EpochPrepared event raised by the EpochHandler contract.
  2977  type EpochHandlerEpochPrepared struct {
  2978  	ForkNumber       *big.Int
  2979  	EpochNumber      *big.Int
  2980  	StartBlockNumber *big.Int
  2981  	EndBlockNumber   *big.Int
  2982  	RequestStart     *big.Int
  2983  	RequestEnd       *big.Int
  2984  	EpochIsEmpty     bool
  2985  	IsRequest        bool
  2986  	UserActivated    bool
  2987  	Rebase           bool
  2988  	Raw              types.Log // Blockchain specific contextual infos
  2989  }
  2990  
  2991  // FilterEpochPrepared is a free log retrieval operation binding the contract event 0x1a69c0760aa329b76f72579129869013ebd3d41594db019c0e997b939fcb32e3.
  2992  //
  2993  // Solidity: event EpochPrepared(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated, bool rebase)
  2994  func (_EpochHandler *EpochHandlerFilterer) FilterEpochPrepared(opts *bind.FilterOpts) (*EpochHandlerEpochPreparedIterator, error) {
  2995  
  2996  	logs, sub, err := _EpochHandler.contract.FilterLogs(opts, "EpochPrepared")
  2997  	if err != nil {
  2998  		return nil, err
  2999  	}
  3000  	return &EpochHandlerEpochPreparedIterator{contract: _EpochHandler.contract, event: "EpochPrepared", logs: logs, sub: sub}, nil
  3001  }
  3002  
  3003  // WatchEpochPrepared is a free log subscription operation binding the contract event 0x1a69c0760aa329b76f72579129869013ebd3d41594db019c0e997b939fcb32e3.
  3004  //
  3005  // Solidity: event EpochPrepared(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated, bool rebase)
  3006  func (_EpochHandler *EpochHandlerFilterer) WatchEpochPrepared(opts *bind.WatchOpts, sink chan<- *EpochHandlerEpochPrepared) (event.Subscription, error) {
  3007  
  3008  	logs, sub, err := _EpochHandler.contract.WatchLogs(opts, "EpochPrepared")
  3009  	if err != nil {
  3010  		return nil, err
  3011  	}
  3012  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3013  		defer sub.Unsubscribe()
  3014  		for {
  3015  			select {
  3016  			case log := <-logs:
  3017  				// New log arrived, parse the event and forward to the user
  3018  				event := new(EpochHandlerEpochPrepared)
  3019  				if err := _EpochHandler.contract.UnpackLog(event, "EpochPrepared", log); err != nil {
  3020  					return err
  3021  				}
  3022  				event.Raw = log
  3023  
  3024  				select {
  3025  				case sink <- event:
  3026  				case err := <-sub.Err():
  3027  					return err
  3028  				case <-quit:
  3029  					return nil
  3030  				}
  3031  			case err := <-sub.Err():
  3032  				return err
  3033  			case <-quit:
  3034  				return nil
  3035  			}
  3036  		}
  3037  	}), nil
  3038  }
  3039  
  3040  // ParseEpochPrepared is a log parse operation binding the contract event 0x1a69c0760aa329b76f72579129869013ebd3d41594db019c0e997b939fcb32e3.
  3041  //
  3042  // Solidity: event EpochPrepared(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated, bool rebase)
  3043  func (_EpochHandler *EpochHandlerFilterer) ParseEpochPrepared(log types.Log) (*EpochHandlerEpochPrepared, error) {
  3044  	event := new(EpochHandlerEpochPrepared)
  3045  	if err := _EpochHandler.contract.UnpackLog(event, "EpochPrepared", log); err != nil {
  3046  		return nil, err
  3047  	}
  3048  	return event, nil
  3049  }
  3050  
  3051  // EpochHandlerEpochRebasedIterator is returned from FilterEpochRebased and is used to iterate over the raw logs and unpacked data for EpochRebased events raised by the EpochHandler contract.
  3052  type EpochHandlerEpochRebasedIterator struct {
  3053  	Event *EpochHandlerEpochRebased // Event containing the contract specifics and raw log
  3054  
  3055  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3056  	event    string              // Event name to use for unpacking event data
  3057  
  3058  	logs chan types.Log        // Log channel receiving the found contract events
  3059  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3060  	done bool                  // Whether the subscription completed delivering logs
  3061  	fail error                 // Occurred error to stop iteration
  3062  }
  3063  
  3064  // Next advances the iterator to the subsequent event, returning whether there
  3065  // are any more events found. In case of a retrieval or parsing error, false is
  3066  // returned and Error() can be queried for the exact failure.
  3067  func (it *EpochHandlerEpochRebasedIterator) Next() bool {
  3068  	// If the iterator failed, stop iterating
  3069  	if it.fail != nil {
  3070  		return false
  3071  	}
  3072  	// If the iterator completed, deliver directly whatever's available
  3073  	if it.done {
  3074  		select {
  3075  		case log := <-it.logs:
  3076  			it.Event = new(EpochHandlerEpochRebased)
  3077  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3078  				it.fail = err
  3079  				return false
  3080  			}
  3081  			it.Event.Raw = log
  3082  			return true
  3083  
  3084  		default:
  3085  			return false
  3086  		}
  3087  	}
  3088  	// Iterator still in progress, wait for either a data or an error event
  3089  	select {
  3090  	case log := <-it.logs:
  3091  		it.Event = new(EpochHandlerEpochRebased)
  3092  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3093  			it.fail = err
  3094  			return false
  3095  		}
  3096  		it.Event.Raw = log
  3097  		return true
  3098  
  3099  	case err := <-it.sub.Err():
  3100  		it.done = true
  3101  		it.fail = err
  3102  		return it.Next()
  3103  	}
  3104  }
  3105  
  3106  // Error returns any retrieval or parsing error occurred during filtering.
  3107  func (it *EpochHandlerEpochRebasedIterator) Error() error {
  3108  	return it.fail
  3109  }
  3110  
  3111  // Close terminates the iteration process, releasing any pending underlying
  3112  // resources.
  3113  func (it *EpochHandlerEpochRebasedIterator) Close() error {
  3114  	it.sub.Unsubscribe()
  3115  	return nil
  3116  }
  3117  
  3118  // EpochHandlerEpochRebased represents a EpochRebased event raised by the EpochHandler contract.
  3119  type EpochHandlerEpochRebased struct {
  3120  	ForkNumber       *big.Int
  3121  	EpochNumber      *big.Int
  3122  	StartBlockNumber *big.Int
  3123  	EndBlockNumber   *big.Int
  3124  	RequestStart     *big.Int
  3125  	RequestEnd       *big.Int
  3126  	EpochIsEmpty     bool
  3127  	IsRequest        bool
  3128  	UserActivated    bool
  3129  	Raw              types.Log // Blockchain specific contextual infos
  3130  }
  3131  
  3132  // FilterEpochRebased is a free log retrieval operation binding the contract event 0x030c1c69405c93021f28f57557240dee939a320b826a1fd0d39bf6e629ecab47.
  3133  //
  3134  // Solidity: event EpochRebased(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated)
  3135  func (_EpochHandler *EpochHandlerFilterer) FilterEpochRebased(opts *bind.FilterOpts) (*EpochHandlerEpochRebasedIterator, error) {
  3136  
  3137  	logs, sub, err := _EpochHandler.contract.FilterLogs(opts, "EpochRebased")
  3138  	if err != nil {
  3139  		return nil, err
  3140  	}
  3141  	return &EpochHandlerEpochRebasedIterator{contract: _EpochHandler.contract, event: "EpochRebased", logs: logs, sub: sub}, nil
  3142  }
  3143  
  3144  // WatchEpochRebased is a free log subscription operation binding the contract event 0x030c1c69405c93021f28f57557240dee939a320b826a1fd0d39bf6e629ecab47.
  3145  //
  3146  // Solidity: event EpochRebased(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated)
  3147  func (_EpochHandler *EpochHandlerFilterer) WatchEpochRebased(opts *bind.WatchOpts, sink chan<- *EpochHandlerEpochRebased) (event.Subscription, error) {
  3148  
  3149  	logs, sub, err := _EpochHandler.contract.WatchLogs(opts, "EpochRebased")
  3150  	if err != nil {
  3151  		return nil, err
  3152  	}
  3153  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3154  		defer sub.Unsubscribe()
  3155  		for {
  3156  			select {
  3157  			case log := <-logs:
  3158  				// New log arrived, parse the event and forward to the user
  3159  				event := new(EpochHandlerEpochRebased)
  3160  				if err := _EpochHandler.contract.UnpackLog(event, "EpochRebased", log); err != nil {
  3161  					return err
  3162  				}
  3163  				event.Raw = log
  3164  
  3165  				select {
  3166  				case sink <- event:
  3167  				case err := <-sub.Err():
  3168  					return err
  3169  				case <-quit:
  3170  					return nil
  3171  				}
  3172  			case err := <-sub.Err():
  3173  				return err
  3174  			case <-quit:
  3175  				return nil
  3176  			}
  3177  		}
  3178  	}), nil
  3179  }
  3180  
  3181  // ParseEpochRebased is a log parse operation binding the contract event 0x030c1c69405c93021f28f57557240dee939a320b826a1fd0d39bf6e629ecab47.
  3182  //
  3183  // Solidity: event EpochRebased(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated)
  3184  func (_EpochHandler *EpochHandlerFilterer) ParseEpochRebased(log types.Log) (*EpochHandlerEpochRebased, error) {
  3185  	event := new(EpochHandlerEpochRebased)
  3186  	if err := _EpochHandler.contract.UnpackLog(event, "EpochRebased", log); err != nil {
  3187  		return nil, err
  3188  	}
  3189  	return event, nil
  3190  }
  3191  
  3192  // EpochHandlerForkedIterator is returned from FilterForked and is used to iterate over the raw logs and unpacked data for Forked events raised by the EpochHandler contract.
  3193  type EpochHandlerForkedIterator struct {
  3194  	Event *EpochHandlerForked // Event containing the contract specifics and raw log
  3195  
  3196  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3197  	event    string              // Event name to use for unpacking event data
  3198  
  3199  	logs chan types.Log        // Log channel receiving the found contract events
  3200  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3201  	done bool                  // Whether the subscription completed delivering logs
  3202  	fail error                 // Occurred error to stop iteration
  3203  }
  3204  
  3205  // Next advances the iterator to the subsequent event, returning whether there
  3206  // are any more events found. In case of a retrieval or parsing error, false is
  3207  // returned and Error() can be queried for the exact failure.
  3208  func (it *EpochHandlerForkedIterator) Next() bool {
  3209  	// If the iterator failed, stop iterating
  3210  	if it.fail != nil {
  3211  		return false
  3212  	}
  3213  	// If the iterator completed, deliver directly whatever's available
  3214  	if it.done {
  3215  		select {
  3216  		case log := <-it.logs:
  3217  			it.Event = new(EpochHandlerForked)
  3218  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3219  				it.fail = err
  3220  				return false
  3221  			}
  3222  			it.Event.Raw = log
  3223  			return true
  3224  
  3225  		default:
  3226  			return false
  3227  		}
  3228  	}
  3229  	// Iterator still in progress, wait for either a data or an error event
  3230  	select {
  3231  	case log := <-it.logs:
  3232  		it.Event = new(EpochHandlerForked)
  3233  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3234  			it.fail = err
  3235  			return false
  3236  		}
  3237  		it.Event.Raw = log
  3238  		return true
  3239  
  3240  	case err := <-it.sub.Err():
  3241  		it.done = true
  3242  		it.fail = err
  3243  		return it.Next()
  3244  	}
  3245  }
  3246  
  3247  // Error returns any retrieval or parsing error occurred during filtering.
  3248  func (it *EpochHandlerForkedIterator) Error() error {
  3249  	return it.fail
  3250  }
  3251  
  3252  // Close terminates the iteration process, releasing any pending underlying
  3253  // resources.
  3254  func (it *EpochHandlerForkedIterator) Close() error {
  3255  	it.sub.Unsubscribe()
  3256  	return nil
  3257  }
  3258  
  3259  // EpochHandlerForked represents a Forked event raised by the EpochHandler contract.
  3260  type EpochHandlerForked struct {
  3261  	NewFork           *big.Int
  3262  	EpochNumber       *big.Int
  3263  	ForkedBlockNumber *big.Int
  3264  	Raw               types.Log // Blockchain specific contextual infos
  3265  }
  3266  
  3267  // FilterForked is a free log retrieval operation binding the contract event 0x0647d42ab02f6e0ae76959757dcb6aa6feac1d4ba6f077f1223fb4b1b429f06c.
  3268  //
  3269  // Solidity: event Forked(uint256 newFork, uint256 epochNumber, uint256 forkedBlockNumber)
  3270  func (_EpochHandler *EpochHandlerFilterer) FilterForked(opts *bind.FilterOpts) (*EpochHandlerForkedIterator, error) {
  3271  
  3272  	logs, sub, err := _EpochHandler.contract.FilterLogs(opts, "Forked")
  3273  	if err != nil {
  3274  		return nil, err
  3275  	}
  3276  	return &EpochHandlerForkedIterator{contract: _EpochHandler.contract, event: "Forked", logs: logs, sub: sub}, nil
  3277  }
  3278  
  3279  // WatchForked is a free log subscription operation binding the contract event 0x0647d42ab02f6e0ae76959757dcb6aa6feac1d4ba6f077f1223fb4b1b429f06c.
  3280  //
  3281  // Solidity: event Forked(uint256 newFork, uint256 epochNumber, uint256 forkedBlockNumber)
  3282  func (_EpochHandler *EpochHandlerFilterer) WatchForked(opts *bind.WatchOpts, sink chan<- *EpochHandlerForked) (event.Subscription, error) {
  3283  
  3284  	logs, sub, err := _EpochHandler.contract.WatchLogs(opts, "Forked")
  3285  	if err != nil {
  3286  		return nil, err
  3287  	}
  3288  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3289  		defer sub.Unsubscribe()
  3290  		for {
  3291  			select {
  3292  			case log := <-logs:
  3293  				// New log arrived, parse the event and forward to the user
  3294  				event := new(EpochHandlerForked)
  3295  				if err := _EpochHandler.contract.UnpackLog(event, "Forked", log); err != nil {
  3296  					return err
  3297  				}
  3298  				event.Raw = log
  3299  
  3300  				select {
  3301  				case sink <- event:
  3302  				case err := <-sub.Err():
  3303  					return err
  3304  				case <-quit:
  3305  					return nil
  3306  				}
  3307  			case err := <-sub.Err():
  3308  				return err
  3309  			case <-quit:
  3310  				return nil
  3311  			}
  3312  		}
  3313  	}), nil
  3314  }
  3315  
  3316  // ParseForked is a log parse operation binding the contract event 0x0647d42ab02f6e0ae76959757dcb6aa6feac1d4ba6f077f1223fb4b1b429f06c.
  3317  //
  3318  // Solidity: event Forked(uint256 newFork, uint256 epochNumber, uint256 forkedBlockNumber)
  3319  func (_EpochHandler *EpochHandlerFilterer) ParseForked(log types.Log) (*EpochHandlerForked, error) {
  3320  	event := new(EpochHandlerForked)
  3321  	if err := _EpochHandler.contract.UnpackLog(event, "Forked", log); err != nil {
  3322  		return nil, err
  3323  	}
  3324  	return event, nil
  3325  }
  3326  
  3327  // EpochHandlerOperatorChangedIterator is returned from FilterOperatorChanged and is used to iterate over the raw logs and unpacked data for OperatorChanged events raised by the EpochHandler contract.
  3328  type EpochHandlerOperatorChangedIterator struct {
  3329  	Event *EpochHandlerOperatorChanged // Event containing the contract specifics and raw log
  3330  
  3331  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3332  	event    string              // Event name to use for unpacking event data
  3333  
  3334  	logs chan types.Log        // Log channel receiving the found contract events
  3335  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3336  	done bool                  // Whether the subscription completed delivering logs
  3337  	fail error                 // Occurred error to stop iteration
  3338  }
  3339  
  3340  // Next advances the iterator to the subsequent event, returning whether there
  3341  // are any more events found. In case of a retrieval or parsing error, false is
  3342  // returned and Error() can be queried for the exact failure.
  3343  func (it *EpochHandlerOperatorChangedIterator) Next() bool {
  3344  	// If the iterator failed, stop iterating
  3345  	if it.fail != nil {
  3346  		return false
  3347  	}
  3348  	// If the iterator completed, deliver directly whatever's available
  3349  	if it.done {
  3350  		select {
  3351  		case log := <-it.logs:
  3352  			it.Event = new(EpochHandlerOperatorChanged)
  3353  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3354  				it.fail = err
  3355  				return false
  3356  			}
  3357  			it.Event.Raw = log
  3358  			return true
  3359  
  3360  		default:
  3361  			return false
  3362  		}
  3363  	}
  3364  	// Iterator still in progress, wait for either a data or an error event
  3365  	select {
  3366  	case log := <-it.logs:
  3367  		it.Event = new(EpochHandlerOperatorChanged)
  3368  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3369  			it.fail = err
  3370  			return false
  3371  		}
  3372  		it.Event.Raw = log
  3373  		return true
  3374  
  3375  	case err := <-it.sub.Err():
  3376  		it.done = true
  3377  		it.fail = err
  3378  		return it.Next()
  3379  	}
  3380  }
  3381  
  3382  // Error returns any retrieval or parsing error occurred during filtering.
  3383  func (it *EpochHandlerOperatorChangedIterator) Error() error {
  3384  	return it.fail
  3385  }
  3386  
  3387  // Close terminates the iteration process, releasing any pending underlying
  3388  // resources.
  3389  func (it *EpochHandlerOperatorChangedIterator) Close() error {
  3390  	it.sub.Unsubscribe()
  3391  	return nil
  3392  }
  3393  
  3394  // EpochHandlerOperatorChanged represents a OperatorChanged event raised by the EpochHandler contract.
  3395  type EpochHandlerOperatorChanged struct {
  3396  	NewOperator common.Address
  3397  	Raw         types.Log // Blockchain specific contextual infos
  3398  }
  3399  
  3400  // FilterOperatorChanged is a free log retrieval operation binding the contract event 0x4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e54.
  3401  //
  3402  // Solidity: event OperatorChanged(address _newOperator)
  3403  func (_EpochHandler *EpochHandlerFilterer) FilterOperatorChanged(opts *bind.FilterOpts) (*EpochHandlerOperatorChangedIterator, error) {
  3404  
  3405  	logs, sub, err := _EpochHandler.contract.FilterLogs(opts, "OperatorChanged")
  3406  	if err != nil {
  3407  		return nil, err
  3408  	}
  3409  	return &EpochHandlerOperatorChangedIterator{contract: _EpochHandler.contract, event: "OperatorChanged", logs: logs, sub: sub}, nil
  3410  }
  3411  
  3412  // WatchOperatorChanged is a free log subscription operation binding the contract event 0x4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e54.
  3413  //
  3414  // Solidity: event OperatorChanged(address _newOperator)
  3415  func (_EpochHandler *EpochHandlerFilterer) WatchOperatorChanged(opts *bind.WatchOpts, sink chan<- *EpochHandlerOperatorChanged) (event.Subscription, error) {
  3416  
  3417  	logs, sub, err := _EpochHandler.contract.WatchLogs(opts, "OperatorChanged")
  3418  	if err != nil {
  3419  		return nil, err
  3420  	}
  3421  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3422  		defer sub.Unsubscribe()
  3423  		for {
  3424  			select {
  3425  			case log := <-logs:
  3426  				// New log arrived, parse the event and forward to the user
  3427  				event := new(EpochHandlerOperatorChanged)
  3428  				if err := _EpochHandler.contract.UnpackLog(event, "OperatorChanged", log); err != nil {
  3429  					return err
  3430  				}
  3431  				event.Raw = log
  3432  
  3433  				select {
  3434  				case sink <- event:
  3435  				case err := <-sub.Err():
  3436  					return err
  3437  				case <-quit:
  3438  					return nil
  3439  				}
  3440  			case err := <-sub.Err():
  3441  				return err
  3442  			case <-quit:
  3443  				return nil
  3444  			}
  3445  		}
  3446  	}), nil
  3447  }
  3448  
  3449  // ParseOperatorChanged is a log parse operation binding the contract event 0x4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e54.
  3450  //
  3451  // Solidity: event OperatorChanged(address _newOperator)
  3452  func (_EpochHandler *EpochHandlerFilterer) ParseOperatorChanged(log types.Log) (*EpochHandlerOperatorChanged, error) {
  3453  	event := new(EpochHandlerOperatorChanged)
  3454  	if err := _EpochHandler.contract.UnpackLog(event, "OperatorChanged", log); err != nil {
  3455  		return nil, err
  3456  	}
  3457  	return event, nil
  3458  }
  3459  
  3460  // EpochHandlerRequestAppliedIterator is returned from FilterRequestApplied and is used to iterate over the raw logs and unpacked data for RequestApplied events raised by the EpochHandler contract.
  3461  type EpochHandlerRequestAppliedIterator struct {
  3462  	Event *EpochHandlerRequestApplied // Event containing the contract specifics and raw log
  3463  
  3464  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3465  	event    string              // Event name to use for unpacking event data
  3466  
  3467  	logs chan types.Log        // Log channel receiving the found contract events
  3468  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3469  	done bool                  // Whether the subscription completed delivering logs
  3470  	fail error                 // Occurred error to stop iteration
  3471  }
  3472  
  3473  // Next advances the iterator to the subsequent event, returning whether there
  3474  // are any more events found. In case of a retrieval or parsing error, false is
  3475  // returned and Error() can be queried for the exact failure.
  3476  func (it *EpochHandlerRequestAppliedIterator) Next() bool {
  3477  	// If the iterator failed, stop iterating
  3478  	if it.fail != nil {
  3479  		return false
  3480  	}
  3481  	// If the iterator completed, deliver directly whatever's available
  3482  	if it.done {
  3483  		select {
  3484  		case log := <-it.logs:
  3485  			it.Event = new(EpochHandlerRequestApplied)
  3486  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3487  				it.fail = err
  3488  				return false
  3489  			}
  3490  			it.Event.Raw = log
  3491  			return true
  3492  
  3493  		default:
  3494  			return false
  3495  		}
  3496  	}
  3497  	// Iterator still in progress, wait for either a data or an error event
  3498  	select {
  3499  	case log := <-it.logs:
  3500  		it.Event = new(EpochHandlerRequestApplied)
  3501  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3502  			it.fail = err
  3503  			return false
  3504  		}
  3505  		it.Event.Raw = log
  3506  		return true
  3507  
  3508  	case err := <-it.sub.Err():
  3509  		it.done = true
  3510  		it.fail = err
  3511  		return it.Next()
  3512  	}
  3513  }
  3514  
  3515  // Error returns any retrieval or parsing error occurred during filtering.
  3516  func (it *EpochHandlerRequestAppliedIterator) Error() error {
  3517  	return it.fail
  3518  }
  3519  
  3520  // Close terminates the iteration process, releasing any pending underlying
  3521  // resources.
  3522  func (it *EpochHandlerRequestAppliedIterator) Close() error {
  3523  	it.sub.Unsubscribe()
  3524  	return nil
  3525  }
  3526  
  3527  // EpochHandlerRequestApplied represents a RequestApplied event raised by the EpochHandler contract.
  3528  type EpochHandlerRequestApplied struct {
  3529  	RequestId     *big.Int
  3530  	UserActivated bool
  3531  	Raw           types.Log // Blockchain specific contextual infos
  3532  }
  3533  
  3534  // FilterRequestApplied is a free log retrieval operation binding the contract event 0x6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c2.
  3535  //
  3536  // Solidity: event RequestApplied(uint256 requestId, bool userActivated)
  3537  func (_EpochHandler *EpochHandlerFilterer) FilterRequestApplied(opts *bind.FilterOpts) (*EpochHandlerRequestAppliedIterator, error) {
  3538  
  3539  	logs, sub, err := _EpochHandler.contract.FilterLogs(opts, "RequestApplied")
  3540  	if err != nil {
  3541  		return nil, err
  3542  	}
  3543  	return &EpochHandlerRequestAppliedIterator{contract: _EpochHandler.contract, event: "RequestApplied", logs: logs, sub: sub}, nil
  3544  }
  3545  
  3546  // WatchRequestApplied is a free log subscription operation binding the contract event 0x6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c2.
  3547  //
  3548  // Solidity: event RequestApplied(uint256 requestId, bool userActivated)
  3549  func (_EpochHandler *EpochHandlerFilterer) WatchRequestApplied(opts *bind.WatchOpts, sink chan<- *EpochHandlerRequestApplied) (event.Subscription, error) {
  3550  
  3551  	logs, sub, err := _EpochHandler.contract.WatchLogs(opts, "RequestApplied")
  3552  	if err != nil {
  3553  		return nil, err
  3554  	}
  3555  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3556  		defer sub.Unsubscribe()
  3557  		for {
  3558  			select {
  3559  			case log := <-logs:
  3560  				// New log arrived, parse the event and forward to the user
  3561  				event := new(EpochHandlerRequestApplied)
  3562  				if err := _EpochHandler.contract.UnpackLog(event, "RequestApplied", log); err != nil {
  3563  					return err
  3564  				}
  3565  				event.Raw = log
  3566  
  3567  				select {
  3568  				case sink <- event:
  3569  				case err := <-sub.Err():
  3570  					return err
  3571  				case <-quit:
  3572  					return nil
  3573  				}
  3574  			case err := <-sub.Err():
  3575  				return err
  3576  			case <-quit:
  3577  				return nil
  3578  			}
  3579  		}
  3580  	}), nil
  3581  }
  3582  
  3583  // ParseRequestApplied is a log parse operation binding the contract event 0x6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c2.
  3584  //
  3585  // Solidity: event RequestApplied(uint256 requestId, bool userActivated)
  3586  func (_EpochHandler *EpochHandlerFilterer) ParseRequestApplied(log types.Log) (*EpochHandlerRequestApplied, error) {
  3587  	event := new(EpochHandlerRequestApplied)
  3588  	if err := _EpochHandler.contract.UnpackLog(event, "RequestApplied", log); err != nil {
  3589  		return nil, err
  3590  	}
  3591  	return event, nil
  3592  }
  3593  
  3594  // EpochHandlerRequestChallengedIterator is returned from FilterRequestChallenged and is used to iterate over the raw logs and unpacked data for RequestChallenged events raised by the EpochHandler contract.
  3595  type EpochHandlerRequestChallengedIterator struct {
  3596  	Event *EpochHandlerRequestChallenged // Event containing the contract specifics and raw log
  3597  
  3598  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3599  	event    string              // Event name to use for unpacking event data
  3600  
  3601  	logs chan types.Log        // Log channel receiving the found contract events
  3602  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3603  	done bool                  // Whether the subscription completed delivering logs
  3604  	fail error                 // Occurred error to stop iteration
  3605  }
  3606  
  3607  // Next advances the iterator to the subsequent event, returning whether there
  3608  // are any more events found. In case of a retrieval or parsing error, false is
  3609  // returned and Error() can be queried for the exact failure.
  3610  func (it *EpochHandlerRequestChallengedIterator) Next() bool {
  3611  	// If the iterator failed, stop iterating
  3612  	if it.fail != nil {
  3613  		return false
  3614  	}
  3615  	// If the iterator completed, deliver directly whatever's available
  3616  	if it.done {
  3617  		select {
  3618  		case log := <-it.logs:
  3619  			it.Event = new(EpochHandlerRequestChallenged)
  3620  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3621  				it.fail = err
  3622  				return false
  3623  			}
  3624  			it.Event.Raw = log
  3625  			return true
  3626  
  3627  		default:
  3628  			return false
  3629  		}
  3630  	}
  3631  	// Iterator still in progress, wait for either a data or an error event
  3632  	select {
  3633  	case log := <-it.logs:
  3634  		it.Event = new(EpochHandlerRequestChallenged)
  3635  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3636  			it.fail = err
  3637  			return false
  3638  		}
  3639  		it.Event.Raw = log
  3640  		return true
  3641  
  3642  	case err := <-it.sub.Err():
  3643  		it.done = true
  3644  		it.fail = err
  3645  		return it.Next()
  3646  	}
  3647  }
  3648  
  3649  // Error returns any retrieval or parsing error occurred during filtering.
  3650  func (it *EpochHandlerRequestChallengedIterator) Error() error {
  3651  	return it.fail
  3652  }
  3653  
  3654  // Close terminates the iteration process, releasing any pending underlying
  3655  // resources.
  3656  func (it *EpochHandlerRequestChallengedIterator) Close() error {
  3657  	it.sub.Unsubscribe()
  3658  	return nil
  3659  }
  3660  
  3661  // EpochHandlerRequestChallenged represents a RequestChallenged event raised by the EpochHandler contract.
  3662  type EpochHandlerRequestChallenged struct {
  3663  	RequestId     *big.Int
  3664  	UserActivated bool
  3665  	Raw           types.Log // Blockchain specific contextual infos
  3666  }
  3667  
  3668  // FilterRequestChallenged is a free log retrieval operation binding the contract event 0xc8135db115644ed4ae193313c4c801235ef740d2a57a8d5e6fe26ab66635698a.
  3669  //
  3670  // Solidity: event RequestChallenged(uint256 requestId, bool userActivated)
  3671  func (_EpochHandler *EpochHandlerFilterer) FilterRequestChallenged(opts *bind.FilterOpts) (*EpochHandlerRequestChallengedIterator, error) {
  3672  
  3673  	logs, sub, err := _EpochHandler.contract.FilterLogs(opts, "RequestChallenged")
  3674  	if err != nil {
  3675  		return nil, err
  3676  	}
  3677  	return &EpochHandlerRequestChallengedIterator{contract: _EpochHandler.contract, event: "RequestChallenged", logs: logs, sub: sub}, nil
  3678  }
  3679  
  3680  // WatchRequestChallenged is a free log subscription operation binding the contract event 0xc8135db115644ed4ae193313c4c801235ef740d2a57a8d5e6fe26ab66635698a.
  3681  //
  3682  // Solidity: event RequestChallenged(uint256 requestId, bool userActivated)
  3683  func (_EpochHandler *EpochHandlerFilterer) WatchRequestChallenged(opts *bind.WatchOpts, sink chan<- *EpochHandlerRequestChallenged) (event.Subscription, error) {
  3684  
  3685  	logs, sub, err := _EpochHandler.contract.WatchLogs(opts, "RequestChallenged")
  3686  	if err != nil {
  3687  		return nil, err
  3688  	}
  3689  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3690  		defer sub.Unsubscribe()
  3691  		for {
  3692  			select {
  3693  			case log := <-logs:
  3694  				// New log arrived, parse the event and forward to the user
  3695  				event := new(EpochHandlerRequestChallenged)
  3696  				if err := _EpochHandler.contract.UnpackLog(event, "RequestChallenged", log); err != nil {
  3697  					return err
  3698  				}
  3699  				event.Raw = log
  3700  
  3701  				select {
  3702  				case sink <- event:
  3703  				case err := <-sub.Err():
  3704  					return err
  3705  				case <-quit:
  3706  					return nil
  3707  				}
  3708  			case err := <-sub.Err():
  3709  				return err
  3710  			case <-quit:
  3711  				return nil
  3712  			}
  3713  		}
  3714  	}), nil
  3715  }
  3716  
  3717  // ParseRequestChallenged is a log parse operation binding the contract event 0xc8135db115644ed4ae193313c4c801235ef740d2a57a8d5e6fe26ab66635698a.
  3718  //
  3719  // Solidity: event RequestChallenged(uint256 requestId, bool userActivated)
  3720  func (_EpochHandler *EpochHandlerFilterer) ParseRequestChallenged(log types.Log) (*EpochHandlerRequestChallenged, error) {
  3721  	event := new(EpochHandlerRequestChallenged)
  3722  	if err := _EpochHandler.contract.UnpackLog(event, "RequestChallenged", log); err != nil {
  3723  		return nil, err
  3724  	}
  3725  	return event, nil
  3726  }
  3727  
  3728  // EpochHandlerRequestCreatedIterator is returned from FilterRequestCreated and is used to iterate over the raw logs and unpacked data for RequestCreated events raised by the EpochHandler contract.
  3729  type EpochHandlerRequestCreatedIterator struct {
  3730  	Event *EpochHandlerRequestCreated // Event containing the contract specifics and raw log
  3731  
  3732  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3733  	event    string              // Event name to use for unpacking event data
  3734  
  3735  	logs chan types.Log        // Log channel receiving the found contract events
  3736  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3737  	done bool                  // Whether the subscription completed delivering logs
  3738  	fail error                 // Occurred error to stop iteration
  3739  }
  3740  
  3741  // Next advances the iterator to the subsequent event, returning whether there
  3742  // are any more events found. In case of a retrieval or parsing error, false is
  3743  // returned and Error() can be queried for the exact failure.
  3744  func (it *EpochHandlerRequestCreatedIterator) Next() bool {
  3745  	// If the iterator failed, stop iterating
  3746  	if it.fail != nil {
  3747  		return false
  3748  	}
  3749  	// If the iterator completed, deliver directly whatever's available
  3750  	if it.done {
  3751  		select {
  3752  		case log := <-it.logs:
  3753  			it.Event = new(EpochHandlerRequestCreated)
  3754  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3755  				it.fail = err
  3756  				return false
  3757  			}
  3758  			it.Event.Raw = log
  3759  			return true
  3760  
  3761  		default:
  3762  			return false
  3763  		}
  3764  	}
  3765  	// Iterator still in progress, wait for either a data or an error event
  3766  	select {
  3767  	case log := <-it.logs:
  3768  		it.Event = new(EpochHandlerRequestCreated)
  3769  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3770  			it.fail = err
  3771  			return false
  3772  		}
  3773  		it.Event.Raw = log
  3774  		return true
  3775  
  3776  	case err := <-it.sub.Err():
  3777  		it.done = true
  3778  		it.fail = err
  3779  		return it.Next()
  3780  	}
  3781  }
  3782  
  3783  // Error returns any retrieval or parsing error occurred during filtering.
  3784  func (it *EpochHandlerRequestCreatedIterator) Error() error {
  3785  	return it.fail
  3786  }
  3787  
  3788  // Close terminates the iteration process, releasing any pending underlying
  3789  // resources.
  3790  func (it *EpochHandlerRequestCreatedIterator) Close() error {
  3791  	it.sub.Unsubscribe()
  3792  	return nil
  3793  }
  3794  
  3795  // EpochHandlerRequestCreated represents a RequestCreated event raised by the EpochHandler contract.
  3796  type EpochHandlerRequestCreated struct {
  3797  	RequestId     *big.Int
  3798  	Requestor     common.Address
  3799  	To            common.Address
  3800  	WeiAmount     *big.Int
  3801  	TrieKey       [32]byte
  3802  	TrieValue     []byte
  3803  	IsExit        bool
  3804  	UserActivated bool
  3805  	Raw           types.Log // Blockchain specific contextual infos
  3806  }
  3807  
  3808  // FilterRequestCreated is a free log retrieval operation binding the contract event 0x879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d.
  3809  //
  3810  // Solidity: event RequestCreated(uint256 requestId, address requestor, address to, uint256 weiAmount, bytes32 trieKey, bytes trieValue, bool isExit, bool userActivated)
  3811  func (_EpochHandler *EpochHandlerFilterer) FilterRequestCreated(opts *bind.FilterOpts) (*EpochHandlerRequestCreatedIterator, error) {
  3812  
  3813  	logs, sub, err := _EpochHandler.contract.FilterLogs(opts, "RequestCreated")
  3814  	if err != nil {
  3815  		return nil, err
  3816  	}
  3817  	return &EpochHandlerRequestCreatedIterator{contract: _EpochHandler.contract, event: "RequestCreated", logs: logs, sub: sub}, nil
  3818  }
  3819  
  3820  // WatchRequestCreated is a free log subscription operation binding the contract event 0x879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d.
  3821  //
  3822  // Solidity: event RequestCreated(uint256 requestId, address requestor, address to, uint256 weiAmount, bytes32 trieKey, bytes trieValue, bool isExit, bool userActivated)
  3823  func (_EpochHandler *EpochHandlerFilterer) WatchRequestCreated(opts *bind.WatchOpts, sink chan<- *EpochHandlerRequestCreated) (event.Subscription, error) {
  3824  
  3825  	logs, sub, err := _EpochHandler.contract.WatchLogs(opts, "RequestCreated")
  3826  	if err != nil {
  3827  		return nil, err
  3828  	}
  3829  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3830  		defer sub.Unsubscribe()
  3831  		for {
  3832  			select {
  3833  			case log := <-logs:
  3834  				// New log arrived, parse the event and forward to the user
  3835  				event := new(EpochHandlerRequestCreated)
  3836  				if err := _EpochHandler.contract.UnpackLog(event, "RequestCreated", log); err != nil {
  3837  					return err
  3838  				}
  3839  				event.Raw = log
  3840  
  3841  				select {
  3842  				case sink <- event:
  3843  				case err := <-sub.Err():
  3844  					return err
  3845  				case <-quit:
  3846  					return nil
  3847  				}
  3848  			case err := <-sub.Err():
  3849  				return err
  3850  			case <-quit:
  3851  				return nil
  3852  			}
  3853  		}
  3854  	}), nil
  3855  }
  3856  
  3857  // ParseRequestCreated is a log parse operation binding the contract event 0x879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d.
  3858  //
  3859  // Solidity: event RequestCreated(uint256 requestId, address requestor, address to, uint256 weiAmount, bytes32 trieKey, bytes trieValue, bool isExit, bool userActivated)
  3860  func (_EpochHandler *EpochHandlerFilterer) ParseRequestCreated(log types.Log) (*EpochHandlerRequestCreated, error) {
  3861  	event := new(EpochHandlerRequestCreated)
  3862  	if err := _EpochHandler.contract.UnpackLog(event, "RequestCreated", log); err != nil {
  3863  		return nil, err
  3864  	}
  3865  	return event, nil
  3866  }
  3867  
  3868  // EpochHandlerRequestFinalizedIterator is returned from FilterRequestFinalized and is used to iterate over the raw logs and unpacked data for RequestFinalized events raised by the EpochHandler contract.
  3869  type EpochHandlerRequestFinalizedIterator struct {
  3870  	Event *EpochHandlerRequestFinalized // Event containing the contract specifics and raw log
  3871  
  3872  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3873  	event    string              // Event name to use for unpacking event data
  3874  
  3875  	logs chan types.Log        // Log channel receiving the found contract events
  3876  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3877  	done bool                  // Whether the subscription completed delivering logs
  3878  	fail error                 // Occurred error to stop iteration
  3879  }
  3880  
  3881  // Next advances the iterator to the subsequent event, returning whether there
  3882  // are any more events found. In case of a retrieval or parsing error, false is
  3883  // returned and Error() can be queried for the exact failure.
  3884  func (it *EpochHandlerRequestFinalizedIterator) Next() bool {
  3885  	// If the iterator failed, stop iterating
  3886  	if it.fail != nil {
  3887  		return false
  3888  	}
  3889  	// If the iterator completed, deliver directly whatever's available
  3890  	if it.done {
  3891  		select {
  3892  		case log := <-it.logs:
  3893  			it.Event = new(EpochHandlerRequestFinalized)
  3894  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3895  				it.fail = err
  3896  				return false
  3897  			}
  3898  			it.Event.Raw = log
  3899  			return true
  3900  
  3901  		default:
  3902  			return false
  3903  		}
  3904  	}
  3905  	// Iterator still in progress, wait for either a data or an error event
  3906  	select {
  3907  	case log := <-it.logs:
  3908  		it.Event = new(EpochHandlerRequestFinalized)
  3909  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3910  			it.fail = err
  3911  			return false
  3912  		}
  3913  		it.Event.Raw = log
  3914  		return true
  3915  
  3916  	case err := <-it.sub.Err():
  3917  		it.done = true
  3918  		it.fail = err
  3919  		return it.Next()
  3920  	}
  3921  }
  3922  
  3923  // Error returns any retrieval or parsing error occurred during filtering.
  3924  func (it *EpochHandlerRequestFinalizedIterator) Error() error {
  3925  	return it.fail
  3926  }
  3927  
  3928  // Close terminates the iteration process, releasing any pending underlying
  3929  // resources.
  3930  func (it *EpochHandlerRequestFinalizedIterator) Close() error {
  3931  	it.sub.Unsubscribe()
  3932  	return nil
  3933  }
  3934  
  3935  // EpochHandlerRequestFinalized represents a RequestFinalized event raised by the EpochHandler contract.
  3936  type EpochHandlerRequestFinalized struct {
  3937  	RequestId     *big.Int
  3938  	UserActivated bool
  3939  	Raw           types.Log // Blockchain specific contextual infos
  3940  }
  3941  
  3942  // FilterRequestFinalized is a free log retrieval operation binding the contract event 0x134017cf3262b18f892ee95dde3b0aec9a80cc70a7c96f09c64bd237aceb0473.
  3943  //
  3944  // Solidity: event RequestFinalized(uint256 requestId, bool userActivated)
  3945  func (_EpochHandler *EpochHandlerFilterer) FilterRequestFinalized(opts *bind.FilterOpts) (*EpochHandlerRequestFinalizedIterator, error) {
  3946  
  3947  	logs, sub, err := _EpochHandler.contract.FilterLogs(opts, "RequestFinalized")
  3948  	if err != nil {
  3949  		return nil, err
  3950  	}
  3951  	return &EpochHandlerRequestFinalizedIterator{contract: _EpochHandler.contract, event: "RequestFinalized", logs: logs, sub: sub}, nil
  3952  }
  3953  
  3954  // WatchRequestFinalized is a free log subscription operation binding the contract event 0x134017cf3262b18f892ee95dde3b0aec9a80cc70a7c96f09c64bd237aceb0473.
  3955  //
  3956  // Solidity: event RequestFinalized(uint256 requestId, bool userActivated)
  3957  func (_EpochHandler *EpochHandlerFilterer) WatchRequestFinalized(opts *bind.WatchOpts, sink chan<- *EpochHandlerRequestFinalized) (event.Subscription, error) {
  3958  
  3959  	logs, sub, err := _EpochHandler.contract.WatchLogs(opts, "RequestFinalized")
  3960  	if err != nil {
  3961  		return nil, err
  3962  	}
  3963  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3964  		defer sub.Unsubscribe()
  3965  		for {
  3966  			select {
  3967  			case log := <-logs:
  3968  				// New log arrived, parse the event and forward to the user
  3969  				event := new(EpochHandlerRequestFinalized)
  3970  				if err := _EpochHandler.contract.UnpackLog(event, "RequestFinalized", log); err != nil {
  3971  					return err
  3972  				}
  3973  				event.Raw = log
  3974  
  3975  				select {
  3976  				case sink <- event:
  3977  				case err := <-sub.Err():
  3978  					return err
  3979  				case <-quit:
  3980  					return nil
  3981  				}
  3982  			case err := <-sub.Err():
  3983  				return err
  3984  			case <-quit:
  3985  				return nil
  3986  			}
  3987  		}
  3988  	}), nil
  3989  }
  3990  
  3991  // ParseRequestFinalized is a log parse operation binding the contract event 0x134017cf3262b18f892ee95dde3b0aec9a80cc70a7c96f09c64bd237aceb0473.
  3992  //
  3993  // Solidity: event RequestFinalized(uint256 requestId, bool userActivated)
  3994  func (_EpochHandler *EpochHandlerFilterer) ParseRequestFinalized(log types.Log) (*EpochHandlerRequestFinalized, error) {
  3995  	event := new(EpochHandlerRequestFinalized)
  3996  	if err := _EpochHandler.contract.UnpackLog(event, "RequestFinalized", log); err != nil {
  3997  		return nil, err
  3998  	}
  3999  	return event, nil
  4000  }
  4001  
  4002  // EpochHandlerRequestableContractMappedIterator is returned from FilterRequestableContractMapped and is used to iterate over the raw logs and unpacked data for RequestableContractMapped events raised by the EpochHandler contract.
  4003  type EpochHandlerRequestableContractMappedIterator struct {
  4004  	Event *EpochHandlerRequestableContractMapped // Event containing the contract specifics and raw log
  4005  
  4006  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4007  	event    string              // Event name to use for unpacking event data
  4008  
  4009  	logs chan types.Log        // Log channel receiving the found contract events
  4010  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4011  	done bool                  // Whether the subscription completed delivering logs
  4012  	fail error                 // Occurred error to stop iteration
  4013  }
  4014  
  4015  // Next advances the iterator to the subsequent event, returning whether there
  4016  // are any more events found. In case of a retrieval or parsing error, false is
  4017  // returned and Error() can be queried for the exact failure.
  4018  func (it *EpochHandlerRequestableContractMappedIterator) Next() bool {
  4019  	// If the iterator failed, stop iterating
  4020  	if it.fail != nil {
  4021  		return false
  4022  	}
  4023  	// If the iterator completed, deliver directly whatever's available
  4024  	if it.done {
  4025  		select {
  4026  		case log := <-it.logs:
  4027  			it.Event = new(EpochHandlerRequestableContractMapped)
  4028  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4029  				it.fail = err
  4030  				return false
  4031  			}
  4032  			it.Event.Raw = log
  4033  			return true
  4034  
  4035  		default:
  4036  			return false
  4037  		}
  4038  	}
  4039  	// Iterator still in progress, wait for either a data or an error event
  4040  	select {
  4041  	case log := <-it.logs:
  4042  		it.Event = new(EpochHandlerRequestableContractMapped)
  4043  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4044  			it.fail = err
  4045  			return false
  4046  		}
  4047  		it.Event.Raw = log
  4048  		return true
  4049  
  4050  	case err := <-it.sub.Err():
  4051  		it.done = true
  4052  		it.fail = err
  4053  		return it.Next()
  4054  	}
  4055  }
  4056  
  4057  // Error returns any retrieval or parsing error occurred during filtering.
  4058  func (it *EpochHandlerRequestableContractMappedIterator) Error() error {
  4059  	return it.fail
  4060  }
  4061  
  4062  // Close terminates the iteration process, releasing any pending underlying
  4063  // resources.
  4064  func (it *EpochHandlerRequestableContractMappedIterator) Close() error {
  4065  	it.sub.Unsubscribe()
  4066  	return nil
  4067  }
  4068  
  4069  // EpochHandlerRequestableContractMapped represents a RequestableContractMapped event raised by the EpochHandler contract.
  4070  type EpochHandlerRequestableContractMapped struct {
  4071  	ContractInRootchain  common.Address
  4072  	ContractInChildchain common.Address
  4073  	Raw                  types.Log // Blockchain specific contextual infos
  4074  }
  4075  
  4076  // FilterRequestableContractMapped is a free log retrieval operation binding the contract event 0xc5ec2ed49686197edd2ed642c7e6096893cc81e6658cde2527030316037715d0.
  4077  //
  4078  // Solidity: event RequestableContractMapped(address contractInRootchain, address contractInChildchain)
  4079  func (_EpochHandler *EpochHandlerFilterer) FilterRequestableContractMapped(opts *bind.FilterOpts) (*EpochHandlerRequestableContractMappedIterator, error) {
  4080  
  4081  	logs, sub, err := _EpochHandler.contract.FilterLogs(opts, "RequestableContractMapped")
  4082  	if err != nil {
  4083  		return nil, err
  4084  	}
  4085  	return &EpochHandlerRequestableContractMappedIterator{contract: _EpochHandler.contract, event: "RequestableContractMapped", logs: logs, sub: sub}, nil
  4086  }
  4087  
  4088  // WatchRequestableContractMapped is a free log subscription operation binding the contract event 0xc5ec2ed49686197edd2ed642c7e6096893cc81e6658cde2527030316037715d0.
  4089  //
  4090  // Solidity: event RequestableContractMapped(address contractInRootchain, address contractInChildchain)
  4091  func (_EpochHandler *EpochHandlerFilterer) WatchRequestableContractMapped(opts *bind.WatchOpts, sink chan<- *EpochHandlerRequestableContractMapped) (event.Subscription, error) {
  4092  
  4093  	logs, sub, err := _EpochHandler.contract.WatchLogs(opts, "RequestableContractMapped")
  4094  	if err != nil {
  4095  		return nil, err
  4096  	}
  4097  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4098  		defer sub.Unsubscribe()
  4099  		for {
  4100  			select {
  4101  			case log := <-logs:
  4102  				// New log arrived, parse the event and forward to the user
  4103  				event := new(EpochHandlerRequestableContractMapped)
  4104  				if err := _EpochHandler.contract.UnpackLog(event, "RequestableContractMapped", log); err != nil {
  4105  					return err
  4106  				}
  4107  				event.Raw = log
  4108  
  4109  				select {
  4110  				case sink <- event:
  4111  				case err := <-sub.Err():
  4112  					return err
  4113  				case <-quit:
  4114  					return nil
  4115  				}
  4116  			case err := <-sub.Err():
  4117  				return err
  4118  			case <-quit:
  4119  				return nil
  4120  			}
  4121  		}
  4122  	}), nil
  4123  }
  4124  
  4125  // ParseRequestableContractMapped is a log parse operation binding the contract event 0xc5ec2ed49686197edd2ed642c7e6096893cc81e6658cde2527030316037715d0.
  4126  //
  4127  // Solidity: event RequestableContractMapped(address contractInRootchain, address contractInChildchain)
  4128  func (_EpochHandler *EpochHandlerFilterer) ParseRequestableContractMapped(log types.Log) (*EpochHandlerRequestableContractMapped, error) {
  4129  	event := new(EpochHandlerRequestableContractMapped)
  4130  	if err := _EpochHandler.contract.UnpackLog(event, "RequestableContractMapped", log); err != nil {
  4131  		return nil, err
  4132  	}
  4133  	return event, nil
  4134  }
  4135  
  4136  // EpochHandlerSessionTimeoutIterator is returned from FilterSessionTimeout and is used to iterate over the raw logs and unpacked data for SessionTimeout events raised by the EpochHandler contract.
  4137  type EpochHandlerSessionTimeoutIterator struct {
  4138  	Event *EpochHandlerSessionTimeout // Event containing the contract specifics and raw log
  4139  
  4140  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4141  	event    string              // Event name to use for unpacking event data
  4142  
  4143  	logs chan types.Log        // Log channel receiving the found contract events
  4144  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4145  	done bool                  // Whether the subscription completed delivering logs
  4146  	fail error                 // Occurred error to stop iteration
  4147  }
  4148  
  4149  // Next advances the iterator to the subsequent event, returning whether there
  4150  // are any more events found. In case of a retrieval or parsing error, false is
  4151  // returned and Error() can be queried for the exact failure.
  4152  func (it *EpochHandlerSessionTimeoutIterator) Next() bool {
  4153  	// If the iterator failed, stop iterating
  4154  	if it.fail != nil {
  4155  		return false
  4156  	}
  4157  	// If the iterator completed, deliver directly whatever's available
  4158  	if it.done {
  4159  		select {
  4160  		case log := <-it.logs:
  4161  			it.Event = new(EpochHandlerSessionTimeout)
  4162  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4163  				it.fail = err
  4164  				return false
  4165  			}
  4166  			it.Event.Raw = log
  4167  			return true
  4168  
  4169  		default:
  4170  			return false
  4171  		}
  4172  	}
  4173  	// Iterator still in progress, wait for either a data or an error event
  4174  	select {
  4175  	case log := <-it.logs:
  4176  		it.Event = new(EpochHandlerSessionTimeout)
  4177  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4178  			it.fail = err
  4179  			return false
  4180  		}
  4181  		it.Event.Raw = log
  4182  		return true
  4183  
  4184  	case err := <-it.sub.Err():
  4185  		it.done = true
  4186  		it.fail = err
  4187  		return it.Next()
  4188  	}
  4189  }
  4190  
  4191  // Error returns any retrieval or parsing error occurred during filtering.
  4192  func (it *EpochHandlerSessionTimeoutIterator) Error() error {
  4193  	return it.fail
  4194  }
  4195  
  4196  // Close terminates the iteration process, releasing any pending underlying
  4197  // resources.
  4198  func (it *EpochHandlerSessionTimeoutIterator) Close() error {
  4199  	it.sub.Unsubscribe()
  4200  	return nil
  4201  }
  4202  
  4203  // EpochHandlerSessionTimeout represents a SessionTimeout event raised by the EpochHandler contract.
  4204  type EpochHandlerSessionTimeout struct {
  4205  	UserActivated bool
  4206  	Raw           types.Log // Blockchain specific contextual infos
  4207  }
  4208  
  4209  // FilterSessionTimeout is a free log retrieval operation binding the contract event 0x2122ec719581cd177f225f59a1ee005831211196831f8f1ccffa817d2e7bd108.
  4210  //
  4211  // Solidity: event SessionTimeout(bool userActivated)
  4212  func (_EpochHandler *EpochHandlerFilterer) FilterSessionTimeout(opts *bind.FilterOpts) (*EpochHandlerSessionTimeoutIterator, error) {
  4213  
  4214  	logs, sub, err := _EpochHandler.contract.FilterLogs(opts, "SessionTimeout")
  4215  	if err != nil {
  4216  		return nil, err
  4217  	}
  4218  	return &EpochHandlerSessionTimeoutIterator{contract: _EpochHandler.contract, event: "SessionTimeout", logs: logs, sub: sub}, nil
  4219  }
  4220  
  4221  // WatchSessionTimeout is a free log subscription operation binding the contract event 0x2122ec719581cd177f225f59a1ee005831211196831f8f1ccffa817d2e7bd108.
  4222  //
  4223  // Solidity: event SessionTimeout(bool userActivated)
  4224  func (_EpochHandler *EpochHandlerFilterer) WatchSessionTimeout(opts *bind.WatchOpts, sink chan<- *EpochHandlerSessionTimeout) (event.Subscription, error) {
  4225  
  4226  	logs, sub, err := _EpochHandler.contract.WatchLogs(opts, "SessionTimeout")
  4227  	if err != nil {
  4228  		return nil, err
  4229  	}
  4230  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4231  		defer sub.Unsubscribe()
  4232  		for {
  4233  			select {
  4234  			case log := <-logs:
  4235  				// New log arrived, parse the event and forward to the user
  4236  				event := new(EpochHandlerSessionTimeout)
  4237  				if err := _EpochHandler.contract.UnpackLog(event, "SessionTimeout", log); err != nil {
  4238  					return err
  4239  				}
  4240  				event.Raw = log
  4241  
  4242  				select {
  4243  				case sink <- event:
  4244  				case err := <-sub.Err():
  4245  					return err
  4246  				case <-quit:
  4247  					return nil
  4248  				}
  4249  			case err := <-sub.Err():
  4250  				return err
  4251  			case <-quit:
  4252  				return nil
  4253  			}
  4254  		}
  4255  	}), nil
  4256  }
  4257  
  4258  // ParseSessionTimeout is a log parse operation binding the contract event 0x2122ec719581cd177f225f59a1ee005831211196831f8f1ccffa817d2e7bd108.
  4259  //
  4260  // Solidity: event SessionTimeout(bool userActivated)
  4261  func (_EpochHandler *EpochHandlerFilterer) ParseSessionTimeout(log types.Log) (*EpochHandlerSessionTimeout, error) {
  4262  	event := new(EpochHandlerSessionTimeout)
  4263  	if err := _EpochHandler.contract.UnpackLog(event, "SessionTimeout", log); err != nil {
  4264  		return nil, err
  4265  	}
  4266  	return event, nil
  4267  }
  4268  
  4269  // MathABI is the input ABI used to generate the binding from.
  4270  const MathABI = "[]"
  4271  
  4272  // MathBin is the compiled bytecode used for deploying new contracts.
  4273  var MathBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582059f5b6656555777713940676f444002442a3eab637cd25b4c9bb08f94083d96b64736f6c634300050c0032"
  4274  
  4275  // DeployMath deploys a new Ethereum contract, binding an instance of Math to it.
  4276  func DeployMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Math, error) {
  4277  	parsed, err := abi.JSON(strings.NewReader(MathABI))
  4278  	if err != nil {
  4279  		return common.Address{}, nil, nil, err
  4280  	}
  4281  
  4282  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(MathBin), backend)
  4283  	if err != nil {
  4284  		return common.Address{}, nil, nil, err
  4285  	}
  4286  	return address, tx, &Math{MathCaller: MathCaller{contract: contract}, MathTransactor: MathTransactor{contract: contract}, MathFilterer: MathFilterer{contract: contract}}, nil
  4287  }
  4288  
  4289  // Math is an auto generated Go binding around an Ethereum contract.
  4290  type Math struct {
  4291  	MathCaller     // Read-only binding to the contract
  4292  	MathTransactor // Write-only binding to the contract
  4293  	MathFilterer   // Log filterer for contract events
  4294  }
  4295  
  4296  // MathCaller is an auto generated read-only Go binding around an Ethereum contract.
  4297  type MathCaller struct {
  4298  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4299  }
  4300  
  4301  // MathTransactor is an auto generated write-only Go binding around an Ethereum contract.
  4302  type MathTransactor struct {
  4303  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4304  }
  4305  
  4306  // MathFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  4307  type MathFilterer struct {
  4308  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4309  }
  4310  
  4311  // MathSession is an auto generated Go binding around an Ethereum contract,
  4312  // with pre-set call and transact options.
  4313  type MathSession struct {
  4314  	Contract     *Math             // Generic contract binding to set the session for
  4315  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  4316  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  4317  }
  4318  
  4319  // MathCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  4320  // with pre-set call options.
  4321  type MathCallerSession struct {
  4322  	Contract *MathCaller   // Generic contract caller binding to set the session for
  4323  	CallOpts bind.CallOpts // Call options to use throughout this session
  4324  }
  4325  
  4326  // MathTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  4327  // with pre-set transact options.
  4328  type MathTransactorSession struct {
  4329  	Contract     *MathTransactor   // Generic contract transactor binding to set the session for
  4330  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  4331  }
  4332  
  4333  // MathRaw is an auto generated low-level Go binding around an Ethereum contract.
  4334  type MathRaw struct {
  4335  	Contract *Math // Generic contract binding to access the raw methods on
  4336  }
  4337  
  4338  // MathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  4339  type MathCallerRaw struct {
  4340  	Contract *MathCaller // Generic read-only contract binding to access the raw methods on
  4341  }
  4342  
  4343  // MathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  4344  type MathTransactorRaw struct {
  4345  	Contract *MathTransactor // Generic write-only contract binding to access the raw methods on
  4346  }
  4347  
  4348  // NewMath creates a new instance of Math, bound to a specific deployed contract.
  4349  func NewMath(address common.Address, backend bind.ContractBackend) (*Math, error) {
  4350  	contract, err := bindMath(address, backend, backend, backend)
  4351  	if err != nil {
  4352  		return nil, err
  4353  	}
  4354  	return &Math{MathCaller: MathCaller{contract: contract}, MathTransactor: MathTransactor{contract: contract}, MathFilterer: MathFilterer{contract: contract}}, nil
  4355  }
  4356  
  4357  // NewMathCaller creates a new read-only instance of Math, bound to a specific deployed contract.
  4358  func NewMathCaller(address common.Address, caller bind.ContractCaller) (*MathCaller, error) {
  4359  	contract, err := bindMath(address, caller, nil, nil)
  4360  	if err != nil {
  4361  		return nil, err
  4362  	}
  4363  	return &MathCaller{contract: contract}, nil
  4364  }
  4365  
  4366  // NewMathTransactor creates a new write-only instance of Math, bound to a specific deployed contract.
  4367  func NewMathTransactor(address common.Address, transactor bind.ContractTransactor) (*MathTransactor, error) {
  4368  	contract, err := bindMath(address, nil, transactor, nil)
  4369  	if err != nil {
  4370  		return nil, err
  4371  	}
  4372  	return &MathTransactor{contract: contract}, nil
  4373  }
  4374  
  4375  // NewMathFilterer creates a new log filterer instance of Math, bound to a specific deployed contract.
  4376  func NewMathFilterer(address common.Address, filterer bind.ContractFilterer) (*MathFilterer, error) {
  4377  	contract, err := bindMath(address, nil, nil, filterer)
  4378  	if err != nil {
  4379  		return nil, err
  4380  	}
  4381  	return &MathFilterer{contract: contract}, nil
  4382  }
  4383  
  4384  // bindMath binds a generic wrapper to an already deployed contract.
  4385  func bindMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  4386  	parsed, err := abi.JSON(strings.NewReader(MathABI))
  4387  	if err != nil {
  4388  		return nil, err
  4389  	}
  4390  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  4391  }
  4392  
  4393  // Call invokes the (constant) contract method with params as input values and
  4394  // sets the output to result. The result type might be a single field for simple
  4395  // returns, a slice of interfaces for anonymous returns and a struct for named
  4396  // returns.
  4397  func (_Math *MathRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4398  	return _Math.Contract.MathCaller.contract.Call(opts, result, method, params...)
  4399  }
  4400  
  4401  // Transfer initiates a plain transaction to move funds to the contract, calling
  4402  // its default method if one is available.
  4403  func (_Math *MathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4404  	return _Math.Contract.MathTransactor.contract.Transfer(opts)
  4405  }
  4406  
  4407  // Transact invokes the (paid) contract method with params as input values.
  4408  func (_Math *MathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4409  	return _Math.Contract.MathTransactor.contract.Transact(opts, method, params...)
  4410  }
  4411  
  4412  // Call invokes the (constant) contract method with params as input values and
  4413  // sets the output to result. The result type might be a single field for simple
  4414  // returns, a slice of interfaces for anonymous returns and a struct for named
  4415  // returns.
  4416  func (_Math *MathCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4417  	return _Math.Contract.contract.Call(opts, result, method, params...)
  4418  }
  4419  
  4420  // Transfer initiates a plain transaction to move funds to the contract, calling
  4421  // its default method if one is available.
  4422  func (_Math *MathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4423  	return _Math.Contract.contract.Transfer(opts)
  4424  }
  4425  
  4426  // Transact invokes the (paid) contract method with params as input values.
  4427  func (_Math *MathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4428  	return _Math.Contract.contract.Transact(opts, method, params...)
  4429  }
  4430  
  4431  // RLPABI is the input ABI used to generate the binding from.
  4432  const RLPABI = "[]"
  4433  
  4434  // RLPBin is the compiled bytecode used for deploying new contracts.
  4435  var RLPBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200e62f7dc00fc4c8eac04f8d672dc03a017efe72ff7483585fb6978cb1b070d1264736f6c634300050c0032"
  4436  
  4437  // DeployRLP deploys a new Ethereum contract, binding an instance of RLP to it.
  4438  func DeployRLP(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *RLP, error) {
  4439  	parsed, err := abi.JSON(strings.NewReader(RLPABI))
  4440  	if err != nil {
  4441  		return common.Address{}, nil, nil, err
  4442  	}
  4443  
  4444  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RLPBin), backend)
  4445  	if err != nil {
  4446  		return common.Address{}, nil, nil, err
  4447  	}
  4448  	return address, tx, &RLP{RLPCaller: RLPCaller{contract: contract}, RLPTransactor: RLPTransactor{contract: contract}, RLPFilterer: RLPFilterer{contract: contract}}, nil
  4449  }
  4450  
  4451  // RLP is an auto generated Go binding around an Ethereum contract.
  4452  type RLP struct {
  4453  	RLPCaller     // Read-only binding to the contract
  4454  	RLPTransactor // Write-only binding to the contract
  4455  	RLPFilterer   // Log filterer for contract events
  4456  }
  4457  
  4458  // RLPCaller is an auto generated read-only Go binding around an Ethereum contract.
  4459  type RLPCaller struct {
  4460  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4461  }
  4462  
  4463  // RLPTransactor is an auto generated write-only Go binding around an Ethereum contract.
  4464  type RLPTransactor struct {
  4465  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4466  }
  4467  
  4468  // RLPFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  4469  type RLPFilterer struct {
  4470  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4471  }
  4472  
  4473  // RLPSession is an auto generated Go binding around an Ethereum contract,
  4474  // with pre-set call and transact options.
  4475  type RLPSession struct {
  4476  	Contract     *RLP              // Generic contract binding to set the session for
  4477  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  4478  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  4479  }
  4480  
  4481  // RLPCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  4482  // with pre-set call options.
  4483  type RLPCallerSession struct {
  4484  	Contract *RLPCaller    // Generic contract caller binding to set the session for
  4485  	CallOpts bind.CallOpts // Call options to use throughout this session
  4486  }
  4487  
  4488  // RLPTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  4489  // with pre-set transact options.
  4490  type RLPTransactorSession struct {
  4491  	Contract     *RLPTransactor    // Generic contract transactor binding to set the session for
  4492  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  4493  }
  4494  
  4495  // RLPRaw is an auto generated low-level Go binding around an Ethereum contract.
  4496  type RLPRaw struct {
  4497  	Contract *RLP // Generic contract binding to access the raw methods on
  4498  }
  4499  
  4500  // RLPCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  4501  type RLPCallerRaw struct {
  4502  	Contract *RLPCaller // Generic read-only contract binding to access the raw methods on
  4503  }
  4504  
  4505  // RLPTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  4506  type RLPTransactorRaw struct {
  4507  	Contract *RLPTransactor // Generic write-only contract binding to access the raw methods on
  4508  }
  4509  
  4510  // NewRLP creates a new instance of RLP, bound to a specific deployed contract.
  4511  func NewRLP(address common.Address, backend bind.ContractBackend) (*RLP, error) {
  4512  	contract, err := bindRLP(address, backend, backend, backend)
  4513  	if err != nil {
  4514  		return nil, err
  4515  	}
  4516  	return &RLP{RLPCaller: RLPCaller{contract: contract}, RLPTransactor: RLPTransactor{contract: contract}, RLPFilterer: RLPFilterer{contract: contract}}, nil
  4517  }
  4518  
  4519  // NewRLPCaller creates a new read-only instance of RLP, bound to a specific deployed contract.
  4520  func NewRLPCaller(address common.Address, caller bind.ContractCaller) (*RLPCaller, error) {
  4521  	contract, err := bindRLP(address, caller, nil, nil)
  4522  	if err != nil {
  4523  		return nil, err
  4524  	}
  4525  	return &RLPCaller{contract: contract}, nil
  4526  }
  4527  
  4528  // NewRLPTransactor creates a new write-only instance of RLP, bound to a specific deployed contract.
  4529  func NewRLPTransactor(address common.Address, transactor bind.ContractTransactor) (*RLPTransactor, error) {
  4530  	contract, err := bindRLP(address, nil, transactor, nil)
  4531  	if err != nil {
  4532  		return nil, err
  4533  	}
  4534  	return &RLPTransactor{contract: contract}, nil
  4535  }
  4536  
  4537  // NewRLPFilterer creates a new log filterer instance of RLP, bound to a specific deployed contract.
  4538  func NewRLPFilterer(address common.Address, filterer bind.ContractFilterer) (*RLPFilterer, error) {
  4539  	contract, err := bindRLP(address, nil, nil, filterer)
  4540  	if err != nil {
  4541  		return nil, err
  4542  	}
  4543  	return &RLPFilterer{contract: contract}, nil
  4544  }
  4545  
  4546  // bindRLP binds a generic wrapper to an already deployed contract.
  4547  func bindRLP(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  4548  	parsed, err := abi.JSON(strings.NewReader(RLPABI))
  4549  	if err != nil {
  4550  		return nil, err
  4551  	}
  4552  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  4553  }
  4554  
  4555  // Call invokes the (constant) contract method with params as input values and
  4556  // sets the output to result. The result type might be a single field for simple
  4557  // returns, a slice of interfaces for anonymous returns and a struct for named
  4558  // returns.
  4559  func (_RLP *RLPRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4560  	return _RLP.Contract.RLPCaller.contract.Call(opts, result, method, params...)
  4561  }
  4562  
  4563  // Transfer initiates a plain transaction to move funds to the contract, calling
  4564  // its default method if one is available.
  4565  func (_RLP *RLPRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4566  	return _RLP.Contract.RLPTransactor.contract.Transfer(opts)
  4567  }
  4568  
  4569  // Transact invokes the (paid) contract method with params as input values.
  4570  func (_RLP *RLPRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4571  	return _RLP.Contract.RLPTransactor.contract.Transact(opts, method, params...)
  4572  }
  4573  
  4574  // Call invokes the (constant) contract method with params as input values and
  4575  // sets the output to result. The result type might be a single field for simple
  4576  // returns, a slice of interfaces for anonymous returns and a struct for named
  4577  // returns.
  4578  func (_RLP *RLPCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4579  	return _RLP.Contract.contract.Call(opts, result, method, params...)
  4580  }
  4581  
  4582  // Transfer initiates a plain transaction to move funds to the contract, calling
  4583  // its default method if one is available.
  4584  func (_RLP *RLPTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4585  	return _RLP.Contract.contract.Transfer(opts)
  4586  }
  4587  
  4588  // Transact invokes the (paid) contract method with params as input values.
  4589  func (_RLP *RLPTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4590  	return _RLP.Contract.contract.Transact(opts, method, params...)
  4591  }
  4592  
  4593  // RLPEncodeABI is the input ABI used to generate the binding from.
  4594  const RLPEncodeABI = "[]"
  4595  
  4596  // RLPEncodeBin is the compiled bytecode used for deploying new contracts.
  4597  var RLPEncodeBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158205da3446f8619339802867bf627e0a042d4f4176598fe1e096c50366e6bfe24a164736f6c634300050c0032"
  4598  
  4599  // DeployRLPEncode deploys a new Ethereum contract, binding an instance of RLPEncode to it.
  4600  func DeployRLPEncode(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *RLPEncode, error) {
  4601  	parsed, err := abi.JSON(strings.NewReader(RLPEncodeABI))
  4602  	if err != nil {
  4603  		return common.Address{}, nil, nil, err
  4604  	}
  4605  
  4606  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RLPEncodeBin), backend)
  4607  	if err != nil {
  4608  		return common.Address{}, nil, nil, err
  4609  	}
  4610  	return address, tx, &RLPEncode{RLPEncodeCaller: RLPEncodeCaller{contract: contract}, RLPEncodeTransactor: RLPEncodeTransactor{contract: contract}, RLPEncodeFilterer: RLPEncodeFilterer{contract: contract}}, nil
  4611  }
  4612  
  4613  // RLPEncode is an auto generated Go binding around an Ethereum contract.
  4614  type RLPEncode struct {
  4615  	RLPEncodeCaller     // Read-only binding to the contract
  4616  	RLPEncodeTransactor // Write-only binding to the contract
  4617  	RLPEncodeFilterer   // Log filterer for contract events
  4618  }
  4619  
  4620  // RLPEncodeCaller is an auto generated read-only Go binding around an Ethereum contract.
  4621  type RLPEncodeCaller struct {
  4622  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4623  }
  4624  
  4625  // RLPEncodeTransactor is an auto generated write-only Go binding around an Ethereum contract.
  4626  type RLPEncodeTransactor struct {
  4627  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4628  }
  4629  
  4630  // RLPEncodeFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  4631  type RLPEncodeFilterer struct {
  4632  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4633  }
  4634  
  4635  // RLPEncodeSession is an auto generated Go binding around an Ethereum contract,
  4636  // with pre-set call and transact options.
  4637  type RLPEncodeSession struct {
  4638  	Contract     *RLPEncode        // Generic contract binding to set the session for
  4639  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  4640  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  4641  }
  4642  
  4643  // RLPEncodeCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  4644  // with pre-set call options.
  4645  type RLPEncodeCallerSession struct {
  4646  	Contract *RLPEncodeCaller // Generic contract caller binding to set the session for
  4647  	CallOpts bind.CallOpts    // Call options to use throughout this session
  4648  }
  4649  
  4650  // RLPEncodeTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  4651  // with pre-set transact options.
  4652  type RLPEncodeTransactorSession struct {
  4653  	Contract     *RLPEncodeTransactor // Generic contract transactor binding to set the session for
  4654  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
  4655  }
  4656  
  4657  // RLPEncodeRaw is an auto generated low-level Go binding around an Ethereum contract.
  4658  type RLPEncodeRaw struct {
  4659  	Contract *RLPEncode // Generic contract binding to access the raw methods on
  4660  }
  4661  
  4662  // RLPEncodeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  4663  type RLPEncodeCallerRaw struct {
  4664  	Contract *RLPEncodeCaller // Generic read-only contract binding to access the raw methods on
  4665  }
  4666  
  4667  // RLPEncodeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  4668  type RLPEncodeTransactorRaw struct {
  4669  	Contract *RLPEncodeTransactor // Generic write-only contract binding to access the raw methods on
  4670  }
  4671  
  4672  // NewRLPEncode creates a new instance of RLPEncode, bound to a specific deployed contract.
  4673  func NewRLPEncode(address common.Address, backend bind.ContractBackend) (*RLPEncode, error) {
  4674  	contract, err := bindRLPEncode(address, backend, backend, backend)
  4675  	if err != nil {
  4676  		return nil, err
  4677  	}
  4678  	return &RLPEncode{RLPEncodeCaller: RLPEncodeCaller{contract: contract}, RLPEncodeTransactor: RLPEncodeTransactor{contract: contract}, RLPEncodeFilterer: RLPEncodeFilterer{contract: contract}}, nil
  4679  }
  4680  
  4681  // NewRLPEncodeCaller creates a new read-only instance of RLPEncode, bound to a specific deployed contract.
  4682  func NewRLPEncodeCaller(address common.Address, caller bind.ContractCaller) (*RLPEncodeCaller, error) {
  4683  	contract, err := bindRLPEncode(address, caller, nil, nil)
  4684  	if err != nil {
  4685  		return nil, err
  4686  	}
  4687  	return &RLPEncodeCaller{contract: contract}, nil
  4688  }
  4689  
  4690  // NewRLPEncodeTransactor creates a new write-only instance of RLPEncode, bound to a specific deployed contract.
  4691  func NewRLPEncodeTransactor(address common.Address, transactor bind.ContractTransactor) (*RLPEncodeTransactor, error) {
  4692  	contract, err := bindRLPEncode(address, nil, transactor, nil)
  4693  	if err != nil {
  4694  		return nil, err
  4695  	}
  4696  	return &RLPEncodeTransactor{contract: contract}, nil
  4697  }
  4698  
  4699  // NewRLPEncodeFilterer creates a new log filterer instance of RLPEncode, bound to a specific deployed contract.
  4700  func NewRLPEncodeFilterer(address common.Address, filterer bind.ContractFilterer) (*RLPEncodeFilterer, error) {
  4701  	contract, err := bindRLPEncode(address, nil, nil, filterer)
  4702  	if err != nil {
  4703  		return nil, err
  4704  	}
  4705  	return &RLPEncodeFilterer{contract: contract}, nil
  4706  }
  4707  
  4708  // bindRLPEncode binds a generic wrapper to an already deployed contract.
  4709  func bindRLPEncode(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  4710  	parsed, err := abi.JSON(strings.NewReader(RLPEncodeABI))
  4711  	if err != nil {
  4712  		return nil, err
  4713  	}
  4714  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  4715  }
  4716  
  4717  // Call invokes the (constant) contract method with params as input values and
  4718  // sets the output to result. The result type might be a single field for simple
  4719  // returns, a slice of interfaces for anonymous returns and a struct for named
  4720  // returns.
  4721  func (_RLPEncode *RLPEncodeRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4722  	return _RLPEncode.Contract.RLPEncodeCaller.contract.Call(opts, result, method, params...)
  4723  }
  4724  
  4725  // Transfer initiates a plain transaction to move funds to the contract, calling
  4726  // its default method if one is available.
  4727  func (_RLPEncode *RLPEncodeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4728  	return _RLPEncode.Contract.RLPEncodeTransactor.contract.Transfer(opts)
  4729  }
  4730  
  4731  // Transact invokes the (paid) contract method with params as input values.
  4732  func (_RLPEncode *RLPEncodeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4733  	return _RLPEncode.Contract.RLPEncodeTransactor.contract.Transact(opts, method, params...)
  4734  }
  4735  
  4736  // Call invokes the (constant) contract method with params as input values and
  4737  // sets the output to result. The result type might be a single field for simple
  4738  // returns, a slice of interfaces for anonymous returns and a struct for named
  4739  // returns.
  4740  func (_RLPEncode *RLPEncodeCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4741  	return _RLPEncode.Contract.contract.Call(opts, result, method, params...)
  4742  }
  4743  
  4744  // Transfer initiates a plain transaction to move funds to the contract, calling
  4745  // its default method if one is available.
  4746  func (_RLPEncode *RLPEncodeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4747  	return _RLPEncode.Contract.contract.Transfer(opts)
  4748  }
  4749  
  4750  // Transact invokes the (paid) contract method with params as input values.
  4751  func (_RLPEncode *RLPEncodeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4752  	return _RLPEncode.Contract.contract.Transact(opts, method, params...)
  4753  }
  4754  
  4755  // RequestableIABI is the input ABI used to generate the binding from.
  4756  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\"}]"
  4757  
  4758  // RequestableIFuncSigs maps the 4-byte function signature to its string representation.
  4759  var RequestableIFuncSigs = map[string]string{
  4760  	"141ecf46": "applyRequestInChildChain(bool,uint256,address,bytes32,bytes)",
  4761  	"a9f79308": "applyRequestInRootChain(bool,uint256,address,bytes32,bytes)",
  4762  }
  4763  
  4764  // RequestableI is an auto generated Go binding around an Ethereum contract.
  4765  type RequestableI struct {
  4766  	RequestableICaller     // Read-only binding to the contract
  4767  	RequestableITransactor // Write-only binding to the contract
  4768  	RequestableIFilterer   // Log filterer for contract events
  4769  }
  4770  
  4771  // RequestableICaller is an auto generated read-only Go binding around an Ethereum contract.
  4772  type RequestableICaller struct {
  4773  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4774  }
  4775  
  4776  // RequestableITransactor is an auto generated write-only Go binding around an Ethereum contract.
  4777  type RequestableITransactor struct {
  4778  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4779  }
  4780  
  4781  // RequestableIFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  4782  type RequestableIFilterer struct {
  4783  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4784  }
  4785  
  4786  // RequestableISession is an auto generated Go binding around an Ethereum contract,
  4787  // with pre-set call and transact options.
  4788  type RequestableISession struct {
  4789  	Contract     *RequestableI     // Generic contract binding to set the session for
  4790  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  4791  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  4792  }
  4793  
  4794  // RequestableICallerSession is an auto generated read-only Go binding around an Ethereum contract,
  4795  // with pre-set call options.
  4796  type RequestableICallerSession struct {
  4797  	Contract *RequestableICaller // Generic contract caller binding to set the session for
  4798  	CallOpts bind.CallOpts       // Call options to use throughout this session
  4799  }
  4800  
  4801  // RequestableITransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  4802  // with pre-set transact options.
  4803  type RequestableITransactorSession struct {
  4804  	Contract     *RequestableITransactor // Generic contract transactor binding to set the session for
  4805  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
  4806  }
  4807  
  4808  // RequestableIRaw is an auto generated low-level Go binding around an Ethereum contract.
  4809  type RequestableIRaw struct {
  4810  	Contract *RequestableI // Generic contract binding to access the raw methods on
  4811  }
  4812  
  4813  // RequestableICallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  4814  type RequestableICallerRaw struct {
  4815  	Contract *RequestableICaller // Generic read-only contract binding to access the raw methods on
  4816  }
  4817  
  4818  // RequestableITransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  4819  type RequestableITransactorRaw struct {
  4820  	Contract *RequestableITransactor // Generic write-only contract binding to access the raw methods on
  4821  }
  4822  
  4823  // NewRequestableI creates a new instance of RequestableI, bound to a specific deployed contract.
  4824  func NewRequestableI(address common.Address, backend bind.ContractBackend) (*RequestableI, error) {
  4825  	contract, err := bindRequestableI(address, backend, backend, backend)
  4826  	if err != nil {
  4827  		return nil, err
  4828  	}
  4829  	return &RequestableI{RequestableICaller: RequestableICaller{contract: contract}, RequestableITransactor: RequestableITransactor{contract: contract}, RequestableIFilterer: RequestableIFilterer{contract: contract}}, nil
  4830  }
  4831  
  4832  // NewRequestableICaller creates a new read-only instance of RequestableI, bound to a specific deployed contract.
  4833  func NewRequestableICaller(address common.Address, caller bind.ContractCaller) (*RequestableICaller, error) {
  4834  	contract, err := bindRequestableI(address, caller, nil, nil)
  4835  	if err != nil {
  4836  		return nil, err
  4837  	}
  4838  	return &RequestableICaller{contract: contract}, nil
  4839  }
  4840  
  4841  // NewRequestableITransactor creates a new write-only instance of RequestableI, bound to a specific deployed contract.
  4842  func NewRequestableITransactor(address common.Address, transactor bind.ContractTransactor) (*RequestableITransactor, error) {
  4843  	contract, err := bindRequestableI(address, nil, transactor, nil)
  4844  	if err != nil {
  4845  		return nil, err
  4846  	}
  4847  	return &RequestableITransactor{contract: contract}, nil
  4848  }
  4849  
  4850  // NewRequestableIFilterer creates a new log filterer instance of RequestableI, bound to a specific deployed contract.
  4851  func NewRequestableIFilterer(address common.Address, filterer bind.ContractFilterer) (*RequestableIFilterer, error) {
  4852  	contract, err := bindRequestableI(address, nil, nil, filterer)
  4853  	if err != nil {
  4854  		return nil, err
  4855  	}
  4856  	return &RequestableIFilterer{contract: contract}, nil
  4857  }
  4858  
  4859  // bindRequestableI binds a generic wrapper to an already deployed contract.
  4860  func bindRequestableI(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  4861  	parsed, err := abi.JSON(strings.NewReader(RequestableIABI))
  4862  	if err != nil {
  4863  		return nil, err
  4864  	}
  4865  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  4866  }
  4867  
  4868  // Call invokes the (constant) contract method with params as input values and
  4869  // sets the output to result. The result type might be a single field for simple
  4870  // returns, a slice of interfaces for anonymous returns and a struct for named
  4871  // returns.
  4872  func (_RequestableI *RequestableIRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4873  	return _RequestableI.Contract.RequestableICaller.contract.Call(opts, result, method, params...)
  4874  }
  4875  
  4876  // Transfer initiates a plain transaction to move funds to the contract, calling
  4877  // its default method if one is available.
  4878  func (_RequestableI *RequestableIRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4879  	return _RequestableI.Contract.RequestableITransactor.contract.Transfer(opts)
  4880  }
  4881  
  4882  // Transact invokes the (paid) contract method with params as input values.
  4883  func (_RequestableI *RequestableIRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4884  	return _RequestableI.Contract.RequestableITransactor.contract.Transact(opts, method, params...)
  4885  }
  4886  
  4887  // Call invokes the (constant) contract method with params as input values and
  4888  // sets the output to result. The result type might be a single field for simple
  4889  // returns, a slice of interfaces for anonymous returns and a struct for named
  4890  // returns.
  4891  func (_RequestableI *RequestableICallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4892  	return _RequestableI.Contract.contract.Call(opts, result, method, params...)
  4893  }
  4894  
  4895  // Transfer initiates a plain transaction to move funds to the contract, calling
  4896  // its default method if one is available.
  4897  func (_RequestableI *RequestableITransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4898  	return _RequestableI.Contract.contract.Transfer(opts)
  4899  }
  4900  
  4901  // Transact invokes the (paid) contract method with params as input values.
  4902  func (_RequestableI *RequestableITransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4903  	return _RequestableI.Contract.contract.Transact(opts, method, params...)
  4904  }
  4905  
  4906  // ApplyRequestInChildChain is a paid mutator transaction binding the contract method 0x141ecf46.
  4907  //
  4908  // Solidity: function applyRequestInChildChain(bool isExit, uint256 requestId, address requestor, bytes32 trieKey, bytes trieValue) returns(bool success)
  4909  func (_RequestableI *RequestableITransactor) ApplyRequestInChildChain(opts *bind.TransactOpts, isExit bool, requestId *big.Int, requestor common.Address, trieKey [32]byte, trieValue []byte) (*types.Transaction, error) {
  4910  	return _RequestableI.contract.Transact(opts, "applyRequestInChildChain", isExit, requestId, requestor, trieKey, trieValue)
  4911  }
  4912  
  4913  // ApplyRequestInChildChain is a paid mutator transaction binding the contract method 0x141ecf46.
  4914  //
  4915  // Solidity: function applyRequestInChildChain(bool isExit, uint256 requestId, address requestor, bytes32 trieKey, bytes trieValue) returns(bool success)
  4916  func (_RequestableI *RequestableISession) ApplyRequestInChildChain(isExit bool, requestId *big.Int, requestor common.Address, trieKey [32]byte, trieValue []byte) (*types.Transaction, error) {
  4917  	return _RequestableI.Contract.ApplyRequestInChildChain(&_RequestableI.TransactOpts, isExit, requestId, requestor, trieKey, trieValue)
  4918  }
  4919  
  4920  // ApplyRequestInChildChain is a paid mutator transaction binding the contract method 0x141ecf46.
  4921  //
  4922  // Solidity: function applyRequestInChildChain(bool isExit, uint256 requestId, address requestor, bytes32 trieKey, bytes trieValue) returns(bool success)
  4923  func (_RequestableI *RequestableITransactorSession) ApplyRequestInChildChain(isExit bool, requestId *big.Int, requestor common.Address, trieKey [32]byte, trieValue []byte) (*types.Transaction, error) {
  4924  	return _RequestableI.Contract.ApplyRequestInChildChain(&_RequestableI.TransactOpts, isExit, requestId, requestor, trieKey, trieValue)
  4925  }
  4926  
  4927  // ApplyRequestInRootChain is a paid mutator transaction binding the contract method 0xa9f79308.
  4928  //
  4929  // Solidity: function applyRequestInRootChain(bool isExit, uint256 requestId, address requestor, bytes32 trieKey, bytes trieValue) returns(bool success)
  4930  func (_RequestableI *RequestableITransactor) ApplyRequestInRootChain(opts *bind.TransactOpts, isExit bool, requestId *big.Int, requestor common.Address, trieKey [32]byte, trieValue []byte) (*types.Transaction, error) {
  4931  	return _RequestableI.contract.Transact(opts, "applyRequestInRootChain", isExit, requestId, requestor, trieKey, trieValue)
  4932  }
  4933  
  4934  // ApplyRequestInRootChain is a paid mutator transaction binding the contract method 0xa9f79308.
  4935  //
  4936  // Solidity: function applyRequestInRootChain(bool isExit, uint256 requestId, address requestor, bytes32 trieKey, bytes trieValue) returns(bool success)
  4937  func (_RequestableI *RequestableISession) ApplyRequestInRootChain(isExit bool, requestId *big.Int, requestor common.Address, trieKey [32]byte, trieValue []byte) (*types.Transaction, error) {
  4938  	return _RequestableI.Contract.ApplyRequestInRootChain(&_RequestableI.TransactOpts, isExit, requestId, requestor, trieKey, trieValue)
  4939  }
  4940  
  4941  // ApplyRequestInRootChain is a paid mutator transaction binding the contract method 0xa9f79308.
  4942  //
  4943  // Solidity: function applyRequestInRootChain(bool isExit, uint256 requestId, address requestor, bytes32 trieKey, bytes trieValue) returns(bool success)
  4944  func (_RequestableI *RequestableITransactorSession) ApplyRequestInRootChain(isExit bool, requestId *big.Int, requestor common.Address, trieKey [32]byte, trieValue []byte) (*types.Transaction, error) {
  4945  	return _RequestableI.Contract.ApplyRequestInRootChain(&_RequestableI.TransactOpts, isExit, requestId, requestor, trieKey, trieValue)
  4946  }
  4947  
  4948  // RootChainEventABI is the input ABI used to generate the binding from.
  4949  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\"}]"
  4950  
  4951  // RootChainEventBin is the compiled bytecode used for deploying new contracts.
  4952  var RootChainEventBin = "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158209eca3e6c0985f0e87007d8dee1de52ecce4b4b712a00ee740621f2a988b3d29764736f6c634300050c0032"
  4953  
  4954  // DeployRootChainEvent deploys a new Ethereum contract, binding an instance of RootChainEvent to it.
  4955  func DeployRootChainEvent(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *RootChainEvent, error) {
  4956  	parsed, err := abi.JSON(strings.NewReader(RootChainEventABI))
  4957  	if err != nil {
  4958  		return common.Address{}, nil, nil, err
  4959  	}
  4960  
  4961  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RootChainEventBin), backend)
  4962  	if err != nil {
  4963  		return common.Address{}, nil, nil, err
  4964  	}
  4965  	return address, tx, &RootChainEvent{RootChainEventCaller: RootChainEventCaller{contract: contract}, RootChainEventTransactor: RootChainEventTransactor{contract: contract}, RootChainEventFilterer: RootChainEventFilterer{contract: contract}}, nil
  4966  }
  4967  
  4968  // RootChainEvent is an auto generated Go binding around an Ethereum contract.
  4969  type RootChainEvent struct {
  4970  	RootChainEventCaller     // Read-only binding to the contract
  4971  	RootChainEventTransactor // Write-only binding to the contract
  4972  	RootChainEventFilterer   // Log filterer for contract events
  4973  }
  4974  
  4975  // RootChainEventCaller is an auto generated read-only Go binding around an Ethereum contract.
  4976  type RootChainEventCaller struct {
  4977  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4978  }
  4979  
  4980  // RootChainEventTransactor is an auto generated write-only Go binding around an Ethereum contract.
  4981  type RootChainEventTransactor struct {
  4982  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4983  }
  4984  
  4985  // RootChainEventFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  4986  type RootChainEventFilterer struct {
  4987  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4988  }
  4989  
  4990  // RootChainEventSession is an auto generated Go binding around an Ethereum contract,
  4991  // with pre-set call and transact options.
  4992  type RootChainEventSession struct {
  4993  	Contract     *RootChainEvent   // Generic contract binding to set the session for
  4994  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  4995  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  4996  }
  4997  
  4998  // RootChainEventCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  4999  // with pre-set call options.
  5000  type RootChainEventCallerSession struct {
  5001  	Contract *RootChainEventCaller // Generic contract caller binding to set the session for
  5002  	CallOpts bind.CallOpts         // Call options to use throughout this session
  5003  }
  5004  
  5005  // RootChainEventTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  5006  // with pre-set transact options.
  5007  type RootChainEventTransactorSession struct {
  5008  	Contract     *RootChainEventTransactor // Generic contract transactor binding to set the session for
  5009  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  5010  }
  5011  
  5012  // RootChainEventRaw is an auto generated low-level Go binding around an Ethereum contract.
  5013  type RootChainEventRaw struct {
  5014  	Contract *RootChainEvent // Generic contract binding to access the raw methods on
  5015  }
  5016  
  5017  // RootChainEventCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  5018  type RootChainEventCallerRaw struct {
  5019  	Contract *RootChainEventCaller // Generic read-only contract binding to access the raw methods on
  5020  }
  5021  
  5022  // RootChainEventTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  5023  type RootChainEventTransactorRaw struct {
  5024  	Contract *RootChainEventTransactor // Generic write-only contract binding to access the raw methods on
  5025  }
  5026  
  5027  // NewRootChainEvent creates a new instance of RootChainEvent, bound to a specific deployed contract.
  5028  func NewRootChainEvent(address common.Address, backend bind.ContractBackend) (*RootChainEvent, error) {
  5029  	contract, err := bindRootChainEvent(address, backend, backend, backend)
  5030  	if err != nil {
  5031  		return nil, err
  5032  	}
  5033  	return &RootChainEvent{RootChainEventCaller: RootChainEventCaller{contract: contract}, RootChainEventTransactor: RootChainEventTransactor{contract: contract}, RootChainEventFilterer: RootChainEventFilterer{contract: contract}}, nil
  5034  }
  5035  
  5036  // NewRootChainEventCaller creates a new read-only instance of RootChainEvent, bound to a specific deployed contract.
  5037  func NewRootChainEventCaller(address common.Address, caller bind.ContractCaller) (*RootChainEventCaller, error) {
  5038  	contract, err := bindRootChainEvent(address, caller, nil, nil)
  5039  	if err != nil {
  5040  		return nil, err
  5041  	}
  5042  	return &RootChainEventCaller{contract: contract}, nil
  5043  }
  5044  
  5045  // NewRootChainEventTransactor creates a new write-only instance of RootChainEvent, bound to a specific deployed contract.
  5046  func NewRootChainEventTransactor(address common.Address, transactor bind.ContractTransactor) (*RootChainEventTransactor, error) {
  5047  	contract, err := bindRootChainEvent(address, nil, transactor, nil)
  5048  	if err != nil {
  5049  		return nil, err
  5050  	}
  5051  	return &RootChainEventTransactor{contract: contract}, nil
  5052  }
  5053  
  5054  // NewRootChainEventFilterer creates a new log filterer instance of RootChainEvent, bound to a specific deployed contract.
  5055  func NewRootChainEventFilterer(address common.Address, filterer bind.ContractFilterer) (*RootChainEventFilterer, error) {
  5056  	contract, err := bindRootChainEvent(address, nil, nil, filterer)
  5057  	if err != nil {
  5058  		return nil, err
  5059  	}
  5060  	return &RootChainEventFilterer{contract: contract}, nil
  5061  }
  5062  
  5063  // bindRootChainEvent binds a generic wrapper to an already deployed contract.
  5064  func bindRootChainEvent(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5065  	parsed, err := abi.JSON(strings.NewReader(RootChainEventABI))
  5066  	if err != nil {
  5067  		return nil, err
  5068  	}
  5069  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  5070  }
  5071  
  5072  // Call invokes the (constant) contract method with params as input values and
  5073  // sets the output to result. The result type might be a single field for simple
  5074  // returns, a slice of interfaces for anonymous returns and a struct for named
  5075  // returns.
  5076  func (_RootChainEvent *RootChainEventRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5077  	return _RootChainEvent.Contract.RootChainEventCaller.contract.Call(opts, result, method, params...)
  5078  }
  5079  
  5080  // Transfer initiates a plain transaction to move funds to the contract, calling
  5081  // its default method if one is available.
  5082  func (_RootChainEvent *RootChainEventRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5083  	return _RootChainEvent.Contract.RootChainEventTransactor.contract.Transfer(opts)
  5084  }
  5085  
  5086  // Transact invokes the (paid) contract method with params as input values.
  5087  func (_RootChainEvent *RootChainEventRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5088  	return _RootChainEvent.Contract.RootChainEventTransactor.contract.Transact(opts, method, params...)
  5089  }
  5090  
  5091  // Call invokes the (constant) contract method with params as input values and
  5092  // sets the output to result. The result type might be a single field for simple
  5093  // returns, a slice of interfaces for anonymous returns and a struct for named
  5094  // returns.
  5095  func (_RootChainEvent *RootChainEventCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5096  	return _RootChainEvent.Contract.contract.Call(opts, result, method, params...)
  5097  }
  5098  
  5099  // Transfer initiates a plain transaction to move funds to the contract, calling
  5100  // its default method if one is available.
  5101  func (_RootChainEvent *RootChainEventTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5102  	return _RootChainEvent.Contract.contract.Transfer(opts)
  5103  }
  5104  
  5105  // Transact invokes the (paid) contract method with params as input values.
  5106  func (_RootChainEvent *RootChainEventTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5107  	return _RootChainEvent.Contract.contract.Transact(opts, method, params...)
  5108  }
  5109  
  5110  // 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.
  5111  type RootChainEventBlockFinalizedIterator struct {
  5112  	Event *RootChainEventBlockFinalized // Event containing the contract specifics and raw log
  5113  
  5114  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5115  	event    string              // Event name to use for unpacking event data
  5116  
  5117  	logs chan types.Log        // Log channel receiving the found contract events
  5118  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5119  	done bool                  // Whether the subscription completed delivering logs
  5120  	fail error                 // Occurred error to stop iteration
  5121  }
  5122  
  5123  // Next advances the iterator to the subsequent event, returning whether there
  5124  // are any more events found. In case of a retrieval or parsing error, false is
  5125  // returned and Error() can be queried for the exact failure.
  5126  func (it *RootChainEventBlockFinalizedIterator) Next() bool {
  5127  	// If the iterator failed, stop iterating
  5128  	if it.fail != nil {
  5129  		return false
  5130  	}
  5131  	// If the iterator completed, deliver directly whatever's available
  5132  	if it.done {
  5133  		select {
  5134  		case log := <-it.logs:
  5135  			it.Event = new(RootChainEventBlockFinalized)
  5136  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5137  				it.fail = err
  5138  				return false
  5139  			}
  5140  			it.Event.Raw = log
  5141  			return true
  5142  
  5143  		default:
  5144  			return false
  5145  		}
  5146  	}
  5147  	// Iterator still in progress, wait for either a data or an error event
  5148  	select {
  5149  	case log := <-it.logs:
  5150  		it.Event = new(RootChainEventBlockFinalized)
  5151  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5152  			it.fail = err
  5153  			return false
  5154  		}
  5155  		it.Event.Raw = log
  5156  		return true
  5157  
  5158  	case err := <-it.sub.Err():
  5159  		it.done = true
  5160  		it.fail = err
  5161  		return it.Next()
  5162  	}
  5163  }
  5164  
  5165  // Error returns any retrieval or parsing error occurred during filtering.
  5166  func (it *RootChainEventBlockFinalizedIterator) Error() error {
  5167  	return it.fail
  5168  }
  5169  
  5170  // Close terminates the iteration process, releasing any pending underlying
  5171  // resources.
  5172  func (it *RootChainEventBlockFinalizedIterator) Close() error {
  5173  	it.sub.Unsubscribe()
  5174  	return nil
  5175  }
  5176  
  5177  // RootChainEventBlockFinalized represents a BlockFinalized event raised by the RootChainEvent contract.
  5178  type RootChainEventBlockFinalized struct {
  5179  	ForkNumber  *big.Int
  5180  	BlockNumber *big.Int
  5181  	Raw         types.Log // Blockchain specific contextual infos
  5182  }
  5183  
  5184  // FilterBlockFinalized is a free log retrieval operation binding the contract event 0xfb96205e4b3633fd57aa805b26b51ecf528714a10241a4af015929dce86768d9.
  5185  //
  5186  // Solidity: event BlockFinalized(uint256 forkNumber, uint256 blockNumber)
  5187  func (_RootChainEvent *RootChainEventFilterer) FilterBlockFinalized(opts *bind.FilterOpts) (*RootChainEventBlockFinalizedIterator, error) {
  5188  
  5189  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "BlockFinalized")
  5190  	if err != nil {
  5191  		return nil, err
  5192  	}
  5193  	return &RootChainEventBlockFinalizedIterator{contract: _RootChainEvent.contract, event: "BlockFinalized", logs: logs, sub: sub}, nil
  5194  }
  5195  
  5196  // WatchBlockFinalized is a free log subscription operation binding the contract event 0xfb96205e4b3633fd57aa805b26b51ecf528714a10241a4af015929dce86768d9.
  5197  //
  5198  // Solidity: event BlockFinalized(uint256 forkNumber, uint256 blockNumber)
  5199  func (_RootChainEvent *RootChainEventFilterer) WatchBlockFinalized(opts *bind.WatchOpts, sink chan<- *RootChainEventBlockFinalized) (event.Subscription, error) {
  5200  
  5201  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "BlockFinalized")
  5202  	if err != nil {
  5203  		return nil, err
  5204  	}
  5205  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5206  		defer sub.Unsubscribe()
  5207  		for {
  5208  			select {
  5209  			case log := <-logs:
  5210  				// New log arrived, parse the event and forward to the user
  5211  				event := new(RootChainEventBlockFinalized)
  5212  				if err := _RootChainEvent.contract.UnpackLog(event, "BlockFinalized", log); err != nil {
  5213  					return err
  5214  				}
  5215  				event.Raw = log
  5216  
  5217  				select {
  5218  				case sink <- event:
  5219  				case err := <-sub.Err():
  5220  					return err
  5221  				case <-quit:
  5222  					return nil
  5223  				}
  5224  			case err := <-sub.Err():
  5225  				return err
  5226  			case <-quit:
  5227  				return nil
  5228  			}
  5229  		}
  5230  	}), nil
  5231  }
  5232  
  5233  // ParseBlockFinalized is a log parse operation binding the contract event 0xfb96205e4b3633fd57aa805b26b51ecf528714a10241a4af015929dce86768d9.
  5234  //
  5235  // Solidity: event BlockFinalized(uint256 forkNumber, uint256 blockNumber)
  5236  func (_RootChainEvent *RootChainEventFilterer) ParseBlockFinalized(log types.Log) (*RootChainEventBlockFinalized, error) {
  5237  	event := new(RootChainEventBlockFinalized)
  5238  	if err := _RootChainEvent.contract.UnpackLog(event, "BlockFinalized", log); err != nil {
  5239  		return nil, err
  5240  	}
  5241  	return event, nil
  5242  }
  5243  
  5244  // 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.
  5245  type RootChainEventBlockSubmittedIterator struct {
  5246  	Event *RootChainEventBlockSubmitted // Event containing the contract specifics and raw log
  5247  
  5248  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5249  	event    string              // Event name to use for unpacking event data
  5250  
  5251  	logs chan types.Log        // Log channel receiving the found contract events
  5252  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5253  	done bool                  // Whether the subscription completed delivering logs
  5254  	fail error                 // Occurred error to stop iteration
  5255  }
  5256  
  5257  // Next advances the iterator to the subsequent event, returning whether there
  5258  // are any more events found. In case of a retrieval or parsing error, false is
  5259  // returned and Error() can be queried for the exact failure.
  5260  func (it *RootChainEventBlockSubmittedIterator) Next() bool {
  5261  	// If the iterator failed, stop iterating
  5262  	if it.fail != nil {
  5263  		return false
  5264  	}
  5265  	// If the iterator completed, deliver directly whatever's available
  5266  	if it.done {
  5267  		select {
  5268  		case log := <-it.logs:
  5269  			it.Event = new(RootChainEventBlockSubmitted)
  5270  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5271  				it.fail = err
  5272  				return false
  5273  			}
  5274  			it.Event.Raw = log
  5275  			return true
  5276  
  5277  		default:
  5278  			return false
  5279  		}
  5280  	}
  5281  	// Iterator still in progress, wait for either a data or an error event
  5282  	select {
  5283  	case log := <-it.logs:
  5284  		it.Event = new(RootChainEventBlockSubmitted)
  5285  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5286  			it.fail = err
  5287  			return false
  5288  		}
  5289  		it.Event.Raw = log
  5290  		return true
  5291  
  5292  	case err := <-it.sub.Err():
  5293  		it.done = true
  5294  		it.fail = err
  5295  		return it.Next()
  5296  	}
  5297  }
  5298  
  5299  // Error returns any retrieval or parsing error occurred during filtering.
  5300  func (it *RootChainEventBlockSubmittedIterator) Error() error {
  5301  	return it.fail
  5302  }
  5303  
  5304  // Close terminates the iteration process, releasing any pending underlying
  5305  // resources.
  5306  func (it *RootChainEventBlockSubmittedIterator) Close() error {
  5307  	it.sub.Unsubscribe()
  5308  	return nil
  5309  }
  5310  
  5311  // RootChainEventBlockSubmitted represents a BlockSubmitted event raised by the RootChainEvent contract.
  5312  type RootChainEventBlockSubmitted struct {
  5313  	Fork          *big.Int
  5314  	EpochNumber   *big.Int
  5315  	BlockNumber   *big.Int
  5316  	IsRequest     bool
  5317  	UserActivated bool
  5318  	Raw           types.Log // Blockchain specific contextual infos
  5319  }
  5320  
  5321  // FilterBlockSubmitted is a free log retrieval operation binding the contract event 0x3d4a04291c66b06f39a4ecb817875b12b5485a05ec563133a56a905305c48e55.
  5322  //
  5323  // Solidity: event BlockSubmitted(uint256 fork, uint256 epochNumber, uint256 blockNumber, bool isRequest, bool userActivated)
  5324  func (_RootChainEvent *RootChainEventFilterer) FilterBlockSubmitted(opts *bind.FilterOpts) (*RootChainEventBlockSubmittedIterator, error) {
  5325  
  5326  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "BlockSubmitted")
  5327  	if err != nil {
  5328  		return nil, err
  5329  	}
  5330  	return &RootChainEventBlockSubmittedIterator{contract: _RootChainEvent.contract, event: "BlockSubmitted", logs: logs, sub: sub}, nil
  5331  }
  5332  
  5333  // WatchBlockSubmitted is a free log subscription operation binding the contract event 0x3d4a04291c66b06f39a4ecb817875b12b5485a05ec563133a56a905305c48e55.
  5334  //
  5335  // Solidity: event BlockSubmitted(uint256 fork, uint256 epochNumber, uint256 blockNumber, bool isRequest, bool userActivated)
  5336  func (_RootChainEvent *RootChainEventFilterer) WatchBlockSubmitted(opts *bind.WatchOpts, sink chan<- *RootChainEventBlockSubmitted) (event.Subscription, error) {
  5337  
  5338  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "BlockSubmitted")
  5339  	if err != nil {
  5340  		return nil, err
  5341  	}
  5342  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5343  		defer sub.Unsubscribe()
  5344  		for {
  5345  			select {
  5346  			case log := <-logs:
  5347  				// New log arrived, parse the event and forward to the user
  5348  				event := new(RootChainEventBlockSubmitted)
  5349  				if err := _RootChainEvent.contract.UnpackLog(event, "BlockSubmitted", log); err != nil {
  5350  					return err
  5351  				}
  5352  				event.Raw = log
  5353  
  5354  				select {
  5355  				case sink <- event:
  5356  				case err := <-sub.Err():
  5357  					return err
  5358  				case <-quit:
  5359  					return nil
  5360  				}
  5361  			case err := <-sub.Err():
  5362  				return err
  5363  			case <-quit:
  5364  				return nil
  5365  			}
  5366  		}
  5367  	}), nil
  5368  }
  5369  
  5370  // ParseBlockSubmitted is a log parse operation binding the contract event 0x3d4a04291c66b06f39a4ecb817875b12b5485a05ec563133a56a905305c48e55.
  5371  //
  5372  // Solidity: event BlockSubmitted(uint256 fork, uint256 epochNumber, uint256 blockNumber, bool isRequest, bool userActivated)
  5373  func (_RootChainEvent *RootChainEventFilterer) ParseBlockSubmitted(log types.Log) (*RootChainEventBlockSubmitted, error) {
  5374  	event := new(RootChainEventBlockSubmitted)
  5375  	if err := _RootChainEvent.contract.UnpackLog(event, "BlockSubmitted", log); err != nil {
  5376  		return nil, err
  5377  	}
  5378  	return event, nil
  5379  }
  5380  
  5381  // 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.
  5382  type RootChainEventERUCreatedIterator struct {
  5383  	Event *RootChainEventERUCreated // Event containing the contract specifics and raw log
  5384  
  5385  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5386  	event    string              // Event name to use for unpacking event data
  5387  
  5388  	logs chan types.Log        // Log channel receiving the found contract events
  5389  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5390  	done bool                  // Whether the subscription completed delivering logs
  5391  	fail error                 // Occurred error to stop iteration
  5392  }
  5393  
  5394  // Next advances the iterator to the subsequent event, returning whether there
  5395  // are any more events found. In case of a retrieval or parsing error, false is
  5396  // returned and Error() can be queried for the exact failure.
  5397  func (it *RootChainEventERUCreatedIterator) Next() bool {
  5398  	// If the iterator failed, stop iterating
  5399  	if it.fail != nil {
  5400  		return false
  5401  	}
  5402  	// If the iterator completed, deliver directly whatever's available
  5403  	if it.done {
  5404  		select {
  5405  		case log := <-it.logs:
  5406  			it.Event = new(RootChainEventERUCreated)
  5407  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5408  				it.fail = err
  5409  				return false
  5410  			}
  5411  			it.Event.Raw = log
  5412  			return true
  5413  
  5414  		default:
  5415  			return false
  5416  		}
  5417  	}
  5418  	// Iterator still in progress, wait for either a data or an error event
  5419  	select {
  5420  	case log := <-it.logs:
  5421  		it.Event = new(RootChainEventERUCreated)
  5422  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5423  			it.fail = err
  5424  			return false
  5425  		}
  5426  		it.Event.Raw = log
  5427  		return true
  5428  
  5429  	case err := <-it.sub.Err():
  5430  		it.done = true
  5431  		it.fail = err
  5432  		return it.Next()
  5433  	}
  5434  }
  5435  
  5436  // Error returns any retrieval or parsing error occurred during filtering.
  5437  func (it *RootChainEventERUCreatedIterator) Error() error {
  5438  	return it.fail
  5439  }
  5440  
  5441  // Close terminates the iteration process, releasing any pending underlying
  5442  // resources.
  5443  func (it *RootChainEventERUCreatedIterator) Close() error {
  5444  	it.sub.Unsubscribe()
  5445  	return nil
  5446  }
  5447  
  5448  // RootChainEventERUCreated represents a ERUCreated event raised by the RootChainEvent contract.
  5449  type RootChainEventERUCreated struct {
  5450  	RequestId *big.Int
  5451  	Requestor common.Address
  5452  	To        common.Address
  5453  	TrieKey   []byte
  5454  	TrieValue [32]byte
  5455  	Raw       types.Log // Blockchain specific contextual infos
  5456  }
  5457  
  5458  // FilterERUCreated is a free log retrieval operation binding the contract event 0xfcbdc2083dadd644b854d91b49aef8db06b8f5a3d5c1192de38ca0ba271d5a0d.
  5459  //
  5460  // Solidity: event ERUCreated(uint256 requestId, address requestor, address to, bytes trieKey, bytes32 trieValue)
  5461  func (_RootChainEvent *RootChainEventFilterer) FilterERUCreated(opts *bind.FilterOpts) (*RootChainEventERUCreatedIterator, error) {
  5462  
  5463  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "ERUCreated")
  5464  	if err != nil {
  5465  		return nil, err
  5466  	}
  5467  	return &RootChainEventERUCreatedIterator{contract: _RootChainEvent.contract, event: "ERUCreated", logs: logs, sub: sub}, nil
  5468  }
  5469  
  5470  // WatchERUCreated is a free log subscription operation binding the contract event 0xfcbdc2083dadd644b854d91b49aef8db06b8f5a3d5c1192de38ca0ba271d5a0d.
  5471  //
  5472  // Solidity: event ERUCreated(uint256 requestId, address requestor, address to, bytes trieKey, bytes32 trieValue)
  5473  func (_RootChainEvent *RootChainEventFilterer) WatchERUCreated(opts *bind.WatchOpts, sink chan<- *RootChainEventERUCreated) (event.Subscription, error) {
  5474  
  5475  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "ERUCreated")
  5476  	if err != nil {
  5477  		return nil, err
  5478  	}
  5479  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5480  		defer sub.Unsubscribe()
  5481  		for {
  5482  			select {
  5483  			case log := <-logs:
  5484  				// New log arrived, parse the event and forward to the user
  5485  				event := new(RootChainEventERUCreated)
  5486  				if err := _RootChainEvent.contract.UnpackLog(event, "ERUCreated", log); err != nil {
  5487  					return err
  5488  				}
  5489  				event.Raw = log
  5490  
  5491  				select {
  5492  				case sink <- event:
  5493  				case err := <-sub.Err():
  5494  					return err
  5495  				case <-quit:
  5496  					return nil
  5497  				}
  5498  			case err := <-sub.Err():
  5499  				return err
  5500  			case <-quit:
  5501  				return nil
  5502  			}
  5503  		}
  5504  	}), nil
  5505  }
  5506  
  5507  // ParseERUCreated is a log parse operation binding the contract event 0xfcbdc2083dadd644b854d91b49aef8db06b8f5a3d5c1192de38ca0ba271d5a0d.
  5508  //
  5509  // Solidity: event ERUCreated(uint256 requestId, address requestor, address to, bytes trieKey, bytes32 trieValue)
  5510  func (_RootChainEvent *RootChainEventFilterer) ParseERUCreated(log types.Log) (*RootChainEventERUCreated, error) {
  5511  	event := new(RootChainEventERUCreated)
  5512  	if err := _RootChainEvent.contract.UnpackLog(event, "ERUCreated", log); err != nil {
  5513  		return nil, err
  5514  	}
  5515  	return event, nil
  5516  }
  5517  
  5518  // 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.
  5519  type RootChainEventEpochFilledIterator struct {
  5520  	Event *RootChainEventEpochFilled // Event containing the contract specifics and raw log
  5521  
  5522  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5523  	event    string              // Event name to use for unpacking event data
  5524  
  5525  	logs chan types.Log        // Log channel receiving the found contract events
  5526  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5527  	done bool                  // Whether the subscription completed delivering logs
  5528  	fail error                 // Occurred error to stop iteration
  5529  }
  5530  
  5531  // Next advances the iterator to the subsequent event, returning whether there
  5532  // are any more events found. In case of a retrieval or parsing error, false is
  5533  // returned and Error() can be queried for the exact failure.
  5534  func (it *RootChainEventEpochFilledIterator) Next() bool {
  5535  	// If the iterator failed, stop iterating
  5536  	if it.fail != nil {
  5537  		return false
  5538  	}
  5539  	// If the iterator completed, deliver directly whatever's available
  5540  	if it.done {
  5541  		select {
  5542  		case log := <-it.logs:
  5543  			it.Event = new(RootChainEventEpochFilled)
  5544  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5545  				it.fail = err
  5546  				return false
  5547  			}
  5548  			it.Event.Raw = log
  5549  			return true
  5550  
  5551  		default:
  5552  			return false
  5553  		}
  5554  	}
  5555  	// Iterator still in progress, wait for either a data or an error event
  5556  	select {
  5557  	case log := <-it.logs:
  5558  		it.Event = new(RootChainEventEpochFilled)
  5559  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5560  			it.fail = err
  5561  			return false
  5562  		}
  5563  		it.Event.Raw = log
  5564  		return true
  5565  
  5566  	case err := <-it.sub.Err():
  5567  		it.done = true
  5568  		it.fail = err
  5569  		return it.Next()
  5570  	}
  5571  }
  5572  
  5573  // Error returns any retrieval or parsing error occurred during filtering.
  5574  func (it *RootChainEventEpochFilledIterator) Error() error {
  5575  	return it.fail
  5576  }
  5577  
  5578  // Close terminates the iteration process, releasing any pending underlying
  5579  // resources.
  5580  func (it *RootChainEventEpochFilledIterator) Close() error {
  5581  	it.sub.Unsubscribe()
  5582  	return nil
  5583  }
  5584  
  5585  // RootChainEventEpochFilled represents a EpochFilled event raised by the RootChainEvent contract.
  5586  type RootChainEventEpochFilled struct {
  5587  	ForkNumber  *big.Int
  5588  	EpochNumber *big.Int
  5589  	Raw         types.Log // Blockchain specific contextual infos
  5590  }
  5591  
  5592  // FilterEpochFilled is a free log retrieval operation binding the contract event 0x2fdeb407bf5c2b621f04b5c784822dae806c45b49a68aba413cc270128c96816.
  5593  //
  5594  // Solidity: event EpochFilled(uint256 forkNumber, uint256 epochNumber)
  5595  func (_RootChainEvent *RootChainEventFilterer) FilterEpochFilled(opts *bind.FilterOpts) (*RootChainEventEpochFilledIterator, error) {
  5596  
  5597  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "EpochFilled")
  5598  	if err != nil {
  5599  		return nil, err
  5600  	}
  5601  	return &RootChainEventEpochFilledIterator{contract: _RootChainEvent.contract, event: "EpochFilled", logs: logs, sub: sub}, nil
  5602  }
  5603  
  5604  // WatchEpochFilled is a free log subscription operation binding the contract event 0x2fdeb407bf5c2b621f04b5c784822dae806c45b49a68aba413cc270128c96816.
  5605  //
  5606  // Solidity: event EpochFilled(uint256 forkNumber, uint256 epochNumber)
  5607  func (_RootChainEvent *RootChainEventFilterer) WatchEpochFilled(opts *bind.WatchOpts, sink chan<- *RootChainEventEpochFilled) (event.Subscription, error) {
  5608  
  5609  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "EpochFilled")
  5610  	if err != nil {
  5611  		return nil, err
  5612  	}
  5613  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5614  		defer sub.Unsubscribe()
  5615  		for {
  5616  			select {
  5617  			case log := <-logs:
  5618  				// New log arrived, parse the event and forward to the user
  5619  				event := new(RootChainEventEpochFilled)
  5620  				if err := _RootChainEvent.contract.UnpackLog(event, "EpochFilled", log); err != nil {
  5621  					return err
  5622  				}
  5623  				event.Raw = log
  5624  
  5625  				select {
  5626  				case sink <- event:
  5627  				case err := <-sub.Err():
  5628  					return err
  5629  				case <-quit:
  5630  					return nil
  5631  				}
  5632  			case err := <-sub.Err():
  5633  				return err
  5634  			case <-quit:
  5635  				return nil
  5636  			}
  5637  		}
  5638  	}), nil
  5639  }
  5640  
  5641  // ParseEpochFilled is a log parse operation binding the contract event 0x2fdeb407bf5c2b621f04b5c784822dae806c45b49a68aba413cc270128c96816.
  5642  //
  5643  // Solidity: event EpochFilled(uint256 forkNumber, uint256 epochNumber)
  5644  func (_RootChainEvent *RootChainEventFilterer) ParseEpochFilled(log types.Log) (*RootChainEventEpochFilled, error) {
  5645  	event := new(RootChainEventEpochFilled)
  5646  	if err := _RootChainEvent.contract.UnpackLog(event, "EpochFilled", log); err != nil {
  5647  		return nil, err
  5648  	}
  5649  	return event, nil
  5650  }
  5651  
  5652  // 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.
  5653  type RootChainEventEpochFillingIterator struct {
  5654  	Event *RootChainEventEpochFilling // Event containing the contract specifics and raw log
  5655  
  5656  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5657  	event    string              // Event name to use for unpacking event data
  5658  
  5659  	logs chan types.Log        // Log channel receiving the found contract events
  5660  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5661  	done bool                  // Whether the subscription completed delivering logs
  5662  	fail error                 // Occurred error to stop iteration
  5663  }
  5664  
  5665  // Next advances the iterator to the subsequent event, returning whether there
  5666  // are any more events found. In case of a retrieval or parsing error, false is
  5667  // returned and Error() can be queried for the exact failure.
  5668  func (it *RootChainEventEpochFillingIterator) Next() bool {
  5669  	// If the iterator failed, stop iterating
  5670  	if it.fail != nil {
  5671  		return false
  5672  	}
  5673  	// If the iterator completed, deliver directly whatever's available
  5674  	if it.done {
  5675  		select {
  5676  		case log := <-it.logs:
  5677  			it.Event = new(RootChainEventEpochFilling)
  5678  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5679  				it.fail = err
  5680  				return false
  5681  			}
  5682  			it.Event.Raw = log
  5683  			return true
  5684  
  5685  		default:
  5686  			return false
  5687  		}
  5688  	}
  5689  	// Iterator still in progress, wait for either a data or an error event
  5690  	select {
  5691  	case log := <-it.logs:
  5692  		it.Event = new(RootChainEventEpochFilling)
  5693  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5694  			it.fail = err
  5695  			return false
  5696  		}
  5697  		it.Event.Raw = log
  5698  		return true
  5699  
  5700  	case err := <-it.sub.Err():
  5701  		it.done = true
  5702  		it.fail = err
  5703  		return it.Next()
  5704  	}
  5705  }
  5706  
  5707  // Error returns any retrieval or parsing error occurred during filtering.
  5708  func (it *RootChainEventEpochFillingIterator) Error() error {
  5709  	return it.fail
  5710  }
  5711  
  5712  // Close terminates the iteration process, releasing any pending underlying
  5713  // resources.
  5714  func (it *RootChainEventEpochFillingIterator) Close() error {
  5715  	it.sub.Unsubscribe()
  5716  	return nil
  5717  }
  5718  
  5719  // RootChainEventEpochFilling represents a EpochFilling event raised by the RootChainEvent contract.
  5720  type RootChainEventEpochFilling struct {
  5721  	ForkNumber  *big.Int
  5722  	EpochNumber *big.Int
  5723  	Raw         types.Log // Blockchain specific contextual infos
  5724  }
  5725  
  5726  // FilterEpochFilling is a free log retrieval operation binding the contract event 0x27b09f0953d27bbff306fe25b2987ac5a813248ac30cb2bbd5daf95e7b0e6dc0.
  5727  //
  5728  // Solidity: event EpochFilling(uint256 forkNumber, uint256 epochNumber)
  5729  func (_RootChainEvent *RootChainEventFilterer) FilterEpochFilling(opts *bind.FilterOpts) (*RootChainEventEpochFillingIterator, error) {
  5730  
  5731  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "EpochFilling")
  5732  	if err != nil {
  5733  		return nil, err
  5734  	}
  5735  	return &RootChainEventEpochFillingIterator{contract: _RootChainEvent.contract, event: "EpochFilling", logs: logs, sub: sub}, nil
  5736  }
  5737  
  5738  // WatchEpochFilling is a free log subscription operation binding the contract event 0x27b09f0953d27bbff306fe25b2987ac5a813248ac30cb2bbd5daf95e7b0e6dc0.
  5739  //
  5740  // Solidity: event EpochFilling(uint256 forkNumber, uint256 epochNumber)
  5741  func (_RootChainEvent *RootChainEventFilterer) WatchEpochFilling(opts *bind.WatchOpts, sink chan<- *RootChainEventEpochFilling) (event.Subscription, error) {
  5742  
  5743  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "EpochFilling")
  5744  	if err != nil {
  5745  		return nil, err
  5746  	}
  5747  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5748  		defer sub.Unsubscribe()
  5749  		for {
  5750  			select {
  5751  			case log := <-logs:
  5752  				// New log arrived, parse the event and forward to the user
  5753  				event := new(RootChainEventEpochFilling)
  5754  				if err := _RootChainEvent.contract.UnpackLog(event, "EpochFilling", log); err != nil {
  5755  					return err
  5756  				}
  5757  				event.Raw = log
  5758  
  5759  				select {
  5760  				case sink <- event:
  5761  				case err := <-sub.Err():
  5762  					return err
  5763  				case <-quit:
  5764  					return nil
  5765  				}
  5766  			case err := <-sub.Err():
  5767  				return err
  5768  			case <-quit:
  5769  				return nil
  5770  			}
  5771  		}
  5772  	}), nil
  5773  }
  5774  
  5775  // ParseEpochFilling is a log parse operation binding the contract event 0x27b09f0953d27bbff306fe25b2987ac5a813248ac30cb2bbd5daf95e7b0e6dc0.
  5776  //
  5777  // Solidity: event EpochFilling(uint256 forkNumber, uint256 epochNumber)
  5778  func (_RootChainEvent *RootChainEventFilterer) ParseEpochFilling(log types.Log) (*RootChainEventEpochFilling, error) {
  5779  	event := new(RootChainEventEpochFilling)
  5780  	if err := _RootChainEvent.contract.UnpackLog(event, "EpochFilling", log); err != nil {
  5781  		return nil, err
  5782  	}
  5783  	return event, nil
  5784  }
  5785  
  5786  // 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.
  5787  type RootChainEventEpochFinalizedIterator struct {
  5788  	Event *RootChainEventEpochFinalized // Event containing the contract specifics and raw log
  5789  
  5790  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5791  	event    string              // Event name to use for unpacking event data
  5792  
  5793  	logs chan types.Log        // Log channel receiving the found contract events
  5794  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5795  	done bool                  // Whether the subscription completed delivering logs
  5796  	fail error                 // Occurred error to stop iteration
  5797  }
  5798  
  5799  // Next advances the iterator to the subsequent event, returning whether there
  5800  // are any more events found. In case of a retrieval or parsing error, false is
  5801  // returned and Error() can be queried for the exact failure.
  5802  func (it *RootChainEventEpochFinalizedIterator) Next() bool {
  5803  	// If the iterator failed, stop iterating
  5804  	if it.fail != nil {
  5805  		return false
  5806  	}
  5807  	// If the iterator completed, deliver directly whatever's available
  5808  	if it.done {
  5809  		select {
  5810  		case log := <-it.logs:
  5811  			it.Event = new(RootChainEventEpochFinalized)
  5812  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5813  				it.fail = err
  5814  				return false
  5815  			}
  5816  			it.Event.Raw = log
  5817  			return true
  5818  
  5819  		default:
  5820  			return false
  5821  		}
  5822  	}
  5823  	// Iterator still in progress, wait for either a data or an error event
  5824  	select {
  5825  	case log := <-it.logs:
  5826  		it.Event = new(RootChainEventEpochFinalized)
  5827  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5828  			it.fail = err
  5829  			return false
  5830  		}
  5831  		it.Event.Raw = log
  5832  		return true
  5833  
  5834  	case err := <-it.sub.Err():
  5835  		it.done = true
  5836  		it.fail = err
  5837  		return it.Next()
  5838  	}
  5839  }
  5840  
  5841  // Error returns any retrieval or parsing error occurred during filtering.
  5842  func (it *RootChainEventEpochFinalizedIterator) Error() error {
  5843  	return it.fail
  5844  }
  5845  
  5846  // Close terminates the iteration process, releasing any pending underlying
  5847  // resources.
  5848  func (it *RootChainEventEpochFinalizedIterator) Close() error {
  5849  	it.sub.Unsubscribe()
  5850  	return nil
  5851  }
  5852  
  5853  // RootChainEventEpochFinalized represents a EpochFinalized event raised by the RootChainEvent contract.
  5854  type RootChainEventEpochFinalized struct {
  5855  	ForkNumber       *big.Int
  5856  	EpochNumber      *big.Int
  5857  	StartBlockNumber *big.Int
  5858  	EndBlockNumber   *big.Int
  5859  	Raw              types.Log // Blockchain specific contextual infos
  5860  }
  5861  
  5862  // FilterEpochFinalized is a free log retrieval operation binding the contract event 0x70801d4d63b3da6c19ba7349911f45bed5a99ccdfb51b8138c105872529bebd5.
  5863  //
  5864  // Solidity: event EpochFinalized(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber)
  5865  func (_RootChainEvent *RootChainEventFilterer) FilterEpochFinalized(opts *bind.FilterOpts) (*RootChainEventEpochFinalizedIterator, error) {
  5866  
  5867  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "EpochFinalized")
  5868  	if err != nil {
  5869  		return nil, err
  5870  	}
  5871  	return &RootChainEventEpochFinalizedIterator{contract: _RootChainEvent.contract, event: "EpochFinalized", logs: logs, sub: sub}, nil
  5872  }
  5873  
  5874  // WatchEpochFinalized is a free log subscription operation binding the contract event 0x70801d4d63b3da6c19ba7349911f45bed5a99ccdfb51b8138c105872529bebd5.
  5875  //
  5876  // Solidity: event EpochFinalized(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber)
  5877  func (_RootChainEvent *RootChainEventFilterer) WatchEpochFinalized(opts *bind.WatchOpts, sink chan<- *RootChainEventEpochFinalized) (event.Subscription, error) {
  5878  
  5879  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "EpochFinalized")
  5880  	if err != nil {
  5881  		return nil, err
  5882  	}
  5883  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5884  		defer sub.Unsubscribe()
  5885  		for {
  5886  			select {
  5887  			case log := <-logs:
  5888  				// New log arrived, parse the event and forward to the user
  5889  				event := new(RootChainEventEpochFinalized)
  5890  				if err := _RootChainEvent.contract.UnpackLog(event, "EpochFinalized", log); err != nil {
  5891  					return err
  5892  				}
  5893  				event.Raw = log
  5894  
  5895  				select {
  5896  				case sink <- event:
  5897  				case err := <-sub.Err():
  5898  					return err
  5899  				case <-quit:
  5900  					return nil
  5901  				}
  5902  			case err := <-sub.Err():
  5903  				return err
  5904  			case <-quit:
  5905  				return nil
  5906  			}
  5907  		}
  5908  	}), nil
  5909  }
  5910  
  5911  // ParseEpochFinalized is a log parse operation binding the contract event 0x70801d4d63b3da6c19ba7349911f45bed5a99ccdfb51b8138c105872529bebd5.
  5912  //
  5913  // Solidity: event EpochFinalized(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber)
  5914  func (_RootChainEvent *RootChainEventFilterer) ParseEpochFinalized(log types.Log) (*RootChainEventEpochFinalized, error) {
  5915  	event := new(RootChainEventEpochFinalized)
  5916  	if err := _RootChainEvent.contract.UnpackLog(event, "EpochFinalized", log); err != nil {
  5917  		return nil, err
  5918  	}
  5919  	return event, nil
  5920  }
  5921  
  5922  // 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.
  5923  type RootChainEventEpochPreparedIterator struct {
  5924  	Event *RootChainEventEpochPrepared // Event containing the contract specifics and raw log
  5925  
  5926  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5927  	event    string              // Event name to use for unpacking event data
  5928  
  5929  	logs chan types.Log        // Log channel receiving the found contract events
  5930  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5931  	done bool                  // Whether the subscription completed delivering logs
  5932  	fail error                 // Occurred error to stop iteration
  5933  }
  5934  
  5935  // Next advances the iterator to the subsequent event, returning whether there
  5936  // are any more events found. In case of a retrieval or parsing error, false is
  5937  // returned and Error() can be queried for the exact failure.
  5938  func (it *RootChainEventEpochPreparedIterator) Next() bool {
  5939  	// If the iterator failed, stop iterating
  5940  	if it.fail != nil {
  5941  		return false
  5942  	}
  5943  	// If the iterator completed, deliver directly whatever's available
  5944  	if it.done {
  5945  		select {
  5946  		case log := <-it.logs:
  5947  			it.Event = new(RootChainEventEpochPrepared)
  5948  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5949  				it.fail = err
  5950  				return false
  5951  			}
  5952  			it.Event.Raw = log
  5953  			return true
  5954  
  5955  		default:
  5956  			return false
  5957  		}
  5958  	}
  5959  	// Iterator still in progress, wait for either a data or an error event
  5960  	select {
  5961  	case log := <-it.logs:
  5962  		it.Event = new(RootChainEventEpochPrepared)
  5963  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5964  			it.fail = err
  5965  			return false
  5966  		}
  5967  		it.Event.Raw = log
  5968  		return true
  5969  
  5970  	case err := <-it.sub.Err():
  5971  		it.done = true
  5972  		it.fail = err
  5973  		return it.Next()
  5974  	}
  5975  }
  5976  
  5977  // Error returns any retrieval or parsing error occurred during filtering.
  5978  func (it *RootChainEventEpochPreparedIterator) Error() error {
  5979  	return it.fail
  5980  }
  5981  
  5982  // Close terminates the iteration process, releasing any pending underlying
  5983  // resources.
  5984  func (it *RootChainEventEpochPreparedIterator) Close() error {
  5985  	it.sub.Unsubscribe()
  5986  	return nil
  5987  }
  5988  
  5989  // RootChainEventEpochPrepared represents a EpochPrepared event raised by the RootChainEvent contract.
  5990  type RootChainEventEpochPrepared struct {
  5991  	ForkNumber       *big.Int
  5992  	EpochNumber      *big.Int
  5993  	StartBlockNumber *big.Int
  5994  	EndBlockNumber   *big.Int
  5995  	RequestStart     *big.Int
  5996  	RequestEnd       *big.Int
  5997  	EpochIsEmpty     bool
  5998  	IsRequest        bool
  5999  	UserActivated    bool
  6000  	Rebase           bool
  6001  	Raw              types.Log // Blockchain specific contextual infos
  6002  }
  6003  
  6004  // FilterEpochPrepared is a free log retrieval operation binding the contract event 0x1a69c0760aa329b76f72579129869013ebd3d41594db019c0e997b939fcb32e3.
  6005  //
  6006  // Solidity: event EpochPrepared(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated, bool rebase)
  6007  func (_RootChainEvent *RootChainEventFilterer) FilterEpochPrepared(opts *bind.FilterOpts) (*RootChainEventEpochPreparedIterator, error) {
  6008  
  6009  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "EpochPrepared")
  6010  	if err != nil {
  6011  		return nil, err
  6012  	}
  6013  	return &RootChainEventEpochPreparedIterator{contract: _RootChainEvent.contract, event: "EpochPrepared", logs: logs, sub: sub}, nil
  6014  }
  6015  
  6016  // WatchEpochPrepared is a free log subscription operation binding the contract event 0x1a69c0760aa329b76f72579129869013ebd3d41594db019c0e997b939fcb32e3.
  6017  //
  6018  // Solidity: event EpochPrepared(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated, bool rebase)
  6019  func (_RootChainEvent *RootChainEventFilterer) WatchEpochPrepared(opts *bind.WatchOpts, sink chan<- *RootChainEventEpochPrepared) (event.Subscription, error) {
  6020  
  6021  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "EpochPrepared")
  6022  	if err != nil {
  6023  		return nil, err
  6024  	}
  6025  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6026  		defer sub.Unsubscribe()
  6027  		for {
  6028  			select {
  6029  			case log := <-logs:
  6030  				// New log arrived, parse the event and forward to the user
  6031  				event := new(RootChainEventEpochPrepared)
  6032  				if err := _RootChainEvent.contract.UnpackLog(event, "EpochPrepared", log); err != nil {
  6033  					return err
  6034  				}
  6035  				event.Raw = log
  6036  
  6037  				select {
  6038  				case sink <- event:
  6039  				case err := <-sub.Err():
  6040  					return err
  6041  				case <-quit:
  6042  					return nil
  6043  				}
  6044  			case err := <-sub.Err():
  6045  				return err
  6046  			case <-quit:
  6047  				return nil
  6048  			}
  6049  		}
  6050  	}), nil
  6051  }
  6052  
  6053  // ParseEpochPrepared is a log parse operation binding the contract event 0x1a69c0760aa329b76f72579129869013ebd3d41594db019c0e997b939fcb32e3.
  6054  //
  6055  // Solidity: event EpochPrepared(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated, bool rebase)
  6056  func (_RootChainEvent *RootChainEventFilterer) ParseEpochPrepared(log types.Log) (*RootChainEventEpochPrepared, error) {
  6057  	event := new(RootChainEventEpochPrepared)
  6058  	if err := _RootChainEvent.contract.UnpackLog(event, "EpochPrepared", log); err != nil {
  6059  		return nil, err
  6060  	}
  6061  	return event, nil
  6062  }
  6063  
  6064  // 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.
  6065  type RootChainEventEpochRebasedIterator struct {
  6066  	Event *RootChainEventEpochRebased // Event containing the contract specifics and raw log
  6067  
  6068  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6069  	event    string              // Event name to use for unpacking event data
  6070  
  6071  	logs chan types.Log        // Log channel receiving the found contract events
  6072  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6073  	done bool                  // Whether the subscription completed delivering logs
  6074  	fail error                 // Occurred error to stop iteration
  6075  }
  6076  
  6077  // Next advances the iterator to the subsequent event, returning whether there
  6078  // are any more events found. In case of a retrieval or parsing error, false is
  6079  // returned and Error() can be queried for the exact failure.
  6080  func (it *RootChainEventEpochRebasedIterator) Next() bool {
  6081  	// If the iterator failed, stop iterating
  6082  	if it.fail != nil {
  6083  		return false
  6084  	}
  6085  	// If the iterator completed, deliver directly whatever's available
  6086  	if it.done {
  6087  		select {
  6088  		case log := <-it.logs:
  6089  			it.Event = new(RootChainEventEpochRebased)
  6090  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6091  				it.fail = err
  6092  				return false
  6093  			}
  6094  			it.Event.Raw = log
  6095  			return true
  6096  
  6097  		default:
  6098  			return false
  6099  		}
  6100  	}
  6101  	// Iterator still in progress, wait for either a data or an error event
  6102  	select {
  6103  	case log := <-it.logs:
  6104  		it.Event = new(RootChainEventEpochRebased)
  6105  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6106  			it.fail = err
  6107  			return false
  6108  		}
  6109  		it.Event.Raw = log
  6110  		return true
  6111  
  6112  	case err := <-it.sub.Err():
  6113  		it.done = true
  6114  		it.fail = err
  6115  		return it.Next()
  6116  	}
  6117  }
  6118  
  6119  // Error returns any retrieval or parsing error occurred during filtering.
  6120  func (it *RootChainEventEpochRebasedIterator) Error() error {
  6121  	return it.fail
  6122  }
  6123  
  6124  // Close terminates the iteration process, releasing any pending underlying
  6125  // resources.
  6126  func (it *RootChainEventEpochRebasedIterator) Close() error {
  6127  	it.sub.Unsubscribe()
  6128  	return nil
  6129  }
  6130  
  6131  // RootChainEventEpochRebased represents a EpochRebased event raised by the RootChainEvent contract.
  6132  type RootChainEventEpochRebased struct {
  6133  	ForkNumber       *big.Int
  6134  	EpochNumber      *big.Int
  6135  	StartBlockNumber *big.Int
  6136  	EndBlockNumber   *big.Int
  6137  	RequestStart     *big.Int
  6138  	RequestEnd       *big.Int
  6139  	EpochIsEmpty     bool
  6140  	IsRequest        bool
  6141  	UserActivated    bool
  6142  	Raw              types.Log // Blockchain specific contextual infos
  6143  }
  6144  
  6145  // FilterEpochRebased is a free log retrieval operation binding the contract event 0x030c1c69405c93021f28f57557240dee939a320b826a1fd0d39bf6e629ecab47.
  6146  //
  6147  // Solidity: event EpochRebased(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated)
  6148  func (_RootChainEvent *RootChainEventFilterer) FilterEpochRebased(opts *bind.FilterOpts) (*RootChainEventEpochRebasedIterator, error) {
  6149  
  6150  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "EpochRebased")
  6151  	if err != nil {
  6152  		return nil, err
  6153  	}
  6154  	return &RootChainEventEpochRebasedIterator{contract: _RootChainEvent.contract, event: "EpochRebased", logs: logs, sub: sub}, nil
  6155  }
  6156  
  6157  // WatchEpochRebased is a free log subscription operation binding the contract event 0x030c1c69405c93021f28f57557240dee939a320b826a1fd0d39bf6e629ecab47.
  6158  //
  6159  // Solidity: event EpochRebased(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated)
  6160  func (_RootChainEvent *RootChainEventFilterer) WatchEpochRebased(opts *bind.WatchOpts, sink chan<- *RootChainEventEpochRebased) (event.Subscription, error) {
  6161  
  6162  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "EpochRebased")
  6163  	if err != nil {
  6164  		return nil, err
  6165  	}
  6166  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6167  		defer sub.Unsubscribe()
  6168  		for {
  6169  			select {
  6170  			case log := <-logs:
  6171  				// New log arrived, parse the event and forward to the user
  6172  				event := new(RootChainEventEpochRebased)
  6173  				if err := _RootChainEvent.contract.UnpackLog(event, "EpochRebased", log); err != nil {
  6174  					return err
  6175  				}
  6176  				event.Raw = log
  6177  
  6178  				select {
  6179  				case sink <- event:
  6180  				case err := <-sub.Err():
  6181  					return err
  6182  				case <-quit:
  6183  					return nil
  6184  				}
  6185  			case err := <-sub.Err():
  6186  				return err
  6187  			case <-quit:
  6188  				return nil
  6189  			}
  6190  		}
  6191  	}), nil
  6192  }
  6193  
  6194  // ParseEpochRebased is a log parse operation binding the contract event 0x030c1c69405c93021f28f57557240dee939a320b826a1fd0d39bf6e629ecab47.
  6195  //
  6196  // Solidity: event EpochRebased(uint256 forkNumber, uint256 epochNumber, uint256 startBlockNumber, uint256 endBlockNumber, uint256 requestStart, uint256 requestEnd, bool epochIsEmpty, bool isRequest, bool userActivated)
  6197  func (_RootChainEvent *RootChainEventFilterer) ParseEpochRebased(log types.Log) (*RootChainEventEpochRebased, error) {
  6198  	event := new(RootChainEventEpochRebased)
  6199  	if err := _RootChainEvent.contract.UnpackLog(event, "EpochRebased", log); err != nil {
  6200  		return nil, err
  6201  	}
  6202  	return event, nil
  6203  }
  6204  
  6205  // 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.
  6206  type RootChainEventForkedIterator struct {
  6207  	Event *RootChainEventForked // Event containing the contract specifics and raw log
  6208  
  6209  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6210  	event    string              // Event name to use for unpacking event data
  6211  
  6212  	logs chan types.Log        // Log channel receiving the found contract events
  6213  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6214  	done bool                  // Whether the subscription completed delivering logs
  6215  	fail error                 // Occurred error to stop iteration
  6216  }
  6217  
  6218  // Next advances the iterator to the subsequent event, returning whether there
  6219  // are any more events found. In case of a retrieval or parsing error, false is
  6220  // returned and Error() can be queried for the exact failure.
  6221  func (it *RootChainEventForkedIterator) Next() bool {
  6222  	// If the iterator failed, stop iterating
  6223  	if it.fail != nil {
  6224  		return false
  6225  	}
  6226  	// If the iterator completed, deliver directly whatever's available
  6227  	if it.done {
  6228  		select {
  6229  		case log := <-it.logs:
  6230  			it.Event = new(RootChainEventForked)
  6231  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6232  				it.fail = err
  6233  				return false
  6234  			}
  6235  			it.Event.Raw = log
  6236  			return true
  6237  
  6238  		default:
  6239  			return false
  6240  		}
  6241  	}
  6242  	// Iterator still in progress, wait for either a data or an error event
  6243  	select {
  6244  	case log := <-it.logs:
  6245  		it.Event = new(RootChainEventForked)
  6246  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6247  			it.fail = err
  6248  			return false
  6249  		}
  6250  		it.Event.Raw = log
  6251  		return true
  6252  
  6253  	case err := <-it.sub.Err():
  6254  		it.done = true
  6255  		it.fail = err
  6256  		return it.Next()
  6257  	}
  6258  }
  6259  
  6260  // Error returns any retrieval or parsing error occurred during filtering.
  6261  func (it *RootChainEventForkedIterator) Error() error {
  6262  	return it.fail
  6263  }
  6264  
  6265  // Close terminates the iteration process, releasing any pending underlying
  6266  // resources.
  6267  func (it *RootChainEventForkedIterator) Close() error {
  6268  	it.sub.Unsubscribe()
  6269  	return nil
  6270  }
  6271  
  6272  // RootChainEventForked represents a Forked event raised by the RootChainEvent contract.
  6273  type RootChainEventForked struct {
  6274  	NewFork           *big.Int
  6275  	EpochNumber       *big.Int
  6276  	ForkedBlockNumber *big.Int
  6277  	Raw               types.Log // Blockchain specific contextual infos
  6278  }
  6279  
  6280  // FilterForked is a free log retrieval operation binding the contract event 0x0647d42ab02f6e0ae76959757dcb6aa6feac1d4ba6f077f1223fb4b1b429f06c.
  6281  //
  6282  // Solidity: event Forked(uint256 newFork, uint256 epochNumber, uint256 forkedBlockNumber)
  6283  func (_RootChainEvent *RootChainEventFilterer) FilterForked(opts *bind.FilterOpts) (*RootChainEventForkedIterator, error) {
  6284  
  6285  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "Forked")
  6286  	if err != nil {
  6287  		return nil, err
  6288  	}
  6289  	return &RootChainEventForkedIterator{contract: _RootChainEvent.contract, event: "Forked", logs: logs, sub: sub}, nil
  6290  }
  6291  
  6292  // WatchForked is a free log subscription operation binding the contract event 0x0647d42ab02f6e0ae76959757dcb6aa6feac1d4ba6f077f1223fb4b1b429f06c.
  6293  //
  6294  // Solidity: event Forked(uint256 newFork, uint256 epochNumber, uint256 forkedBlockNumber)
  6295  func (_RootChainEvent *RootChainEventFilterer) WatchForked(opts *bind.WatchOpts, sink chan<- *RootChainEventForked) (event.Subscription, error) {
  6296  
  6297  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "Forked")
  6298  	if err != nil {
  6299  		return nil, err
  6300  	}
  6301  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6302  		defer sub.Unsubscribe()
  6303  		for {
  6304  			select {
  6305  			case log := <-logs:
  6306  				// New log arrived, parse the event and forward to the user
  6307  				event := new(RootChainEventForked)
  6308  				if err := _RootChainEvent.contract.UnpackLog(event, "Forked", log); err != nil {
  6309  					return err
  6310  				}
  6311  				event.Raw = log
  6312  
  6313  				select {
  6314  				case sink <- event:
  6315  				case err := <-sub.Err():
  6316  					return err
  6317  				case <-quit:
  6318  					return nil
  6319  				}
  6320  			case err := <-sub.Err():
  6321  				return err
  6322  			case <-quit:
  6323  				return nil
  6324  			}
  6325  		}
  6326  	}), nil
  6327  }
  6328  
  6329  // ParseForked is a log parse operation binding the contract event 0x0647d42ab02f6e0ae76959757dcb6aa6feac1d4ba6f077f1223fb4b1b429f06c.
  6330  //
  6331  // Solidity: event Forked(uint256 newFork, uint256 epochNumber, uint256 forkedBlockNumber)
  6332  func (_RootChainEvent *RootChainEventFilterer) ParseForked(log types.Log) (*RootChainEventForked, error) {
  6333  	event := new(RootChainEventForked)
  6334  	if err := _RootChainEvent.contract.UnpackLog(event, "Forked", log); err != nil {
  6335  		return nil, err
  6336  	}
  6337  	return event, nil
  6338  }
  6339  
  6340  // 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.
  6341  type RootChainEventOperatorChangedIterator struct {
  6342  	Event *RootChainEventOperatorChanged // Event containing the contract specifics and raw log
  6343  
  6344  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6345  	event    string              // Event name to use for unpacking event data
  6346  
  6347  	logs chan types.Log        // Log channel receiving the found contract events
  6348  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6349  	done bool                  // Whether the subscription completed delivering logs
  6350  	fail error                 // Occurred error to stop iteration
  6351  }
  6352  
  6353  // Next advances the iterator to the subsequent event, returning whether there
  6354  // are any more events found. In case of a retrieval or parsing error, false is
  6355  // returned and Error() can be queried for the exact failure.
  6356  func (it *RootChainEventOperatorChangedIterator) Next() bool {
  6357  	// If the iterator failed, stop iterating
  6358  	if it.fail != nil {
  6359  		return false
  6360  	}
  6361  	// If the iterator completed, deliver directly whatever's available
  6362  	if it.done {
  6363  		select {
  6364  		case log := <-it.logs:
  6365  			it.Event = new(RootChainEventOperatorChanged)
  6366  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6367  				it.fail = err
  6368  				return false
  6369  			}
  6370  			it.Event.Raw = log
  6371  			return true
  6372  
  6373  		default:
  6374  			return false
  6375  		}
  6376  	}
  6377  	// Iterator still in progress, wait for either a data or an error event
  6378  	select {
  6379  	case log := <-it.logs:
  6380  		it.Event = new(RootChainEventOperatorChanged)
  6381  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6382  			it.fail = err
  6383  			return false
  6384  		}
  6385  		it.Event.Raw = log
  6386  		return true
  6387  
  6388  	case err := <-it.sub.Err():
  6389  		it.done = true
  6390  		it.fail = err
  6391  		return it.Next()
  6392  	}
  6393  }
  6394  
  6395  // Error returns any retrieval or parsing error occurred during filtering.
  6396  func (it *RootChainEventOperatorChangedIterator) Error() error {
  6397  	return it.fail
  6398  }
  6399  
  6400  // Close terminates the iteration process, releasing any pending underlying
  6401  // resources.
  6402  func (it *RootChainEventOperatorChangedIterator) Close() error {
  6403  	it.sub.Unsubscribe()
  6404  	return nil
  6405  }
  6406  
  6407  // RootChainEventOperatorChanged represents a OperatorChanged event raised by the RootChainEvent contract.
  6408  type RootChainEventOperatorChanged struct {
  6409  	NewOperator common.Address
  6410  	Raw         types.Log // Blockchain specific contextual infos
  6411  }
  6412  
  6413  // FilterOperatorChanged is a free log retrieval operation binding the contract event 0x4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e54.
  6414  //
  6415  // Solidity: event OperatorChanged(address _newOperator)
  6416  func (_RootChainEvent *RootChainEventFilterer) FilterOperatorChanged(opts *bind.FilterOpts) (*RootChainEventOperatorChangedIterator, error) {
  6417  
  6418  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "OperatorChanged")
  6419  	if err != nil {
  6420  		return nil, err
  6421  	}
  6422  	return &RootChainEventOperatorChangedIterator{contract: _RootChainEvent.contract, event: "OperatorChanged", logs: logs, sub: sub}, nil
  6423  }
  6424  
  6425  // WatchOperatorChanged is a free log subscription operation binding the contract event 0x4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e54.
  6426  //
  6427  // Solidity: event OperatorChanged(address _newOperator)
  6428  func (_RootChainEvent *RootChainEventFilterer) WatchOperatorChanged(opts *bind.WatchOpts, sink chan<- *RootChainEventOperatorChanged) (event.Subscription, error) {
  6429  
  6430  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "OperatorChanged")
  6431  	if err != nil {
  6432  		return nil, err
  6433  	}
  6434  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6435  		defer sub.Unsubscribe()
  6436  		for {
  6437  			select {
  6438  			case log := <-logs:
  6439  				// New log arrived, parse the event and forward to the user
  6440  				event := new(RootChainEventOperatorChanged)
  6441  				if err := _RootChainEvent.contract.UnpackLog(event, "OperatorChanged", log); err != nil {
  6442  					return err
  6443  				}
  6444  				event.Raw = log
  6445  
  6446  				select {
  6447  				case sink <- event:
  6448  				case err := <-sub.Err():
  6449  					return err
  6450  				case <-quit:
  6451  					return nil
  6452  				}
  6453  			case err := <-sub.Err():
  6454  				return err
  6455  			case <-quit:
  6456  				return nil
  6457  			}
  6458  		}
  6459  	}), nil
  6460  }
  6461  
  6462  // ParseOperatorChanged is a log parse operation binding the contract event 0x4721129e0e676ed6a92909bb24e853ccdd63ad72280cc2e974e38e480e0e6e54.
  6463  //
  6464  // Solidity: event OperatorChanged(address _newOperator)
  6465  func (_RootChainEvent *RootChainEventFilterer) ParseOperatorChanged(log types.Log) (*RootChainEventOperatorChanged, error) {
  6466  	event := new(RootChainEventOperatorChanged)
  6467  	if err := _RootChainEvent.contract.UnpackLog(event, "OperatorChanged", log); err != nil {
  6468  		return nil, err
  6469  	}
  6470  	return event, nil
  6471  }
  6472  
  6473  // 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.
  6474  type RootChainEventRequestAppliedIterator struct {
  6475  	Event *RootChainEventRequestApplied // Event containing the contract specifics and raw log
  6476  
  6477  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6478  	event    string              // Event name to use for unpacking event data
  6479  
  6480  	logs chan types.Log        // Log channel receiving the found contract events
  6481  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6482  	done bool                  // Whether the subscription completed delivering logs
  6483  	fail error                 // Occurred error to stop iteration
  6484  }
  6485  
  6486  // Next advances the iterator to the subsequent event, returning whether there
  6487  // are any more events found. In case of a retrieval or parsing error, false is
  6488  // returned and Error() can be queried for the exact failure.
  6489  func (it *RootChainEventRequestAppliedIterator) Next() bool {
  6490  	// If the iterator failed, stop iterating
  6491  	if it.fail != nil {
  6492  		return false
  6493  	}
  6494  	// If the iterator completed, deliver directly whatever's available
  6495  	if it.done {
  6496  		select {
  6497  		case log := <-it.logs:
  6498  			it.Event = new(RootChainEventRequestApplied)
  6499  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6500  				it.fail = err
  6501  				return false
  6502  			}
  6503  			it.Event.Raw = log
  6504  			return true
  6505  
  6506  		default:
  6507  			return false
  6508  		}
  6509  	}
  6510  	// Iterator still in progress, wait for either a data or an error event
  6511  	select {
  6512  	case log := <-it.logs:
  6513  		it.Event = new(RootChainEventRequestApplied)
  6514  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6515  			it.fail = err
  6516  			return false
  6517  		}
  6518  		it.Event.Raw = log
  6519  		return true
  6520  
  6521  	case err := <-it.sub.Err():
  6522  		it.done = true
  6523  		it.fail = err
  6524  		return it.Next()
  6525  	}
  6526  }
  6527  
  6528  // Error returns any retrieval or parsing error occurred during filtering.
  6529  func (it *RootChainEventRequestAppliedIterator) Error() error {
  6530  	return it.fail
  6531  }
  6532  
  6533  // Close terminates the iteration process, releasing any pending underlying
  6534  // resources.
  6535  func (it *RootChainEventRequestAppliedIterator) Close() error {
  6536  	it.sub.Unsubscribe()
  6537  	return nil
  6538  }
  6539  
  6540  // RootChainEventRequestApplied represents a RequestApplied event raised by the RootChainEvent contract.
  6541  type RootChainEventRequestApplied struct {
  6542  	RequestId     *big.Int
  6543  	UserActivated bool
  6544  	Raw           types.Log // Blockchain specific contextual infos
  6545  }
  6546  
  6547  // FilterRequestApplied is a free log retrieval operation binding the contract event 0x6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c2.
  6548  //
  6549  // Solidity: event RequestApplied(uint256 requestId, bool userActivated)
  6550  func (_RootChainEvent *RootChainEventFilterer) FilterRequestApplied(opts *bind.FilterOpts) (*RootChainEventRequestAppliedIterator, error) {
  6551  
  6552  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "RequestApplied")
  6553  	if err != nil {
  6554  		return nil, err
  6555  	}
  6556  	return &RootChainEventRequestAppliedIterator{contract: _RootChainEvent.contract, event: "RequestApplied", logs: logs, sub: sub}, nil
  6557  }
  6558  
  6559  // WatchRequestApplied is a free log subscription operation binding the contract event 0x6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c2.
  6560  //
  6561  // Solidity: event RequestApplied(uint256 requestId, bool userActivated)
  6562  func (_RootChainEvent *RootChainEventFilterer) WatchRequestApplied(opts *bind.WatchOpts, sink chan<- *RootChainEventRequestApplied) (event.Subscription, error) {
  6563  
  6564  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "RequestApplied")
  6565  	if err != nil {
  6566  		return nil, err
  6567  	}
  6568  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6569  		defer sub.Unsubscribe()
  6570  		for {
  6571  			select {
  6572  			case log := <-logs:
  6573  				// New log arrived, parse the event and forward to the user
  6574  				event := new(RootChainEventRequestApplied)
  6575  				if err := _RootChainEvent.contract.UnpackLog(event, "RequestApplied", log); err != nil {
  6576  					return err
  6577  				}
  6578  				event.Raw = log
  6579  
  6580  				select {
  6581  				case sink <- event:
  6582  				case err := <-sub.Err():
  6583  					return err
  6584  				case <-quit:
  6585  					return nil
  6586  				}
  6587  			case err := <-sub.Err():
  6588  				return err
  6589  			case <-quit:
  6590  				return nil
  6591  			}
  6592  		}
  6593  	}), nil
  6594  }
  6595  
  6596  // ParseRequestApplied is a log parse operation binding the contract event 0x6940a01870e576ceb735867e13863646d517ce10e66c0133186a4ebdfe9388c2.
  6597  //
  6598  // Solidity: event RequestApplied(uint256 requestId, bool userActivated)
  6599  func (_RootChainEvent *RootChainEventFilterer) ParseRequestApplied(log types.Log) (*RootChainEventRequestApplied, error) {
  6600  	event := new(RootChainEventRequestApplied)
  6601  	if err := _RootChainEvent.contract.UnpackLog(event, "RequestApplied", log); err != nil {
  6602  		return nil, err
  6603  	}
  6604  	return event, nil
  6605  }
  6606  
  6607  // 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.
  6608  type RootChainEventRequestChallengedIterator struct {
  6609  	Event *RootChainEventRequestChallenged // Event containing the contract specifics and raw log
  6610  
  6611  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6612  	event    string              // Event name to use for unpacking event data
  6613  
  6614  	logs chan types.Log        // Log channel receiving the found contract events
  6615  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6616  	done bool                  // Whether the subscription completed delivering logs
  6617  	fail error                 // Occurred error to stop iteration
  6618  }
  6619  
  6620  // Next advances the iterator to the subsequent event, returning whether there
  6621  // are any more events found. In case of a retrieval or parsing error, false is
  6622  // returned and Error() can be queried for the exact failure.
  6623  func (it *RootChainEventRequestChallengedIterator) Next() bool {
  6624  	// If the iterator failed, stop iterating
  6625  	if it.fail != nil {
  6626  		return false
  6627  	}
  6628  	// If the iterator completed, deliver directly whatever's available
  6629  	if it.done {
  6630  		select {
  6631  		case log := <-it.logs:
  6632  			it.Event = new(RootChainEventRequestChallenged)
  6633  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6634  				it.fail = err
  6635  				return false
  6636  			}
  6637  			it.Event.Raw = log
  6638  			return true
  6639  
  6640  		default:
  6641  			return false
  6642  		}
  6643  	}
  6644  	// Iterator still in progress, wait for either a data or an error event
  6645  	select {
  6646  	case log := <-it.logs:
  6647  		it.Event = new(RootChainEventRequestChallenged)
  6648  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6649  			it.fail = err
  6650  			return false
  6651  		}
  6652  		it.Event.Raw = log
  6653  		return true
  6654  
  6655  	case err := <-it.sub.Err():
  6656  		it.done = true
  6657  		it.fail = err
  6658  		return it.Next()
  6659  	}
  6660  }
  6661  
  6662  // Error returns any retrieval or parsing error occurred during filtering.
  6663  func (it *RootChainEventRequestChallengedIterator) Error() error {
  6664  	return it.fail
  6665  }
  6666  
  6667  // Close terminates the iteration process, releasing any pending underlying
  6668  // resources.
  6669  func (it *RootChainEventRequestChallengedIterator) Close() error {
  6670  	it.sub.Unsubscribe()
  6671  	return nil
  6672  }
  6673  
  6674  // RootChainEventRequestChallenged represents a RequestChallenged event raised by the RootChainEvent contract.
  6675  type RootChainEventRequestChallenged struct {
  6676  	RequestId     *big.Int
  6677  	UserActivated bool
  6678  	Raw           types.Log // Blockchain specific contextual infos
  6679  }
  6680  
  6681  // FilterRequestChallenged is a free log retrieval operation binding the contract event 0xc8135db115644ed4ae193313c4c801235ef740d2a57a8d5e6fe26ab66635698a.
  6682  //
  6683  // Solidity: event RequestChallenged(uint256 requestId, bool userActivated)
  6684  func (_RootChainEvent *RootChainEventFilterer) FilterRequestChallenged(opts *bind.FilterOpts) (*RootChainEventRequestChallengedIterator, error) {
  6685  
  6686  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "RequestChallenged")
  6687  	if err != nil {
  6688  		return nil, err
  6689  	}
  6690  	return &RootChainEventRequestChallengedIterator{contract: _RootChainEvent.contract, event: "RequestChallenged", logs: logs, sub: sub}, nil
  6691  }
  6692  
  6693  // WatchRequestChallenged is a free log subscription operation binding the contract event 0xc8135db115644ed4ae193313c4c801235ef740d2a57a8d5e6fe26ab66635698a.
  6694  //
  6695  // Solidity: event RequestChallenged(uint256 requestId, bool userActivated)
  6696  func (_RootChainEvent *RootChainEventFilterer) WatchRequestChallenged(opts *bind.WatchOpts, sink chan<- *RootChainEventRequestChallenged) (event.Subscription, error) {
  6697  
  6698  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "RequestChallenged")
  6699  	if err != nil {
  6700  		return nil, err
  6701  	}
  6702  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6703  		defer sub.Unsubscribe()
  6704  		for {
  6705  			select {
  6706  			case log := <-logs:
  6707  				// New log arrived, parse the event and forward to the user
  6708  				event := new(RootChainEventRequestChallenged)
  6709  				if err := _RootChainEvent.contract.UnpackLog(event, "RequestChallenged", log); err != nil {
  6710  					return err
  6711  				}
  6712  				event.Raw = log
  6713  
  6714  				select {
  6715  				case sink <- event:
  6716  				case err := <-sub.Err():
  6717  					return err
  6718  				case <-quit:
  6719  					return nil
  6720  				}
  6721  			case err := <-sub.Err():
  6722  				return err
  6723  			case <-quit:
  6724  				return nil
  6725  			}
  6726  		}
  6727  	}), nil
  6728  }
  6729  
  6730  // ParseRequestChallenged is a log parse operation binding the contract event 0xc8135db115644ed4ae193313c4c801235ef740d2a57a8d5e6fe26ab66635698a.
  6731  //
  6732  // Solidity: event RequestChallenged(uint256 requestId, bool userActivated)
  6733  func (_RootChainEvent *RootChainEventFilterer) ParseRequestChallenged(log types.Log) (*RootChainEventRequestChallenged, error) {
  6734  	event := new(RootChainEventRequestChallenged)
  6735  	if err := _RootChainEvent.contract.UnpackLog(event, "RequestChallenged", log); err != nil {
  6736  		return nil, err
  6737  	}
  6738  	return event, nil
  6739  }
  6740  
  6741  // 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.
  6742  type RootChainEventRequestCreatedIterator struct {
  6743  	Event *RootChainEventRequestCreated // Event containing the contract specifics and raw log
  6744  
  6745  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6746  	event    string              // Event name to use for unpacking event data
  6747  
  6748  	logs chan types.Log        // Log channel receiving the found contract events
  6749  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6750  	done bool                  // Whether the subscription completed delivering logs
  6751  	fail error                 // Occurred error to stop iteration
  6752  }
  6753  
  6754  // Next advances the iterator to the subsequent event, returning whether there
  6755  // are any more events found. In case of a retrieval or parsing error, false is
  6756  // returned and Error() can be queried for the exact failure.
  6757  func (it *RootChainEventRequestCreatedIterator) Next() bool {
  6758  	// If the iterator failed, stop iterating
  6759  	if it.fail != nil {
  6760  		return false
  6761  	}
  6762  	// If the iterator completed, deliver directly whatever's available
  6763  	if it.done {
  6764  		select {
  6765  		case log := <-it.logs:
  6766  			it.Event = new(RootChainEventRequestCreated)
  6767  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6768  				it.fail = err
  6769  				return false
  6770  			}
  6771  			it.Event.Raw = log
  6772  			return true
  6773  
  6774  		default:
  6775  			return false
  6776  		}
  6777  	}
  6778  	// Iterator still in progress, wait for either a data or an error event
  6779  	select {
  6780  	case log := <-it.logs:
  6781  		it.Event = new(RootChainEventRequestCreated)
  6782  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6783  			it.fail = err
  6784  			return false
  6785  		}
  6786  		it.Event.Raw = log
  6787  		return true
  6788  
  6789  	case err := <-it.sub.Err():
  6790  		it.done = true
  6791  		it.fail = err
  6792  		return it.Next()
  6793  	}
  6794  }
  6795  
  6796  // Error returns any retrieval or parsing error occurred during filtering.
  6797  func (it *RootChainEventRequestCreatedIterator) Error() error {
  6798  	return it.fail
  6799  }
  6800  
  6801  // Close terminates the iteration process, releasing any pending underlying
  6802  // resources.
  6803  func (it *RootChainEventRequestCreatedIterator) Close() error {
  6804  	it.sub.Unsubscribe()
  6805  	return nil
  6806  }
  6807  
  6808  // RootChainEventRequestCreated represents a RequestCreated event raised by the RootChainEvent contract.
  6809  type RootChainEventRequestCreated struct {
  6810  	RequestId     *big.Int
  6811  	Requestor     common.Address
  6812  	To            common.Address
  6813  	WeiAmount     *big.Int
  6814  	TrieKey       [32]byte
  6815  	TrieValue     []byte
  6816  	IsExit        bool
  6817  	UserActivated bool
  6818  	Raw           types.Log // Blockchain specific contextual infos
  6819  }
  6820  
  6821  // FilterRequestCreated is a free log retrieval operation binding the contract event 0x879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d.
  6822  //
  6823  // Solidity: event RequestCreated(uint256 requestId, address requestor, address to, uint256 weiAmount, bytes32 trieKey, bytes trieValue, bool isExit, bool userActivated)
  6824  func (_RootChainEvent *RootChainEventFilterer) FilterRequestCreated(opts *bind.FilterOpts) (*RootChainEventRequestCreatedIterator, error) {
  6825  
  6826  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "RequestCreated")
  6827  	if err != nil {
  6828  		return nil, err
  6829  	}
  6830  	return &RootChainEventRequestCreatedIterator{contract: _RootChainEvent.contract, event: "RequestCreated", logs: logs, sub: sub}, nil
  6831  }
  6832  
  6833  // WatchRequestCreated is a free log subscription operation binding the contract event 0x879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d.
  6834  //
  6835  // Solidity: event RequestCreated(uint256 requestId, address requestor, address to, uint256 weiAmount, bytes32 trieKey, bytes trieValue, bool isExit, bool userActivated)
  6836  func (_RootChainEvent *RootChainEventFilterer) WatchRequestCreated(opts *bind.WatchOpts, sink chan<- *RootChainEventRequestCreated) (event.Subscription, error) {
  6837  
  6838  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "RequestCreated")
  6839  	if err != nil {
  6840  		return nil, err
  6841  	}
  6842  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6843  		defer sub.Unsubscribe()
  6844  		for {
  6845  			select {
  6846  			case log := <-logs:
  6847  				// New log arrived, parse the event and forward to the user
  6848  				event := new(RootChainEventRequestCreated)
  6849  				if err := _RootChainEvent.contract.UnpackLog(event, "RequestCreated", log); err != nil {
  6850  					return err
  6851  				}
  6852  				event.Raw = log
  6853  
  6854  				select {
  6855  				case sink <- event:
  6856  				case err := <-sub.Err():
  6857  					return err
  6858  				case <-quit:
  6859  					return nil
  6860  				}
  6861  			case err := <-sub.Err():
  6862  				return err
  6863  			case <-quit:
  6864  				return nil
  6865  			}
  6866  		}
  6867  	}), nil
  6868  }
  6869  
  6870  // ParseRequestCreated is a log parse operation binding the contract event 0x879922cf5fcada9ebaf8bd7424dc62877f4b220cae07fb6695cc1e8f94c52b4d.
  6871  //
  6872  // Solidity: event RequestCreated(uint256 requestId, address requestor, address to, uint256 weiAmount, bytes32 trieKey, bytes trieValue, bool isExit, bool userActivated)
  6873  func (_RootChainEvent *RootChainEventFilterer) ParseRequestCreated(log types.Log) (*RootChainEventRequestCreated, error) {
  6874  	event := new(RootChainEventRequestCreated)
  6875  	if err := _RootChainEvent.contract.UnpackLog(event, "RequestCreated", log); err != nil {
  6876  		return nil, err
  6877  	}
  6878  	return event, nil
  6879  }
  6880  
  6881  // 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.
  6882  type RootChainEventRequestFinalizedIterator struct {
  6883  	Event *RootChainEventRequestFinalized // Event containing the contract specifics and raw log
  6884  
  6885  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6886  	event    string              // Event name to use for unpacking event data
  6887  
  6888  	logs chan types.Log        // Log channel receiving the found contract events
  6889  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6890  	done bool                  // Whether the subscription completed delivering logs
  6891  	fail error                 // Occurred error to stop iteration
  6892  }
  6893  
  6894  // Next advances the iterator to the subsequent event, returning whether there
  6895  // are any more events found. In case of a retrieval or parsing error, false is
  6896  // returned and Error() can be queried for the exact failure.
  6897  func (it *RootChainEventRequestFinalizedIterator) Next() bool {
  6898  	// If the iterator failed, stop iterating
  6899  	if it.fail != nil {
  6900  		return false
  6901  	}
  6902  	// If the iterator completed, deliver directly whatever's available
  6903  	if it.done {
  6904  		select {
  6905  		case log := <-it.logs:
  6906  			it.Event = new(RootChainEventRequestFinalized)
  6907  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6908  				it.fail = err
  6909  				return false
  6910  			}
  6911  			it.Event.Raw = log
  6912  			return true
  6913  
  6914  		default:
  6915  			return false
  6916  		}
  6917  	}
  6918  	// Iterator still in progress, wait for either a data or an error event
  6919  	select {
  6920  	case log := <-it.logs:
  6921  		it.Event = new(RootChainEventRequestFinalized)
  6922  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6923  			it.fail = err
  6924  			return false
  6925  		}
  6926  		it.Event.Raw = log
  6927  		return true
  6928  
  6929  	case err := <-it.sub.Err():
  6930  		it.done = true
  6931  		it.fail = err
  6932  		return it.Next()
  6933  	}
  6934  }
  6935  
  6936  // Error returns any retrieval or parsing error occurred during filtering.
  6937  func (it *RootChainEventRequestFinalizedIterator) Error() error {
  6938  	return it.fail
  6939  }
  6940  
  6941  // Close terminates the iteration process, releasing any pending underlying
  6942  // resources.
  6943  func (it *RootChainEventRequestFinalizedIterator) Close() error {
  6944  	it.sub.Unsubscribe()
  6945  	return nil
  6946  }
  6947  
  6948  // RootChainEventRequestFinalized represents a RequestFinalized event raised by the RootChainEvent contract.
  6949  type RootChainEventRequestFinalized struct {
  6950  	RequestId     *big.Int
  6951  	UserActivated bool
  6952  	Raw           types.Log // Blockchain specific contextual infos
  6953  }
  6954  
  6955  // FilterRequestFinalized is a free log retrieval operation binding the contract event 0x134017cf3262b18f892ee95dde3b0aec9a80cc70a7c96f09c64bd237aceb0473.
  6956  //
  6957  // Solidity: event RequestFinalized(uint256 requestId, bool userActivated)
  6958  func (_RootChainEvent *RootChainEventFilterer) FilterRequestFinalized(opts *bind.FilterOpts) (*RootChainEventRequestFinalizedIterator, error) {
  6959  
  6960  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "RequestFinalized")
  6961  	if err != nil {
  6962  		return nil, err
  6963  	}
  6964  	return &RootChainEventRequestFinalizedIterator{contract: _RootChainEvent.contract, event: "RequestFinalized", logs: logs, sub: sub}, nil
  6965  }
  6966  
  6967  // WatchRequestFinalized is a free log subscription operation binding the contract event 0x134017cf3262b18f892ee95dde3b0aec9a80cc70a7c96f09c64bd237aceb0473.
  6968  //
  6969  // Solidity: event RequestFinalized(uint256 requestId, bool userActivated)
  6970  func (_RootChainEvent *RootChainEventFilterer) WatchRequestFinalized(opts *bind.WatchOpts, sink chan<- *RootChainEventRequestFinalized) (event.Subscription, error) {
  6971  
  6972  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "RequestFinalized")
  6973  	if err != nil {
  6974  		return nil, err
  6975  	}
  6976  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6977  		defer sub.Unsubscribe()
  6978  		for {
  6979  			select {
  6980  			case log := <-logs:
  6981  				// New log arrived, parse the event and forward to the user
  6982  				event := new(RootChainEventRequestFinalized)
  6983  				if err := _RootChainEvent.contract.UnpackLog(event, "RequestFinalized", log); err != nil {
  6984  					return err
  6985  				}
  6986  				event.Raw = log
  6987  
  6988  				select {
  6989  				case sink <- event:
  6990  				case err := <-sub.Err():
  6991  					return err
  6992  				case <-quit:
  6993  					return nil
  6994  				}
  6995  			case err := <-sub.Err():
  6996  				return err
  6997  			case <-quit:
  6998  				return nil
  6999  			}
  7000  		}
  7001  	}), nil
  7002  }
  7003  
  7004  // ParseRequestFinalized is a log parse operation binding the contract event 0x134017cf3262b18f892ee95dde3b0aec9a80cc70a7c96f09c64bd237aceb0473.
  7005  //
  7006  // Solidity: event RequestFinalized(uint256 requestId, bool userActivated)
  7007  func (_RootChainEvent *RootChainEventFilterer) ParseRequestFinalized(log types.Log) (*RootChainEventRequestFinalized, error) {
  7008  	event := new(RootChainEventRequestFinalized)
  7009  	if err := _RootChainEvent.contract.UnpackLog(event, "RequestFinalized", log); err != nil {
  7010  		return nil, err
  7011  	}
  7012  	return event, nil
  7013  }
  7014  
  7015  // 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.
  7016  type RootChainEventRequestableContractMappedIterator struct {
  7017  	Event *RootChainEventRequestableContractMapped // Event containing the contract specifics and raw log
  7018  
  7019  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7020  	event    string              // Event name to use for unpacking event data
  7021  
  7022  	logs chan types.Log        // Log channel receiving the found contract events
  7023  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  7024  	done bool                  // Whether the subscription completed delivering logs
  7025  	fail error                 // Occurred error to stop iteration
  7026  }
  7027  
  7028  // Next advances the iterator to the subsequent event, returning whether there
  7029  // are any more events found. In case of a retrieval or parsing error, false is
  7030  // returned and Error() can be queried for the exact failure.
  7031  func (it *RootChainEventRequestableContractMappedIterator) Next() bool {
  7032  	// If the iterator failed, stop iterating
  7033  	if it.fail != nil {
  7034  		return false
  7035  	}
  7036  	// If the iterator completed, deliver directly whatever's available
  7037  	if it.done {
  7038  		select {
  7039  		case log := <-it.logs:
  7040  			it.Event = new(RootChainEventRequestableContractMapped)
  7041  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7042  				it.fail = err
  7043  				return false
  7044  			}
  7045  			it.Event.Raw = log
  7046  			return true
  7047  
  7048  		default:
  7049  			return false
  7050  		}
  7051  	}
  7052  	// Iterator still in progress, wait for either a data or an error event
  7053  	select {
  7054  	case log := <-it.logs:
  7055  		it.Event = new(RootChainEventRequestableContractMapped)
  7056  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7057  			it.fail = err
  7058  			return false
  7059  		}
  7060  		it.Event.Raw = log
  7061  		return true
  7062  
  7063  	case err := <-it.sub.Err():
  7064  		it.done = true
  7065  		it.fail = err
  7066  		return it.Next()
  7067  	}
  7068  }
  7069  
  7070  // Error returns any retrieval or parsing error occurred during filtering.
  7071  func (it *RootChainEventRequestableContractMappedIterator) Error() error {
  7072  	return it.fail
  7073  }
  7074  
  7075  // Close terminates the iteration process, releasing any pending underlying
  7076  // resources.
  7077  func (it *RootChainEventRequestableContractMappedIterator) Close() error {
  7078  	it.sub.Unsubscribe()
  7079  	return nil
  7080  }
  7081  
  7082  // RootChainEventRequestableContractMapped represents a RequestableContractMapped event raised by the RootChainEvent contract.
  7083  type RootChainEventRequestableContractMapped struct {
  7084  	ContractInRootchain  common.Address
  7085  	ContractInChildchain common.Address
  7086  	Raw                  types.Log // Blockchain specific contextual infos
  7087  }
  7088  
  7089  // FilterRequestableContractMapped is a free log retrieval operation binding the contract event 0xc5ec2ed49686197edd2ed642c7e6096893cc81e6658cde2527030316037715d0.
  7090  //
  7091  // Solidity: event RequestableContractMapped(address contractInRootchain, address contractInChildchain)
  7092  func (_RootChainEvent *RootChainEventFilterer) FilterRequestableContractMapped(opts *bind.FilterOpts) (*RootChainEventRequestableContractMappedIterator, error) {
  7093  
  7094  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "RequestableContractMapped")
  7095  	if err != nil {
  7096  		return nil, err
  7097  	}
  7098  	return &RootChainEventRequestableContractMappedIterator{contract: _RootChainEvent.contract, event: "RequestableContractMapped", logs: logs, sub: sub}, nil
  7099  }
  7100  
  7101  // WatchRequestableContractMapped is a free log subscription operation binding the contract event 0xc5ec2ed49686197edd2ed642c7e6096893cc81e6658cde2527030316037715d0.
  7102  //
  7103  // Solidity: event RequestableContractMapped(address contractInRootchain, address contractInChildchain)
  7104  func (_RootChainEvent *RootChainEventFilterer) WatchRequestableContractMapped(opts *bind.WatchOpts, sink chan<- *RootChainEventRequestableContractMapped) (event.Subscription, error) {
  7105  
  7106  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "RequestableContractMapped")
  7107  	if err != nil {
  7108  		return nil, err
  7109  	}
  7110  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7111  		defer sub.Unsubscribe()
  7112  		for {
  7113  			select {
  7114  			case log := <-logs:
  7115  				// New log arrived, parse the event and forward to the user
  7116  				event := new(RootChainEventRequestableContractMapped)
  7117  				if err := _RootChainEvent.contract.UnpackLog(event, "RequestableContractMapped", log); err != nil {
  7118  					return err
  7119  				}
  7120  				event.Raw = log
  7121  
  7122  				select {
  7123  				case sink <- event:
  7124  				case err := <-sub.Err():
  7125  					return err
  7126  				case <-quit:
  7127  					return nil
  7128  				}
  7129  			case err := <-sub.Err():
  7130  				return err
  7131  			case <-quit:
  7132  				return nil
  7133  			}
  7134  		}
  7135  	}), nil
  7136  }
  7137  
  7138  // ParseRequestableContractMapped is a log parse operation binding the contract event 0xc5ec2ed49686197edd2ed642c7e6096893cc81e6658cde2527030316037715d0.
  7139  //
  7140  // Solidity: event RequestableContractMapped(address contractInRootchain, address contractInChildchain)
  7141  func (_RootChainEvent *RootChainEventFilterer) ParseRequestableContractMapped(log types.Log) (*RootChainEventRequestableContractMapped, error) {
  7142  	event := new(RootChainEventRequestableContractMapped)
  7143  	if err := _RootChainEvent.contract.UnpackLog(event, "RequestableContractMapped", log); err != nil {
  7144  		return nil, err
  7145  	}
  7146  	return event, nil
  7147  }
  7148  
  7149  // 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.
  7150  type RootChainEventSessionTimeoutIterator struct {
  7151  	Event *RootChainEventSessionTimeout // Event containing the contract specifics and raw log
  7152  
  7153  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7154  	event    string              // Event name to use for unpacking event data
  7155  
  7156  	logs chan types.Log        // Log channel receiving the found contract events
  7157  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  7158  	done bool                  // Whether the subscription completed delivering logs
  7159  	fail error                 // Occurred error to stop iteration
  7160  }
  7161  
  7162  // Next advances the iterator to the subsequent event, returning whether there
  7163  // are any more events found. In case of a retrieval or parsing error, false is
  7164  // returned and Error() can be queried for the exact failure.
  7165  func (it *RootChainEventSessionTimeoutIterator) Next() bool {
  7166  	// If the iterator failed, stop iterating
  7167  	if it.fail != nil {
  7168  		return false
  7169  	}
  7170  	// If the iterator completed, deliver directly whatever's available
  7171  	if it.done {
  7172  		select {
  7173  		case log := <-it.logs:
  7174  			it.Event = new(RootChainEventSessionTimeout)
  7175  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7176  				it.fail = err
  7177  				return false
  7178  			}
  7179  			it.Event.Raw = log
  7180  			return true
  7181  
  7182  		default:
  7183  			return false
  7184  		}
  7185  	}
  7186  	// Iterator still in progress, wait for either a data or an error event
  7187  	select {
  7188  	case log := <-it.logs:
  7189  		it.Event = new(RootChainEventSessionTimeout)
  7190  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7191  			it.fail = err
  7192  			return false
  7193  		}
  7194  		it.Event.Raw = log
  7195  		return true
  7196  
  7197  	case err := <-it.sub.Err():
  7198  		it.done = true
  7199  		it.fail = err
  7200  		return it.Next()
  7201  	}
  7202  }
  7203  
  7204  // Error returns any retrieval or parsing error occurred during filtering.
  7205  func (it *RootChainEventSessionTimeoutIterator) Error() error {
  7206  	return it.fail
  7207  }
  7208  
  7209  // Close terminates the iteration process, releasing any pending underlying
  7210  // resources.
  7211  func (it *RootChainEventSessionTimeoutIterator) Close() error {
  7212  	it.sub.Unsubscribe()
  7213  	return nil
  7214  }
  7215  
  7216  // RootChainEventSessionTimeout represents a SessionTimeout event raised by the RootChainEvent contract.
  7217  type RootChainEventSessionTimeout struct {
  7218  	UserActivated bool
  7219  	Raw           types.Log // Blockchain specific contextual infos
  7220  }
  7221  
  7222  // FilterSessionTimeout is a free log retrieval operation binding the contract event 0x2122ec719581cd177f225f59a1ee005831211196831f8f1ccffa817d2e7bd108.
  7223  //
  7224  // Solidity: event SessionTimeout(bool userActivated)
  7225  func (_RootChainEvent *RootChainEventFilterer) FilterSessionTimeout(opts *bind.FilterOpts) (*RootChainEventSessionTimeoutIterator, error) {
  7226  
  7227  	logs, sub, err := _RootChainEvent.contract.FilterLogs(opts, "SessionTimeout")
  7228  	if err != nil {
  7229  		return nil, err
  7230  	}
  7231  	return &RootChainEventSessionTimeoutIterator{contract: _RootChainEvent.contract, event: "SessionTimeout", logs: logs, sub: sub}, nil
  7232  }
  7233  
  7234  // WatchSessionTimeout is a free log subscription operation binding the contract event 0x2122ec719581cd177f225f59a1ee005831211196831f8f1ccffa817d2e7bd108.
  7235  //
  7236  // Solidity: event SessionTimeout(bool userActivated)
  7237  func (_RootChainEvent *RootChainEventFilterer) WatchSessionTimeout(opts *bind.WatchOpts, sink chan<- *RootChainEventSessionTimeout) (event.Subscription, error) {
  7238  
  7239  	logs, sub, err := _RootChainEvent.contract.WatchLogs(opts, "SessionTimeout")
  7240  	if err != nil {
  7241  		return nil, err
  7242  	}
  7243  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7244  		defer sub.Unsubscribe()
  7245  		for {
  7246  			select {
  7247  			case log := <-logs:
  7248  				// New log arrived, parse the event and forward to the user
  7249  				event := new(RootChainEventSessionTimeout)
  7250  				if err := _RootChainEvent.contract.UnpackLog(event, "SessionTimeout", log); err != nil {
  7251  					return err
  7252  				}
  7253  				event.Raw = log
  7254  
  7255  				select {
  7256  				case sink <- event:
  7257  				case err := <-sub.Err():
  7258  					return err
  7259  				case <-quit:
  7260  					return nil
  7261  				}
  7262  			case err := <-sub.Err():
  7263  				return err
  7264  			case <-quit:
  7265  				return nil
  7266  			}
  7267  		}
  7268  	}), nil
  7269  }
  7270  
  7271  // ParseSessionTimeout is a log parse operation binding the contract event 0x2122ec719581cd177f225f59a1ee005831211196831f8f1ccffa817d2e7bd108.
  7272  //
  7273  // Solidity: event SessionTimeout(bool userActivated)
  7274  func (_RootChainEvent *RootChainEventFilterer) ParseSessionTimeout(log types.Log) (*RootChainEventSessionTimeout, error) {
  7275  	event := new(RootChainEventSessionTimeout)
  7276  	if err := _RootChainEvent.contract.UnpackLog(event, "SessionTimeout", log); err != nil {
  7277  		return nil, err
  7278  	}
  7279  	return event, nil
  7280  }
  7281  
  7282  // RootChainStorageABI is the input ABI used to generate the binding from.
  7283  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\"}]"
  7284  
  7285  // RootChainStorageFuncSigs maps the 4-byte function signature to its string representation.
  7286  var RootChainStorageFuncSigs = map[string]string{
  7287  	"d691acd8": "COST_ERO()",
  7288  	"8b5172d0": "COST_ERU()",
  7289  	"94be3aa5": "COST_NRB()",
  7290  	"b2ae9ba8": "COST_ORB()",
  7291  	"192adc5b": "COST_URB()",
  7292  	"033cfbed": "COST_URB_PREPARE()",
  7293  	"08c4fff0": "CP_COMPUTATION()",
  7294  	"8155717d": "CP_EXIT()",
  7295  	"b17fa6e9": "CP_WITHHOLDING()",
  7296  	"2dc6bb7b": "EROIdToFinalize()",
  7297  	"b443f3cc": "EROs(uint256)",
  7298  	"c54626cc": "ERUIdToFinalize()",
  7299  	"f4f31de4": "ERUs(uint256)",
  7300  	"ab96da2d": "NRELength()",
  7301  	"de0ce17d": "NULL_ADDRESS()",
  7302  	"ea7f22a8": "ORBs(uint256)",
  7303  	"c2bc88fa": "PREPARE_TIMEOUT()",
  7304  	"8eb288ca": "REQUEST_GAS()",
  7305  	"c0e86064": "URBs(uint256)",
  7306  	"183d2d1c": "currentFork()",
  7307  	"7b929c27": "development()",
  7308  	"e7b88b80": "epochHandler()",
  7309  	"b8066bcb": "etherToken()",
  7310  	"72ecb9a8": "firstFilledORENumber(uint256)",
  7311  	"ca6f6380": "firstNonEmptyRequestEpoch(uint256)",
  7312  	"4ba3a126": "forks(uint256)",
  7313  	"420bb4b8": "isRootChain()",
  7314  	"fb788a27": "lastAppliedBlockNumber()",
  7315  	"c8ad329f": "lastAppliedEpochNumber()",
  7316  	"164bc2ae": "lastAppliedForkNumber()",
  7317  	"b6715647": "lastNonEmptyRequestEpoch(uint256)",
  7318  	"23691566": "numEnterForORB()",
  7319  	"570ca735": "operator()",
  7320  	"da0185f8": "requestableContracts(address)",
  7321  	"6fb7f558": "seigManager()",
  7322  	"e259faf7": "submitHandler()",
  7323  }
  7324  
  7325  // RootChainStorageBin is the compiled bytecode used for deploying new contracts.
  7326  var RootChainStorageBin = "0x608060405234801561001057600080fd5b50610955806100206000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c8063b17fa6e911610125578063ca6f6380116100ad578063e259faf71161007c578063e259faf714610595578063e7b88b801461059d578063ea7f22a8146105a5578063f4f31de4146105c2578063fb788a27146105df5761021c565b8063ca6f63801461054a578063d691acd814610221578063da0185f814610567578063de0ce17d1461058d5761021c565b8063b8066bcb116100f4578063b8066bcb146104c1578063c0e86064146104c9578063c2bc88fa14610532578063c54626cc1461053a578063c8ad329f146105425761021c565b8063b17fa6e91461038c578063b2ae9ba814610221578063b443f3cc14610394578063b6715647146104a45761021c565b8063570ca735116101a85780638155717d116101775780638155717d1461036c5780638b5172d0146103745780638eb288ca1461037c57806394be3aa514610221578063ab96da2d146103845761021c565b8063570ca7351461031b5780636fb7f5581461033f57806372ecb9a8146103475780637b929c27146103645761021c565b8063192adc5b116101ef578063192adc5b14610253578063236915661461025b5780632dc6bb7b14610263578063420bb4b81461026b5780634ba3a126146102875761021c565b8063033cfbed1461022157806308c4fff01461023b578063164bc2ae14610243578063183d2d1c1461024b575b600080fd5b6102296105e7565b60408051918252519081900360200190f35b6102296105f1565b6102296105f6565b6102296105fc565b610229610602565b61022961060c565b610229610612565b610273610618565b604080519115158252519081900360200190f35b6102a46004803603602081101561029d57600080fd5b503561061d565b6040805167ffffffffffffffff9d8e1681529b8d1660208d0152998c168b8b0152978b1660608b0152958a1660808a015293891660a089015291881660c0880152871660e0870152861661010086015285166101208501529093166101408301529115156101608201529051908190036101800190f35b610323610695565b604080516001600160a01b039092168252519081900360200190f35b6103236106a9565b6102296004803603602081101561035d57600080fd5b50356106b8565b6102736106ca565b6102296106d3565b6102296106d8565b6102296106e2565b6102296106e9565b6102296106ef565b6103b1600480360360208110156103aa57600080fd5b50356106f4565b6040805167ffffffffffffffff8d1681528b15156020808301919091528b151592820192909252891515606082015288151560808201526001600160801b03881660a08201526001600160a01b0380881660c0830152861660e082015261010081018590526101208101849052610160610140820181815284519183019190915283519192909161018084019185019080838360005b8381101561045f578181015183820152602001610447565b50505050905090810190601f16801561048c5780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060405180910390f35b610229600480360360208110156104ba57600080fd5b5035610816565b610323610828565b6104e6600480360360208110156104df57600080fd5b5035610837565b60408051961515875267ffffffffffffffff958616602088015293851686850152918416606086015290921660808401526001600160a01b0390911660a0830152519081900360c00190f35b61022961089f565b6102296108a4565b6102296108aa565b6102296004803603602081101561056057600080fd5b50356108b0565b6103236004803603602081101561057d57600080fd5b50356001600160a01b03166108c2565b6103236108dd565b6103236108e2565b6103236108f1565b6104e6600480360360208110156105bb57600080fd5b5035610900565b6103b1600480360360208110156105d857600080fd5b503561090d565b61022961091a565b6509184e72a00081565b600f81565b60105481565b60065481565b6551dac207a00081565b600d5481565b60135481565b600181565b60086020526000908152604090208054600182015460029092015467ffffffffffffffff80831693600160401b808504831694600160801b808204851695600160c01b92839004861695858116958581048216958482048316959182900483169484841694918204841693908204169160ff9104168c565b60005461010090046001600160a01b031681565b6004546001600160a01b031681565b60076020526000908152604090205481565b60005460ff1681565b600a81565b6512309ce5400081565b620186a081565b60055481565b601481565b6009818154811061070157fe5b6000918252602091829020600691909102018054600180830154600280850154600386015460048701546005880180546040805161010099831615999099026000190190911695909504601f81018b90048b0288018b0190955284875267ffffffffffffffff88169a50600160401b880460ff9081169a600160481b8a0482169a600160501b8b0483169a600160581b810490931699600160601b9093046001600160801b0316986001600160a01b039081169897169690939183018282801561080c5780601f106107e15761010080835404028352916020019161080c565b820191906000526020600020905b8154815290600101906020018083116107ef57829003601f168201915b505050505090508b565b600e6020526000908152604090205481565b6003546001600160a01b031681565b600c818154811061084457fe5b60009182526020909120600290910201805460019091015460ff8216925067ffffffffffffffff6101008304811692600160481b8104821692600160881b9091048216918116906001600160a01b03600160401b9091041686565b603c81565b60145481565b60115481565b600f6020526000908152604090205481565b6015602052600090815260409020546001600160a01b031681565b600081565b6002546001600160a01b031681565b6001546001600160a01b031681565b600b818154811061084457fe5b600a818154811061070157fe5b6012548156fea265627a7a723158208658500c8e7688e6b2b532a144651710b608708a6e1f8775e1e146893a74b19164736f6c634300050c0032"
  7327  
  7328  // DeployRootChainStorage deploys a new Ethereum contract, binding an instance of RootChainStorage to it.
  7329  func DeployRootChainStorage(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *RootChainStorage, error) {
  7330  	parsed, err := abi.JSON(strings.NewReader(RootChainStorageABI))
  7331  	if err != nil {
  7332  		return common.Address{}, nil, nil, err
  7333  	}
  7334  
  7335  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RootChainStorageBin), backend)
  7336  	if err != nil {
  7337  		return common.Address{}, nil, nil, err
  7338  	}
  7339  	return address, tx, &RootChainStorage{RootChainStorageCaller: RootChainStorageCaller{contract: contract}, RootChainStorageTransactor: RootChainStorageTransactor{contract: contract}, RootChainStorageFilterer: RootChainStorageFilterer{contract: contract}}, nil
  7340  }
  7341  
  7342  // RootChainStorage is an auto generated Go binding around an Ethereum contract.
  7343  type RootChainStorage struct {
  7344  	RootChainStorageCaller     // Read-only binding to the contract
  7345  	RootChainStorageTransactor // Write-only binding to the contract
  7346  	RootChainStorageFilterer   // Log filterer for contract events
  7347  }
  7348  
  7349  // RootChainStorageCaller is an auto generated read-only Go binding around an Ethereum contract.
  7350  type RootChainStorageCaller struct {
  7351  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7352  }
  7353  
  7354  // RootChainStorageTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7355  type RootChainStorageTransactor struct {
  7356  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7357  }
  7358  
  7359  // RootChainStorageFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7360  type RootChainStorageFilterer struct {
  7361  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7362  }
  7363  
  7364  // RootChainStorageSession is an auto generated Go binding around an Ethereum contract,
  7365  // with pre-set call and transact options.
  7366  type RootChainStorageSession struct {
  7367  	Contract     *RootChainStorage // Generic contract binding to set the session for
  7368  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7369  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7370  }
  7371  
  7372  // RootChainStorageCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7373  // with pre-set call options.
  7374  type RootChainStorageCallerSession struct {
  7375  	Contract *RootChainStorageCaller // Generic contract caller binding to set the session for
  7376  	CallOpts bind.CallOpts           // Call options to use throughout this session
  7377  }
  7378  
  7379  // RootChainStorageTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7380  // with pre-set transact options.
  7381  type RootChainStorageTransactorSession struct {
  7382  	Contract     *RootChainStorageTransactor // Generic contract transactor binding to set the session for
  7383  	TransactOpts bind.TransactOpts           // Transaction auth options to use throughout this session
  7384  }
  7385  
  7386  // RootChainStorageRaw is an auto generated low-level Go binding around an Ethereum contract.
  7387  type RootChainStorageRaw struct {
  7388  	Contract *RootChainStorage // Generic contract binding to access the raw methods on
  7389  }
  7390  
  7391  // RootChainStorageCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7392  type RootChainStorageCallerRaw struct {
  7393  	Contract *RootChainStorageCaller // Generic read-only contract binding to access the raw methods on
  7394  }
  7395  
  7396  // RootChainStorageTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  7397  type RootChainStorageTransactorRaw struct {
  7398  	Contract *RootChainStorageTransactor // Generic write-only contract binding to access the raw methods on
  7399  }
  7400  
  7401  // NewRootChainStorage creates a new instance of RootChainStorage, bound to a specific deployed contract.
  7402  func NewRootChainStorage(address common.Address, backend bind.ContractBackend) (*RootChainStorage, error) {
  7403  	contract, err := bindRootChainStorage(address, backend, backend, backend)
  7404  	if err != nil {
  7405  		return nil, err
  7406  	}
  7407  	return &RootChainStorage{RootChainStorageCaller: RootChainStorageCaller{contract: contract}, RootChainStorageTransactor: RootChainStorageTransactor{contract: contract}, RootChainStorageFilterer: RootChainStorageFilterer{contract: contract}}, nil
  7408  }
  7409  
  7410  // NewRootChainStorageCaller creates a new read-only instance of RootChainStorage, bound to a specific deployed contract.
  7411  func NewRootChainStorageCaller(address common.Address, caller bind.ContractCaller) (*RootChainStorageCaller, error) {
  7412  	contract, err := bindRootChainStorage(address, caller, nil, nil)
  7413  	if err != nil {
  7414  		return nil, err
  7415  	}
  7416  	return &RootChainStorageCaller{contract: contract}, nil
  7417  }
  7418  
  7419  // NewRootChainStorageTransactor creates a new write-only instance of RootChainStorage, bound to a specific deployed contract.
  7420  func NewRootChainStorageTransactor(address common.Address, transactor bind.ContractTransactor) (*RootChainStorageTransactor, error) {
  7421  	contract, err := bindRootChainStorage(address, nil, transactor, nil)
  7422  	if err != nil {
  7423  		return nil, err
  7424  	}
  7425  	return &RootChainStorageTransactor{contract: contract}, nil
  7426  }
  7427  
  7428  // NewRootChainStorageFilterer creates a new log filterer instance of RootChainStorage, bound to a specific deployed contract.
  7429  func NewRootChainStorageFilterer(address common.Address, filterer bind.ContractFilterer) (*RootChainStorageFilterer, error) {
  7430  	contract, err := bindRootChainStorage(address, nil, nil, filterer)
  7431  	if err != nil {
  7432  		return nil, err
  7433  	}
  7434  	return &RootChainStorageFilterer{contract: contract}, nil
  7435  }
  7436  
  7437  // bindRootChainStorage binds a generic wrapper to an already deployed contract.
  7438  func bindRootChainStorage(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7439  	parsed, err := abi.JSON(strings.NewReader(RootChainStorageABI))
  7440  	if err != nil {
  7441  		return nil, err
  7442  	}
  7443  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7444  }
  7445  
  7446  // Call invokes the (constant) contract method with params as input values and
  7447  // sets the output to result. The result type might be a single field for simple
  7448  // returns, a slice of interfaces for anonymous returns and a struct for named
  7449  // returns.
  7450  func (_RootChainStorage *RootChainStorageRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7451  	return _RootChainStorage.Contract.RootChainStorageCaller.contract.Call(opts, result, method, params...)
  7452  }
  7453  
  7454  // Transfer initiates a plain transaction to move funds to the contract, calling
  7455  // its default method if one is available.
  7456  func (_RootChainStorage *RootChainStorageRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7457  	return _RootChainStorage.Contract.RootChainStorageTransactor.contract.Transfer(opts)
  7458  }
  7459  
  7460  // Transact invokes the (paid) contract method with params as input values.
  7461  func (_RootChainStorage *RootChainStorageRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7462  	return _RootChainStorage.Contract.RootChainStorageTransactor.contract.Transact(opts, method, params...)
  7463  }
  7464  
  7465  // Call invokes the (constant) contract method with params as input values and
  7466  // sets the output to result. The result type might be a single field for simple
  7467  // returns, a slice of interfaces for anonymous returns and a struct for named
  7468  // returns.
  7469  func (_RootChainStorage *RootChainStorageCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7470  	return _RootChainStorage.Contract.contract.Call(opts, result, method, params...)
  7471  }
  7472  
  7473  // Transfer initiates a plain transaction to move funds to the contract, calling
  7474  // its default method if one is available.
  7475  func (_RootChainStorage *RootChainStorageTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7476  	return _RootChainStorage.Contract.contract.Transfer(opts)
  7477  }
  7478  
  7479  // Transact invokes the (paid) contract method with params as input values.
  7480  func (_RootChainStorage *RootChainStorageTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7481  	return _RootChainStorage.Contract.contract.Transact(opts, method, params...)
  7482  }
  7483  
  7484  // COSTERO is a free data retrieval call binding the contract method 0xd691acd8.
  7485  //
  7486  // Solidity: function COST_ERO() constant returns(uint256)
  7487  func (_RootChainStorage *RootChainStorageCaller) COSTERO(opts *bind.CallOpts) (*big.Int, error) {
  7488  	var (
  7489  		ret0 = new(*big.Int)
  7490  	)
  7491  	out := ret0
  7492  	err := _RootChainStorage.contract.Call(opts, out, "COST_ERO")
  7493  	return *ret0, err
  7494  }
  7495  
  7496  // COSTERO is a free data retrieval call binding the contract method 0xd691acd8.
  7497  //
  7498  // Solidity: function COST_ERO() constant returns(uint256)
  7499  func (_RootChainStorage *RootChainStorageSession) COSTERO() (*big.Int, error) {
  7500  	return _RootChainStorage.Contract.COSTERO(&_RootChainStorage.CallOpts)
  7501  }
  7502  
  7503  // COSTERO is a free data retrieval call binding the contract method 0xd691acd8.
  7504  //
  7505  // Solidity: function COST_ERO() constant returns(uint256)
  7506  func (_RootChainStorage *RootChainStorageCallerSession) COSTERO() (*big.Int, error) {
  7507  	return _RootChainStorage.Contract.COSTERO(&_RootChainStorage.CallOpts)
  7508  }
  7509  
  7510  // COSTERU is a free data retrieval call binding the contract method 0x8b5172d0.
  7511  //
  7512  // Solidity: function COST_ERU() constant returns(uint256)
  7513  func (_RootChainStorage *RootChainStorageCaller) COSTERU(opts *bind.CallOpts) (*big.Int, error) {
  7514  	var (
  7515  		ret0 = new(*big.Int)
  7516  	)
  7517  	out := ret0
  7518  	err := _RootChainStorage.contract.Call(opts, out, "COST_ERU")
  7519  	return *ret0, err
  7520  }
  7521  
  7522  // COSTERU is a free data retrieval call binding the contract method 0x8b5172d0.
  7523  //
  7524  // Solidity: function COST_ERU() constant returns(uint256)
  7525  func (_RootChainStorage *RootChainStorageSession) COSTERU() (*big.Int, error) {
  7526  	return _RootChainStorage.Contract.COSTERU(&_RootChainStorage.CallOpts)
  7527  }
  7528  
  7529  // COSTERU is a free data retrieval call binding the contract method 0x8b5172d0.
  7530  //
  7531  // Solidity: function COST_ERU() constant returns(uint256)
  7532  func (_RootChainStorage *RootChainStorageCallerSession) COSTERU() (*big.Int, error) {
  7533  	return _RootChainStorage.Contract.COSTERU(&_RootChainStorage.CallOpts)
  7534  }
  7535  
  7536  // COSTNRB is a free data retrieval call binding the contract method 0x94be3aa5.
  7537  //
  7538  // Solidity: function COST_NRB() constant returns(uint256)
  7539  func (_RootChainStorage *RootChainStorageCaller) COSTNRB(opts *bind.CallOpts) (*big.Int, error) {
  7540  	var (
  7541  		ret0 = new(*big.Int)
  7542  	)
  7543  	out := ret0
  7544  	err := _RootChainStorage.contract.Call(opts, out, "COST_NRB")
  7545  	return *ret0, err
  7546  }
  7547  
  7548  // COSTNRB is a free data retrieval call binding the contract method 0x94be3aa5.
  7549  //
  7550  // Solidity: function COST_NRB() constant returns(uint256)
  7551  func (_RootChainStorage *RootChainStorageSession) COSTNRB() (*big.Int, error) {
  7552  	return _RootChainStorage.Contract.COSTNRB(&_RootChainStorage.CallOpts)
  7553  }
  7554  
  7555  // COSTNRB is a free data retrieval call binding the contract method 0x94be3aa5.
  7556  //
  7557  // Solidity: function COST_NRB() constant returns(uint256)
  7558  func (_RootChainStorage *RootChainStorageCallerSession) COSTNRB() (*big.Int, error) {
  7559  	return _RootChainStorage.Contract.COSTNRB(&_RootChainStorage.CallOpts)
  7560  }
  7561  
  7562  // COSTORB is a free data retrieval call binding the contract method 0xb2ae9ba8.
  7563  //
  7564  // Solidity: function COST_ORB() constant returns(uint256)
  7565  func (_RootChainStorage *RootChainStorageCaller) COSTORB(opts *bind.CallOpts) (*big.Int, error) {
  7566  	var (
  7567  		ret0 = new(*big.Int)
  7568  	)
  7569  	out := ret0
  7570  	err := _RootChainStorage.contract.Call(opts, out, "COST_ORB")
  7571  	return *ret0, err
  7572  }
  7573  
  7574  // COSTORB is a free data retrieval call binding the contract method 0xb2ae9ba8.
  7575  //
  7576  // Solidity: function COST_ORB() constant returns(uint256)
  7577  func (_RootChainStorage *RootChainStorageSession) COSTORB() (*big.Int, error) {
  7578  	return _RootChainStorage.Contract.COSTORB(&_RootChainStorage.CallOpts)
  7579  }
  7580  
  7581  // COSTORB is a free data retrieval call binding the contract method 0xb2ae9ba8.
  7582  //
  7583  // Solidity: function COST_ORB() constant returns(uint256)
  7584  func (_RootChainStorage *RootChainStorageCallerSession) COSTORB() (*big.Int, error) {
  7585  	return _RootChainStorage.Contract.COSTORB(&_RootChainStorage.CallOpts)
  7586  }
  7587  
  7588  // COSTURB is a free data retrieval call binding the contract method 0x192adc5b.
  7589  //
  7590  // Solidity: function COST_URB() constant returns(uint256)
  7591  func (_RootChainStorage *RootChainStorageCaller) COSTURB(opts *bind.CallOpts) (*big.Int, error) {
  7592  	var (
  7593  		ret0 = new(*big.Int)
  7594  	)
  7595  	out := ret0
  7596  	err := _RootChainStorage.contract.Call(opts, out, "COST_URB")
  7597  	return *ret0, err
  7598  }
  7599  
  7600  // COSTURB is a free data retrieval call binding the contract method 0x192adc5b.
  7601  //
  7602  // Solidity: function COST_URB() constant returns(uint256)
  7603  func (_RootChainStorage *RootChainStorageSession) COSTURB() (*big.Int, error) {
  7604  	return _RootChainStorage.Contract.COSTURB(&_RootChainStorage.CallOpts)
  7605  }
  7606  
  7607  // COSTURB is a free data retrieval call binding the contract method 0x192adc5b.
  7608  //
  7609  // Solidity: function COST_URB() constant returns(uint256)
  7610  func (_RootChainStorage *RootChainStorageCallerSession) COSTURB() (*big.Int, error) {
  7611  	return _RootChainStorage.Contract.COSTURB(&_RootChainStorage.CallOpts)
  7612  }
  7613  
  7614  // COSTURBPREPARE is a free data retrieval call binding the contract method 0x033cfbed.
  7615  //
  7616  // Solidity: function COST_URB_PREPARE() constant returns(uint256)
  7617  func (_RootChainStorage *RootChainStorageCaller) COSTURBPREPARE(opts *bind.CallOpts) (*big.Int, error) {
  7618  	var (
  7619  		ret0 = new(*big.Int)
  7620  	)
  7621  	out := ret0
  7622  	err := _RootChainStorage.contract.Call(opts, out, "COST_URB_PREPARE")
  7623  	return *ret0, err
  7624  }
  7625  
  7626  // COSTURBPREPARE is a free data retrieval call binding the contract method 0x033cfbed.
  7627  //
  7628  // Solidity: function COST_URB_PREPARE() constant returns(uint256)
  7629  func (_RootChainStorage *RootChainStorageSession) COSTURBPREPARE() (*big.Int, error) {
  7630  	return _RootChainStorage.Contract.COSTURBPREPARE(&_RootChainStorage.CallOpts)
  7631  }
  7632  
  7633  // COSTURBPREPARE is a free data retrieval call binding the contract method 0x033cfbed.
  7634  //
  7635  // Solidity: function COST_URB_PREPARE() constant returns(uint256)
  7636  func (_RootChainStorage *RootChainStorageCallerSession) COSTURBPREPARE() (*big.Int, error) {
  7637  	return _RootChainStorage.Contract.COSTURBPREPARE(&_RootChainStorage.CallOpts)
  7638  }
  7639  
  7640  // CPCOMPUTATION is a free data retrieval call binding the contract method 0x08c4fff0.
  7641  //
  7642  // Solidity: function CP_COMPUTATION() constant returns(uint256)
  7643  func (_RootChainStorage *RootChainStorageCaller) CPCOMPUTATION(opts *bind.CallOpts) (*big.Int, error) {
  7644  	var (
  7645  		ret0 = new(*big.Int)
  7646  	)
  7647  	out := ret0
  7648  	err := _RootChainStorage.contract.Call(opts, out, "CP_COMPUTATION")
  7649  	return *ret0, err
  7650  }
  7651  
  7652  // CPCOMPUTATION is a free data retrieval call binding the contract method 0x08c4fff0.
  7653  //
  7654  // Solidity: function CP_COMPUTATION() constant returns(uint256)
  7655  func (_RootChainStorage *RootChainStorageSession) CPCOMPUTATION() (*big.Int, error) {
  7656  	return _RootChainStorage.Contract.CPCOMPUTATION(&_RootChainStorage.CallOpts)
  7657  }
  7658  
  7659  // CPCOMPUTATION is a free data retrieval call binding the contract method 0x08c4fff0.
  7660  //
  7661  // Solidity: function CP_COMPUTATION() constant returns(uint256)
  7662  func (_RootChainStorage *RootChainStorageCallerSession) CPCOMPUTATION() (*big.Int, error) {
  7663  	return _RootChainStorage.Contract.CPCOMPUTATION(&_RootChainStorage.CallOpts)
  7664  }
  7665  
  7666  // CPEXIT is a free data retrieval call binding the contract method 0x8155717d.
  7667  //
  7668  // Solidity: function CP_EXIT() constant returns(uint256)
  7669  func (_RootChainStorage *RootChainStorageCaller) CPEXIT(opts *bind.CallOpts) (*big.Int, error) {
  7670  	var (
  7671  		ret0 = new(*big.Int)
  7672  	)
  7673  	out := ret0
  7674  	err := _RootChainStorage.contract.Call(opts, out, "CP_EXIT")
  7675  	return *ret0, err
  7676  }
  7677  
  7678  // CPEXIT is a free data retrieval call binding the contract method 0x8155717d.
  7679  //
  7680  // Solidity: function CP_EXIT() constant returns(uint256)
  7681  func (_RootChainStorage *RootChainStorageSession) CPEXIT() (*big.Int, error) {
  7682  	return _RootChainStorage.Contract.CPEXIT(&_RootChainStorage.CallOpts)
  7683  }
  7684  
  7685  // CPEXIT is a free data retrieval call binding the contract method 0x8155717d.
  7686  //
  7687  // Solidity: function CP_EXIT() constant returns(uint256)
  7688  func (_RootChainStorage *RootChainStorageCallerSession) CPEXIT() (*big.Int, error) {
  7689  	return _RootChainStorage.Contract.CPEXIT(&_RootChainStorage.CallOpts)
  7690  }
  7691  
  7692  // CPWITHHOLDING is a free data retrieval call binding the contract method 0xb17fa6e9.
  7693  //
  7694  // Solidity: function CP_WITHHOLDING() constant returns(uint256)
  7695  func (_RootChainStorage *RootChainStorageCaller) CPWITHHOLDING(opts *bind.CallOpts) (*big.Int, error) {
  7696  	var (
  7697  		ret0 = new(*big.Int)
  7698  	)
  7699  	out := ret0
  7700  	err := _RootChainStorage.contract.Call(opts, out, "CP_WITHHOLDING")
  7701  	return *ret0, err
  7702  }
  7703  
  7704  // CPWITHHOLDING is a free data retrieval call binding the contract method 0xb17fa6e9.
  7705  //
  7706  // Solidity: function CP_WITHHOLDING() constant returns(uint256)
  7707  func (_RootChainStorage *RootChainStorageSession) CPWITHHOLDING() (*big.Int, error) {
  7708  	return _RootChainStorage.Contract.CPWITHHOLDING(&_RootChainStorage.CallOpts)
  7709  }
  7710  
  7711  // CPWITHHOLDING is a free data retrieval call binding the contract method 0xb17fa6e9.
  7712  //
  7713  // Solidity: function CP_WITHHOLDING() constant returns(uint256)
  7714  func (_RootChainStorage *RootChainStorageCallerSession) CPWITHHOLDING() (*big.Int, error) {
  7715  	return _RootChainStorage.Contract.CPWITHHOLDING(&_RootChainStorage.CallOpts)
  7716  }
  7717  
  7718  // EROIdToFinalize is a free data retrieval call binding the contract method 0x2dc6bb7b.
  7719  //
  7720  // Solidity: function EROIdToFinalize() constant returns(uint256)
  7721  func (_RootChainStorage *RootChainStorageCaller) EROIdToFinalize(opts *bind.CallOpts) (*big.Int, error) {
  7722  	var (
  7723  		ret0 = new(*big.Int)
  7724  	)
  7725  	out := ret0
  7726  	err := _RootChainStorage.contract.Call(opts, out, "EROIdToFinalize")
  7727  	return *ret0, err
  7728  }
  7729  
  7730  // EROIdToFinalize is a free data retrieval call binding the contract method 0x2dc6bb7b.
  7731  //
  7732  // Solidity: function EROIdToFinalize() constant returns(uint256)
  7733  func (_RootChainStorage *RootChainStorageSession) EROIdToFinalize() (*big.Int, error) {
  7734  	return _RootChainStorage.Contract.EROIdToFinalize(&_RootChainStorage.CallOpts)
  7735  }
  7736  
  7737  // EROIdToFinalize is a free data retrieval call binding the contract method 0x2dc6bb7b.
  7738  //
  7739  // Solidity: function EROIdToFinalize() constant returns(uint256)
  7740  func (_RootChainStorage *RootChainStorageCallerSession) EROIdToFinalize() (*big.Int, error) {
  7741  	return _RootChainStorage.Contract.EROIdToFinalize(&_RootChainStorage.CallOpts)
  7742  }
  7743  
  7744  // EROs is a free data retrieval call binding the contract method 0xb443f3cc.
  7745  //
  7746  // 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)
  7747  func (_RootChainStorage *RootChainStorageCaller) EROs(opts *bind.CallOpts, arg0 *big.Int) (struct {
  7748  	Timestamp  uint64
  7749  	IsExit     bool
  7750  	IsTransfer bool
  7751  	Finalized  bool
  7752  	Challenged bool
  7753  	Value      *big.Int
  7754  	Requestor  common.Address
  7755  	To         common.Address
  7756  	TrieKey    [32]byte
  7757  	Hash       [32]byte
  7758  	TrieValue  []byte
  7759  }, error) {
  7760  	ret := new(struct {
  7761  		Timestamp  uint64
  7762  		IsExit     bool
  7763  		IsTransfer bool
  7764  		Finalized  bool
  7765  		Challenged bool
  7766  		Value      *big.Int
  7767  		Requestor  common.Address
  7768  		To         common.Address
  7769  		TrieKey    [32]byte
  7770  		Hash       [32]byte
  7771  		TrieValue  []byte
  7772  	})
  7773  	out := ret
  7774  	err := _RootChainStorage.contract.Call(opts, out, "EROs", arg0)
  7775  	return *ret, err
  7776  }
  7777  
  7778  // EROs is a free data retrieval call binding the contract method 0xb443f3cc.
  7779  //
  7780  // 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)
  7781  func (_RootChainStorage *RootChainStorageSession) EROs(arg0 *big.Int) (struct {
  7782  	Timestamp  uint64
  7783  	IsExit     bool
  7784  	IsTransfer bool
  7785  	Finalized  bool
  7786  	Challenged bool
  7787  	Value      *big.Int
  7788  	Requestor  common.Address
  7789  	To         common.Address
  7790  	TrieKey    [32]byte
  7791  	Hash       [32]byte
  7792  	TrieValue  []byte
  7793  }, error) {
  7794  	return _RootChainStorage.Contract.EROs(&_RootChainStorage.CallOpts, arg0)
  7795  }
  7796  
  7797  // EROs is a free data retrieval call binding the contract method 0xb443f3cc.
  7798  //
  7799  // 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)
  7800  func (_RootChainStorage *RootChainStorageCallerSession) EROs(arg0 *big.Int) (struct {
  7801  	Timestamp  uint64
  7802  	IsExit     bool
  7803  	IsTransfer bool
  7804  	Finalized  bool
  7805  	Challenged bool
  7806  	Value      *big.Int
  7807  	Requestor  common.Address
  7808  	To         common.Address
  7809  	TrieKey    [32]byte
  7810  	Hash       [32]byte
  7811  	TrieValue  []byte
  7812  }, error) {
  7813  	return _RootChainStorage.Contract.EROs(&_RootChainStorage.CallOpts, arg0)
  7814  }
  7815  
  7816  // ERUIdToFinalize is a free data retrieval call binding the contract method 0xc54626cc.
  7817  //
  7818  // Solidity: function ERUIdToFinalize() constant returns(uint256)
  7819  func (_RootChainStorage *RootChainStorageCaller) ERUIdToFinalize(opts *bind.CallOpts) (*big.Int, error) {
  7820  	var (
  7821  		ret0 = new(*big.Int)
  7822  	)
  7823  	out := ret0
  7824  	err := _RootChainStorage.contract.Call(opts, out, "ERUIdToFinalize")
  7825  	return *ret0, err
  7826  }
  7827  
  7828  // ERUIdToFinalize is a free data retrieval call binding the contract method 0xc54626cc.
  7829  //
  7830  // Solidity: function ERUIdToFinalize() constant returns(uint256)
  7831  func (_RootChainStorage *RootChainStorageSession) ERUIdToFinalize() (*big.Int, error) {
  7832  	return _RootChainStorage.Contract.ERUIdToFinalize(&_RootChainStorage.CallOpts)
  7833  }
  7834  
  7835  // ERUIdToFinalize is a free data retrieval call binding the contract method 0xc54626cc.
  7836  //
  7837  // Solidity: function ERUIdToFinalize() constant returns(uint256)
  7838  func (_RootChainStorage *RootChainStorageCallerSession) ERUIdToFinalize() (*big.Int, error) {
  7839  	return _RootChainStorage.Contract.ERUIdToFinalize(&_RootChainStorage.CallOpts)
  7840  }
  7841  
  7842  // ERUs is a free data retrieval call binding the contract method 0xf4f31de4.
  7843  //
  7844  // 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)
  7845  func (_RootChainStorage *RootChainStorageCaller) ERUs(opts *bind.CallOpts, arg0 *big.Int) (struct {
  7846  	Timestamp  uint64
  7847  	IsExit     bool
  7848  	IsTransfer bool
  7849  	Finalized  bool
  7850  	Challenged bool
  7851  	Value      *big.Int
  7852  	Requestor  common.Address
  7853  	To         common.Address
  7854  	TrieKey    [32]byte
  7855  	Hash       [32]byte
  7856  	TrieValue  []byte
  7857  }, error) {
  7858  	ret := new(struct {
  7859  		Timestamp  uint64
  7860  		IsExit     bool
  7861  		IsTransfer bool
  7862  		Finalized  bool
  7863  		Challenged bool
  7864  		Value      *big.Int
  7865  		Requestor  common.Address
  7866  		To         common.Address
  7867  		TrieKey    [32]byte
  7868  		Hash       [32]byte
  7869  		TrieValue  []byte
  7870  	})
  7871  	out := ret
  7872  	err := _RootChainStorage.contract.Call(opts, out, "ERUs", arg0)
  7873  	return *ret, err
  7874  }
  7875  
  7876  // ERUs is a free data retrieval call binding the contract method 0xf4f31de4.
  7877  //
  7878  // 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)
  7879  func (_RootChainStorage *RootChainStorageSession) ERUs(arg0 *big.Int) (struct {
  7880  	Timestamp  uint64
  7881  	IsExit     bool
  7882  	IsTransfer bool
  7883  	Finalized  bool
  7884  	Challenged bool
  7885  	Value      *big.Int
  7886  	Requestor  common.Address
  7887  	To         common.Address
  7888  	TrieKey    [32]byte
  7889  	Hash       [32]byte
  7890  	TrieValue  []byte
  7891  }, error) {
  7892  	return _RootChainStorage.Contract.ERUs(&_RootChainStorage.CallOpts, arg0)
  7893  }
  7894  
  7895  // ERUs is a free data retrieval call binding the contract method 0xf4f31de4.
  7896  //
  7897  // 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)
  7898  func (_RootChainStorage *RootChainStorageCallerSession) ERUs(arg0 *big.Int) (struct {
  7899  	Timestamp  uint64
  7900  	IsExit     bool
  7901  	IsTransfer bool
  7902  	Finalized  bool
  7903  	Challenged bool
  7904  	Value      *big.Int
  7905  	Requestor  common.Address
  7906  	To         common.Address
  7907  	TrieKey    [32]byte
  7908  	Hash       [32]byte
  7909  	TrieValue  []byte
  7910  }, error) {
  7911  	return _RootChainStorage.Contract.ERUs(&_RootChainStorage.CallOpts, arg0)
  7912  }
  7913  
  7914  // NRELength is a free data retrieval call binding the contract method 0xab96da2d.
  7915  //
  7916  // Solidity: function NRELength() constant returns(uint256)
  7917  func (_RootChainStorage *RootChainStorageCaller) NRELength(opts *bind.CallOpts) (*big.Int, error) {
  7918  	var (
  7919  		ret0 = new(*big.Int)
  7920  	)
  7921  	out := ret0
  7922  	err := _RootChainStorage.contract.Call(opts, out, "NRELength")
  7923  	return *ret0, err
  7924  }
  7925  
  7926  // NRELength is a free data retrieval call binding the contract method 0xab96da2d.
  7927  //
  7928  // Solidity: function NRELength() constant returns(uint256)
  7929  func (_RootChainStorage *RootChainStorageSession) NRELength() (*big.Int, error) {
  7930  	return _RootChainStorage.Contract.NRELength(&_RootChainStorage.CallOpts)
  7931  }
  7932  
  7933  // NRELength is a free data retrieval call binding the contract method 0xab96da2d.
  7934  //
  7935  // Solidity: function NRELength() constant returns(uint256)
  7936  func (_RootChainStorage *RootChainStorageCallerSession) NRELength() (*big.Int, error) {
  7937  	return _RootChainStorage.Contract.NRELength(&_RootChainStorage.CallOpts)
  7938  }
  7939  
  7940  // NULLADDRESS is a free data retrieval call binding the contract method 0xde0ce17d.
  7941  //
  7942  // Solidity: function NULL_ADDRESS() constant returns(address)
  7943  func (_RootChainStorage *RootChainStorageCaller) NULLADDRESS(opts *bind.CallOpts) (common.Address, error) {
  7944  	var (
  7945  		ret0 = new(common.Address)
  7946  	)
  7947  	out := ret0
  7948  	err := _RootChainStorage.contract.Call(opts, out, "NULL_ADDRESS")
  7949  	return *ret0, err
  7950  }
  7951  
  7952  // NULLADDRESS is a free data retrieval call binding the contract method 0xde0ce17d.
  7953  //
  7954  // Solidity: function NULL_ADDRESS() constant returns(address)
  7955  func (_RootChainStorage *RootChainStorageSession) NULLADDRESS() (common.Address, error) {
  7956  	return _RootChainStorage.Contract.NULLADDRESS(&_RootChainStorage.CallOpts)
  7957  }
  7958  
  7959  // NULLADDRESS is a free data retrieval call binding the contract method 0xde0ce17d.
  7960  //
  7961  // Solidity: function NULL_ADDRESS() constant returns(address)
  7962  func (_RootChainStorage *RootChainStorageCallerSession) NULLADDRESS() (common.Address, error) {
  7963  	return _RootChainStorage.Contract.NULLADDRESS(&_RootChainStorage.CallOpts)
  7964  }
  7965  
  7966  // ORBs is a free data retrieval call binding the contract method 0xea7f22a8.
  7967  //
  7968  // Solidity: function ORBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  7969  func (_RootChainStorage *RootChainStorageCaller) ORBs(opts *bind.CallOpts, arg0 *big.Int) (struct {
  7970  	Submitted    bool
  7971  	NumEnter     uint64
  7972  	EpochNumber  uint64
  7973  	RequestStart uint64
  7974  	RequestEnd   uint64
  7975  	Trie         common.Address
  7976  }, error) {
  7977  	ret := new(struct {
  7978  		Submitted    bool
  7979  		NumEnter     uint64
  7980  		EpochNumber  uint64
  7981  		RequestStart uint64
  7982  		RequestEnd   uint64
  7983  		Trie         common.Address
  7984  	})
  7985  	out := ret
  7986  	err := _RootChainStorage.contract.Call(opts, out, "ORBs", arg0)
  7987  	return *ret, err
  7988  }
  7989  
  7990  // ORBs is a free data retrieval call binding the contract method 0xea7f22a8.
  7991  //
  7992  // Solidity: function ORBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  7993  func (_RootChainStorage *RootChainStorageSession) ORBs(arg0 *big.Int) (struct {
  7994  	Submitted    bool
  7995  	NumEnter     uint64
  7996  	EpochNumber  uint64
  7997  	RequestStart uint64
  7998  	RequestEnd   uint64
  7999  	Trie         common.Address
  8000  }, error) {
  8001  	return _RootChainStorage.Contract.ORBs(&_RootChainStorage.CallOpts, arg0)
  8002  }
  8003  
  8004  // ORBs is a free data retrieval call binding the contract method 0xea7f22a8.
  8005  //
  8006  // Solidity: function ORBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  8007  func (_RootChainStorage *RootChainStorageCallerSession) ORBs(arg0 *big.Int) (struct {
  8008  	Submitted    bool
  8009  	NumEnter     uint64
  8010  	EpochNumber  uint64
  8011  	RequestStart uint64
  8012  	RequestEnd   uint64
  8013  	Trie         common.Address
  8014  }, error) {
  8015  	return _RootChainStorage.Contract.ORBs(&_RootChainStorage.CallOpts, arg0)
  8016  }
  8017  
  8018  // PREPARETIMEOUT is a free data retrieval call binding the contract method 0xc2bc88fa.
  8019  //
  8020  // Solidity: function PREPARE_TIMEOUT() constant returns(uint256)
  8021  func (_RootChainStorage *RootChainStorageCaller) PREPARETIMEOUT(opts *bind.CallOpts) (*big.Int, error) {
  8022  	var (
  8023  		ret0 = new(*big.Int)
  8024  	)
  8025  	out := ret0
  8026  	err := _RootChainStorage.contract.Call(opts, out, "PREPARE_TIMEOUT")
  8027  	return *ret0, err
  8028  }
  8029  
  8030  // PREPARETIMEOUT is a free data retrieval call binding the contract method 0xc2bc88fa.
  8031  //
  8032  // Solidity: function PREPARE_TIMEOUT() constant returns(uint256)
  8033  func (_RootChainStorage *RootChainStorageSession) PREPARETIMEOUT() (*big.Int, error) {
  8034  	return _RootChainStorage.Contract.PREPARETIMEOUT(&_RootChainStorage.CallOpts)
  8035  }
  8036  
  8037  // PREPARETIMEOUT is a free data retrieval call binding the contract method 0xc2bc88fa.
  8038  //
  8039  // Solidity: function PREPARE_TIMEOUT() constant returns(uint256)
  8040  func (_RootChainStorage *RootChainStorageCallerSession) PREPARETIMEOUT() (*big.Int, error) {
  8041  	return _RootChainStorage.Contract.PREPARETIMEOUT(&_RootChainStorage.CallOpts)
  8042  }
  8043  
  8044  // REQUESTGAS is a free data retrieval call binding the contract method 0x8eb288ca.
  8045  //
  8046  // Solidity: function REQUEST_GAS() constant returns(uint256)
  8047  func (_RootChainStorage *RootChainStorageCaller) REQUESTGAS(opts *bind.CallOpts) (*big.Int, error) {
  8048  	var (
  8049  		ret0 = new(*big.Int)
  8050  	)
  8051  	out := ret0
  8052  	err := _RootChainStorage.contract.Call(opts, out, "REQUEST_GAS")
  8053  	return *ret0, err
  8054  }
  8055  
  8056  // REQUESTGAS is a free data retrieval call binding the contract method 0x8eb288ca.
  8057  //
  8058  // Solidity: function REQUEST_GAS() constant returns(uint256)
  8059  func (_RootChainStorage *RootChainStorageSession) REQUESTGAS() (*big.Int, error) {
  8060  	return _RootChainStorage.Contract.REQUESTGAS(&_RootChainStorage.CallOpts)
  8061  }
  8062  
  8063  // REQUESTGAS is a free data retrieval call binding the contract method 0x8eb288ca.
  8064  //
  8065  // Solidity: function REQUEST_GAS() constant returns(uint256)
  8066  func (_RootChainStorage *RootChainStorageCallerSession) REQUESTGAS() (*big.Int, error) {
  8067  	return _RootChainStorage.Contract.REQUESTGAS(&_RootChainStorage.CallOpts)
  8068  }
  8069  
  8070  // URBs is a free data retrieval call binding the contract method 0xc0e86064.
  8071  //
  8072  // Solidity: function URBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  8073  func (_RootChainStorage *RootChainStorageCaller) URBs(opts *bind.CallOpts, arg0 *big.Int) (struct {
  8074  	Submitted    bool
  8075  	NumEnter     uint64
  8076  	EpochNumber  uint64
  8077  	RequestStart uint64
  8078  	RequestEnd   uint64
  8079  	Trie         common.Address
  8080  }, error) {
  8081  	ret := new(struct {
  8082  		Submitted    bool
  8083  		NumEnter     uint64
  8084  		EpochNumber  uint64
  8085  		RequestStart uint64
  8086  		RequestEnd   uint64
  8087  		Trie         common.Address
  8088  	})
  8089  	out := ret
  8090  	err := _RootChainStorage.contract.Call(opts, out, "URBs", arg0)
  8091  	return *ret, err
  8092  }
  8093  
  8094  // URBs is a free data retrieval call binding the contract method 0xc0e86064.
  8095  //
  8096  // Solidity: function URBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  8097  func (_RootChainStorage *RootChainStorageSession) URBs(arg0 *big.Int) (struct {
  8098  	Submitted    bool
  8099  	NumEnter     uint64
  8100  	EpochNumber  uint64
  8101  	RequestStart uint64
  8102  	RequestEnd   uint64
  8103  	Trie         common.Address
  8104  }, error) {
  8105  	return _RootChainStorage.Contract.URBs(&_RootChainStorage.CallOpts, arg0)
  8106  }
  8107  
  8108  // URBs is a free data retrieval call binding the contract method 0xc0e86064.
  8109  //
  8110  // Solidity: function URBs(uint256 ) constant returns(bool submitted, uint64 numEnter, uint64 epochNumber, uint64 requestStart, uint64 requestEnd, address trie)
  8111  func (_RootChainStorage *RootChainStorageCallerSession) URBs(arg0 *big.Int) (struct {
  8112  	Submitted    bool
  8113  	NumEnter     uint64
  8114  	EpochNumber  uint64
  8115  	RequestStart uint64
  8116  	RequestEnd   uint64
  8117  	Trie         common.Address
  8118  }, error) {
  8119  	return _RootChainStorage.Contract.URBs(&_RootChainStorage.CallOpts, arg0)
  8120  }
  8121  
  8122  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
  8123  //
  8124  // Solidity: function currentFork() constant returns(uint256)
  8125  func (_RootChainStorage *RootChainStorageCaller) CurrentFork(opts *bind.CallOpts) (*big.Int, error) {
  8126  	var (
  8127  		ret0 = new(*big.Int)
  8128  	)
  8129  	out := ret0
  8130  	err := _RootChainStorage.contract.Call(opts, out, "currentFork")
  8131  	return *ret0, err
  8132  }
  8133  
  8134  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
  8135  //
  8136  // Solidity: function currentFork() constant returns(uint256)
  8137  func (_RootChainStorage *RootChainStorageSession) CurrentFork() (*big.Int, error) {
  8138  	return _RootChainStorage.Contract.CurrentFork(&_RootChainStorage.CallOpts)
  8139  }
  8140  
  8141  // CurrentFork is a free data retrieval call binding the contract method 0x183d2d1c.
  8142  //
  8143  // Solidity: function currentFork() constant returns(uint256)
  8144  func (_RootChainStorage *RootChainStorageCallerSession) CurrentFork() (*big.Int, error) {
  8145  	return _RootChainStorage.Contract.CurrentFork(&_RootChainStorage.CallOpts)
  8146  }
  8147  
  8148  // Development is a free data retrieval call binding the contract method 0x7b929c27.
  8149  //
  8150  // Solidity: function development() constant returns(bool)
  8151  func (_RootChainStorage *RootChainStorageCaller) Development(opts *bind.CallOpts) (bool, error) {
  8152  	var (
  8153  		ret0 = new(bool)
  8154  	)
  8155  	out := ret0
  8156  	err := _RootChainStorage.contract.Call(opts, out, "development")
  8157  	return *ret0, err
  8158  }
  8159  
  8160  // Development is a free data retrieval call binding the contract method 0x7b929c27.
  8161  //
  8162  // Solidity: function development() constant returns(bool)
  8163  func (_RootChainStorage *RootChainStorageSession) Development() (bool, error) {
  8164  	return _RootChainStorage.Contract.Development(&_RootChainStorage.CallOpts)
  8165  }
  8166  
  8167  // Development is a free data retrieval call binding the contract method 0x7b929c27.
  8168  //
  8169  // Solidity: function development() constant returns(bool)
  8170  func (_RootChainStorage *RootChainStorageCallerSession) Development() (bool, error) {
  8171  	return _RootChainStorage.Contract.Development(&_RootChainStorage.CallOpts)
  8172  }
  8173  
  8174  // EpochHandler is a free data retrieval call binding the contract method 0xe7b88b80.
  8175  //
  8176  // Solidity: function epochHandler() constant returns(address)
  8177  func (_RootChainStorage *RootChainStorageCaller) EpochHandler(opts *bind.CallOpts) (common.Address, error) {
  8178  	var (
  8179  		ret0 = new(common.Address)
  8180  	)
  8181  	out := ret0
  8182  	err := _RootChainStorage.contract.Call(opts, out, "epochHandler")
  8183  	return *ret0, err
  8184  }
  8185  
  8186  // EpochHandler is a free data retrieval call binding the contract method 0xe7b88b80.
  8187  //
  8188  // Solidity: function epochHandler() constant returns(address)
  8189  func (_RootChainStorage *RootChainStorageSession) EpochHandler() (common.Address, error) {
  8190  	return _RootChainStorage.Contract.EpochHandler(&_RootChainStorage.CallOpts)
  8191  }
  8192  
  8193  // EpochHandler is a free data retrieval call binding the contract method 0xe7b88b80.
  8194  //
  8195  // Solidity: function epochHandler() constant returns(address)
  8196  func (_RootChainStorage *RootChainStorageCallerSession) EpochHandler() (common.Address, error) {
  8197  	return _RootChainStorage.Contract.EpochHandler(&_RootChainStorage.CallOpts)
  8198  }
  8199  
  8200  // EtherToken is a free data retrieval call binding the contract method 0xb8066bcb.
  8201  //
  8202  // Solidity: function etherToken() constant returns(address)
  8203  func (_RootChainStorage *RootChainStorageCaller) EtherToken(opts *bind.CallOpts) (common.Address, error) {
  8204  	var (
  8205  		ret0 = new(common.Address)
  8206  	)
  8207  	out := ret0
  8208  	err := _RootChainStorage.contract.Call(opts, out, "etherToken")
  8209  	return *ret0, err
  8210  }
  8211  
  8212  // EtherToken is a free data retrieval call binding the contract method 0xb8066bcb.
  8213  //
  8214  // Solidity: function etherToken() constant returns(address)
  8215  func (_RootChainStorage *RootChainStorageSession) EtherToken() (common.Address, error) {
  8216  	return _RootChainStorage.Contract.EtherToken(&_RootChainStorage.CallOpts)
  8217  }
  8218  
  8219  // EtherToken is a free data retrieval call binding the contract method 0xb8066bcb.
  8220  //
  8221  // Solidity: function etherToken() constant returns(address)
  8222  func (_RootChainStorage *RootChainStorageCallerSession) EtherToken() (common.Address, error) {
  8223  	return _RootChainStorage.Contract.EtherToken(&_RootChainStorage.CallOpts)
  8224  }
  8225  
  8226  // FirstFilledORENumber is a free data retrieval call binding the contract method 0x72ecb9a8.
  8227  //
  8228  // Solidity: function firstFilledORENumber(uint256 ) constant returns(uint256)
  8229  func (_RootChainStorage *RootChainStorageCaller) FirstFilledORENumber(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
  8230  	var (
  8231  		ret0 = new(*big.Int)
  8232  	)
  8233  	out := ret0
  8234  	err := _RootChainStorage.contract.Call(opts, out, "firstFilledORENumber", arg0)
  8235  	return *ret0, err
  8236  }
  8237  
  8238  // FirstFilledORENumber is a free data retrieval call binding the contract method 0x72ecb9a8.
  8239  //
  8240  // Solidity: function firstFilledORENumber(uint256 ) constant returns(uint256)
  8241  func (_RootChainStorage *RootChainStorageSession) FirstFilledORENumber(arg0 *big.Int) (*big.Int, error) {
  8242  	return _RootChainStorage.Contract.FirstFilledORENumber(&_RootChainStorage.CallOpts, arg0)
  8243  }
  8244  
  8245  // FirstFilledORENumber is a free data retrieval call binding the contract method 0x72ecb9a8.
  8246  //
  8247  // Solidity: function firstFilledORENumber(uint256 ) constant returns(uint256)
  8248  func (_RootChainStorage *RootChainStorageCallerSession) FirstFilledORENumber(arg0 *big.Int) (*big.Int, error) {
  8249  	return _RootChainStorage.Contract.FirstFilledORENumber(&_RootChainStorage.CallOpts, arg0)
  8250  }
  8251  
  8252  // FirstNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xca6f6380.
  8253  //
  8254  // Solidity: function firstNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  8255  func (_RootChainStorage *RootChainStorageCaller) FirstNonEmptyRequestEpoch(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
  8256  	var (
  8257  		ret0 = new(*big.Int)
  8258  	)
  8259  	out := ret0
  8260  	err := _RootChainStorage.contract.Call(opts, out, "firstNonEmptyRequestEpoch", arg0)
  8261  	return *ret0, err
  8262  }
  8263  
  8264  // FirstNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xca6f6380.
  8265  //
  8266  // Solidity: function firstNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  8267  func (_RootChainStorage *RootChainStorageSession) FirstNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
  8268  	return _RootChainStorage.Contract.FirstNonEmptyRequestEpoch(&_RootChainStorage.CallOpts, arg0)
  8269  }
  8270  
  8271  // FirstNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xca6f6380.
  8272  //
  8273  // Solidity: function firstNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  8274  func (_RootChainStorage *RootChainStorageCallerSession) FirstNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
  8275  	return _RootChainStorage.Contract.FirstNonEmptyRequestEpoch(&_RootChainStorage.CallOpts, arg0)
  8276  }
  8277  
  8278  // Forks is a free data retrieval call binding the contract method 0x4ba3a126.
  8279  //
  8280  // 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)
  8281  func (_RootChainStorage *RootChainStorageCaller) Forks(opts *bind.CallOpts, arg0 *big.Int) (struct {
  8282  	ForkedBlock        uint64
  8283  	FirstEpoch         uint64
  8284  	LastEpoch          uint64
  8285  	FirstBlock         uint64
  8286  	LastBlock          uint64
  8287  	LastFinalizedEpoch uint64
  8288  	LastFinalizedBlock uint64
  8289  	Timestamp          uint64
  8290  	FirstEnterEpoch    uint64
  8291  	LastEnterEpoch     uint64
  8292  	NextBlockToRebase  uint64
  8293  	Rebased            bool
  8294  }, error) {
  8295  	ret := new(struct {
  8296  		ForkedBlock        uint64
  8297  		FirstEpoch         uint64
  8298  		LastEpoch          uint64
  8299  		FirstBlock         uint64
  8300  		LastBlock          uint64
  8301  		LastFinalizedEpoch uint64
  8302  		LastFinalizedBlock uint64
  8303  		Timestamp          uint64
  8304  		FirstEnterEpoch    uint64
  8305  		LastEnterEpoch     uint64
  8306  		NextBlockToRebase  uint64
  8307  		Rebased            bool
  8308  	})
  8309  	out := ret
  8310  	err := _RootChainStorage.contract.Call(opts, out, "forks", arg0)
  8311  	return *ret, err
  8312  }
  8313  
  8314  // Forks is a free data retrieval call binding the contract method 0x4ba3a126.
  8315  //
  8316  // 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)
  8317  func (_RootChainStorage *RootChainStorageSession) Forks(arg0 *big.Int) (struct {
  8318  	ForkedBlock        uint64
  8319  	FirstEpoch         uint64
  8320  	LastEpoch          uint64
  8321  	FirstBlock         uint64
  8322  	LastBlock          uint64
  8323  	LastFinalizedEpoch uint64
  8324  	LastFinalizedBlock uint64
  8325  	Timestamp          uint64
  8326  	FirstEnterEpoch    uint64
  8327  	LastEnterEpoch     uint64
  8328  	NextBlockToRebase  uint64
  8329  	Rebased            bool
  8330  }, error) {
  8331  	return _RootChainStorage.Contract.Forks(&_RootChainStorage.CallOpts, arg0)
  8332  }
  8333  
  8334  // Forks is a free data retrieval call binding the contract method 0x4ba3a126.
  8335  //
  8336  // 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)
  8337  func (_RootChainStorage *RootChainStorageCallerSession) Forks(arg0 *big.Int) (struct {
  8338  	ForkedBlock        uint64
  8339  	FirstEpoch         uint64
  8340  	LastEpoch          uint64
  8341  	FirstBlock         uint64
  8342  	LastBlock          uint64
  8343  	LastFinalizedEpoch uint64
  8344  	LastFinalizedBlock uint64
  8345  	Timestamp          uint64
  8346  	FirstEnterEpoch    uint64
  8347  	LastEnterEpoch     uint64
  8348  	NextBlockToRebase  uint64
  8349  	Rebased            bool
  8350  }, error) {
  8351  	return _RootChainStorage.Contract.Forks(&_RootChainStorage.CallOpts, arg0)
  8352  }
  8353  
  8354  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
  8355  //
  8356  // Solidity: function isRootChain() constant returns(bool)
  8357  func (_RootChainStorage *RootChainStorageCaller) IsRootChain(opts *bind.CallOpts) (bool, error) {
  8358  	var (
  8359  		ret0 = new(bool)
  8360  	)
  8361  	out := ret0
  8362  	err := _RootChainStorage.contract.Call(opts, out, "isRootChain")
  8363  	return *ret0, err
  8364  }
  8365  
  8366  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
  8367  //
  8368  // Solidity: function isRootChain() constant returns(bool)
  8369  func (_RootChainStorage *RootChainStorageSession) IsRootChain() (bool, error) {
  8370  	return _RootChainStorage.Contract.IsRootChain(&_RootChainStorage.CallOpts)
  8371  }
  8372  
  8373  // IsRootChain is a free data retrieval call binding the contract method 0x420bb4b8.
  8374  //
  8375  // Solidity: function isRootChain() constant returns(bool)
  8376  func (_RootChainStorage *RootChainStorageCallerSession) IsRootChain() (bool, error) {
  8377  	return _RootChainStorage.Contract.IsRootChain(&_RootChainStorage.CallOpts)
  8378  }
  8379  
  8380  // LastAppliedBlockNumber is a free data retrieval call binding the contract method 0xfb788a27.
  8381  //
  8382  // Solidity: function lastAppliedBlockNumber() constant returns(uint256)
  8383  func (_RootChainStorage *RootChainStorageCaller) LastAppliedBlockNumber(opts *bind.CallOpts) (*big.Int, error) {
  8384  	var (
  8385  		ret0 = new(*big.Int)
  8386  	)
  8387  	out := ret0
  8388  	err := _RootChainStorage.contract.Call(opts, out, "lastAppliedBlockNumber")
  8389  	return *ret0, err
  8390  }
  8391  
  8392  // LastAppliedBlockNumber is a free data retrieval call binding the contract method 0xfb788a27.
  8393  //
  8394  // Solidity: function lastAppliedBlockNumber() constant returns(uint256)
  8395  func (_RootChainStorage *RootChainStorageSession) LastAppliedBlockNumber() (*big.Int, error) {
  8396  	return _RootChainStorage.Contract.LastAppliedBlockNumber(&_RootChainStorage.CallOpts)
  8397  }
  8398  
  8399  // LastAppliedBlockNumber is a free data retrieval call binding the contract method 0xfb788a27.
  8400  //
  8401  // Solidity: function lastAppliedBlockNumber() constant returns(uint256)
  8402  func (_RootChainStorage *RootChainStorageCallerSession) LastAppliedBlockNumber() (*big.Int, error) {
  8403  	return _RootChainStorage.Contract.LastAppliedBlockNumber(&_RootChainStorage.CallOpts)
  8404  }
  8405  
  8406  // LastAppliedEpochNumber is a free data retrieval call binding the contract method 0xc8ad329f.
  8407  //
  8408  // Solidity: function lastAppliedEpochNumber() constant returns(uint256)
  8409  func (_RootChainStorage *RootChainStorageCaller) LastAppliedEpochNumber(opts *bind.CallOpts) (*big.Int, error) {
  8410  	var (
  8411  		ret0 = new(*big.Int)
  8412  	)
  8413  	out := ret0
  8414  	err := _RootChainStorage.contract.Call(opts, out, "lastAppliedEpochNumber")
  8415  	return *ret0, err
  8416  }
  8417  
  8418  // LastAppliedEpochNumber is a free data retrieval call binding the contract method 0xc8ad329f.
  8419  //
  8420  // Solidity: function lastAppliedEpochNumber() constant returns(uint256)
  8421  func (_RootChainStorage *RootChainStorageSession) LastAppliedEpochNumber() (*big.Int, error) {
  8422  	return _RootChainStorage.Contract.LastAppliedEpochNumber(&_RootChainStorage.CallOpts)
  8423  }
  8424  
  8425  // LastAppliedEpochNumber is a free data retrieval call binding the contract method 0xc8ad329f.
  8426  //
  8427  // Solidity: function lastAppliedEpochNumber() constant returns(uint256)
  8428  func (_RootChainStorage *RootChainStorageCallerSession) LastAppliedEpochNumber() (*big.Int, error) {
  8429  	return _RootChainStorage.Contract.LastAppliedEpochNumber(&_RootChainStorage.CallOpts)
  8430  }
  8431  
  8432  // LastAppliedForkNumber is a free data retrieval call binding the contract method 0x164bc2ae.
  8433  //
  8434  // Solidity: function lastAppliedForkNumber() constant returns(uint256)
  8435  func (_RootChainStorage *RootChainStorageCaller) LastAppliedForkNumber(opts *bind.CallOpts) (*big.Int, error) {
  8436  	var (
  8437  		ret0 = new(*big.Int)
  8438  	)
  8439  	out := ret0
  8440  	err := _RootChainStorage.contract.Call(opts, out, "lastAppliedForkNumber")
  8441  	return *ret0, err
  8442  }
  8443  
  8444  // LastAppliedForkNumber is a free data retrieval call binding the contract method 0x164bc2ae.
  8445  //
  8446  // Solidity: function lastAppliedForkNumber() constant returns(uint256)
  8447  func (_RootChainStorage *RootChainStorageSession) LastAppliedForkNumber() (*big.Int, error) {
  8448  	return _RootChainStorage.Contract.LastAppliedForkNumber(&_RootChainStorage.CallOpts)
  8449  }
  8450  
  8451  // LastAppliedForkNumber is a free data retrieval call binding the contract method 0x164bc2ae.
  8452  //
  8453  // Solidity: function lastAppliedForkNumber() constant returns(uint256)
  8454  func (_RootChainStorage *RootChainStorageCallerSession) LastAppliedForkNumber() (*big.Int, error) {
  8455  	return _RootChainStorage.Contract.LastAppliedForkNumber(&_RootChainStorage.CallOpts)
  8456  }
  8457  
  8458  // LastNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xb6715647.
  8459  //
  8460  // Solidity: function lastNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  8461  func (_RootChainStorage *RootChainStorageCaller) LastNonEmptyRequestEpoch(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) {
  8462  	var (
  8463  		ret0 = new(*big.Int)
  8464  	)
  8465  	out := ret0
  8466  	err := _RootChainStorage.contract.Call(opts, out, "lastNonEmptyRequestEpoch", arg0)
  8467  	return *ret0, err
  8468  }
  8469  
  8470  // LastNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xb6715647.
  8471  //
  8472  // Solidity: function lastNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  8473  func (_RootChainStorage *RootChainStorageSession) LastNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
  8474  	return _RootChainStorage.Contract.LastNonEmptyRequestEpoch(&_RootChainStorage.CallOpts, arg0)
  8475  }
  8476  
  8477  // LastNonEmptyRequestEpoch is a free data retrieval call binding the contract method 0xb6715647.
  8478  //
  8479  // Solidity: function lastNonEmptyRequestEpoch(uint256 ) constant returns(uint256)
  8480  func (_RootChainStorage *RootChainStorageCallerSession) LastNonEmptyRequestEpoch(arg0 *big.Int) (*big.Int, error) {
  8481  	return _RootChainStorage.Contract.LastNonEmptyRequestEpoch(&_RootChainStorage.CallOpts, arg0)
  8482  }
  8483  
  8484  // NumEnterForORB is a free data retrieval call binding the contract method 0x23691566.
  8485  //
  8486  // Solidity: function numEnterForORB() constant returns(uint256)
  8487  func (_RootChainStorage *RootChainStorageCaller) NumEnterForORB(opts *bind.CallOpts) (*big.Int, error) {
  8488  	var (
  8489  		ret0 = new(*big.Int)
  8490  	)
  8491  	out := ret0
  8492  	err := _RootChainStorage.contract.Call(opts, out, "numEnterForORB")
  8493  	return *ret0, err
  8494  }
  8495  
  8496  // NumEnterForORB is a free data retrieval call binding the contract method 0x23691566.
  8497  //
  8498  // Solidity: function numEnterForORB() constant returns(uint256)
  8499  func (_RootChainStorage *RootChainStorageSession) NumEnterForORB() (*big.Int, error) {
  8500  	return _RootChainStorage.Contract.NumEnterForORB(&_RootChainStorage.CallOpts)
  8501  }
  8502  
  8503  // NumEnterForORB is a free data retrieval call binding the contract method 0x23691566.
  8504  //
  8505  // Solidity: function numEnterForORB() constant returns(uint256)
  8506  func (_RootChainStorage *RootChainStorageCallerSession) NumEnterForORB() (*big.Int, error) {
  8507  	return _RootChainStorage.Contract.NumEnterForORB(&_RootChainStorage.CallOpts)
  8508  }
  8509  
  8510  // Operator is a free data retrieval call binding the contract method 0x570ca735.
  8511  //
  8512  // Solidity: function operator() constant returns(address)
  8513  func (_RootChainStorage *RootChainStorageCaller) Operator(opts *bind.CallOpts) (common.Address, error) {
  8514  	var (
  8515  		ret0 = new(common.Address)
  8516  	)
  8517  	out := ret0
  8518  	err := _RootChainStorage.contract.Call(opts, out, "operator")
  8519  	return *ret0, err
  8520  }
  8521  
  8522  // Operator is a free data retrieval call binding the contract method 0x570ca735.
  8523  //
  8524  // Solidity: function operator() constant returns(address)
  8525  func (_RootChainStorage *RootChainStorageSession) Operator() (common.Address, error) {
  8526  	return _RootChainStorage.Contract.Operator(&_RootChainStorage.CallOpts)
  8527  }
  8528  
  8529  // Operator is a free data retrieval call binding the contract method 0x570ca735.
  8530  //
  8531  // Solidity: function operator() constant returns(address)
  8532  func (_RootChainStorage *RootChainStorageCallerSession) Operator() (common.Address, error) {
  8533  	return _RootChainStorage.Contract.Operator(&_RootChainStorage.CallOpts)
  8534  }
  8535  
  8536  // RequestableContracts is a free data retrieval call binding the contract method 0xda0185f8.
  8537  //
  8538  // Solidity: function requestableContracts(address ) constant returns(address)
  8539  func (_RootChainStorage *RootChainStorageCaller) RequestableContracts(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
  8540  	var (
  8541  		ret0 = new(common.Address)
  8542  	)
  8543  	out := ret0
  8544  	err := _RootChainStorage.contract.Call(opts, out, "requestableContracts", arg0)
  8545  	return *ret0, err
  8546  }
  8547  
  8548  // RequestableContracts is a free data retrieval call binding the contract method 0xda0185f8.
  8549  //
  8550  // Solidity: function requestableContracts(address ) constant returns(address)
  8551  func (_RootChainStorage *RootChainStorageSession) RequestableContracts(arg0 common.Address) (common.Address, error) {
  8552  	return _RootChainStorage.Contract.RequestableContracts(&_RootChainStorage.CallOpts, arg0)
  8553  }
  8554  
  8555  // RequestableContracts is a free data retrieval call binding the contract method 0xda0185f8.
  8556  //
  8557  // Solidity: function requestableContracts(address ) constant returns(address)
  8558  func (_RootChainStorage *RootChainStorageCallerSession) RequestableContracts(arg0 common.Address) (common.Address, error) {
  8559  	return _RootChainStorage.Contract.RequestableContracts(&_RootChainStorage.CallOpts, arg0)
  8560  }
  8561  
  8562  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  8563  //
  8564  // Solidity: function seigManager() constant returns(address)
  8565  func (_RootChainStorage *RootChainStorageCaller) SeigManager(opts *bind.CallOpts) (common.Address, error) {
  8566  	var (
  8567  		ret0 = new(common.Address)
  8568  	)
  8569  	out := ret0
  8570  	err := _RootChainStorage.contract.Call(opts, out, "seigManager")
  8571  	return *ret0, err
  8572  }
  8573  
  8574  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  8575  //
  8576  // Solidity: function seigManager() constant returns(address)
  8577  func (_RootChainStorage *RootChainStorageSession) SeigManager() (common.Address, error) {
  8578  	return _RootChainStorage.Contract.SeigManager(&_RootChainStorage.CallOpts)
  8579  }
  8580  
  8581  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  8582  //
  8583  // Solidity: function seigManager() constant returns(address)
  8584  func (_RootChainStorage *RootChainStorageCallerSession) SeigManager() (common.Address, error) {
  8585  	return _RootChainStorage.Contract.SeigManager(&_RootChainStorage.CallOpts)
  8586  }
  8587  
  8588  // SubmitHandler is a free data retrieval call binding the contract method 0xe259faf7.
  8589  //
  8590  // Solidity: function submitHandler() constant returns(address)
  8591  func (_RootChainStorage *RootChainStorageCaller) SubmitHandler(opts *bind.CallOpts) (common.Address, error) {
  8592  	var (
  8593  		ret0 = new(common.Address)
  8594  	)
  8595  	out := ret0
  8596  	err := _RootChainStorage.contract.Call(opts, out, "submitHandler")
  8597  	return *ret0, err
  8598  }
  8599  
  8600  // SubmitHandler is a free data retrieval call binding the contract method 0xe259faf7.
  8601  //
  8602  // Solidity: function submitHandler() constant returns(address)
  8603  func (_RootChainStorage *RootChainStorageSession) SubmitHandler() (common.Address, error) {
  8604  	return _RootChainStorage.Contract.SubmitHandler(&_RootChainStorage.CallOpts)
  8605  }
  8606  
  8607  // SubmitHandler is a free data retrieval call binding the contract method 0xe259faf7.
  8608  //
  8609  // Solidity: function submitHandler() constant returns(address)
  8610  func (_RootChainStorage *RootChainStorageCallerSession) SubmitHandler() (common.Address, error) {
  8611  	return _RootChainStorage.Contract.SubmitHandler(&_RootChainStorage.CallOpts)
  8612  }
  8613  
  8614  // SafeMathABI is the input ABI used to generate the binding from.
  8615  const SafeMathABI = "[]"
  8616  
  8617  // SafeMathBin is the compiled bytecode used for deploying new contracts.
  8618  var SafeMathBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582081abea5b57eb862cc535e559557e86893bc93410acfd1b3122d48a2c0cdee52a64736f6c634300050c0032"
  8619  
  8620  // DeploySafeMath deploys a new Ethereum contract, binding an instance of SafeMath to it.
  8621  func DeploySafeMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeMath, error) {
  8622  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
  8623  	if err != nil {
  8624  		return common.Address{}, nil, nil, err
  8625  	}
  8626  
  8627  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SafeMathBin), backend)
  8628  	if err != nil {
  8629  		return common.Address{}, nil, nil, err
  8630  	}
  8631  	return address, tx, &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
  8632  }
  8633  
  8634  // SafeMath is an auto generated Go binding around an Ethereum contract.
  8635  type SafeMath struct {
  8636  	SafeMathCaller     // Read-only binding to the contract
  8637  	SafeMathTransactor // Write-only binding to the contract
  8638  	SafeMathFilterer   // Log filterer for contract events
  8639  }
  8640  
  8641  // SafeMathCaller is an auto generated read-only Go binding around an Ethereum contract.
  8642  type SafeMathCaller struct {
  8643  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8644  }
  8645  
  8646  // SafeMathTransactor is an auto generated write-only Go binding around an Ethereum contract.
  8647  type SafeMathTransactor struct {
  8648  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8649  }
  8650  
  8651  // SafeMathFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  8652  type SafeMathFilterer struct {
  8653  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8654  }
  8655  
  8656  // SafeMathSession is an auto generated Go binding around an Ethereum contract,
  8657  // with pre-set call and transact options.
  8658  type SafeMathSession struct {
  8659  	Contract     *SafeMath         // Generic contract binding to set the session for
  8660  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  8661  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  8662  }
  8663  
  8664  // SafeMathCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  8665  // with pre-set call options.
  8666  type SafeMathCallerSession struct {
  8667  	Contract *SafeMathCaller // Generic contract caller binding to set the session for
  8668  	CallOpts bind.CallOpts   // Call options to use throughout this session
  8669  }
  8670  
  8671  // SafeMathTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  8672  // with pre-set transact options.
  8673  type SafeMathTransactorSession struct {
  8674  	Contract     *SafeMathTransactor // Generic contract transactor binding to set the session for
  8675  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
  8676  }
  8677  
  8678  // SafeMathRaw is an auto generated low-level Go binding around an Ethereum contract.
  8679  type SafeMathRaw struct {
  8680  	Contract *SafeMath // Generic contract binding to access the raw methods on
  8681  }
  8682  
  8683  // SafeMathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  8684  type SafeMathCallerRaw struct {
  8685  	Contract *SafeMathCaller // Generic read-only contract binding to access the raw methods on
  8686  }
  8687  
  8688  // SafeMathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  8689  type SafeMathTransactorRaw struct {
  8690  	Contract *SafeMathTransactor // Generic write-only contract binding to access the raw methods on
  8691  }
  8692  
  8693  // NewSafeMath creates a new instance of SafeMath, bound to a specific deployed contract.
  8694  func NewSafeMath(address common.Address, backend bind.ContractBackend) (*SafeMath, error) {
  8695  	contract, err := bindSafeMath(address, backend, backend, backend)
  8696  	if err != nil {
  8697  		return nil, err
  8698  	}
  8699  	return &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
  8700  }
  8701  
  8702  // NewSafeMathCaller creates a new read-only instance of SafeMath, bound to a specific deployed contract.
  8703  func NewSafeMathCaller(address common.Address, caller bind.ContractCaller) (*SafeMathCaller, error) {
  8704  	contract, err := bindSafeMath(address, caller, nil, nil)
  8705  	if err != nil {
  8706  		return nil, err
  8707  	}
  8708  	return &SafeMathCaller{contract: contract}, nil
  8709  }
  8710  
  8711  // NewSafeMathTransactor creates a new write-only instance of SafeMath, bound to a specific deployed contract.
  8712  func NewSafeMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeMathTransactor, error) {
  8713  	contract, err := bindSafeMath(address, nil, transactor, nil)
  8714  	if err != nil {
  8715  		return nil, err
  8716  	}
  8717  	return &SafeMathTransactor{contract: contract}, nil
  8718  }
  8719  
  8720  // NewSafeMathFilterer creates a new log filterer instance of SafeMath, bound to a specific deployed contract.
  8721  func NewSafeMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeMathFilterer, error) {
  8722  	contract, err := bindSafeMath(address, nil, nil, filterer)
  8723  	if err != nil {
  8724  		return nil, err
  8725  	}
  8726  	return &SafeMathFilterer{contract: contract}, nil
  8727  }
  8728  
  8729  // bindSafeMath binds a generic wrapper to an already deployed contract.
  8730  func bindSafeMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  8731  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
  8732  	if err != nil {
  8733  		return nil, err
  8734  	}
  8735  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  8736  }
  8737  
  8738  // Call invokes the (constant) contract method with params as input values and
  8739  // sets the output to result. The result type might be a single field for simple
  8740  // returns, a slice of interfaces for anonymous returns and a struct for named
  8741  // returns.
  8742  func (_SafeMath *SafeMathRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8743  	return _SafeMath.Contract.SafeMathCaller.contract.Call(opts, result, method, params...)
  8744  }
  8745  
  8746  // Transfer initiates a plain transaction to move funds to the contract, calling
  8747  // its default method if one is available.
  8748  func (_SafeMath *SafeMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8749  	return _SafeMath.Contract.SafeMathTransactor.contract.Transfer(opts)
  8750  }
  8751  
  8752  // Transact invokes the (paid) contract method with params as input values.
  8753  func (_SafeMath *SafeMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8754  	return _SafeMath.Contract.SafeMathTransactor.contract.Transact(opts, method, params...)
  8755  }
  8756  
  8757  // Call invokes the (constant) contract method with params as input values and
  8758  // sets the output to result. The result type might be a single field for simple
  8759  // returns, a slice of interfaces for anonymous returns and a struct for named
  8760  // returns.
  8761  func (_SafeMath *SafeMathCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8762  	return _SafeMath.Contract.contract.Call(opts, result, method, params...)
  8763  }
  8764  
  8765  // Transfer initiates a plain transaction to move funds to the contract, calling
  8766  // its default method if one is available.
  8767  func (_SafeMath *SafeMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8768  	return _SafeMath.Contract.contract.Transfer(opts)
  8769  }
  8770  
  8771  // Transact invokes the (paid) contract method with params as input values.
  8772  func (_SafeMath *SafeMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8773  	return _SafeMath.Contract.contract.Transact(opts, method, params...)
  8774  }