github.com/bigzoro/my_simplechain@v0.0.0-20240315012955-8ad0a2a29bb9/permission/permission.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 permission
     5  
     6  import (
     7  	"errors"
     8  	"math/big"
     9  	"strings"
    10  
    11  	ethereum "github.com/bigzoro/my_simplechain"
    12  	"github.com/bigzoro/my_simplechain/accounts/abi"
    13  	"github.com/bigzoro/my_simplechain/accounts/abi/bind"
    14  	"github.com/bigzoro/my_simplechain/common"
    15  	"github.com/bigzoro/my_simplechain/core/types"
    16  	"github.com/bigzoro/my_simplechain/event"
    17  )
    18  
    19  // Reference imports to suppress errors if they are not otherwise used.
    20  var (
    21  	_ = errors.New
    22  	_ = big.NewInt
    23  	_ = strings.NewReader
    24  	_ = ethereum.NotFound
    25  	_ = bind.Bind
    26  	_ = common.Big1
    27  	_ = types.BloomLookup
    28  	_ = event.NewSubscription
    29  )
    30  
    31  // PermissionMetaData contains all meta data concerning the Permission contract.
    32  var PermissionMetaData = &bind.MetaData{
    33  	ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"enodeId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ip\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"port\",\"type\":\"string\"}],\"name\":\"AddNewNodeNotify\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"enodeId\",\"type\":\"string\"}],\"name\":\"ApplyByAdminNotify\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"enodeId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"opCode\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"ip\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"port\",\"type\":\"string\"}],\"name\":\"VerifyNotify\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_nodeId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isAdminRoleEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_nodeId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_opCode\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_voterNodeId\",\"type\":\"string\"}],\"name\":\"isVotedEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"networkInitComplete\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_nodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_voterNodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_opCode\",\"type\":\"string\"}],\"name\":\"disagree\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_nodeId\",\"type\":\"string\"}],\"name\":\"exit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAdminCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllStatingRecord\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_nodeName\",\"type\":\"string\"}],\"name\":\"getInfoByName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_nodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_opCode\",\"type\":\"string\"}],\"name\":\"getLastStatistics\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_role\",\"type\":\"uint256\"}],\"name\":\"getNodeByRole\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_nodeId\",\"type\":\"string\"}],\"name\":\"getNodeMap\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOriginators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initFinish\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_nodeHash\",\"type\":\"bytes32\"}],\"name\":\"isAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isInitFinished\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_nodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_port\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"nodeName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_nodeAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_proposeNodeId\",\"type\":\"string\"}],\"name\":\"makeProposeForAddNewNode\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_nodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_opCode\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_voterNodeId\",\"type\":\"string\"}],\"name\":\"makeProposeForRoleChange\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_nodeId\",\"type\":\"string\"}],\"name\":\"nodeExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_nodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_port\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_nodeName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_nodeAddress\",\"type\":\"address\"}],\"name\":\"setAdminNode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_nodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_ip\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_port\",\"type\":\"string\"}],\"name\":\"updateNodeInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_nodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_nodeName\",\"type\":\"string\"}],\"name\":\"updateNodeName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_nodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_voterNodeId\",\"type\":\"string\"}],\"name\":\"voteForNewNodeApply\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_nodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_voterNodeId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_opCode\",\"type\":\"string\"}],\"name\":\"voteForRoleChange\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}]",
    34  	Sigs: map[string]string{
    35  		"2d0207f8": "disagree(string,string,string)",
    36  		"e7fb5388": "exit(string)",
    37  		"8b7bf3eb": "getAdminCount()",
    38  		"24781773": "getAllStatingRecord()",
    39  		"c88120d6": "getInfoByName(string)",
    40  		"89e93d71": "getLastStatistics(string,string)",
    41  		"d5eda3b1": "getNodeByRole(uint256)",
    42  		"6fdde422": "getNodeMap(string)",
    43  		"edbfe56d": "getOriginators()",
    44  		"99439b69": "initFinish()",
    45  		"72d14480": "isAdmin(bytes32)",
    46  		"a247e4dd": "isInitFinished()",
    47  		"05247ce6": "makeProposeForAddNewNode(string,string,string,string,address,string)",
    48  		"2566dfb0": "makeProposeForRoleChange(string,string,string)",
    49  		"1b128f61": "nodeExists(string)",
    50  		"bbe25f2c": "setAdminNode(string,string,string,string,address)",
    51  		"69c0fc6b": "updateNodeInfo(string,string,string)",
    52  		"1cd0b206": "updateNodeName(string,string)",
    53  		"f4812238": "voteForNewNodeApply(string,string)",
    54  		"66aa2299": "voteForRoleChange(string,string,string)",
    55  	},
    56  	Bin: "0x60806040526000805460ff1916905534801561001a57600080fd5b50616d41806200002b6000396000f3fe60806040526004361061011f5760003560e01c806389e93d71116100a0578063c88120d611610064578063c88120d6146114b5578063d5eda3b114611566578063e7fb538814611590578063edbfe56d14611641578063f4812238146116a65761011f565b806389e93d7114610ff05780638b7bf3eb1461121957806399439b6914611240578063a247e4dd14611255578063bbe25f2c1461126a5761011f565b80632d0207f8116100e75780632d0207f81461082257806366aa2299146109d057806369c0fc6b14610b7e5780636fdde42214610d3957806372d1448014610fc65761011f565b806305247ce6146101245780631b128f61146103ef5780631cd0b206146104b457806324781773146105ea5780632566dfb014610674575b600080fd5b6103ed600480360360c081101561013a57600080fd5b810190602081018135600160201b81111561015457600080fd5b82018360208201111561016657600080fd5b803590602001918460018302840111600160201b8311171561018757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156101d957600080fd5b8201836020820111156101eb57600080fd5b803590602001918460018302840111600160201b8311171561020c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561025e57600080fd5b82018360208201111561027057600080fd5b803590602001918460018302840111600160201b8311171561029157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156102e357600080fd5b8201836020820111156102f557600080fd5b803590602001918460018302840111600160201b8311171561031657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092956001600160a01b03853516959094909350604081019250602001359050600160201b81111561037957600080fd5b82018360208201111561038b57600080fd5b803590602001918460018302840111600160201b831117156103ac57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506117cf945050505050565b005b3480156103fb57600080fd5b506104a06004803603602081101561041257600080fd5b810190602081018135600160201b81111561042c57600080fd5b82018360208201111561043e57600080fd5b803590602001918460018302840111600160201b8311171561045f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611b04945050505050565b604080519115158252519081900360200190f35b3480156104c057600080fd5b506103ed600480360360408110156104d757600080fd5b810190602081018135600160201b8111156104f157600080fd5b82018360208201111561050357600080fd5b803590602001918460018302840111600160201b8311171561052457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561057657600080fd5b82018360208201111561058857600080fd5b803590602001918460018302840111600160201b831117156105a957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611de3945050505050565b3480156105f657600080fd5b506105ff6121fe565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610639578181015183820152602001610621565b50505050905090810190601f1680156106665780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ed6004803603606081101561068a57600080fd5b810190602081018135600160201b8111156106a457600080fd5b8201836020820111156106b657600080fd5b803590602001918460018302840111600160201b831117156106d757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561072957600080fd5b82018360208201111561073b57600080fd5b803590602001918460018302840111600160201b8311171561075c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156107ae57600080fd5b8201836020820111156107c057600080fd5b803590602001918460018302840111600160201b831117156107e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612333945050505050565b6103ed6004803603606081101561083857600080fd5b810190602081018135600160201b81111561085257600080fd5b82018360208201111561086457600080fd5b803590602001918460018302840111600160201b8311171561088557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156108d757600080fd5b8201836020820111156108e957600080fd5b803590602001918460018302840111600160201b8311171561090a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561095c57600080fd5b82018360208201111561096e57600080fd5b803590602001918460018302840111600160201b8311171561098f57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061291d945050505050565b6103ed600480360360608110156109e657600080fd5b810190602081018135600160201b811115610a0057600080fd5b820183602082011115610a1257600080fd5b803590602001918460018302840111600160201b83111715610a3357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610a8557600080fd5b820183602082011115610a9757600080fd5b803590602001918460018302840111600160201b83111715610ab857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610b0a57600080fd5b820183602082011115610b1c57600080fd5b803590602001918460018302840111600160201b83111715610b3d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612d2b945050505050565b348015610b8a57600080fd5b506103ed60048036036060811015610ba157600080fd5b810190602081018135600160201b811115610bbb57600080fd5b820183602082011115610bcd57600080fd5b803590602001918460018302840111600160201b83111715610bee57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610c4057600080fd5b820183602082011115610c5257600080fd5b803590602001918460018302840111600160201b83111715610c7357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610cc557600080fd5b820183602082011115610cd757600080fd5b803590602001918460018302840111600160201b83111715610cf857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506138a7945050505050565b348015610d4557600080fd5b50610dea60048036036020811015610d5c57600080fd5b810190602081018135600160201b811115610d7657600080fd5b820183602082011115610d8857600080fd5b803590602001918460018302840111600160201b83111715610da957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550613cc5945050505050565b6040518080602001806020018060200180602001896001600160a01b03166001600160a01b031681526020018881526020018715151515815260200186815260200185810385528d818151815260200191508051906020019080838360005b83811015610e61578181015183820152602001610e49565b50505050905090810190601f168015610e8e5780820380516001836020036101000a031916815260200191505b5085810384528c5181528c516020918201918e019080838360005b83811015610ec1578181015183820152602001610ea9565b50505050905090810190601f168015610eee5780820380516001836020036101000a031916815260200191505b5085810383528b5181528b516020918201918d019080838360005b83811015610f21578181015183820152602001610f09565b50505050905090810190601f168015610f4e5780820380516001836020036101000a031916815260200191505b5085810382528a5181528a516020918201918c019080838360005b83811015610f81578181015183820152602001610f69565b50505050905090810190601f168015610fae5780820380516001836020036101000a031916815260200191505b509c5050505050505050505050505060405180910390f35b348015610fd257600080fd5b506104a060048036036020811015610fe957600080fd5b5035614022565b348015610ffc57600080fd5b506111266004803603604081101561101357600080fd5b810190602081018135600160201b81111561102d57600080fd5b82018360208201111561103f57600080fd5b803590602001918460018302840111600160201b8311171561106057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156110b257600080fd5b8201836020820111156110c457600080fd5b803590602001918460018302840111600160201b831117156110e557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550614060945050505050565b604051808681526020018581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015611179578181015183820152602001611161565b50505050905090810190601f1680156111a65780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156111d95781810151838201526020016111c1565b50505050905090810190601f1680156112065780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b34801561122557600080fd5b5061122e6142cd565b60408051918252519081900360200190f35b34801561124c57600080fd5b506103ed6142d3565b34801561126157600080fd5b506104a0614367565b34801561127657600080fd5b506103ed600480360360a081101561128d57600080fd5b810190602081018135600160201b8111156112a757600080fd5b8201836020820111156112b957600080fd5b803590602001918460018302840111600160201b831117156112da57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561132c57600080fd5b82018360208201111561133e57600080fd5b803590602001918460018302840111600160201b8311171561135f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156113b157600080fd5b8201836020820111156113c357600080fd5b803590602001918460018302840111600160201b831117156113e457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561143657600080fd5b82018360208201111561144857600080fd5b803590602001918460018302840111600160201b8311171561146957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b031691506143709050565b3480156114c157600080fd5b50610dea600480360360208110156114d857600080fd5b810190602081018135600160201b8111156114f257600080fd5b82018360208201111561150457600080fd5b803590602001918460018302840111600160201b8311171561152557600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061473b945050505050565b34801561157257600080fd5b506105ff6004803603602081101561158957600080fd5b5035614ba0565b34801561159c57600080fd5b506103ed600480360360208110156115b357600080fd5b810190602081018135600160201b8111156115cd57600080fd5b8201836020820111156115df57600080fd5b803590602001918460018302840111600160201b8311171561160057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550614cdb945050505050565b34801561164d57600080fd5b5061165661520f565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561169257818101518382015260200161167a565b505050509050019250505060405180910390f35b6103ed600480360360408110156116bc57600080fd5b810190602081018135600160201b8111156116d657600080fd5b8201836020820111156116e857600080fd5b803590602001918460018302840111600160201b8311171561170957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561175b57600080fd5b82018360208201111561176d57600080fd5b803590602001918460018302840111600160201b8311171561178e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550615271945050505050565b60005460ff166118105760405162461bcd60e51b815260040180806020018281038252604c815260200180616c9f604c913960600191505060405180910390fd5b600061183587604051806040016040528060018152602001600360fc1b815250615720565b9050600061184288615743565b60008181526002602052604090206007015490915060ff16156118a1576040805162461bcd60e51b81526020600482015260126024820152711d11505cf0573cb6f65cf771fcb5b31cb39560731b604482015290519081900360640190fd5b6118a9616a64565b506040805160e081018252600180825260208083018c81526000848601819052606085018190526080850189905285518087018752848152600360fc1b8185015260a086015260c0850181905287815260068352949094208351815460ff19169015151781559351805193948594909361192893908501920190616aa3565b50604082015160028201556060820151600382015560808201518051611958916004840191602090910190616aa3565b5060a08201518051611974916005840191602090910190616aa3565b5060c08201518160060155905050611992898989898960018861574e565b7f6038668b2430850a4f25a86d399648514d6cde42bca6b534937d6c78193fc28789898960405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b838110156119fb5781810151838201526020016119e3565b50505050905090810190601f168015611a285780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015611a5b578181015183820152602001611a43565b50505050905090810190601f168015611a885780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015611abb578181015183820152602001611aa3565b50505050905090810190601f168015611ae85780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1505050505050505050565b600080611b1083615743565b9050611b1a616b21565b60008281526002602081815260409283902083518154610140601f6000196101006001851615020190921695909504908101849004909302810184019094526101208401828152909284928491840182828015611bb85780601f10611b8d57610100808354040283529160200191611bb8565b820191906000526020600020905b815481529060010190602001808311611b9b57829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c5a5780601f10611c2f57610100808354040283529160200191611c5a565b820191906000526020600020905b815481529060010190602001808311611c3d57829003601f168201915b5050509183525050600282810180546040805160206001841615610100026000190190931694909404601f81018390048302850183019091528084529381019390830182828015611cec5780601f10611cc157610100808354040283529160200191611cec565b820191906000526020600020905b815481529060010190602001808311611ccf57829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152938201939291830182828015611d805780601f10611d5557610100808354040283529160200191611d80565b820191906000526020600020905b815481529060010190602001808311611d6357829003601f168201915b505050918352505060048201546001600160a01b038116602083015260ff600160a01b9091048116151560408301526005830154606083015260068301546080830152600790920154909116151560a0909101526101000151925050505b919050565b6000611dee83615743565b9050611df8616b21565b60008281526002602081815260409283902083518154610140601f6000196101006001851615020190921695909504908101849004909302810184019094526101208401828152909284928491840182828015611e965780601f10611e6b57610100808354040283529160200191611e96565b820191906000526020600020905b815481529060010190602001808311611e7957829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f385780601f10611f0d57610100808354040283529160200191611f38565b820191906000526020600020905b815481529060010190602001808311611f1b57829003601f168201915b5050509183525050600282810180546040805160206001841615610100026000190190931694909404601f81018390048302850183019091528084529381019390830182828015611fca5780601f10611f9f57610100808354040283529160200191611fca565b820191906000526020600020905b815481529060010190602001808311611fad57829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815293820193929183018282801561205e5780601f106120335761010080835404028352916020019161205e565b820191906000526020600020905b81548152906001019060200180831161204157829003601f168201915b505050918352505060048201546001600160a01b03808216602084015260ff600160a01b909204821615156040840152600584015460608401526006840154608080850191909152600790940154909116151560a09092019190915290820151919250163314612107576040805162461bcd60e51b815260206004820152600f60248201526ee8b4a6e58fb7e4b88de58cb9e9858d60881b604482015290519081900360640190fd5b606081018390526000828152600260209081526040909120825180518493612133928492910190616aa3565b50602082810151805161214c9260018501920190616aa3565b5060408201518051612168916002840191602090910190616aa3565b5060608201518051612184916003840191602090910190616aa3565b50608082015160048201805460a08501516001600160a01b03199091166001600160a01b039093169290921760ff60a01b1916600160a01b9215159290920291909117905560c0820151600582015560e08201516006820155610100909101516007909101805460ff191691151591909117905550505050565b60408051602081019091526000808252606091905b60045481101561232c5760006122c76004838154811061222f57fe5b600091825260209182902001805460408051601f60026000196101006001871615020190941693909304928301859004850281018501909152818152928301828280156122bd5780601f10612292576101008083540402835291602001916122bd565b820191906000526020600020905b8154815290600101906020018083116122a057829003601f168201915b5050505050615743565b905060606122d4826158ae565b90506122ef8160405180602001604052806000815250615ae7565b6123225761231f8461231a604051806040016040528060018152602001600b60fa1b81525084615c04565b615c04565b93505b5050600101612213565b5090505b90565b60005460ff166123745760405162461bcd60e51b815260040180806020018281038252604c815260200180616c9f604c913960600191505060405180910390fd5b61237e8133615cfb565b6123c8576040805162461bcd60e51b815260206004820152601660248201527574686520726f6c65206973206e6f742061646d696e2160501b604482015290519081900360640190fd5b6123eb82604051806040016040528060018152602001603160f81b815250615ae7565b80612414575061241482604051806040016040528060018152602001603360f81b815250615ae7565b1561273e57600061242484615743565b905061242e616b21565b60008281526002602081815260409283902083518154610140601f60001961010060018516150201909216959095049081018490049093028101840190945261012084018281529092849284918401828280156124cc5780601f106124a1576101008083540402835291602001916124cc565b820191906000526020600020905b8154815290600101906020018083116124af57829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561256e5780601f106125435761010080835404028352916020019161256e565b820191906000526020600020905b81548152906001019060200180831161255157829003601f168201915b5050509183525050600282810180546040805160206001841615610100026000190190931694909404601f810183900483028501830190915280845293810193908301828280156126005780601f106125d557610100808354040283529160200191612600565b820191906000526020600020905b8154815290600101906020018083116125e357829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529382019392918301828280156126945780601f1061266957610100808354040283529160200191612694565b820191906000526020600020905b81548152906001019060200180831161267757829003601f168201915b505050918352505060048201546001600160a01b038116602083015260ff600160a01b9091048116151560408301526005830154606083015260068301546080830152600790920154909116151560a0918201528101519091501561273b576040805162461bcd60e51b8152602060048201526018602482015277725c5df4454173c15cf25c46f2c2c0f4575c74c04072c3dd60411b604482015290519081900360640190fd5b50505b6127488383615d49565b612788576040805162461bcd60e51b815260206004820152600c60248201526be794b3e8afb7e5a4b1e8b4a560a01b604482015290519081900360640190fd5b60006127948484615720565b905061279e616a64565b506040805160e081018252600180825260208083018881526000848601819052606085018190526080850188905260a0850189905260c0850181905286815260068352949094208351815460ff19169015151781559351805193948594909361280c93908501920190616aa3565b5060408201516002820155606082015160038201556080820151805161283c916004840191602090910190616aa3565b5060a08201518051612858916005840191602090910190616aa3565b5060c09190910151600690910155600082815260086020526040812061287d91616b7a565b7f5e330ce69c9b3b5247e5759b06dc7fc78e57a2519cf6c6f8e8c70198da7ccc8e856040518080602001828103825283818151815260200191508051906020019080838360005b838110156128dc5781810151838201526020016128c4565b50505050905090810190601f1680156129095780820380516001836020036101000a031916815260200191505b509250505060405180910390a15050505050565b60005460ff1661295e5760405162461bcd60e51b815260040180806020018281038252604c815260200180616c9f604c913960600191505060405180910390fd5b6129688233615cfb565b6129b9576040805162461bcd60e51b815260206004820152601760248201527f74686520726f6c65206d7573742062652061646d696e21000000000000000000604482015290519081900360640190fd5b60006129c58483615720565b90506129cf616a64565b600082815260066020908152604091829020825160e081018452815460ff1615158152600180830180548651600261010094831615949094026000190190911692909204601f8101869004860283018601909652858252919492938581019391929190830182828015612a835780601f10612a5857610100808354040283529160200191612a83565b820191906000526020600020905b815481529060010190602001808311612a6657829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b395780601f10612b0e57610100808354040283529160200191612b39565b820191906000526020600020905b815481529060010190602001808311612b1c57829003601f168201915b505050918352505060058201805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152938201939291830182828015612bcd5780601f10612ba257610100808354040283529160200191612bcd565b820191906000526020600020905b815481529060010190602001808311612bb057829003601f168201915b505050505081526020016006820154815250509050612bee85853386615e7c565b6060810180516001908101918290525460029004108015612c11575060c0810151155b15612c925760018160c0018181525050612c4483604051806040016040528060018152602001600360fc1b815250615ae7565b15612c7b57600060026000612c5888615743565b81526020810191909152604001600020600701805460ff19169115159190911790555b6000828152600860205260408120612c9291616b7a565b60008281526006602090815260409091208251815460ff19169015151781558282015180518493612cca926001850192910190616aa3565b50604082015160028201556060820151600382015560808201518051612cfa916004840191602090910190616aa3565b5060a08201518051612d16916005840191602090910190616aa3565b5060c082015181600601559050505050505050565b60005460ff16612d6c5760405162461bcd60e51b815260040180806020018281038252604c815260200180616c9f604c913960600191505060405180910390fd5b612d768233615cfb565b612e2e577fb9dbcb13b6e91385636c1c8abe489e7267afb6c7febc7a0cb599c290df04f9be82336040518080602001836001600160a01b03166001600160a01b03168152602001828103825284818151815260200191508051906020019080838360005b83811015612df2578181015183820152602001612dda565b50505050905090810190601f168015612e1f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15b612e388233615cfb565b612e89576040805162461bcd60e51b815260206004820152601a60248201527f74686520726f6c65206973206d7573742062652061646d696e21000000000000604482015290519081900360640190fd5b612e94838284615f78565b15613001577fe9b1488676b5305d45c8a66f1ee9c7bbb243b69567e6f816d3245d2c8eb4d48583828460405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b83811015612f02578181015183820152602001612eea565b50505050905090810190601f168015612f2f5780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b83811015612f62578181015183820152602001612f4a565b50505050905090810190601f168015612f8f5780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b83811015612fc2578181015183820152602001612faa565b50505050905090810190601f168015612fef5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a15b61300c838284615f78565b15613050576040805162461bcd60e51b815260206004820152600f60248201526e1cb6f65cf771fcd152bd17f0fcf4b5608b1b604482015290519081900360640190fd5b61307381604051806040016040528060018152602001601960f91b815250615ae7565b1561331357613081836160bb565b6130d2576040805162461bcd60e51b815260206004820152601c60248201527f746865206e6f6465206d757374206265206e6f726d616c20726f6c6500000000604482015290519081900360640190fd5b6130da616a64565b6130e684838533616100565b60408101519091506130f98584866164d8565b60026001548161310557fe5b0481118015613116575060c0820151155b1561330c57600061312f61312a8786615c04565b615743565b905061313a8161651b565b600081815260086020526040812061315191616b7a565b600061315c87615743565b6000818152600260208181526040808420600581018490556001805481018155825180850186905260808082528f51908201528e51979850600080516020616c7f833981519152978f9792840195938701949193849392840192606085019260a08601928b01918190849084905b838110156131e25781810151838201526020016131ca565b50505050905090810190601f16801561320f5780820380516001836020036101000a031916815260200191505b508481038352865460026000196101006001841615020190911604808252602090910190879080156132825780601f1061325757610100808354040283529160200191613282565b820191906000526020600020905b81548152906001019060200180831161326557829003601f168201915b50508481038252855460026000196101006001841615020190911604808252602090910190869080156132f65780601f106132cb576101008083540402835291602001916132f6565b820191906000526020600020905b8154815290600101906020018083116132d957829003601f168201915b505097505050505050505060405180910390a150505b50506138a2565b61333681604051806040016040528060018152602001603360f81b815250615ae7565b1561361357600061334684615743565b905061335181614022565b6133a2576040805162461bcd60e51b815260206004820152601760248201527f746865206e6f6465206d7573742062652061646d696e21000000000000000000604482015290519081900360640190fd5b6133aa616a64565b6133b685848633616100565b60408101519091506133c98685876164d8565b6002600154816133d557fe5b04811180156133e6575060c0820151155b1561360b5760006133fa61312a8887615c04565b90506134058161651b565b600081815260086020526040812061341c91616b7a565b600061342788615743565b90506000600260008381526020019081526020016000206005018190555060016000815480929190600190039190505550600080516020616c7f833981519152886000600260008581526020019081526020016000206001016002600086815260200190815260200160002060020160405180806020018581526020018060200180602001848103845288818151815260200191508051906020019080838360005b838110156134e15781810151838201526020016134c9565b50505050905090810190601f16801561350e5780820380516001836020036101000a031916815260200191505b508481038352865460026000196101006001841615020190911604808252602090910190879080156135815780601f1061355657610100808354040283529160200191613581565b820191906000526020600020905b81548152906001019060200180831161356457829003601f168201915b50508481038252855460026000196101006001841615020190911604808252602090910190869080156135f55780601f106135ca576101008083540402835291602001916135f5565b820191906000526020600020905b8154815290600101906020018083116135d857829003601f168201915b505097505050505050505060405180910390a150505b5050506138a2565b61363681604051806040016040528060018152602001603160f81b815250615ae7565b156138a257613643616a64565b61364f84838533616100565b60408101519091506136628584866164d8565b60026001548161366e57fe5b048111801561367f575060c0820151155b1561389f57600061369361312a8786615c04565b905061369e8161651b565b60008181526008602052604081206136b591616b7a565b60006136c087615743565b60008181526002602081905260409091206005015491925014156136e957600180546000190190555b600081815260026020818152604080842060016005820181905560078201805460ff19169055825180850182905260808082528e51908201528d51600080516020616c7f833981519152978f97939685880196959094019492938493840192606085019260a08601928b0191908190849084905b8381101561377557818101518382015260200161375d565b50505050905090810190601f1680156137a25780820380516001836020036101000a031916815260200191505b508481038352865460026000196101006001841615020190911604808252602090910190879080156138155780601f106137ea57610100808354040283529160200191613815565b820191906000526020600020905b8154815290600101906020018083116137f857829003601f168201915b50508481038252855460026000196101006001841615020190911604808252602090910190869080156138895780601f1061385e57610100808354040283529160200191613889565b820191906000526020600020905b81548152906001019060200180831161386c57829003601f168201915b505097505050505050505060405180910390a150505b50505b505050565b60006138b284615743565b90506138bc616b21565b60008281526002602081815260409283902083518154610140601f600019610100600185161502019092169590950490810184900490930281018401909452610120840182815290928492849184018282801561395a5780601f1061392f5761010080835404028352916020019161395a565b820191906000526020600020905b81548152906001019060200180831161393d57829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156139fc5780601f106139d1576101008083540402835291602001916139fc565b820191906000526020600020905b8154815290600101906020018083116139df57829003601f168201915b5050509183525050600282810180546040805160206001841615610100026000190190931694909404601f81018390048302850183019091528084529381019390830182828015613a8e5780601f10613a6357610100808354040283529160200191613a8e565b820191906000526020600020905b815481529060010190602001808311613a7157829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152938201939291830182828015613b225780601f10613af757610100808354040283529160200191613b22565b820191906000526020600020905b815481529060010190602001808311613b0557829003601f168201915b505050918352505060048201546001600160a01b03808216602084015260ff600160a01b909204821615156040840152600584015460608401526006840154608080850191909152600790940154909116151560a09092019190915290820151919250163314613bcb576040805162461bcd60e51b815260206004820152600f60248201526ee8b4a6e58fb7e4b88de58cb9e9858d60881b604482015290519081900360640190fd5b6020808201859052604080830185905260008481526002835220825180518493613bf9928492910190616aa3565b506020828101518051613c129260018501920190616aa3565b5060408201518051613c2e916002840191602090910190616aa3565b5060608201518051613c4a916003840191602090910190616aa3565b50608082015160048201805460a08501516001600160a01b03199091166001600160a01b039093169290921760ff60a01b1916600160a01b9215159290920291909117905560c0820151600582015560e08201516006820155610100909101516007909101805460ff19169115159190911790555050505050565b6060806060806000806000806000613cdc8a615743565b9050613ce6616b21565b60008281526002602081815260409283902083518154610140601f6000196101006001851615020190921695909504908101849004909302810184019094526101208401828152909284928491840182828015613d845780601f10613d5957610100808354040283529160200191613d84565b820191906000526020600020905b815481529060010190602001808311613d6757829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613e265780601f10613dfb57610100808354040283529160200191613e26565b820191906000526020600020905b815481529060010190602001808311613e0957829003601f168201915b5050509183525050600282810180546040805160206001841615610100026000190190931694909404601f81018390048302850183019091528084529381019390830182828015613eb85780601f10613e8d57610100808354040283529160200191613eb8565b820191906000526020600020905b815481529060010190602001808311613e9b57829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152938201939291830182828015613f4c5780601f10613f2157610100808354040283529160200191613f4c565b820191906000526020600020905b815481529060010190602001808311613f2f57829003601f168201915b505050505081526020016004820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016004820160149054906101000a900460ff1615151515815260200160058201548152602001600682015481526020016007820160009054906101000a900460ff1615151515815250509050806000015181602001518260400151836060015184608001518560c001518660a001518760e001518797508696508595508494509950995099509950995099509950995050505b919395975091939597565b60008181526002602052604081206007015460ff1615614058575060008181526002602081905260409091206005015414611dde565b506000919050565b600080606080600060606140748888615c04565b9050600061408182615743565b905061408b616a64565b600082815260066020908152604091829020825160e081018452815460ff1615158152600180830180548651600261010094831615949094026000190190911692909204601f810186900486028301860190965285825291949293858101939192919083018282801561413f5780601f106141145761010080835404028352916020019161413f565b820191906000526020600020905b81548152906001019060200180831161412257829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156141f55780601f106141ca576101008083540402835291602001916141f5565b820191906000526020600020905b8154815290600101906020018083116141d857829003601f168201915b505050918352505060058201805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529382019392918301828280156142895780601f1061425e57610100808354040283529160200191614289565b820191906000526020600020905b81548152906001019060200180831161426c57829003601f168201915b50505091835250506006919091015460209091015260408101516060820151608083015160a084015160c090940151929e919d509b50919950975095505050505050565b60015490565b60005460ff16156143155760405162461bcd60e51b815260040180806020018281038252602b815260200180616c54602b913960400191505060405180910390fd5b60015415614365576000805460ff191660011790556040805143815242602082015281517fd57c71a2984069403b4307775755ca30b183c3f5c9eb595659a1a4488d503035929181900390910190a15b565b60005460ff1690565b60005460ff16156143b25760405162461bcd60e51b815260040180806020018281038252602b815260200180616c54602b913960400191505060405180910390fd5b60006143bd86615743565b90506143c881614022565b156144045760405162461bcd60e51b8152600401808060200182810382526021815260200180616ceb6021913960400191505060405180910390fd5b6000818152600260209081526040909120875161442392890190616aa3565b506000818152600260209081526040909120865161444992600190920191880190616aa3565b506000818152600260208181526040909220865161446f93919092019190870190616aa3565b506000818152600260209081526040909120845161449592600390920191860190616aa3565b5060008181526002602081815260408320600581019290925560048083018054600160a01b6001600160a01b03199091166001600160a01b0389161760ff60a01b19161790554260068401556007909201805460ff1916600190811790915582549081018355919092528751614532927f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90920191890190616aa3565b5060008181526003602090815260408083208054600160ff199091168117909155805481018155600580548083019091557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b0388161790556002808452828520835180860183905260808082528d51908201528c51600080516020616c7f833981519152978e97949695840195938701949293849390840192606085019260a08601928b0191908190849084905b8381101561460c5781810151838201526020016145f4565b50505050905090810190601f1680156146395780820380516001836020036101000a031916815260200191505b508481038352865460026000196101006001841615020190911604808252602090910190879080156146ac5780601f10614681576101008083540402835291602001916146ac565b820191906000526020600020905b81548152906001019060200180831161468f57829003601f168201915b50508481038252855460026000196101006001841615020190911604808252602090910190869080156147205780601f106146f557610100808354040283529160200191614720565b820191906000526020600020905b81548152906001019060200180831161470357829003601f168201915b505097505050505050505060405180910390a1505050505050565b60608080806000808080805b600454811015614b555760006147636004838154811061222f57fe5b600081815260026020818152604092839020600301805484516001821615610100026000190190911693909304601f8101839004830284018301909452838352939450614809938f9390918301828280156147ff5780601f106147d4576101008083540402835291602001916147ff565b820191906000526020600020905b8154815290600101906020018083116147e257829003601f168201915b5050505050615ae7565b15614b4c57614816616b21565b60008281526002602081815260409283902083518154610140601f60001961010060018516150201909216959095049081018490049093028101840190945261012084018281529092849284918401828280156148b45780601f10614889576101008083540402835291602001916148b4565b820191906000526020600020905b81548152906001019060200180831161489757829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156149565780601f1061492b57610100808354040283529160200191614956565b820191906000526020600020905b81548152906001019060200180831161493957829003601f168201915b5050509183525050600282810180546040805160206001841615610100026000190190931694909404601f810183900483028501830190915280845293810193908301828280156149e85780601f106149bd576101008083540402835291602001916149e8565b820191906000526020600020905b8154815290600101906020018083116149cb57829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152938201939291830182828015614a7c5780601f10614a5157610100808354040283529160200191614a7c565b820191906000526020600020905b815481529060010190602001808311614a5f57829003601f168201915b505050505081526020016004820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016004820160149054906101000a900460ff1615151515815260200160058201548152602001600682015481526020016007820160009054906101000a900460ff1615151515815250509050806000015181602001518260400151836060015184608001518560c001518660a001518760e001518797508696508595508494509a509a509a509a509a509a509a509a50505050614017565b50600101614747565b50506040805160208082018352600080835283518083018552818152845180840186528281528551938401909552818352929c929b5092995097509095508594508493508392509050565b6040805160208101909152600081526060906002831115614bc2579050611dde565b60005b600454811015614cd4576000614be16004838154811061222f57fe5b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f8101839004830284018301909452838352939450606093919290830182828015614c785780601f10614c4d57610100808354040283529160200191614c78565b820191906000526020600020905b815481529060010190602001808311614c5b57829003601f168201915b505050600085815260026020526040902060050154929350505086811415614cc957614cc6614cc083604051806040016040528060018152602001600b60fa1b815250615c04565b86615c04565b94505b505050600101614bc5565b5092915050565b60005460ff16614d1c5760405162461bcd60e51b815260040180806020018281038252604c815260200180616c9f604c913960600191505060405180910390fd5b6000614d2782615743565b60008181526002602052604090206007015490915060ff16614d49575061520c565b614d51616b21565b60008281526002602081815260409283902083518154610140601f6000196101006001851615020190921695909504908101849004909302810184019094526101208401828152909284928491840182828015614def5780601f10614dc457610100808354040283529160200191614def565b820191906000526020600020905b815481529060010190602001808311614dd257829003601f168201915b50505050508152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015614e915780601f10614e6657610100808354040283529160200191614e91565b820191906000526020600020905b815481529060010190602001808311614e7457829003601f168201915b5050509183525050600282810180546040805160206001841615610100026000190190931694909404601f81018390048302850183019091528084529381019390830182828015614f235780601f10614ef857610100808354040283529160200191614f23565b820191906000526020600020905b815481529060010190602001808311614f0657829003601f168201915b505050918352505060038201805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152938201939291830182828015614fb75780601f10614f8c57610100808354040283529160200191614fb7565b820191906000526020600020905b815481529060010190602001808311614f9a57829003601f168201915b505050918352505060048201546001600160a01b038116602083015260ff600160a01b9091048116151560408301526005830154606083015260068301546080830152600790920154909116151560a0918201528101519091501561505e576040805162461bcd60e51b8152602060048201526018602482015277725c5df4454173c15cf25c46f2c2c0f4575c74c04072c3dd60411b604482015290519081900360640190fd5b600082815260026020818152604080842060078101805460ff191690558151600181850181905260808083528a51908301528951600080516020616c7f833981519152978b979296878601969590930194849390840192606085019260a08601928b0191908190849084905b838110156150e25781810151838201526020016150ca565b50505050905090810190601f16801561510f5780820380516001836020036101000a031916815260200191505b508481038352865460026000196101006001841615020190911604808252602090910190879080156151825780601f1061515757610100808354040283529160200191615182565b820191906000526020600020905b81548152906001019060200180831161516557829003601f168201915b50508481038252855460026000196101006001841615020190911604808252602090910190869080156151f65780601f106151cb576101008083540402835291602001916151f6565b820191906000526020600020905b8154815290600101906020018083116151d957829003601f168201915b505097505050505050505060405180910390a150505b50565b6060600580548060200260200160405190810160405280929190818152602001828054801561526757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311615249575b5050505050905090565b60005460ff166152b25760405162461bcd60e51b815260040180806020018281038252604c815260200180616c9f604c913960600191505060405180910390fd5b6152bc8133615cfb565b615374577fb9dbcb13b6e91385636c1c8abe489e7267afb6c7febc7a0cb599c290df04f9be81336040518080602001836001600160a01b03166001600160a01b03168152602001828103825284818151815260200191508051906020019080838360005b83811015615338578181015183820152602001615320565b50505050905090810190601f1680156153655780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15b61537e8133615cfb565b6153c8576040805162461bcd60e51b815260206004820152601660248201527574686520726f6c65206973206e6f742061646d696e2160501b604482015290519081900360640190fd5b6153ec82604051806040016040528060018152602001600360fc1b81525083615f78565b15615572577fe9b1488676b5305d45c8a66f1ee9c7bbb243b69567e6f816d3245d2c8eb4d48582604051806040016040528060018152602001600360fc1b8152508360405180806020018060200180602001848103845287818151815260200191508051906020019080838360005b8381101561547357818101518382015260200161545b565b50505050905090810190601f1680156154a05780820380516001836020036101000a031916815260200191505b50848103835286518152865160209182019188019080838360005b838110156154d35781810151838201526020016154bb565b50505050905090810190601f1680156155005780820380516001836020036101000a031916815260200191505b50848103825285518152855160209182019187019080838360005b8381101561553357818101518382015260200161551b565b50505050905090810190601f1680156155605780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a15b61559682604051806040016040528060018152602001600360fc1b81525083615f78565b156155da576040805162461bcd60e51b815260206004820152600f60248201526e1cb6f65cf771fcd152bd17f0fcf4b5608b1b604482015290519081900360640190fd5b6155e2616a64565b61560783604051806040016040528060018152602001600360fc1b8152508433616100565b905061562d83604051806040016040528060018152602001600360fc1b815250846164d8565b60408101516001546002900481118015615649575060c0820151155b1561571a57600061567385604051806040016040528060018152602001600360fc1b815250615720565b9050600061568086615743565b905061568b8261651b565b60008281526008602052604081206156a291616b7a565b600081815260026020818152604080842060058101859055815180840186905260808082528c51908201528b51600080516020616c7f833981519152968d96909560018501959490910193839290830191606084019160a08501918a01908083838c831561460c5781810151838201526020016145f4565b50505050565b6000606061572e8484615c04565b905061573981615743565b9150505b92915050565b805160209091012090565b6000818152600260209081526040909120875161577392600190920191890190616aa3565b506000818152600260208181526040909220875161579993919092019190880190616aa3565b50600081815260026020908152604090912088516157b9928a0190616aa3565b5060008181526002602090815260409091206004810180546001600160a01b0319166001600160a01b03871617905585516157fc92600390920191870190616aa3565b5060008181526002602090815260408083206005810186905560048101805460ff60a01b19169055426006820155600701805460ff19166001179055600390915290205460ff166158a55760048054600181018255600091909152875161588a917f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b019060208a0190616aa3565b506000818152600360205260409020805460ff191660011790555b50505050505050565b60408051602080820183526000808352848152600280835290849020805485516001821615610100026000190190911692909204601f8101849004840283018401909552848252606094859383018282801561594b5780601f106159205761010080835404028352916020019161594b565b820191906000526020600020905b81548152906001019060200180831161592e57829003601f168201915b50505050509050606061597782604051806040016040528060018152602001600360fc1b8152506167d4565b90506159928160405180602001604052806000815250615ae7565b61599a578092505b6159bd82604051806040016040528060018152602001603160f81b8152506167d4565b90506159d88160405180602001604052806000815250615ae7565b615a0657615a038361231a604051806040016040528060018152602001600b60fa1b81525084615c04565b92505b615a2982604051806040016040528060018152602001601960f91b8152506167d4565b9050615a448160405180602001604052806000815250615ae7565b615a7257615a6f8361231a604051806040016040528060018152602001600b60fa1b81525084615c04565b92505b615a9582604051806040016040528060018152602001603360f81b8152506167d4565b9050615ab08160405180602001604052806000815250615ae7565b615ade57615adb8361231a604051806040016040528060018152602001600b60fa1b81525084615c04565b92505b50909392505050565b6000816040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015615b2a578181015183820152602001615b12565b50505050905090810190601f168015615b575780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405280519060200120836040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015615bb3578181015183820152602001615b9b565b50505050905090810190601f168015615be05780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012014905092915050565b6060808390506060839050606081518351016040519080825280601f01601f191660200182016040528015615c40576020820181803883390190505b509050806000805b8551811015615c9957858181518110615c5d57fe5b602001015160f81c60f81b838380600101945081518110615c7a57fe5b60200101906001600160f81b031916908160001a905350600101615c48565b5060005b8451811015615cee57848181518110615cb257fe5b602001015160f81c60f81b838380600101945081518110615ccf57fe5b60200101906001600160f81b031916908160001a905350600101615c9d565b5091979650505050505050565b600080615d0784615743565b9050615d1281614022565b615d2057600091505061573d565b6000908152600260205260409020600401546001600160a01b0390811690831614905092915050565b6000615d6e82604051806040016040528060018152602001600360fc1b815250615ae7565b15615d7b5750600061573d565b6000615d8684615743565b600081815260026020819052604090912054919250600019610100600184161502019091160415615e725760008181526002602052604090206005015460011415615dd557600091505061573d565b615df883604051806040016040528060018152602001601960f91b815250615ae7565b8015615e165750600081815260026020819052604090912060050154145b15615e2557600091505061573d565b615e4883604051806040016040528060018152602001603360f81b815250615ae7565b8015615e635750600081815260026020526040902060050154155b15615e7257600091505061573d565b5060019392505050565b615e84616b98565b84815260208082018590526001600160a01b03841660408301526060820183905260006080830181905260078054600181018255915282518051849360059093027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880192615ef6928492910190616aa3565b506020828101518051615f0f9260018501920190616aa3565b5060408201516002820180546001600160a01b0319166001600160a01b0390921691909117905560608201518051615f51916003840191602090910190616aa3565b50608091909101516004909101805460ff191691151591909117905561389f8583866164d8565b600080615f8861312a8686615c04565b600081815260086020908152604080832080548251818502810185019093528083529495506060949193909284015b828210156160625760008481526020908190208301805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561604e5780601f106160235761010080835404028352916020019161604e565b820191906000526020600020905b81548152906001019060200180831161603157829003601f168201915b505050505081526020019060010190615fb7565b509293506000925050505b81518110156160ac5761609382828151811061608557fe5b602002602001015186615ae7565b156160a457600193505050506160b4565b60010161606d565b506000925050505b9392505050565b6000806160c783615743565b60008181526003602090815260408083205460029092529091206005015491925060ff1690158180156160f75750805b95945050505050565b616108616a64565b60006161148686615720565b905061611e616b98565b506040805160a08101825287815260208082018790526001600160a01b0386169282019290925260608101879052600160808201819052600780549182018155600052815180519293849360059093027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688019261619e9284920190616aa3565b5060208281015180516161b79260018501920190616aa3565b5060408201516002820180546001600160a01b0319166001600160a01b03909216919091179055606082015180516161f9916003840191602090910190616aa3565b50608091909101516004909101805460ff191691151591909117905561621d616a64565b600083815260066020908152604091829020825160e081018452815460ff1615158152600180830180548651600261010094831615949094026000190190911692909204601f81018690048602830186019096528582529194929385810193919291908301828280156162d15780601f106162a6576101008083540402835291602001916162d1565b820191906000526020600020905b8154815290600101906020018083116162b457829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156163875780601f1061635c57610100808354040283529160200191616387565b820191906000526020600020905b81548152906001019060200180831161636a57829003601f168201915b505050918352505060058201805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815293820193929183018282801561641b5780601f106163f05761010080835404028352916020019161641b565b820191906000526020600020905b8154815290600101906020018083116163fe57829003601f168201915b5050509183525050600691820154602091820152604083810180516001908101909152600088815293835292208351815460ff1916901515178155838201518051949550859491936164739390850192910190616aa3565b506040820151600282015560608201516003820155608082015180516164a3916004840191602090910190616aa3565b5060a082015180516164bf916005840191602090910190616aa3565b5060c09190910151600690910155979650505050505050565b60006164e761312a8585615c04565b60008181526008602090815260408220805460018101825590835291819020855193945061389f9392019190850190616aa3565b616523616a64565b600082815260066020908152604091829020825160e081018452815460ff1615158152600180830180548651600261010094831615949094026000190190911692909204601f81018690048602830186019096528582529194929385810193919291908301828280156165d75780601f106165ac576101008083540402835291602001916165d7565b820191906000526020600020905b8154815290600101906020018083116165ba57829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561668d5780601f106166625761010080835404028352916020019161668d565b820191906000526020600020905b81548152906001019060200180831161667057829003601f168201915b505050918352505060058201805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529382019392918301828280156167215780601f106166f657610100808354040283529160200191616721565b820191906000526020600020905b81548152906001019060200180831161670457829003601f168201915b5050509183525050600691820154602091820152600160c08401819052600086815292825260409092208351815460ff1916901515178155838201518051949550859491936167769390850192910190616aa3565b506040820151600282015560608201516003820155608082015180516167a6916004840191602090910190616aa3565b5060a082015180516167c2916005840191602090910190616aa3565b5060c082015181600601559050505050565b606060006167e28484615720565b60008181526006602052604090205490915060ff1661681157505060408051602081019091526000815261573d565b616819616a64565b600082815260066020908152604091829020825160e081018452815460ff1615158152600180830180548651600261010094831615949094026000190190911692909204601f81018690048602830186019096528582529194929385810193919291908301828280156168cd5780601f106168a2576101008083540402835291602001916168cd565b820191906000526020600020905b8154815290600101906020018083116168b057829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156169835780601f1061695857610100808354040283529160200191616983565b820191906000526020600020905b81548152906001019060200180831161696657829003601f168201915b505050918352505060058201805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152938201939291830182828015616a175780601f106169ec57610100808354040283529160200191616a17565b820191906000526020600020905b8154815290600101906020018083116169fa57829003601f168201915b5050505050815260200160068201548152505090508060c0015160001415616a4c57616a438585615c04565b9250505061573d565b50506040805160208101909152600081529392505050565b6040518060e001604052806000151581526020016060815260200160008152602001600081526020016060815260200160608152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10616ae457805160ff1916838001178555616b11565b82800160010185558215616b11579182015b82811115616b11578251825591602001919060010190616af6565b50616b1d929150616bd2565b5090565b6040518061012001604052806060815260200160608152602001606081526020016060815260200160006001600160a01b0316815260200160001515815260200160008152602001600081526020016000151581525090565b508054600082559060005260206000209081019061520c9190616bec565b6040518060a00160405280606081526020016060815260200160006001600160a01b03168152602001606081526020016000151581525090565b61233091905b80821115616b1d5760008155600101616bd8565b61233091905b80821115616b1d576000616c068282616c0f565b50600101616bf2565b50805460018160011615610100020316600290046000825580601f10616c35575061520c565b601f01602090049060005260206000209081019061520c9190616bd256fe63616e206e6f74207365742061646d696e206e6f64652c696e697469616c697a652066696e69736865642ee2079629d960c01f0a2e7d2ceb7c4fbe84915ec15bfdb1ea6412f0c92333aaf763616e206e6f7420696e766f6b65206d6574686f64206578636570742073657441646d696e2066756e6374696f6e2c696e697469616c697a652068617665206e6f742066696e69736865642ee88a82e782b9e5b7b2e7bb8fe698afe88194e79b9fe5889be5a78be88a82e782b9a2646970667358221220ddfd1af5b434cabe3d1143edc772954b8c147b45bbfe18a8647a7a415abd667264736f6c63430006000033",
    57  }
    58  
    59  // PermissionABI is the input ABI used to generate the binding from.
    60  // Deprecated: Use PermissionMetaData.ABI instead.
    61  var PermissionABI = PermissionMetaData.ABI
    62  
    63  // Deprecated: Use PermissionMetaData.Sigs instead.
    64  // PermissionFuncSigs maps the 4-byte function signature to its string representation.
    65  var PermissionFuncSigs = PermissionMetaData.Sigs
    66  
    67  // PermissionBin is the compiled bytecode used for deploying new contracts.
    68  // Deprecated: Use PermissionMetaData.Bin instead.
    69  var PermissionBin = PermissionMetaData.Bin
    70  
    71  // DeployPermission deploys a new Ethereum contract, binding an instance of Permission to it.
    72  func DeployPermission(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Permission, error) {
    73  	parsed, err := PermissionMetaData.GetAbi()
    74  	if err != nil {
    75  		return common.Address{}, nil, nil, err
    76  	}
    77  	if parsed == nil {
    78  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
    79  	}
    80  
    81  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PermissionBin), backend)
    82  	if err != nil {
    83  		return common.Address{}, nil, nil, err
    84  	}
    85  	return address, tx, &Permission{PermissionCaller: PermissionCaller{contract: contract}, PermissionTransactor: PermissionTransactor{contract: contract}, PermissionFilterer: PermissionFilterer{contract: contract}}, nil
    86  }
    87  
    88  // Permission is an auto generated Go binding around an Ethereum contract.
    89  type Permission struct {
    90  	PermissionCaller     // Read-only binding to the contract
    91  	PermissionTransactor // Write-only binding to the contract
    92  	PermissionFilterer   // Log filterer for contract events
    93  }
    94  
    95  // PermissionCaller is an auto generated read-only Go binding around an Ethereum contract.
    96  type PermissionCaller struct {
    97  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    98  }
    99  
   100  // PermissionTransactor is an auto generated write-only Go binding around an Ethereum contract.
   101  type PermissionTransactor struct {
   102  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   103  }
   104  
   105  // PermissionFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   106  type PermissionFilterer struct {
   107  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   108  }
   109  
   110  // PermissionSession is an auto generated Go binding around an Ethereum contract,
   111  // with pre-set call and transact options.
   112  type PermissionSession struct {
   113  	Contract     *Permission       // Generic contract binding to set the session for
   114  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   115  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   116  }
   117  
   118  // PermissionCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   119  // with pre-set call options.
   120  type PermissionCallerSession struct {
   121  	Contract *PermissionCaller // Generic contract caller binding to set the session for
   122  	CallOpts bind.CallOpts     // Call options to use throughout this session
   123  }
   124  
   125  // PermissionTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   126  // with pre-set transact options.
   127  type PermissionTransactorSession struct {
   128  	Contract     *PermissionTransactor // Generic contract transactor binding to set the session for
   129  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
   130  }
   131  
   132  // PermissionRaw is an auto generated low-level Go binding around an Ethereum contract.
   133  type PermissionRaw struct {
   134  	Contract *Permission // Generic contract binding to access the raw methods on
   135  }
   136  
   137  // PermissionCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   138  type PermissionCallerRaw struct {
   139  	Contract *PermissionCaller // Generic read-only contract binding to access the raw methods on
   140  }
   141  
   142  // PermissionTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   143  type PermissionTransactorRaw struct {
   144  	Contract *PermissionTransactor // Generic write-only contract binding to access the raw methods on
   145  }
   146  
   147  // NewPermission creates a new instance of Permission, bound to a specific deployed contract.
   148  func NewPermission(address common.Address, backend bind.ContractBackend) (*Permission, error) {
   149  	contract, err := bindPermission(address, backend, backend, backend)
   150  	if err != nil {
   151  		return nil, err
   152  	}
   153  	return &Permission{PermissionCaller: PermissionCaller{contract: contract}, PermissionTransactor: PermissionTransactor{contract: contract}, PermissionFilterer: PermissionFilterer{contract: contract}}, nil
   154  }
   155  
   156  // NewPermissionCaller creates a new read-only instance of Permission, bound to a specific deployed contract.
   157  func NewPermissionCaller(address common.Address, caller bind.ContractCaller) (*PermissionCaller, error) {
   158  	contract, err := bindPermission(address, caller, nil, nil)
   159  	if err != nil {
   160  		return nil, err
   161  	}
   162  	return &PermissionCaller{contract: contract}, nil
   163  }
   164  
   165  // NewPermissionTransactor creates a new write-only instance of Permission, bound to a specific deployed contract.
   166  func NewPermissionTransactor(address common.Address, transactor bind.ContractTransactor) (*PermissionTransactor, error) {
   167  	contract, err := bindPermission(address, nil, transactor, nil)
   168  	if err != nil {
   169  		return nil, err
   170  	}
   171  	return &PermissionTransactor{contract: contract}, nil
   172  }
   173  
   174  // NewPermissionFilterer creates a new log filterer instance of Permission, bound to a specific deployed contract.
   175  func NewPermissionFilterer(address common.Address, filterer bind.ContractFilterer) (*PermissionFilterer, error) {
   176  	contract, err := bindPermission(address, nil, nil, filterer)
   177  	if err != nil {
   178  		return nil, err
   179  	}
   180  	return &PermissionFilterer{contract: contract}, nil
   181  }
   182  
   183  // bindPermission binds a generic wrapper to an already deployed contract.
   184  func bindPermission(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   185  	parsed, err := abi.JSON(strings.NewReader(PermissionABI))
   186  	if err != nil {
   187  		return nil, err
   188  	}
   189  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   190  }
   191  
   192  // Call invokes the (constant) contract method with params as input values and
   193  // sets the output to result. The result type might be a single field for simple
   194  // returns, a slice of interfaces for anonymous returns and a struct for named
   195  // returns.
   196  func (_Permission *PermissionRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   197  	return _Permission.Contract.PermissionCaller.contract.Call(opts, result, method, params...)
   198  }
   199  
   200  // Transfer initiates a plain transaction to move funds to the contract, calling
   201  // its default method if one is available.
   202  func (_Permission *PermissionRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   203  	return _Permission.Contract.PermissionTransactor.contract.Transfer(opts)
   204  }
   205  
   206  // Transact invokes the (paid) contract method with params as input values.
   207  func (_Permission *PermissionRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   208  	return _Permission.Contract.PermissionTransactor.contract.Transact(opts, method, params...)
   209  }
   210  
   211  // Call invokes the (constant) contract method with params as input values and
   212  // sets the output to result. The result type might be a single field for simple
   213  // returns, a slice of interfaces for anonymous returns and a struct for named
   214  // returns.
   215  func (_Permission *PermissionCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   216  	return _Permission.Contract.contract.Call(opts, result, method, params...)
   217  }
   218  
   219  // Transfer initiates a plain transaction to move funds to the contract, calling
   220  // its default method if one is available.
   221  func (_Permission *PermissionTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   222  	return _Permission.Contract.contract.Transfer(opts)
   223  }
   224  
   225  // Transact invokes the (paid) contract method with params as input values.
   226  func (_Permission *PermissionTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   227  	return _Permission.Contract.contract.Transact(opts, method, params...)
   228  }
   229  
   230  // GetAdminCount is a free data retrieval call binding the contract method 0x8b7bf3eb.
   231  //
   232  // Solidity: function getAdminCount() view returns(uint256)
   233  func (_Permission *PermissionCaller) GetAdminCount(opts *bind.CallOpts) (*big.Int, error) {
   234  	var out []interface{}
   235  	err := _Permission.contract.Call(opts, &out, "getAdminCount")
   236  
   237  	if err != nil {
   238  		return *new(*big.Int), err
   239  	}
   240  
   241  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   242  
   243  	return out0, err
   244  
   245  }
   246  
   247  // GetAdminCount is a free data retrieval call binding the contract method 0x8b7bf3eb.
   248  //
   249  // Solidity: function getAdminCount() view returns(uint256)
   250  func (_Permission *PermissionSession) GetAdminCount() (*big.Int, error) {
   251  	return _Permission.Contract.GetAdminCount(&_Permission.CallOpts)
   252  }
   253  
   254  // GetAdminCount is a free data retrieval call binding the contract method 0x8b7bf3eb.
   255  //
   256  // Solidity: function getAdminCount() view returns(uint256)
   257  func (_Permission *PermissionCallerSession) GetAdminCount() (*big.Int, error) {
   258  	return _Permission.Contract.GetAdminCount(&_Permission.CallOpts)
   259  }
   260  
   261  // GetAllStatingRecord is a free data retrieval call binding the contract method 0x24781773.
   262  //
   263  // Solidity: function getAllStatingRecord() view returns(string)
   264  func (_Permission *PermissionCaller) GetAllStatingRecord(opts *bind.CallOpts) (string, error) {
   265  	var out []interface{}
   266  	err := _Permission.contract.Call(opts, &out, "getAllStatingRecord")
   267  
   268  	if err != nil {
   269  		return *new(string), err
   270  	}
   271  
   272  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
   273  
   274  	return out0, err
   275  
   276  }
   277  
   278  // GetAllStatingRecord is a free data retrieval call binding the contract method 0x24781773.
   279  //
   280  // Solidity: function getAllStatingRecord() view returns(string)
   281  func (_Permission *PermissionSession) GetAllStatingRecord() (string, error) {
   282  	return _Permission.Contract.GetAllStatingRecord(&_Permission.CallOpts)
   283  }
   284  
   285  // GetAllStatingRecord is a free data retrieval call binding the contract method 0x24781773.
   286  //
   287  // Solidity: function getAllStatingRecord() view returns(string)
   288  func (_Permission *PermissionCallerSession) GetAllStatingRecord() (string, error) {
   289  	return _Permission.Contract.GetAllStatingRecord(&_Permission.CallOpts)
   290  }
   291  
   292  // GetInfoByName is a free data retrieval call binding the contract method 0xc88120d6.
   293  //
   294  // Solidity: function getInfoByName(string _nodeName) view returns(string, string, string, string, address, uint256, bool, uint256)
   295  func (_Permission *PermissionCaller) GetInfoByName(opts *bind.CallOpts, _nodeName string) (string, string, string, string, common.Address, *big.Int, bool, *big.Int, error) {
   296  	var out []interface{}
   297  	err := _Permission.contract.Call(opts, &out, "getInfoByName", _nodeName)
   298  
   299  	if err != nil {
   300  		return *new(string), *new(string), *new(string), *new(string), *new(common.Address), *new(*big.Int), *new(bool), *new(*big.Int), err
   301  	}
   302  
   303  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
   304  	out1 := *abi.ConvertType(out[1], new(string)).(*string)
   305  	out2 := *abi.ConvertType(out[2], new(string)).(*string)
   306  	out3 := *abi.ConvertType(out[3], new(string)).(*string)
   307  	out4 := *abi.ConvertType(out[4], new(common.Address)).(*common.Address)
   308  	out5 := *abi.ConvertType(out[5], new(*big.Int)).(**big.Int)
   309  	out6 := *abi.ConvertType(out[6], new(bool)).(*bool)
   310  	out7 := *abi.ConvertType(out[7], new(*big.Int)).(**big.Int)
   311  
   312  	return out0, out1, out2, out3, out4, out5, out6, out7, err
   313  
   314  }
   315  
   316  // GetInfoByName is a free data retrieval call binding the contract method 0xc88120d6.
   317  //
   318  // Solidity: function getInfoByName(string _nodeName) view returns(string, string, string, string, address, uint256, bool, uint256)
   319  func (_Permission *PermissionSession) GetInfoByName(_nodeName string) (string, string, string, string, common.Address, *big.Int, bool, *big.Int, error) {
   320  	return _Permission.Contract.GetInfoByName(&_Permission.CallOpts, _nodeName)
   321  }
   322  
   323  // GetInfoByName is a free data retrieval call binding the contract method 0xc88120d6.
   324  //
   325  // Solidity: function getInfoByName(string _nodeName) view returns(string, string, string, string, address, uint256, bool, uint256)
   326  func (_Permission *PermissionCallerSession) GetInfoByName(_nodeName string) (string, string, string, string, common.Address, *big.Int, bool, *big.Int, error) {
   327  	return _Permission.Contract.GetInfoByName(&_Permission.CallOpts, _nodeName)
   328  }
   329  
   330  // GetLastStatistics is a free data retrieval call binding the contract method 0x89e93d71.
   331  //
   332  // Solidity: function getLastStatistics(string _nodeId, string _opCode) view returns(uint256, uint256, string, string, uint256)
   333  func (_Permission *PermissionCaller) GetLastStatistics(opts *bind.CallOpts, _nodeId string, _opCode string) (*big.Int, *big.Int, string, string, *big.Int, error) {
   334  	var out []interface{}
   335  	err := _Permission.contract.Call(opts, &out, "getLastStatistics", _nodeId, _opCode)
   336  
   337  	if err != nil {
   338  		return *new(*big.Int), *new(*big.Int), *new(string), *new(string), *new(*big.Int), err
   339  	}
   340  
   341  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   342  	out1 := *abi.ConvertType(out[1], new(*big.Int)).(**big.Int)
   343  	out2 := *abi.ConvertType(out[2], new(string)).(*string)
   344  	out3 := *abi.ConvertType(out[3], new(string)).(*string)
   345  	out4 := *abi.ConvertType(out[4], new(*big.Int)).(**big.Int)
   346  
   347  	return out0, out1, out2, out3, out4, err
   348  
   349  }
   350  
   351  // GetLastStatistics is a free data retrieval call binding the contract method 0x89e93d71.
   352  //
   353  // Solidity: function getLastStatistics(string _nodeId, string _opCode) view returns(uint256, uint256, string, string, uint256)
   354  func (_Permission *PermissionSession) GetLastStatistics(_nodeId string, _opCode string) (*big.Int, *big.Int, string, string, *big.Int, error) {
   355  	return _Permission.Contract.GetLastStatistics(&_Permission.CallOpts, _nodeId, _opCode)
   356  }
   357  
   358  // GetLastStatistics is a free data retrieval call binding the contract method 0x89e93d71.
   359  //
   360  // Solidity: function getLastStatistics(string _nodeId, string _opCode) view returns(uint256, uint256, string, string, uint256)
   361  func (_Permission *PermissionCallerSession) GetLastStatistics(_nodeId string, _opCode string) (*big.Int, *big.Int, string, string, *big.Int, error) {
   362  	return _Permission.Contract.GetLastStatistics(&_Permission.CallOpts, _nodeId, _opCode)
   363  }
   364  
   365  // GetNodeByRole is a free data retrieval call binding the contract method 0xd5eda3b1.
   366  //
   367  // Solidity: function getNodeByRole(uint256 _role) view returns(string)
   368  func (_Permission *PermissionCaller) GetNodeByRole(opts *bind.CallOpts, _role *big.Int) (string, error) {
   369  	var out []interface{}
   370  	err := _Permission.contract.Call(opts, &out, "getNodeByRole", _role)
   371  
   372  	if err != nil {
   373  		return *new(string), err
   374  	}
   375  
   376  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
   377  
   378  	return out0, err
   379  
   380  }
   381  
   382  // GetNodeByRole is a free data retrieval call binding the contract method 0xd5eda3b1.
   383  //
   384  // Solidity: function getNodeByRole(uint256 _role) view returns(string)
   385  func (_Permission *PermissionSession) GetNodeByRole(_role *big.Int) (string, error) {
   386  	return _Permission.Contract.GetNodeByRole(&_Permission.CallOpts, _role)
   387  }
   388  
   389  // GetNodeByRole is a free data retrieval call binding the contract method 0xd5eda3b1.
   390  //
   391  // Solidity: function getNodeByRole(uint256 _role) view returns(string)
   392  func (_Permission *PermissionCallerSession) GetNodeByRole(_role *big.Int) (string, error) {
   393  	return _Permission.Contract.GetNodeByRole(&_Permission.CallOpts, _role)
   394  }
   395  
   396  // GetNodeMap is a free data retrieval call binding the contract method 0x6fdde422.
   397  //
   398  // Solidity: function getNodeMap(string _nodeId) view returns(string, string, string, string, address, uint256, bool, uint256)
   399  func (_Permission *PermissionCaller) GetNodeMap(opts *bind.CallOpts, _nodeId string) (string, string, string, string, common.Address, *big.Int, bool, *big.Int, error) {
   400  	var out []interface{}
   401  	err := _Permission.contract.Call(opts, &out, "getNodeMap", _nodeId)
   402  
   403  	if err != nil {
   404  		return *new(string), *new(string), *new(string), *new(string), *new(common.Address), *new(*big.Int), *new(bool), *new(*big.Int), err
   405  	}
   406  
   407  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
   408  	out1 := *abi.ConvertType(out[1], new(string)).(*string)
   409  	out2 := *abi.ConvertType(out[2], new(string)).(*string)
   410  	out3 := *abi.ConvertType(out[3], new(string)).(*string)
   411  	out4 := *abi.ConvertType(out[4], new(common.Address)).(*common.Address)
   412  	out5 := *abi.ConvertType(out[5], new(*big.Int)).(**big.Int)
   413  	out6 := *abi.ConvertType(out[6], new(bool)).(*bool)
   414  	out7 := *abi.ConvertType(out[7], new(*big.Int)).(**big.Int)
   415  
   416  	return out0, out1, out2, out3, out4, out5, out6, out7, err
   417  
   418  }
   419  
   420  // GetNodeMap is a free data retrieval call binding the contract method 0x6fdde422.
   421  //
   422  // Solidity: function getNodeMap(string _nodeId) view returns(string, string, string, string, address, uint256, bool, uint256)
   423  func (_Permission *PermissionSession) GetNodeMap(_nodeId string) (string, string, string, string, common.Address, *big.Int, bool, *big.Int, error) {
   424  	return _Permission.Contract.GetNodeMap(&_Permission.CallOpts, _nodeId)
   425  }
   426  
   427  // GetNodeMap is a free data retrieval call binding the contract method 0x6fdde422.
   428  //
   429  // Solidity: function getNodeMap(string _nodeId) view returns(string, string, string, string, address, uint256, bool, uint256)
   430  func (_Permission *PermissionCallerSession) GetNodeMap(_nodeId string) (string, string, string, string, common.Address, *big.Int, bool, *big.Int, error) {
   431  	return _Permission.Contract.GetNodeMap(&_Permission.CallOpts, _nodeId)
   432  }
   433  
   434  // GetOriginators is a free data retrieval call binding the contract method 0xedbfe56d.
   435  //
   436  // Solidity: function getOriginators() view returns(address[])
   437  func (_Permission *PermissionCaller) GetOriginators(opts *bind.CallOpts) ([]common.Address, error) {
   438  	var out []interface{}
   439  	err := _Permission.contract.Call(opts, &out, "getOriginators")
   440  
   441  	if err != nil {
   442  		return *new([]common.Address), err
   443  	}
   444  
   445  	out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address)
   446  
   447  	return out0, err
   448  
   449  }
   450  
   451  // GetOriginators is a free data retrieval call binding the contract method 0xedbfe56d.
   452  //
   453  // Solidity: function getOriginators() view returns(address[])
   454  func (_Permission *PermissionSession) GetOriginators() ([]common.Address, error) {
   455  	return _Permission.Contract.GetOriginators(&_Permission.CallOpts)
   456  }
   457  
   458  // GetOriginators is a free data retrieval call binding the contract method 0xedbfe56d.
   459  //
   460  // Solidity: function getOriginators() view returns(address[])
   461  func (_Permission *PermissionCallerSession) GetOriginators() ([]common.Address, error) {
   462  	return _Permission.Contract.GetOriginators(&_Permission.CallOpts)
   463  }
   464  
   465  // IsAdmin is a free data retrieval call binding the contract method 0x72d14480.
   466  //
   467  // Solidity: function isAdmin(bytes32 _nodeHash) view returns(bool)
   468  func (_Permission *PermissionCaller) IsAdmin(opts *bind.CallOpts, _nodeHash [32]byte) (bool, error) {
   469  	var out []interface{}
   470  	err := _Permission.contract.Call(opts, &out, "isAdmin", _nodeHash)
   471  
   472  	if err != nil {
   473  		return *new(bool), err
   474  	}
   475  
   476  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   477  
   478  	return out0, err
   479  
   480  }
   481  
   482  // IsAdmin is a free data retrieval call binding the contract method 0x72d14480.
   483  //
   484  // Solidity: function isAdmin(bytes32 _nodeHash) view returns(bool)
   485  func (_Permission *PermissionSession) IsAdmin(_nodeHash [32]byte) (bool, error) {
   486  	return _Permission.Contract.IsAdmin(&_Permission.CallOpts, _nodeHash)
   487  }
   488  
   489  // IsAdmin is a free data retrieval call binding the contract method 0x72d14480.
   490  //
   491  // Solidity: function isAdmin(bytes32 _nodeHash) view returns(bool)
   492  func (_Permission *PermissionCallerSession) IsAdmin(_nodeHash [32]byte) (bool, error) {
   493  	return _Permission.Contract.IsAdmin(&_Permission.CallOpts, _nodeHash)
   494  }
   495  
   496  // IsInitFinished is a free data retrieval call binding the contract method 0xa247e4dd.
   497  //
   498  // Solidity: function isInitFinished() view returns(bool)
   499  func (_Permission *PermissionCaller) IsInitFinished(opts *bind.CallOpts) (bool, error) {
   500  	var out []interface{}
   501  	err := _Permission.contract.Call(opts, &out, "isInitFinished")
   502  
   503  	if err != nil {
   504  		return *new(bool), err
   505  	}
   506  
   507  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   508  
   509  	return out0, err
   510  
   511  }
   512  
   513  // IsInitFinished is a free data retrieval call binding the contract method 0xa247e4dd.
   514  //
   515  // Solidity: function isInitFinished() view returns(bool)
   516  func (_Permission *PermissionSession) IsInitFinished() (bool, error) {
   517  	return _Permission.Contract.IsInitFinished(&_Permission.CallOpts)
   518  }
   519  
   520  // IsInitFinished is a free data retrieval call binding the contract method 0xa247e4dd.
   521  //
   522  // Solidity: function isInitFinished() view returns(bool)
   523  func (_Permission *PermissionCallerSession) IsInitFinished() (bool, error) {
   524  	return _Permission.Contract.IsInitFinished(&_Permission.CallOpts)
   525  }
   526  
   527  // NodeExists is a free data retrieval call binding the contract method 0x1b128f61.
   528  //
   529  // Solidity: function nodeExists(string _nodeId) view returns(bool)
   530  func (_Permission *PermissionCaller) NodeExists(opts *bind.CallOpts, _nodeId string) (bool, error) {
   531  	var out []interface{}
   532  	err := _Permission.contract.Call(opts, &out, "nodeExists", _nodeId)
   533  
   534  	if err != nil {
   535  		return *new(bool), err
   536  	}
   537  
   538  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   539  
   540  	return out0, err
   541  
   542  }
   543  
   544  // NodeExists is a free data retrieval call binding the contract method 0x1b128f61.
   545  //
   546  // Solidity: function nodeExists(string _nodeId) view returns(bool)
   547  func (_Permission *PermissionSession) NodeExists(_nodeId string) (bool, error) {
   548  	return _Permission.Contract.NodeExists(&_Permission.CallOpts, _nodeId)
   549  }
   550  
   551  // NodeExists is a free data retrieval call binding the contract method 0x1b128f61.
   552  //
   553  // Solidity: function nodeExists(string _nodeId) view returns(bool)
   554  func (_Permission *PermissionCallerSession) NodeExists(_nodeId string) (bool, error) {
   555  	return _Permission.Contract.NodeExists(&_Permission.CallOpts, _nodeId)
   556  }
   557  
   558  // Disagree is a paid mutator transaction binding the contract method 0x2d0207f8.
   559  //
   560  // Solidity: function disagree(string _nodeId, string _voterNodeId, string _opCode) payable returns()
   561  func (_Permission *PermissionTransactor) Disagree(opts *bind.TransactOpts, _nodeId string, _voterNodeId string, _opCode string) (*types.Transaction, error) {
   562  	return _Permission.contract.Transact(opts, "disagree", _nodeId, _voterNodeId, _opCode)
   563  }
   564  
   565  // Disagree is a paid mutator transaction binding the contract method 0x2d0207f8.
   566  //
   567  // Solidity: function disagree(string _nodeId, string _voterNodeId, string _opCode) payable returns()
   568  func (_Permission *PermissionSession) Disagree(_nodeId string, _voterNodeId string, _opCode string) (*types.Transaction, error) {
   569  	return _Permission.Contract.Disagree(&_Permission.TransactOpts, _nodeId, _voterNodeId, _opCode)
   570  }
   571  
   572  // Disagree is a paid mutator transaction binding the contract method 0x2d0207f8.
   573  //
   574  // Solidity: function disagree(string _nodeId, string _voterNodeId, string _opCode) payable returns()
   575  func (_Permission *PermissionTransactorSession) Disagree(_nodeId string, _voterNodeId string, _opCode string) (*types.Transaction, error) {
   576  	return _Permission.Contract.Disagree(&_Permission.TransactOpts, _nodeId, _voterNodeId, _opCode)
   577  }
   578  
   579  // Exit is a paid mutator transaction binding the contract method 0xe7fb5388.
   580  //
   581  // Solidity: function exit(string _nodeId) returns()
   582  func (_Permission *PermissionTransactor) Exit(opts *bind.TransactOpts, _nodeId string) (*types.Transaction, error) {
   583  	return _Permission.contract.Transact(opts, "exit", _nodeId)
   584  }
   585  
   586  // Exit is a paid mutator transaction binding the contract method 0xe7fb5388.
   587  //
   588  // Solidity: function exit(string _nodeId) returns()
   589  func (_Permission *PermissionSession) Exit(_nodeId string) (*types.Transaction, error) {
   590  	return _Permission.Contract.Exit(&_Permission.TransactOpts, _nodeId)
   591  }
   592  
   593  // Exit is a paid mutator transaction binding the contract method 0xe7fb5388.
   594  //
   595  // Solidity: function exit(string _nodeId) returns()
   596  func (_Permission *PermissionTransactorSession) Exit(_nodeId string) (*types.Transaction, error) {
   597  	return _Permission.Contract.Exit(&_Permission.TransactOpts, _nodeId)
   598  }
   599  
   600  // InitFinish is a paid mutator transaction binding the contract method 0x99439b69.
   601  //
   602  // Solidity: function initFinish() returns()
   603  func (_Permission *PermissionTransactor) InitFinish(opts *bind.TransactOpts) (*types.Transaction, error) {
   604  	return _Permission.contract.Transact(opts, "initFinish")
   605  }
   606  
   607  // InitFinish is a paid mutator transaction binding the contract method 0x99439b69.
   608  //
   609  // Solidity: function initFinish() returns()
   610  func (_Permission *PermissionSession) InitFinish() (*types.Transaction, error) {
   611  	return _Permission.Contract.InitFinish(&_Permission.TransactOpts)
   612  }
   613  
   614  // InitFinish is a paid mutator transaction binding the contract method 0x99439b69.
   615  //
   616  // Solidity: function initFinish() returns()
   617  func (_Permission *PermissionTransactorSession) InitFinish() (*types.Transaction, error) {
   618  	return _Permission.Contract.InitFinish(&_Permission.TransactOpts)
   619  }
   620  
   621  // MakeProposeForAddNewNode is a paid mutator transaction binding the contract method 0x05247ce6.
   622  //
   623  // Solidity: function makeProposeForAddNewNode(string _nodeId, string _ip, string _port, string nodeName, address _nodeAddress, string _proposeNodeId) payable returns()
   624  func (_Permission *PermissionTransactor) MakeProposeForAddNewNode(opts *bind.TransactOpts, _nodeId string, _ip string, _port string, nodeName string, _nodeAddress common.Address, _proposeNodeId string) (*types.Transaction, error) {
   625  	return _Permission.contract.Transact(opts, "makeProposeForAddNewNode", _nodeId, _ip, _port, nodeName, _nodeAddress, _proposeNodeId)
   626  }
   627  
   628  // MakeProposeForAddNewNode is a paid mutator transaction binding the contract method 0x05247ce6.
   629  //
   630  // Solidity: function makeProposeForAddNewNode(string _nodeId, string _ip, string _port, string nodeName, address _nodeAddress, string _proposeNodeId) payable returns()
   631  func (_Permission *PermissionSession) MakeProposeForAddNewNode(_nodeId string, _ip string, _port string, nodeName string, _nodeAddress common.Address, _proposeNodeId string) (*types.Transaction, error) {
   632  	return _Permission.Contract.MakeProposeForAddNewNode(&_Permission.TransactOpts, _nodeId, _ip, _port, nodeName, _nodeAddress, _proposeNodeId)
   633  }
   634  
   635  // MakeProposeForAddNewNode is a paid mutator transaction binding the contract method 0x05247ce6.
   636  //
   637  // Solidity: function makeProposeForAddNewNode(string _nodeId, string _ip, string _port, string nodeName, address _nodeAddress, string _proposeNodeId) payable returns()
   638  func (_Permission *PermissionTransactorSession) MakeProposeForAddNewNode(_nodeId string, _ip string, _port string, nodeName string, _nodeAddress common.Address, _proposeNodeId string) (*types.Transaction, error) {
   639  	return _Permission.Contract.MakeProposeForAddNewNode(&_Permission.TransactOpts, _nodeId, _ip, _port, nodeName, _nodeAddress, _proposeNodeId)
   640  }
   641  
   642  // MakeProposeForRoleChange is a paid mutator transaction binding the contract method 0x2566dfb0.
   643  //
   644  // Solidity: function makeProposeForRoleChange(string _nodeId, string _opCode, string _voterNodeId) payable returns()
   645  func (_Permission *PermissionTransactor) MakeProposeForRoleChange(opts *bind.TransactOpts, _nodeId string, _opCode string, _voterNodeId string) (*types.Transaction, error) {
   646  	return _Permission.contract.Transact(opts, "makeProposeForRoleChange", _nodeId, _opCode, _voterNodeId)
   647  }
   648  
   649  // MakeProposeForRoleChange is a paid mutator transaction binding the contract method 0x2566dfb0.
   650  //
   651  // Solidity: function makeProposeForRoleChange(string _nodeId, string _opCode, string _voterNodeId) payable returns()
   652  func (_Permission *PermissionSession) MakeProposeForRoleChange(_nodeId string, _opCode string, _voterNodeId string) (*types.Transaction, error) {
   653  	return _Permission.Contract.MakeProposeForRoleChange(&_Permission.TransactOpts, _nodeId, _opCode, _voterNodeId)
   654  }
   655  
   656  // MakeProposeForRoleChange is a paid mutator transaction binding the contract method 0x2566dfb0.
   657  //
   658  // Solidity: function makeProposeForRoleChange(string _nodeId, string _opCode, string _voterNodeId) payable returns()
   659  func (_Permission *PermissionTransactorSession) MakeProposeForRoleChange(_nodeId string, _opCode string, _voterNodeId string) (*types.Transaction, error) {
   660  	return _Permission.Contract.MakeProposeForRoleChange(&_Permission.TransactOpts, _nodeId, _opCode, _voterNodeId)
   661  }
   662  
   663  // SetAdminNode is a paid mutator transaction binding the contract method 0xbbe25f2c.
   664  //
   665  // Solidity: function setAdminNode(string _nodeId, string _ip, string _port, string _nodeName, address _nodeAddress) returns()
   666  func (_Permission *PermissionTransactor) SetAdminNode(opts *bind.TransactOpts, _nodeId string, _ip string, _port string, _nodeName string, _nodeAddress common.Address) (*types.Transaction, error) {
   667  	return _Permission.contract.Transact(opts, "setAdminNode", _nodeId, _ip, _port, _nodeName, _nodeAddress)
   668  }
   669  
   670  // SetAdminNode is a paid mutator transaction binding the contract method 0xbbe25f2c.
   671  //
   672  // Solidity: function setAdminNode(string _nodeId, string _ip, string _port, string _nodeName, address _nodeAddress) returns()
   673  func (_Permission *PermissionSession) SetAdminNode(_nodeId string, _ip string, _port string, _nodeName string, _nodeAddress common.Address) (*types.Transaction, error) {
   674  	return _Permission.Contract.SetAdminNode(&_Permission.TransactOpts, _nodeId, _ip, _port, _nodeName, _nodeAddress)
   675  }
   676  
   677  // SetAdminNode is a paid mutator transaction binding the contract method 0xbbe25f2c.
   678  //
   679  // Solidity: function setAdminNode(string _nodeId, string _ip, string _port, string _nodeName, address _nodeAddress) returns()
   680  func (_Permission *PermissionTransactorSession) SetAdminNode(_nodeId string, _ip string, _port string, _nodeName string, _nodeAddress common.Address) (*types.Transaction, error) {
   681  	return _Permission.Contract.SetAdminNode(&_Permission.TransactOpts, _nodeId, _ip, _port, _nodeName, _nodeAddress)
   682  }
   683  
   684  // UpdateNodeInfo is a paid mutator transaction binding the contract method 0x69c0fc6b.
   685  //
   686  // Solidity: function updateNodeInfo(string _nodeId, string _ip, string _port) returns()
   687  func (_Permission *PermissionTransactor) UpdateNodeInfo(opts *bind.TransactOpts, _nodeId string, _ip string, _port string) (*types.Transaction, error) {
   688  	return _Permission.contract.Transact(opts, "updateNodeInfo", _nodeId, _ip, _port)
   689  }
   690  
   691  // UpdateNodeInfo is a paid mutator transaction binding the contract method 0x69c0fc6b.
   692  //
   693  // Solidity: function updateNodeInfo(string _nodeId, string _ip, string _port) returns()
   694  func (_Permission *PermissionSession) UpdateNodeInfo(_nodeId string, _ip string, _port string) (*types.Transaction, error) {
   695  	return _Permission.Contract.UpdateNodeInfo(&_Permission.TransactOpts, _nodeId, _ip, _port)
   696  }
   697  
   698  // UpdateNodeInfo is a paid mutator transaction binding the contract method 0x69c0fc6b.
   699  //
   700  // Solidity: function updateNodeInfo(string _nodeId, string _ip, string _port) returns()
   701  func (_Permission *PermissionTransactorSession) UpdateNodeInfo(_nodeId string, _ip string, _port string) (*types.Transaction, error) {
   702  	return _Permission.Contract.UpdateNodeInfo(&_Permission.TransactOpts, _nodeId, _ip, _port)
   703  }
   704  
   705  // UpdateNodeName is a paid mutator transaction binding the contract method 0x1cd0b206.
   706  //
   707  // Solidity: function updateNodeName(string _nodeId, string _nodeName) returns()
   708  func (_Permission *PermissionTransactor) UpdateNodeName(opts *bind.TransactOpts, _nodeId string, _nodeName string) (*types.Transaction, error) {
   709  	return _Permission.contract.Transact(opts, "updateNodeName", _nodeId, _nodeName)
   710  }
   711  
   712  // UpdateNodeName is a paid mutator transaction binding the contract method 0x1cd0b206.
   713  //
   714  // Solidity: function updateNodeName(string _nodeId, string _nodeName) returns()
   715  func (_Permission *PermissionSession) UpdateNodeName(_nodeId string, _nodeName string) (*types.Transaction, error) {
   716  	return _Permission.Contract.UpdateNodeName(&_Permission.TransactOpts, _nodeId, _nodeName)
   717  }
   718  
   719  // UpdateNodeName is a paid mutator transaction binding the contract method 0x1cd0b206.
   720  //
   721  // Solidity: function updateNodeName(string _nodeId, string _nodeName) returns()
   722  func (_Permission *PermissionTransactorSession) UpdateNodeName(_nodeId string, _nodeName string) (*types.Transaction, error) {
   723  	return _Permission.Contract.UpdateNodeName(&_Permission.TransactOpts, _nodeId, _nodeName)
   724  }
   725  
   726  // VoteForNewNodeApply is a paid mutator transaction binding the contract method 0xf4812238.
   727  //
   728  // Solidity: function voteForNewNodeApply(string _nodeId, string _voterNodeId) payable returns()
   729  func (_Permission *PermissionTransactor) VoteForNewNodeApply(opts *bind.TransactOpts, _nodeId string, _voterNodeId string) (*types.Transaction, error) {
   730  	return _Permission.contract.Transact(opts, "voteForNewNodeApply", _nodeId, _voterNodeId)
   731  }
   732  
   733  // VoteForNewNodeApply is a paid mutator transaction binding the contract method 0xf4812238.
   734  //
   735  // Solidity: function voteForNewNodeApply(string _nodeId, string _voterNodeId) payable returns()
   736  func (_Permission *PermissionSession) VoteForNewNodeApply(_nodeId string, _voterNodeId string) (*types.Transaction, error) {
   737  	return _Permission.Contract.VoteForNewNodeApply(&_Permission.TransactOpts, _nodeId, _voterNodeId)
   738  }
   739  
   740  // VoteForNewNodeApply is a paid mutator transaction binding the contract method 0xf4812238.
   741  //
   742  // Solidity: function voteForNewNodeApply(string _nodeId, string _voterNodeId) payable returns()
   743  func (_Permission *PermissionTransactorSession) VoteForNewNodeApply(_nodeId string, _voterNodeId string) (*types.Transaction, error) {
   744  	return _Permission.Contract.VoteForNewNodeApply(&_Permission.TransactOpts, _nodeId, _voterNodeId)
   745  }
   746  
   747  // VoteForRoleChange is a paid mutator transaction binding the contract method 0x66aa2299.
   748  //
   749  // Solidity: function voteForRoleChange(string _nodeId, string _voterNodeId, string _opCode) payable returns()
   750  func (_Permission *PermissionTransactor) VoteForRoleChange(opts *bind.TransactOpts, _nodeId string, _voterNodeId string, _opCode string) (*types.Transaction, error) {
   751  	return _Permission.contract.Transact(opts, "voteForRoleChange", _nodeId, _voterNodeId, _opCode)
   752  }
   753  
   754  // VoteForRoleChange is a paid mutator transaction binding the contract method 0x66aa2299.
   755  //
   756  // Solidity: function voteForRoleChange(string _nodeId, string _voterNodeId, string _opCode) payable returns()
   757  func (_Permission *PermissionSession) VoteForRoleChange(_nodeId string, _voterNodeId string, _opCode string) (*types.Transaction, error) {
   758  	return _Permission.Contract.VoteForRoleChange(&_Permission.TransactOpts, _nodeId, _voterNodeId, _opCode)
   759  }
   760  
   761  // VoteForRoleChange is a paid mutator transaction binding the contract method 0x66aa2299.
   762  //
   763  // Solidity: function voteForRoleChange(string _nodeId, string _voterNodeId, string _opCode) payable returns()
   764  func (_Permission *PermissionTransactorSession) VoteForRoleChange(_nodeId string, _voterNodeId string, _opCode string) (*types.Transaction, error) {
   765  	return _Permission.Contract.VoteForRoleChange(&_Permission.TransactOpts, _nodeId, _voterNodeId, _opCode)
   766  }
   767  
   768  // PermissionAddNewNodeNotifyIterator is returned from FilterAddNewNodeNotify and is used to iterate over the raw logs and unpacked data for AddNewNodeNotify events raised by the Permission contract.
   769  type PermissionAddNewNodeNotifyIterator struct {
   770  	Event *PermissionAddNewNodeNotify // Event containing the contract specifics and raw log
   771  
   772  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   773  	event    string              // Event name to use for unpacking event data
   774  
   775  	logs chan types.Log        // Log channel receiving the found contract events
   776  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   777  	done bool                  // Whether the subscription completed delivering logs
   778  	fail error                 // Occurred error to stop iteration
   779  }
   780  
   781  // Next advances the iterator to the subsequent event, returning whether there
   782  // are any more events found. In case of a retrieval or parsing error, false is
   783  // returned and Error() can be queried for the exact failure.
   784  func (it *PermissionAddNewNodeNotifyIterator) Next() bool {
   785  	// If the iterator failed, stop iterating
   786  	if it.fail != nil {
   787  		return false
   788  	}
   789  	// If the iterator completed, deliver directly whatever's available
   790  	if it.done {
   791  		select {
   792  		case log := <-it.logs:
   793  			it.Event = new(PermissionAddNewNodeNotify)
   794  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   795  				it.fail = err
   796  				return false
   797  			}
   798  			it.Event.Raw = log
   799  			return true
   800  
   801  		default:
   802  			return false
   803  		}
   804  	}
   805  	// Iterator still in progress, wait for either a data or an error event
   806  	select {
   807  	case log := <-it.logs:
   808  		it.Event = new(PermissionAddNewNodeNotify)
   809  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   810  			it.fail = err
   811  			return false
   812  		}
   813  		it.Event.Raw = log
   814  		return true
   815  
   816  	case err := <-it.sub.Err():
   817  		it.done = true
   818  		it.fail = err
   819  		return it.Next()
   820  	}
   821  }
   822  
   823  // Error returns any retrieval or parsing error occurred during filtering.
   824  func (it *PermissionAddNewNodeNotifyIterator) Error() error {
   825  	return it.fail
   826  }
   827  
   828  // Close terminates the iteration process, releasing any pending underlying
   829  // resources.
   830  func (it *PermissionAddNewNodeNotifyIterator) Close() error {
   831  	it.sub.Unsubscribe()
   832  	return nil
   833  }
   834  
   835  // PermissionAddNewNodeNotify represents a AddNewNodeNotify event raised by the Permission contract.
   836  type PermissionAddNewNodeNotify struct {
   837  	EnodeId string
   838  	Ip      string
   839  	Port    string
   840  	Raw     types.Log // Blockchain specific contextual infos
   841  }
   842  
   843  // FilterAddNewNodeNotify is a free log retrieval operation binding the contract event 0x6038668b2430850a4f25a86d399648514d6cde42bca6b534937d6c78193fc287.
   844  //
   845  // Solidity: event AddNewNodeNotify(string enodeId, string ip, string port)
   846  func (_Permission *PermissionFilterer) FilterAddNewNodeNotify(opts *bind.FilterOpts) (*PermissionAddNewNodeNotifyIterator, error) {
   847  
   848  	logs, sub, err := _Permission.contract.FilterLogs(opts, "AddNewNodeNotify")
   849  	if err != nil {
   850  		return nil, err
   851  	}
   852  	return &PermissionAddNewNodeNotifyIterator{contract: _Permission.contract, event: "AddNewNodeNotify", logs: logs, sub: sub}, nil
   853  }
   854  
   855  // WatchAddNewNodeNotify is a free log subscription operation binding the contract event 0x6038668b2430850a4f25a86d399648514d6cde42bca6b534937d6c78193fc287.
   856  //
   857  // Solidity: event AddNewNodeNotify(string enodeId, string ip, string port)
   858  func (_Permission *PermissionFilterer) WatchAddNewNodeNotify(opts *bind.WatchOpts, sink chan<- *PermissionAddNewNodeNotify) (event.Subscription, error) {
   859  
   860  	logs, sub, err := _Permission.contract.WatchLogs(opts, "AddNewNodeNotify")
   861  	if err != nil {
   862  		return nil, err
   863  	}
   864  	return event.NewSubscription(func(quit <-chan struct{}) error {
   865  		defer sub.Unsubscribe()
   866  		for {
   867  			select {
   868  			case log := <-logs:
   869  				// New log arrived, parse the event and forward to the user
   870  				event := new(PermissionAddNewNodeNotify)
   871  				if err := _Permission.contract.UnpackLog(event, "AddNewNodeNotify", log); err != nil {
   872  					return err
   873  				}
   874  				event.Raw = log
   875  
   876  				select {
   877  				case sink <- event:
   878  				case err := <-sub.Err():
   879  					return err
   880  				case <-quit:
   881  					return nil
   882  				}
   883  			case err := <-sub.Err():
   884  				return err
   885  			case <-quit:
   886  				return nil
   887  			}
   888  		}
   889  	}), nil
   890  }
   891  
   892  // ParseAddNewNodeNotify is a log parse operation binding the contract event 0x6038668b2430850a4f25a86d399648514d6cde42bca6b534937d6c78193fc287.
   893  //
   894  // Solidity: event AddNewNodeNotify(string enodeId, string ip, string port)
   895  func (_Permission *PermissionFilterer) ParseAddNewNodeNotify(log types.Log) (*PermissionAddNewNodeNotify, error) {
   896  	event := new(PermissionAddNewNodeNotify)
   897  	if err := _Permission.contract.UnpackLog(event, "AddNewNodeNotify", log); err != nil {
   898  		return nil, err
   899  	}
   900  	event.Raw = log
   901  	return event, nil
   902  }
   903  
   904  // PermissionApplyByAdminNotifyIterator is returned from FilterApplyByAdminNotify and is used to iterate over the raw logs and unpacked data for ApplyByAdminNotify events raised by the Permission contract.
   905  type PermissionApplyByAdminNotifyIterator struct {
   906  	Event *PermissionApplyByAdminNotify // Event containing the contract specifics and raw log
   907  
   908  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   909  	event    string              // Event name to use for unpacking event data
   910  
   911  	logs chan types.Log        // Log channel receiving the found contract events
   912  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   913  	done bool                  // Whether the subscription completed delivering logs
   914  	fail error                 // Occurred error to stop iteration
   915  }
   916  
   917  // Next advances the iterator to the subsequent event, returning whether there
   918  // are any more events found. In case of a retrieval or parsing error, false is
   919  // returned and Error() can be queried for the exact failure.
   920  func (it *PermissionApplyByAdminNotifyIterator) Next() bool {
   921  	// If the iterator failed, stop iterating
   922  	if it.fail != nil {
   923  		return false
   924  	}
   925  	// If the iterator completed, deliver directly whatever's available
   926  	if it.done {
   927  		select {
   928  		case log := <-it.logs:
   929  			it.Event = new(PermissionApplyByAdminNotify)
   930  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   931  				it.fail = err
   932  				return false
   933  			}
   934  			it.Event.Raw = log
   935  			return true
   936  
   937  		default:
   938  			return false
   939  		}
   940  	}
   941  	// Iterator still in progress, wait for either a data or an error event
   942  	select {
   943  	case log := <-it.logs:
   944  		it.Event = new(PermissionApplyByAdminNotify)
   945  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   946  			it.fail = err
   947  			return false
   948  		}
   949  		it.Event.Raw = log
   950  		return true
   951  
   952  	case err := <-it.sub.Err():
   953  		it.done = true
   954  		it.fail = err
   955  		return it.Next()
   956  	}
   957  }
   958  
   959  // Error returns any retrieval or parsing error occurred during filtering.
   960  func (it *PermissionApplyByAdminNotifyIterator) Error() error {
   961  	return it.fail
   962  }
   963  
   964  // Close terminates the iteration process, releasing any pending underlying
   965  // resources.
   966  func (it *PermissionApplyByAdminNotifyIterator) Close() error {
   967  	it.sub.Unsubscribe()
   968  	return nil
   969  }
   970  
   971  // PermissionApplyByAdminNotify represents a ApplyByAdminNotify event raised by the Permission contract.
   972  type PermissionApplyByAdminNotify struct {
   973  	EnodeId string
   974  	Raw     types.Log // Blockchain specific contextual infos
   975  }
   976  
   977  // FilterApplyByAdminNotify is a free log retrieval operation binding the contract event 0x5e330ce69c9b3b5247e5759b06dc7fc78e57a2519cf6c6f8e8c70198da7ccc8e.
   978  //
   979  // Solidity: event ApplyByAdminNotify(string enodeId)
   980  func (_Permission *PermissionFilterer) FilterApplyByAdminNotify(opts *bind.FilterOpts) (*PermissionApplyByAdminNotifyIterator, error) {
   981  
   982  	logs, sub, err := _Permission.contract.FilterLogs(opts, "ApplyByAdminNotify")
   983  	if err != nil {
   984  		return nil, err
   985  	}
   986  	return &PermissionApplyByAdminNotifyIterator{contract: _Permission.contract, event: "ApplyByAdminNotify", logs: logs, sub: sub}, nil
   987  }
   988  
   989  // WatchApplyByAdminNotify is a free log subscription operation binding the contract event 0x5e330ce69c9b3b5247e5759b06dc7fc78e57a2519cf6c6f8e8c70198da7ccc8e.
   990  //
   991  // Solidity: event ApplyByAdminNotify(string enodeId)
   992  func (_Permission *PermissionFilterer) WatchApplyByAdminNotify(opts *bind.WatchOpts, sink chan<- *PermissionApplyByAdminNotify) (event.Subscription, error) {
   993  
   994  	logs, sub, err := _Permission.contract.WatchLogs(opts, "ApplyByAdminNotify")
   995  	if err != nil {
   996  		return nil, err
   997  	}
   998  	return event.NewSubscription(func(quit <-chan struct{}) error {
   999  		defer sub.Unsubscribe()
  1000  		for {
  1001  			select {
  1002  			case log := <-logs:
  1003  				// New log arrived, parse the event and forward to the user
  1004  				event := new(PermissionApplyByAdminNotify)
  1005  				if err := _Permission.contract.UnpackLog(event, "ApplyByAdminNotify", log); err != nil {
  1006  					return err
  1007  				}
  1008  				event.Raw = log
  1009  
  1010  				select {
  1011  				case sink <- event:
  1012  				case err := <-sub.Err():
  1013  					return err
  1014  				case <-quit:
  1015  					return nil
  1016  				}
  1017  			case err := <-sub.Err():
  1018  				return err
  1019  			case <-quit:
  1020  				return nil
  1021  			}
  1022  		}
  1023  	}), nil
  1024  }
  1025  
  1026  // ParseApplyByAdminNotify is a log parse operation binding the contract event 0x5e330ce69c9b3b5247e5759b06dc7fc78e57a2519cf6c6f8e8c70198da7ccc8e.
  1027  //
  1028  // Solidity: event ApplyByAdminNotify(string enodeId)
  1029  func (_Permission *PermissionFilterer) ParseApplyByAdminNotify(log types.Log) (*PermissionApplyByAdminNotify, error) {
  1030  	event := new(PermissionApplyByAdminNotify)
  1031  	if err := _Permission.contract.UnpackLog(event, "ApplyByAdminNotify", log); err != nil {
  1032  		return nil, err
  1033  	}
  1034  	event.Raw = log
  1035  	return event, nil
  1036  }
  1037  
  1038  // PermissionVerifyNotifyIterator is returned from FilterVerifyNotify and is used to iterate over the raw logs and unpacked data for VerifyNotify events raised by the Permission contract.
  1039  type PermissionVerifyNotifyIterator struct {
  1040  	Event *PermissionVerifyNotify // Event containing the contract specifics and raw log
  1041  
  1042  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1043  	event    string              // Event name to use for unpacking event data
  1044  
  1045  	logs chan types.Log        // Log channel receiving the found contract events
  1046  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1047  	done bool                  // Whether the subscription completed delivering logs
  1048  	fail error                 // Occurred error to stop iteration
  1049  }
  1050  
  1051  // Next advances the iterator to the subsequent event, returning whether there
  1052  // are any more events found. In case of a retrieval or parsing error, false is
  1053  // returned and Error() can be queried for the exact failure.
  1054  func (it *PermissionVerifyNotifyIterator) Next() bool {
  1055  	// If the iterator failed, stop iterating
  1056  	if it.fail != nil {
  1057  		return false
  1058  	}
  1059  	// If the iterator completed, deliver directly whatever's available
  1060  	if it.done {
  1061  		select {
  1062  		case log := <-it.logs:
  1063  			it.Event = new(PermissionVerifyNotify)
  1064  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1065  				it.fail = err
  1066  				return false
  1067  			}
  1068  			it.Event.Raw = log
  1069  			return true
  1070  
  1071  		default:
  1072  			return false
  1073  		}
  1074  	}
  1075  	// Iterator still in progress, wait for either a data or an error event
  1076  	select {
  1077  	case log := <-it.logs:
  1078  		it.Event = new(PermissionVerifyNotify)
  1079  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1080  			it.fail = err
  1081  			return false
  1082  		}
  1083  		it.Event.Raw = log
  1084  		return true
  1085  
  1086  	case err := <-it.sub.Err():
  1087  		it.done = true
  1088  		it.fail = err
  1089  		return it.Next()
  1090  	}
  1091  }
  1092  
  1093  // Error returns any retrieval or parsing error occurred during filtering.
  1094  func (it *PermissionVerifyNotifyIterator) Error() error {
  1095  	return it.fail
  1096  }
  1097  
  1098  // Close terminates the iteration process, releasing any pending underlying
  1099  // resources.
  1100  func (it *PermissionVerifyNotifyIterator) Close() error {
  1101  	it.sub.Unsubscribe()
  1102  	return nil
  1103  }
  1104  
  1105  // PermissionVerifyNotify represents a VerifyNotify event raised by the Permission contract.
  1106  type PermissionVerifyNotify struct {
  1107  	EnodeId string
  1108  	OpCode  *big.Int
  1109  	Ip      string
  1110  	Port    string
  1111  	Raw     types.Log // Blockchain specific contextual infos
  1112  }
  1113  
  1114  // FilterVerifyNotify is a free log retrieval operation binding the contract event 0xe2079629d960c01f0a2e7d2ceb7c4fbe84915ec15bfdb1ea6412f0c92333aaf7.
  1115  //
  1116  // Solidity: event VerifyNotify(string enodeId, uint256 opCode, string ip, string port)
  1117  func (_Permission *PermissionFilterer) FilterVerifyNotify(opts *bind.FilterOpts) (*PermissionVerifyNotifyIterator, error) {
  1118  
  1119  	logs, sub, err := _Permission.contract.FilterLogs(opts, "VerifyNotify")
  1120  	if err != nil {
  1121  		return nil, err
  1122  	}
  1123  	return &PermissionVerifyNotifyIterator{contract: _Permission.contract, event: "VerifyNotify", logs: logs, sub: sub}, nil
  1124  }
  1125  
  1126  // WatchVerifyNotify is a free log subscription operation binding the contract event 0xe2079629d960c01f0a2e7d2ceb7c4fbe84915ec15bfdb1ea6412f0c92333aaf7.
  1127  //
  1128  // Solidity: event VerifyNotify(string enodeId, uint256 opCode, string ip, string port)
  1129  func (_Permission *PermissionFilterer) WatchVerifyNotify(opts *bind.WatchOpts, sink chan<- *PermissionVerifyNotify) (event.Subscription, error) {
  1130  
  1131  	logs, sub, err := _Permission.contract.WatchLogs(opts, "VerifyNotify")
  1132  	if err != nil {
  1133  		return nil, err
  1134  	}
  1135  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1136  		defer sub.Unsubscribe()
  1137  		for {
  1138  			select {
  1139  			case log := <-logs:
  1140  				// New log arrived, parse the event and forward to the user
  1141  				event := new(PermissionVerifyNotify)
  1142  				if err := _Permission.contract.UnpackLog(event, "VerifyNotify", log); err != nil {
  1143  					return err
  1144  				}
  1145  				event.Raw = log
  1146  
  1147  				select {
  1148  				case sink <- event:
  1149  				case err := <-sub.Err():
  1150  					return err
  1151  				case <-quit:
  1152  					return nil
  1153  				}
  1154  			case err := <-sub.Err():
  1155  				return err
  1156  			case <-quit:
  1157  				return nil
  1158  			}
  1159  		}
  1160  	}), nil
  1161  }
  1162  
  1163  // ParseVerifyNotify is a log parse operation binding the contract event 0xe2079629d960c01f0a2e7d2ceb7c4fbe84915ec15bfdb1ea6412f0c92333aaf7.
  1164  //
  1165  // Solidity: event VerifyNotify(string enodeId, uint256 opCode, string ip, string port)
  1166  func (_Permission *PermissionFilterer) ParseVerifyNotify(log types.Log) (*PermissionVerifyNotify, error) {
  1167  	event := new(PermissionVerifyNotify)
  1168  	if err := _Permission.contract.UnpackLog(event, "VerifyNotify", log); err != nil {
  1169  		return nil, err
  1170  	}
  1171  	event.Raw = log
  1172  	return event, nil
  1173  }
  1174  
  1175  // PermissionIsAdminRoleEventIterator is returned from FilterIsAdminRoleEvent and is used to iterate over the raw logs and unpacked data for IsAdminRoleEvent events raised by the Permission contract.
  1176  type PermissionIsAdminRoleEventIterator struct {
  1177  	Event *PermissionIsAdminRoleEvent // Event containing the contract specifics and raw log
  1178  
  1179  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1180  	event    string              // Event name to use for unpacking event data
  1181  
  1182  	logs chan types.Log        // Log channel receiving the found contract events
  1183  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1184  	done bool                  // Whether the subscription completed delivering logs
  1185  	fail error                 // Occurred error to stop iteration
  1186  }
  1187  
  1188  // Next advances the iterator to the subsequent event, returning whether there
  1189  // are any more events found. In case of a retrieval or parsing error, false is
  1190  // returned and Error() can be queried for the exact failure.
  1191  func (it *PermissionIsAdminRoleEventIterator) Next() bool {
  1192  	// If the iterator failed, stop iterating
  1193  	if it.fail != nil {
  1194  		return false
  1195  	}
  1196  	// If the iterator completed, deliver directly whatever's available
  1197  	if it.done {
  1198  		select {
  1199  		case log := <-it.logs:
  1200  			it.Event = new(PermissionIsAdminRoleEvent)
  1201  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1202  				it.fail = err
  1203  				return false
  1204  			}
  1205  			it.Event.Raw = log
  1206  			return true
  1207  
  1208  		default:
  1209  			return false
  1210  		}
  1211  	}
  1212  	// Iterator still in progress, wait for either a data or an error event
  1213  	select {
  1214  	case log := <-it.logs:
  1215  		it.Event = new(PermissionIsAdminRoleEvent)
  1216  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1217  			it.fail = err
  1218  			return false
  1219  		}
  1220  		it.Event.Raw = log
  1221  		return true
  1222  
  1223  	case err := <-it.sub.Err():
  1224  		it.done = true
  1225  		it.fail = err
  1226  		return it.Next()
  1227  	}
  1228  }
  1229  
  1230  // Error returns any retrieval or parsing error occurred during filtering.
  1231  func (it *PermissionIsAdminRoleEventIterator) Error() error {
  1232  	return it.fail
  1233  }
  1234  
  1235  // Close terminates the iteration process, releasing any pending underlying
  1236  // resources.
  1237  func (it *PermissionIsAdminRoleEventIterator) Close() error {
  1238  	it.sub.Unsubscribe()
  1239  	return nil
  1240  }
  1241  
  1242  // PermissionIsAdminRoleEvent represents a IsAdminRoleEvent event raised by the Permission contract.
  1243  type PermissionIsAdminRoleEvent struct {
  1244  	NodeId string
  1245  	Sender common.Address
  1246  	Raw    types.Log // Blockchain specific contextual infos
  1247  }
  1248  
  1249  // FilterIsAdminRoleEvent is a free log retrieval operation binding the contract event 0xb9dbcb13b6e91385636c1c8abe489e7267afb6c7febc7a0cb599c290df04f9be.
  1250  //
  1251  // Solidity: event isAdminRoleEvent(string _nodeId, address _sender)
  1252  func (_Permission *PermissionFilterer) FilterIsAdminRoleEvent(opts *bind.FilterOpts) (*PermissionIsAdminRoleEventIterator, error) {
  1253  
  1254  	logs, sub, err := _Permission.contract.FilterLogs(opts, "isAdminRoleEvent")
  1255  	if err != nil {
  1256  		return nil, err
  1257  	}
  1258  	return &PermissionIsAdminRoleEventIterator{contract: _Permission.contract, event: "isAdminRoleEvent", logs: logs, sub: sub}, nil
  1259  }
  1260  
  1261  // WatchIsAdminRoleEvent is a free log subscription operation binding the contract event 0xb9dbcb13b6e91385636c1c8abe489e7267afb6c7febc7a0cb599c290df04f9be.
  1262  //
  1263  // Solidity: event isAdminRoleEvent(string _nodeId, address _sender)
  1264  func (_Permission *PermissionFilterer) WatchIsAdminRoleEvent(opts *bind.WatchOpts, sink chan<- *PermissionIsAdminRoleEvent) (event.Subscription, error) {
  1265  
  1266  	logs, sub, err := _Permission.contract.WatchLogs(opts, "isAdminRoleEvent")
  1267  	if err != nil {
  1268  		return nil, err
  1269  	}
  1270  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1271  		defer sub.Unsubscribe()
  1272  		for {
  1273  			select {
  1274  			case log := <-logs:
  1275  				// New log arrived, parse the event and forward to the user
  1276  				event := new(PermissionIsAdminRoleEvent)
  1277  				if err := _Permission.contract.UnpackLog(event, "isAdminRoleEvent", log); err != nil {
  1278  					return err
  1279  				}
  1280  				event.Raw = log
  1281  
  1282  				select {
  1283  				case sink <- event:
  1284  				case err := <-sub.Err():
  1285  					return err
  1286  				case <-quit:
  1287  					return nil
  1288  				}
  1289  			case err := <-sub.Err():
  1290  				return err
  1291  			case <-quit:
  1292  				return nil
  1293  			}
  1294  		}
  1295  	}), nil
  1296  }
  1297  
  1298  // ParseIsAdminRoleEvent is a log parse operation binding the contract event 0xb9dbcb13b6e91385636c1c8abe489e7267afb6c7febc7a0cb599c290df04f9be.
  1299  //
  1300  // Solidity: event isAdminRoleEvent(string _nodeId, address _sender)
  1301  func (_Permission *PermissionFilterer) ParseIsAdminRoleEvent(log types.Log) (*PermissionIsAdminRoleEvent, error) {
  1302  	event := new(PermissionIsAdminRoleEvent)
  1303  	if err := _Permission.contract.UnpackLog(event, "isAdminRoleEvent", log); err != nil {
  1304  		return nil, err
  1305  	}
  1306  	event.Raw = log
  1307  	return event, nil
  1308  }
  1309  
  1310  // PermissionIsVotedEventIterator is returned from FilterIsVotedEvent and is used to iterate over the raw logs and unpacked data for IsVotedEvent events raised by the Permission contract.
  1311  type PermissionIsVotedEventIterator struct {
  1312  	Event *PermissionIsVotedEvent // Event containing the contract specifics and raw log
  1313  
  1314  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1315  	event    string              // Event name to use for unpacking event data
  1316  
  1317  	logs chan types.Log        // Log channel receiving the found contract events
  1318  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1319  	done bool                  // Whether the subscription completed delivering logs
  1320  	fail error                 // Occurred error to stop iteration
  1321  }
  1322  
  1323  // Next advances the iterator to the subsequent event, returning whether there
  1324  // are any more events found. In case of a retrieval or parsing error, false is
  1325  // returned and Error() can be queried for the exact failure.
  1326  func (it *PermissionIsVotedEventIterator) Next() bool {
  1327  	// If the iterator failed, stop iterating
  1328  	if it.fail != nil {
  1329  		return false
  1330  	}
  1331  	// If the iterator completed, deliver directly whatever's available
  1332  	if it.done {
  1333  		select {
  1334  		case log := <-it.logs:
  1335  			it.Event = new(PermissionIsVotedEvent)
  1336  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1337  				it.fail = err
  1338  				return false
  1339  			}
  1340  			it.Event.Raw = log
  1341  			return true
  1342  
  1343  		default:
  1344  			return false
  1345  		}
  1346  	}
  1347  	// Iterator still in progress, wait for either a data or an error event
  1348  	select {
  1349  	case log := <-it.logs:
  1350  		it.Event = new(PermissionIsVotedEvent)
  1351  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1352  			it.fail = err
  1353  			return false
  1354  		}
  1355  		it.Event.Raw = log
  1356  		return true
  1357  
  1358  	case err := <-it.sub.Err():
  1359  		it.done = true
  1360  		it.fail = err
  1361  		return it.Next()
  1362  	}
  1363  }
  1364  
  1365  // Error returns any retrieval or parsing error occurred during filtering.
  1366  func (it *PermissionIsVotedEventIterator) Error() error {
  1367  	return it.fail
  1368  }
  1369  
  1370  // Close terminates the iteration process, releasing any pending underlying
  1371  // resources.
  1372  func (it *PermissionIsVotedEventIterator) Close() error {
  1373  	it.sub.Unsubscribe()
  1374  	return nil
  1375  }
  1376  
  1377  // PermissionIsVotedEvent represents a IsVotedEvent event raised by the Permission contract.
  1378  type PermissionIsVotedEvent struct {
  1379  	NodeId      string
  1380  	OpCode      string
  1381  	VoterNodeId string
  1382  	Raw         types.Log // Blockchain specific contextual infos
  1383  }
  1384  
  1385  // FilterIsVotedEvent is a free log retrieval operation binding the contract event 0xe9b1488676b5305d45c8a66f1ee9c7bbb243b69567e6f816d3245d2c8eb4d485.
  1386  //
  1387  // Solidity: event isVotedEvent(string _nodeId, string _opCode, string _voterNodeId)
  1388  func (_Permission *PermissionFilterer) FilterIsVotedEvent(opts *bind.FilterOpts) (*PermissionIsVotedEventIterator, error) {
  1389  
  1390  	logs, sub, err := _Permission.contract.FilterLogs(opts, "isVotedEvent")
  1391  	if err != nil {
  1392  		return nil, err
  1393  	}
  1394  	return &PermissionIsVotedEventIterator{contract: _Permission.contract, event: "isVotedEvent", logs: logs, sub: sub}, nil
  1395  }
  1396  
  1397  // WatchIsVotedEvent is a free log subscription operation binding the contract event 0xe9b1488676b5305d45c8a66f1ee9c7bbb243b69567e6f816d3245d2c8eb4d485.
  1398  //
  1399  // Solidity: event isVotedEvent(string _nodeId, string _opCode, string _voterNodeId)
  1400  func (_Permission *PermissionFilterer) WatchIsVotedEvent(opts *bind.WatchOpts, sink chan<- *PermissionIsVotedEvent) (event.Subscription, error) {
  1401  
  1402  	logs, sub, err := _Permission.contract.WatchLogs(opts, "isVotedEvent")
  1403  	if err != nil {
  1404  		return nil, err
  1405  	}
  1406  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1407  		defer sub.Unsubscribe()
  1408  		for {
  1409  			select {
  1410  			case log := <-logs:
  1411  				// New log arrived, parse the event and forward to the user
  1412  				event := new(PermissionIsVotedEvent)
  1413  				if err := _Permission.contract.UnpackLog(event, "isVotedEvent", log); err != nil {
  1414  					return err
  1415  				}
  1416  				event.Raw = log
  1417  
  1418  				select {
  1419  				case sink <- event:
  1420  				case err := <-sub.Err():
  1421  					return err
  1422  				case <-quit:
  1423  					return nil
  1424  				}
  1425  			case err := <-sub.Err():
  1426  				return err
  1427  			case <-quit:
  1428  				return nil
  1429  			}
  1430  		}
  1431  	}), nil
  1432  }
  1433  
  1434  // ParseIsVotedEvent is a log parse operation binding the contract event 0xe9b1488676b5305d45c8a66f1ee9c7bbb243b69567e6f816d3245d2c8eb4d485.
  1435  //
  1436  // Solidity: event isVotedEvent(string _nodeId, string _opCode, string _voterNodeId)
  1437  func (_Permission *PermissionFilterer) ParseIsVotedEvent(log types.Log) (*PermissionIsVotedEvent, error) {
  1438  	event := new(PermissionIsVotedEvent)
  1439  	if err := _Permission.contract.UnpackLog(event, "isVotedEvent", log); err != nil {
  1440  		return nil, err
  1441  	}
  1442  	event.Raw = log
  1443  	return event, nil
  1444  }
  1445  
  1446  // PermissionNetworkInitCompleteIterator is returned from FilterNetworkInitComplete and is used to iterate over the raw logs and unpacked data for NetworkInitComplete events raised by the Permission contract.
  1447  type PermissionNetworkInitCompleteIterator struct {
  1448  	Event *PermissionNetworkInitComplete // Event containing the contract specifics and raw log
  1449  
  1450  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1451  	event    string              // Event name to use for unpacking event data
  1452  
  1453  	logs chan types.Log        // Log channel receiving the found contract events
  1454  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1455  	done bool                  // Whether the subscription completed delivering logs
  1456  	fail error                 // Occurred error to stop iteration
  1457  }
  1458  
  1459  // Next advances the iterator to the subsequent event, returning whether there
  1460  // are any more events found. In case of a retrieval or parsing error, false is
  1461  // returned and Error() can be queried for the exact failure.
  1462  func (it *PermissionNetworkInitCompleteIterator) Next() bool {
  1463  	// If the iterator failed, stop iterating
  1464  	if it.fail != nil {
  1465  		return false
  1466  	}
  1467  	// If the iterator completed, deliver directly whatever's available
  1468  	if it.done {
  1469  		select {
  1470  		case log := <-it.logs:
  1471  			it.Event = new(PermissionNetworkInitComplete)
  1472  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1473  				it.fail = err
  1474  				return false
  1475  			}
  1476  			it.Event.Raw = log
  1477  			return true
  1478  
  1479  		default:
  1480  			return false
  1481  		}
  1482  	}
  1483  	// Iterator still in progress, wait for either a data or an error event
  1484  	select {
  1485  	case log := <-it.logs:
  1486  		it.Event = new(PermissionNetworkInitComplete)
  1487  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1488  			it.fail = err
  1489  			return false
  1490  		}
  1491  		it.Event.Raw = log
  1492  		return true
  1493  
  1494  	case err := <-it.sub.Err():
  1495  		it.done = true
  1496  		it.fail = err
  1497  		return it.Next()
  1498  	}
  1499  }
  1500  
  1501  // Error returns any retrieval or parsing error occurred during filtering.
  1502  func (it *PermissionNetworkInitCompleteIterator) Error() error {
  1503  	return it.fail
  1504  }
  1505  
  1506  // Close terminates the iteration process, releasing any pending underlying
  1507  // resources.
  1508  func (it *PermissionNetworkInitCompleteIterator) Close() error {
  1509  	it.sub.Unsubscribe()
  1510  	return nil
  1511  }
  1512  
  1513  // PermissionNetworkInitComplete represents a NetworkInitComplete event raised by the Permission contract.
  1514  type PermissionNetworkInitComplete struct {
  1515  	Number    *big.Int
  1516  	Timestamp *big.Int
  1517  	Raw       types.Log // Blockchain specific contextual infos
  1518  }
  1519  
  1520  // FilterNetworkInitComplete is a free log retrieval operation binding the contract event 0xd57c71a2984069403b4307775755ca30b183c3f5c9eb595659a1a4488d503035.
  1521  //
  1522  // Solidity: event networkInitComplete(uint256 number, uint256 timestamp)
  1523  func (_Permission *PermissionFilterer) FilterNetworkInitComplete(opts *bind.FilterOpts) (*PermissionNetworkInitCompleteIterator, error) {
  1524  
  1525  	logs, sub, err := _Permission.contract.FilterLogs(opts, "networkInitComplete")
  1526  	if err != nil {
  1527  		return nil, err
  1528  	}
  1529  	return &PermissionNetworkInitCompleteIterator{contract: _Permission.contract, event: "networkInitComplete", logs: logs, sub: sub}, nil
  1530  }
  1531  
  1532  // WatchNetworkInitComplete is a free log subscription operation binding the contract event 0xd57c71a2984069403b4307775755ca30b183c3f5c9eb595659a1a4488d503035.
  1533  //
  1534  // Solidity: event networkInitComplete(uint256 number, uint256 timestamp)
  1535  func (_Permission *PermissionFilterer) WatchNetworkInitComplete(opts *bind.WatchOpts, sink chan<- *PermissionNetworkInitComplete) (event.Subscription, error) {
  1536  
  1537  	logs, sub, err := _Permission.contract.WatchLogs(opts, "networkInitComplete")
  1538  	if err != nil {
  1539  		return nil, err
  1540  	}
  1541  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1542  		defer sub.Unsubscribe()
  1543  		for {
  1544  			select {
  1545  			case log := <-logs:
  1546  				// New log arrived, parse the event and forward to the user
  1547  				event := new(PermissionNetworkInitComplete)
  1548  				if err := _Permission.contract.UnpackLog(event, "networkInitComplete", log); err != nil {
  1549  					return err
  1550  				}
  1551  				event.Raw = log
  1552  
  1553  				select {
  1554  				case sink <- event:
  1555  				case err := <-sub.Err():
  1556  					return err
  1557  				case <-quit:
  1558  					return nil
  1559  				}
  1560  			case err := <-sub.Err():
  1561  				return err
  1562  			case <-quit:
  1563  				return nil
  1564  			}
  1565  		}
  1566  	}), nil
  1567  }
  1568  
  1569  // ParseNetworkInitComplete is a log parse operation binding the contract event 0xd57c71a2984069403b4307775755ca30b183c3f5c9eb595659a1a4488d503035.
  1570  //
  1571  // Solidity: event networkInitComplete(uint256 number, uint256 timestamp)
  1572  func (_Permission *PermissionFilterer) ParseNetworkInitComplete(log types.Log) (*PermissionNetworkInitComplete, error) {
  1573  	event := new(PermissionNetworkInitComplete)
  1574  	if err := _Permission.contract.UnpackLog(event, "networkInitComplete", log); err != nil {
  1575  		return nil, err
  1576  	}
  1577  	event.Raw = log
  1578  	return event, nil
  1579  }