github.com/codingfuture/orig-energi3@v0.8.4/energi/abi/MasternodeRegistryV2.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 abi
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	ethereum "github.com/ethereum/go-ethereum"
    11  	"github.com/ethereum/go-ethereum/accounts/abi"
    12  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    13  	"github.com/ethereum/go-ethereum/common"
    14  	"github.com/ethereum/go-ethereum/core/types"
    15  	"github.com/ethereum/go-ethereum/event"
    16  )
    17  
    18  // Reference imports to suppress errors if they are not otherwise used.
    19  var (
    20  	_ = big.NewInt
    21  	_ = strings.NewReader
    22  	_ = ethereum.NotFound
    23  	_ = abi.U256
    24  	_ = bind.Bind
    25  	_ = common.Big1
    26  	_ = types.BloomLookup
    27  	_ = event.NewSubscription
    28  )
    29  
    30  // MasternodeRegistryV2ABI is the input ABI used to generate the binding from.
    31  const MasternodeRegistryV2ABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_proxy\",\"type\":\"address\"},{\"internalType\":\"contractIGovernedProxy\",\"name\":\"_token_proxy\",\"type\":\"address\"},{\"internalType\":\"contractIGovernedProxy\",\"name\":\"_treasury_proxy\",\"type\":\"address\"},{\"internalType\":\"uint256[5]\",\"name\":\"_config\",\"type\":\"uint256[5]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"masternode\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"ipv4address\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32[2]\",\"name\":\"enode\",\"type\":\"bytes32[2]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"}],\"name\":\"Announced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"masternode\",\"type\":\"address\"}],\"name\":\"Deactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"masternode\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"Denounced\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"masternode\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"Invalidation\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"masternode\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"ipv4address\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[2]\",\"name\":\"enode\",\"type\":\"bytes32[2]\"}],\"name\":\"announce\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"masternode\",\"type\":\"address\"}],\"name\":\"canHeartbeat\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"can_heartbeat\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"masternode\",\"type\":\"address\"}],\"name\":\"canInvalidate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"can_invalidate\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cleanup_period\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"collateralLimits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"count\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"active\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"total\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"active_collateral\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"total_collateral\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max_of_all_times\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"curr_validation_ends\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"curr_validation_offset\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"current_masternode\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"current_payouts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"masternode\",\"type\":\"address\"}],\"name\":\"denounce\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contractIGovernedContract\",\"name\":\"_newImpl\",\"type\":\"address\"}],\"name\":\"destroy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"enumerate\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"masternodes\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"enumerateActive\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"masternodes\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"getReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"block_number\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"block_hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"sw_features\",\"type\":\"uint256\"}],\"name\":\"heartbeat\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"masternode\",\"type\":\"address\"}],\"name\":\"info\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"ipv4address\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[2]\",\"name\":\"enode\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"announced_block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sw_features\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"masternode\",\"type\":\"address\"}],\"name\":\"invalidate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"masternode\",\"type\":\"address\"}],\"name\":\"isActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"last_block_number\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contractIGovernedContract\",\"name\":\"_oldImpl\",\"type\":\"address\"}],\"name\":\"migrate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"mn_active\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"mn_active_collateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"mn_announced\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"mn_announced_collateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"mn_ever_collateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"mn_status\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"sw_features\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"next_heartbeat\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inactive_since\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validator_index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"invalidations\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"seq_payouts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last_vote_epoch\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"onCollateralUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ownerInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"masternode\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"ipv4address\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[2]\",\"name\":\"enode\",\"type\":\"bytes32[2]\"},{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"announced_block\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sw_features\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"payments_per_block\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"proxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"require_validation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"reward\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"token_proxy\",\"outputs\":[{\"internalType\":\"contractIGovernedProxy\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"treasury_proxy\",\"outputs\":[{\"internalType\":\"contractIGovernedProxy\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"v1storage\",\"outputs\":[{\"internalType\":\"contractStorageMasternodeRegistryV1\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"masternode\",\"type\":\"address\"}],\"name\":\"validationTarget\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"validation_periods\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"validator_list\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
    32  
    33  // MasternodeRegistryV2Bin is the compiled bytecode used for deploying new contracts.
    34  const MasternodeRegistryV2Bin = `60806040523480156200001157600080fd5b5060405162004c8338038062004c8383398181016040526101008110156200003857600080fd5b5080516020820151604080840151600080546001600160a01b0319166001600160a01b038616179055905192939192909160600190620000789062000262565b604051809103906000f08015801562000095573d6000803e3d6000fd5b50600280546001600160a01b03199081166001600160a01b03938416179091556003805482168684161790556004805490911691841691909117905580516008819055602082015160098190556040830151600a556080830151600b5511156200016057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f56616c69646174696f6e73203e20526571756972650000000000000000000000604482015290519081900360640190fd5b6060810151600c819055683635c9adc5dea00000811015620001e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e697469616c20636f6c6c61746572616c0000000000000000000000000000604482015290519081900360640190fd5b620001f66001600160e01b036200020116565b505050505062000270565b60135443106200026057601154600954808210156200022257505062000260565b60008183816200022e57fe5b049050818110156200023d5750805b43808201601355600019808501910140816200025557fe5b066001016014555050505b565b61097b806200430883390190565b61408880620002806000396000f3fe60806040526004361061029f5760003560e01c806373b245401161016e578063cb4f40c5116100cb578063d9966aba1161007f578063e2cb219511610064578063e2cb2195146109f4578063ec55688914610a22578063ff9f78b314610a375761029f565b8063d9966aba1461094f578063e1d6f43a1461098f5761029f565b8063ce5494bb116100b0578063ce5494bb1461087e578063d13ef5a5146108be578063d70d5c30146108fe5761029f565b8063cb4f40c514610829578063cdc7d4ad1461083e5761029f565b8063a273178411610122578063b83e160511610107578063b83e160514610769578063c3db74d6146107a9578063ca0e551f146107e95761029f565b8063a27317841461073f578063ab00fdc4146107545761029f565b806391ceac961161015357806391ceac96146106a05780639c5e8ae2146106d65780639f8a13d7146106eb5761029f565b806373b245401461067657806384afd47f1461068b5761029f565b80632e941dc41161021c578063521f284d116101d057806357f2a7d8116101b557806357f2a7d8146106375780635f6e2c7b1461064c5780636d41ff4e146106615761029f565b8063521f284d1461060d578063542396fd146106225761029f565b806337a3931f1161020157806337a3931f1461052b5780634d1b4dae1461056b5780634e60b981146105e35761029f565b80632e941dc41461050157806335ab13f6146105165761029f565b80631a26763c116102735780631eeaebb2116102585780631eeaebb2146104cf578063228cb733146104e45780632d059305146104ec5761029f565b80631a26763c146104675780631c4b774b146104a55761029f565b8062f55d9d1461030657806306661abd146103485780630aae7a6b1461038857806318a2ac1914610440575b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e6f7420737570706f7274656400000000000000000000000000000000000000604482015290519081900360640190fd5b34801561031257600080fd5b506103466004803603602081101561032957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a4c565b005b34801561035457600080fd5b5061035d610af4565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561039457600080fd5b506103c8600480360360208110156103ab57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b0e565b6040805173ffffffffffffffffffffffffffffffffffffffff8816815263ffffffff871660208201529081810190869080838360005b838110156104165781810151838201526020016103fe565b50505050905001848152602001838152602001828152602001965050505050505060405180910390f35b34801561044c57600080fd5b50610455610c3a565b60408051918252519081900360200190f35b34801561047357600080fd5b5061047c610c40565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156104b157600080fd5b50610455600480360360208110156104c857600080fd5b5035610c5c565b3480156104db57600080fd5b50610455610d94565b610346610d9a565b3480156104f857600080fd5b5061047c61104f565b34801561050d57600080fd5b5061045561106b565b34801561052257600080fd5b50610455611071565b34801561053757600080fd5b506103466004803603602081101561054e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611077565b34801561057757600080fd5b506105ab6004803603602081101561058e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611440565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b3480156105ef57600080fd5b5061047c6004803603602081101561060657600080fd5b503561147d565b34801561061957600080fd5b506104556114b1565b34801561062e57600080fd5b506104556114b7565b34801561064357600080fd5b506104556114bd565b34801561065857600080fd5b506104556114c3565b34801561066d57600080fd5b506104556114c9565b34801561068257600080fd5b506104556114cf565b34801561069757600080fd5b5061047c6114d5565b3480156106ac57600080fd5b50610346600480360360608110156106c357600080fd5b50803590602081013590604001356114f1565b3480156106e257600080fd5b506104556117a1565b3480156106f757600080fd5b5061072b6004803603602081101561070e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166117a7565b604080519115158252519081900360200190f35b34801561074b57600080fd5b5061047c6117df565b34801561076057600080fd5b506104556117fb565b34801561077557600080fd5b506103c86004803603602081101561078c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611801565b3480156107b557600080fd5b5061047c600480360360208110156107cc57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166119aa565b3480156107f557600080fd5b506103466004803603602081101561080c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611a2f565b34801561083557600080fd5b50610455611ab3565b34801561084a57600080fd5b506103466004803603602081101561086157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ab9565b34801561088a57600080fd5b50610346600480360360208110156108a157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611cdd565b3480156108ca57600080fd5b5061072b600480360360208110156108e157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611d6f565b34801561090a57600080fd5b506103466004803603608081101561092157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169063ffffffff60208201351690604001611df6565b34801561095b57600080fd5b5061072b6004803603602081101561097257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ec4565b34801561099b57600080fd5b506109a4611f07565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156109e05781810151838201526020016109c8565b505050509050019250505060405180910390f35b348015610a0057600080fd5b50610a09611fb9565b6040805192835260208301919091528051918290030190f35b348015610a2e57600080fd5b5061047c611fd2565b348015610a4357600080fd5b506109a4611fee565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ad257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742070726f78790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610adb816120c3565b8073ffffffffffffffffffffffffffffffffffffffff16ff5b600f54600554600d54600e54600c54939492939192909190565b600080610b19613fb4565b6000806000610b26613fd2565b600254610b499073ffffffffffffffffffffffffffffffffffffffff1689612152565b608081015190915073ffffffffffffffffffffffffffffffffffffffff16610bd257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e6b6e6f776e206d61737465726e6f64650000000000000000000000000000604482015290519081900360640190fd5b608081015160e0820151604080518082018252818501518152606085015160208083019190915280860151955173ffffffffffffffffffffffffffffffffffffffff909d16600090815260109091529190912054929b919a9099509297509195509350915050565b60095481565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60048054604080517f8abf60770000000000000000000000000000000000000000000000000000000081529051600093849373ffffffffffffffffffffffffffffffffffffffff1692638abf60779281830192602092829003018186803b158015610cc657600080fd5b505afa158015610cda573d6000803e3d6000fd5b505050506040513d6020811015610cf057600080fd5b505190508215801590610d7d57508073ffffffffffffffffffffffffffffffffffffffff166352782d86846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610d4f57600080fd5b505afa158015610d63573d6000803e3d6000fd5b505050506040513d6020811015610d7957600080fd5b5051155b15610d8e57677ed7cd92ff12000091505b50919050565b60125481565b60015415610e0957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055343031036000811315610f37576000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abf60776040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8457600080fd5b505afa158015610e98573d6000803e3d6000fd5b505050506040513d6020811015610eae57600080fd5b5051604080517f228cb733000000000000000000000000000000000000000000000000000000008152905191925073ffffffffffffffffffffffffffffffffffffffff83169163228cb733918591600480830192600092919082900301818588803b158015610f1c57600080fd5b505af1158015610f30573d6000803e3d6000fd5b5050505050505b677ed7cd92ff120000341415611047574360125410610fb757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43616c6c206f757473696465206f6620676f7665726e616e6365210000000000604482015290519081900360640190fd5b43601255610fc3612284565b34303114610fcd57fe5b600b54600081677ed7cd92ff12000081610fe357fe5b049050815b801561104357620186a05a11610ffa57fe5b620186a05a1180156110125750611010826122fd565b155b1561101c57610ffa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610fe8565b5050505b506000600155565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b60085481565b600154156110e657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001805560006110f4612570565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561119157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e76616c69646174696f6e20666f722073656c660000000000000000000000604482015290519081900360640190fd5b60135473ffffffffffffffffffffffffffffffffffffffff821660009081526010602052604090206111c3838261259f565b61122e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f74206163746976652063616c6c6572000000000000000000000000000000604482015290519081900360640190fd5b818160060154106112a057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e76616c69646174656400000000000000000000000000604482015290519081900360640190fd5b8373ffffffffffffffffffffffffffffffffffffffff166112c0846119aa565b73ffffffffffffffffffffffffffffffffffffffff161461134257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f496e76616c696420746172676574000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff84166000908152601060205260409020611371858261259f565b6113dc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f742061637469766520746172676574000000000000000000000000000000604482015290519081900360640190fd5b60068201839055600481018054600101905560405173ffffffffffffffffffffffffffffffffffffffff80861691908716907f389d58799d7eca76264c556a007ffbc7c60caa4e3c8ea0564e791af3a1b9d33190600090a350506000600155505050565b6010602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949593949293919290919087565b6011818154811061148a57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600f5481565b600b5481565b600e5481565b600a5481565b600d5481565b60145481565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b6001541561156057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff438590030111156115f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f546f6f206f6c6420626c6f636b00000000000000000000000000000000000000604482015290519081900360640190fd5b8183401461166857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f426c6f636b206d69736d61746368000000000000000000000000000000000000604482015290519081900360640190fd5b6000611672612570565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090209091506116a4828261259f565b61170f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f742061637469766500000000000000000000000000000000000000000000604482015290519081900360640190fd5b428160010154111561178257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f546f6f206561726c790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b61178a6125ee565b420160018083019190915592905550600090555050565b60075481565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604081206117d790839061259f565b90505b919050565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60008061180c613fb4565b600254604080517f28d566be00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015291516000938493849391169182916328d566be916024808301926020929190829003018186803b15801561188657600080fd5b505afa15801561189a573d6000803e3d6000fd5b505050506040513d60208110156118b057600080fd5b5051965073ffffffffffffffffffffffffffffffffffffffff871661193657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f556e6b6e6f776e206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b61193e613fd2565b6119488289612152565b60e0810151604080518082018252818401518152606084015160208083019190915280850151945173ffffffffffffffffffffffffffffffffffffffff8e1660009081526010909252929020549b9d929c509a92995097509095509350505050565b60115460145460009190808214156119c0576001015b73ffffffffffffffffffffffffffffffffffffffff841660009081526010602052604090206003015482828201816119f457fe5b06905060118181548110611a0457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1695945050505050565b60015415611a9e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001805561104781611aae612570565b612605565b600c5481565b60015415611b2857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055600254604080517f28d566be00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151919092169160009183916328d566be916024808301926020929190829003018186803b158015611ba457600080fd5b505afa158015611bb8573d6000803e3d6000fd5b505050506040513d6020811015611bce57600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff8116611bf4575050611047565b600080611c0085612ab1565b91509150611c0c613fd2565b600254611c2f9073ffffffffffffffffffffffffffffffffffffffff1685612152565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260106020526040812091925090611c6490838686612bf1565b90506001816003811115611c7457fe5b1415611ccf57683635c9adc5dea000008410611cc55760e0820151611c97613fb4565b5060408051808201825290840151815260608401516020820152611cbe878a888585612c50565b5050611ccf565b611ccf8588612605565b505050505050506000600155565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d6357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742070726f78790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b611d6c81612f92565b50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260408120611d9e838261259f565b8015611daf57506013548160060154105b8015611def57508273ffffffffffffffffffffffffffffffffffffffff16611dd6846119aa565b73ffffffffffffffffffffffffffffffffffffffff1614155b9392505050565b60015415611e6557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600180556000611e73612570565b90506000611e8082613854565b9050611eb885838387876002806020026040519081016040528092919082600260200280828437600092019190915250612c50915050565b50506000600155505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260408120611ef3838261259f565b8015611def57506001015442101592915050565b6060600f54604051908082528060200260200182016040528015611f35578160200160208202803883390190505b50905060005b8151811015611fb55760118181548110611f5157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110611f8857fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101611f3b565b5090565b683635c9adc5dea000009069152d02c7e14af680000090565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b606060055460405190808252806020026020018201604052801561201c578160200160208202803883390190505b5060065490915073ffffffffffffffffffffffffffffffffffffffff168061204457506120c0565b8061204d613fd2565b60005b8285828151811061205d57fe5b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260025461208e911684612152565b60c08101519350915060010173ffffffffffffffffffffffffffffffffffffffff808416908516141561205057505050505b90565b600254604080517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152915191909216916313af403591602480830192600092919082900301818387803b15801561213757600080fd5b505af115801561214b573d6000803e3d6000fd5b5050505050565b61215a613fd2565b8273ffffffffffffffffffffffffffffffffffffffff1663412cbac0836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506101006040518083038186803b1580156121d857600080fd5b505afa1580156121ec573d6000803e3d6000fd5b505050506040513d61010081101561220357600080fd5b50805160208083015160408085015160608087015160808089015160a0808b015160c0808d015160e09d8e015163ffffffff169d8f019d909d5273ffffffffffffffffffffffffffffffffffffffff9c8d16908e01528b16908c01529890981697890197909752870195909552850193909352830191909152815292915050565b60135443106122fb57601154600954808210156122a25750506122fb565b60008183816122ad57fe5b049050818110156122bb5750805b438082016013557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808501910140816122f057fe5b066001016014555050505b565b60065460075460009173ffffffffffffffffffffffffffffffffffffffff16908161232d576001925050506117da565b612335613fd2565b6002546123589073ffffffffffffffffffffffffffffffffffffffff1684612152565b73ffffffffffffffffffffffffffffffffffffffff841660009081526010602052604090206004810154600582015460019095019492935090918410156123a35760078490556123f9565b60006004830181905560c0840151600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556007555b600061240583856138da565b9050600081600381111561241557fe5b14156124795761242482613905565b15806124655750836080015173ffffffffffffffffffffffffffffffffffffffff166108fc899081150290604051600060405180830381858888f193505050505b1561247957600196505050505050506117da565b600181600381111561248757fe5b14156124a05761249b868560800151612605565b612562565b600583015415612544576000600584015542600284015560208401516124c7908790613936565b60c0840151600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92831617905560006007819055604051918816917f749cb6b4c510bc468cf6b9c2086d6f0a54d6b18e25d37bf3200e68eab0880c009190a2612562565b600a5483600201544203111561256257612562868560800151612605565b506000979650505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff163314156125985750326120c0565b50336120c0565b60006125a9613fd2565b6002546125cc9073ffffffffffffffffffffffffffffffffffffffff1685612152565b905060006125da84836138da565b60038111156125e557fe5b14949350505050565b600f546004026107088110156120c0575061070890565b60025473ffffffffffffffffffffffffffffffffffffffff16612626613fd2565b6126308285612152565b608081015190915073ffffffffffffffffffffffffffffffffffffffff16612659575050612aad565b806080015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146126f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b8373ffffffffffffffffffffffffffffffffffffffff168160c0015173ffffffffffffffffffffffffffffffffffffffff16141561275c57600680547fffffffffffffffffffffffff000000000000000000000000000000000000000016905561292a565b60065473ffffffffffffffffffffffffffffffffffffffff858116911614156127ce5760c0810151600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560006007555b60a081015160c0820151604080517f1f9579ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260006024820181905260448201819052600160648301529284166084820152905192851692631f9579ca9260a48084019391929182900301818387803b15801561286557600080fd5b505af1158015612879573d6000803e3d6000fd5b50505060c082015160a0830151604080517f1f9579ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526001602482015291831660448301526000606483018190526084830181905290519286169350631f9579ca9260a48084019382900301818387803b15801561291157600080fd5b505af1158015612925573d6000803e3d6000fd5b505050505b602080820151600e805491909103905573ffffffffffffffffffffffffffffffffffffffff85166000908152601090915260409020600501541561297657612976848260200151613936565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260106020526040808220828155600181018390556002810183905560038101839055600480820184905560058201849055600690910183905581517f72f5f2570000000000000000000000000000000000000000000000000000000081529081019390935251928516926372f5f25792602480820193929182900301818387803b158015612a2057600080fd5b505af1158015612a34573d6000803e3d6000fd5b5050600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555050608081015160405173ffffffffffffffffffffffffffffffffffffffff918216918616907f55faf8e51ab442f8d8510476317b2e313144c3db60adc284affef64140fe855290600090a350505b5050565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abf60776040518163ffffffff1660e01b815260040160206040518083038186803b158015612b1c57600080fd5b505afa158015612b30573d6000803e3d6000fd5b505050506040513d6020811015612b4657600080fd5b5051604080517f78c7d97900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015282519316926378c7d97992602480840193919291829003018186803b158015612bb457600080fd5b505afa158015612bc8573d6000803e3d6000fd5b505050506040513d6040811015612bde57600080fd5b5080516020909101519094909350915050565b6000846005015460001415612c0857506002612c48565b6001850154611c2001421115612c2057506003612c48565b83602001518314612c3357506001612c48565b8351821115612c4457506001612c48565b5060005b949350505050565b60025473ffffffffffffffffffffffffffffffffffffffff16612c738186613a8b565b612c7d8187613b5e565b612c8683613bfa565b600080612c938389613dd9565b915091508273ffffffffffffffffffffffffffffffffffffffff1663f71169df898988888b43888a6040518963ffffffff1660e01b8152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018763ffffffff1663ffffffff16815260200186600260200280838360005b83811015612d68578181015183820152602001612d50565b505050509050018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200198505050505050505050600060405180830381600087803b158015612e0357600080fd5b505af1158015612e17573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff88166000908152601060205260409020426001820155683635c9adc5dea000008704600580830191909155600f805460019081019091558154019055600d805488019055600e8054880190819055600c54811115612e8e57600c8190555b601180546003840181905560018101825560009182527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8d81169182179092556040805163ffffffff8c168152928d169391927f935a2f33570c4840d82856d75f5d0aafca32c5e6b31db5627552304a7dc82c09928c928c928f92909160208301918591908190849084905b83811015612f6c578181015183820152602001612f54565b50505050905001828152602001935050505060405180910390a350505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166341c0e1b56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612ffc57600080fd5b505af1158015613010573d6000803e3d6000fd5b5050505060008190508073ffffffffffffffffffffffffffffffffffffffff16632d0593056040518163ffffffff1660e01b815260040160206040518083038186803b15801561305f57600080fd5b505afa158015613073573d6000803e3d6000fd5b505050506040513d602081101561308957600080fd5b5051600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055604080517fab00fdc400000000000000000000000000000000000000000000000000000000815290519183169163ab00fdc491600480820192602092909190829003018186803b15801561311f57600080fd5b505afa158015613133573d6000803e3d6000fd5b505050506040513d602081101561314957600080fd5b5051600555604080517f1a26763c000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff831691631a26763c916004808301926020929190829003018186803b1580156131b457600080fd5b505afa1580156131c8573d6000803e3d6000fd5b505050506040513d60208110156131de57600080fd5b5051600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055604080517f9c5e8ae2000000000000000000000000000000000000000000000000000000008152905191831691639c5e8ae291600480820192602092909190829003018186803b15801561327457600080fd5b505afa158015613288573d6000803e3d6000fd5b505050506040513d602081101561329e57600080fd5b5051600755604080517fcb4f40c5000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff83169163cb4f40c5916004808301926020929190829003018186803b15801561330957600080fd5b505afa15801561331d573d6000803e3d6000fd5b505050506040513d602081101561333357600080fd5b5051600c55604080517f6d41ff4e000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff831691636d41ff4e916004808301926020929190829003018186803b15801561339e57600080fd5b505afa1580156133b2573d6000803e3d6000fd5b505050506040513d60208110156133c857600080fd5b5051600d55604080517f57f2a7d8000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff8316916357f2a7d8916004808301926020929190829003018186803b15801561343357600080fd5b505afa158015613447573d6000803e3d6000fd5b505050506040513d602081101561345d57600080fd5b5051600e55604080517f521f284d000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff83169163521f284d916004808301926020929190829003018186803b1580156134c857600080fd5b505afa1580156134dc573d6000803e3d6000fd5b505050506040513d60208110156134f257600080fd5b5051600f55604080517fff9f78b3000000000000000000000000000000000000000000000000000000008152905160609173ffffffffffffffffffffffffffffffffffffffff84169163ff9f78b391600480820192600092909190829003018186803b15801561356157600080fd5b505afa158015613575573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156135bc57600080fd5b81019080805160405193929190846401000000008211156135dc57600080fd5b9083019060208201858111156135f157600080fd5b825186602082028301116401000000008211171561360e57600080fd5b82525081516020918201928201910280838360005b8381101561363b578181015183820152602001613623565b5050505091909101604052505043601255505080519091505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101901561384657600082828151811061368b57fe5b6020026020010151905061369d614016565b8473ffffffffffffffffffffffffffffffffffffffff16634d1b4dae836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506101006040518083038186803b15801561371b57600080fd5b505afa15801561372f573d6000803e3d6000fd5b505050506040513d61010081101561374657600080fd5b50805160408083015160a08085015160c08087015160e090970151908801908152918701958652608087019081528684019283529386526004888102420160208089019182526011805460608b0181815260018083019093557f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6890910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9d909d169c8d17905560009b8c5260109092529590992097518855519387019390935590516002860155945160038501559051908301555160058201559051600690910155613654565b5061384f612284565b505050565b600061385f82612ab1565b509050683635c9adc5dea000008110156117da57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e76616c696420636f6c6c61746572616c0000000000000000000000000000604482015290519081900360640190fd5b60008060006138ec8460800151612ab1565b915091506138fc85858484612bf1565b95945050505050565b6000600854600f54101561391b575060016117da565b600060026009546001018161392c57fe5b0490921092915050565b60118054600091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061396a57fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff86811684526010909252604080842060039081015493909216808552932001819055601180549293509091839190839081106139c557fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506011805480613a1857fe5b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055908101909155600f805490910190555050600d805491909103905550565b60008273ffffffffffffffffffffffffffffffffffffffff166328d566be836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613b0a57600080fd5b505afa158015613b1e573d6000803e3d6000fd5b505050506040513d6020811015613b3457600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff81161561384f5761384f8183612605565b613b66613fd2565b613b708383612152565b608081015190915073ffffffffffffffffffffffffffffffffffffffff161561384f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b63ff000000811662ff0000821661ff008316637f0000008314801590613c24575082630a00000014155b8015613c4257508263c0000000148015613c4057508162a80000145b155b8015613c6557508263ac000000148015613c6357508162f000001662100000145b155b8015613c7057508215155b8015613c935750826364000000148015613c9157508162c000001662400000145b155b8015613cb157508263a9000000148015613caf57508162fe0000145b155b8015613cd457508263c6000000148015613cd257508162fe00001662120000145b155b8015613cff57508263c6000000148015613cf057508162330000145b8015613cfd575080616400145b155b8015613d2657508263cb000000148015613d17575081155b8015613d24575080617100145b155b8015613d3c57508263f00000001663e000000014155b8015613d5257508263f00000001663f000000014155b8015613d6857508363ffffffff1663ffffffff14155b613dd357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f57726f6e67204950000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b50505050565b60065473ffffffffffffffffffffffffffffffffffffffff1660008115613f6357613e02613fd2565b613e0c8584612152565b60a0810151604080517f1f9579ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015260006024830181905260448301819052600160648401528982166084840152925193965093945092881692631f9579ca9260a4808301939282900301818387803b158015613ea257600080fd5b505af1158015613eb6573d6000803e3d6000fd5b5050604080517f1f9579ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152600160248301528881166044830152600060648301819052608483018190529251908a169450631f9579ca935060a4808301939282900301818387803b158015613f4557600080fd5b505af1158015613f59573d6000803e3d6000fd5b5050505050613fad565b5050600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055600060075580805b9250929050565b60405180604001604052806002906020820280388339509192915050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b6040518060e0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152509056fea265627a7a723158208fe498240a92095cbc10d67d69cd9b4ebb0d6010dbd5b22c663e05b5c94ac4b964736f6c634300051000326080604052600080546001600160a01b03191633179055610956806100256000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063412cbac01161005b578063412cbac01461016857806341c0e1b5146101fa57806372f5f25714610202578063f71169df146102355761007d565b806313af4035146100825780631f9579ca146100b757806328d566be1461010c575b600080fd5b6100b56004803603602081101561009857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661029f565b005b6100b5600480360360a08110156100cd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135151591604082013581169160608101351515916080909101351661036c565b61013f6004803603602081101561012257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104b1565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61019b6004803603602081101561017e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104d9565b60408051988952602089019790975287870195909552606087019390935273ffffffffffffffffffffffffffffffffffffffff9182166080870152811660a08601521660c084015263ffffffff1660e083015251908190036101000190f35b6100b5610551565b6100b56004803603602081101561021857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105da565b6100b5600480360361012081101561024c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169163ffffffff60408301351691606081019160a08201359160c08101359160e0820135811691610100013516610720565b60005473ffffffffffffffffffffffffffffffffffffffff16331461032557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff851660009081526001602052604090208415610460576005810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555b82156104a9576006810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790555b505050505050565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6001602081905260009182526040909120805491810154600282015460038301546004840154600585015460069095015493949293919273ffffffffffffffffffffffffffffffffffffffff918216929082169181169074010000000000000000000000000000000000000000900463ffffffff1688565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105d757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b33ff5b60005473ffffffffffffffffffffffffffffffffffffffff16331461066057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff90811660008181526001602081815260408084206004810180549097168552600280845291852080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915595855291839052838255918101839055908101829055600381019190915582548216909255600582018054909116905560060180547fffffffffffffffff000000000000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107a657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff80891660009081526001602052604090206004810154909190811690891681146108515773ffffffffffffffffffffffffffffffffffffffff8116156107fd57fe5b73ffffffffffffffffffffffffffffffffffffffff898116600090815260026020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016918c169190911790555b5060048101805473ffffffffffffffffffffffffffffffffffffffff998a167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600682018054883560028501556020909801356003840155600183019690965593815560050180549288169284169290921790915590941663ffffffff9390931674010000000000000000000000000000000000000000027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff909216919091179092161790555056fea265627a7a72315820084dd4f667ff4f2d4043bb7f2fe175f0a2c1e803388bba185f45294c80f2fad864736f6c63430005100032`
    35  
    36  // DeployMasternodeRegistryV2 deploys a new Ethereum contract, binding an instance of MasternodeRegistryV2 to it.
    37  func DeployMasternodeRegistryV2(auth *bind.TransactOpts, backend bind.ContractBackend, _proxy common.Address, _token_proxy common.Address, _treasury_proxy common.Address, _config [5]*big.Int) (common.Address, *types.Transaction, *MasternodeRegistryV2, error) {
    38  	parsed, err := abi.JSON(strings.NewReader(MasternodeRegistryV2ABI))
    39  	if err != nil {
    40  		return common.Address{}, nil, nil, err
    41  	}
    42  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(MasternodeRegistryV2Bin), backend, _proxy, _token_proxy, _treasury_proxy, _config)
    43  	if err != nil {
    44  		return common.Address{}, nil, nil, err
    45  	}
    46  	return address, tx, &MasternodeRegistryV2{MasternodeRegistryV2Caller: MasternodeRegistryV2Caller{contract: contract}, MasternodeRegistryV2Transactor: MasternodeRegistryV2Transactor{contract: contract}, MasternodeRegistryV2Filterer: MasternodeRegistryV2Filterer{contract: contract}}, nil
    47  }
    48  
    49  // MasternodeRegistryV2Bin is the compiled bytecode of contract after deployment.
    50  const MasternodeRegistryV2RuntimeBin = `60806040526004361061029f5760003560e01c806373b245401161016e578063cb4f40c5116100cb578063d9966aba1161007f578063e2cb219511610064578063e2cb2195146109f4578063ec55688914610a22578063ff9f78b314610a375761029f565b8063d9966aba1461094f578063e1d6f43a1461098f5761029f565b8063ce5494bb116100b0578063ce5494bb1461087e578063d13ef5a5146108be578063d70d5c30146108fe5761029f565b8063cb4f40c514610829578063cdc7d4ad1461083e5761029f565b8063a273178411610122578063b83e160511610107578063b83e160514610769578063c3db74d6146107a9578063ca0e551f146107e95761029f565b8063a27317841461073f578063ab00fdc4146107545761029f565b806391ceac961161015357806391ceac96146106a05780639c5e8ae2146106d65780639f8a13d7146106eb5761029f565b806373b245401461067657806384afd47f1461068b5761029f565b80632e941dc41161021c578063521f284d116101d057806357f2a7d8116101b557806357f2a7d8146106375780635f6e2c7b1461064c5780636d41ff4e146106615761029f565b8063521f284d1461060d578063542396fd146106225761029f565b806337a3931f1161020157806337a3931f1461052b5780634d1b4dae1461056b5780634e60b981146105e35761029f565b80632e941dc41461050157806335ab13f6146105165761029f565b80631a26763c116102735780631eeaebb2116102585780631eeaebb2146104cf578063228cb733146104e45780632d059305146104ec5761029f565b80631a26763c146104675780631c4b774b146104a55761029f565b8062f55d9d1461030657806306661abd146103485780630aae7a6b1461038857806318a2ac1914610440575b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e6f7420737570706f7274656400000000000000000000000000000000000000604482015290519081900360640190fd5b34801561031257600080fd5b506103466004803603602081101561032957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a4c565b005b34801561035457600080fd5b5061035d610af4565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561039457600080fd5b506103c8600480360360208110156103ab57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610b0e565b6040805173ffffffffffffffffffffffffffffffffffffffff8816815263ffffffff871660208201529081810190869080838360005b838110156104165781810151838201526020016103fe565b50505050905001848152602001838152602001828152602001965050505050505060405180910390f35b34801561044c57600080fd5b50610455610c3a565b60408051918252519081900360200190f35b34801561047357600080fd5b5061047c610c40565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156104b157600080fd5b50610455600480360360208110156104c857600080fd5b5035610c5c565b3480156104db57600080fd5b50610455610d94565b610346610d9a565b3480156104f857600080fd5b5061047c61104f565b34801561050d57600080fd5b5061045561106b565b34801561052257600080fd5b50610455611071565b34801561053757600080fd5b506103466004803603602081101561054e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611077565b34801561057757600080fd5b506105ab6004803603602081101561058e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611440565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b3480156105ef57600080fd5b5061047c6004803603602081101561060657600080fd5b503561147d565b34801561061957600080fd5b506104556114b1565b34801561062e57600080fd5b506104556114b7565b34801561064357600080fd5b506104556114bd565b34801561065857600080fd5b506104556114c3565b34801561066d57600080fd5b506104556114c9565b34801561068257600080fd5b506104556114cf565b34801561069757600080fd5b5061047c6114d5565b3480156106ac57600080fd5b50610346600480360360608110156106c357600080fd5b50803590602081013590604001356114f1565b3480156106e257600080fd5b506104556117a1565b3480156106f757600080fd5b5061072b6004803603602081101561070e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166117a7565b604080519115158252519081900360200190f35b34801561074b57600080fd5b5061047c6117df565b34801561076057600080fd5b506104556117fb565b34801561077557600080fd5b506103c86004803603602081101561078c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611801565b3480156107b557600080fd5b5061047c600480360360208110156107cc57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166119aa565b3480156107f557600080fd5b506103466004803603602081101561080c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611a2f565b34801561083557600080fd5b50610455611ab3565b34801561084a57600080fd5b506103466004803603602081101561086157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ab9565b34801561088a57600080fd5b50610346600480360360208110156108a157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611cdd565b3480156108ca57600080fd5b5061072b600480360360208110156108e157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611d6f565b34801561090a57600080fd5b506103466004803603608081101561092157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169063ffffffff60208201351690604001611df6565b34801561095b57600080fd5b5061072b6004803603602081101561097257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611ec4565b34801561099b57600080fd5b506109a4611f07565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156109e05781810151838201526020016109c8565b505050509050019250505060405180910390f35b348015610a0057600080fd5b50610a09611fb9565b6040805192835260208301919091528051918290030190f35b348015610a2e57600080fd5b5061047c611fd2565b348015610a4357600080fd5b506109a4611fee565b60005473ffffffffffffffffffffffffffffffffffffffff163314610ad257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742070726f78790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610adb816120c3565b8073ffffffffffffffffffffffffffffffffffffffff16ff5b600f54600554600d54600e54600c54939492939192909190565b600080610b19613fb4565b6000806000610b26613fd2565b600254610b499073ffffffffffffffffffffffffffffffffffffffff1689612152565b608081015190915073ffffffffffffffffffffffffffffffffffffffff16610bd257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e6b6e6f776e206d61737465726e6f64650000000000000000000000000000604482015290519081900360640190fd5b608081015160e0820151604080518082018252818501518152606085015160208083019190915280860151955173ffffffffffffffffffffffffffffffffffffffff909d16600090815260109091529190912054929b919a9099509297509195509350915050565b60095481565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60048054604080517f8abf60770000000000000000000000000000000000000000000000000000000081529051600093849373ffffffffffffffffffffffffffffffffffffffff1692638abf60779281830192602092829003018186803b158015610cc657600080fd5b505afa158015610cda573d6000803e3d6000fd5b505050506040513d6020811015610cf057600080fd5b505190508215801590610d7d57508073ffffffffffffffffffffffffffffffffffffffff166352782d86846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610d4f57600080fd5b505afa158015610d63573d6000803e3d6000fd5b505050506040513d6020811015610d7957600080fd5b5051155b15610d8e57677ed7cd92ff12000091505b50919050565b60125481565b60015415610e0957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055343031036000811315610f37576000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abf60776040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8457600080fd5b505afa158015610e98573d6000803e3d6000fd5b505050506040513d6020811015610eae57600080fd5b5051604080517f228cb733000000000000000000000000000000000000000000000000000000008152905191925073ffffffffffffffffffffffffffffffffffffffff83169163228cb733918591600480830192600092919082900301818588803b158015610f1c57600080fd5b505af1158015610f30573d6000803e3d6000fd5b5050505050505b677ed7cd92ff120000341415611047574360125410610fb757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f43616c6c206f757473696465206f6620676f7665726e616e6365210000000000604482015290519081900360640190fd5b43601255610fc3612284565b34303114610fcd57fe5b600b54600081677ed7cd92ff12000081610fe357fe5b049050815b801561104357620186a05a11610ffa57fe5b620186a05a1180156110125750611010826122fd565b155b1561101c57610ffa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610fe8565b5050505b506000600155565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b60085481565b600154156110e657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001805560006110f4612570565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561119157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f496e76616c69646174696f6e20666f722073656c660000000000000000000000604482015290519081900360640190fd5b60135473ffffffffffffffffffffffffffffffffffffffff821660009081526010602052604090206111c3838261259f565b61122e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f74206163746976652063616c6c6572000000000000000000000000000000604482015290519081900360640190fd5b818160060154106112a057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e76616c69646174656400000000000000000000000000604482015290519081900360640190fd5b8373ffffffffffffffffffffffffffffffffffffffff166112c0846119aa565b73ffffffffffffffffffffffffffffffffffffffff161461134257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f496e76616c696420746172676574000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff84166000908152601060205260409020611371858261259f565b6113dc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f742061637469766520746172676574000000000000000000000000000000604482015290519081900360640190fd5b60068201839055600481018054600101905560405173ffffffffffffffffffffffffffffffffffffffff80861691908716907f389d58799d7eca76264c556a007ffbc7c60caa4e3c8ea0564e791af3a1b9d33190600090a350506000600155505050565b6010602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949593949293919290919087565b6011818154811061148a57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600f5481565b600b5481565b600e5481565b600a5481565b600d5481565b60145481565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b6001541561156057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff438590030111156115f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f546f6f206f6c6420626c6f636b00000000000000000000000000000000000000604482015290519081900360640190fd5b8183401461166857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f426c6f636b206d69736d61746368000000000000000000000000000000000000604482015290519081900360640190fd5b6000611672612570565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090209091506116a4828261259f565b61170f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f742061637469766500000000000000000000000000000000000000000000604482015290519081900360640190fd5b428160010154111561178257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f546f6f206561726c790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b61178a6125ee565b420160018083019190915592905550600090555050565b60075481565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604081206117d790839061259f565b90505b919050565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60008061180c613fb4565b600254604080517f28d566be00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015291516000938493849391169182916328d566be916024808301926020929190829003018186803b15801561188657600080fd5b505afa15801561189a573d6000803e3d6000fd5b505050506040513d60208110156118b057600080fd5b5051965073ffffffffffffffffffffffffffffffffffffffff871661193657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f556e6b6e6f776e206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b61193e613fd2565b6119488289612152565b60e0810151604080518082018252818401518152606084015160208083019190915280850151945173ffffffffffffffffffffffffffffffffffffffff8e1660009081526010909252929020549b9d929c509a92995097509095509350505050565b60115460145460009190808214156119c0576001015b73ffffffffffffffffffffffffffffffffffffffff841660009081526010602052604090206003015482828201816119f457fe5b06905060118181548110611a0457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1695945050505050565b60015415611a9e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001805561104781611aae612570565b612605565b600c5481565b60015415611b2857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055600254604080517f28d566be00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151919092169160009183916328d566be916024808301926020929190829003018186803b158015611ba457600080fd5b505afa158015611bb8573d6000803e3d6000fd5b505050506040513d6020811015611bce57600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff8116611bf4575050611047565b600080611c0085612ab1565b91509150611c0c613fd2565b600254611c2f9073ffffffffffffffffffffffffffffffffffffffff1685612152565b73ffffffffffffffffffffffffffffffffffffffff8516600090815260106020526040812091925090611c6490838686612bf1565b90506001816003811115611c7457fe5b1415611ccf57683635c9adc5dea000008410611cc55760e0820151611c97613fb4565b5060408051808201825290840151815260608401516020820152611cbe878a888585612c50565b5050611ccf565b611ccf8588612605565b505050505050506000600155565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d6357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742070726f78790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b611d6c81612f92565b50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260408120611d9e838261259f565b8015611daf57506013548160060154105b8015611def57508273ffffffffffffffffffffffffffffffffffffffff16611dd6846119aa565b73ffffffffffffffffffffffffffffffffffffffff1614155b9392505050565b60015415611e6557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600180556000611e73612570565b90506000611e8082613854565b9050611eb885838387876002806020026040519081016040528092919082600260200280828437600092019190915250612c50915050565b50506000600155505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260408120611ef3838261259f565b8015611def57506001015442101592915050565b6060600f54604051908082528060200260200182016040528015611f35578160200160208202803883390190505b50905060005b8151811015611fb55760118181548110611f5157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110611f8857fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101611f3b565b5090565b683635c9adc5dea000009069152d02c7e14af680000090565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b606060055460405190808252806020026020018201604052801561201c578160200160208202803883390190505b5060065490915073ffffffffffffffffffffffffffffffffffffffff168061204457506120c0565b8061204d613fd2565b60005b8285828151811061205d57fe5b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260025461208e911684612152565b60c08101519350915060010173ffffffffffffffffffffffffffffffffffffffff808416908516141561205057505050505b90565b600254604080517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152915191909216916313af403591602480830192600092919082900301818387803b15801561213757600080fd5b505af115801561214b573d6000803e3d6000fd5b5050505050565b61215a613fd2565b8273ffffffffffffffffffffffffffffffffffffffff1663412cbac0836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506101006040518083038186803b1580156121d857600080fd5b505afa1580156121ec573d6000803e3d6000fd5b505050506040513d61010081101561220357600080fd5b50805160208083015160408085015160608087015160808089015160a0808b015160c0808d015160e09d8e015163ffffffff169d8f019d909d5273ffffffffffffffffffffffffffffffffffffffff9c8d16908e01528b16908c01529890981697890197909752870195909552850193909352830191909152815292915050565b60135443106122fb57601154600954808210156122a25750506122fb565b60008183816122ad57fe5b049050818110156122bb5750805b438082016013557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808501910140816122f057fe5b066001016014555050505b565b60065460075460009173ffffffffffffffffffffffffffffffffffffffff16908161232d576001925050506117da565b612335613fd2565b6002546123589073ffffffffffffffffffffffffffffffffffffffff1684612152565b73ffffffffffffffffffffffffffffffffffffffff841660009081526010602052604090206004810154600582015460019095019492935090918410156123a35760078490556123f9565b60006004830181905560c0840151600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556007555b600061240583856138da565b9050600081600381111561241557fe5b14156124795761242482613905565b15806124655750836080015173ffffffffffffffffffffffffffffffffffffffff166108fc899081150290604051600060405180830381858888f193505050505b1561247957600196505050505050506117da565b600181600381111561248757fe5b14156124a05761249b868560800151612605565b612562565b600583015415612544576000600584015542600284015560208401516124c7908790613936565b60c0840151600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92831617905560006007819055604051918816917f749cb6b4c510bc468cf6b9c2086d6f0a54d6b18e25d37bf3200e68eab0880c009190a2612562565b600a5483600201544203111561256257612562868560800151612605565b506000979650505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff163314156125985750326120c0565b50336120c0565b60006125a9613fd2565b6002546125cc9073ffffffffffffffffffffffffffffffffffffffff1685612152565b905060006125da84836138da565b60038111156125e557fe5b14949350505050565b600f546004026107088110156120c0575061070890565b60025473ffffffffffffffffffffffffffffffffffffffff16612626613fd2565b6126308285612152565b608081015190915073ffffffffffffffffffffffffffffffffffffffff16612659575050612aad565b806080015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146126f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b8373ffffffffffffffffffffffffffffffffffffffff168160c0015173ffffffffffffffffffffffffffffffffffffffff16141561275c57600680547fffffffffffffffffffffffff000000000000000000000000000000000000000016905561292a565b60065473ffffffffffffffffffffffffffffffffffffffff858116911614156127ce5760c0810151600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560006007555b60a081015160c0820151604080517f1f9579ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260006024820181905260448201819052600160648301529284166084820152905192851692631f9579ca9260a48084019391929182900301818387803b15801561286557600080fd5b505af1158015612879573d6000803e3d6000fd5b50505060c082015160a0830151604080517f1f9579ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201526001602482015291831660448301526000606483018190526084830181905290519286169350631f9579ca9260a48084019382900301818387803b15801561291157600080fd5b505af1158015612925573d6000803e3d6000fd5b505050505b602080820151600e805491909103905573ffffffffffffffffffffffffffffffffffffffff85166000908152601090915260409020600501541561297657612976848260200151613936565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260106020526040808220828155600181018390556002810183905560038101839055600480820184905560058201849055600690910183905581517f72f5f2570000000000000000000000000000000000000000000000000000000081529081019390935251928516926372f5f25792602480820193929182900301818387803b158015612a2057600080fd5b505af1158015612a34573d6000803e3d6000fd5b5050600580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555050608081015160405173ffffffffffffffffffffffffffffffffffffffff918216918616907f55faf8e51ab442f8d8510476317b2e313144c3db60adc284affef64140fe855290600090a350505b5050565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abf60776040518163ffffffff1660e01b815260040160206040518083038186803b158015612b1c57600080fd5b505afa158015612b30573d6000803e3d6000fd5b505050506040513d6020811015612b4657600080fd5b5051604080517f78c7d97900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015282519316926378c7d97992602480840193919291829003018186803b158015612bb457600080fd5b505afa158015612bc8573d6000803e3d6000fd5b505050506040513d6040811015612bde57600080fd5b5080516020909101519094909350915050565b6000846005015460001415612c0857506002612c48565b6001850154611c2001421115612c2057506003612c48565b83602001518314612c3357506001612c48565b8351821115612c4457506001612c48565b5060005b949350505050565b60025473ffffffffffffffffffffffffffffffffffffffff16612c738186613a8b565b612c7d8187613b5e565b612c8683613bfa565b600080612c938389613dd9565b915091508273ffffffffffffffffffffffffffffffffffffffff1663f71169df898988888b43888a6040518963ffffffff1660e01b8152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018763ffffffff1663ffffffff16815260200186600260200280838360005b83811015612d68578181015183820152602001612d50565b505050509050018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200198505050505050505050600060405180830381600087803b158015612e0357600080fd5b505af1158015612e17573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff88166000908152601060205260409020426001820155683635c9adc5dea000008704600580830191909155600f805460019081019091558154019055600d805488019055600e8054880190819055600c54811115612e8e57600c8190555b601180546003840181905560018101825560009182527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8d81169182179092556040805163ffffffff8c168152928d169391927f935a2f33570c4840d82856d75f5d0aafca32c5e6b31db5627552304a7dc82c09928c928c928f92909160208301918591908190849084905b83811015612f6c578181015183820152602001612f54565b50505050905001828152602001935050505060405180910390a350505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166341c0e1b56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612ffc57600080fd5b505af1158015613010573d6000803e3d6000fd5b5050505060008190508073ffffffffffffffffffffffffffffffffffffffff16632d0593056040518163ffffffff1660e01b815260040160206040518083038186803b15801561305f57600080fd5b505afa158015613073573d6000803e3d6000fd5b505050506040513d602081101561308957600080fd5b5051600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055604080517fab00fdc400000000000000000000000000000000000000000000000000000000815290519183169163ab00fdc491600480820192602092909190829003018186803b15801561311f57600080fd5b505afa158015613133573d6000803e3d6000fd5b505050506040513d602081101561314957600080fd5b5051600555604080517f1a26763c000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff831691631a26763c916004808301926020929190829003018186803b1580156131b457600080fd5b505afa1580156131c8573d6000803e3d6000fd5b505050506040513d60208110156131de57600080fd5b5051600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055604080517f9c5e8ae2000000000000000000000000000000000000000000000000000000008152905191831691639c5e8ae291600480820192602092909190829003018186803b15801561327457600080fd5b505afa158015613288573d6000803e3d6000fd5b505050506040513d602081101561329e57600080fd5b5051600755604080517fcb4f40c5000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff83169163cb4f40c5916004808301926020929190829003018186803b15801561330957600080fd5b505afa15801561331d573d6000803e3d6000fd5b505050506040513d602081101561333357600080fd5b5051600c55604080517f6d41ff4e000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff831691636d41ff4e916004808301926020929190829003018186803b15801561339e57600080fd5b505afa1580156133b2573d6000803e3d6000fd5b505050506040513d60208110156133c857600080fd5b5051600d55604080517f57f2a7d8000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff8316916357f2a7d8916004808301926020929190829003018186803b15801561343357600080fd5b505afa158015613447573d6000803e3d6000fd5b505050506040513d602081101561345d57600080fd5b5051600e55604080517f521f284d000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff83169163521f284d916004808301926020929190829003018186803b1580156134c857600080fd5b505afa1580156134dc573d6000803e3d6000fd5b505050506040513d60208110156134f257600080fd5b5051600f55604080517fff9f78b3000000000000000000000000000000000000000000000000000000008152905160609173ffffffffffffffffffffffffffffffffffffffff84169163ff9f78b391600480820192600092909190829003018186803b15801561356157600080fd5b505afa158015613575573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156135bc57600080fd5b81019080805160405193929190846401000000008211156135dc57600080fd5b9083019060208201858111156135f157600080fd5b825186602082028301116401000000008211171561360e57600080fd5b82525081516020918201928201910280838360005b8381101561363b578181015183820152602001613623565b5050505091909101604052505043601255505080519091505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101901561384657600082828151811061368b57fe5b6020026020010151905061369d614016565b8473ffffffffffffffffffffffffffffffffffffffff16634d1b4dae836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019150506101006040518083038186803b15801561371b57600080fd5b505afa15801561372f573d6000803e3d6000fd5b505050506040513d61010081101561374657600080fd5b50805160408083015160a08085015160c08087015160e090970151908801908152918701958652608087019081528684019283529386526004888102420160208089019182526011805460608b0181815260018083019093557f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6890910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9d909d169c8d17905560009b8c5260109092529590992097518855519387019390935590516002860155945160038501559051908301555160058201559051600690910155613654565b5061384f612284565b505050565b600061385f82612ab1565b509050683635c9adc5dea000008110156117da57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e76616c696420636f6c6c61746572616c0000000000000000000000000000604482015290519081900360640190fd5b60008060006138ec8460800151612ab1565b915091506138fc85858484612bf1565b95945050505050565b6000600854600f54101561391b575060016117da565b600060026009546001018161392c57fe5b0490921092915050565b60118054600091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061396a57fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff86811684526010909252604080842060039081015493909216808552932001819055601180549293509091839190839081106139c557fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506011805480613a1857fe5b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055908101909155600f805490910190555050600d805491909103905550565b60008273ffffffffffffffffffffffffffffffffffffffff166328d566be836040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613b0a57600080fd5b505afa158015613b1e573d6000803e3d6000fd5b505050506040513d6020811015613b3457600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff81161561384f5761384f8183612605565b613b66613fd2565b613b708383612152565b608081015190915073ffffffffffffffffffffffffffffffffffffffff161561384f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206f776e657200000000000000000000000000000000000000604482015290519081900360640190fd5b63ff000000811662ff0000821661ff008316637f0000008314801590613c24575082630a00000014155b8015613c4257508263c0000000148015613c4057508162a80000145b155b8015613c6557508263ac000000148015613c6357508162f000001662100000145b155b8015613c7057508215155b8015613c935750826364000000148015613c9157508162c000001662400000145b155b8015613cb157508263a9000000148015613caf57508162fe0000145b155b8015613cd457508263c6000000148015613cd257508162fe00001662120000145b155b8015613cff57508263c6000000148015613cf057508162330000145b8015613cfd575080616400145b155b8015613d2657508263cb000000148015613d17575081155b8015613d24575080617100145b155b8015613d3c57508263f00000001663e000000014155b8015613d5257508263f00000001663f000000014155b8015613d6857508363ffffffff1663ffffffff14155b613dd357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f57726f6e67204950000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b50505050565b60065473ffffffffffffffffffffffffffffffffffffffff1660008115613f6357613e02613fd2565b613e0c8584612152565b60a0810151604080517f1f9579ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015260006024830181905260448301819052600160648401528982166084840152925193965093945092881692631f9579ca9260a4808301939282900301818387803b158015613ea257600080fd5b505af1158015613eb6573d6000803e3d6000fd5b5050604080517f1f9579ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152600160248301528881166044830152600060648301819052608483018190529251908a169450631f9579ca935060a4808301939282900301818387803b158015613f4557600080fd5b505af1158015613f59573d6000803e3d6000fd5b5050505050613fad565b5050600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055600060075580805b9250929050565b60405180604001604052806002906020820280388339509192915050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b6040518060e0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152509056fea265627a7a723158208fe498240a92095cbc10d67d69cd9b4ebb0d6010dbd5b22c663e05b5c94ac4b964736f6c63430005100032`
    51  
    52  // MasternodeRegistryV2 is an auto generated Go binding around an Ethereum contract.
    53  type MasternodeRegistryV2 struct {
    54  	MasternodeRegistryV2Caller     // Read-only binding to the contract
    55  	MasternodeRegistryV2Transactor // Write-only binding to the contract
    56  	MasternodeRegistryV2Filterer   // Log filterer for contract events
    57  }
    58  
    59  // MasternodeRegistryV2Caller is an auto generated read-only Go binding around an Ethereum contract.
    60  type MasternodeRegistryV2Caller struct {
    61  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    62  }
    63  
    64  // MasternodeRegistryV2Transactor is an auto generated write-only Go binding around an Ethereum contract.
    65  type MasternodeRegistryV2Transactor struct {
    66  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    67  }
    68  
    69  // MasternodeRegistryV2Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
    70  type MasternodeRegistryV2Filterer struct {
    71  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    72  }
    73  
    74  // MasternodeRegistryV2Session is an auto generated Go binding around an Ethereum contract,
    75  // with pre-set call and transact options.
    76  type MasternodeRegistryV2Session struct {
    77  	Contract     *MasternodeRegistryV2 // Generic contract binding to set the session for
    78  	CallOpts     bind.CallOpts         // Call options to use throughout this session
    79  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
    80  }
    81  
    82  // MasternodeRegistryV2CallerSession is an auto generated read-only Go binding around an Ethereum contract,
    83  // with pre-set call options.
    84  type MasternodeRegistryV2CallerSession struct {
    85  	Contract *MasternodeRegistryV2Caller // Generic contract caller binding to set the session for
    86  	CallOpts bind.CallOpts               // Call options to use throughout this session
    87  }
    88  
    89  // MasternodeRegistryV2TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    90  // with pre-set transact options.
    91  type MasternodeRegistryV2TransactorSession struct {
    92  	Contract     *MasternodeRegistryV2Transactor // Generic contract transactor binding to set the session for
    93  	TransactOpts bind.TransactOpts               // Transaction auth options to use throughout this session
    94  }
    95  
    96  // MasternodeRegistryV2Raw is an auto generated low-level Go binding around an Ethereum contract.
    97  type MasternodeRegistryV2Raw struct {
    98  	Contract *MasternodeRegistryV2 // Generic contract binding to access the raw methods on
    99  }
   100  
   101  // MasternodeRegistryV2CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   102  type MasternodeRegistryV2CallerRaw struct {
   103  	Contract *MasternodeRegistryV2Caller // Generic read-only contract binding to access the raw methods on
   104  }
   105  
   106  // MasternodeRegistryV2TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   107  type MasternodeRegistryV2TransactorRaw struct {
   108  	Contract *MasternodeRegistryV2Transactor // Generic write-only contract binding to access the raw methods on
   109  }
   110  
   111  // NewMasternodeRegistryV2 creates a new instance of MasternodeRegistryV2, bound to a specific deployed contract.
   112  func NewMasternodeRegistryV2(address common.Address, backend bind.ContractBackend) (*MasternodeRegistryV2, error) {
   113  	contract, err := bindMasternodeRegistryV2(address, backend, backend, backend)
   114  	if err != nil {
   115  		return nil, err
   116  	}
   117  	return &MasternodeRegistryV2{MasternodeRegistryV2Caller: MasternodeRegistryV2Caller{contract: contract}, MasternodeRegistryV2Transactor: MasternodeRegistryV2Transactor{contract: contract}, MasternodeRegistryV2Filterer: MasternodeRegistryV2Filterer{contract: contract}}, nil
   118  }
   119  
   120  // NewMasternodeRegistryV2Caller creates a new read-only instance of MasternodeRegistryV2, bound to a specific deployed contract.
   121  func NewMasternodeRegistryV2Caller(address common.Address, caller bind.ContractCaller) (*MasternodeRegistryV2Caller, error) {
   122  	contract, err := bindMasternodeRegistryV2(address, caller, nil, nil)
   123  	if err != nil {
   124  		return nil, err
   125  	}
   126  	return &MasternodeRegistryV2Caller{contract: contract}, nil
   127  }
   128  
   129  // NewMasternodeRegistryV2Transactor creates a new write-only instance of MasternodeRegistryV2, bound to a specific deployed contract.
   130  func NewMasternodeRegistryV2Transactor(address common.Address, transactor bind.ContractTransactor) (*MasternodeRegistryV2Transactor, error) {
   131  	contract, err := bindMasternodeRegistryV2(address, nil, transactor, nil)
   132  	if err != nil {
   133  		return nil, err
   134  	}
   135  	return &MasternodeRegistryV2Transactor{contract: contract}, nil
   136  }
   137  
   138  // NewMasternodeRegistryV2Filterer creates a new log filterer instance of MasternodeRegistryV2, bound to a specific deployed contract.
   139  func NewMasternodeRegistryV2Filterer(address common.Address, filterer bind.ContractFilterer) (*MasternodeRegistryV2Filterer, error) {
   140  	contract, err := bindMasternodeRegistryV2(address, nil, nil, filterer)
   141  	if err != nil {
   142  		return nil, err
   143  	}
   144  	return &MasternodeRegistryV2Filterer{contract: contract}, nil
   145  }
   146  
   147  // bindMasternodeRegistryV2 binds a generic wrapper to an already deployed contract.
   148  func bindMasternodeRegistryV2(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   149  	parsed, err := abi.JSON(strings.NewReader(MasternodeRegistryV2ABI))
   150  	if err != nil {
   151  		return nil, err
   152  	}
   153  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   154  }
   155  
   156  // Call invokes the (constant) contract method with params as input values and
   157  // sets the output to result. The result type might be a single field for simple
   158  // returns, a slice of interfaces for anonymous returns and a struct for named
   159  // returns.
   160  func (_MasternodeRegistryV2 *MasternodeRegistryV2Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   161  	return _MasternodeRegistryV2.Contract.MasternodeRegistryV2Caller.contract.Call(opts, result, method, params...)
   162  }
   163  
   164  // Transfer initiates a plain transaction to move funds to the contract, calling
   165  // its default method if one is available.
   166  func (_MasternodeRegistryV2 *MasternodeRegistryV2Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   167  	return _MasternodeRegistryV2.Contract.MasternodeRegistryV2Transactor.contract.Transfer(opts)
   168  }
   169  
   170  // Transact invokes the (paid) contract method with params as input values.
   171  func (_MasternodeRegistryV2 *MasternodeRegistryV2Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   172  	return _MasternodeRegistryV2.Contract.MasternodeRegistryV2Transactor.contract.Transact(opts, method, params...)
   173  }
   174  
   175  // Call invokes the (constant) contract method with params as input values and
   176  // sets the output to result. The result type might be a single field for simple
   177  // returns, a slice of interfaces for anonymous returns and a struct for named
   178  // returns.
   179  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   180  	return _MasternodeRegistryV2.Contract.contract.Call(opts, result, method, params...)
   181  }
   182  
   183  // Transfer initiates a plain transaction to move funds to the contract, calling
   184  // its default method if one is available.
   185  func (_MasternodeRegistryV2 *MasternodeRegistryV2TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   186  	return _MasternodeRegistryV2.Contract.contract.Transfer(opts)
   187  }
   188  
   189  // Transact invokes the (paid) contract method with params as input values.
   190  func (_MasternodeRegistryV2 *MasternodeRegistryV2TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   191  	return _MasternodeRegistryV2.Contract.contract.Transact(opts, method, params...)
   192  }
   193  
   194  // CanHeartbeat is a free data retrieval call binding the contract method 0xd9966aba.
   195  //
   196  // Solidity: function canHeartbeat(address masternode) constant returns(bool can_heartbeat)
   197  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) CanHeartbeat(opts *bind.CallOpts, masternode common.Address) (bool, error) {
   198  	var (
   199  		ret0 = new(bool)
   200  	)
   201  	out := ret0
   202  	err := _MasternodeRegistryV2.contract.Call(opts, out, "canHeartbeat", masternode)
   203  	return *ret0, err
   204  }
   205  
   206  // CanHeartbeat is a free data retrieval call binding the contract method 0xd9966aba.
   207  //
   208  // Solidity: function canHeartbeat(address masternode) constant returns(bool can_heartbeat)
   209  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) CanHeartbeat(masternode common.Address) (bool, error) {
   210  	return _MasternodeRegistryV2.Contract.CanHeartbeat(&_MasternodeRegistryV2.CallOpts, masternode)
   211  }
   212  
   213  // CanHeartbeat is a free data retrieval call binding the contract method 0xd9966aba.
   214  //
   215  // Solidity: function canHeartbeat(address masternode) constant returns(bool can_heartbeat)
   216  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) CanHeartbeat(masternode common.Address) (bool, error) {
   217  	return _MasternodeRegistryV2.Contract.CanHeartbeat(&_MasternodeRegistryV2.CallOpts, masternode)
   218  }
   219  
   220  // CanInvalidate is a free data retrieval call binding the contract method 0xd13ef5a5.
   221  //
   222  // Solidity: function canInvalidate(address masternode) constant returns(bool can_invalidate)
   223  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) CanInvalidate(opts *bind.CallOpts, masternode common.Address) (bool, error) {
   224  	var (
   225  		ret0 = new(bool)
   226  	)
   227  	out := ret0
   228  	err := _MasternodeRegistryV2.contract.Call(opts, out, "canInvalidate", masternode)
   229  	return *ret0, err
   230  }
   231  
   232  // CanInvalidate is a free data retrieval call binding the contract method 0xd13ef5a5.
   233  //
   234  // Solidity: function canInvalidate(address masternode) constant returns(bool can_invalidate)
   235  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) CanInvalidate(masternode common.Address) (bool, error) {
   236  	return _MasternodeRegistryV2.Contract.CanInvalidate(&_MasternodeRegistryV2.CallOpts, masternode)
   237  }
   238  
   239  // CanInvalidate is a free data retrieval call binding the contract method 0xd13ef5a5.
   240  //
   241  // Solidity: function canInvalidate(address masternode) constant returns(bool can_invalidate)
   242  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) CanInvalidate(masternode common.Address) (bool, error) {
   243  	return _MasternodeRegistryV2.Contract.CanInvalidate(&_MasternodeRegistryV2.CallOpts, masternode)
   244  }
   245  
   246  // CleanupPeriod is a free data retrieval call binding the contract method 0x5f6e2c7b.
   247  //
   248  // Solidity: function cleanup_period() constant returns(uint256)
   249  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) CleanupPeriod(opts *bind.CallOpts) (*big.Int, error) {
   250  	var (
   251  		ret0 = new(*big.Int)
   252  	)
   253  	out := ret0
   254  	err := _MasternodeRegistryV2.contract.Call(opts, out, "cleanup_period")
   255  	return *ret0, err
   256  }
   257  
   258  // CleanupPeriod is a free data retrieval call binding the contract method 0x5f6e2c7b.
   259  //
   260  // Solidity: function cleanup_period() constant returns(uint256)
   261  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) CleanupPeriod() (*big.Int, error) {
   262  	return _MasternodeRegistryV2.Contract.CleanupPeriod(&_MasternodeRegistryV2.CallOpts)
   263  }
   264  
   265  // CleanupPeriod is a free data retrieval call binding the contract method 0x5f6e2c7b.
   266  //
   267  // Solidity: function cleanup_period() constant returns(uint256)
   268  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) CleanupPeriod() (*big.Int, error) {
   269  	return _MasternodeRegistryV2.Contract.CleanupPeriod(&_MasternodeRegistryV2.CallOpts)
   270  }
   271  
   272  // CollateralLimits is a free data retrieval call binding the contract method 0xe2cb2195.
   273  //
   274  // Solidity: function collateralLimits() constant returns(uint256 min, uint256 max)
   275  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) CollateralLimits(opts *bind.CallOpts) (struct {
   276  	Min *big.Int
   277  	Max *big.Int
   278  }, error) {
   279  	ret := new(struct {
   280  		Min *big.Int
   281  		Max *big.Int
   282  	})
   283  	out := ret
   284  	err := _MasternodeRegistryV2.contract.Call(opts, out, "collateralLimits")
   285  	return *ret, err
   286  }
   287  
   288  // CollateralLimits is a free data retrieval call binding the contract method 0xe2cb2195.
   289  //
   290  // Solidity: function collateralLimits() constant returns(uint256 min, uint256 max)
   291  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) CollateralLimits() (struct {
   292  	Min *big.Int
   293  	Max *big.Int
   294  }, error) {
   295  	return _MasternodeRegistryV2.Contract.CollateralLimits(&_MasternodeRegistryV2.CallOpts)
   296  }
   297  
   298  // CollateralLimits is a free data retrieval call binding the contract method 0xe2cb2195.
   299  //
   300  // Solidity: function collateralLimits() constant returns(uint256 min, uint256 max)
   301  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) CollateralLimits() (struct {
   302  	Min *big.Int
   303  	Max *big.Int
   304  }, error) {
   305  	return _MasternodeRegistryV2.Contract.CollateralLimits(&_MasternodeRegistryV2.CallOpts)
   306  }
   307  
   308  // Count is a free data retrieval call binding the contract method 0x06661abd.
   309  //
   310  // Solidity: function count() constant returns(uint256 active, uint256 total, uint256 active_collateral, uint256 total_collateral, uint256 max_of_all_times)
   311  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) Count(opts *bind.CallOpts) (struct {
   312  	Active           *big.Int
   313  	Total            *big.Int
   314  	ActiveCollateral *big.Int
   315  	TotalCollateral  *big.Int
   316  	MaxOfAllTimes    *big.Int
   317  }, error) {
   318  	ret := new(struct {
   319  		Active           *big.Int
   320  		Total            *big.Int
   321  		ActiveCollateral *big.Int
   322  		TotalCollateral  *big.Int
   323  		MaxOfAllTimes    *big.Int
   324  	})
   325  	out := ret
   326  	err := _MasternodeRegistryV2.contract.Call(opts, out, "count")
   327  	return *ret, err
   328  }
   329  
   330  // Count is a free data retrieval call binding the contract method 0x06661abd.
   331  //
   332  // Solidity: function count() constant returns(uint256 active, uint256 total, uint256 active_collateral, uint256 total_collateral, uint256 max_of_all_times)
   333  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) Count() (struct {
   334  	Active           *big.Int
   335  	Total            *big.Int
   336  	ActiveCollateral *big.Int
   337  	TotalCollateral  *big.Int
   338  	MaxOfAllTimes    *big.Int
   339  }, error) {
   340  	return _MasternodeRegistryV2.Contract.Count(&_MasternodeRegistryV2.CallOpts)
   341  }
   342  
   343  // Count is a free data retrieval call binding the contract method 0x06661abd.
   344  //
   345  // Solidity: function count() constant returns(uint256 active, uint256 total, uint256 active_collateral, uint256 total_collateral, uint256 max_of_all_times)
   346  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) Count() (struct {
   347  	Active           *big.Int
   348  	Total            *big.Int
   349  	ActiveCollateral *big.Int
   350  	TotalCollateral  *big.Int
   351  	MaxOfAllTimes    *big.Int
   352  }, error) {
   353  	return _MasternodeRegistryV2.Contract.Count(&_MasternodeRegistryV2.CallOpts)
   354  }
   355  
   356  // CurrValidationEnds is a free data retrieval call binding the contract method 0x2e941dc4.
   357  //
   358  // Solidity: function curr_validation_ends() constant returns(uint256)
   359  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) CurrValidationEnds(opts *bind.CallOpts) (*big.Int, error) {
   360  	var (
   361  		ret0 = new(*big.Int)
   362  	)
   363  	out := ret0
   364  	err := _MasternodeRegistryV2.contract.Call(opts, out, "curr_validation_ends")
   365  	return *ret0, err
   366  }
   367  
   368  // CurrValidationEnds is a free data retrieval call binding the contract method 0x2e941dc4.
   369  //
   370  // Solidity: function curr_validation_ends() constant returns(uint256)
   371  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) CurrValidationEnds() (*big.Int, error) {
   372  	return _MasternodeRegistryV2.Contract.CurrValidationEnds(&_MasternodeRegistryV2.CallOpts)
   373  }
   374  
   375  // CurrValidationEnds is a free data retrieval call binding the contract method 0x2e941dc4.
   376  //
   377  // Solidity: function curr_validation_ends() constant returns(uint256)
   378  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) CurrValidationEnds() (*big.Int, error) {
   379  	return _MasternodeRegistryV2.Contract.CurrValidationEnds(&_MasternodeRegistryV2.CallOpts)
   380  }
   381  
   382  // CurrValidationOffset is a free data retrieval call binding the contract method 0x73b24540.
   383  //
   384  // Solidity: function curr_validation_offset() constant returns(uint256)
   385  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) CurrValidationOffset(opts *bind.CallOpts) (*big.Int, error) {
   386  	var (
   387  		ret0 = new(*big.Int)
   388  	)
   389  	out := ret0
   390  	err := _MasternodeRegistryV2.contract.Call(opts, out, "curr_validation_offset")
   391  	return *ret0, err
   392  }
   393  
   394  // CurrValidationOffset is a free data retrieval call binding the contract method 0x73b24540.
   395  //
   396  // Solidity: function curr_validation_offset() constant returns(uint256)
   397  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) CurrValidationOffset() (*big.Int, error) {
   398  	return _MasternodeRegistryV2.Contract.CurrValidationOffset(&_MasternodeRegistryV2.CallOpts)
   399  }
   400  
   401  // CurrValidationOffset is a free data retrieval call binding the contract method 0x73b24540.
   402  //
   403  // Solidity: function curr_validation_offset() constant returns(uint256)
   404  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) CurrValidationOffset() (*big.Int, error) {
   405  	return _MasternodeRegistryV2.Contract.CurrValidationOffset(&_MasternodeRegistryV2.CallOpts)
   406  }
   407  
   408  // CurrentMasternode is a free data retrieval call binding the contract method 0x1a26763c.
   409  //
   410  // Solidity: function current_masternode() constant returns(address)
   411  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) CurrentMasternode(opts *bind.CallOpts) (common.Address, error) {
   412  	var (
   413  		ret0 = new(common.Address)
   414  	)
   415  	out := ret0
   416  	err := _MasternodeRegistryV2.contract.Call(opts, out, "current_masternode")
   417  	return *ret0, err
   418  }
   419  
   420  // CurrentMasternode is a free data retrieval call binding the contract method 0x1a26763c.
   421  //
   422  // Solidity: function current_masternode() constant returns(address)
   423  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) CurrentMasternode() (common.Address, error) {
   424  	return _MasternodeRegistryV2.Contract.CurrentMasternode(&_MasternodeRegistryV2.CallOpts)
   425  }
   426  
   427  // CurrentMasternode is a free data retrieval call binding the contract method 0x1a26763c.
   428  //
   429  // Solidity: function current_masternode() constant returns(address)
   430  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) CurrentMasternode() (common.Address, error) {
   431  	return _MasternodeRegistryV2.Contract.CurrentMasternode(&_MasternodeRegistryV2.CallOpts)
   432  }
   433  
   434  // CurrentPayouts is a free data retrieval call binding the contract method 0x9c5e8ae2.
   435  //
   436  // Solidity: function current_payouts() constant returns(uint256)
   437  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) CurrentPayouts(opts *bind.CallOpts) (*big.Int, error) {
   438  	var (
   439  		ret0 = new(*big.Int)
   440  	)
   441  	out := ret0
   442  	err := _MasternodeRegistryV2.contract.Call(opts, out, "current_payouts")
   443  	return *ret0, err
   444  }
   445  
   446  // CurrentPayouts is a free data retrieval call binding the contract method 0x9c5e8ae2.
   447  //
   448  // Solidity: function current_payouts() constant returns(uint256)
   449  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) CurrentPayouts() (*big.Int, error) {
   450  	return _MasternodeRegistryV2.Contract.CurrentPayouts(&_MasternodeRegistryV2.CallOpts)
   451  }
   452  
   453  // CurrentPayouts is a free data retrieval call binding the contract method 0x9c5e8ae2.
   454  //
   455  // Solidity: function current_payouts() constant returns(uint256)
   456  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) CurrentPayouts() (*big.Int, error) {
   457  	return _MasternodeRegistryV2.Contract.CurrentPayouts(&_MasternodeRegistryV2.CallOpts)
   458  }
   459  
   460  // Enumerate is a free data retrieval call binding the contract method 0xff9f78b3.
   461  //
   462  // Solidity: function enumerate() constant returns(address[] masternodes)
   463  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) Enumerate(opts *bind.CallOpts) ([]common.Address, error) {
   464  	var (
   465  		ret0 = new([]common.Address)
   466  	)
   467  	out := ret0
   468  	err := _MasternodeRegistryV2.contract.Call(opts, out, "enumerate")
   469  	return *ret0, err
   470  }
   471  
   472  // Enumerate is a free data retrieval call binding the contract method 0xff9f78b3.
   473  //
   474  // Solidity: function enumerate() constant returns(address[] masternodes)
   475  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) Enumerate() ([]common.Address, error) {
   476  	return _MasternodeRegistryV2.Contract.Enumerate(&_MasternodeRegistryV2.CallOpts)
   477  }
   478  
   479  // Enumerate is a free data retrieval call binding the contract method 0xff9f78b3.
   480  //
   481  // Solidity: function enumerate() constant returns(address[] masternodes)
   482  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) Enumerate() ([]common.Address, error) {
   483  	return _MasternodeRegistryV2.Contract.Enumerate(&_MasternodeRegistryV2.CallOpts)
   484  }
   485  
   486  // EnumerateActive is a free data retrieval call binding the contract method 0xe1d6f43a.
   487  //
   488  // Solidity: function enumerateActive() constant returns(address[] masternodes)
   489  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) EnumerateActive(opts *bind.CallOpts) ([]common.Address, error) {
   490  	var (
   491  		ret0 = new([]common.Address)
   492  	)
   493  	out := ret0
   494  	err := _MasternodeRegistryV2.contract.Call(opts, out, "enumerateActive")
   495  	return *ret0, err
   496  }
   497  
   498  // EnumerateActive is a free data retrieval call binding the contract method 0xe1d6f43a.
   499  //
   500  // Solidity: function enumerateActive() constant returns(address[] masternodes)
   501  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) EnumerateActive() ([]common.Address, error) {
   502  	return _MasternodeRegistryV2.Contract.EnumerateActive(&_MasternodeRegistryV2.CallOpts)
   503  }
   504  
   505  // EnumerateActive is a free data retrieval call binding the contract method 0xe1d6f43a.
   506  //
   507  // Solidity: function enumerateActive() constant returns(address[] masternodes)
   508  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) EnumerateActive() ([]common.Address, error) {
   509  	return _MasternodeRegistryV2.Contract.EnumerateActive(&_MasternodeRegistryV2.CallOpts)
   510  }
   511  
   512  // GetReward is a free data retrieval call binding the contract method 0x1c4b774b.
   513  //
   514  // Solidity: function getReward(uint256 _blockNumber) constant returns(uint256 amount)
   515  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) GetReward(opts *bind.CallOpts, _blockNumber *big.Int) (*big.Int, error) {
   516  	var (
   517  		ret0 = new(*big.Int)
   518  	)
   519  	out := ret0
   520  	err := _MasternodeRegistryV2.contract.Call(opts, out, "getReward", _blockNumber)
   521  	return *ret0, err
   522  }
   523  
   524  // GetReward is a free data retrieval call binding the contract method 0x1c4b774b.
   525  //
   526  // Solidity: function getReward(uint256 _blockNumber) constant returns(uint256 amount)
   527  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) GetReward(_blockNumber *big.Int) (*big.Int, error) {
   528  	return _MasternodeRegistryV2.Contract.GetReward(&_MasternodeRegistryV2.CallOpts, _blockNumber)
   529  }
   530  
   531  // GetReward is a free data retrieval call binding the contract method 0x1c4b774b.
   532  //
   533  // Solidity: function getReward(uint256 _blockNumber) constant returns(uint256 amount)
   534  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) GetReward(_blockNumber *big.Int) (*big.Int, error) {
   535  	return _MasternodeRegistryV2.Contract.GetReward(&_MasternodeRegistryV2.CallOpts, _blockNumber)
   536  }
   537  
   538  // Info is a free data retrieval call binding the contract method 0x0aae7a6b.
   539  //
   540  // Solidity: function info(address masternode) constant returns(address owner, uint32 ipv4address, bytes32[2] enode, uint256 collateral, uint256 announced_block, uint256 sw_features)
   541  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) Info(opts *bind.CallOpts, masternode common.Address) (struct {
   542  	Owner          common.Address
   543  	Ipv4address    uint32
   544  	Enode          [2][32]byte
   545  	Collateral     *big.Int
   546  	AnnouncedBlock *big.Int
   547  	SwFeatures     *big.Int
   548  }, error) {
   549  	ret := new(struct {
   550  		Owner          common.Address
   551  		Ipv4address    uint32
   552  		Enode          [2][32]byte
   553  		Collateral     *big.Int
   554  		AnnouncedBlock *big.Int
   555  		SwFeatures     *big.Int
   556  	})
   557  	out := ret
   558  	err := _MasternodeRegistryV2.contract.Call(opts, out, "info", masternode)
   559  	return *ret, err
   560  }
   561  
   562  // Info is a free data retrieval call binding the contract method 0x0aae7a6b.
   563  //
   564  // Solidity: function info(address masternode) constant returns(address owner, uint32 ipv4address, bytes32[2] enode, uint256 collateral, uint256 announced_block, uint256 sw_features)
   565  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) Info(masternode common.Address) (struct {
   566  	Owner          common.Address
   567  	Ipv4address    uint32
   568  	Enode          [2][32]byte
   569  	Collateral     *big.Int
   570  	AnnouncedBlock *big.Int
   571  	SwFeatures     *big.Int
   572  }, error) {
   573  	return _MasternodeRegistryV2.Contract.Info(&_MasternodeRegistryV2.CallOpts, masternode)
   574  }
   575  
   576  // Info is a free data retrieval call binding the contract method 0x0aae7a6b.
   577  //
   578  // Solidity: function info(address masternode) constant returns(address owner, uint32 ipv4address, bytes32[2] enode, uint256 collateral, uint256 announced_block, uint256 sw_features)
   579  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) Info(masternode common.Address) (struct {
   580  	Owner          common.Address
   581  	Ipv4address    uint32
   582  	Enode          [2][32]byte
   583  	Collateral     *big.Int
   584  	AnnouncedBlock *big.Int
   585  	SwFeatures     *big.Int
   586  }, error) {
   587  	return _MasternodeRegistryV2.Contract.Info(&_MasternodeRegistryV2.CallOpts, masternode)
   588  }
   589  
   590  // IsActive is a free data retrieval call binding the contract method 0x9f8a13d7.
   591  //
   592  // Solidity: function isActive(address masternode) constant returns(bool)
   593  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) IsActive(opts *bind.CallOpts, masternode common.Address) (bool, error) {
   594  	var (
   595  		ret0 = new(bool)
   596  	)
   597  	out := ret0
   598  	err := _MasternodeRegistryV2.contract.Call(opts, out, "isActive", masternode)
   599  	return *ret0, err
   600  }
   601  
   602  // IsActive is a free data retrieval call binding the contract method 0x9f8a13d7.
   603  //
   604  // Solidity: function isActive(address masternode) constant returns(bool)
   605  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) IsActive(masternode common.Address) (bool, error) {
   606  	return _MasternodeRegistryV2.Contract.IsActive(&_MasternodeRegistryV2.CallOpts, masternode)
   607  }
   608  
   609  // IsActive is a free data retrieval call binding the contract method 0x9f8a13d7.
   610  //
   611  // Solidity: function isActive(address masternode) constant returns(bool)
   612  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) IsActive(masternode common.Address) (bool, error) {
   613  	return _MasternodeRegistryV2.Contract.IsActive(&_MasternodeRegistryV2.CallOpts, masternode)
   614  }
   615  
   616  // LastBlockNumber is a free data retrieval call binding the contract method 0x1eeaebb2.
   617  //
   618  // Solidity: function last_block_number() constant returns(uint256)
   619  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) LastBlockNumber(opts *bind.CallOpts) (*big.Int, error) {
   620  	var (
   621  		ret0 = new(*big.Int)
   622  	)
   623  	out := ret0
   624  	err := _MasternodeRegistryV2.contract.Call(opts, out, "last_block_number")
   625  	return *ret0, err
   626  }
   627  
   628  // LastBlockNumber is a free data retrieval call binding the contract method 0x1eeaebb2.
   629  //
   630  // Solidity: function last_block_number() constant returns(uint256)
   631  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) LastBlockNumber() (*big.Int, error) {
   632  	return _MasternodeRegistryV2.Contract.LastBlockNumber(&_MasternodeRegistryV2.CallOpts)
   633  }
   634  
   635  // LastBlockNumber is a free data retrieval call binding the contract method 0x1eeaebb2.
   636  //
   637  // Solidity: function last_block_number() constant returns(uint256)
   638  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) LastBlockNumber() (*big.Int, error) {
   639  	return _MasternodeRegistryV2.Contract.LastBlockNumber(&_MasternodeRegistryV2.CallOpts)
   640  }
   641  
   642  // MnActive is a free data retrieval call binding the contract method 0x521f284d.
   643  //
   644  // Solidity: function mn_active() constant returns(uint256)
   645  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) MnActive(opts *bind.CallOpts) (*big.Int, error) {
   646  	var (
   647  		ret0 = new(*big.Int)
   648  	)
   649  	out := ret0
   650  	err := _MasternodeRegistryV2.contract.Call(opts, out, "mn_active")
   651  	return *ret0, err
   652  }
   653  
   654  // MnActive is a free data retrieval call binding the contract method 0x521f284d.
   655  //
   656  // Solidity: function mn_active() constant returns(uint256)
   657  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) MnActive() (*big.Int, error) {
   658  	return _MasternodeRegistryV2.Contract.MnActive(&_MasternodeRegistryV2.CallOpts)
   659  }
   660  
   661  // MnActive is a free data retrieval call binding the contract method 0x521f284d.
   662  //
   663  // Solidity: function mn_active() constant returns(uint256)
   664  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) MnActive() (*big.Int, error) {
   665  	return _MasternodeRegistryV2.Contract.MnActive(&_MasternodeRegistryV2.CallOpts)
   666  }
   667  
   668  // MnActiveCollateral is a free data retrieval call binding the contract method 0x6d41ff4e.
   669  //
   670  // Solidity: function mn_active_collateral() constant returns(uint256)
   671  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) MnActiveCollateral(opts *bind.CallOpts) (*big.Int, error) {
   672  	var (
   673  		ret0 = new(*big.Int)
   674  	)
   675  	out := ret0
   676  	err := _MasternodeRegistryV2.contract.Call(opts, out, "mn_active_collateral")
   677  	return *ret0, err
   678  }
   679  
   680  // MnActiveCollateral is a free data retrieval call binding the contract method 0x6d41ff4e.
   681  //
   682  // Solidity: function mn_active_collateral() constant returns(uint256)
   683  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) MnActiveCollateral() (*big.Int, error) {
   684  	return _MasternodeRegistryV2.Contract.MnActiveCollateral(&_MasternodeRegistryV2.CallOpts)
   685  }
   686  
   687  // MnActiveCollateral is a free data retrieval call binding the contract method 0x6d41ff4e.
   688  //
   689  // Solidity: function mn_active_collateral() constant returns(uint256)
   690  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) MnActiveCollateral() (*big.Int, error) {
   691  	return _MasternodeRegistryV2.Contract.MnActiveCollateral(&_MasternodeRegistryV2.CallOpts)
   692  }
   693  
   694  // MnAnnounced is a free data retrieval call binding the contract method 0xab00fdc4.
   695  //
   696  // Solidity: function mn_announced() constant returns(uint256)
   697  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) MnAnnounced(opts *bind.CallOpts) (*big.Int, error) {
   698  	var (
   699  		ret0 = new(*big.Int)
   700  	)
   701  	out := ret0
   702  	err := _MasternodeRegistryV2.contract.Call(opts, out, "mn_announced")
   703  	return *ret0, err
   704  }
   705  
   706  // MnAnnounced is a free data retrieval call binding the contract method 0xab00fdc4.
   707  //
   708  // Solidity: function mn_announced() constant returns(uint256)
   709  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) MnAnnounced() (*big.Int, error) {
   710  	return _MasternodeRegistryV2.Contract.MnAnnounced(&_MasternodeRegistryV2.CallOpts)
   711  }
   712  
   713  // MnAnnounced is a free data retrieval call binding the contract method 0xab00fdc4.
   714  //
   715  // Solidity: function mn_announced() constant returns(uint256)
   716  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) MnAnnounced() (*big.Int, error) {
   717  	return _MasternodeRegistryV2.Contract.MnAnnounced(&_MasternodeRegistryV2.CallOpts)
   718  }
   719  
   720  // MnAnnouncedCollateral is a free data retrieval call binding the contract method 0x57f2a7d8.
   721  //
   722  // Solidity: function mn_announced_collateral() constant returns(uint256)
   723  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) MnAnnouncedCollateral(opts *bind.CallOpts) (*big.Int, error) {
   724  	var (
   725  		ret0 = new(*big.Int)
   726  	)
   727  	out := ret0
   728  	err := _MasternodeRegistryV2.contract.Call(opts, out, "mn_announced_collateral")
   729  	return *ret0, err
   730  }
   731  
   732  // MnAnnouncedCollateral is a free data retrieval call binding the contract method 0x57f2a7d8.
   733  //
   734  // Solidity: function mn_announced_collateral() constant returns(uint256)
   735  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) MnAnnouncedCollateral() (*big.Int, error) {
   736  	return _MasternodeRegistryV2.Contract.MnAnnouncedCollateral(&_MasternodeRegistryV2.CallOpts)
   737  }
   738  
   739  // MnAnnouncedCollateral is a free data retrieval call binding the contract method 0x57f2a7d8.
   740  //
   741  // Solidity: function mn_announced_collateral() constant returns(uint256)
   742  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) MnAnnouncedCollateral() (*big.Int, error) {
   743  	return _MasternodeRegistryV2.Contract.MnAnnouncedCollateral(&_MasternodeRegistryV2.CallOpts)
   744  }
   745  
   746  // MnEverCollateral is a free data retrieval call binding the contract method 0xcb4f40c5.
   747  //
   748  // Solidity: function mn_ever_collateral() constant returns(uint256)
   749  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) MnEverCollateral(opts *bind.CallOpts) (*big.Int, error) {
   750  	var (
   751  		ret0 = new(*big.Int)
   752  	)
   753  	out := ret0
   754  	err := _MasternodeRegistryV2.contract.Call(opts, out, "mn_ever_collateral")
   755  	return *ret0, err
   756  }
   757  
   758  // MnEverCollateral is a free data retrieval call binding the contract method 0xcb4f40c5.
   759  //
   760  // Solidity: function mn_ever_collateral() constant returns(uint256)
   761  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) MnEverCollateral() (*big.Int, error) {
   762  	return _MasternodeRegistryV2.Contract.MnEverCollateral(&_MasternodeRegistryV2.CallOpts)
   763  }
   764  
   765  // MnEverCollateral is a free data retrieval call binding the contract method 0xcb4f40c5.
   766  //
   767  // Solidity: function mn_ever_collateral() constant returns(uint256)
   768  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) MnEverCollateral() (*big.Int, error) {
   769  	return _MasternodeRegistryV2.Contract.MnEverCollateral(&_MasternodeRegistryV2.CallOpts)
   770  }
   771  
   772  // MnStatus is a free data retrieval call binding the contract method 0x4d1b4dae.
   773  //
   774  // Solidity: function mn_status(address ) constant returns(uint256 sw_features, uint256 next_heartbeat, uint256 inactive_since, uint256 validator_index, uint256 invalidations, uint256 seq_payouts, uint256 last_vote_epoch)
   775  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) MnStatus(opts *bind.CallOpts, arg0 common.Address) (struct {
   776  	SwFeatures     *big.Int
   777  	NextHeartbeat  *big.Int
   778  	InactiveSince  *big.Int
   779  	ValidatorIndex *big.Int
   780  	Invalidations  *big.Int
   781  	SeqPayouts     *big.Int
   782  	LastVoteEpoch  *big.Int
   783  }, error) {
   784  	ret := new(struct {
   785  		SwFeatures     *big.Int
   786  		NextHeartbeat  *big.Int
   787  		InactiveSince  *big.Int
   788  		ValidatorIndex *big.Int
   789  		Invalidations  *big.Int
   790  		SeqPayouts     *big.Int
   791  		LastVoteEpoch  *big.Int
   792  	})
   793  	out := ret
   794  	err := _MasternodeRegistryV2.contract.Call(opts, out, "mn_status", arg0)
   795  	return *ret, err
   796  }
   797  
   798  // MnStatus is a free data retrieval call binding the contract method 0x4d1b4dae.
   799  //
   800  // Solidity: function mn_status(address ) constant returns(uint256 sw_features, uint256 next_heartbeat, uint256 inactive_since, uint256 validator_index, uint256 invalidations, uint256 seq_payouts, uint256 last_vote_epoch)
   801  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) MnStatus(arg0 common.Address) (struct {
   802  	SwFeatures     *big.Int
   803  	NextHeartbeat  *big.Int
   804  	InactiveSince  *big.Int
   805  	ValidatorIndex *big.Int
   806  	Invalidations  *big.Int
   807  	SeqPayouts     *big.Int
   808  	LastVoteEpoch  *big.Int
   809  }, error) {
   810  	return _MasternodeRegistryV2.Contract.MnStatus(&_MasternodeRegistryV2.CallOpts, arg0)
   811  }
   812  
   813  // MnStatus is a free data retrieval call binding the contract method 0x4d1b4dae.
   814  //
   815  // Solidity: function mn_status(address ) constant returns(uint256 sw_features, uint256 next_heartbeat, uint256 inactive_since, uint256 validator_index, uint256 invalidations, uint256 seq_payouts, uint256 last_vote_epoch)
   816  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) MnStatus(arg0 common.Address) (struct {
   817  	SwFeatures     *big.Int
   818  	NextHeartbeat  *big.Int
   819  	InactiveSince  *big.Int
   820  	ValidatorIndex *big.Int
   821  	Invalidations  *big.Int
   822  	SeqPayouts     *big.Int
   823  	LastVoteEpoch  *big.Int
   824  }, error) {
   825  	return _MasternodeRegistryV2.Contract.MnStatus(&_MasternodeRegistryV2.CallOpts, arg0)
   826  }
   827  
   828  // OwnerInfo is a free data retrieval call binding the contract method 0xb83e1605.
   829  //
   830  // Solidity: function ownerInfo(address owner) constant returns(address masternode, uint32 ipv4address, bytes32[2] enode, uint256 collateral, uint256 announced_block, uint256 sw_features)
   831  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) OwnerInfo(opts *bind.CallOpts, owner common.Address) (struct {
   832  	Masternode     common.Address
   833  	Ipv4address    uint32
   834  	Enode          [2][32]byte
   835  	Collateral     *big.Int
   836  	AnnouncedBlock *big.Int
   837  	SwFeatures     *big.Int
   838  }, error) {
   839  	ret := new(struct {
   840  		Masternode     common.Address
   841  		Ipv4address    uint32
   842  		Enode          [2][32]byte
   843  		Collateral     *big.Int
   844  		AnnouncedBlock *big.Int
   845  		SwFeatures     *big.Int
   846  	})
   847  	out := ret
   848  	err := _MasternodeRegistryV2.contract.Call(opts, out, "ownerInfo", owner)
   849  	return *ret, err
   850  }
   851  
   852  // OwnerInfo is a free data retrieval call binding the contract method 0xb83e1605.
   853  //
   854  // Solidity: function ownerInfo(address owner) constant returns(address masternode, uint32 ipv4address, bytes32[2] enode, uint256 collateral, uint256 announced_block, uint256 sw_features)
   855  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) OwnerInfo(owner common.Address) (struct {
   856  	Masternode     common.Address
   857  	Ipv4address    uint32
   858  	Enode          [2][32]byte
   859  	Collateral     *big.Int
   860  	AnnouncedBlock *big.Int
   861  	SwFeatures     *big.Int
   862  }, error) {
   863  	return _MasternodeRegistryV2.Contract.OwnerInfo(&_MasternodeRegistryV2.CallOpts, owner)
   864  }
   865  
   866  // OwnerInfo is a free data retrieval call binding the contract method 0xb83e1605.
   867  //
   868  // Solidity: function ownerInfo(address owner) constant returns(address masternode, uint32 ipv4address, bytes32[2] enode, uint256 collateral, uint256 announced_block, uint256 sw_features)
   869  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) OwnerInfo(owner common.Address) (struct {
   870  	Masternode     common.Address
   871  	Ipv4address    uint32
   872  	Enode          [2][32]byte
   873  	Collateral     *big.Int
   874  	AnnouncedBlock *big.Int
   875  	SwFeatures     *big.Int
   876  }, error) {
   877  	return _MasternodeRegistryV2.Contract.OwnerInfo(&_MasternodeRegistryV2.CallOpts, owner)
   878  }
   879  
   880  // PaymentsPerBlock is a free data retrieval call binding the contract method 0x542396fd.
   881  //
   882  // Solidity: function payments_per_block() constant returns(uint256)
   883  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) PaymentsPerBlock(opts *bind.CallOpts) (*big.Int, error) {
   884  	var (
   885  		ret0 = new(*big.Int)
   886  	)
   887  	out := ret0
   888  	err := _MasternodeRegistryV2.contract.Call(opts, out, "payments_per_block")
   889  	return *ret0, err
   890  }
   891  
   892  // PaymentsPerBlock is a free data retrieval call binding the contract method 0x542396fd.
   893  //
   894  // Solidity: function payments_per_block() constant returns(uint256)
   895  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) PaymentsPerBlock() (*big.Int, error) {
   896  	return _MasternodeRegistryV2.Contract.PaymentsPerBlock(&_MasternodeRegistryV2.CallOpts)
   897  }
   898  
   899  // PaymentsPerBlock is a free data retrieval call binding the contract method 0x542396fd.
   900  //
   901  // Solidity: function payments_per_block() constant returns(uint256)
   902  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) PaymentsPerBlock() (*big.Int, error) {
   903  	return _MasternodeRegistryV2.Contract.PaymentsPerBlock(&_MasternodeRegistryV2.CallOpts)
   904  }
   905  
   906  // Proxy is a free data retrieval call binding the contract method 0xec556889.
   907  //
   908  // Solidity: function proxy() constant returns(address)
   909  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) Proxy(opts *bind.CallOpts) (common.Address, error) {
   910  	var (
   911  		ret0 = new(common.Address)
   912  	)
   913  	out := ret0
   914  	err := _MasternodeRegistryV2.contract.Call(opts, out, "proxy")
   915  	return *ret0, err
   916  }
   917  
   918  // Proxy is a free data retrieval call binding the contract method 0xec556889.
   919  //
   920  // Solidity: function proxy() constant returns(address)
   921  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) Proxy() (common.Address, error) {
   922  	return _MasternodeRegistryV2.Contract.Proxy(&_MasternodeRegistryV2.CallOpts)
   923  }
   924  
   925  // Proxy is a free data retrieval call binding the contract method 0xec556889.
   926  //
   927  // Solidity: function proxy() constant returns(address)
   928  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) Proxy() (common.Address, error) {
   929  	return _MasternodeRegistryV2.Contract.Proxy(&_MasternodeRegistryV2.CallOpts)
   930  }
   931  
   932  // RequireValidation is a free data retrieval call binding the contract method 0x35ab13f6.
   933  //
   934  // Solidity: function require_validation() constant returns(uint256)
   935  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) RequireValidation(opts *bind.CallOpts) (*big.Int, error) {
   936  	var (
   937  		ret0 = new(*big.Int)
   938  	)
   939  	out := ret0
   940  	err := _MasternodeRegistryV2.contract.Call(opts, out, "require_validation")
   941  	return *ret0, err
   942  }
   943  
   944  // RequireValidation is a free data retrieval call binding the contract method 0x35ab13f6.
   945  //
   946  // Solidity: function require_validation() constant returns(uint256)
   947  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) RequireValidation() (*big.Int, error) {
   948  	return _MasternodeRegistryV2.Contract.RequireValidation(&_MasternodeRegistryV2.CallOpts)
   949  }
   950  
   951  // RequireValidation is a free data retrieval call binding the contract method 0x35ab13f6.
   952  //
   953  // Solidity: function require_validation() constant returns(uint256)
   954  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) RequireValidation() (*big.Int, error) {
   955  	return _MasternodeRegistryV2.Contract.RequireValidation(&_MasternodeRegistryV2.CallOpts)
   956  }
   957  
   958  // TokenProxy is a free data retrieval call binding the contract method 0x84afd47f.
   959  //
   960  // Solidity: function token_proxy() constant returns(address)
   961  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) TokenProxy(opts *bind.CallOpts) (common.Address, error) {
   962  	var (
   963  		ret0 = new(common.Address)
   964  	)
   965  	out := ret0
   966  	err := _MasternodeRegistryV2.contract.Call(opts, out, "token_proxy")
   967  	return *ret0, err
   968  }
   969  
   970  // TokenProxy is a free data retrieval call binding the contract method 0x84afd47f.
   971  //
   972  // Solidity: function token_proxy() constant returns(address)
   973  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) TokenProxy() (common.Address, error) {
   974  	return _MasternodeRegistryV2.Contract.TokenProxy(&_MasternodeRegistryV2.CallOpts)
   975  }
   976  
   977  // TokenProxy is a free data retrieval call binding the contract method 0x84afd47f.
   978  //
   979  // Solidity: function token_proxy() constant returns(address)
   980  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) TokenProxy() (common.Address, error) {
   981  	return _MasternodeRegistryV2.Contract.TokenProxy(&_MasternodeRegistryV2.CallOpts)
   982  }
   983  
   984  // TreasuryProxy is a free data retrieval call binding the contract method 0xa2731784.
   985  //
   986  // Solidity: function treasury_proxy() constant returns(address)
   987  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) TreasuryProxy(opts *bind.CallOpts) (common.Address, error) {
   988  	var (
   989  		ret0 = new(common.Address)
   990  	)
   991  	out := ret0
   992  	err := _MasternodeRegistryV2.contract.Call(opts, out, "treasury_proxy")
   993  	return *ret0, err
   994  }
   995  
   996  // TreasuryProxy is a free data retrieval call binding the contract method 0xa2731784.
   997  //
   998  // Solidity: function treasury_proxy() constant returns(address)
   999  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) TreasuryProxy() (common.Address, error) {
  1000  	return _MasternodeRegistryV2.Contract.TreasuryProxy(&_MasternodeRegistryV2.CallOpts)
  1001  }
  1002  
  1003  // TreasuryProxy is a free data retrieval call binding the contract method 0xa2731784.
  1004  //
  1005  // Solidity: function treasury_proxy() constant returns(address)
  1006  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) TreasuryProxy() (common.Address, error) {
  1007  	return _MasternodeRegistryV2.Contract.TreasuryProxy(&_MasternodeRegistryV2.CallOpts)
  1008  }
  1009  
  1010  // V1storage is a free data retrieval call binding the contract method 0x2d059305.
  1011  //
  1012  // Solidity: function v1storage() constant returns(address)
  1013  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) V1storage(opts *bind.CallOpts) (common.Address, error) {
  1014  	var (
  1015  		ret0 = new(common.Address)
  1016  	)
  1017  	out := ret0
  1018  	err := _MasternodeRegistryV2.contract.Call(opts, out, "v1storage")
  1019  	return *ret0, err
  1020  }
  1021  
  1022  // V1storage is a free data retrieval call binding the contract method 0x2d059305.
  1023  //
  1024  // Solidity: function v1storage() constant returns(address)
  1025  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) V1storage() (common.Address, error) {
  1026  	return _MasternodeRegistryV2.Contract.V1storage(&_MasternodeRegistryV2.CallOpts)
  1027  }
  1028  
  1029  // V1storage is a free data retrieval call binding the contract method 0x2d059305.
  1030  //
  1031  // Solidity: function v1storage() constant returns(address)
  1032  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) V1storage() (common.Address, error) {
  1033  	return _MasternodeRegistryV2.Contract.V1storage(&_MasternodeRegistryV2.CallOpts)
  1034  }
  1035  
  1036  // ValidationTarget is a free data retrieval call binding the contract method 0xc3db74d6.
  1037  //
  1038  // Solidity: function validationTarget(address masternode) constant returns(address target)
  1039  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) ValidationTarget(opts *bind.CallOpts, masternode common.Address) (common.Address, error) {
  1040  	var (
  1041  		ret0 = new(common.Address)
  1042  	)
  1043  	out := ret0
  1044  	err := _MasternodeRegistryV2.contract.Call(opts, out, "validationTarget", masternode)
  1045  	return *ret0, err
  1046  }
  1047  
  1048  // ValidationTarget is a free data retrieval call binding the contract method 0xc3db74d6.
  1049  //
  1050  // Solidity: function validationTarget(address masternode) constant returns(address target)
  1051  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) ValidationTarget(masternode common.Address) (common.Address, error) {
  1052  	return _MasternodeRegistryV2.Contract.ValidationTarget(&_MasternodeRegistryV2.CallOpts, masternode)
  1053  }
  1054  
  1055  // ValidationTarget is a free data retrieval call binding the contract method 0xc3db74d6.
  1056  //
  1057  // Solidity: function validationTarget(address masternode) constant returns(address target)
  1058  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) ValidationTarget(masternode common.Address) (common.Address, error) {
  1059  	return _MasternodeRegistryV2.Contract.ValidationTarget(&_MasternodeRegistryV2.CallOpts, masternode)
  1060  }
  1061  
  1062  // ValidationPeriods is a free data retrieval call binding the contract method 0x18a2ac19.
  1063  //
  1064  // Solidity: function validation_periods() constant returns(uint256)
  1065  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) ValidationPeriods(opts *bind.CallOpts) (*big.Int, error) {
  1066  	var (
  1067  		ret0 = new(*big.Int)
  1068  	)
  1069  	out := ret0
  1070  	err := _MasternodeRegistryV2.contract.Call(opts, out, "validation_periods")
  1071  	return *ret0, err
  1072  }
  1073  
  1074  // ValidationPeriods is a free data retrieval call binding the contract method 0x18a2ac19.
  1075  //
  1076  // Solidity: function validation_periods() constant returns(uint256)
  1077  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) ValidationPeriods() (*big.Int, error) {
  1078  	return _MasternodeRegistryV2.Contract.ValidationPeriods(&_MasternodeRegistryV2.CallOpts)
  1079  }
  1080  
  1081  // ValidationPeriods is a free data retrieval call binding the contract method 0x18a2ac19.
  1082  //
  1083  // Solidity: function validation_periods() constant returns(uint256)
  1084  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) ValidationPeriods() (*big.Int, error) {
  1085  	return _MasternodeRegistryV2.Contract.ValidationPeriods(&_MasternodeRegistryV2.CallOpts)
  1086  }
  1087  
  1088  // ValidatorList is a free data retrieval call binding the contract method 0x4e60b981.
  1089  //
  1090  // Solidity: function validator_list(uint256 ) constant returns(address)
  1091  func (_MasternodeRegistryV2 *MasternodeRegistryV2Caller) ValidatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
  1092  	var (
  1093  		ret0 = new(common.Address)
  1094  	)
  1095  	out := ret0
  1096  	err := _MasternodeRegistryV2.contract.Call(opts, out, "validator_list", arg0)
  1097  	return *ret0, err
  1098  }
  1099  
  1100  // ValidatorList is a free data retrieval call binding the contract method 0x4e60b981.
  1101  //
  1102  // Solidity: function validator_list(uint256 ) constant returns(address)
  1103  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) ValidatorList(arg0 *big.Int) (common.Address, error) {
  1104  	return _MasternodeRegistryV2.Contract.ValidatorList(&_MasternodeRegistryV2.CallOpts, arg0)
  1105  }
  1106  
  1107  // ValidatorList is a free data retrieval call binding the contract method 0x4e60b981.
  1108  //
  1109  // Solidity: function validator_list(uint256 ) constant returns(address)
  1110  func (_MasternodeRegistryV2 *MasternodeRegistryV2CallerSession) ValidatorList(arg0 *big.Int) (common.Address, error) {
  1111  	return _MasternodeRegistryV2.Contract.ValidatorList(&_MasternodeRegistryV2.CallOpts, arg0)
  1112  }
  1113  
  1114  // Announce is a paid mutator transaction binding the contract method 0xd70d5c30.
  1115  //
  1116  // Solidity: function announce(address masternode, uint32 ipv4address, bytes32[2] enode) returns()
  1117  func (_MasternodeRegistryV2 *MasternodeRegistryV2Transactor) Announce(opts *bind.TransactOpts, masternode common.Address, ipv4address uint32, enode [2][32]byte) (*types.Transaction, error) {
  1118  	return _MasternodeRegistryV2.contract.Transact(opts, "announce", masternode, ipv4address, enode)
  1119  }
  1120  
  1121  // Announce is a paid mutator transaction binding the contract method 0xd70d5c30.
  1122  //
  1123  // Solidity: function announce(address masternode, uint32 ipv4address, bytes32[2] enode) returns()
  1124  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) Announce(masternode common.Address, ipv4address uint32, enode [2][32]byte) (*types.Transaction, error) {
  1125  	return _MasternodeRegistryV2.Contract.Announce(&_MasternodeRegistryV2.TransactOpts, masternode, ipv4address, enode)
  1126  }
  1127  
  1128  // Announce is a paid mutator transaction binding the contract method 0xd70d5c30.
  1129  //
  1130  // Solidity: function announce(address masternode, uint32 ipv4address, bytes32[2] enode) returns()
  1131  func (_MasternodeRegistryV2 *MasternodeRegistryV2TransactorSession) Announce(masternode common.Address, ipv4address uint32, enode [2][32]byte) (*types.Transaction, error) {
  1132  	return _MasternodeRegistryV2.Contract.Announce(&_MasternodeRegistryV2.TransactOpts, masternode, ipv4address, enode)
  1133  }
  1134  
  1135  // Denounce is a paid mutator transaction binding the contract method 0xca0e551f.
  1136  //
  1137  // Solidity: function denounce(address masternode) returns()
  1138  func (_MasternodeRegistryV2 *MasternodeRegistryV2Transactor) Denounce(opts *bind.TransactOpts, masternode common.Address) (*types.Transaction, error) {
  1139  	return _MasternodeRegistryV2.contract.Transact(opts, "denounce", masternode)
  1140  }
  1141  
  1142  // Denounce is a paid mutator transaction binding the contract method 0xca0e551f.
  1143  //
  1144  // Solidity: function denounce(address masternode) returns()
  1145  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) Denounce(masternode common.Address) (*types.Transaction, error) {
  1146  	return _MasternodeRegistryV2.Contract.Denounce(&_MasternodeRegistryV2.TransactOpts, masternode)
  1147  }
  1148  
  1149  // Denounce is a paid mutator transaction binding the contract method 0xca0e551f.
  1150  //
  1151  // Solidity: function denounce(address masternode) returns()
  1152  func (_MasternodeRegistryV2 *MasternodeRegistryV2TransactorSession) Denounce(masternode common.Address) (*types.Transaction, error) {
  1153  	return _MasternodeRegistryV2.Contract.Denounce(&_MasternodeRegistryV2.TransactOpts, masternode)
  1154  }
  1155  
  1156  // Destroy is a paid mutator transaction binding the contract method 0x00f55d9d.
  1157  //
  1158  // Solidity: function destroy(address _newImpl) returns()
  1159  func (_MasternodeRegistryV2 *MasternodeRegistryV2Transactor) Destroy(opts *bind.TransactOpts, _newImpl common.Address) (*types.Transaction, error) {
  1160  	return _MasternodeRegistryV2.contract.Transact(opts, "destroy", _newImpl)
  1161  }
  1162  
  1163  // Destroy is a paid mutator transaction binding the contract method 0x00f55d9d.
  1164  //
  1165  // Solidity: function destroy(address _newImpl) returns()
  1166  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) Destroy(_newImpl common.Address) (*types.Transaction, error) {
  1167  	return _MasternodeRegistryV2.Contract.Destroy(&_MasternodeRegistryV2.TransactOpts, _newImpl)
  1168  }
  1169  
  1170  // Destroy is a paid mutator transaction binding the contract method 0x00f55d9d.
  1171  //
  1172  // Solidity: function destroy(address _newImpl) returns()
  1173  func (_MasternodeRegistryV2 *MasternodeRegistryV2TransactorSession) Destroy(_newImpl common.Address) (*types.Transaction, error) {
  1174  	return _MasternodeRegistryV2.Contract.Destroy(&_MasternodeRegistryV2.TransactOpts, _newImpl)
  1175  }
  1176  
  1177  // Heartbeat is a paid mutator transaction binding the contract method 0x91ceac96.
  1178  //
  1179  // Solidity: function heartbeat(uint256 block_number, bytes32 block_hash, uint256 sw_features) returns()
  1180  func (_MasternodeRegistryV2 *MasternodeRegistryV2Transactor) Heartbeat(opts *bind.TransactOpts, block_number *big.Int, block_hash [32]byte, sw_features *big.Int) (*types.Transaction, error) {
  1181  	return _MasternodeRegistryV2.contract.Transact(opts, "heartbeat", block_number, block_hash, sw_features)
  1182  }
  1183  
  1184  // Heartbeat is a paid mutator transaction binding the contract method 0x91ceac96.
  1185  //
  1186  // Solidity: function heartbeat(uint256 block_number, bytes32 block_hash, uint256 sw_features) returns()
  1187  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) Heartbeat(block_number *big.Int, block_hash [32]byte, sw_features *big.Int) (*types.Transaction, error) {
  1188  	return _MasternodeRegistryV2.Contract.Heartbeat(&_MasternodeRegistryV2.TransactOpts, block_number, block_hash, sw_features)
  1189  }
  1190  
  1191  // Heartbeat is a paid mutator transaction binding the contract method 0x91ceac96.
  1192  //
  1193  // Solidity: function heartbeat(uint256 block_number, bytes32 block_hash, uint256 sw_features) returns()
  1194  func (_MasternodeRegistryV2 *MasternodeRegistryV2TransactorSession) Heartbeat(block_number *big.Int, block_hash [32]byte, sw_features *big.Int) (*types.Transaction, error) {
  1195  	return _MasternodeRegistryV2.Contract.Heartbeat(&_MasternodeRegistryV2.TransactOpts, block_number, block_hash, sw_features)
  1196  }
  1197  
  1198  // Invalidate is a paid mutator transaction binding the contract method 0x37a3931f.
  1199  //
  1200  // Solidity: function invalidate(address masternode) returns()
  1201  func (_MasternodeRegistryV2 *MasternodeRegistryV2Transactor) Invalidate(opts *bind.TransactOpts, masternode common.Address) (*types.Transaction, error) {
  1202  	return _MasternodeRegistryV2.contract.Transact(opts, "invalidate", masternode)
  1203  }
  1204  
  1205  // Invalidate is a paid mutator transaction binding the contract method 0x37a3931f.
  1206  //
  1207  // Solidity: function invalidate(address masternode) returns()
  1208  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) Invalidate(masternode common.Address) (*types.Transaction, error) {
  1209  	return _MasternodeRegistryV2.Contract.Invalidate(&_MasternodeRegistryV2.TransactOpts, masternode)
  1210  }
  1211  
  1212  // Invalidate is a paid mutator transaction binding the contract method 0x37a3931f.
  1213  //
  1214  // Solidity: function invalidate(address masternode) returns()
  1215  func (_MasternodeRegistryV2 *MasternodeRegistryV2TransactorSession) Invalidate(masternode common.Address) (*types.Transaction, error) {
  1216  	return _MasternodeRegistryV2.Contract.Invalidate(&_MasternodeRegistryV2.TransactOpts, masternode)
  1217  }
  1218  
  1219  // Migrate is a paid mutator transaction binding the contract method 0xce5494bb.
  1220  //
  1221  // Solidity: function migrate(address _oldImpl) returns()
  1222  func (_MasternodeRegistryV2 *MasternodeRegistryV2Transactor) Migrate(opts *bind.TransactOpts, _oldImpl common.Address) (*types.Transaction, error) {
  1223  	return _MasternodeRegistryV2.contract.Transact(opts, "migrate", _oldImpl)
  1224  }
  1225  
  1226  // Migrate is a paid mutator transaction binding the contract method 0xce5494bb.
  1227  //
  1228  // Solidity: function migrate(address _oldImpl) returns()
  1229  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) Migrate(_oldImpl common.Address) (*types.Transaction, error) {
  1230  	return _MasternodeRegistryV2.Contract.Migrate(&_MasternodeRegistryV2.TransactOpts, _oldImpl)
  1231  }
  1232  
  1233  // Migrate is a paid mutator transaction binding the contract method 0xce5494bb.
  1234  //
  1235  // Solidity: function migrate(address _oldImpl) returns()
  1236  func (_MasternodeRegistryV2 *MasternodeRegistryV2TransactorSession) Migrate(_oldImpl common.Address) (*types.Transaction, error) {
  1237  	return _MasternodeRegistryV2.Contract.Migrate(&_MasternodeRegistryV2.TransactOpts, _oldImpl)
  1238  }
  1239  
  1240  // OnCollateralUpdate is a paid mutator transaction binding the contract method 0xcdc7d4ad.
  1241  //
  1242  // Solidity: function onCollateralUpdate(address owner) returns()
  1243  func (_MasternodeRegistryV2 *MasternodeRegistryV2Transactor) OnCollateralUpdate(opts *bind.TransactOpts, owner common.Address) (*types.Transaction, error) {
  1244  	return _MasternodeRegistryV2.contract.Transact(opts, "onCollateralUpdate", owner)
  1245  }
  1246  
  1247  // OnCollateralUpdate is a paid mutator transaction binding the contract method 0xcdc7d4ad.
  1248  //
  1249  // Solidity: function onCollateralUpdate(address owner) returns()
  1250  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) OnCollateralUpdate(owner common.Address) (*types.Transaction, error) {
  1251  	return _MasternodeRegistryV2.Contract.OnCollateralUpdate(&_MasternodeRegistryV2.TransactOpts, owner)
  1252  }
  1253  
  1254  // OnCollateralUpdate is a paid mutator transaction binding the contract method 0xcdc7d4ad.
  1255  //
  1256  // Solidity: function onCollateralUpdate(address owner) returns()
  1257  func (_MasternodeRegistryV2 *MasternodeRegistryV2TransactorSession) OnCollateralUpdate(owner common.Address) (*types.Transaction, error) {
  1258  	return _MasternodeRegistryV2.Contract.OnCollateralUpdate(&_MasternodeRegistryV2.TransactOpts, owner)
  1259  }
  1260  
  1261  // Reward is a paid mutator transaction binding the contract method 0x228cb733.
  1262  //
  1263  // Solidity: function reward() returns()
  1264  func (_MasternodeRegistryV2 *MasternodeRegistryV2Transactor) Reward(opts *bind.TransactOpts) (*types.Transaction, error) {
  1265  	return _MasternodeRegistryV2.contract.Transact(opts, "reward")
  1266  }
  1267  
  1268  // Reward is a paid mutator transaction binding the contract method 0x228cb733.
  1269  //
  1270  // Solidity: function reward() returns()
  1271  func (_MasternodeRegistryV2 *MasternodeRegistryV2Session) Reward() (*types.Transaction, error) {
  1272  	return _MasternodeRegistryV2.Contract.Reward(&_MasternodeRegistryV2.TransactOpts)
  1273  }
  1274  
  1275  // Reward is a paid mutator transaction binding the contract method 0x228cb733.
  1276  //
  1277  // Solidity: function reward() returns()
  1278  func (_MasternodeRegistryV2 *MasternodeRegistryV2TransactorSession) Reward() (*types.Transaction, error) {
  1279  	return _MasternodeRegistryV2.Contract.Reward(&_MasternodeRegistryV2.TransactOpts)
  1280  }
  1281  
  1282  // MasternodeRegistryV2AnnouncedIterator is returned from FilterAnnounced and is used to iterate over the raw logs and unpacked data for Announced events raised by the MasternodeRegistryV2 contract.
  1283  type MasternodeRegistryV2AnnouncedIterator struct {
  1284  	Event *MasternodeRegistryV2Announced // Event containing the contract specifics and raw log
  1285  
  1286  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1287  	event    string              // Event name to use for unpacking event data
  1288  
  1289  	logs chan types.Log        // Log channel receiving the found contract events
  1290  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1291  	done bool                  // Whether the subscription completed delivering logs
  1292  	fail error                 // Occurred error to stop iteration
  1293  }
  1294  
  1295  // Next advances the iterator to the subsequent event, returning whether there
  1296  // are any more events found. In case of a retrieval or parsing error, false is
  1297  // returned and Error() can be queried for the exact failure.
  1298  func (it *MasternodeRegistryV2AnnouncedIterator) Next() bool {
  1299  	// If the iterator failed, stop iterating
  1300  	if it.fail != nil {
  1301  		return false
  1302  	}
  1303  	// If the iterator completed, deliver directly whatever's available
  1304  	if it.done {
  1305  		select {
  1306  		case log := <-it.logs:
  1307  			it.Event = new(MasternodeRegistryV2Announced)
  1308  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1309  				it.fail = err
  1310  				return false
  1311  			}
  1312  			it.Event.Raw = log
  1313  			return true
  1314  
  1315  		default:
  1316  			return false
  1317  		}
  1318  	}
  1319  	// Iterator still in progress, wait for either a data or an error event
  1320  	select {
  1321  	case log := <-it.logs:
  1322  		it.Event = new(MasternodeRegistryV2Announced)
  1323  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1324  			it.fail = err
  1325  			return false
  1326  		}
  1327  		it.Event.Raw = log
  1328  		return true
  1329  
  1330  	case err := <-it.sub.Err():
  1331  		it.done = true
  1332  		it.fail = err
  1333  		return it.Next()
  1334  	}
  1335  }
  1336  
  1337  // Error returns any retrieval or parsing error occurred during filtering.
  1338  func (it *MasternodeRegistryV2AnnouncedIterator) Error() error {
  1339  	return it.fail
  1340  }
  1341  
  1342  // Close terminates the iteration process, releasing any pending underlying
  1343  // resources.
  1344  func (it *MasternodeRegistryV2AnnouncedIterator) Close() error {
  1345  	it.sub.Unsubscribe()
  1346  	return nil
  1347  }
  1348  
  1349  // MasternodeRegistryV2Announced represents a Announced event raised by the MasternodeRegistryV2 contract.
  1350  type MasternodeRegistryV2Announced struct {
  1351  	Masternode  common.Address
  1352  	Owner       common.Address
  1353  	Ipv4address uint32
  1354  	Enode       [2][32]byte
  1355  	Collateral  *big.Int
  1356  	Raw         types.Log // Blockchain specific contextual infos
  1357  }
  1358  
  1359  // FilterAnnounced is a free log retrieval operation binding the contract event 0x935a2f33570c4840d82856d75f5d0aafca32c5e6b31db5627552304a7dc82c09.
  1360  //
  1361  // Solidity: event Announced(address indexed masternode, address indexed owner, uint32 ipv4address, bytes32[2] enode, uint256 collateral)
  1362  func (_MasternodeRegistryV2 *MasternodeRegistryV2Filterer) FilterAnnounced(opts *bind.FilterOpts, masternode []common.Address, owner []common.Address) (*MasternodeRegistryV2AnnouncedIterator, error) {
  1363  
  1364  	var masternodeRule []interface{}
  1365  	for _, masternodeItem := range masternode {
  1366  		masternodeRule = append(masternodeRule, masternodeItem)
  1367  	}
  1368  	var ownerRule []interface{}
  1369  	for _, ownerItem := range owner {
  1370  		ownerRule = append(ownerRule, ownerItem)
  1371  	}
  1372  
  1373  	logs, sub, err := _MasternodeRegistryV2.contract.FilterLogs(opts, "Announced", masternodeRule, ownerRule)
  1374  	if err != nil {
  1375  		return nil, err
  1376  	}
  1377  	return &MasternodeRegistryV2AnnouncedIterator{contract: _MasternodeRegistryV2.contract, event: "Announced", logs: logs, sub: sub}, nil
  1378  }
  1379  
  1380  // WatchAnnounced is a free log subscription operation binding the contract event 0x935a2f33570c4840d82856d75f5d0aafca32c5e6b31db5627552304a7dc82c09.
  1381  //
  1382  // Solidity: event Announced(address indexed masternode, address indexed owner, uint32 ipv4address, bytes32[2] enode, uint256 collateral)
  1383  func (_MasternodeRegistryV2 *MasternodeRegistryV2Filterer) WatchAnnounced(opts *bind.WatchOpts, sink chan<- *MasternodeRegistryV2Announced, masternode []common.Address, owner []common.Address) (event.Subscription, error) {
  1384  
  1385  	var masternodeRule []interface{}
  1386  	for _, masternodeItem := range masternode {
  1387  		masternodeRule = append(masternodeRule, masternodeItem)
  1388  	}
  1389  	var ownerRule []interface{}
  1390  	for _, ownerItem := range owner {
  1391  		ownerRule = append(ownerRule, ownerItem)
  1392  	}
  1393  
  1394  	logs, sub, err := _MasternodeRegistryV2.contract.WatchLogs(opts, "Announced", masternodeRule, ownerRule)
  1395  	if err != nil {
  1396  		return nil, err
  1397  	}
  1398  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1399  		defer sub.Unsubscribe()
  1400  		for {
  1401  			select {
  1402  			case log := <-logs:
  1403  				// New log arrived, parse the event and forward to the user
  1404  				event := new(MasternodeRegistryV2Announced)
  1405  				if err := _MasternodeRegistryV2.contract.UnpackLog(event, "Announced", log); err != nil {
  1406  					return err
  1407  				}
  1408  				event.Raw = log
  1409  
  1410  				select {
  1411  				case sink <- event:
  1412  				case err := <-sub.Err():
  1413  					return err
  1414  				case <-quit:
  1415  					return nil
  1416  				}
  1417  			case err := <-sub.Err():
  1418  				return err
  1419  			case <-quit:
  1420  				return nil
  1421  			}
  1422  		}
  1423  	}), nil
  1424  }
  1425  
  1426  // MasternodeRegistryV2DeactivatedIterator is returned from FilterDeactivated and is used to iterate over the raw logs and unpacked data for Deactivated events raised by the MasternodeRegistryV2 contract.
  1427  type MasternodeRegistryV2DeactivatedIterator struct {
  1428  	Event *MasternodeRegistryV2Deactivated // Event containing the contract specifics and raw log
  1429  
  1430  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1431  	event    string              // Event name to use for unpacking event data
  1432  
  1433  	logs chan types.Log        // Log channel receiving the found contract events
  1434  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1435  	done bool                  // Whether the subscription completed delivering logs
  1436  	fail error                 // Occurred error to stop iteration
  1437  }
  1438  
  1439  // Next advances the iterator to the subsequent event, returning whether there
  1440  // are any more events found. In case of a retrieval or parsing error, false is
  1441  // returned and Error() can be queried for the exact failure.
  1442  func (it *MasternodeRegistryV2DeactivatedIterator) Next() bool {
  1443  	// If the iterator failed, stop iterating
  1444  	if it.fail != nil {
  1445  		return false
  1446  	}
  1447  	// If the iterator completed, deliver directly whatever's available
  1448  	if it.done {
  1449  		select {
  1450  		case log := <-it.logs:
  1451  			it.Event = new(MasternodeRegistryV2Deactivated)
  1452  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1453  				it.fail = err
  1454  				return false
  1455  			}
  1456  			it.Event.Raw = log
  1457  			return true
  1458  
  1459  		default:
  1460  			return false
  1461  		}
  1462  	}
  1463  	// Iterator still in progress, wait for either a data or an error event
  1464  	select {
  1465  	case log := <-it.logs:
  1466  		it.Event = new(MasternodeRegistryV2Deactivated)
  1467  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1468  			it.fail = err
  1469  			return false
  1470  		}
  1471  		it.Event.Raw = log
  1472  		return true
  1473  
  1474  	case err := <-it.sub.Err():
  1475  		it.done = true
  1476  		it.fail = err
  1477  		return it.Next()
  1478  	}
  1479  }
  1480  
  1481  // Error returns any retrieval or parsing error occurred during filtering.
  1482  func (it *MasternodeRegistryV2DeactivatedIterator) Error() error {
  1483  	return it.fail
  1484  }
  1485  
  1486  // Close terminates the iteration process, releasing any pending underlying
  1487  // resources.
  1488  func (it *MasternodeRegistryV2DeactivatedIterator) Close() error {
  1489  	it.sub.Unsubscribe()
  1490  	return nil
  1491  }
  1492  
  1493  // MasternodeRegistryV2Deactivated represents a Deactivated event raised by the MasternodeRegistryV2 contract.
  1494  type MasternodeRegistryV2Deactivated struct {
  1495  	Masternode common.Address
  1496  	Raw        types.Log // Blockchain specific contextual infos
  1497  }
  1498  
  1499  // FilterDeactivated is a free log retrieval operation binding the contract event 0x749cb6b4c510bc468cf6b9c2086d6f0a54d6b18e25d37bf3200e68eab0880c00.
  1500  //
  1501  // Solidity: event Deactivated(address indexed masternode)
  1502  func (_MasternodeRegistryV2 *MasternodeRegistryV2Filterer) FilterDeactivated(opts *bind.FilterOpts, masternode []common.Address) (*MasternodeRegistryV2DeactivatedIterator, error) {
  1503  
  1504  	var masternodeRule []interface{}
  1505  	for _, masternodeItem := range masternode {
  1506  		masternodeRule = append(masternodeRule, masternodeItem)
  1507  	}
  1508  
  1509  	logs, sub, err := _MasternodeRegistryV2.contract.FilterLogs(opts, "Deactivated", masternodeRule)
  1510  	if err != nil {
  1511  		return nil, err
  1512  	}
  1513  	return &MasternodeRegistryV2DeactivatedIterator{contract: _MasternodeRegistryV2.contract, event: "Deactivated", logs: logs, sub: sub}, nil
  1514  }
  1515  
  1516  // WatchDeactivated is a free log subscription operation binding the contract event 0x749cb6b4c510bc468cf6b9c2086d6f0a54d6b18e25d37bf3200e68eab0880c00.
  1517  //
  1518  // Solidity: event Deactivated(address indexed masternode)
  1519  func (_MasternodeRegistryV2 *MasternodeRegistryV2Filterer) WatchDeactivated(opts *bind.WatchOpts, sink chan<- *MasternodeRegistryV2Deactivated, masternode []common.Address) (event.Subscription, error) {
  1520  
  1521  	var masternodeRule []interface{}
  1522  	for _, masternodeItem := range masternode {
  1523  		masternodeRule = append(masternodeRule, masternodeItem)
  1524  	}
  1525  
  1526  	logs, sub, err := _MasternodeRegistryV2.contract.WatchLogs(opts, "Deactivated", masternodeRule)
  1527  	if err != nil {
  1528  		return nil, err
  1529  	}
  1530  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1531  		defer sub.Unsubscribe()
  1532  		for {
  1533  			select {
  1534  			case log := <-logs:
  1535  				// New log arrived, parse the event and forward to the user
  1536  				event := new(MasternodeRegistryV2Deactivated)
  1537  				if err := _MasternodeRegistryV2.contract.UnpackLog(event, "Deactivated", log); err != nil {
  1538  					return err
  1539  				}
  1540  				event.Raw = log
  1541  
  1542  				select {
  1543  				case sink <- event:
  1544  				case err := <-sub.Err():
  1545  					return err
  1546  				case <-quit:
  1547  					return nil
  1548  				}
  1549  			case err := <-sub.Err():
  1550  				return err
  1551  			case <-quit:
  1552  				return nil
  1553  			}
  1554  		}
  1555  	}), nil
  1556  }
  1557  
  1558  // MasternodeRegistryV2DenouncedIterator is returned from FilterDenounced and is used to iterate over the raw logs and unpacked data for Denounced events raised by the MasternodeRegistryV2 contract.
  1559  type MasternodeRegistryV2DenouncedIterator struct {
  1560  	Event *MasternodeRegistryV2Denounced // Event containing the contract specifics and raw log
  1561  
  1562  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1563  	event    string              // Event name to use for unpacking event data
  1564  
  1565  	logs chan types.Log        // Log channel receiving the found contract events
  1566  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1567  	done bool                  // Whether the subscription completed delivering logs
  1568  	fail error                 // Occurred error to stop iteration
  1569  }
  1570  
  1571  // Next advances the iterator to the subsequent event, returning whether there
  1572  // are any more events found. In case of a retrieval or parsing error, false is
  1573  // returned and Error() can be queried for the exact failure.
  1574  func (it *MasternodeRegistryV2DenouncedIterator) Next() bool {
  1575  	// If the iterator failed, stop iterating
  1576  	if it.fail != nil {
  1577  		return false
  1578  	}
  1579  	// If the iterator completed, deliver directly whatever's available
  1580  	if it.done {
  1581  		select {
  1582  		case log := <-it.logs:
  1583  			it.Event = new(MasternodeRegistryV2Denounced)
  1584  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1585  				it.fail = err
  1586  				return false
  1587  			}
  1588  			it.Event.Raw = log
  1589  			return true
  1590  
  1591  		default:
  1592  			return false
  1593  		}
  1594  	}
  1595  	// Iterator still in progress, wait for either a data or an error event
  1596  	select {
  1597  	case log := <-it.logs:
  1598  		it.Event = new(MasternodeRegistryV2Denounced)
  1599  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1600  			it.fail = err
  1601  			return false
  1602  		}
  1603  		it.Event.Raw = log
  1604  		return true
  1605  
  1606  	case err := <-it.sub.Err():
  1607  		it.done = true
  1608  		it.fail = err
  1609  		return it.Next()
  1610  	}
  1611  }
  1612  
  1613  // Error returns any retrieval or parsing error occurred during filtering.
  1614  func (it *MasternodeRegistryV2DenouncedIterator) Error() error {
  1615  	return it.fail
  1616  }
  1617  
  1618  // Close terminates the iteration process, releasing any pending underlying
  1619  // resources.
  1620  func (it *MasternodeRegistryV2DenouncedIterator) Close() error {
  1621  	it.sub.Unsubscribe()
  1622  	return nil
  1623  }
  1624  
  1625  // MasternodeRegistryV2Denounced represents a Denounced event raised by the MasternodeRegistryV2 contract.
  1626  type MasternodeRegistryV2Denounced struct {
  1627  	Masternode common.Address
  1628  	Owner      common.Address
  1629  	Raw        types.Log // Blockchain specific contextual infos
  1630  }
  1631  
  1632  // FilterDenounced is a free log retrieval operation binding the contract event 0x55faf8e51ab442f8d8510476317b2e313144c3db60adc284affef64140fe8552.
  1633  //
  1634  // Solidity: event Denounced(address indexed masternode, address indexed owner)
  1635  func (_MasternodeRegistryV2 *MasternodeRegistryV2Filterer) FilterDenounced(opts *bind.FilterOpts, masternode []common.Address, owner []common.Address) (*MasternodeRegistryV2DenouncedIterator, error) {
  1636  
  1637  	var masternodeRule []interface{}
  1638  	for _, masternodeItem := range masternode {
  1639  		masternodeRule = append(masternodeRule, masternodeItem)
  1640  	}
  1641  	var ownerRule []interface{}
  1642  	for _, ownerItem := range owner {
  1643  		ownerRule = append(ownerRule, ownerItem)
  1644  	}
  1645  
  1646  	logs, sub, err := _MasternodeRegistryV2.contract.FilterLogs(opts, "Denounced", masternodeRule, ownerRule)
  1647  	if err != nil {
  1648  		return nil, err
  1649  	}
  1650  	return &MasternodeRegistryV2DenouncedIterator{contract: _MasternodeRegistryV2.contract, event: "Denounced", logs: logs, sub: sub}, nil
  1651  }
  1652  
  1653  // WatchDenounced is a free log subscription operation binding the contract event 0x55faf8e51ab442f8d8510476317b2e313144c3db60adc284affef64140fe8552.
  1654  //
  1655  // Solidity: event Denounced(address indexed masternode, address indexed owner)
  1656  func (_MasternodeRegistryV2 *MasternodeRegistryV2Filterer) WatchDenounced(opts *bind.WatchOpts, sink chan<- *MasternodeRegistryV2Denounced, masternode []common.Address, owner []common.Address) (event.Subscription, error) {
  1657  
  1658  	var masternodeRule []interface{}
  1659  	for _, masternodeItem := range masternode {
  1660  		masternodeRule = append(masternodeRule, masternodeItem)
  1661  	}
  1662  	var ownerRule []interface{}
  1663  	for _, ownerItem := range owner {
  1664  		ownerRule = append(ownerRule, ownerItem)
  1665  	}
  1666  
  1667  	logs, sub, err := _MasternodeRegistryV2.contract.WatchLogs(opts, "Denounced", masternodeRule, ownerRule)
  1668  	if err != nil {
  1669  		return nil, err
  1670  	}
  1671  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1672  		defer sub.Unsubscribe()
  1673  		for {
  1674  			select {
  1675  			case log := <-logs:
  1676  				// New log arrived, parse the event and forward to the user
  1677  				event := new(MasternodeRegistryV2Denounced)
  1678  				if err := _MasternodeRegistryV2.contract.UnpackLog(event, "Denounced", log); err != nil {
  1679  					return err
  1680  				}
  1681  				event.Raw = log
  1682  
  1683  				select {
  1684  				case sink <- event:
  1685  				case err := <-sub.Err():
  1686  					return err
  1687  				case <-quit:
  1688  					return nil
  1689  				}
  1690  			case err := <-sub.Err():
  1691  				return err
  1692  			case <-quit:
  1693  				return nil
  1694  			}
  1695  		}
  1696  	}), nil
  1697  }
  1698  
  1699  // MasternodeRegistryV2InvalidationIterator is returned from FilterInvalidation and is used to iterate over the raw logs and unpacked data for Invalidation events raised by the MasternodeRegistryV2 contract.
  1700  type MasternodeRegistryV2InvalidationIterator struct {
  1701  	Event *MasternodeRegistryV2Invalidation // Event containing the contract specifics and raw log
  1702  
  1703  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1704  	event    string              // Event name to use for unpacking event data
  1705  
  1706  	logs chan types.Log        // Log channel receiving the found contract events
  1707  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1708  	done bool                  // Whether the subscription completed delivering logs
  1709  	fail error                 // Occurred error to stop iteration
  1710  }
  1711  
  1712  // Next advances the iterator to the subsequent event, returning whether there
  1713  // are any more events found. In case of a retrieval or parsing error, false is
  1714  // returned and Error() can be queried for the exact failure.
  1715  func (it *MasternodeRegistryV2InvalidationIterator) Next() bool {
  1716  	// If the iterator failed, stop iterating
  1717  	if it.fail != nil {
  1718  		return false
  1719  	}
  1720  	// If the iterator completed, deliver directly whatever's available
  1721  	if it.done {
  1722  		select {
  1723  		case log := <-it.logs:
  1724  			it.Event = new(MasternodeRegistryV2Invalidation)
  1725  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1726  				it.fail = err
  1727  				return false
  1728  			}
  1729  			it.Event.Raw = log
  1730  			return true
  1731  
  1732  		default:
  1733  			return false
  1734  		}
  1735  	}
  1736  	// Iterator still in progress, wait for either a data or an error event
  1737  	select {
  1738  	case log := <-it.logs:
  1739  		it.Event = new(MasternodeRegistryV2Invalidation)
  1740  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1741  			it.fail = err
  1742  			return false
  1743  		}
  1744  		it.Event.Raw = log
  1745  		return true
  1746  
  1747  	case err := <-it.sub.Err():
  1748  		it.done = true
  1749  		it.fail = err
  1750  		return it.Next()
  1751  	}
  1752  }
  1753  
  1754  // Error returns any retrieval or parsing error occurred during filtering.
  1755  func (it *MasternodeRegistryV2InvalidationIterator) Error() error {
  1756  	return it.fail
  1757  }
  1758  
  1759  // Close terminates the iteration process, releasing any pending underlying
  1760  // resources.
  1761  func (it *MasternodeRegistryV2InvalidationIterator) Close() error {
  1762  	it.sub.Unsubscribe()
  1763  	return nil
  1764  }
  1765  
  1766  // MasternodeRegistryV2Invalidation represents a Invalidation event raised by the MasternodeRegistryV2 contract.
  1767  type MasternodeRegistryV2Invalidation struct {
  1768  	Masternode common.Address
  1769  	Validator  common.Address
  1770  	Raw        types.Log // Blockchain specific contextual infos
  1771  }
  1772  
  1773  // FilterInvalidation is a free log retrieval operation binding the contract event 0x389d58799d7eca76264c556a007ffbc7c60caa4e3c8ea0564e791af3a1b9d331.
  1774  //
  1775  // Solidity: event Invalidation(address indexed masternode, address indexed validator)
  1776  func (_MasternodeRegistryV2 *MasternodeRegistryV2Filterer) FilterInvalidation(opts *bind.FilterOpts, masternode []common.Address, validator []common.Address) (*MasternodeRegistryV2InvalidationIterator, error) {
  1777  
  1778  	var masternodeRule []interface{}
  1779  	for _, masternodeItem := range masternode {
  1780  		masternodeRule = append(masternodeRule, masternodeItem)
  1781  	}
  1782  	var validatorRule []interface{}
  1783  	for _, validatorItem := range validator {
  1784  		validatorRule = append(validatorRule, validatorItem)
  1785  	}
  1786  
  1787  	logs, sub, err := _MasternodeRegistryV2.contract.FilterLogs(opts, "Invalidation", masternodeRule, validatorRule)
  1788  	if err != nil {
  1789  		return nil, err
  1790  	}
  1791  	return &MasternodeRegistryV2InvalidationIterator{contract: _MasternodeRegistryV2.contract, event: "Invalidation", logs: logs, sub: sub}, nil
  1792  }
  1793  
  1794  // WatchInvalidation is a free log subscription operation binding the contract event 0x389d58799d7eca76264c556a007ffbc7c60caa4e3c8ea0564e791af3a1b9d331.
  1795  //
  1796  // Solidity: event Invalidation(address indexed masternode, address indexed validator)
  1797  func (_MasternodeRegistryV2 *MasternodeRegistryV2Filterer) WatchInvalidation(opts *bind.WatchOpts, sink chan<- *MasternodeRegistryV2Invalidation, masternode []common.Address, validator []common.Address) (event.Subscription, error) {
  1798  
  1799  	var masternodeRule []interface{}
  1800  	for _, masternodeItem := range masternode {
  1801  		masternodeRule = append(masternodeRule, masternodeItem)
  1802  	}
  1803  	var validatorRule []interface{}
  1804  	for _, validatorItem := range validator {
  1805  		validatorRule = append(validatorRule, validatorItem)
  1806  	}
  1807  
  1808  	logs, sub, err := _MasternodeRegistryV2.contract.WatchLogs(opts, "Invalidation", masternodeRule, validatorRule)
  1809  	if err != nil {
  1810  		return nil, err
  1811  	}
  1812  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1813  		defer sub.Unsubscribe()
  1814  		for {
  1815  			select {
  1816  			case log := <-logs:
  1817  				// New log arrived, parse the event and forward to the user
  1818  				event := new(MasternodeRegistryV2Invalidation)
  1819  				if err := _MasternodeRegistryV2.contract.UnpackLog(event, "Invalidation", log); err != nil {
  1820  					return err
  1821  				}
  1822  				event.Raw = log
  1823  
  1824  				select {
  1825  				case sink <- event:
  1826  				case err := <-sub.Err():
  1827  					return err
  1828  				case <-quit:
  1829  					return nil
  1830  				}
  1831  			case err := <-sub.Err():
  1832  				return err
  1833  			case <-quit:
  1834  				return nil
  1835  			}
  1836  		}
  1837  	}), nil
  1838  }