github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/gossip/contract/driver100/contract.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 driver100
     5  
     6  import (
     7  	"errors"
     8  	"math/big"
     9  	"strings"
    10  
    11  	u2u "github.com/unicornultrafoundation/go-u2u"
    12  	"github.com/unicornultrafoundation/go-u2u/accounts/abi"
    13  	"github.com/unicornultrafoundation/go-u2u/accounts/abi/bind"
    14  	"github.com/unicornultrafoundation/go-u2u/common"
    15  	"github.com/unicornultrafoundation/go-u2u/core/types"
    16  	"github.com/unicornultrafoundation/go-u2u/event"
    17  )
    18  
    19  // Reference imports to suppress errors if they are not otherwise used.
    20  var (
    21  	_ = errors.New
    22  	_ = big.NewInt
    23  	_ = strings.NewReader
    24  	_ = u2u.NotFound
    25  	_ = bind.Bind
    26  	_ = common.Big1
    27  	_ = types.BloomLookup
    28  	_ = event.NewSubscription
    29  )
    30  
    31  // ContractMetaData contains all meta data concerning the Contract contract.
    32  var ContractMetaData = &bind.MetaData{
    33  	ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"num\",\"type\":\"uint256\"}],\"name\":\"AdvanceEpochs\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"diff\",\"type\":\"bytes\"}],\"name\":\"UpdateNetworkRules\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"UpdateNetworkVersion\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"}],\"name\":\"UpdateValidatorPubkey\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"UpdateValidatorWeight\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"backend\",\"type\":\"address\"}],\"name\":\"UpdatedBackend\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_backend\",\"type\":\"address\"}],\"name\":\"setBackend\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_backend\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_evmWriterAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"acc\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setBalance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"acc\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"}],\"name\":\"copyCode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"acc\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"with\",\"type\":\"address\"}],\"name\":\"swapCode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"acc\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"key\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"name\":\"setStorage\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"acc\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"diff\",\"type\":\"uint256\"}],\"name\":\"incNonce\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"diff\",\"type\":\"bytes\"}],\"name\":\"updateNetworkRules\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"}],\"name\":\"updateNetworkVersion\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"num\",\"type\":\"uint256\"}],\"name\":\"advanceEpochs\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"updateValidatorWeight\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"}],\"name\":\"updateValidatorPubkey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_auth\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"pubkey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"status\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deactivatedEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deactivatedTime\",\"type\":\"uint256\"}],\"name\":\"setGenesisValidator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"toValidatorID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockedStake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockupFromEpoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockupEndTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lockupDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"earlyUnlockPenalty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"}],\"name\":\"setGenesisDelegation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"validatorID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"status\",\"type\":\"uint256\"}],\"name\":\"deactivateValidator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"nextValidatorIDs\",\"type\":\"uint256[]\"}],\"name\":\"sealEpochValidators\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"offlineTimes\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"offlineBlocks\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"uptimes\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"originatedTxsFee\",\"type\":\"uint256[]\"}],\"name\":\"sealEpoch\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"offlineTimes\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"offlineBlocks\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"uptimes\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"originatedTxsFee\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"usedGas\",\"type\":\"uint256\"}],\"name\":\"sealEpochV1\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]",
    34  	Bin: "0x608060405234801561001057600080fd5b50611b5e806100206000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806379bead38116100b2578063d6a0c7af11610081578063e08d7e6611610066578063e08d7e6614610676578063e30443bc146106e6578063ebdf104c1461071f57610136565b8063d6a0c7af14610608578063da7fc24f1461064357610136565b806379bead38146103d65780637f52e13e1461040f578063a4066fbe14610575578063b9cc6b1c1461059857610136565b8063242a6e3f1161010957806339e503ab116100ee57806339e503ab146102b1578063485cc955146102f05780634feb92f31461032b57610136565b8063242a6e3f1461021d578063267ab4461461029457610136565b806307690b2a1461013b5780630aeeca001461017857806318f628d4146101955780631e702f83146101fa575b600080fd5b6101766004803603604081101561015157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610885565b005b6101766004803603602081101561018e57600080fd5b5035610989565b61017660048036036101208110156101ac57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060608101359060808101359060a08101359060c08101359060e0810135906101000135610a2b565b6101766004803603604081101561021057600080fd5b5080359060200135610b4f565b6101766004803603604081101561023357600080fd5b8135919081019060408101602082013564010000000081111561025557600080fd5b82018360208201111561026757600080fd5b8035906020019184600183028401116401000000008311171561028957600080fd5b509092509050610c1c565b610176600480360360208110156102aa57600080fd5b5035610cee565b610176600480360360608110156102c757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060400135610d90565b6101766004803603604081101561030657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610e9b565b610176600480360361010081101561034257600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561037f57600080fd5b82018360208201111561039157600080fd5b803590602001918460018302840111640100000000831117156103b357600080fd5b919350915080359060208101359060408101359060608101359060800135611043565b610176600480360360408110156103ec57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561119b565b610176600480360360a081101561042557600080fd5b81019060208101813564010000000081111561044057600080fd5b82018360208201111561045257600080fd5b8035906020019184602083028401116401000000008311171561047457600080fd5b91939092909160208101903564010000000081111561049257600080fd5b8201836020820111156104a457600080fd5b803590602001918460208302840111640100000000831117156104c657600080fd5b9193909290916020810190356401000000008111156104e457600080fd5b8201836020820111156104f657600080fd5b8035906020019184602083028401116401000000008311171561051857600080fd5b91939092909160208101903564010000000081111561053657600080fd5b82018360208201111561054857600080fd5b8035906020019184602083028401116401000000008311171561056a57600080fd5b919350915035611282565b6101766004803603604081101561058b57600080fd5b5080359060200135611411565b610176600480360360208110156105ae57600080fd5b8101906020810181356401000000008111156105c957600080fd5b8201836020820111156105db57600080fd5b803590602001918460018302840111640100000000831117156105fd57600080fd5b5090925090506114b7565b6101766004803603604081101561061e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611587565b6101766004803603602081101561065957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661166f565b6101766004803603602081101561068c57600080fd5b8101906020810181356401000000008111156106a757600080fd5b8201836020820111156106b957600080fd5b803590602001918460208302840111640100000000831117156106db57600080fd5b509092509050611763565b610176600480360360408110156106fc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611859565b6101766004803603608081101561073557600080fd5b81019060208101813564010000000081111561075057600080fd5b82018360208201111561076257600080fd5b8035906020019184602083028401116401000000008311171561078457600080fd5b9193909290916020810190356401000000008111156107a257600080fd5b8201836020820111156107b457600080fd5b803590602001918460208302840111640100000000831117156107d657600080fd5b9193909290916020810190356401000000008111156107f457600080fd5b82018360208201111561080657600080fd5b8035906020019184602083028401116401000000008311171561082857600080fd5b91939092909160208101903564010000000081111561084657600080fd5b82018360208201111561085857600080fd5b8035906020019184602083028401116401000000008311171561087a57600080fd5b509092509050611940565b60345473ffffffffffffffffffffffffffffffffffffffff1633146108f1576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b603554604080517f07690b2a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301528481166024830152915191909216916307690b2a91604480830192600092919082900301818387803b15801561096d57600080fd5b505af1158015610981573d6000803e3d6000fd5b505050505050565b60345473ffffffffffffffffffffffffffffffffffffffff1633146109f5576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b6040805182815290517f0151256d62457b809bbc891b1f81c6dd0b9987552c70ce915b519750cd434dd19181900360200190a150565b3315610a7e576040805162461bcd60e51b815260206004820152600c60248201527f6e6f742063616c6c61626c650000000000000000000000000000000000000000604482015290519081900360640190fd5b603454604080517f18f628d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152602482018c9052604482018b9052606482018a90526084820189905260a4820188905260c4820187905260e482018690526101048201859052915191909216916318f628d49161012480830192600092919082900301818387803b158015610b2c57600080fd5b505af1158015610b40573d6000803e3d6000fd5b50505050505050505050505050565b3315610ba2576040805162461bcd60e51b815260206004820152600c60248201527f6e6f742063616c6c61626c650000000000000000000000000000000000000000604482015290519081900360640190fd5b603454604080517f1e702f830000000000000000000000000000000000000000000000000000000081526004810185905260248101849052905173ffffffffffffffffffffffffffffffffffffffff90921691631e702f839160448082019260009290919082900301818387803b15801561096d57600080fd5b60345473ffffffffffffffffffffffffffffffffffffffff163314610c88576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b827f0f0ef1ab97439def0a9d2c6d9dc166207f1b13b99e62b442b2993d6153c63a6e838360405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2505050565b60345473ffffffffffffffffffffffffffffffffffffffff163314610d5a576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b6040805182815290517f2ccdfd47cf0c1f1069d949f1789bb79b2f12821f021634fc835af1de66ea2feb9181900360200190a150565b60345473ffffffffffffffffffffffffffffffffffffffff163314610dfc576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b603554604080517f39e503ab00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301526024820186905260448201859052915191909216916339e503ab91606480830192600092919082900301818387803b158015610e7e57600080fd5b505af1158015610e92573d6000803e3d6000fd5b50505050505050565b600054610100900460ff1680610eb45750610eb4611af5565b80610ec2575060005460ff16155b610efd5760405162461bcd60e51b815260040180806020018281038252602e815260200180611afc602e913960400191505060405180910390fd5b600054610100900460ff16158015610f6357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b603480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091556040517f64ee8f7bfc37fc205d7194ee3d64947ab7b57e663cd0d1abd3ef24503583069390600090a2603580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055801561103e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b505050565b3315611096576040805162461bcd60e51b815260206004820152600c60248201527f6e6f742063616c6c61626c650000000000000000000000000000000000000000604482015290519081900360640190fd5b603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634feb92f38a8a8a8a8a8a8a8a8a6040518a63ffffffff1660e01b8152600401808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001898152602001806020018781526020018681526020018581526020018481526020018381526020018281038252898982818152602001925080828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b158015610b2c57600080fd5b60345473ffffffffffffffffffffffffffffffffffffffff163314611207576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b603554604080517f79bead3800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052915191909216916379bead3891604480830192600092919082900301818387803b15801561096d57600080fd5b33156112d5576040805162461bcd60e51b815260206004820152600c60248201527f6e6f742063616c6c61626c650000000000000000000000000000000000000000604482015290519081900360640190fd5b603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663592fe0c08a8a8a8a8a8a8a8a8a6040518a63ffffffff1660e01b8152600401808060200180602001806020018060200186815260200185810385528e8e82818152602001925060200280828437600083820152601f01601f191690910186810385528c8152602090810191508d908d0280828437600083820152601f01601f191690910186810384528a8152602090810191508b908b0280828437600083820152601f01601f19169091018681038352888152602090810191508990890280828437600081840152601f19601f8201169050808301925050509d5050505050505050505050505050600060405180830381600087803b158015610b2c57600080fd5b60345473ffffffffffffffffffffffffffffffffffffffff16331461147d576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b60408051828152905183917fb975807576e3b1461be7de07ebf7d20e4790ed802d7a0c4fdd0a1a13df72a935919081900360200190a25050565b60345473ffffffffffffffffffffffffffffffffffffffff163314611523576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b7f47d10eed096a44e3d0abc586c7e3a5d6cb5358cc90e7d437cd0627f7e765fb99828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b60345473ffffffffffffffffffffffffffffffffffffffff1633146115f3576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b603554604080517fd6a0c7af00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301529151919092169163d6a0c7af91604480830192600092919082900301818387803b15801561096d57600080fd5b60345473ffffffffffffffffffffffffffffffffffffffff1633146116db576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f64ee8f7bfc37fc205d7194ee3d64947ab7b57e663cd0d1abd3ef24503583069390600090a2603480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b33156117b6576040805162461bcd60e51b815260206004820152600c60248201527f6e6f742063616c6c61626c650000000000000000000000000000000000000000604482015290519081900360640190fd5b6034546040517fe08d7e660000000000000000000000000000000000000000000000000000000081526020600482018181526024830185905273ffffffffffffffffffffffffffffffffffffffff9093169263e08d7e6692869286929182916044909101908590850280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561096d57600080fd5b60345473ffffffffffffffffffffffffffffffffffffffff1633146118c5576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b603554604080517fe30443bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529151919092169163e30443bc91604480830192600092919082900301818387803b15801561096d57600080fd5b3315611993576040805162461bcd60e51b815260206004820152600c60248201527f6e6f742063616c6c61626c650000000000000000000000000000000000000000604482015290519081900360640190fd5b603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663592fe0c0898989898989898963322adc3a6040518a63ffffffff1660e01b8152600401808060200180602001806020018060200186815260200185810385528e8e82818152602001925060200280828437600083820152601f01601f191690910186810385528c8152602090810191508d908d0280828437600083820152601f01601f191690910186810384528a8152602090810191508b908b0280828437600083820152601f01601f19169091018681038352888152602090810191508990890280828437600081840152601f19601f8201169050808301925050509d5050505050505050505050505050600060405180830381600087803b158015611ad357600080fd5b505af1158015611ae7573d6000803e3d6000fd5b505050505050505050505050565b303b159056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a265627a7a72315820962250f3ef56c54b3df8ce7213cfcf494e44135e9c70003b4f86fe5ef1bcbb9f64736f6c63430005110032",
    35  }
    36  
    37  // ContractABI is the input ABI used to generate the binding from.
    38  // Deprecated: Use ContractMetaData.ABI instead.
    39  var ContractABI = ContractMetaData.ABI
    40  
    41  // ContractBin is the compiled bytecode used for deploying new contracts.
    42  // Deprecated: Use ContractMetaData.Bin instead.
    43  var ContractBin = ContractMetaData.Bin
    44  
    45  // DeployContract deploys a new Ethereum contract, binding an instance of Contract to it.
    46  func DeployContract(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Contract, error) {
    47  	parsed, err := ContractMetaData.GetAbi()
    48  	if err != nil {
    49  		return common.Address{}, nil, nil, err
    50  	}
    51  	if parsed == nil {
    52  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
    53  	}
    54  
    55  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractBin), backend)
    56  	if err != nil {
    57  		return common.Address{}, nil, nil, err
    58  	}
    59  	return address, tx, &Contract{ContractCaller: ContractCaller{contract: contract}, ContractTransactor: ContractTransactor{contract: contract}, ContractFilterer: ContractFilterer{contract: contract}}, nil
    60  }
    61  
    62  // Contract is an auto generated Go binding around an Ethereum contract.
    63  type Contract struct {
    64  	ContractCaller     // Read-only binding to the contract
    65  	ContractTransactor // Write-only binding to the contract
    66  	ContractFilterer   // Log filterer for contract events
    67  }
    68  
    69  // ContractCaller is an auto generated read-only Go binding around an Ethereum contract.
    70  type ContractCaller struct {
    71  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    72  }
    73  
    74  // ContractTransactor is an auto generated write-only Go binding around an Ethereum contract.
    75  type ContractTransactor struct {
    76  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    77  }
    78  
    79  // ContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    80  type ContractFilterer struct {
    81  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    82  }
    83  
    84  // ContractSession is an auto generated Go binding around an Ethereum contract,
    85  // with pre-set call and transact options.
    86  type ContractSession struct {
    87  	Contract     *Contract         // Generic contract binding to set the session for
    88  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    89  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    90  }
    91  
    92  // ContractCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    93  // with pre-set call options.
    94  type ContractCallerSession struct {
    95  	Contract *ContractCaller // Generic contract caller binding to set the session for
    96  	CallOpts bind.CallOpts   // Call options to use throughout this session
    97  }
    98  
    99  // ContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   100  // with pre-set transact options.
   101  type ContractTransactorSession struct {
   102  	Contract     *ContractTransactor // Generic contract transactor binding to set the session for
   103  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
   104  }
   105  
   106  // ContractRaw is an auto generated low-level Go binding around an Ethereum contract.
   107  type ContractRaw struct {
   108  	Contract *Contract // Generic contract binding to access the raw methods on
   109  }
   110  
   111  // ContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   112  type ContractCallerRaw struct {
   113  	Contract *ContractCaller // Generic read-only contract binding to access the raw methods on
   114  }
   115  
   116  // ContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   117  type ContractTransactorRaw struct {
   118  	Contract *ContractTransactor // Generic write-only contract binding to access the raw methods on
   119  }
   120  
   121  // NewContract creates a new instance of Contract, bound to a specific deployed contract.
   122  func NewContract(address common.Address, backend bind.ContractBackend) (*Contract, error) {
   123  	contract, err := bindContract(address, backend, backend, backend)
   124  	if err != nil {
   125  		return nil, err
   126  	}
   127  	return &Contract{ContractCaller: ContractCaller{contract: contract}, ContractTransactor: ContractTransactor{contract: contract}, ContractFilterer: ContractFilterer{contract: contract}}, nil
   128  }
   129  
   130  // NewContractCaller creates a new read-only instance of Contract, bound to a specific deployed contract.
   131  func NewContractCaller(address common.Address, caller bind.ContractCaller) (*ContractCaller, error) {
   132  	contract, err := bindContract(address, caller, nil, nil)
   133  	if err != nil {
   134  		return nil, err
   135  	}
   136  	return &ContractCaller{contract: contract}, nil
   137  }
   138  
   139  // NewContractTransactor creates a new write-only instance of Contract, bound to a specific deployed contract.
   140  func NewContractTransactor(address common.Address, transactor bind.ContractTransactor) (*ContractTransactor, error) {
   141  	contract, err := bindContract(address, nil, transactor, nil)
   142  	if err != nil {
   143  		return nil, err
   144  	}
   145  	return &ContractTransactor{contract: contract}, nil
   146  }
   147  
   148  // NewContractFilterer creates a new log filterer instance of Contract, bound to a specific deployed contract.
   149  func NewContractFilterer(address common.Address, filterer bind.ContractFilterer) (*ContractFilterer, error) {
   150  	contract, err := bindContract(address, nil, nil, filterer)
   151  	if err != nil {
   152  		return nil, err
   153  	}
   154  	return &ContractFilterer{contract: contract}, nil
   155  }
   156  
   157  // bindContract binds a generic wrapper to an already deployed contract.
   158  func bindContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   159  	parsed, err := abi.JSON(strings.NewReader(ContractABI))
   160  	if err != nil {
   161  		return nil, err
   162  	}
   163  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   164  }
   165  
   166  // Call invokes the (constant) contract method with params as input values and
   167  // sets the output to result. The result type might be a single field for simple
   168  // returns, a slice of interfaces for anonymous returns and a struct for named
   169  // returns.
   170  func (_Contract *ContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   171  	return _Contract.Contract.ContractCaller.contract.Call(opts, result, method, params...)
   172  }
   173  
   174  // Transfer initiates a plain transaction to move funds to the contract, calling
   175  // its default method if one is available.
   176  func (_Contract *ContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   177  	return _Contract.Contract.ContractTransactor.contract.Transfer(opts)
   178  }
   179  
   180  // Transact invokes the (paid) contract method with params as input values.
   181  func (_Contract *ContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   182  	return _Contract.Contract.ContractTransactor.contract.Transact(opts, method, params...)
   183  }
   184  
   185  // Call invokes the (constant) contract method with params as input values and
   186  // sets the output to result. The result type might be a single field for simple
   187  // returns, a slice of interfaces for anonymous returns and a struct for named
   188  // returns.
   189  func (_Contract *ContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   190  	return _Contract.Contract.contract.Call(opts, result, method, params...)
   191  }
   192  
   193  // Transfer initiates a plain transaction to move funds to the contract, calling
   194  // its default method if one is available.
   195  func (_Contract *ContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   196  	return _Contract.Contract.contract.Transfer(opts)
   197  }
   198  
   199  // Transact invokes the (paid) contract method with params as input values.
   200  func (_Contract *ContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   201  	return _Contract.Contract.contract.Transact(opts, method, params...)
   202  }
   203  
   204  // AdvanceEpochs is a paid mutator transaction binding the contract method 0x0aeeca00.
   205  //
   206  // Solidity: function advanceEpochs(uint256 num) returns()
   207  func (_Contract *ContractTransactor) AdvanceEpochs(opts *bind.TransactOpts, num *big.Int) (*types.Transaction, error) {
   208  	return _Contract.contract.Transact(opts, "advanceEpochs", num)
   209  }
   210  
   211  // AdvanceEpochs is a paid mutator transaction binding the contract method 0x0aeeca00.
   212  //
   213  // Solidity: function advanceEpochs(uint256 num) returns()
   214  func (_Contract *ContractSession) AdvanceEpochs(num *big.Int) (*types.Transaction, error) {
   215  	return _Contract.Contract.AdvanceEpochs(&_Contract.TransactOpts, num)
   216  }
   217  
   218  // AdvanceEpochs is a paid mutator transaction binding the contract method 0x0aeeca00.
   219  //
   220  // Solidity: function advanceEpochs(uint256 num) returns()
   221  func (_Contract *ContractTransactorSession) AdvanceEpochs(num *big.Int) (*types.Transaction, error) {
   222  	return _Contract.Contract.AdvanceEpochs(&_Contract.TransactOpts, num)
   223  }
   224  
   225  // CopyCode is a paid mutator transaction binding the contract method 0xd6a0c7af.
   226  //
   227  // Solidity: function copyCode(address acc, address from) returns()
   228  func (_Contract *ContractTransactor) CopyCode(opts *bind.TransactOpts, acc common.Address, from common.Address) (*types.Transaction, error) {
   229  	return _Contract.contract.Transact(opts, "copyCode", acc, from)
   230  }
   231  
   232  // CopyCode is a paid mutator transaction binding the contract method 0xd6a0c7af.
   233  //
   234  // Solidity: function copyCode(address acc, address from) returns()
   235  func (_Contract *ContractSession) CopyCode(acc common.Address, from common.Address) (*types.Transaction, error) {
   236  	return _Contract.Contract.CopyCode(&_Contract.TransactOpts, acc, from)
   237  }
   238  
   239  // CopyCode is a paid mutator transaction binding the contract method 0xd6a0c7af.
   240  //
   241  // Solidity: function copyCode(address acc, address from) returns()
   242  func (_Contract *ContractTransactorSession) CopyCode(acc common.Address, from common.Address) (*types.Transaction, error) {
   243  	return _Contract.Contract.CopyCode(&_Contract.TransactOpts, acc, from)
   244  }
   245  
   246  // DeactivateValidator is a paid mutator transaction binding the contract method 0x1e702f83.
   247  //
   248  // Solidity: function deactivateValidator(uint256 validatorID, uint256 status) returns()
   249  func (_Contract *ContractTransactor) DeactivateValidator(opts *bind.TransactOpts, validatorID *big.Int, status *big.Int) (*types.Transaction, error) {
   250  	return _Contract.contract.Transact(opts, "deactivateValidator", validatorID, status)
   251  }
   252  
   253  // DeactivateValidator is a paid mutator transaction binding the contract method 0x1e702f83.
   254  //
   255  // Solidity: function deactivateValidator(uint256 validatorID, uint256 status) returns()
   256  func (_Contract *ContractSession) DeactivateValidator(validatorID *big.Int, status *big.Int) (*types.Transaction, error) {
   257  	return _Contract.Contract.DeactivateValidator(&_Contract.TransactOpts, validatorID, status)
   258  }
   259  
   260  // DeactivateValidator is a paid mutator transaction binding the contract method 0x1e702f83.
   261  //
   262  // Solidity: function deactivateValidator(uint256 validatorID, uint256 status) returns()
   263  func (_Contract *ContractTransactorSession) DeactivateValidator(validatorID *big.Int, status *big.Int) (*types.Transaction, error) {
   264  	return _Contract.Contract.DeactivateValidator(&_Contract.TransactOpts, validatorID, status)
   265  }
   266  
   267  // IncNonce is a paid mutator transaction binding the contract method 0x79bead38.
   268  //
   269  // Solidity: function incNonce(address acc, uint256 diff) returns()
   270  func (_Contract *ContractTransactor) IncNonce(opts *bind.TransactOpts, acc common.Address, diff *big.Int) (*types.Transaction, error) {
   271  	return _Contract.contract.Transact(opts, "incNonce", acc, diff)
   272  }
   273  
   274  // IncNonce is a paid mutator transaction binding the contract method 0x79bead38.
   275  //
   276  // Solidity: function incNonce(address acc, uint256 diff) returns()
   277  func (_Contract *ContractSession) IncNonce(acc common.Address, diff *big.Int) (*types.Transaction, error) {
   278  	return _Contract.Contract.IncNonce(&_Contract.TransactOpts, acc, diff)
   279  }
   280  
   281  // IncNonce is a paid mutator transaction binding the contract method 0x79bead38.
   282  //
   283  // Solidity: function incNonce(address acc, uint256 diff) returns()
   284  func (_Contract *ContractTransactorSession) IncNonce(acc common.Address, diff *big.Int) (*types.Transaction, error) {
   285  	return _Contract.Contract.IncNonce(&_Contract.TransactOpts, acc, diff)
   286  }
   287  
   288  // Initialize is a paid mutator transaction binding the contract method 0x485cc955.
   289  //
   290  // Solidity: function initialize(address _backend, address _evmWriterAddress) returns()
   291  func (_Contract *ContractTransactor) Initialize(opts *bind.TransactOpts, _backend common.Address, _evmWriterAddress common.Address) (*types.Transaction, error) {
   292  	return _Contract.contract.Transact(opts, "initialize", _backend, _evmWriterAddress)
   293  }
   294  
   295  // Initialize is a paid mutator transaction binding the contract method 0x485cc955.
   296  //
   297  // Solidity: function initialize(address _backend, address _evmWriterAddress) returns()
   298  func (_Contract *ContractSession) Initialize(_backend common.Address, _evmWriterAddress common.Address) (*types.Transaction, error) {
   299  	return _Contract.Contract.Initialize(&_Contract.TransactOpts, _backend, _evmWriterAddress)
   300  }
   301  
   302  // Initialize is a paid mutator transaction binding the contract method 0x485cc955.
   303  //
   304  // Solidity: function initialize(address _backend, address _evmWriterAddress) returns()
   305  func (_Contract *ContractTransactorSession) Initialize(_backend common.Address, _evmWriterAddress common.Address) (*types.Transaction, error) {
   306  	return _Contract.Contract.Initialize(&_Contract.TransactOpts, _backend, _evmWriterAddress)
   307  }
   308  
   309  // SealEpoch is a paid mutator transaction binding the contract method 0xebdf104c.
   310  //
   311  // Solidity: function sealEpoch(uint256[] offlineTimes, uint256[] offlineBlocks, uint256[] uptimes, uint256[] originatedTxsFee) returns()
   312  func (_Contract *ContractTransactor) SealEpoch(opts *bind.TransactOpts, offlineTimes []*big.Int, offlineBlocks []*big.Int, uptimes []*big.Int, originatedTxsFee []*big.Int) (*types.Transaction, error) {
   313  	return _Contract.contract.Transact(opts, "sealEpoch", offlineTimes, offlineBlocks, uptimes, originatedTxsFee)
   314  }
   315  
   316  // SealEpoch is a paid mutator transaction binding the contract method 0xebdf104c.
   317  //
   318  // Solidity: function sealEpoch(uint256[] offlineTimes, uint256[] offlineBlocks, uint256[] uptimes, uint256[] originatedTxsFee) returns()
   319  func (_Contract *ContractSession) SealEpoch(offlineTimes []*big.Int, offlineBlocks []*big.Int, uptimes []*big.Int, originatedTxsFee []*big.Int) (*types.Transaction, error) {
   320  	return _Contract.Contract.SealEpoch(&_Contract.TransactOpts, offlineTimes, offlineBlocks, uptimes, originatedTxsFee)
   321  }
   322  
   323  // SealEpoch is a paid mutator transaction binding the contract method 0xebdf104c.
   324  //
   325  // Solidity: function sealEpoch(uint256[] offlineTimes, uint256[] offlineBlocks, uint256[] uptimes, uint256[] originatedTxsFee) returns()
   326  func (_Contract *ContractTransactorSession) SealEpoch(offlineTimes []*big.Int, offlineBlocks []*big.Int, uptimes []*big.Int, originatedTxsFee []*big.Int) (*types.Transaction, error) {
   327  	return _Contract.Contract.SealEpoch(&_Contract.TransactOpts, offlineTimes, offlineBlocks, uptimes, originatedTxsFee)
   328  }
   329  
   330  // SealEpochV1 is a paid mutator transaction binding the contract method 0x7f52e13e.
   331  //
   332  // Solidity: function sealEpochV1(uint256[] offlineTimes, uint256[] offlineBlocks, uint256[] uptimes, uint256[] originatedTxsFee, uint256 usedGas) returns()
   333  func (_Contract *ContractTransactor) SealEpochV1(opts *bind.TransactOpts, offlineTimes []*big.Int, offlineBlocks []*big.Int, uptimes []*big.Int, originatedTxsFee []*big.Int, usedGas *big.Int) (*types.Transaction, error) {
   334  	return _Contract.contract.Transact(opts, "sealEpochV1", offlineTimes, offlineBlocks, uptimes, originatedTxsFee, usedGas)
   335  }
   336  
   337  // SealEpochV1 is a paid mutator transaction binding the contract method 0x7f52e13e.
   338  //
   339  // Solidity: function sealEpochV1(uint256[] offlineTimes, uint256[] offlineBlocks, uint256[] uptimes, uint256[] originatedTxsFee, uint256 usedGas) returns()
   340  func (_Contract *ContractSession) SealEpochV1(offlineTimes []*big.Int, offlineBlocks []*big.Int, uptimes []*big.Int, originatedTxsFee []*big.Int, usedGas *big.Int) (*types.Transaction, error) {
   341  	return _Contract.Contract.SealEpochV1(&_Contract.TransactOpts, offlineTimes, offlineBlocks, uptimes, originatedTxsFee, usedGas)
   342  }
   343  
   344  // SealEpochV1 is a paid mutator transaction binding the contract method 0x7f52e13e.
   345  //
   346  // Solidity: function sealEpochV1(uint256[] offlineTimes, uint256[] offlineBlocks, uint256[] uptimes, uint256[] originatedTxsFee, uint256 usedGas) returns()
   347  func (_Contract *ContractTransactorSession) SealEpochV1(offlineTimes []*big.Int, offlineBlocks []*big.Int, uptimes []*big.Int, originatedTxsFee []*big.Int, usedGas *big.Int) (*types.Transaction, error) {
   348  	return _Contract.Contract.SealEpochV1(&_Contract.TransactOpts, offlineTimes, offlineBlocks, uptimes, originatedTxsFee, usedGas)
   349  }
   350  
   351  // SealEpochValidators is a paid mutator transaction binding the contract method 0xe08d7e66.
   352  //
   353  // Solidity: function sealEpochValidators(uint256[] nextValidatorIDs) returns()
   354  func (_Contract *ContractTransactor) SealEpochValidators(opts *bind.TransactOpts, nextValidatorIDs []*big.Int) (*types.Transaction, error) {
   355  	return _Contract.contract.Transact(opts, "sealEpochValidators", nextValidatorIDs)
   356  }
   357  
   358  // SealEpochValidators is a paid mutator transaction binding the contract method 0xe08d7e66.
   359  //
   360  // Solidity: function sealEpochValidators(uint256[] nextValidatorIDs) returns()
   361  func (_Contract *ContractSession) SealEpochValidators(nextValidatorIDs []*big.Int) (*types.Transaction, error) {
   362  	return _Contract.Contract.SealEpochValidators(&_Contract.TransactOpts, nextValidatorIDs)
   363  }
   364  
   365  // SealEpochValidators is a paid mutator transaction binding the contract method 0xe08d7e66.
   366  //
   367  // Solidity: function sealEpochValidators(uint256[] nextValidatorIDs) returns()
   368  func (_Contract *ContractTransactorSession) SealEpochValidators(nextValidatorIDs []*big.Int) (*types.Transaction, error) {
   369  	return _Contract.Contract.SealEpochValidators(&_Contract.TransactOpts, nextValidatorIDs)
   370  }
   371  
   372  // SetBackend is a paid mutator transaction binding the contract method 0xda7fc24f.
   373  //
   374  // Solidity: function setBackend(address _backend) returns()
   375  func (_Contract *ContractTransactor) SetBackend(opts *bind.TransactOpts, _backend common.Address) (*types.Transaction, error) {
   376  	return _Contract.contract.Transact(opts, "setBackend", _backend)
   377  }
   378  
   379  // SetBackend is a paid mutator transaction binding the contract method 0xda7fc24f.
   380  //
   381  // Solidity: function setBackend(address _backend) returns()
   382  func (_Contract *ContractSession) SetBackend(_backend common.Address) (*types.Transaction, error) {
   383  	return _Contract.Contract.SetBackend(&_Contract.TransactOpts, _backend)
   384  }
   385  
   386  // SetBackend is a paid mutator transaction binding the contract method 0xda7fc24f.
   387  //
   388  // Solidity: function setBackend(address _backend) returns()
   389  func (_Contract *ContractTransactorSession) SetBackend(_backend common.Address) (*types.Transaction, error) {
   390  	return _Contract.Contract.SetBackend(&_Contract.TransactOpts, _backend)
   391  }
   392  
   393  // SetBalance is a paid mutator transaction binding the contract method 0xe30443bc.
   394  //
   395  // Solidity: function setBalance(address acc, uint256 value) returns()
   396  func (_Contract *ContractTransactor) SetBalance(opts *bind.TransactOpts, acc common.Address, value *big.Int) (*types.Transaction, error) {
   397  	return _Contract.contract.Transact(opts, "setBalance", acc, value)
   398  }
   399  
   400  // SetBalance is a paid mutator transaction binding the contract method 0xe30443bc.
   401  //
   402  // Solidity: function setBalance(address acc, uint256 value) returns()
   403  func (_Contract *ContractSession) SetBalance(acc common.Address, value *big.Int) (*types.Transaction, error) {
   404  	return _Contract.Contract.SetBalance(&_Contract.TransactOpts, acc, value)
   405  }
   406  
   407  // SetBalance is a paid mutator transaction binding the contract method 0xe30443bc.
   408  //
   409  // Solidity: function setBalance(address acc, uint256 value) returns()
   410  func (_Contract *ContractTransactorSession) SetBalance(acc common.Address, value *big.Int) (*types.Transaction, error) {
   411  	return _Contract.Contract.SetBalance(&_Contract.TransactOpts, acc, value)
   412  }
   413  
   414  // SetGenesisDelegation is a paid mutator transaction binding the contract method 0x18f628d4.
   415  //
   416  // Solidity: function setGenesisDelegation(address delegator, uint256 toValidatorID, uint256 stake, uint256 lockedStake, uint256 lockupFromEpoch, uint256 lockupEndTime, uint256 lockupDuration, uint256 earlyUnlockPenalty, uint256 rewards) returns()
   417  func (_Contract *ContractTransactor) SetGenesisDelegation(opts *bind.TransactOpts, delegator common.Address, toValidatorID *big.Int, stake *big.Int, lockedStake *big.Int, lockupFromEpoch *big.Int, lockupEndTime *big.Int, lockupDuration *big.Int, earlyUnlockPenalty *big.Int, rewards *big.Int) (*types.Transaction, error) {
   418  	return _Contract.contract.Transact(opts, "setGenesisDelegation", delegator, toValidatorID, stake, lockedStake, lockupFromEpoch, lockupEndTime, lockupDuration, earlyUnlockPenalty, rewards)
   419  }
   420  
   421  // SetGenesisDelegation is a paid mutator transaction binding the contract method 0x18f628d4.
   422  //
   423  // Solidity: function setGenesisDelegation(address delegator, uint256 toValidatorID, uint256 stake, uint256 lockedStake, uint256 lockupFromEpoch, uint256 lockupEndTime, uint256 lockupDuration, uint256 earlyUnlockPenalty, uint256 rewards) returns()
   424  func (_Contract *ContractSession) SetGenesisDelegation(delegator common.Address, toValidatorID *big.Int, stake *big.Int, lockedStake *big.Int, lockupFromEpoch *big.Int, lockupEndTime *big.Int, lockupDuration *big.Int, earlyUnlockPenalty *big.Int, rewards *big.Int) (*types.Transaction, error) {
   425  	return _Contract.Contract.SetGenesisDelegation(&_Contract.TransactOpts, delegator, toValidatorID, stake, lockedStake, lockupFromEpoch, lockupEndTime, lockupDuration, earlyUnlockPenalty, rewards)
   426  }
   427  
   428  // SetGenesisDelegation is a paid mutator transaction binding the contract method 0x18f628d4.
   429  //
   430  // Solidity: function setGenesisDelegation(address delegator, uint256 toValidatorID, uint256 stake, uint256 lockedStake, uint256 lockupFromEpoch, uint256 lockupEndTime, uint256 lockupDuration, uint256 earlyUnlockPenalty, uint256 rewards) returns()
   431  func (_Contract *ContractTransactorSession) SetGenesisDelegation(delegator common.Address, toValidatorID *big.Int, stake *big.Int, lockedStake *big.Int, lockupFromEpoch *big.Int, lockupEndTime *big.Int, lockupDuration *big.Int, earlyUnlockPenalty *big.Int, rewards *big.Int) (*types.Transaction, error) {
   432  	return _Contract.Contract.SetGenesisDelegation(&_Contract.TransactOpts, delegator, toValidatorID, stake, lockedStake, lockupFromEpoch, lockupEndTime, lockupDuration, earlyUnlockPenalty, rewards)
   433  }
   434  
   435  // SetGenesisValidator is a paid mutator transaction binding the contract method 0x4feb92f3.
   436  //
   437  // Solidity: function setGenesisValidator(address _auth, uint256 validatorID, bytes pubkey, uint256 status, uint256 createdEpoch, uint256 createdTime, uint256 deactivatedEpoch, uint256 deactivatedTime) returns()
   438  func (_Contract *ContractTransactor) SetGenesisValidator(opts *bind.TransactOpts, _auth common.Address, validatorID *big.Int, pubkey []byte, status *big.Int, createdEpoch *big.Int, createdTime *big.Int, deactivatedEpoch *big.Int, deactivatedTime *big.Int) (*types.Transaction, error) {
   439  	return _Contract.contract.Transact(opts, "setGenesisValidator", _auth, validatorID, pubkey, status, createdEpoch, createdTime, deactivatedEpoch, deactivatedTime)
   440  }
   441  
   442  // SetGenesisValidator is a paid mutator transaction binding the contract method 0x4feb92f3.
   443  //
   444  // Solidity: function setGenesisValidator(address _auth, uint256 validatorID, bytes pubkey, uint256 status, uint256 createdEpoch, uint256 createdTime, uint256 deactivatedEpoch, uint256 deactivatedTime) returns()
   445  func (_Contract *ContractSession) SetGenesisValidator(_auth common.Address, validatorID *big.Int, pubkey []byte, status *big.Int, createdEpoch *big.Int, createdTime *big.Int, deactivatedEpoch *big.Int, deactivatedTime *big.Int) (*types.Transaction, error) {
   446  	return _Contract.Contract.SetGenesisValidator(&_Contract.TransactOpts, _auth, validatorID, pubkey, status, createdEpoch, createdTime, deactivatedEpoch, deactivatedTime)
   447  }
   448  
   449  // SetGenesisValidator is a paid mutator transaction binding the contract method 0x4feb92f3.
   450  //
   451  // Solidity: function setGenesisValidator(address _auth, uint256 validatorID, bytes pubkey, uint256 status, uint256 createdEpoch, uint256 createdTime, uint256 deactivatedEpoch, uint256 deactivatedTime) returns()
   452  func (_Contract *ContractTransactorSession) SetGenesisValidator(_auth common.Address, validatorID *big.Int, pubkey []byte, status *big.Int, createdEpoch *big.Int, createdTime *big.Int, deactivatedEpoch *big.Int, deactivatedTime *big.Int) (*types.Transaction, error) {
   453  	return _Contract.Contract.SetGenesisValidator(&_Contract.TransactOpts, _auth, validatorID, pubkey, status, createdEpoch, createdTime, deactivatedEpoch, deactivatedTime)
   454  }
   455  
   456  // SetStorage is a paid mutator transaction binding the contract method 0x39e503ab.
   457  //
   458  // Solidity: function setStorage(address acc, bytes32 key, bytes32 value) returns()
   459  func (_Contract *ContractTransactor) SetStorage(opts *bind.TransactOpts, acc common.Address, key [32]byte, value [32]byte) (*types.Transaction, error) {
   460  	return _Contract.contract.Transact(opts, "setStorage", acc, key, value)
   461  }
   462  
   463  // SetStorage is a paid mutator transaction binding the contract method 0x39e503ab.
   464  //
   465  // Solidity: function setStorage(address acc, bytes32 key, bytes32 value) returns()
   466  func (_Contract *ContractSession) SetStorage(acc common.Address, key [32]byte, value [32]byte) (*types.Transaction, error) {
   467  	return _Contract.Contract.SetStorage(&_Contract.TransactOpts, acc, key, value)
   468  }
   469  
   470  // SetStorage is a paid mutator transaction binding the contract method 0x39e503ab.
   471  //
   472  // Solidity: function setStorage(address acc, bytes32 key, bytes32 value) returns()
   473  func (_Contract *ContractTransactorSession) SetStorage(acc common.Address, key [32]byte, value [32]byte) (*types.Transaction, error) {
   474  	return _Contract.Contract.SetStorage(&_Contract.TransactOpts, acc, key, value)
   475  }
   476  
   477  // SwapCode is a paid mutator transaction binding the contract method 0x07690b2a.
   478  //
   479  // Solidity: function swapCode(address acc, address with) returns()
   480  func (_Contract *ContractTransactor) SwapCode(opts *bind.TransactOpts, acc common.Address, with common.Address) (*types.Transaction, error) {
   481  	return _Contract.contract.Transact(opts, "swapCode", acc, with)
   482  }
   483  
   484  // SwapCode is a paid mutator transaction binding the contract method 0x07690b2a.
   485  //
   486  // Solidity: function swapCode(address acc, address with) returns()
   487  func (_Contract *ContractSession) SwapCode(acc common.Address, with common.Address) (*types.Transaction, error) {
   488  	return _Contract.Contract.SwapCode(&_Contract.TransactOpts, acc, with)
   489  }
   490  
   491  // SwapCode is a paid mutator transaction binding the contract method 0x07690b2a.
   492  //
   493  // Solidity: function swapCode(address acc, address with) returns()
   494  func (_Contract *ContractTransactorSession) SwapCode(acc common.Address, with common.Address) (*types.Transaction, error) {
   495  	return _Contract.Contract.SwapCode(&_Contract.TransactOpts, acc, with)
   496  }
   497  
   498  // UpdateNetworkRules is a paid mutator transaction binding the contract method 0xb9cc6b1c.
   499  //
   500  // Solidity: function updateNetworkRules(bytes diff) returns()
   501  func (_Contract *ContractTransactor) UpdateNetworkRules(opts *bind.TransactOpts, diff []byte) (*types.Transaction, error) {
   502  	return _Contract.contract.Transact(opts, "updateNetworkRules", diff)
   503  }
   504  
   505  // UpdateNetworkRules is a paid mutator transaction binding the contract method 0xb9cc6b1c.
   506  //
   507  // Solidity: function updateNetworkRules(bytes diff) returns()
   508  func (_Contract *ContractSession) UpdateNetworkRules(diff []byte) (*types.Transaction, error) {
   509  	return _Contract.Contract.UpdateNetworkRules(&_Contract.TransactOpts, diff)
   510  }
   511  
   512  // UpdateNetworkRules is a paid mutator transaction binding the contract method 0xb9cc6b1c.
   513  //
   514  // Solidity: function updateNetworkRules(bytes diff) returns()
   515  func (_Contract *ContractTransactorSession) UpdateNetworkRules(diff []byte) (*types.Transaction, error) {
   516  	return _Contract.Contract.UpdateNetworkRules(&_Contract.TransactOpts, diff)
   517  }
   518  
   519  // UpdateNetworkVersion is a paid mutator transaction binding the contract method 0x267ab446.
   520  //
   521  // Solidity: function updateNetworkVersion(uint256 version) returns()
   522  func (_Contract *ContractTransactor) UpdateNetworkVersion(opts *bind.TransactOpts, version *big.Int) (*types.Transaction, error) {
   523  	return _Contract.contract.Transact(opts, "updateNetworkVersion", version)
   524  }
   525  
   526  // UpdateNetworkVersion is a paid mutator transaction binding the contract method 0x267ab446.
   527  //
   528  // Solidity: function updateNetworkVersion(uint256 version) returns()
   529  func (_Contract *ContractSession) UpdateNetworkVersion(version *big.Int) (*types.Transaction, error) {
   530  	return _Contract.Contract.UpdateNetworkVersion(&_Contract.TransactOpts, version)
   531  }
   532  
   533  // UpdateNetworkVersion is a paid mutator transaction binding the contract method 0x267ab446.
   534  //
   535  // Solidity: function updateNetworkVersion(uint256 version) returns()
   536  func (_Contract *ContractTransactorSession) UpdateNetworkVersion(version *big.Int) (*types.Transaction, error) {
   537  	return _Contract.Contract.UpdateNetworkVersion(&_Contract.TransactOpts, version)
   538  }
   539  
   540  // UpdateValidatorPubkey is a paid mutator transaction binding the contract method 0x242a6e3f.
   541  //
   542  // Solidity: function updateValidatorPubkey(uint256 validatorID, bytes pubkey) returns()
   543  func (_Contract *ContractTransactor) UpdateValidatorPubkey(opts *bind.TransactOpts, validatorID *big.Int, pubkey []byte) (*types.Transaction, error) {
   544  	return _Contract.contract.Transact(opts, "updateValidatorPubkey", validatorID, pubkey)
   545  }
   546  
   547  // UpdateValidatorPubkey is a paid mutator transaction binding the contract method 0x242a6e3f.
   548  //
   549  // Solidity: function updateValidatorPubkey(uint256 validatorID, bytes pubkey) returns()
   550  func (_Contract *ContractSession) UpdateValidatorPubkey(validatorID *big.Int, pubkey []byte) (*types.Transaction, error) {
   551  	return _Contract.Contract.UpdateValidatorPubkey(&_Contract.TransactOpts, validatorID, pubkey)
   552  }
   553  
   554  // UpdateValidatorPubkey is a paid mutator transaction binding the contract method 0x242a6e3f.
   555  //
   556  // Solidity: function updateValidatorPubkey(uint256 validatorID, bytes pubkey) returns()
   557  func (_Contract *ContractTransactorSession) UpdateValidatorPubkey(validatorID *big.Int, pubkey []byte) (*types.Transaction, error) {
   558  	return _Contract.Contract.UpdateValidatorPubkey(&_Contract.TransactOpts, validatorID, pubkey)
   559  }
   560  
   561  // UpdateValidatorWeight is a paid mutator transaction binding the contract method 0xa4066fbe.
   562  //
   563  // Solidity: function updateValidatorWeight(uint256 validatorID, uint256 value) returns()
   564  func (_Contract *ContractTransactor) UpdateValidatorWeight(opts *bind.TransactOpts, validatorID *big.Int, value *big.Int) (*types.Transaction, error) {
   565  	return _Contract.contract.Transact(opts, "updateValidatorWeight", validatorID, value)
   566  }
   567  
   568  // UpdateValidatorWeight is a paid mutator transaction binding the contract method 0xa4066fbe.
   569  //
   570  // Solidity: function updateValidatorWeight(uint256 validatorID, uint256 value) returns()
   571  func (_Contract *ContractSession) UpdateValidatorWeight(validatorID *big.Int, value *big.Int) (*types.Transaction, error) {
   572  	return _Contract.Contract.UpdateValidatorWeight(&_Contract.TransactOpts, validatorID, value)
   573  }
   574  
   575  // UpdateValidatorWeight is a paid mutator transaction binding the contract method 0xa4066fbe.
   576  //
   577  // Solidity: function updateValidatorWeight(uint256 validatorID, uint256 value) returns()
   578  func (_Contract *ContractTransactorSession) UpdateValidatorWeight(validatorID *big.Int, value *big.Int) (*types.Transaction, error) {
   579  	return _Contract.Contract.UpdateValidatorWeight(&_Contract.TransactOpts, validatorID, value)
   580  }
   581  
   582  // ContractAdvanceEpochsIterator is returned from FilterAdvanceEpochs and is used to iterate over the raw logs and unpacked data for AdvanceEpochs events raised by the Contract contract.
   583  type ContractAdvanceEpochsIterator struct {
   584  	Event *ContractAdvanceEpochs // Event containing the contract specifics and raw log
   585  
   586  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   587  	event    string              // Event name to use for unpacking event data
   588  
   589  	logs chan types.Log        // Log channel receiving the found contract events
   590  	sub  u2u.Subscription // Subscription for errors, completion and termination
   591  	done bool                  // Whether the subscription completed delivering logs
   592  	fail error                 // Occurred error to stop iteration
   593  }
   594  
   595  // Next advances the iterator to the subsequent event, returning whether there
   596  // are any more events found. In case of a retrieval or parsing error, false is
   597  // returned and Error() can be queried for the exact failure.
   598  func (it *ContractAdvanceEpochsIterator) Next() bool {
   599  	// If the iterator failed, stop iterating
   600  	if it.fail != nil {
   601  		return false
   602  	}
   603  	// If the iterator completed, deliver directly whatever's available
   604  	if it.done {
   605  		select {
   606  		case log := <-it.logs:
   607  			it.Event = new(ContractAdvanceEpochs)
   608  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   609  				it.fail = err
   610  				return false
   611  			}
   612  			it.Event.Raw = log
   613  			return true
   614  
   615  		default:
   616  			return false
   617  		}
   618  	}
   619  	// Iterator still in progress, wait for either a data or an error event
   620  	select {
   621  	case log := <-it.logs:
   622  		it.Event = new(ContractAdvanceEpochs)
   623  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   624  			it.fail = err
   625  			return false
   626  		}
   627  		it.Event.Raw = log
   628  		return true
   629  
   630  	case err := <-it.sub.Err():
   631  		it.done = true
   632  		it.fail = err
   633  		return it.Next()
   634  	}
   635  }
   636  
   637  // Error returns any retrieval or parsing error occurred during filtering.
   638  func (it *ContractAdvanceEpochsIterator) Error() error {
   639  	return it.fail
   640  }
   641  
   642  // Close terminates the iteration process, releasing any pending underlying
   643  // resources.
   644  func (it *ContractAdvanceEpochsIterator) Close() error {
   645  	it.sub.Unsubscribe()
   646  	return nil
   647  }
   648  
   649  // ContractAdvanceEpochs represents a AdvanceEpochs event raised by the Contract contract.
   650  type ContractAdvanceEpochs struct {
   651  	Num *big.Int
   652  	Raw types.Log // Blockchain specific contextual infos
   653  }
   654  
   655  // FilterAdvanceEpochs is a free log retrieval operation binding the contract event 0x0151256d62457b809bbc891b1f81c6dd0b9987552c70ce915b519750cd434dd1.
   656  //
   657  // Solidity: event AdvanceEpochs(uint256 num)
   658  func (_Contract *ContractFilterer) FilterAdvanceEpochs(opts *bind.FilterOpts) (*ContractAdvanceEpochsIterator, error) {
   659  
   660  	logs, sub, err := _Contract.contract.FilterLogs(opts, "AdvanceEpochs")
   661  	if err != nil {
   662  		return nil, err
   663  	}
   664  	return &ContractAdvanceEpochsIterator{contract: _Contract.contract, event: "AdvanceEpochs", logs: logs, sub: sub}, nil
   665  }
   666  
   667  // WatchAdvanceEpochs is a free log subscription operation binding the contract event 0x0151256d62457b809bbc891b1f81c6dd0b9987552c70ce915b519750cd434dd1.
   668  //
   669  // Solidity: event AdvanceEpochs(uint256 num)
   670  func (_Contract *ContractFilterer) WatchAdvanceEpochs(opts *bind.WatchOpts, sink chan<- *ContractAdvanceEpochs) (event.Subscription, error) {
   671  
   672  	logs, sub, err := _Contract.contract.WatchLogs(opts, "AdvanceEpochs")
   673  	if err != nil {
   674  		return nil, err
   675  	}
   676  	return event.NewSubscription(func(quit <-chan struct{}) error {
   677  		defer sub.Unsubscribe()
   678  		for {
   679  			select {
   680  			case log := <-logs:
   681  				// New log arrived, parse the event and forward to the user
   682  				event := new(ContractAdvanceEpochs)
   683  				if err := _Contract.contract.UnpackLog(event, "AdvanceEpochs", log); err != nil {
   684  					return err
   685  				}
   686  				event.Raw = log
   687  
   688  				select {
   689  				case sink <- event:
   690  				case err := <-sub.Err():
   691  					return err
   692  				case <-quit:
   693  					return nil
   694  				}
   695  			case err := <-sub.Err():
   696  				return err
   697  			case <-quit:
   698  				return nil
   699  			}
   700  		}
   701  	}), nil
   702  }
   703  
   704  // ParseAdvanceEpochs is a log parse operation binding the contract event 0x0151256d62457b809bbc891b1f81c6dd0b9987552c70ce915b519750cd434dd1.
   705  //
   706  // Solidity: event AdvanceEpochs(uint256 num)
   707  func (_Contract *ContractFilterer) ParseAdvanceEpochs(log types.Log) (*ContractAdvanceEpochs, error) {
   708  	event := new(ContractAdvanceEpochs)
   709  	if err := _Contract.contract.UnpackLog(event, "AdvanceEpochs", log); err != nil {
   710  		return nil, err
   711  	}
   712  	event.Raw = log
   713  	return event, nil
   714  }
   715  
   716  // ContractUpdateNetworkRulesIterator is returned from FilterUpdateNetworkRules and is used to iterate over the raw logs and unpacked data for UpdateNetworkRules events raised by the Contract contract.
   717  type ContractUpdateNetworkRulesIterator struct {
   718  	Event *ContractUpdateNetworkRules // Event containing the contract specifics and raw log
   719  
   720  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   721  	event    string              // Event name to use for unpacking event data
   722  
   723  	logs chan types.Log        // Log channel receiving the found contract events
   724  	sub  u2u.Subscription // Subscription for errors, completion and termination
   725  	done bool                  // Whether the subscription completed delivering logs
   726  	fail error                 // Occurred error to stop iteration
   727  }
   728  
   729  // Next advances the iterator to the subsequent event, returning whether there
   730  // are any more events found. In case of a retrieval or parsing error, false is
   731  // returned and Error() can be queried for the exact failure.
   732  func (it *ContractUpdateNetworkRulesIterator) Next() bool {
   733  	// If the iterator failed, stop iterating
   734  	if it.fail != nil {
   735  		return false
   736  	}
   737  	// If the iterator completed, deliver directly whatever's available
   738  	if it.done {
   739  		select {
   740  		case log := <-it.logs:
   741  			it.Event = new(ContractUpdateNetworkRules)
   742  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   743  				it.fail = err
   744  				return false
   745  			}
   746  			it.Event.Raw = log
   747  			return true
   748  
   749  		default:
   750  			return false
   751  		}
   752  	}
   753  	// Iterator still in progress, wait for either a data or an error event
   754  	select {
   755  	case log := <-it.logs:
   756  		it.Event = new(ContractUpdateNetworkRules)
   757  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   758  			it.fail = err
   759  			return false
   760  		}
   761  		it.Event.Raw = log
   762  		return true
   763  
   764  	case err := <-it.sub.Err():
   765  		it.done = true
   766  		it.fail = err
   767  		return it.Next()
   768  	}
   769  }
   770  
   771  // Error returns any retrieval or parsing error occurred during filtering.
   772  func (it *ContractUpdateNetworkRulesIterator) Error() error {
   773  	return it.fail
   774  }
   775  
   776  // Close terminates the iteration process, releasing any pending underlying
   777  // resources.
   778  func (it *ContractUpdateNetworkRulesIterator) Close() error {
   779  	it.sub.Unsubscribe()
   780  	return nil
   781  }
   782  
   783  // ContractUpdateNetworkRules represents a UpdateNetworkRules event raised by the Contract contract.
   784  type ContractUpdateNetworkRules struct {
   785  	Diff []byte
   786  	Raw  types.Log // Blockchain specific contextual infos
   787  }
   788  
   789  // FilterUpdateNetworkRules is a free log retrieval operation binding the contract event 0x47d10eed096a44e3d0abc586c7e3a5d6cb5358cc90e7d437cd0627f7e765fb99.
   790  //
   791  // Solidity: event UpdateNetworkRules(bytes diff)
   792  func (_Contract *ContractFilterer) FilterUpdateNetworkRules(opts *bind.FilterOpts) (*ContractUpdateNetworkRulesIterator, error) {
   793  
   794  	logs, sub, err := _Contract.contract.FilterLogs(opts, "UpdateNetworkRules")
   795  	if err != nil {
   796  		return nil, err
   797  	}
   798  	return &ContractUpdateNetworkRulesIterator{contract: _Contract.contract, event: "UpdateNetworkRules", logs: logs, sub: sub}, nil
   799  }
   800  
   801  // WatchUpdateNetworkRules is a free log subscription operation binding the contract event 0x47d10eed096a44e3d0abc586c7e3a5d6cb5358cc90e7d437cd0627f7e765fb99.
   802  //
   803  // Solidity: event UpdateNetworkRules(bytes diff)
   804  func (_Contract *ContractFilterer) WatchUpdateNetworkRules(opts *bind.WatchOpts, sink chan<- *ContractUpdateNetworkRules) (event.Subscription, error) {
   805  
   806  	logs, sub, err := _Contract.contract.WatchLogs(opts, "UpdateNetworkRules")
   807  	if err != nil {
   808  		return nil, err
   809  	}
   810  	return event.NewSubscription(func(quit <-chan struct{}) error {
   811  		defer sub.Unsubscribe()
   812  		for {
   813  			select {
   814  			case log := <-logs:
   815  				// New log arrived, parse the event and forward to the user
   816  				event := new(ContractUpdateNetworkRules)
   817  				if err := _Contract.contract.UnpackLog(event, "UpdateNetworkRules", log); err != nil {
   818  					return err
   819  				}
   820  				event.Raw = log
   821  
   822  				select {
   823  				case sink <- event:
   824  				case err := <-sub.Err():
   825  					return err
   826  				case <-quit:
   827  					return nil
   828  				}
   829  			case err := <-sub.Err():
   830  				return err
   831  			case <-quit:
   832  				return nil
   833  			}
   834  		}
   835  	}), nil
   836  }
   837  
   838  // ParseUpdateNetworkRules is a log parse operation binding the contract event 0x47d10eed096a44e3d0abc586c7e3a5d6cb5358cc90e7d437cd0627f7e765fb99.
   839  //
   840  // Solidity: event UpdateNetworkRules(bytes diff)
   841  func (_Contract *ContractFilterer) ParseUpdateNetworkRules(log types.Log) (*ContractUpdateNetworkRules, error) {
   842  	event := new(ContractUpdateNetworkRules)
   843  	if err := _Contract.contract.UnpackLog(event, "UpdateNetworkRules", log); err != nil {
   844  		return nil, err
   845  	}
   846  	event.Raw = log
   847  	return event, nil
   848  }
   849  
   850  // ContractUpdateNetworkVersionIterator is returned from FilterUpdateNetworkVersion and is used to iterate over the raw logs and unpacked data for UpdateNetworkVersion events raised by the Contract contract.
   851  type ContractUpdateNetworkVersionIterator struct {
   852  	Event *ContractUpdateNetworkVersion // Event containing the contract specifics and raw log
   853  
   854  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   855  	event    string              // Event name to use for unpacking event data
   856  
   857  	logs chan types.Log        // Log channel receiving the found contract events
   858  	sub  u2u.Subscription // Subscription for errors, completion and termination
   859  	done bool                  // Whether the subscription completed delivering logs
   860  	fail error                 // Occurred error to stop iteration
   861  }
   862  
   863  // Next advances the iterator to the subsequent event, returning whether there
   864  // are any more events found. In case of a retrieval or parsing error, false is
   865  // returned and Error() can be queried for the exact failure.
   866  func (it *ContractUpdateNetworkVersionIterator) Next() bool {
   867  	// If the iterator failed, stop iterating
   868  	if it.fail != nil {
   869  		return false
   870  	}
   871  	// If the iterator completed, deliver directly whatever's available
   872  	if it.done {
   873  		select {
   874  		case log := <-it.logs:
   875  			it.Event = new(ContractUpdateNetworkVersion)
   876  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   877  				it.fail = err
   878  				return false
   879  			}
   880  			it.Event.Raw = log
   881  			return true
   882  
   883  		default:
   884  			return false
   885  		}
   886  	}
   887  	// Iterator still in progress, wait for either a data or an error event
   888  	select {
   889  	case log := <-it.logs:
   890  		it.Event = new(ContractUpdateNetworkVersion)
   891  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   892  			it.fail = err
   893  			return false
   894  		}
   895  		it.Event.Raw = log
   896  		return true
   897  
   898  	case err := <-it.sub.Err():
   899  		it.done = true
   900  		it.fail = err
   901  		return it.Next()
   902  	}
   903  }
   904  
   905  // Error returns any retrieval or parsing error occurred during filtering.
   906  func (it *ContractUpdateNetworkVersionIterator) Error() error {
   907  	return it.fail
   908  }
   909  
   910  // Close terminates the iteration process, releasing any pending underlying
   911  // resources.
   912  func (it *ContractUpdateNetworkVersionIterator) Close() error {
   913  	it.sub.Unsubscribe()
   914  	return nil
   915  }
   916  
   917  // ContractUpdateNetworkVersion represents a UpdateNetworkVersion event raised by the Contract contract.
   918  type ContractUpdateNetworkVersion struct {
   919  	Version *big.Int
   920  	Raw     types.Log // Blockchain specific contextual infos
   921  }
   922  
   923  // FilterUpdateNetworkVersion is a free log retrieval operation binding the contract event 0x2ccdfd47cf0c1f1069d949f1789bb79b2f12821f021634fc835af1de66ea2feb.
   924  //
   925  // Solidity: event UpdateNetworkVersion(uint256 version)
   926  func (_Contract *ContractFilterer) FilterUpdateNetworkVersion(opts *bind.FilterOpts) (*ContractUpdateNetworkVersionIterator, error) {
   927  
   928  	logs, sub, err := _Contract.contract.FilterLogs(opts, "UpdateNetworkVersion")
   929  	if err != nil {
   930  		return nil, err
   931  	}
   932  	return &ContractUpdateNetworkVersionIterator{contract: _Contract.contract, event: "UpdateNetworkVersion", logs: logs, sub: sub}, nil
   933  }
   934  
   935  // WatchUpdateNetworkVersion is a free log subscription operation binding the contract event 0x2ccdfd47cf0c1f1069d949f1789bb79b2f12821f021634fc835af1de66ea2feb.
   936  //
   937  // Solidity: event UpdateNetworkVersion(uint256 version)
   938  func (_Contract *ContractFilterer) WatchUpdateNetworkVersion(opts *bind.WatchOpts, sink chan<- *ContractUpdateNetworkVersion) (event.Subscription, error) {
   939  
   940  	logs, sub, err := _Contract.contract.WatchLogs(opts, "UpdateNetworkVersion")
   941  	if err != nil {
   942  		return nil, err
   943  	}
   944  	return event.NewSubscription(func(quit <-chan struct{}) error {
   945  		defer sub.Unsubscribe()
   946  		for {
   947  			select {
   948  			case log := <-logs:
   949  				// New log arrived, parse the event and forward to the user
   950  				event := new(ContractUpdateNetworkVersion)
   951  				if err := _Contract.contract.UnpackLog(event, "UpdateNetworkVersion", log); err != nil {
   952  					return err
   953  				}
   954  				event.Raw = log
   955  
   956  				select {
   957  				case sink <- event:
   958  				case err := <-sub.Err():
   959  					return err
   960  				case <-quit:
   961  					return nil
   962  				}
   963  			case err := <-sub.Err():
   964  				return err
   965  			case <-quit:
   966  				return nil
   967  			}
   968  		}
   969  	}), nil
   970  }
   971  
   972  // ParseUpdateNetworkVersion is a log parse operation binding the contract event 0x2ccdfd47cf0c1f1069d949f1789bb79b2f12821f021634fc835af1de66ea2feb.
   973  //
   974  // Solidity: event UpdateNetworkVersion(uint256 version)
   975  func (_Contract *ContractFilterer) ParseUpdateNetworkVersion(log types.Log) (*ContractUpdateNetworkVersion, error) {
   976  	event := new(ContractUpdateNetworkVersion)
   977  	if err := _Contract.contract.UnpackLog(event, "UpdateNetworkVersion", log); err != nil {
   978  		return nil, err
   979  	}
   980  	event.Raw = log
   981  	return event, nil
   982  }
   983  
   984  // ContractUpdateValidatorPubkeyIterator is returned from FilterUpdateValidatorPubkey and is used to iterate over the raw logs and unpacked data for UpdateValidatorPubkey events raised by the Contract contract.
   985  type ContractUpdateValidatorPubkeyIterator struct {
   986  	Event *ContractUpdateValidatorPubkey // Event containing the contract specifics and raw log
   987  
   988  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   989  	event    string              // Event name to use for unpacking event data
   990  
   991  	logs chan types.Log        // Log channel receiving the found contract events
   992  	sub  u2u.Subscription // Subscription for errors, completion and termination
   993  	done bool                  // Whether the subscription completed delivering logs
   994  	fail error                 // Occurred error to stop iteration
   995  }
   996  
   997  // Next advances the iterator to the subsequent event, returning whether there
   998  // are any more events found. In case of a retrieval or parsing error, false is
   999  // returned and Error() can be queried for the exact failure.
  1000  func (it *ContractUpdateValidatorPubkeyIterator) Next() bool {
  1001  	// If the iterator failed, stop iterating
  1002  	if it.fail != nil {
  1003  		return false
  1004  	}
  1005  	// If the iterator completed, deliver directly whatever's available
  1006  	if it.done {
  1007  		select {
  1008  		case log := <-it.logs:
  1009  			it.Event = new(ContractUpdateValidatorPubkey)
  1010  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1011  				it.fail = err
  1012  				return false
  1013  			}
  1014  			it.Event.Raw = log
  1015  			return true
  1016  
  1017  		default:
  1018  			return false
  1019  		}
  1020  	}
  1021  	// Iterator still in progress, wait for either a data or an error event
  1022  	select {
  1023  	case log := <-it.logs:
  1024  		it.Event = new(ContractUpdateValidatorPubkey)
  1025  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1026  			it.fail = err
  1027  			return false
  1028  		}
  1029  		it.Event.Raw = log
  1030  		return true
  1031  
  1032  	case err := <-it.sub.Err():
  1033  		it.done = true
  1034  		it.fail = err
  1035  		return it.Next()
  1036  	}
  1037  }
  1038  
  1039  // Error returns any retrieval or parsing error occurred during filtering.
  1040  func (it *ContractUpdateValidatorPubkeyIterator) Error() error {
  1041  	return it.fail
  1042  }
  1043  
  1044  // Close terminates the iteration process, releasing any pending underlying
  1045  // resources.
  1046  func (it *ContractUpdateValidatorPubkeyIterator) Close() error {
  1047  	it.sub.Unsubscribe()
  1048  	return nil
  1049  }
  1050  
  1051  // ContractUpdateValidatorPubkey represents a UpdateValidatorPubkey event raised by the Contract contract.
  1052  type ContractUpdateValidatorPubkey struct {
  1053  	ValidatorID *big.Int
  1054  	Pubkey      []byte
  1055  	Raw         types.Log // Blockchain specific contextual infos
  1056  }
  1057  
  1058  // FilterUpdateValidatorPubkey is a free log retrieval operation binding the contract event 0x0f0ef1ab97439def0a9d2c6d9dc166207f1b13b99e62b442b2993d6153c63a6e.
  1059  //
  1060  // Solidity: event UpdateValidatorPubkey(uint256 indexed validatorID, bytes pubkey)
  1061  func (_Contract *ContractFilterer) FilterUpdateValidatorPubkey(opts *bind.FilterOpts, validatorID []*big.Int) (*ContractUpdateValidatorPubkeyIterator, error) {
  1062  
  1063  	var validatorIDRule []interface{}
  1064  	for _, validatorIDItem := range validatorID {
  1065  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  1066  	}
  1067  
  1068  	logs, sub, err := _Contract.contract.FilterLogs(opts, "UpdateValidatorPubkey", validatorIDRule)
  1069  	if err != nil {
  1070  		return nil, err
  1071  	}
  1072  	return &ContractUpdateValidatorPubkeyIterator{contract: _Contract.contract, event: "UpdateValidatorPubkey", logs: logs, sub: sub}, nil
  1073  }
  1074  
  1075  // WatchUpdateValidatorPubkey is a free log subscription operation binding the contract event 0x0f0ef1ab97439def0a9d2c6d9dc166207f1b13b99e62b442b2993d6153c63a6e.
  1076  //
  1077  // Solidity: event UpdateValidatorPubkey(uint256 indexed validatorID, bytes pubkey)
  1078  func (_Contract *ContractFilterer) WatchUpdateValidatorPubkey(opts *bind.WatchOpts, sink chan<- *ContractUpdateValidatorPubkey, validatorID []*big.Int) (event.Subscription, error) {
  1079  
  1080  	var validatorIDRule []interface{}
  1081  	for _, validatorIDItem := range validatorID {
  1082  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  1083  	}
  1084  
  1085  	logs, sub, err := _Contract.contract.WatchLogs(opts, "UpdateValidatorPubkey", validatorIDRule)
  1086  	if err != nil {
  1087  		return nil, err
  1088  	}
  1089  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1090  		defer sub.Unsubscribe()
  1091  		for {
  1092  			select {
  1093  			case log := <-logs:
  1094  				// New log arrived, parse the event and forward to the user
  1095  				event := new(ContractUpdateValidatorPubkey)
  1096  				if err := _Contract.contract.UnpackLog(event, "UpdateValidatorPubkey", log); err != nil {
  1097  					return err
  1098  				}
  1099  				event.Raw = log
  1100  
  1101  				select {
  1102  				case sink <- event:
  1103  				case err := <-sub.Err():
  1104  					return err
  1105  				case <-quit:
  1106  					return nil
  1107  				}
  1108  			case err := <-sub.Err():
  1109  				return err
  1110  			case <-quit:
  1111  				return nil
  1112  			}
  1113  		}
  1114  	}), nil
  1115  }
  1116  
  1117  // ParseUpdateValidatorPubkey is a log parse operation binding the contract event 0x0f0ef1ab97439def0a9d2c6d9dc166207f1b13b99e62b442b2993d6153c63a6e.
  1118  //
  1119  // Solidity: event UpdateValidatorPubkey(uint256 indexed validatorID, bytes pubkey)
  1120  func (_Contract *ContractFilterer) ParseUpdateValidatorPubkey(log types.Log) (*ContractUpdateValidatorPubkey, error) {
  1121  	event := new(ContractUpdateValidatorPubkey)
  1122  	if err := _Contract.contract.UnpackLog(event, "UpdateValidatorPubkey", log); err != nil {
  1123  		return nil, err
  1124  	}
  1125  	event.Raw = log
  1126  	return event, nil
  1127  }
  1128  
  1129  // ContractUpdateValidatorWeightIterator is returned from FilterUpdateValidatorWeight and is used to iterate over the raw logs and unpacked data for UpdateValidatorWeight events raised by the Contract contract.
  1130  type ContractUpdateValidatorWeightIterator struct {
  1131  	Event *ContractUpdateValidatorWeight // Event containing the contract specifics and raw log
  1132  
  1133  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1134  	event    string              // Event name to use for unpacking event data
  1135  
  1136  	logs chan types.Log        // Log channel receiving the found contract events
  1137  	sub  u2u.Subscription // Subscription for errors, completion and termination
  1138  	done bool                  // Whether the subscription completed delivering logs
  1139  	fail error                 // Occurred error to stop iteration
  1140  }
  1141  
  1142  // Next advances the iterator to the subsequent event, returning whether there
  1143  // are any more events found. In case of a retrieval or parsing error, false is
  1144  // returned and Error() can be queried for the exact failure.
  1145  func (it *ContractUpdateValidatorWeightIterator) Next() bool {
  1146  	// If the iterator failed, stop iterating
  1147  	if it.fail != nil {
  1148  		return false
  1149  	}
  1150  	// If the iterator completed, deliver directly whatever's available
  1151  	if it.done {
  1152  		select {
  1153  		case log := <-it.logs:
  1154  			it.Event = new(ContractUpdateValidatorWeight)
  1155  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1156  				it.fail = err
  1157  				return false
  1158  			}
  1159  			it.Event.Raw = log
  1160  			return true
  1161  
  1162  		default:
  1163  			return false
  1164  		}
  1165  	}
  1166  	// Iterator still in progress, wait for either a data or an error event
  1167  	select {
  1168  	case log := <-it.logs:
  1169  		it.Event = new(ContractUpdateValidatorWeight)
  1170  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1171  			it.fail = err
  1172  			return false
  1173  		}
  1174  		it.Event.Raw = log
  1175  		return true
  1176  
  1177  	case err := <-it.sub.Err():
  1178  		it.done = true
  1179  		it.fail = err
  1180  		return it.Next()
  1181  	}
  1182  }
  1183  
  1184  // Error returns any retrieval or parsing error occurred during filtering.
  1185  func (it *ContractUpdateValidatorWeightIterator) Error() error {
  1186  	return it.fail
  1187  }
  1188  
  1189  // Close terminates the iteration process, releasing any pending underlying
  1190  // resources.
  1191  func (it *ContractUpdateValidatorWeightIterator) Close() error {
  1192  	it.sub.Unsubscribe()
  1193  	return nil
  1194  }
  1195  
  1196  // ContractUpdateValidatorWeight represents a UpdateValidatorWeight event raised by the Contract contract.
  1197  type ContractUpdateValidatorWeight struct {
  1198  	ValidatorID *big.Int
  1199  	Weight      *big.Int
  1200  	Raw         types.Log // Blockchain specific contextual infos
  1201  }
  1202  
  1203  // FilterUpdateValidatorWeight is a free log retrieval operation binding the contract event 0xb975807576e3b1461be7de07ebf7d20e4790ed802d7a0c4fdd0a1a13df72a935.
  1204  //
  1205  // Solidity: event UpdateValidatorWeight(uint256 indexed validatorID, uint256 weight)
  1206  func (_Contract *ContractFilterer) FilterUpdateValidatorWeight(opts *bind.FilterOpts, validatorID []*big.Int) (*ContractUpdateValidatorWeightIterator, error) {
  1207  
  1208  	var validatorIDRule []interface{}
  1209  	for _, validatorIDItem := range validatorID {
  1210  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  1211  	}
  1212  
  1213  	logs, sub, err := _Contract.contract.FilterLogs(opts, "UpdateValidatorWeight", validatorIDRule)
  1214  	if err != nil {
  1215  		return nil, err
  1216  	}
  1217  	return &ContractUpdateValidatorWeightIterator{contract: _Contract.contract, event: "UpdateValidatorWeight", logs: logs, sub: sub}, nil
  1218  }
  1219  
  1220  // WatchUpdateValidatorWeight is a free log subscription operation binding the contract event 0xb975807576e3b1461be7de07ebf7d20e4790ed802d7a0c4fdd0a1a13df72a935.
  1221  //
  1222  // Solidity: event UpdateValidatorWeight(uint256 indexed validatorID, uint256 weight)
  1223  func (_Contract *ContractFilterer) WatchUpdateValidatorWeight(opts *bind.WatchOpts, sink chan<- *ContractUpdateValidatorWeight, validatorID []*big.Int) (event.Subscription, error) {
  1224  
  1225  	var validatorIDRule []interface{}
  1226  	for _, validatorIDItem := range validatorID {
  1227  		validatorIDRule = append(validatorIDRule, validatorIDItem)
  1228  	}
  1229  
  1230  	logs, sub, err := _Contract.contract.WatchLogs(opts, "UpdateValidatorWeight", validatorIDRule)
  1231  	if err != nil {
  1232  		return nil, err
  1233  	}
  1234  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1235  		defer sub.Unsubscribe()
  1236  		for {
  1237  			select {
  1238  			case log := <-logs:
  1239  				// New log arrived, parse the event and forward to the user
  1240  				event := new(ContractUpdateValidatorWeight)
  1241  				if err := _Contract.contract.UnpackLog(event, "UpdateValidatorWeight", log); err != nil {
  1242  					return err
  1243  				}
  1244  				event.Raw = log
  1245  
  1246  				select {
  1247  				case sink <- event:
  1248  				case err := <-sub.Err():
  1249  					return err
  1250  				case <-quit:
  1251  					return nil
  1252  				}
  1253  			case err := <-sub.Err():
  1254  				return err
  1255  			case <-quit:
  1256  				return nil
  1257  			}
  1258  		}
  1259  	}), nil
  1260  }
  1261  
  1262  // ParseUpdateValidatorWeight is a log parse operation binding the contract event 0xb975807576e3b1461be7de07ebf7d20e4790ed802d7a0c4fdd0a1a13df72a935.
  1263  //
  1264  // Solidity: event UpdateValidatorWeight(uint256 indexed validatorID, uint256 weight)
  1265  func (_Contract *ContractFilterer) ParseUpdateValidatorWeight(log types.Log) (*ContractUpdateValidatorWeight, error) {
  1266  	event := new(ContractUpdateValidatorWeight)
  1267  	if err := _Contract.contract.UnpackLog(event, "UpdateValidatorWeight", log); err != nil {
  1268  		return nil, err
  1269  	}
  1270  	event.Raw = log
  1271  	return event, nil
  1272  }
  1273  
  1274  // ContractUpdatedBackendIterator is returned from FilterUpdatedBackend and is used to iterate over the raw logs and unpacked data for UpdatedBackend events raised by the Contract contract.
  1275  type ContractUpdatedBackendIterator struct {
  1276  	Event *ContractUpdatedBackend // Event containing the contract specifics and raw log
  1277  
  1278  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1279  	event    string              // Event name to use for unpacking event data
  1280  
  1281  	logs chan types.Log        // Log channel receiving the found contract events
  1282  	sub  u2u.Subscription // Subscription for errors, completion and termination
  1283  	done bool                  // Whether the subscription completed delivering logs
  1284  	fail error                 // Occurred error to stop iteration
  1285  }
  1286  
  1287  // Next advances the iterator to the subsequent event, returning whether there
  1288  // are any more events found. In case of a retrieval or parsing error, false is
  1289  // returned and Error() can be queried for the exact failure.
  1290  func (it *ContractUpdatedBackendIterator) Next() bool {
  1291  	// If the iterator failed, stop iterating
  1292  	if it.fail != nil {
  1293  		return false
  1294  	}
  1295  	// If the iterator completed, deliver directly whatever's available
  1296  	if it.done {
  1297  		select {
  1298  		case log := <-it.logs:
  1299  			it.Event = new(ContractUpdatedBackend)
  1300  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1301  				it.fail = err
  1302  				return false
  1303  			}
  1304  			it.Event.Raw = log
  1305  			return true
  1306  
  1307  		default:
  1308  			return false
  1309  		}
  1310  	}
  1311  	// Iterator still in progress, wait for either a data or an error event
  1312  	select {
  1313  	case log := <-it.logs:
  1314  		it.Event = new(ContractUpdatedBackend)
  1315  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1316  			it.fail = err
  1317  			return false
  1318  		}
  1319  		it.Event.Raw = log
  1320  		return true
  1321  
  1322  	case err := <-it.sub.Err():
  1323  		it.done = true
  1324  		it.fail = err
  1325  		return it.Next()
  1326  	}
  1327  }
  1328  
  1329  // Error returns any retrieval or parsing error occurred during filtering.
  1330  func (it *ContractUpdatedBackendIterator) Error() error {
  1331  	return it.fail
  1332  }
  1333  
  1334  // Close terminates the iteration process, releasing any pending underlying
  1335  // resources.
  1336  func (it *ContractUpdatedBackendIterator) Close() error {
  1337  	it.sub.Unsubscribe()
  1338  	return nil
  1339  }
  1340  
  1341  // ContractUpdatedBackend represents a UpdatedBackend event raised by the Contract contract.
  1342  type ContractUpdatedBackend struct {
  1343  	Backend common.Address
  1344  	Raw     types.Log // Blockchain specific contextual infos
  1345  }
  1346  
  1347  // FilterUpdatedBackend is a free log retrieval operation binding the contract event 0x64ee8f7bfc37fc205d7194ee3d64947ab7b57e663cd0d1abd3ef245035830693.
  1348  //
  1349  // Solidity: event UpdatedBackend(address indexed backend)
  1350  func (_Contract *ContractFilterer) FilterUpdatedBackend(opts *bind.FilterOpts, backend []common.Address) (*ContractUpdatedBackendIterator, error) {
  1351  
  1352  	var backendRule []interface{}
  1353  	for _, backendItem := range backend {
  1354  		backendRule = append(backendRule, backendItem)
  1355  	}
  1356  
  1357  	logs, sub, err := _Contract.contract.FilterLogs(opts, "UpdatedBackend", backendRule)
  1358  	if err != nil {
  1359  		return nil, err
  1360  	}
  1361  	return &ContractUpdatedBackendIterator{contract: _Contract.contract, event: "UpdatedBackend", logs: logs, sub: sub}, nil
  1362  }
  1363  
  1364  // WatchUpdatedBackend is a free log subscription operation binding the contract event 0x64ee8f7bfc37fc205d7194ee3d64947ab7b57e663cd0d1abd3ef245035830693.
  1365  //
  1366  // Solidity: event UpdatedBackend(address indexed backend)
  1367  func (_Contract *ContractFilterer) WatchUpdatedBackend(opts *bind.WatchOpts, sink chan<- *ContractUpdatedBackend, backend []common.Address) (event.Subscription, error) {
  1368  
  1369  	var backendRule []interface{}
  1370  	for _, backendItem := range backend {
  1371  		backendRule = append(backendRule, backendItem)
  1372  	}
  1373  
  1374  	logs, sub, err := _Contract.contract.WatchLogs(opts, "UpdatedBackend", backendRule)
  1375  	if err != nil {
  1376  		return nil, err
  1377  	}
  1378  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1379  		defer sub.Unsubscribe()
  1380  		for {
  1381  			select {
  1382  			case log := <-logs:
  1383  				// New log arrived, parse the event and forward to the user
  1384  				event := new(ContractUpdatedBackend)
  1385  				if err := _Contract.contract.UnpackLog(event, "UpdatedBackend", log); err != nil {
  1386  					return err
  1387  				}
  1388  				event.Raw = log
  1389  
  1390  				select {
  1391  				case sink <- event:
  1392  				case err := <-sub.Err():
  1393  					return err
  1394  				case <-quit:
  1395  					return nil
  1396  				}
  1397  			case err := <-sub.Err():
  1398  				return err
  1399  			case <-quit:
  1400  				return nil
  1401  			}
  1402  		}
  1403  	}), nil
  1404  }
  1405  
  1406  // ParseUpdatedBackend is a log parse operation binding the contract event 0x64ee8f7bfc37fc205d7194ee3d64947ab7b57e663cd0d1abd3ef245035830693.
  1407  //
  1408  // Solidity: event UpdatedBackend(address indexed backend)
  1409  func (_Contract *ContractFilterer) ParseUpdatedBackend(log types.Log) (*ContractUpdatedBackend, error) {
  1410  	event := new(ContractUpdatedBackend)
  1411  	if err := _Contract.contract.UnpackLog(event, "UpdatedBackend", log); err != nil {
  1412  		return nil, err
  1413  	}
  1414  	event.Raw = log
  1415  	return event, nil
  1416  }
  1417  
  1418  var ContractBinRuntime = "0x608060405234801561001057600080fd5b50600436106101365760003560e01c806379bead38116100b2578063d6a0c7af11610081578063e08d7e6611610066578063e08d7e6614610676578063e30443bc146106e6578063ebdf104c1461071f57610136565b8063d6a0c7af14610608578063da7fc24f1461064357610136565b806379bead38146103d65780637f52e13e1461040f578063a4066fbe14610575578063b9cc6b1c1461059857610136565b8063242a6e3f1161010957806339e503ab116100ee57806339e503ab146102b1578063485cc955146102f05780634feb92f31461032b57610136565b8063242a6e3f1461021d578063267ab4461461029457610136565b806307690b2a1461013b5780630aeeca001461017857806318f628d4146101955780631e702f83146101fa575b600080fd5b6101766004803603604081101561015157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610885565b005b6101766004803603602081101561018e57600080fd5b5035610989565b61017660048036036101208110156101ac57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060408101359060608101359060808101359060a08101359060c08101359060e0810135906101000135610a2b565b6101766004803603604081101561021057600080fd5b5080359060200135610b4f565b6101766004803603604081101561023357600080fd5b8135919081019060408101602082013564010000000081111561025557600080fd5b82018360208201111561026757600080fd5b8035906020019184600183028401116401000000008311171561028957600080fd5b509092509050610c1c565b610176600480360360208110156102aa57600080fd5b5035610cee565b610176600480360360608110156102c757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359060400135610d90565b6101766004803603604081101561030657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610e9b565b610176600480360361010081101561034257600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561037f57600080fd5b82018360208201111561039157600080fd5b803590602001918460018302840111640100000000831117156103b357600080fd5b919350915080359060208101359060408101359060608101359060800135611043565b610176600480360360408110156103ec57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561119b565b610176600480360360a081101561042557600080fd5b81019060208101813564010000000081111561044057600080fd5b82018360208201111561045257600080fd5b8035906020019184602083028401116401000000008311171561047457600080fd5b91939092909160208101903564010000000081111561049257600080fd5b8201836020820111156104a457600080fd5b803590602001918460208302840111640100000000831117156104c657600080fd5b9193909290916020810190356401000000008111156104e457600080fd5b8201836020820111156104f657600080fd5b8035906020019184602083028401116401000000008311171561051857600080fd5b91939092909160208101903564010000000081111561053657600080fd5b82018360208201111561054857600080fd5b8035906020019184602083028401116401000000008311171561056a57600080fd5b919350915035611282565b6101766004803603604081101561058b57600080fd5b5080359060200135611411565b610176600480360360208110156105ae57600080fd5b8101906020810181356401000000008111156105c957600080fd5b8201836020820111156105db57600080fd5b803590602001918460018302840111640100000000831117156105fd57600080fd5b5090925090506114b7565b6101766004803603604081101561061e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611587565b6101766004803603602081101561065957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661166f565b6101766004803603602081101561068c57600080fd5b8101906020810181356401000000008111156106a757600080fd5b8201836020820111156106b957600080fd5b803590602001918460208302840111640100000000831117156106db57600080fd5b509092509050611763565b610176600480360360408110156106fc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611859565b6101766004803603608081101561073557600080fd5b81019060208101813564010000000081111561075057600080fd5b82018360208201111561076257600080fd5b8035906020019184602083028401116401000000008311171561078457600080fd5b9193909290916020810190356401000000008111156107a257600080fd5b8201836020820111156107b457600080fd5b803590602001918460208302840111640100000000831117156107d657600080fd5b9193909290916020810190356401000000008111156107f457600080fd5b82018360208201111561080657600080fd5b8035906020019184602083028401116401000000008311171561082857600080fd5b91939092909160208101903564010000000081111561084657600080fd5b82018360208201111561085857600080fd5b8035906020019184602083028401116401000000008311171561087a57600080fd5b509092509050611940565b60345473ffffffffffffffffffffffffffffffffffffffff1633146108f1576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b603554604080517f07690b2a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301528481166024830152915191909216916307690b2a91604480830192600092919082900301818387803b15801561096d57600080fd5b505af1158015610981573d6000803e3d6000fd5b505050505050565b60345473ffffffffffffffffffffffffffffffffffffffff1633146109f5576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b6040805182815290517f0151256d62457b809bbc891b1f81c6dd0b9987552c70ce915b519750cd434dd19181900360200190a150565b3315610a7e576040805162461bcd60e51b815260206004820152600c60248201527f6e6f742063616c6c61626c650000000000000000000000000000000000000000604482015290519081900360640190fd5b603454604080517f18f628d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004830152602482018c9052604482018b9052606482018a90526084820189905260a4820188905260c4820187905260e482018690526101048201859052915191909216916318f628d49161012480830192600092919082900301818387803b158015610b2c57600080fd5b505af1158015610b40573d6000803e3d6000fd5b50505050505050505050505050565b3315610ba2576040805162461bcd60e51b815260206004820152600c60248201527f6e6f742063616c6c61626c650000000000000000000000000000000000000000604482015290519081900360640190fd5b603454604080517f1e702f830000000000000000000000000000000000000000000000000000000081526004810185905260248101849052905173ffffffffffffffffffffffffffffffffffffffff90921691631e702f839160448082019260009290919082900301818387803b15801561096d57600080fd5b60345473ffffffffffffffffffffffffffffffffffffffff163314610c88576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b827f0f0ef1ab97439def0a9d2c6d9dc166207f1b13b99e62b442b2993d6153c63a6e838360405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2505050565b60345473ffffffffffffffffffffffffffffffffffffffff163314610d5a576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b6040805182815290517f2ccdfd47cf0c1f1069d949f1789bb79b2f12821f021634fc835af1de66ea2feb9181900360200190a150565b60345473ffffffffffffffffffffffffffffffffffffffff163314610dfc576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b603554604080517f39e503ab00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301526024820186905260448201859052915191909216916339e503ab91606480830192600092919082900301818387803b158015610e7e57600080fd5b505af1158015610e92573d6000803e3d6000fd5b50505050505050565b600054610100900460ff1680610eb45750610eb4611af5565b80610ec2575060005460ff16155b610efd5760405162461bcd60e51b815260040180806020018281038252602e815260200180611afc602e913960400191505060405180910390fd5b600054610100900460ff16158015610f6357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b603480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091556040517f64ee8f7bfc37fc205d7194ee3d64947ab7b57e663cd0d1abd3ef24503583069390600090a2603580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055801561103e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b505050565b3315611096576040805162461bcd60e51b815260206004820152600c60248201527f6e6f742063616c6c61626c650000000000000000000000000000000000000000604482015290519081900360640190fd5b603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634feb92f38a8a8a8a8a8a8a8a8a6040518a63ffffffff1660e01b8152600401808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001898152602001806020018781526020018681526020018581526020018481526020018381526020018281038252898982818152602001925080828437600081840152601f19601f8201169050808301925050509a5050505050505050505050600060405180830381600087803b158015610b2c57600080fd5b60345473ffffffffffffffffffffffffffffffffffffffff163314611207576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b603554604080517f79bead3800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052915191909216916379bead3891604480830192600092919082900301818387803b15801561096d57600080fd5b33156112d5576040805162461bcd60e51b815260206004820152600c60248201527f6e6f742063616c6c61626c650000000000000000000000000000000000000000604482015290519081900360640190fd5b603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663592fe0c08a8a8a8a8a8a8a8a8a6040518a63ffffffff1660e01b8152600401808060200180602001806020018060200186815260200185810385528e8e82818152602001925060200280828437600083820152601f01601f191690910186810385528c8152602090810191508d908d0280828437600083820152601f01601f191690910186810384528a8152602090810191508b908b0280828437600083820152601f01601f19169091018681038352888152602090810191508990890280828437600081840152601f19601f8201169050808301925050509d5050505050505050505050505050600060405180830381600087803b158015610b2c57600080fd5b60345473ffffffffffffffffffffffffffffffffffffffff16331461147d576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b60408051828152905183917fb975807576e3b1461be7de07ebf7d20e4790ed802d7a0c4fdd0a1a13df72a935919081900360200190a25050565b60345473ffffffffffffffffffffffffffffffffffffffff163314611523576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b7f47d10eed096a44e3d0abc586c7e3a5d6cb5358cc90e7d437cd0627f7e765fb99828260405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a15050565b60345473ffffffffffffffffffffffffffffffffffffffff1633146115f3576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b603554604080517fd6a0c7af00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015284811660248301529151919092169163d6a0c7af91604480830192600092919082900301818387803b15801561096d57600080fd5b60345473ffffffffffffffffffffffffffffffffffffffff1633146116db576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b60405173ffffffffffffffffffffffffffffffffffffffff8216907f64ee8f7bfc37fc205d7194ee3d64947ab7b57e663cd0d1abd3ef24503583069390600090a2603480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b33156117b6576040805162461bcd60e51b815260206004820152600c60248201527f6e6f742063616c6c61626c650000000000000000000000000000000000000000604482015290519081900360640190fd5b6034546040517fe08d7e660000000000000000000000000000000000000000000000000000000081526020600482018181526024830185905273ffffffffffffffffffffffffffffffffffffffff9093169263e08d7e6692869286929182916044909101908590850280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561096d57600080fd5b60345473ffffffffffffffffffffffffffffffffffffffff1633146118c5576040805162461bcd60e51b815260206004820152601960248201527f63616c6c6572206973206e6f7420746865206261636b656e6400000000000000604482015290519081900360640190fd5b603554604080517fe30443bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529151919092169163e30443bc91604480830192600092919082900301818387803b15801561096d57600080fd5b3315611993576040805162461bcd60e51b815260206004820152600c60248201527f6e6f742063616c6c61626c650000000000000000000000000000000000000000604482015290519081900360640190fd5b603460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663592fe0c0898989898989898963322adc3a6040518a63ffffffff1660e01b8152600401808060200180602001806020018060200186815260200185810385528e8e82818152602001925060200280828437600083820152601f01601f191690910186810385528c8152602090810191508d908d0280828437600083820152601f01601f191690910186810384528a8152602090810191508b908b0280828437600083820152601f01601f19169091018681038352888152602090810191508990890280828437600081840152601f19601f8201169050808301925050509d5050505050505050505050505050600060405180830381600087803b158015611ad357600080fd5b505af1158015611ae7573d6000803e3d6000fd5b505050505050505050505050565b303b159056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a265627a7a72315820962250f3ef56c54b3df8ce7213cfcf494e44135e9c70003b4f86fe5ef1bcbb9f64736f6c63430005110032"