github.com/energicryptocurrency/go-energi@v1.1.7/energi/abi/TreasuryV1.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/energicryptocurrency/go-energi"
    11  	"github.com/energicryptocurrency/go-energi/accounts/abi"
    12  	"github.com/energicryptocurrency/go-energi/accounts/abi/bind"
    13  	"github.com/energicryptocurrency/go-energi/common"
    14  	"github.com/energicryptocurrency/go-energi/core/types"
    15  	"github.com/energicryptocurrency/go-energi/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  // TreasuryV1ABI is the input ABI used to generate the binding from.
    31  const TreasuryV1ABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_proxy\",\"type\":\"address\"},{\"internalType\":\"contractIGovernedProxy\",\"name\":\"_mnregistry_proxy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_superblock_cycle\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"ref_uuid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"contractIBudgetProposal\",\"name\":\"proposal\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"payout_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"BudgetProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Contribution\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"ref_uuid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"contractIBudgetProposal\",\"name\":\"proposal\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Payout\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"active_proposals\",\"outputs\":[{\"internalType\":\"contractIBudgetProposal\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"balance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"contribute\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contractIGovernedContract\",\"name\":\"_newImpl\",\"type\":\"address\"}],\"name\":\"destroy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"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\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"isSuperblock\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"listProposals\",\"outputs\":[{\"internalType\":\"contractIBudgetProposal[]\",\"name\":\"proposals\",\"type\":\"address[]\"}],\"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\":\"mnregistry_proxy\",\"outputs\":[{\"internalType\":\"contractIGovernedProxy\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"contractIBudgetProposal\",\"name\":\"proposal\",\"type\":\"address\"}],\"name\":\"proposal_uuid\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_ref_uuid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_period\",\"type\":\"uint256\"}],\"name\":\"propose\",\"outputs\":[{\"internalType\":\"contractIBudgetProposal\",\"name\":\"proposal\",\"type\":\"address\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"proxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"reward\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"superblock_cycle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_ref_uuid\",\"type\":\"uint256\"}],\"name\":\"uuid_proposal\",\"outputs\":[{\"internalType\":\"contractIBudgetProposal\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"v1storage\",\"outputs\":[{\"internalType\":\"contractStorageTreasuryV1\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
    32  
    33  // TreasuryV1Bin is the compiled bytecode used for deploying new contracts.
    34  const TreasuryV1Bin = `608060405234801561001057600080fd5b506040516200331e3803806200331e8339818101604052606081101561003557600080fd5b5080516020820151604092830151600080546001600160a01b0319166001600160a01b03851617905592519192909161006d906100cd565b604051809103906000f080158015610089573d6000803e3d6000fd5b50600280546001600160a01b03199081166001600160a01b0393841617909155600380549091169184169190911790556004819055806100c557fe5b5050506100db565b61055c8062002dc283390190565b612cd780620000eb6000396000f3fe608060405260043610620001095760003560e01c80635c0992151162000097578063d5f997891162000061578063d5f9978914620003ff578063d7bb99ba146200042d578063ec5568891462000437578063fe7334e8146200044f5762000109565b80635c0992151462000331578063b69ef8a8146200035f578063caef1d5a1462000377578063ce5494bb14620003bb5762000109565b806326c7eb1c11620000d957806326c7eb1c14620002185780632d059305146200028257806340376d5614620002c357806352782d8614620002ef5762000109565b8062f55d9d14620001705780630ef3474514620001b65780631c4b774b14620001e0578063228cb733146200020e575b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e6f7420737570706f7274656400000000000000000000000000000000000000604482015290519081900360640190fd5b3480156200017d57600080fd5b50620001b4600480360360208110156200019657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000467565b005b348015620001c357600080fd5b50620001ce62000512565b60408051918252519081900360200190f35b348015620001ed57600080fd5b50620001ce600480360360208110156200020657600080fd5b503562000518565b620001b46200053d565b3480156200022557600080fd5b506200023062000618565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156200026e57818101518382015260200162000254565b505050509050019250505060405180910390f35b3480156200028f57600080fd5b506200029a6200076a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6200029a60048036036060811015620002db57600080fd5b508035906020810135906040013562000786565b348015620002fc57600080fd5b506200031d600480360360208110156200031557600080fd5b503562000f1b565b604080519115158252519081900360200190f35b3480156200033e57600080fd5b506200029a600480360360208110156200035757600080fd5b503562000f3e565b3480156200036c57600080fd5b50620001ce62000fe5565b3480156200038457600080fd5b50620001ce600480360360208110156200039d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000fea565b348015620003c857600080fd5b50620001b460048036036020811015620003e157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662001062565b3480156200040c57600080fd5b506200029a600480360360208110156200042557600080fd5b5035620010f2565b620001b46200111d565b3480156200044457600080fd5b506200029a6200117f565b3480156200045c57600080fd5b506200029a6200119b565b60005473ffffffffffffffffffffffffffffffffffffffff163314620004ee57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742070726f78790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b620004f981620011b7565b8073ffffffffffffffffffffffffffffffffffffffff16ff5b60045481565b6000620005258262000f1b565b156200053857506926f6a8f4e638030000005b919050565b60015415620005ad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055620005bb62001691565b6000620005c88262001248565b905030318015801590620005dc5750600082115b156200060e576103e881831115620006005782826103e80281620005fc57fe5b0490505b6200060c8185620014e2565b505b5050600060015550565b604080516064808252610ca0820190925260609182919060208201610c80803883390190505090506000805b6064811015620006d8576000600582606481106200065e57fe5b015473ffffffffffffffffffffffffffffffffffffffff1690508015620006ce57808484806001019550815181106200069357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b5060010162000644565b508060405190808252806020026020018201604052801562000704578160200160208202803883390190505b50925060005b8181101562000763578281815181106200072057fe5b60200260200101518482815181106200073557fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526001016200070a565b5050505b90565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6000600154600014620007fa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600180553468056bc75e2d63100000146200087657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f496e76616c696420666565000000000000000000000000000000000000000000604482015290519081900360640190fd5b68056bc75e2d63100000841015620008ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f546f6f20736d616c6c20616d6f756e7400000000000000000000000000000000604482015290519081900360640190fd5b6926f6a8f4e638030000008411156200096957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f546f6f206c6172676520616d6f756e7400000000000000000000000000000000604482015290519081900360640190fd5b62127500821015620009dc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f546f6f20736d616c6c20706572696f6400000000000000000000000000000000604482015290519081900360640190fd5b62278d0082111562000a4f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f546f6f206c6172676520706572696f6400000000000000000000000000000000604482015290519081900360640190fd5b60025473ffffffffffffffffffffffffffffffffffffffff16600062000a746200165f565b9050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16635c099215876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801562000ae057600080fd5b505afa15801562000af5573d6000803e3d6000fd5b505050506040513d602081101562000b0c57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161462000b9157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5555494420696e20757365000000000000000000000000000000000000000000604482015290519081900360640190fd5b60005b606481101562000cc05760006005826064811062000bae57fe5b015473ffffffffffffffffffffffffffffffffffffffff16141562000cb757600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168287898860405162000c0290620016c2565b73ffffffffffffffffffffffffffffffffffffffff95861681529390941660208401526040808401929092526060830152608082019290925290519081900360a001906000f08015801562000c5b573d6000803e3d6000fd5b509350836005826064811062000c6d57fe5b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905562000cc0565b60010162000b94565b5073ffffffffffffffffffffffffffffffffffffffff831662000d4457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f546f6f206d616e79206163746976652070726f706f73616c7300000000000000604482015290519081900360640190fd5b8273ffffffffffffffffffffffffffffffffffffffff16632ded3227346040518263ffffffff1660e01b81526004016000604051808303818588803b15801562000d8d57600080fd5b505af115801562000da2573d6000803e3d6000fd5b5050604080517eb9f954000000000000000000000000000000000000000000000000000000008152600481018a905273ffffffffffffffffffffffffffffffffffffffff88811660248301529151918716945062b9f9549350604480820193506000929182900301818387803b15801562000e1c57600080fd5b505af115801562000e31573d6000803e3d6000fd5b50505050847fa94befa3ce181974130fe36e854a282c70fb75e4decb42bfecdecbd6f88f0f5d8483898773ffffffffffffffffffffffffffffffffffffffff166329dcb0cf6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000ea157600080fd5b505afa15801562000eb6573d6000803e3d6000fd5b505050506040513d602081101562000ecd57600080fd5b50516040805173ffffffffffffffffffffffffffffffffffffffff958616815293909416602084015282840191909152606082015290519081900360800190a2505060006001559392505050565b6000600454828162000f2957fe5b0615801562000f385750600082115b92915050565b600254604080517f5c09921500000000000000000000000000000000000000000000000000000000815260048101849052905160009273ffffffffffffffffffffffffffffffffffffffff1691635c099215916024808301926020929190829003018186803b15801562000fb157600080fd5b505afa15801562000fc6573d6000803e3d6000fd5b505050506040513d602081101562000fdd57600080fd5b505192915050565b303190565b600254604080517fcaef1d5a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151600093929092169163caef1d5a91602480820192602092909190829003018186803b15801562000fb157600080fd5b60005473ffffffffffffffffffffffffffffffffffffffff163314620010e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742070726f78790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b620010ef815b50565b600581606481106200110057fe5b015473ffffffffffffffffffffffffffffffffffffffff16905081565b34156200117d577f4d154d4aae216bed6d0926db77c00df2b57c6b5ba4eee05775de20facede3a7b6200114f6200165f565b6040805173ffffffffffffffffffffffffffffffffffffffff90921682523460208301528051918290030190a15b565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b600254604080517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152915191909216916313af403591602480830192600092919082900301818387803b1580156200122c57600080fd5b505af115801562001241573d6000803e3d6000fd5b5050505050565b60008080808080805b6064811015620014d757600581606481106200126957fe5b015473ffffffffffffffffffffffffffffffffffffffff1695508515620014ce578573ffffffffffffffffffffffffffffffffffffffff16633b2a1b146040518163ffffffff1660e01b815260040160806040518083038186803b158015620012d157600080fd5b505afa158015620012e6573d6000803e3d6000fd5b505050506040513d6080811015620012fd57600080fd5b508051602082015160408301516060909301519197509550909350915083156200142f578115620013915795810195858882606481106200133a57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff9091169052848882606481106200136757fe5b60200201516020018181525050818882606481106200138257fe5b60200201516040015262001429565b8573ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620013da57600080fd5b505af1158015620013ef573d6000803e3d6000fd5b50505050600581606481106200140157fe5b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b620014ce565b8215620014ce578573ffffffffffffffffffffffffffffffffffffffff1663e52253816040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200147f57600080fd5b505af115801562001494573d6000803e3d6000fd5b5050505060058160648110620014a657fe5b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b60010162001251565b505050505050919050565b6000805b60648110156200165957828160648110620014fd57fe5b602002015151915073ffffffffffffffffffffffffffffffffffffffff821615620016505760006103e8858584606481106200153557fe5b60200201516040015102816200154757fe5b0490508382606481106200155757fe5b6020020151604001518111156200156a57fe5b8273ffffffffffffffffffffffffffffffffffffffff166310cac8a5826040518263ffffffff1660e01b81526004016000604051808303818588803b158015620015b357600080fd5b505af1158015620015c8573d6000803e3d6000fd5b5050505050838260648110620015da57fe5b6020020151602001517f5f7341a552ae2d452b071917104c05fbac3663936a69be768a05c40605056e7d8483604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a2505b600101620014e6565b50505050565b6000805473ffffffffffffffffffffffffffffffffffffffff163314156200168957503262000767565b503362000767565b60405180610c8001604052806064905b620016ab620016d0565b815260200190600190039081620016a15790505090565b61159b806200170883390190565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152509056fe60806040523480156200001157600080fd5b506040516200159b3803806200159b833981810160405260a08110156200003757600080fd5b508051602080830151604080850151606086015160809096015160018054336001600160a01b031991821617909155436002556000805482166001600160a01b03808a1691821783554285016003556004805490941690881617835585517f8abf6077000000000000000000000000000000000000000000000000000000008152955198999698949793958a9560079588958c959485949093638abf607793828401939092829003018186803b158015620000f157600080fd5b505afa15801562000106573d6000803e3d6000fd5b505050506040513d60208110156200011d57600080fd5b5051604080517f06661abd00000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216916306661abd9160048082019260a092909190829003018186803b1580156200017b57600080fd5b505afa15801562000190573d6000803e3d6000fd5b505050506040513d60a0811015620001a757600080fd5b5060408101516080909101519092509050806200022557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f7420726561647920666f722070726f706f73616c73000000000000000000604482015290519081900360640190fd5b600281048210156200029857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41637469766520776569676874203c20312f3220657665722077656967687400604482015290519081900360640190fd5b600160ff861610156200030c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f51756f72756d206d696e00000000000000000000000000000000000000000000604482015290519081900360640190fd5b606460ff861611156200038057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f51756f72756d206d617800000000000000000000000000000000000000000000604482015290519081900360640190fd5b6008829055606460ff8616830204600955603360ff861610620003a957600954600a55620003b4565b60646033830204600a555b6000600954116200042657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f51756f72756d2077656967687400000000000000000000000000000000000000604482015290519081900360640190fd5b6000600a54116200049857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f46696e6973682077656967687400000000000000000000000000000000000000604482015290519081900360640190fd5b505050600e95909555505050600d555050506110e180620004ba6000396000f3fe6080604052600436106101ac5760003560e01c80637639b1eb116100ec578063aec2ccae1161008a578063c40a70f811610064578063c40a70f8146104a9578063c86e6c15146104be578063e5225381146104d3578063fe7334e8146104e8576101ac565b8063aec2ccae1461043f578063bd4c1f391461047f578063c2472ef814610494576101ac565b806391840a6b116100c657806391840a6b146103c0578063990a663b146103d55780639d5e6c9d146103ea578063adfaa72e146103ff576101ac565b80637639b1eb146103815780637b3529621461039657806383197ef0146103ab576101ac565b80633d1db3e9116101595780635051a5ec116101335780635051a5ec146102f057806356c2a0a11461031957806360f96a8f1461032e57806375df0f991461036c576101ac565b80633d1db3e9146102b15780634cafdfb2146102c6578063504881df146102db576101ac565b80632ded32271161018a5780632ded3227146102595780633b2a1b14146102615780633ccfd60b1461029c576101ac565b80630b62be451461021357806310cac8a51461023a57806329dcb0cf14610244575b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f7420616c6c6f776564000000000000000000000000000000000000000000604482015290519081900360640190fd5b34801561021f57600080fd5b506102286104fd565b60408051918252519081900360200190f35b610242610503565b005b34801561025057600080fd5b5061022861051a565b610242610520565b34801561026d57600080fd5b506102766105b0565b604080519485529215156020850152901515838301526060830152519081900360800190f35b3480156102a857600080fd5b506102426105e8565b3480156102bd57600080fd5b506102286106a5565b3480156102d257600080fd5b506102286106ab565b3480156102e757600080fd5b506102286106b1565b3480156102fc57600080fd5b506103056106b7565b604080519115158252519081900360200190f35b34801561032557600080fd5b50610242610704565b34801561033a57600080fd5b50610343610717565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561037857600080fd5b50610228610733565b34801561038d57600080fd5b50610228610739565b3480156103a257600080fd5b5061030561073f565b3480156103b757600080fd5b50610242610769565b3480156103cc57600080fd5b5061022861080a565b3480156103e157600080fd5b50610228610810565b3480156103f657600080fd5b50610343610816565b34801561040b57600080fd5b506103056004803603602081101561042257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610832565b34801561044b57600080fd5b506103056004803603602081101561046257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109cc565b34801561048b57600080fd5b506102286109e1565b3480156104a057600080fd5b506102426109e7565b3480156104b557600080fd5b506103436109fa565b3480156104ca57600080fd5b50610228610a16565b3480156104df57600080fd5b50610242610a1c565b3480156104f457600080fd5b50610343610d71565b60025481565b600c8054340190819055600d54101561051857fe5b565b60035481565b60015473ffffffffffffffffffffffffffffffffffffffff1633146105a657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f6e6c7920706172656e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b6005805434019055565b600e54600080806105bf6106b7565b92506105c961073f565b9150600d54600c5411156105d957fe5b600c54600d5403905090919293565b6105f06106b7565b61065b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f742061636365707465640000000000000000000000000000000000000000604482015290519081900360640190fd5b60045460405173ffffffffffffffffffffffffffffffffffffffff90911690303180156108fc02916000818181858888f193505050501580156106a2573d6000803e3d6000fd5b50565b600a5481565b600d5481565b600c5481565b6000600a54600654106106cc57506001610701565b6106d461073f565b6106e057506000610701565b6009546007546006540110156106f857506000610701565b50600754600654115b90565b61070c610d8d565b600780549091019055565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60065481565b6000426003541115806107565750600a5460065410155b806107645750600a54600754115b905090565b60015473ffffffffffffffffffffffffffffffffffffffff1633146107ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f6e6c7920706172656e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b60045473ffffffffffffffffffffffffffffffffffffffff16ff5b60085481565b60055481565b60045473ffffffffffffffffffffffffffffffffffffffff1690565b60008054604080517f8abf60770000000000000000000000000000000000000000000000000000000081529051839273ffffffffffffffffffffffffffffffffffffffff1691638abf6077916004808301926020929190829003018186803b15801561089d57600080fd5b505afa1580156108b1573d6000803e3d6000fd5b505050506040513d60208110156108c757600080fd5b5051604080517fb83e160500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015291519293506000929184169163b83e16059160248082019260e092909190829003018186803b15801561093f57600080fd5b505afa158015610953573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060e081101561097857600080fd5b5060a0015160035490915042108015610992575060025481105b80156109c4575073ffffffffffffffffffffffffffffffffffffffff84166000908152600b602052604090205460ff16155b949350505050565b600b6020526000908152604090205460ff1681565b600e5481565b6109ef610d8d565b600680549091019055565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b610a2461073f565b8015610a355750610a336106b7565b155b610aa057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7420636f6c6c65637461626c650000000000000000000000000000000000604482015290519081900360640190fd5b60015473ffffffffffffffffffffffffffffffffffffffff163314610b2657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f6e6c7920706172656e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abf60776040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8f57600080fd5b505afa158015610ba3573d6000803e3d6000fd5b505050506040513d6020811015610bb957600080fd5b5051604080517fa2731784000000000000000000000000000000000000000000000000000000008152905191925060009173ffffffffffffffffffffffffffffffffffffffff84169163a2731784916004808301926020929190829003018186803b158015610c2757600080fd5b505afa158015610c3b573d6000803e3d6000fd5b505050506040513d6020811015610c5157600080fd5b5051604080517f8abf6077000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691638abf607791600480820192602092909190829003018186803b158015610cbb57600080fd5b505afa158015610ccf573d6000803e3d6000fd5b505050506040513d6020811015610ce557600080fd5b5051604080517fd7bb99ba000000000000000000000000000000000000000000000000000000008152905191925073ffffffffffffffffffffffffffffffffffffffff83169163d7bb99ba91303191600480830192600092919082900301818588803b158015610d5457600080fd5b505af1158015610d68573d6000803e3d6000fd5b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60004260035411610dff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f46696e6973686564000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abf60776040518163ffffffff1660e01b815260040160206040518083038186803b158015610e6857600080fd5b505afa158015610e7c573d6000803e3d6000fd5b505050506040513d6020811015610e9257600080fd5b5051604080517fb83e160500000000000000000000000000000000000000000000000000000000815233600482018190529151929350909160009173ffffffffffffffffffffffffffffffffffffffff85169163b83e16059160248082019260e092909190829003018186803b158015610f0b57600080fd5b505afa158015610f1f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060e0811015610f4457600080fd5b50608081015160a09091015160025491955091508110610fc557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420656c696769626c650000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604090205460ff161561105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f416c726561647920766f74656400000000000000000000000000000000000000604482015290519081900360640190fd5b5073ffffffffffffffffffffffffffffffffffffffff166000908152600b6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055509056fea265627a7a7231582072224e92031a8f8c2b7b89935d4513e1215a63d85b09740250501118da4938ba64736f6c63430005100032a265627a7a723158202e83b9e1260bffc2c54e9840d98c086ad6e2c09c7c09fe78b7ee5d209056ad4264736f6c634300051000326080604052600080546001600160a01b03191633179055610537806100256000396000f3fe608060405234801561001057600080fd5b50600436106100715760003560e01c806341c0e1b51161005057806341c0e1b5146101175780635c0992151461011f578063caef1d5a1461016557610071565b8062b9f9541461007657806313af4035146100b15780633c97f294146100e4575b600080fd5b6100af6004803603604081101561008c57600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166101aa565b005b6100af600480360360208110156100c757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661028e565b6100af600480360360208110156100fa57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661035b565b6100af61043f565b61013c6004803603602081101561013557600080fd5b50356104c8565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101986004803603602081101561017b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f0565b60408051918252519081900360200190f35b60005473ffffffffffffffffffffffffffffffffffffffff16331461023057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000828152600160209081526040808320805473ffffffffffffffffffffffffffffffffffffffff9095167fffffffffffffffffffffffff000000000000000000000000000000000000000090951685179055928252600290522055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461031457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260026020908152604080832080549084905583526001909152902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b33ff5b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6002602052600090815260409020548156fea265627a7a723158209132ef2adc675d140660df84591611984a1559600c22d153262f85df18b5669964736f6c63430005100032`
    35  
    36  // DeployTreasuryV1 deploys a new Ethereum contract, binding an instance of TreasuryV1 to it.
    37  func DeployTreasuryV1(auth *bind.TransactOpts, backend bind.ContractBackend, _proxy common.Address, _mnregistry_proxy common.Address, _superblock_cycle *big.Int) (common.Address, *types.Transaction, *TreasuryV1, error) {
    38  	parsed, err := abi.JSON(strings.NewReader(TreasuryV1ABI))
    39  	if err != nil {
    40  		return common.Address{}, nil, nil, err
    41  	}
    42  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(TreasuryV1Bin), backend, _proxy, _mnregistry_proxy, _superblock_cycle)
    43  	if err != nil {
    44  		return common.Address{}, nil, nil, err
    45  	}
    46  	return address, tx, &TreasuryV1{TreasuryV1Caller: TreasuryV1Caller{contract: contract}, TreasuryV1Transactor: TreasuryV1Transactor{contract: contract}, TreasuryV1Filterer: TreasuryV1Filterer{contract: contract}}, nil
    47  }
    48  
    49  // TreasuryV1Bin is the compiled bytecode of contract after deployment.
    50  const TreasuryV1RuntimeBin = `608060405260043610620001095760003560e01c80635c0992151162000097578063d5f997891162000061578063d5f9978914620003ff578063d7bb99ba146200042d578063ec5568891462000437578063fe7334e8146200044f5762000109565b80635c0992151462000331578063b69ef8a8146200035f578063caef1d5a1462000377578063ce5494bb14620003bb5762000109565b806326c7eb1c11620000d957806326c7eb1c14620002185780632d059305146200028257806340376d5614620002c357806352782d8614620002ef5762000109565b8062f55d9d14620001705780630ef3474514620001b65780631c4b774b14620001e0578063228cb733146200020e575b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e6f7420737570706f7274656400000000000000000000000000000000000000604482015290519081900360640190fd5b3480156200017d57600080fd5b50620001b4600480360360208110156200019657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000467565b005b348015620001c357600080fd5b50620001ce62000512565b60408051918252519081900360200190f35b348015620001ed57600080fd5b50620001ce600480360360208110156200020657600080fd5b503562000518565b620001b46200053d565b3480156200022557600080fd5b506200023062000618565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156200026e57818101518382015260200162000254565b505050509050019250505060405180910390f35b3480156200028f57600080fd5b506200029a6200076a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6200029a60048036036060811015620002db57600080fd5b508035906020810135906040013562000786565b348015620002fc57600080fd5b506200031d600480360360208110156200031557600080fd5b503562000f1b565b604080519115158252519081900360200190f35b3480156200033e57600080fd5b506200029a600480360360208110156200035757600080fd5b503562000f3e565b3480156200036c57600080fd5b50620001ce62000fe5565b3480156200038457600080fd5b50620001ce600480360360208110156200039d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000fea565b348015620003c857600080fd5b50620001b460048036036020811015620003e157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662001062565b3480156200040c57600080fd5b506200029a600480360360208110156200042557600080fd5b5035620010f2565b620001b46200111d565b3480156200044457600080fd5b506200029a6200117f565b3480156200045c57600080fd5b506200029a6200119b565b60005473ffffffffffffffffffffffffffffffffffffffff163314620004ee57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742070726f78790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b620004f981620011b7565b8073ffffffffffffffffffffffffffffffffffffffff16ff5b60045481565b6000620005258262000f1b565b156200053857506926f6a8f4e638030000005b919050565b60015415620005ad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055620005bb62001691565b6000620005c88262001248565b905030318015801590620005dc5750600082115b156200060e576103e881831115620006005782826103e80281620005fc57fe5b0490505b6200060c8185620014e2565b505b5050600060015550565b604080516064808252610ca0820190925260609182919060208201610c80803883390190505090506000805b6064811015620006d8576000600582606481106200065e57fe5b015473ffffffffffffffffffffffffffffffffffffffff1690508015620006ce57808484806001019550815181106200069357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b5060010162000644565b508060405190808252806020026020018201604052801562000704578160200160208202803883390190505b50925060005b8181101562000763578281815181106200072057fe5b60200260200101518482815181106200073557fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526001016200070a565b5050505b90565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6000600154600014620007fa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600180553468056bc75e2d63100000146200087657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f496e76616c696420666565000000000000000000000000000000000000000000604482015290519081900360640190fd5b68056bc75e2d63100000841015620008ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f546f6f20736d616c6c20616d6f756e7400000000000000000000000000000000604482015290519081900360640190fd5b6926f6a8f4e638030000008411156200096957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f546f6f206c6172676520616d6f756e7400000000000000000000000000000000604482015290519081900360640190fd5b62127500821015620009dc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f546f6f20736d616c6c20706572696f6400000000000000000000000000000000604482015290519081900360640190fd5b62278d0082111562000a4f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f546f6f206c6172676520706572696f6400000000000000000000000000000000604482015290519081900360640190fd5b60025473ffffffffffffffffffffffffffffffffffffffff16600062000a746200165f565b9050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16635c099215876040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801562000ae057600080fd5b505afa15801562000af5573d6000803e3d6000fd5b505050506040513d602081101562000b0c57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161462000b9157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5555494420696e20757365000000000000000000000000000000000000000000604482015290519081900360640190fd5b60005b606481101562000cc05760006005826064811062000bae57fe5b015473ffffffffffffffffffffffffffffffffffffffff16141562000cb757600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168287898860405162000c0290620016c2565b73ffffffffffffffffffffffffffffffffffffffff95861681529390941660208401526040808401929092526060830152608082019290925290519081900360a001906000f08015801562000c5b573d6000803e3d6000fd5b509350836005826064811062000c6d57fe5b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905562000cc0565b60010162000b94565b5073ffffffffffffffffffffffffffffffffffffffff831662000d4457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f546f6f206d616e79206163746976652070726f706f73616c7300000000000000604482015290519081900360640190fd5b8273ffffffffffffffffffffffffffffffffffffffff16632ded3227346040518263ffffffff1660e01b81526004016000604051808303818588803b15801562000d8d57600080fd5b505af115801562000da2573d6000803e3d6000fd5b5050604080517eb9f954000000000000000000000000000000000000000000000000000000008152600481018a905273ffffffffffffffffffffffffffffffffffffffff88811660248301529151918716945062b9f9549350604480820193506000929182900301818387803b15801562000e1c57600080fd5b505af115801562000e31573d6000803e3d6000fd5b50505050847fa94befa3ce181974130fe36e854a282c70fb75e4decb42bfecdecbd6f88f0f5d8483898773ffffffffffffffffffffffffffffffffffffffff166329dcb0cf6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000ea157600080fd5b505afa15801562000eb6573d6000803e3d6000fd5b505050506040513d602081101562000ecd57600080fd5b50516040805173ffffffffffffffffffffffffffffffffffffffff958616815293909416602084015282840191909152606082015290519081900360800190a2505060006001559392505050565b6000600454828162000f2957fe5b0615801562000f385750600082115b92915050565b600254604080517f5c09921500000000000000000000000000000000000000000000000000000000815260048101849052905160009273ffffffffffffffffffffffffffffffffffffffff1691635c099215916024808301926020929190829003018186803b15801562000fb157600080fd5b505afa15801562000fc6573d6000803e3d6000fd5b505050506040513d602081101562000fdd57600080fd5b505192915050565b303190565b600254604080517fcaef1d5a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151600093929092169163caef1d5a91602480820192602092909190829003018186803b15801562000fb157600080fd5b60005473ffffffffffffffffffffffffffffffffffffffff163314620010e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742070726f78790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b620010ef815b50565b600581606481106200110057fe5b015473ffffffffffffffffffffffffffffffffffffffff16905081565b34156200117d577f4d154d4aae216bed6d0926db77c00df2b57c6b5ba4eee05775de20facede3a7b6200114f6200165f565b6040805173ffffffffffffffffffffffffffffffffffffffff90921682523460208301528051918290030190a15b565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b600254604080517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152915191909216916313af403591602480830192600092919082900301818387803b1580156200122c57600080fd5b505af115801562001241573d6000803e3d6000fd5b5050505050565b60008080808080805b6064811015620014d757600581606481106200126957fe5b015473ffffffffffffffffffffffffffffffffffffffff1695508515620014ce578573ffffffffffffffffffffffffffffffffffffffff16633b2a1b146040518163ffffffff1660e01b815260040160806040518083038186803b158015620012d157600080fd5b505afa158015620012e6573d6000803e3d6000fd5b505050506040513d6080811015620012fd57600080fd5b508051602082015160408301516060909301519197509550909350915083156200142f578115620013915795810195858882606481106200133a57fe5b602002015173ffffffffffffffffffffffffffffffffffffffff9091169052848882606481106200136757fe5b60200201516020018181525050818882606481106200138257fe5b60200201516040015262001429565b8573ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620013da57600080fd5b505af1158015620013ef573d6000803e3d6000fd5b50505050600581606481106200140157fe5b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b620014ce565b8215620014ce578573ffffffffffffffffffffffffffffffffffffffff1663e52253816040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200147f57600080fd5b505af115801562001494573d6000803e3d6000fd5b5050505060058160648110620014a657fe5b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b60010162001251565b505050505050919050565b6000805b60648110156200165957828160648110620014fd57fe5b602002015151915073ffffffffffffffffffffffffffffffffffffffff821615620016505760006103e8858584606481106200153557fe5b60200201516040015102816200154757fe5b0490508382606481106200155757fe5b6020020151604001518111156200156a57fe5b8273ffffffffffffffffffffffffffffffffffffffff166310cac8a5826040518263ffffffff1660e01b81526004016000604051808303818588803b158015620015b357600080fd5b505af1158015620015c8573d6000803e3d6000fd5b5050505050838260648110620015da57fe5b6020020151602001517f5f7341a552ae2d452b071917104c05fbac3663936a69be768a05c40605056e7d8483604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a2505b600101620014e6565b50505050565b6000805473ffffffffffffffffffffffffffffffffffffffff163314156200168957503262000767565b503362000767565b60405180610c8001604052806064905b620016ab620016d0565b815260200190600190039081620016a15790505090565b61159b806200170883390190565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152509056fe60806040523480156200001157600080fd5b506040516200159b3803806200159b833981810160405260a08110156200003757600080fd5b508051602080830151604080850151606086015160809096015160018054336001600160a01b031991821617909155436002556000805482166001600160a01b03808a1691821783554285016003556004805490941690881617835585517f8abf6077000000000000000000000000000000000000000000000000000000008152955198999698949793958a9560079588958c959485949093638abf607793828401939092829003018186803b158015620000f157600080fd5b505afa15801562000106573d6000803e3d6000fd5b505050506040513d60208110156200011d57600080fd5b5051604080517f06661abd00000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216916306661abd9160048082019260a092909190829003018186803b1580156200017b57600080fd5b505afa15801562000190573d6000803e3d6000fd5b505050506040513d60a0811015620001a757600080fd5b5060408101516080909101519092509050806200022557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f7420726561647920666f722070726f706f73616c73000000000000000000604482015290519081900360640190fd5b600281048210156200029857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41637469766520776569676874203c20312f3220657665722077656967687400604482015290519081900360640190fd5b600160ff861610156200030c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f51756f72756d206d696e00000000000000000000000000000000000000000000604482015290519081900360640190fd5b606460ff861611156200038057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f51756f72756d206d617800000000000000000000000000000000000000000000604482015290519081900360640190fd5b6008829055606460ff8616830204600955603360ff861610620003a957600954600a55620003b4565b60646033830204600a555b6000600954116200042657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f51756f72756d2077656967687400000000000000000000000000000000000000604482015290519081900360640190fd5b6000600a54116200049857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f46696e6973682077656967687400000000000000000000000000000000000000604482015290519081900360640190fd5b505050600e95909555505050600d555050506110e180620004ba6000396000f3fe6080604052600436106101ac5760003560e01c80637639b1eb116100ec578063aec2ccae1161008a578063c40a70f811610064578063c40a70f8146104a9578063c86e6c15146104be578063e5225381146104d3578063fe7334e8146104e8576101ac565b8063aec2ccae1461043f578063bd4c1f391461047f578063c2472ef814610494576101ac565b806391840a6b116100c657806391840a6b146103c0578063990a663b146103d55780639d5e6c9d146103ea578063adfaa72e146103ff576101ac565b80637639b1eb146103815780637b3529621461039657806383197ef0146103ab576101ac565b80633d1db3e9116101595780635051a5ec116101335780635051a5ec146102f057806356c2a0a11461031957806360f96a8f1461032e57806375df0f991461036c576101ac565b80633d1db3e9146102b15780634cafdfb2146102c6578063504881df146102db576101ac565b80632ded32271161018a5780632ded3227146102595780633b2a1b14146102615780633ccfd60b1461029c576101ac565b80630b62be451461021357806310cac8a51461023a57806329dcb0cf14610244575b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f7420616c6c6f776564000000000000000000000000000000000000000000604482015290519081900360640190fd5b34801561021f57600080fd5b506102286104fd565b60408051918252519081900360200190f35b610242610503565b005b34801561025057600080fd5b5061022861051a565b610242610520565b34801561026d57600080fd5b506102766105b0565b604080519485529215156020850152901515838301526060830152519081900360800190f35b3480156102a857600080fd5b506102426105e8565b3480156102bd57600080fd5b506102286106a5565b3480156102d257600080fd5b506102286106ab565b3480156102e757600080fd5b506102286106b1565b3480156102fc57600080fd5b506103056106b7565b604080519115158252519081900360200190f35b34801561032557600080fd5b50610242610704565b34801561033a57600080fd5b50610343610717565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561037857600080fd5b50610228610733565b34801561038d57600080fd5b50610228610739565b3480156103a257600080fd5b5061030561073f565b3480156103b757600080fd5b50610242610769565b3480156103cc57600080fd5b5061022861080a565b3480156103e157600080fd5b50610228610810565b3480156103f657600080fd5b50610343610816565b34801561040b57600080fd5b506103056004803603602081101561042257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610832565b34801561044b57600080fd5b506103056004803603602081101561046257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166109cc565b34801561048b57600080fd5b506102286109e1565b3480156104a057600080fd5b506102426109e7565b3480156104b557600080fd5b506103436109fa565b3480156104ca57600080fd5b50610228610a16565b3480156104df57600080fd5b50610242610a1c565b3480156104f457600080fd5b50610343610d71565b60025481565b600c8054340190819055600d54101561051857fe5b565b60035481565b60015473ffffffffffffffffffffffffffffffffffffffff1633146105a657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f6e6c7920706172656e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b6005805434019055565b600e54600080806105bf6106b7565b92506105c961073f565b9150600d54600c5411156105d957fe5b600c54600d5403905090919293565b6105f06106b7565b61065b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f742061636365707465640000000000000000000000000000000000000000604482015290519081900360640190fd5b60045460405173ffffffffffffffffffffffffffffffffffffffff90911690303180156108fc02916000818181858888f193505050501580156106a2573d6000803e3d6000fd5b50565b600a5481565b600d5481565b600c5481565b6000600a54600654106106cc57506001610701565b6106d461073f565b6106e057506000610701565b6009546007546006540110156106f857506000610701565b50600754600654115b90565b61070c610d8d565b600780549091019055565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60065481565b6000426003541115806107565750600a5460065410155b806107645750600a54600754115b905090565b60015473ffffffffffffffffffffffffffffffffffffffff1633146107ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f6e6c7920706172656e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b60045473ffffffffffffffffffffffffffffffffffffffff16ff5b60085481565b60055481565b60045473ffffffffffffffffffffffffffffffffffffffff1690565b60008054604080517f8abf60770000000000000000000000000000000000000000000000000000000081529051839273ffffffffffffffffffffffffffffffffffffffff1691638abf6077916004808301926020929190829003018186803b15801561089d57600080fd5b505afa1580156108b1573d6000803e3d6000fd5b505050506040513d60208110156108c757600080fd5b5051604080517fb83e160500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015291519293506000929184169163b83e16059160248082019260e092909190829003018186803b15801561093f57600080fd5b505afa158015610953573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060e081101561097857600080fd5b5060a0015160035490915042108015610992575060025481105b80156109c4575073ffffffffffffffffffffffffffffffffffffffff84166000908152600b602052604090205460ff16155b949350505050565b600b6020526000908152604090205460ff1681565b600e5481565b6109ef610d8d565b600680549091019055565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b610a2461073f565b8015610a355750610a336106b7565b155b610aa057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7420636f6c6c65637461626c650000000000000000000000000000000000604482015290519081900360640190fd5b60015473ffffffffffffffffffffffffffffffffffffffff163314610b2657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f6e6c7920706172656e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abf60776040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8f57600080fd5b505afa158015610ba3573d6000803e3d6000fd5b505050506040513d6020811015610bb957600080fd5b5051604080517fa2731784000000000000000000000000000000000000000000000000000000008152905191925060009173ffffffffffffffffffffffffffffffffffffffff84169163a2731784916004808301926020929190829003018186803b158015610c2757600080fd5b505afa158015610c3b573d6000803e3d6000fd5b505050506040513d6020811015610c5157600080fd5b5051604080517f8abf6077000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691638abf607791600480820192602092909190829003018186803b158015610cbb57600080fd5b505afa158015610ccf573d6000803e3d6000fd5b505050506040513d6020811015610ce557600080fd5b5051604080517fd7bb99ba000000000000000000000000000000000000000000000000000000008152905191925073ffffffffffffffffffffffffffffffffffffffff83169163d7bb99ba91303191600480830192600092919082900301818588803b158015610d5457600080fd5b505af1158015610d68573d6000803e3d6000fd5b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60004260035411610dff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f46696e6973686564000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abf60776040518163ffffffff1660e01b815260040160206040518083038186803b158015610e6857600080fd5b505afa158015610e7c573d6000803e3d6000fd5b505050506040513d6020811015610e9257600080fd5b5051604080517fb83e160500000000000000000000000000000000000000000000000000000000815233600482018190529151929350909160009173ffffffffffffffffffffffffffffffffffffffff85169163b83e16059160248082019260e092909190829003018186803b158015610f0b57600080fd5b505afa158015610f1f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060e0811015610f4457600080fd5b50608081015160a09091015160025491955091508110610fc557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420656c696769626c650000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604090205460ff161561105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f416c726561647920766f74656400000000000000000000000000000000000000604482015290519081900360640190fd5b5073ffffffffffffffffffffffffffffffffffffffff166000908152600b6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055509056fea265627a7a7231582072224e92031a8f8c2b7b89935d4513e1215a63d85b09740250501118da4938ba64736f6c63430005100032a265627a7a723158202e83b9e1260bffc2c54e9840d98c086ad6e2c09c7c09fe78b7ee5d209056ad4264736f6c63430005100032`
    51  
    52  // TreasuryV1 is an auto generated Go binding around an Ethereum contract.
    53  type TreasuryV1 struct {
    54  	TreasuryV1Caller     // Read-only binding to the contract
    55  	TreasuryV1Transactor // Write-only binding to the contract
    56  	TreasuryV1Filterer   // Log filterer for contract events
    57  }
    58  
    59  // TreasuryV1Caller is an auto generated read-only Go binding around an Ethereum contract.
    60  type TreasuryV1Caller struct {
    61  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    62  }
    63  
    64  // TreasuryV1Transactor is an auto generated write-only Go binding around an Ethereum contract.
    65  type TreasuryV1Transactor struct {
    66  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    67  }
    68  
    69  // TreasuryV1Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
    70  type TreasuryV1Filterer struct {
    71  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    72  }
    73  
    74  // TreasuryV1Session is an auto generated Go binding around an Ethereum contract,
    75  // with pre-set call and transact options.
    76  type TreasuryV1Session struct {
    77  	Contract     *TreasuryV1       // 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  // TreasuryV1CallerSession is an auto generated read-only Go binding around an Ethereum contract,
    83  // with pre-set call options.
    84  type TreasuryV1CallerSession struct {
    85  	Contract *TreasuryV1Caller // Generic contract caller binding to set the session for
    86  	CallOpts bind.CallOpts     // Call options to use throughout this session
    87  }
    88  
    89  // TreasuryV1TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    90  // with pre-set transact options.
    91  type TreasuryV1TransactorSession struct {
    92  	Contract     *TreasuryV1Transactor // Generic contract transactor binding to set the session for
    93  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
    94  }
    95  
    96  // TreasuryV1Raw is an auto generated low-level Go binding around an Ethereum contract.
    97  type TreasuryV1Raw struct {
    98  	Contract *TreasuryV1 // Generic contract binding to access the raw methods on
    99  }
   100  
   101  // TreasuryV1CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   102  type TreasuryV1CallerRaw struct {
   103  	Contract *TreasuryV1Caller // Generic read-only contract binding to access the raw methods on
   104  }
   105  
   106  // TreasuryV1TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   107  type TreasuryV1TransactorRaw struct {
   108  	Contract *TreasuryV1Transactor // Generic write-only contract binding to access the raw methods on
   109  }
   110  
   111  // NewTreasuryV1 creates a new instance of TreasuryV1, bound to a specific deployed contract.
   112  func NewTreasuryV1(address common.Address, backend bind.ContractBackend) (*TreasuryV1, error) {
   113  	contract, err := bindTreasuryV1(address, backend, backend, backend)
   114  	if err != nil {
   115  		return nil, err
   116  	}
   117  	return &TreasuryV1{TreasuryV1Caller: TreasuryV1Caller{contract: contract}, TreasuryV1Transactor: TreasuryV1Transactor{contract: contract}, TreasuryV1Filterer: TreasuryV1Filterer{contract: contract}}, nil
   118  }
   119  
   120  // NewTreasuryV1Caller creates a new read-only instance of TreasuryV1, bound to a specific deployed contract.
   121  func NewTreasuryV1Caller(address common.Address, caller bind.ContractCaller) (*TreasuryV1Caller, error) {
   122  	contract, err := bindTreasuryV1(address, caller, nil, nil)
   123  	if err != nil {
   124  		return nil, err
   125  	}
   126  	return &TreasuryV1Caller{contract: contract}, nil
   127  }
   128  
   129  // NewTreasuryV1Transactor creates a new write-only instance of TreasuryV1, bound to a specific deployed contract.
   130  func NewTreasuryV1Transactor(address common.Address, transactor bind.ContractTransactor) (*TreasuryV1Transactor, error) {
   131  	contract, err := bindTreasuryV1(address, nil, transactor, nil)
   132  	if err != nil {
   133  		return nil, err
   134  	}
   135  	return &TreasuryV1Transactor{contract: contract}, nil
   136  }
   137  
   138  // NewTreasuryV1Filterer creates a new log filterer instance of TreasuryV1, bound to a specific deployed contract.
   139  func NewTreasuryV1Filterer(address common.Address, filterer bind.ContractFilterer) (*TreasuryV1Filterer, error) {
   140  	contract, err := bindTreasuryV1(address, nil, nil, filterer)
   141  	if err != nil {
   142  		return nil, err
   143  	}
   144  	return &TreasuryV1Filterer{contract: contract}, nil
   145  }
   146  
   147  // bindTreasuryV1 binds a generic wrapper to an already deployed contract.
   148  func bindTreasuryV1(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   149  	parsed, err := abi.JSON(strings.NewReader(TreasuryV1ABI))
   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 (_TreasuryV1 *TreasuryV1Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   161  	return _TreasuryV1.Contract.TreasuryV1Caller.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 (_TreasuryV1 *TreasuryV1Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   167  	return _TreasuryV1.Contract.TreasuryV1Transactor.contract.Transfer(opts)
   168  }
   169  
   170  // Transact invokes the (paid) contract method with params as input values.
   171  func (_TreasuryV1 *TreasuryV1Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   172  	return _TreasuryV1.Contract.TreasuryV1Transactor.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 (_TreasuryV1 *TreasuryV1CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   180  	return _TreasuryV1.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 (_TreasuryV1 *TreasuryV1TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   186  	return _TreasuryV1.Contract.contract.Transfer(opts)
   187  }
   188  
   189  // Transact invokes the (paid) contract method with params as input values.
   190  func (_TreasuryV1 *TreasuryV1TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   191  	return _TreasuryV1.Contract.contract.Transact(opts, method, params...)
   192  }
   193  
   194  // ActiveProposals is a free data retrieval call binding the contract method 0xd5f99789.
   195  //
   196  // Solidity: function active_proposals(uint256 ) constant returns(address)
   197  func (_TreasuryV1 *TreasuryV1Caller) ActiveProposals(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
   198  	var (
   199  		ret0 = new(common.Address)
   200  	)
   201  	out := ret0
   202  	err := _TreasuryV1.contract.Call(opts, out, "active_proposals", arg0)
   203  	return *ret0, err
   204  }
   205  
   206  // ActiveProposals is a free data retrieval call binding the contract method 0xd5f99789.
   207  //
   208  // Solidity: function active_proposals(uint256 ) constant returns(address)
   209  func (_TreasuryV1 *TreasuryV1Session) ActiveProposals(arg0 *big.Int) (common.Address, error) {
   210  	return _TreasuryV1.Contract.ActiveProposals(&_TreasuryV1.CallOpts, arg0)
   211  }
   212  
   213  // ActiveProposals is a free data retrieval call binding the contract method 0xd5f99789.
   214  //
   215  // Solidity: function active_proposals(uint256 ) constant returns(address)
   216  func (_TreasuryV1 *TreasuryV1CallerSession) ActiveProposals(arg0 *big.Int) (common.Address, error) {
   217  	return _TreasuryV1.Contract.ActiveProposals(&_TreasuryV1.CallOpts, arg0)
   218  }
   219  
   220  // Balance is a free data retrieval call binding the contract method 0xb69ef8a8.
   221  //
   222  // Solidity: function balance() constant returns(uint256 amount)
   223  func (_TreasuryV1 *TreasuryV1Caller) Balance(opts *bind.CallOpts) (*big.Int, error) {
   224  	var (
   225  		ret0 = new(*big.Int)
   226  	)
   227  	out := ret0
   228  	err := _TreasuryV1.contract.Call(opts, out, "balance")
   229  	return *ret0, err
   230  }
   231  
   232  // Balance is a free data retrieval call binding the contract method 0xb69ef8a8.
   233  //
   234  // Solidity: function balance() constant returns(uint256 amount)
   235  func (_TreasuryV1 *TreasuryV1Session) Balance() (*big.Int, error) {
   236  	return _TreasuryV1.Contract.Balance(&_TreasuryV1.CallOpts)
   237  }
   238  
   239  // Balance is a free data retrieval call binding the contract method 0xb69ef8a8.
   240  //
   241  // Solidity: function balance() constant returns(uint256 amount)
   242  func (_TreasuryV1 *TreasuryV1CallerSession) Balance() (*big.Int, error) {
   243  	return _TreasuryV1.Contract.Balance(&_TreasuryV1.CallOpts)
   244  }
   245  
   246  // GetReward is a free data retrieval call binding the contract method 0x1c4b774b.
   247  //
   248  // Solidity: function getReward(uint256 _blockNumber) constant returns(uint256 amount)
   249  func (_TreasuryV1 *TreasuryV1Caller) GetReward(opts *bind.CallOpts, _blockNumber *big.Int) (*big.Int, error) {
   250  	var (
   251  		ret0 = new(*big.Int)
   252  	)
   253  	out := ret0
   254  	err := _TreasuryV1.contract.Call(opts, out, "getReward", _blockNumber)
   255  	return *ret0, err
   256  }
   257  
   258  // GetReward is a free data retrieval call binding the contract method 0x1c4b774b.
   259  //
   260  // Solidity: function getReward(uint256 _blockNumber) constant returns(uint256 amount)
   261  func (_TreasuryV1 *TreasuryV1Session) GetReward(_blockNumber *big.Int) (*big.Int, error) {
   262  	return _TreasuryV1.Contract.GetReward(&_TreasuryV1.CallOpts, _blockNumber)
   263  }
   264  
   265  // GetReward is a free data retrieval call binding the contract method 0x1c4b774b.
   266  //
   267  // Solidity: function getReward(uint256 _blockNumber) constant returns(uint256 amount)
   268  func (_TreasuryV1 *TreasuryV1CallerSession) GetReward(_blockNumber *big.Int) (*big.Int, error) {
   269  	return _TreasuryV1.Contract.GetReward(&_TreasuryV1.CallOpts, _blockNumber)
   270  }
   271  
   272  // IsSuperblock is a free data retrieval call binding the contract method 0x52782d86.
   273  //
   274  // Solidity: function isSuperblock(uint256 _blockNumber) constant returns(bool)
   275  func (_TreasuryV1 *TreasuryV1Caller) IsSuperblock(opts *bind.CallOpts, _blockNumber *big.Int) (bool, error) {
   276  	var (
   277  		ret0 = new(bool)
   278  	)
   279  	out := ret0
   280  	err := _TreasuryV1.contract.Call(opts, out, "isSuperblock", _blockNumber)
   281  	return *ret0, err
   282  }
   283  
   284  // IsSuperblock is a free data retrieval call binding the contract method 0x52782d86.
   285  //
   286  // Solidity: function isSuperblock(uint256 _blockNumber) constant returns(bool)
   287  func (_TreasuryV1 *TreasuryV1Session) IsSuperblock(_blockNumber *big.Int) (bool, error) {
   288  	return _TreasuryV1.Contract.IsSuperblock(&_TreasuryV1.CallOpts, _blockNumber)
   289  }
   290  
   291  // IsSuperblock is a free data retrieval call binding the contract method 0x52782d86.
   292  //
   293  // Solidity: function isSuperblock(uint256 _blockNumber) constant returns(bool)
   294  func (_TreasuryV1 *TreasuryV1CallerSession) IsSuperblock(_blockNumber *big.Int) (bool, error) {
   295  	return _TreasuryV1.Contract.IsSuperblock(&_TreasuryV1.CallOpts, _blockNumber)
   296  }
   297  
   298  // ListProposals is a free data retrieval call binding the contract method 0x26c7eb1c.
   299  //
   300  // Solidity: function listProposals() constant returns(address[] proposals)
   301  func (_TreasuryV1 *TreasuryV1Caller) ListProposals(opts *bind.CallOpts) ([]common.Address, error) {
   302  	var (
   303  		ret0 = new([]common.Address)
   304  	)
   305  	out := ret0
   306  	err := _TreasuryV1.contract.Call(opts, out, "listProposals")
   307  	return *ret0, err
   308  }
   309  
   310  // ListProposals is a free data retrieval call binding the contract method 0x26c7eb1c.
   311  //
   312  // Solidity: function listProposals() constant returns(address[] proposals)
   313  func (_TreasuryV1 *TreasuryV1Session) ListProposals() ([]common.Address, error) {
   314  	return _TreasuryV1.Contract.ListProposals(&_TreasuryV1.CallOpts)
   315  }
   316  
   317  // ListProposals is a free data retrieval call binding the contract method 0x26c7eb1c.
   318  //
   319  // Solidity: function listProposals() constant returns(address[] proposals)
   320  func (_TreasuryV1 *TreasuryV1CallerSession) ListProposals() ([]common.Address, error) {
   321  	return _TreasuryV1.Contract.ListProposals(&_TreasuryV1.CallOpts)
   322  }
   323  
   324  // MnregistryProxy is a free data retrieval call binding the contract method 0xfe7334e8.
   325  //
   326  // Solidity: function mnregistry_proxy() constant returns(address)
   327  func (_TreasuryV1 *TreasuryV1Caller) MnregistryProxy(opts *bind.CallOpts) (common.Address, error) {
   328  	var (
   329  		ret0 = new(common.Address)
   330  	)
   331  	out := ret0
   332  	err := _TreasuryV1.contract.Call(opts, out, "mnregistry_proxy")
   333  	return *ret0, err
   334  }
   335  
   336  // MnregistryProxy is a free data retrieval call binding the contract method 0xfe7334e8.
   337  //
   338  // Solidity: function mnregistry_proxy() constant returns(address)
   339  func (_TreasuryV1 *TreasuryV1Session) MnregistryProxy() (common.Address, error) {
   340  	return _TreasuryV1.Contract.MnregistryProxy(&_TreasuryV1.CallOpts)
   341  }
   342  
   343  // MnregistryProxy is a free data retrieval call binding the contract method 0xfe7334e8.
   344  //
   345  // Solidity: function mnregistry_proxy() constant returns(address)
   346  func (_TreasuryV1 *TreasuryV1CallerSession) MnregistryProxy() (common.Address, error) {
   347  	return _TreasuryV1.Contract.MnregistryProxy(&_TreasuryV1.CallOpts)
   348  }
   349  
   350  // ProposalUuid is a free data retrieval call binding the contract method 0xcaef1d5a.
   351  //
   352  // Solidity: function proposal_uuid(address proposal) constant returns(uint256)
   353  func (_TreasuryV1 *TreasuryV1Caller) ProposalUuid(opts *bind.CallOpts, proposal common.Address) (*big.Int, error) {
   354  	var (
   355  		ret0 = new(*big.Int)
   356  	)
   357  	out := ret0
   358  	err := _TreasuryV1.contract.Call(opts, out, "proposal_uuid", proposal)
   359  	return *ret0, err
   360  }
   361  
   362  // ProposalUuid is a free data retrieval call binding the contract method 0xcaef1d5a.
   363  //
   364  // Solidity: function proposal_uuid(address proposal) constant returns(uint256)
   365  func (_TreasuryV1 *TreasuryV1Session) ProposalUuid(proposal common.Address) (*big.Int, error) {
   366  	return _TreasuryV1.Contract.ProposalUuid(&_TreasuryV1.CallOpts, proposal)
   367  }
   368  
   369  // ProposalUuid is a free data retrieval call binding the contract method 0xcaef1d5a.
   370  //
   371  // Solidity: function proposal_uuid(address proposal) constant returns(uint256)
   372  func (_TreasuryV1 *TreasuryV1CallerSession) ProposalUuid(proposal common.Address) (*big.Int, error) {
   373  	return _TreasuryV1.Contract.ProposalUuid(&_TreasuryV1.CallOpts, proposal)
   374  }
   375  
   376  // Proxy is a free data retrieval call binding the contract method 0xec556889.
   377  //
   378  // Solidity: function proxy() constant returns(address)
   379  func (_TreasuryV1 *TreasuryV1Caller) Proxy(opts *bind.CallOpts) (common.Address, error) {
   380  	var (
   381  		ret0 = new(common.Address)
   382  	)
   383  	out := ret0
   384  	err := _TreasuryV1.contract.Call(opts, out, "proxy")
   385  	return *ret0, err
   386  }
   387  
   388  // Proxy is a free data retrieval call binding the contract method 0xec556889.
   389  //
   390  // Solidity: function proxy() constant returns(address)
   391  func (_TreasuryV1 *TreasuryV1Session) Proxy() (common.Address, error) {
   392  	return _TreasuryV1.Contract.Proxy(&_TreasuryV1.CallOpts)
   393  }
   394  
   395  // Proxy is a free data retrieval call binding the contract method 0xec556889.
   396  //
   397  // Solidity: function proxy() constant returns(address)
   398  func (_TreasuryV1 *TreasuryV1CallerSession) Proxy() (common.Address, error) {
   399  	return _TreasuryV1.Contract.Proxy(&_TreasuryV1.CallOpts)
   400  }
   401  
   402  // SuperblockCycle is a free data retrieval call binding the contract method 0x0ef34745.
   403  //
   404  // Solidity: function superblock_cycle() constant returns(uint256)
   405  func (_TreasuryV1 *TreasuryV1Caller) SuperblockCycle(opts *bind.CallOpts) (*big.Int, error) {
   406  	var (
   407  		ret0 = new(*big.Int)
   408  	)
   409  	out := ret0
   410  	err := _TreasuryV1.contract.Call(opts, out, "superblock_cycle")
   411  	return *ret0, err
   412  }
   413  
   414  // SuperblockCycle is a free data retrieval call binding the contract method 0x0ef34745.
   415  //
   416  // Solidity: function superblock_cycle() constant returns(uint256)
   417  func (_TreasuryV1 *TreasuryV1Session) SuperblockCycle() (*big.Int, error) {
   418  	return _TreasuryV1.Contract.SuperblockCycle(&_TreasuryV1.CallOpts)
   419  }
   420  
   421  // SuperblockCycle is a free data retrieval call binding the contract method 0x0ef34745.
   422  //
   423  // Solidity: function superblock_cycle() constant returns(uint256)
   424  func (_TreasuryV1 *TreasuryV1CallerSession) SuperblockCycle() (*big.Int, error) {
   425  	return _TreasuryV1.Contract.SuperblockCycle(&_TreasuryV1.CallOpts)
   426  }
   427  
   428  // UuidProposal is a free data retrieval call binding the contract method 0x5c099215.
   429  //
   430  // Solidity: function uuid_proposal(uint256 _ref_uuid) constant returns(address)
   431  func (_TreasuryV1 *TreasuryV1Caller) UuidProposal(opts *bind.CallOpts, _ref_uuid *big.Int) (common.Address, error) {
   432  	var (
   433  		ret0 = new(common.Address)
   434  	)
   435  	out := ret0
   436  	err := _TreasuryV1.contract.Call(opts, out, "uuid_proposal", _ref_uuid)
   437  	return *ret0, err
   438  }
   439  
   440  // UuidProposal is a free data retrieval call binding the contract method 0x5c099215.
   441  //
   442  // Solidity: function uuid_proposal(uint256 _ref_uuid) constant returns(address)
   443  func (_TreasuryV1 *TreasuryV1Session) UuidProposal(_ref_uuid *big.Int) (common.Address, error) {
   444  	return _TreasuryV1.Contract.UuidProposal(&_TreasuryV1.CallOpts, _ref_uuid)
   445  }
   446  
   447  // UuidProposal is a free data retrieval call binding the contract method 0x5c099215.
   448  //
   449  // Solidity: function uuid_proposal(uint256 _ref_uuid) constant returns(address)
   450  func (_TreasuryV1 *TreasuryV1CallerSession) UuidProposal(_ref_uuid *big.Int) (common.Address, error) {
   451  	return _TreasuryV1.Contract.UuidProposal(&_TreasuryV1.CallOpts, _ref_uuid)
   452  }
   453  
   454  // V1storage is a free data retrieval call binding the contract method 0x2d059305.
   455  //
   456  // Solidity: function v1storage() constant returns(address)
   457  func (_TreasuryV1 *TreasuryV1Caller) V1storage(opts *bind.CallOpts) (common.Address, error) {
   458  	var (
   459  		ret0 = new(common.Address)
   460  	)
   461  	out := ret0
   462  	err := _TreasuryV1.contract.Call(opts, out, "v1storage")
   463  	return *ret0, err
   464  }
   465  
   466  // V1storage is a free data retrieval call binding the contract method 0x2d059305.
   467  //
   468  // Solidity: function v1storage() constant returns(address)
   469  func (_TreasuryV1 *TreasuryV1Session) V1storage() (common.Address, error) {
   470  	return _TreasuryV1.Contract.V1storage(&_TreasuryV1.CallOpts)
   471  }
   472  
   473  // V1storage is a free data retrieval call binding the contract method 0x2d059305.
   474  //
   475  // Solidity: function v1storage() constant returns(address)
   476  func (_TreasuryV1 *TreasuryV1CallerSession) V1storage() (common.Address, error) {
   477  	return _TreasuryV1.Contract.V1storage(&_TreasuryV1.CallOpts)
   478  }
   479  
   480  // Contribute is a paid mutator transaction binding the contract method 0xd7bb99ba.
   481  //
   482  // Solidity: function contribute() returns()
   483  func (_TreasuryV1 *TreasuryV1Transactor) Contribute(opts *bind.TransactOpts) (*types.Transaction, error) {
   484  	return _TreasuryV1.contract.Transact(opts, "contribute")
   485  }
   486  
   487  // Contribute is a paid mutator transaction binding the contract method 0xd7bb99ba.
   488  //
   489  // Solidity: function contribute() returns()
   490  func (_TreasuryV1 *TreasuryV1Session) Contribute() (*types.Transaction, error) {
   491  	return _TreasuryV1.Contract.Contribute(&_TreasuryV1.TransactOpts)
   492  }
   493  
   494  // Contribute is a paid mutator transaction binding the contract method 0xd7bb99ba.
   495  //
   496  // Solidity: function contribute() returns()
   497  func (_TreasuryV1 *TreasuryV1TransactorSession) Contribute() (*types.Transaction, error) {
   498  	return _TreasuryV1.Contract.Contribute(&_TreasuryV1.TransactOpts)
   499  }
   500  
   501  // Destroy is a paid mutator transaction binding the contract method 0x00f55d9d.
   502  //
   503  // Solidity: function destroy(address _newImpl) returns()
   504  func (_TreasuryV1 *TreasuryV1Transactor) Destroy(opts *bind.TransactOpts, _newImpl common.Address) (*types.Transaction, error) {
   505  	return _TreasuryV1.contract.Transact(opts, "destroy", _newImpl)
   506  }
   507  
   508  // Destroy is a paid mutator transaction binding the contract method 0x00f55d9d.
   509  //
   510  // Solidity: function destroy(address _newImpl) returns()
   511  func (_TreasuryV1 *TreasuryV1Session) Destroy(_newImpl common.Address) (*types.Transaction, error) {
   512  	return _TreasuryV1.Contract.Destroy(&_TreasuryV1.TransactOpts, _newImpl)
   513  }
   514  
   515  // Destroy is a paid mutator transaction binding the contract method 0x00f55d9d.
   516  //
   517  // Solidity: function destroy(address _newImpl) returns()
   518  func (_TreasuryV1 *TreasuryV1TransactorSession) Destroy(_newImpl common.Address) (*types.Transaction, error) {
   519  	return _TreasuryV1.Contract.Destroy(&_TreasuryV1.TransactOpts, _newImpl)
   520  }
   521  
   522  // Migrate is a paid mutator transaction binding the contract method 0xce5494bb.
   523  //
   524  // Solidity: function migrate(address _oldImpl) returns()
   525  func (_TreasuryV1 *TreasuryV1Transactor) Migrate(opts *bind.TransactOpts, _oldImpl common.Address) (*types.Transaction, error) {
   526  	return _TreasuryV1.contract.Transact(opts, "migrate", _oldImpl)
   527  }
   528  
   529  // Migrate is a paid mutator transaction binding the contract method 0xce5494bb.
   530  //
   531  // Solidity: function migrate(address _oldImpl) returns()
   532  func (_TreasuryV1 *TreasuryV1Session) Migrate(_oldImpl common.Address) (*types.Transaction, error) {
   533  	return _TreasuryV1.Contract.Migrate(&_TreasuryV1.TransactOpts, _oldImpl)
   534  }
   535  
   536  // Migrate is a paid mutator transaction binding the contract method 0xce5494bb.
   537  //
   538  // Solidity: function migrate(address _oldImpl) returns()
   539  func (_TreasuryV1 *TreasuryV1TransactorSession) Migrate(_oldImpl common.Address) (*types.Transaction, error) {
   540  	return _TreasuryV1.Contract.Migrate(&_TreasuryV1.TransactOpts, _oldImpl)
   541  }
   542  
   543  // Propose is a paid mutator transaction binding the contract method 0x40376d56.
   544  //
   545  // Solidity: function propose(uint256 _amount, uint256 _ref_uuid, uint256 _period) returns(address proposal)
   546  func (_TreasuryV1 *TreasuryV1Transactor) Propose(opts *bind.TransactOpts, _amount *big.Int, _ref_uuid *big.Int, _period *big.Int) (*types.Transaction, error) {
   547  	return _TreasuryV1.contract.Transact(opts, "propose", _amount, _ref_uuid, _period)
   548  }
   549  
   550  // Propose is a paid mutator transaction binding the contract method 0x40376d56.
   551  //
   552  // Solidity: function propose(uint256 _amount, uint256 _ref_uuid, uint256 _period) returns(address proposal)
   553  func (_TreasuryV1 *TreasuryV1Session) Propose(_amount *big.Int, _ref_uuid *big.Int, _period *big.Int) (*types.Transaction, error) {
   554  	return _TreasuryV1.Contract.Propose(&_TreasuryV1.TransactOpts, _amount, _ref_uuid, _period)
   555  }
   556  
   557  // Propose is a paid mutator transaction binding the contract method 0x40376d56.
   558  //
   559  // Solidity: function propose(uint256 _amount, uint256 _ref_uuid, uint256 _period) returns(address proposal)
   560  func (_TreasuryV1 *TreasuryV1TransactorSession) Propose(_amount *big.Int, _ref_uuid *big.Int, _period *big.Int) (*types.Transaction, error) {
   561  	return _TreasuryV1.Contract.Propose(&_TreasuryV1.TransactOpts, _amount, _ref_uuid, _period)
   562  }
   563  
   564  // Reward is a paid mutator transaction binding the contract method 0x228cb733.
   565  //
   566  // Solidity: function reward() returns()
   567  func (_TreasuryV1 *TreasuryV1Transactor) Reward(opts *bind.TransactOpts) (*types.Transaction, error) {
   568  	return _TreasuryV1.contract.Transact(opts, "reward")
   569  }
   570  
   571  // Reward is a paid mutator transaction binding the contract method 0x228cb733.
   572  //
   573  // Solidity: function reward() returns()
   574  func (_TreasuryV1 *TreasuryV1Session) Reward() (*types.Transaction, error) {
   575  	return _TreasuryV1.Contract.Reward(&_TreasuryV1.TransactOpts)
   576  }
   577  
   578  // Reward is a paid mutator transaction binding the contract method 0x228cb733.
   579  //
   580  // Solidity: function reward() returns()
   581  func (_TreasuryV1 *TreasuryV1TransactorSession) Reward() (*types.Transaction, error) {
   582  	return _TreasuryV1.Contract.Reward(&_TreasuryV1.TransactOpts)
   583  }
   584  
   585  // TreasuryV1BudgetProposalIterator is returned from FilterBudgetProposal and is used to iterate over the raw logs and unpacked data for BudgetProposal events raised by the TreasuryV1 contract.
   586  type TreasuryV1BudgetProposalIterator struct {
   587  	Event *TreasuryV1BudgetProposal // Event containing the contract specifics and raw log
   588  
   589  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   590  	event    string              // Event name to use for unpacking event data
   591  
   592  	logs chan types.Log        // Log channel receiving the found contract events
   593  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   594  	done bool                  // Whether the subscription completed delivering logs
   595  	fail error                 // Occurred error to stop iteration
   596  }
   597  
   598  // Next advances the iterator to the subsequent event, returning whether there
   599  // are any more events found. In case of a retrieval or parsing error, false is
   600  // returned and Error() can be queried for the exact failure.
   601  func (it *TreasuryV1BudgetProposalIterator) Next() bool {
   602  	// If the iterator failed, stop iterating
   603  	if it.fail != nil {
   604  		return false
   605  	}
   606  	// If the iterator completed, deliver directly whatever's available
   607  	if it.done {
   608  		select {
   609  		case log := <-it.logs:
   610  			it.Event = new(TreasuryV1BudgetProposal)
   611  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   612  				it.fail = err
   613  				return false
   614  			}
   615  			it.Event.Raw = log
   616  			return true
   617  
   618  		default:
   619  			return false
   620  		}
   621  	}
   622  	// Iterator still in progress, wait for either a data or an error event
   623  	select {
   624  	case log := <-it.logs:
   625  		it.Event = new(TreasuryV1BudgetProposal)
   626  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   627  			it.fail = err
   628  			return false
   629  		}
   630  		it.Event.Raw = log
   631  		return true
   632  
   633  	case err := <-it.sub.Err():
   634  		it.done = true
   635  		it.fail = err
   636  		return it.Next()
   637  	}
   638  }
   639  
   640  // Error returns any retrieval or parsing error occurred during filtering.
   641  func (it *TreasuryV1BudgetProposalIterator) Error() error {
   642  	return it.fail
   643  }
   644  
   645  // Close terminates the iteration process, releasing any pending underlying
   646  // resources.
   647  func (it *TreasuryV1BudgetProposalIterator) Close() error {
   648  	it.sub.Unsubscribe()
   649  	return nil
   650  }
   651  
   652  // TreasuryV1BudgetProposal represents a BudgetProposal event raised by the TreasuryV1 contract.
   653  type TreasuryV1BudgetProposal struct {
   654  	RefUuid       *big.Int
   655  	Proposal      common.Address
   656  	PayoutAddress common.Address
   657  	Amount        *big.Int
   658  	Deadline      *big.Int
   659  	Raw           types.Log // Blockchain specific contextual infos
   660  }
   661  
   662  // FilterBudgetProposal is a free log retrieval operation binding the contract event 0xa94befa3ce181974130fe36e854a282c70fb75e4decb42bfecdecbd6f88f0f5d.
   663  //
   664  // Solidity: event BudgetProposal(uint256 indexed ref_uuid, address proposal, address payout_address, uint256 amount, uint256 deadline)
   665  func (_TreasuryV1 *TreasuryV1Filterer) FilterBudgetProposal(opts *bind.FilterOpts, ref_uuid []*big.Int) (*TreasuryV1BudgetProposalIterator, error) {
   666  
   667  	var ref_uuidRule []interface{}
   668  	for _, ref_uuidItem := range ref_uuid {
   669  		ref_uuidRule = append(ref_uuidRule, ref_uuidItem)
   670  	}
   671  
   672  	logs, sub, err := _TreasuryV1.contract.FilterLogs(opts, "BudgetProposal", ref_uuidRule)
   673  	if err != nil {
   674  		return nil, err
   675  	}
   676  	return &TreasuryV1BudgetProposalIterator{contract: _TreasuryV1.contract, event: "BudgetProposal", logs: logs, sub: sub}, nil
   677  }
   678  
   679  // WatchBudgetProposal is a free log subscription operation binding the contract event 0xa94befa3ce181974130fe36e854a282c70fb75e4decb42bfecdecbd6f88f0f5d.
   680  //
   681  // Solidity: event BudgetProposal(uint256 indexed ref_uuid, address proposal, address payout_address, uint256 amount, uint256 deadline)
   682  func (_TreasuryV1 *TreasuryV1Filterer) WatchBudgetProposal(opts *bind.WatchOpts, sink chan<- *TreasuryV1BudgetProposal, ref_uuid []*big.Int) (event.Subscription, error) {
   683  
   684  	var ref_uuidRule []interface{}
   685  	for _, ref_uuidItem := range ref_uuid {
   686  		ref_uuidRule = append(ref_uuidRule, ref_uuidItem)
   687  	}
   688  
   689  	logs, sub, err := _TreasuryV1.contract.WatchLogs(opts, "BudgetProposal", ref_uuidRule)
   690  	if err != nil {
   691  		return nil, err
   692  	}
   693  	return event.NewSubscription(func(quit <-chan struct{}) error {
   694  		defer sub.Unsubscribe()
   695  		for {
   696  			select {
   697  			case log := <-logs:
   698  				// New log arrived, parse the event and forward to the user
   699  				event := new(TreasuryV1BudgetProposal)
   700  				if err := _TreasuryV1.contract.UnpackLog(event, "BudgetProposal", log); err != nil {
   701  					return err
   702  				}
   703  				event.Raw = log
   704  
   705  				select {
   706  				case sink <- event:
   707  				case err := <-sub.Err():
   708  					return err
   709  				case <-quit:
   710  					return nil
   711  				}
   712  			case err := <-sub.Err():
   713  				return err
   714  			case <-quit:
   715  				return nil
   716  			}
   717  		}
   718  	}), nil
   719  }
   720  
   721  // TreasuryV1ContributionIterator is returned from FilterContribution and is used to iterate over the raw logs and unpacked data for Contribution events raised by the TreasuryV1 contract.
   722  type TreasuryV1ContributionIterator struct {
   723  	Event *TreasuryV1Contribution // Event containing the contract specifics and raw log
   724  
   725  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   726  	event    string              // Event name to use for unpacking event data
   727  
   728  	logs chan types.Log        // Log channel receiving the found contract events
   729  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   730  	done bool                  // Whether the subscription completed delivering logs
   731  	fail error                 // Occurred error to stop iteration
   732  }
   733  
   734  // Next advances the iterator to the subsequent event, returning whether there
   735  // are any more events found. In case of a retrieval or parsing error, false is
   736  // returned and Error() can be queried for the exact failure.
   737  func (it *TreasuryV1ContributionIterator) Next() bool {
   738  	// If the iterator failed, stop iterating
   739  	if it.fail != nil {
   740  		return false
   741  	}
   742  	// If the iterator completed, deliver directly whatever's available
   743  	if it.done {
   744  		select {
   745  		case log := <-it.logs:
   746  			it.Event = new(TreasuryV1Contribution)
   747  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   748  				it.fail = err
   749  				return false
   750  			}
   751  			it.Event.Raw = log
   752  			return true
   753  
   754  		default:
   755  			return false
   756  		}
   757  	}
   758  	// Iterator still in progress, wait for either a data or an error event
   759  	select {
   760  	case log := <-it.logs:
   761  		it.Event = new(TreasuryV1Contribution)
   762  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   763  			it.fail = err
   764  			return false
   765  		}
   766  		it.Event.Raw = log
   767  		return true
   768  
   769  	case err := <-it.sub.Err():
   770  		it.done = true
   771  		it.fail = err
   772  		return it.Next()
   773  	}
   774  }
   775  
   776  // Error returns any retrieval or parsing error occurred during filtering.
   777  func (it *TreasuryV1ContributionIterator) Error() error {
   778  	return it.fail
   779  }
   780  
   781  // Close terminates the iteration process, releasing any pending underlying
   782  // resources.
   783  func (it *TreasuryV1ContributionIterator) Close() error {
   784  	it.sub.Unsubscribe()
   785  	return nil
   786  }
   787  
   788  // TreasuryV1Contribution represents a Contribution event raised by the TreasuryV1 contract.
   789  type TreasuryV1Contribution struct {
   790  	From   common.Address
   791  	Amount *big.Int
   792  	Raw    types.Log // Blockchain specific contextual infos
   793  }
   794  
   795  // FilterContribution is a free log retrieval operation binding the contract event 0x4d154d4aae216bed6d0926db77c00df2b57c6b5ba4eee05775de20facede3a7b.
   796  //
   797  // Solidity: event Contribution(address from, uint256 amount)
   798  func (_TreasuryV1 *TreasuryV1Filterer) FilterContribution(opts *bind.FilterOpts) (*TreasuryV1ContributionIterator, error) {
   799  
   800  	logs, sub, err := _TreasuryV1.contract.FilterLogs(opts, "Contribution")
   801  	if err != nil {
   802  		return nil, err
   803  	}
   804  	return &TreasuryV1ContributionIterator{contract: _TreasuryV1.contract, event: "Contribution", logs: logs, sub: sub}, nil
   805  }
   806  
   807  // WatchContribution is a free log subscription operation binding the contract event 0x4d154d4aae216bed6d0926db77c00df2b57c6b5ba4eee05775de20facede3a7b.
   808  //
   809  // Solidity: event Contribution(address from, uint256 amount)
   810  func (_TreasuryV1 *TreasuryV1Filterer) WatchContribution(opts *bind.WatchOpts, sink chan<- *TreasuryV1Contribution) (event.Subscription, error) {
   811  
   812  	logs, sub, err := _TreasuryV1.contract.WatchLogs(opts, "Contribution")
   813  	if err != nil {
   814  		return nil, err
   815  	}
   816  	return event.NewSubscription(func(quit <-chan struct{}) error {
   817  		defer sub.Unsubscribe()
   818  		for {
   819  			select {
   820  			case log := <-logs:
   821  				// New log arrived, parse the event and forward to the user
   822  				event := new(TreasuryV1Contribution)
   823  				if err := _TreasuryV1.contract.UnpackLog(event, "Contribution", log); err != nil {
   824  					return err
   825  				}
   826  				event.Raw = log
   827  
   828  				select {
   829  				case sink <- event:
   830  				case err := <-sub.Err():
   831  					return err
   832  				case <-quit:
   833  					return nil
   834  				}
   835  			case err := <-sub.Err():
   836  				return err
   837  			case <-quit:
   838  				return nil
   839  			}
   840  		}
   841  	}), nil
   842  }
   843  
   844  // TreasuryV1PayoutIterator is returned from FilterPayout and is used to iterate over the raw logs and unpacked data for Payout events raised by the TreasuryV1 contract.
   845  type TreasuryV1PayoutIterator struct {
   846  	Event *TreasuryV1Payout // Event containing the contract specifics and raw log
   847  
   848  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   849  	event    string              // Event name to use for unpacking event data
   850  
   851  	logs chan types.Log        // Log channel receiving the found contract events
   852  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   853  	done bool                  // Whether the subscription completed delivering logs
   854  	fail error                 // Occurred error to stop iteration
   855  }
   856  
   857  // Next advances the iterator to the subsequent event, returning whether there
   858  // are any more events found. In case of a retrieval or parsing error, false is
   859  // returned and Error() can be queried for the exact failure.
   860  func (it *TreasuryV1PayoutIterator) Next() bool {
   861  	// If the iterator failed, stop iterating
   862  	if it.fail != nil {
   863  		return false
   864  	}
   865  	// If the iterator completed, deliver directly whatever's available
   866  	if it.done {
   867  		select {
   868  		case log := <-it.logs:
   869  			it.Event = new(TreasuryV1Payout)
   870  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   871  				it.fail = err
   872  				return false
   873  			}
   874  			it.Event.Raw = log
   875  			return true
   876  
   877  		default:
   878  			return false
   879  		}
   880  	}
   881  	// Iterator still in progress, wait for either a data or an error event
   882  	select {
   883  	case log := <-it.logs:
   884  		it.Event = new(TreasuryV1Payout)
   885  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   886  			it.fail = err
   887  			return false
   888  		}
   889  		it.Event.Raw = log
   890  		return true
   891  
   892  	case err := <-it.sub.Err():
   893  		it.done = true
   894  		it.fail = err
   895  		return it.Next()
   896  	}
   897  }
   898  
   899  // Error returns any retrieval or parsing error occurred during filtering.
   900  func (it *TreasuryV1PayoutIterator) Error() error {
   901  	return it.fail
   902  }
   903  
   904  // Close terminates the iteration process, releasing any pending underlying
   905  // resources.
   906  func (it *TreasuryV1PayoutIterator) Close() error {
   907  	it.sub.Unsubscribe()
   908  	return nil
   909  }
   910  
   911  // TreasuryV1Payout represents a Payout event raised by the TreasuryV1 contract.
   912  type TreasuryV1Payout struct {
   913  	RefUuid  *big.Int
   914  	Proposal common.Address
   915  	Amount   *big.Int
   916  	Raw      types.Log // Blockchain specific contextual infos
   917  }
   918  
   919  // FilterPayout is a free log retrieval operation binding the contract event 0x5f7341a552ae2d452b071917104c05fbac3663936a69be768a05c40605056e7d.
   920  //
   921  // Solidity: event Payout(uint256 indexed ref_uuid, address proposal, uint256 amount)
   922  func (_TreasuryV1 *TreasuryV1Filterer) FilterPayout(opts *bind.FilterOpts, ref_uuid []*big.Int) (*TreasuryV1PayoutIterator, error) {
   923  
   924  	var ref_uuidRule []interface{}
   925  	for _, ref_uuidItem := range ref_uuid {
   926  		ref_uuidRule = append(ref_uuidRule, ref_uuidItem)
   927  	}
   928  
   929  	logs, sub, err := _TreasuryV1.contract.FilterLogs(opts, "Payout", ref_uuidRule)
   930  	if err != nil {
   931  		return nil, err
   932  	}
   933  	return &TreasuryV1PayoutIterator{contract: _TreasuryV1.contract, event: "Payout", logs: logs, sub: sub}, nil
   934  }
   935  
   936  // WatchPayout is a free log subscription operation binding the contract event 0x5f7341a552ae2d452b071917104c05fbac3663936a69be768a05c40605056e7d.
   937  //
   938  // Solidity: event Payout(uint256 indexed ref_uuid, address proposal, uint256 amount)
   939  func (_TreasuryV1 *TreasuryV1Filterer) WatchPayout(opts *bind.WatchOpts, sink chan<- *TreasuryV1Payout, ref_uuid []*big.Int) (event.Subscription, error) {
   940  
   941  	var ref_uuidRule []interface{}
   942  	for _, ref_uuidItem := range ref_uuid {
   943  		ref_uuidRule = append(ref_uuidRule, ref_uuidItem)
   944  	}
   945  
   946  	logs, sub, err := _TreasuryV1.contract.WatchLogs(opts, "Payout", ref_uuidRule)
   947  	if err != nil {
   948  		return nil, err
   949  	}
   950  	return event.NewSubscription(func(quit <-chan struct{}) error {
   951  		defer sub.Unsubscribe()
   952  		for {
   953  			select {
   954  			case log := <-logs:
   955  				// New log arrived, parse the event and forward to the user
   956  				event := new(TreasuryV1Payout)
   957  				if err := _TreasuryV1.contract.UnpackLog(event, "Payout", log); err != nil {
   958  					return err
   959  				}
   960  				event.Raw = log
   961  
   962  				select {
   963  				case sink <- event:
   964  				case err := <-sub.Err():
   965  					return err
   966  				case <-quit:
   967  					return nil
   968  				}
   969  			case err := <-sub.Err():
   970  				return err
   971  			case <-quit:
   972  				return nil
   973  			}
   974  		}
   975  	}), nil
   976  }