github.com/diadata-org/diadata@v1.4.593/config/nftContracts/sorare/sorare.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 sorare
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	ethereum "github.com/ethereum/go-ethereum"
    11  	"github.com/ethereum/go-ethereum/accounts/abi"
    12  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    13  	"github.com/ethereum/go-ethereum/common"
    14  	"github.com/ethereum/go-ethereum/core/types"
    15  	"github.com/ethereum/go-ethereum/event"
    16  )
    17  
    18  // Reference imports to suppress errors if they are not otherwise used.
    19  var (
    20  	_ = big.NewInt
    21  	_ = strings.NewReader
    22  	_ = ethereum.NotFound
    23  	_ = bind.Bind
    24  	_ = common.Big1
    25  	_ = types.BloomLookup
    26  	_ = event.NewSubscription
    27  )
    28  
    29  // AccessControlABI is the input ABI used to generate the binding from.
    30  const AccessControlABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
    31  
    32  // AccessControlFuncSigs maps the 4-byte function signature to its string representation.
    33  var AccessControlFuncSigs = map[string]string{
    34  	"a217fddf": "DEFAULT_ADMIN_ROLE()",
    35  	"248a9ca3": "getRoleAdmin(bytes32)",
    36  	"9010d07c": "getRoleMember(bytes32,uint256)",
    37  	"ca15c873": "getRoleMemberCount(bytes32)",
    38  	"2f2ff15d": "grantRole(bytes32,address)",
    39  	"91d14854": "hasRole(bytes32,address)",
    40  	"36568abe": "renounceRole(bytes32,address)",
    41  	"d547741f": "revokeRole(bytes32,address)",
    42  }
    43  
    44  // AccessControl is an auto generated Go binding around an Ethereum contract.
    45  type AccessControl struct {
    46  	AccessControlCaller     // Read-only binding to the contract
    47  	AccessControlTransactor // Write-only binding to the contract
    48  	AccessControlFilterer   // Log filterer for contract events
    49  }
    50  
    51  // AccessControlCaller is an auto generated read-only Go binding around an Ethereum contract.
    52  type AccessControlCaller struct {
    53  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    54  }
    55  
    56  // AccessControlTransactor is an auto generated write-only Go binding around an Ethereum contract.
    57  type AccessControlTransactor struct {
    58  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    59  }
    60  
    61  // AccessControlFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    62  type AccessControlFilterer struct {
    63  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    64  }
    65  
    66  // AccessControlSession is an auto generated Go binding around an Ethereum contract,
    67  // with pre-set call and transact options.
    68  type AccessControlSession struct {
    69  	Contract     *AccessControl    // Generic contract binding to set the session for
    70  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    71  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    72  }
    73  
    74  // AccessControlCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    75  // with pre-set call options.
    76  type AccessControlCallerSession struct {
    77  	Contract *AccessControlCaller // Generic contract caller binding to set the session for
    78  	CallOpts bind.CallOpts        // Call options to use throughout this session
    79  }
    80  
    81  // AccessControlTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    82  // with pre-set transact options.
    83  type AccessControlTransactorSession struct {
    84  	Contract     *AccessControlTransactor // Generic contract transactor binding to set the session for
    85  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
    86  }
    87  
    88  // AccessControlRaw is an auto generated low-level Go binding around an Ethereum contract.
    89  type AccessControlRaw struct {
    90  	Contract *AccessControl // Generic contract binding to access the raw methods on
    91  }
    92  
    93  // AccessControlCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
    94  type AccessControlCallerRaw struct {
    95  	Contract *AccessControlCaller // Generic read-only contract binding to access the raw methods on
    96  }
    97  
    98  // AccessControlTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
    99  type AccessControlTransactorRaw struct {
   100  	Contract *AccessControlTransactor // Generic write-only contract binding to access the raw methods on
   101  }
   102  
   103  // NewAccessControl creates a new instance of AccessControl, bound to a specific deployed contract.
   104  func NewAccessControl(address common.Address, backend bind.ContractBackend) (*AccessControl, error) {
   105  	contract, err := bindAccessControl(address, backend, backend, backend)
   106  	if err != nil {
   107  		return nil, err
   108  	}
   109  	return &AccessControl{AccessControlCaller: AccessControlCaller{contract: contract}, AccessControlTransactor: AccessControlTransactor{contract: contract}, AccessControlFilterer: AccessControlFilterer{contract: contract}}, nil
   110  }
   111  
   112  // NewAccessControlCaller creates a new read-only instance of AccessControl, bound to a specific deployed contract.
   113  func NewAccessControlCaller(address common.Address, caller bind.ContractCaller) (*AccessControlCaller, error) {
   114  	contract, err := bindAccessControl(address, caller, nil, nil)
   115  	if err != nil {
   116  		return nil, err
   117  	}
   118  	return &AccessControlCaller{contract: contract}, nil
   119  }
   120  
   121  // NewAccessControlTransactor creates a new write-only instance of AccessControl, bound to a specific deployed contract.
   122  func NewAccessControlTransactor(address common.Address, transactor bind.ContractTransactor) (*AccessControlTransactor, error) {
   123  	contract, err := bindAccessControl(address, nil, transactor, nil)
   124  	if err != nil {
   125  		return nil, err
   126  	}
   127  	return &AccessControlTransactor{contract: contract}, nil
   128  }
   129  
   130  // NewAccessControlFilterer creates a new log filterer instance of AccessControl, bound to a specific deployed contract.
   131  func NewAccessControlFilterer(address common.Address, filterer bind.ContractFilterer) (*AccessControlFilterer, error) {
   132  	contract, err := bindAccessControl(address, nil, nil, filterer)
   133  	if err != nil {
   134  		return nil, err
   135  	}
   136  	return &AccessControlFilterer{contract: contract}, nil
   137  }
   138  
   139  // bindAccessControl binds a generic wrapper to an already deployed contract.
   140  func bindAccessControl(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   141  	parsed, err := abi.JSON(strings.NewReader(AccessControlABI))
   142  	if err != nil {
   143  		return nil, err
   144  	}
   145  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   146  }
   147  
   148  // Call invokes the (constant) contract method with params as input values and
   149  // sets the output to result. The result type might be a single field for simple
   150  // returns, a slice of interfaces for anonymous returns and a struct for named
   151  // returns.
   152  func (_AccessControl *AccessControlRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   153  	return _AccessControl.Contract.AccessControlCaller.contract.Call(opts, result, method, params...)
   154  }
   155  
   156  // Transfer initiates a plain transaction to move funds to the contract, calling
   157  // its default method if one is available.
   158  func (_AccessControl *AccessControlRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   159  	return _AccessControl.Contract.AccessControlTransactor.contract.Transfer(opts)
   160  }
   161  
   162  // Transact invokes the (paid) contract method with params as input values.
   163  func (_AccessControl *AccessControlRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   164  	return _AccessControl.Contract.AccessControlTransactor.contract.Transact(opts, method, params...)
   165  }
   166  
   167  // Call invokes the (constant) contract method with params as input values and
   168  // sets the output to result. The result type might be a single field for simple
   169  // returns, a slice of interfaces for anonymous returns and a struct for named
   170  // returns.
   171  func (_AccessControl *AccessControlCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   172  	return _AccessControl.Contract.contract.Call(opts, result, method, params...)
   173  }
   174  
   175  // Transfer initiates a plain transaction to move funds to the contract, calling
   176  // its default method if one is available.
   177  func (_AccessControl *AccessControlTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   178  	return _AccessControl.Contract.contract.Transfer(opts)
   179  }
   180  
   181  // Transact invokes the (paid) contract method with params as input values.
   182  func (_AccessControl *AccessControlTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   183  	return _AccessControl.Contract.contract.Transact(opts, method, params...)
   184  }
   185  
   186  // DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf.
   187  //
   188  // Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32)
   189  func (_AccessControl *AccessControlCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) {
   190  	var out []interface{}
   191  	err := _AccessControl.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE")
   192  
   193  	if err != nil {
   194  		return *new([32]byte), err
   195  	}
   196  
   197  	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
   198  
   199  	return out0, err
   200  
   201  }
   202  
   203  // DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf.
   204  //
   205  // Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32)
   206  func (_AccessControl *AccessControlSession) DEFAULTADMINROLE() ([32]byte, error) {
   207  	return _AccessControl.Contract.DEFAULTADMINROLE(&_AccessControl.CallOpts)
   208  }
   209  
   210  // DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf.
   211  //
   212  // Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32)
   213  func (_AccessControl *AccessControlCallerSession) DEFAULTADMINROLE() ([32]byte, error) {
   214  	return _AccessControl.Contract.DEFAULTADMINROLE(&_AccessControl.CallOpts)
   215  }
   216  
   217  // GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3.
   218  //
   219  // Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32)
   220  func (_AccessControl *AccessControlCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) {
   221  	var out []interface{}
   222  	err := _AccessControl.contract.Call(opts, &out, "getRoleAdmin", role)
   223  
   224  	if err != nil {
   225  		return *new([32]byte), err
   226  	}
   227  
   228  	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
   229  
   230  	return out0, err
   231  
   232  }
   233  
   234  // GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3.
   235  //
   236  // Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32)
   237  func (_AccessControl *AccessControlSession) GetRoleAdmin(role [32]byte) ([32]byte, error) {
   238  	return _AccessControl.Contract.GetRoleAdmin(&_AccessControl.CallOpts, role)
   239  }
   240  
   241  // GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3.
   242  //
   243  // Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32)
   244  func (_AccessControl *AccessControlCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) {
   245  	return _AccessControl.Contract.GetRoleAdmin(&_AccessControl.CallOpts, role)
   246  }
   247  
   248  // GetRoleMember is a free data retrieval call binding the contract method 0x9010d07c.
   249  //
   250  // Solidity: function getRoleMember(bytes32 role, uint256 index) view returns(address)
   251  func (_AccessControl *AccessControlCaller) GetRoleMember(opts *bind.CallOpts, role [32]byte, index *big.Int) (common.Address, error) {
   252  	var out []interface{}
   253  	err := _AccessControl.contract.Call(opts, &out, "getRoleMember", role, index)
   254  
   255  	if err != nil {
   256  		return *new(common.Address), err
   257  	}
   258  
   259  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
   260  
   261  	return out0, err
   262  
   263  }
   264  
   265  // GetRoleMember is a free data retrieval call binding the contract method 0x9010d07c.
   266  //
   267  // Solidity: function getRoleMember(bytes32 role, uint256 index) view returns(address)
   268  func (_AccessControl *AccessControlSession) GetRoleMember(role [32]byte, index *big.Int) (common.Address, error) {
   269  	return _AccessControl.Contract.GetRoleMember(&_AccessControl.CallOpts, role, index)
   270  }
   271  
   272  // GetRoleMember is a free data retrieval call binding the contract method 0x9010d07c.
   273  //
   274  // Solidity: function getRoleMember(bytes32 role, uint256 index) view returns(address)
   275  func (_AccessControl *AccessControlCallerSession) GetRoleMember(role [32]byte, index *big.Int) (common.Address, error) {
   276  	return _AccessControl.Contract.GetRoleMember(&_AccessControl.CallOpts, role, index)
   277  }
   278  
   279  // GetRoleMemberCount is a free data retrieval call binding the contract method 0xca15c873.
   280  //
   281  // Solidity: function getRoleMemberCount(bytes32 role) view returns(uint256)
   282  func (_AccessControl *AccessControlCaller) GetRoleMemberCount(opts *bind.CallOpts, role [32]byte) (*big.Int, error) {
   283  	var out []interface{}
   284  	err := _AccessControl.contract.Call(opts, &out, "getRoleMemberCount", role)
   285  
   286  	if err != nil {
   287  		return *new(*big.Int), err
   288  	}
   289  
   290  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   291  
   292  	return out0, err
   293  
   294  }
   295  
   296  // GetRoleMemberCount is a free data retrieval call binding the contract method 0xca15c873.
   297  //
   298  // Solidity: function getRoleMemberCount(bytes32 role) view returns(uint256)
   299  func (_AccessControl *AccessControlSession) GetRoleMemberCount(role [32]byte) (*big.Int, error) {
   300  	return _AccessControl.Contract.GetRoleMemberCount(&_AccessControl.CallOpts, role)
   301  }
   302  
   303  // GetRoleMemberCount is a free data retrieval call binding the contract method 0xca15c873.
   304  //
   305  // Solidity: function getRoleMemberCount(bytes32 role) view returns(uint256)
   306  func (_AccessControl *AccessControlCallerSession) GetRoleMemberCount(role [32]byte) (*big.Int, error) {
   307  	return _AccessControl.Contract.GetRoleMemberCount(&_AccessControl.CallOpts, role)
   308  }
   309  
   310  // HasRole is a free data retrieval call binding the contract method 0x91d14854.
   311  //
   312  // Solidity: function hasRole(bytes32 role, address account) view returns(bool)
   313  func (_AccessControl *AccessControlCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) {
   314  	var out []interface{}
   315  	err := _AccessControl.contract.Call(opts, &out, "hasRole", role, account)
   316  
   317  	if err != nil {
   318  		return *new(bool), err
   319  	}
   320  
   321  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
   322  
   323  	return out0, err
   324  
   325  }
   326  
   327  // HasRole is a free data retrieval call binding the contract method 0x91d14854.
   328  //
   329  // Solidity: function hasRole(bytes32 role, address account) view returns(bool)
   330  func (_AccessControl *AccessControlSession) HasRole(role [32]byte, account common.Address) (bool, error) {
   331  	return _AccessControl.Contract.HasRole(&_AccessControl.CallOpts, role, account)
   332  }
   333  
   334  // HasRole is a free data retrieval call binding the contract method 0x91d14854.
   335  //
   336  // Solidity: function hasRole(bytes32 role, address account) view returns(bool)
   337  func (_AccessControl *AccessControlCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) {
   338  	return _AccessControl.Contract.HasRole(&_AccessControl.CallOpts, role, account)
   339  }
   340  
   341  // GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d.
   342  //
   343  // Solidity: function grantRole(bytes32 role, address account) returns()
   344  func (_AccessControl *AccessControlTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) {
   345  	return _AccessControl.contract.Transact(opts, "grantRole", role, account)
   346  }
   347  
   348  // GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d.
   349  //
   350  // Solidity: function grantRole(bytes32 role, address account) returns()
   351  func (_AccessControl *AccessControlSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) {
   352  	return _AccessControl.Contract.GrantRole(&_AccessControl.TransactOpts, role, account)
   353  }
   354  
   355  // GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d.
   356  //
   357  // Solidity: function grantRole(bytes32 role, address account) returns()
   358  func (_AccessControl *AccessControlTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) {
   359  	return _AccessControl.Contract.GrantRole(&_AccessControl.TransactOpts, role, account)
   360  }
   361  
   362  // RenounceRole is a paid mutator transaction binding the contract method 0x36568abe.
   363  //
   364  // Solidity: function renounceRole(bytes32 role, address account) returns()
   365  func (_AccessControl *AccessControlTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) {
   366  	return _AccessControl.contract.Transact(opts, "renounceRole", role, account)
   367  }
   368  
   369  // RenounceRole is a paid mutator transaction binding the contract method 0x36568abe.
   370  //
   371  // Solidity: function renounceRole(bytes32 role, address account) returns()
   372  func (_AccessControl *AccessControlSession) RenounceRole(role [32]byte, account common.Address) (*types.Transaction, error) {
   373  	return _AccessControl.Contract.RenounceRole(&_AccessControl.TransactOpts, role, account)
   374  }
   375  
   376  // RenounceRole is a paid mutator transaction binding the contract method 0x36568abe.
   377  //
   378  // Solidity: function renounceRole(bytes32 role, address account) returns()
   379  func (_AccessControl *AccessControlTransactorSession) RenounceRole(role [32]byte, account common.Address) (*types.Transaction, error) {
   380  	return _AccessControl.Contract.RenounceRole(&_AccessControl.TransactOpts, role, account)
   381  }
   382  
   383  // RevokeRole is a paid mutator transaction binding the contract method 0xd547741f.
   384  //
   385  // Solidity: function revokeRole(bytes32 role, address account) returns()
   386  func (_AccessControl *AccessControlTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) {
   387  	return _AccessControl.contract.Transact(opts, "revokeRole", role, account)
   388  }
   389  
   390  // RevokeRole is a paid mutator transaction binding the contract method 0xd547741f.
   391  //
   392  // Solidity: function revokeRole(bytes32 role, address account) returns()
   393  func (_AccessControl *AccessControlSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) {
   394  	return _AccessControl.Contract.RevokeRole(&_AccessControl.TransactOpts, role, account)
   395  }
   396  
   397  // RevokeRole is a paid mutator transaction binding the contract method 0xd547741f.
   398  //
   399  // Solidity: function revokeRole(bytes32 role, address account) returns()
   400  func (_AccessControl *AccessControlTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) {
   401  	return _AccessControl.Contract.RevokeRole(&_AccessControl.TransactOpts, role, account)
   402  }
   403  
   404  // AccessControlRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the AccessControl contract.
   405  type AccessControlRoleGrantedIterator struct {
   406  	Event *AccessControlRoleGranted // Event containing the contract specifics and raw log
   407  
   408  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   409  	event    string              // Event name to use for unpacking event data
   410  
   411  	logs chan types.Log        // Log channel receiving the found contract events
   412  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   413  	done bool                  // Whether the subscription completed delivering logs
   414  	fail error                 // Occurred error to stop iteration
   415  }
   416  
   417  // Next advances the iterator to the subsequent event, returning whether there
   418  // are any more events found. In case of a retrieval or parsing error, false is
   419  // returned and Error() can be queried for the exact failure.
   420  func (it *AccessControlRoleGrantedIterator) Next() bool {
   421  	// If the iterator failed, stop iterating
   422  	if it.fail != nil {
   423  		return false
   424  	}
   425  	// If the iterator completed, deliver directly whatever's available
   426  	if it.done {
   427  		select {
   428  		case log := <-it.logs:
   429  			it.Event = new(AccessControlRoleGranted)
   430  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   431  				it.fail = err
   432  				return false
   433  			}
   434  			it.Event.Raw = log
   435  			return true
   436  
   437  		default:
   438  			return false
   439  		}
   440  	}
   441  	// Iterator still in progress, wait for either a data or an error event
   442  	select {
   443  	case log := <-it.logs:
   444  		it.Event = new(AccessControlRoleGranted)
   445  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   446  			it.fail = err
   447  			return false
   448  		}
   449  		it.Event.Raw = log
   450  		return true
   451  
   452  	case err := <-it.sub.Err():
   453  		it.done = true
   454  		it.fail = err
   455  		return it.Next()
   456  	}
   457  }
   458  
   459  // Error returns any retrieval or parsing error occurred during filtering.
   460  func (it *AccessControlRoleGrantedIterator) Error() error {
   461  	return it.fail
   462  }
   463  
   464  // Close terminates the iteration process, releasing any pending underlying
   465  // resources.
   466  func (it *AccessControlRoleGrantedIterator) Close() error {
   467  	it.sub.Unsubscribe()
   468  	return nil
   469  }
   470  
   471  // AccessControlRoleGranted represents a RoleGranted event raised by the AccessControl contract.
   472  type AccessControlRoleGranted struct {
   473  	Role    [32]byte
   474  	Account common.Address
   475  	Sender  common.Address
   476  	Raw     types.Log // Blockchain specific contextual infos
   477  }
   478  
   479  // FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d.
   480  //
   481  // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
   482  func (_AccessControl *AccessControlFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*AccessControlRoleGrantedIterator, error) {
   483  
   484  	var roleRule []interface{}
   485  	for _, roleItem := range role {
   486  		roleRule = append(roleRule, roleItem)
   487  	}
   488  	var accountRule []interface{}
   489  	for _, accountItem := range account {
   490  		accountRule = append(accountRule, accountItem)
   491  	}
   492  	var senderRule []interface{}
   493  	for _, senderItem := range sender {
   494  		senderRule = append(senderRule, senderItem)
   495  	}
   496  
   497  	logs, sub, err := _AccessControl.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule)
   498  	if err != nil {
   499  		return nil, err
   500  	}
   501  	return &AccessControlRoleGrantedIterator{contract: _AccessControl.contract, event: "RoleGranted", logs: logs, sub: sub}, nil
   502  }
   503  
   504  // WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d.
   505  //
   506  // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
   507  func (_AccessControl *AccessControlFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *AccessControlRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) {
   508  
   509  	var roleRule []interface{}
   510  	for _, roleItem := range role {
   511  		roleRule = append(roleRule, roleItem)
   512  	}
   513  	var accountRule []interface{}
   514  	for _, accountItem := range account {
   515  		accountRule = append(accountRule, accountItem)
   516  	}
   517  	var senderRule []interface{}
   518  	for _, senderItem := range sender {
   519  		senderRule = append(senderRule, senderItem)
   520  	}
   521  
   522  	logs, sub, err := _AccessControl.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule)
   523  	if err != nil {
   524  		return nil, err
   525  	}
   526  	return event.NewSubscription(func(quit <-chan struct{}) error {
   527  		defer sub.Unsubscribe()
   528  		for {
   529  			select {
   530  			case log := <-logs:
   531  				// New log arrived, parse the event and forward to the user
   532  				event := new(AccessControlRoleGranted)
   533  				if err := _AccessControl.contract.UnpackLog(event, "RoleGranted", log); err != nil {
   534  					return err
   535  				}
   536  				event.Raw = log
   537  
   538  				select {
   539  				case sink <- event:
   540  				case err := <-sub.Err():
   541  					return err
   542  				case <-quit:
   543  					return nil
   544  				}
   545  			case err := <-sub.Err():
   546  				return err
   547  			case <-quit:
   548  				return nil
   549  			}
   550  		}
   551  	}), nil
   552  }
   553  
   554  // ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d.
   555  //
   556  // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
   557  func (_AccessControl *AccessControlFilterer) ParseRoleGranted(log types.Log) (*AccessControlRoleGranted, error) {
   558  	event := new(AccessControlRoleGranted)
   559  	if err := _AccessControl.contract.UnpackLog(event, "RoleGranted", log); err != nil {
   560  		return nil, err
   561  	}
   562  	event.Raw = log
   563  	return event, nil
   564  }
   565  
   566  // AccessControlRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the AccessControl contract.
   567  type AccessControlRoleRevokedIterator struct {
   568  	Event *AccessControlRoleRevoked // Event containing the contract specifics and raw log
   569  
   570  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   571  	event    string              // Event name to use for unpacking event data
   572  
   573  	logs chan types.Log        // Log channel receiving the found contract events
   574  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   575  	done bool                  // Whether the subscription completed delivering logs
   576  	fail error                 // Occurred error to stop iteration
   577  }
   578  
   579  // Next advances the iterator to the subsequent event, returning whether there
   580  // are any more events found. In case of a retrieval or parsing error, false is
   581  // returned and Error() can be queried for the exact failure.
   582  func (it *AccessControlRoleRevokedIterator) Next() bool {
   583  	// If the iterator failed, stop iterating
   584  	if it.fail != nil {
   585  		return false
   586  	}
   587  	// If the iterator completed, deliver directly whatever's available
   588  	if it.done {
   589  		select {
   590  		case log := <-it.logs:
   591  			it.Event = new(AccessControlRoleRevoked)
   592  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   593  				it.fail = err
   594  				return false
   595  			}
   596  			it.Event.Raw = log
   597  			return true
   598  
   599  		default:
   600  			return false
   601  		}
   602  	}
   603  	// Iterator still in progress, wait for either a data or an error event
   604  	select {
   605  	case log := <-it.logs:
   606  		it.Event = new(AccessControlRoleRevoked)
   607  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   608  			it.fail = err
   609  			return false
   610  		}
   611  		it.Event.Raw = log
   612  		return true
   613  
   614  	case err := <-it.sub.Err():
   615  		it.done = true
   616  		it.fail = err
   617  		return it.Next()
   618  	}
   619  }
   620  
   621  // Error returns any retrieval or parsing error occurred during filtering.
   622  func (it *AccessControlRoleRevokedIterator) Error() error {
   623  	return it.fail
   624  }
   625  
   626  // Close terminates the iteration process, releasing any pending underlying
   627  // resources.
   628  func (it *AccessControlRoleRevokedIterator) Close() error {
   629  	it.sub.Unsubscribe()
   630  	return nil
   631  }
   632  
   633  // AccessControlRoleRevoked represents a RoleRevoked event raised by the AccessControl contract.
   634  type AccessControlRoleRevoked struct {
   635  	Role    [32]byte
   636  	Account common.Address
   637  	Sender  common.Address
   638  	Raw     types.Log // Blockchain specific contextual infos
   639  }
   640  
   641  // FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b.
   642  //
   643  // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
   644  func (_AccessControl *AccessControlFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*AccessControlRoleRevokedIterator, error) {
   645  
   646  	var roleRule []interface{}
   647  	for _, roleItem := range role {
   648  		roleRule = append(roleRule, roleItem)
   649  	}
   650  	var accountRule []interface{}
   651  	for _, accountItem := range account {
   652  		accountRule = append(accountRule, accountItem)
   653  	}
   654  	var senderRule []interface{}
   655  	for _, senderItem := range sender {
   656  		senderRule = append(senderRule, senderItem)
   657  	}
   658  
   659  	logs, sub, err := _AccessControl.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule)
   660  	if err != nil {
   661  		return nil, err
   662  	}
   663  	return &AccessControlRoleRevokedIterator{contract: _AccessControl.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil
   664  }
   665  
   666  // WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b.
   667  //
   668  // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
   669  func (_AccessControl *AccessControlFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *AccessControlRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) {
   670  
   671  	var roleRule []interface{}
   672  	for _, roleItem := range role {
   673  		roleRule = append(roleRule, roleItem)
   674  	}
   675  	var accountRule []interface{}
   676  	for _, accountItem := range account {
   677  		accountRule = append(accountRule, accountItem)
   678  	}
   679  	var senderRule []interface{}
   680  	for _, senderItem := range sender {
   681  		senderRule = append(senderRule, senderItem)
   682  	}
   683  
   684  	logs, sub, err := _AccessControl.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule)
   685  	if err != nil {
   686  		return nil, err
   687  	}
   688  	return event.NewSubscription(func(quit <-chan struct{}) error {
   689  		defer sub.Unsubscribe()
   690  		for {
   691  			select {
   692  			case log := <-logs:
   693  				// New log arrived, parse the event and forward to the user
   694  				event := new(AccessControlRoleRevoked)
   695  				if err := _AccessControl.contract.UnpackLog(event, "RoleRevoked", log); err != nil {
   696  					return err
   697  				}
   698  				event.Raw = log
   699  
   700  				select {
   701  				case sink <- event:
   702  				case err := <-sub.Err():
   703  					return err
   704  				case <-quit:
   705  					return nil
   706  				}
   707  			case err := <-sub.Err():
   708  				return err
   709  			case <-quit:
   710  				return nil
   711  			}
   712  		}
   713  	}), nil
   714  }
   715  
   716  // ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b.
   717  //
   718  // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
   719  func (_AccessControl *AccessControlFilterer) ParseRoleRevoked(log types.Log) (*AccessControlRoleRevoked, error) {
   720  	event := new(AccessControlRoleRevoked)
   721  	if err := _AccessControl.contract.UnpackLog(event, "RoleRevoked", log); err != nil {
   722  		return nil, err
   723  	}
   724  	event.Raw = log
   725  	return event, nil
   726  }
   727  
   728  // AddressABI is the input ABI used to generate the binding from.
   729  const AddressABI = "[]"
   730  
   731  // AddressBin is the compiled bytecode used for deploying new contracts.
   732  var AddressBin = "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202b0eb88c4c4349fe220768698c4f9fc125177f16e50e87b66b8c7d7ec78951ed64736f6c63430006060033"
   733  
   734  // DeployAddress deploys a new Ethereum contract, binding an instance of Address to it.
   735  func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) {
   736  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
   737  	if err != nil {
   738  		return common.Address{}, nil, nil, err
   739  	}
   740  
   741  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(AddressBin), backend)
   742  	if err != nil {
   743  		return common.Address{}, nil, nil, err
   744  	}
   745  	return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
   746  }
   747  
   748  // Address is an auto generated Go binding around an Ethereum contract.
   749  type Address struct {
   750  	AddressCaller     // Read-only binding to the contract
   751  	AddressTransactor // Write-only binding to the contract
   752  	AddressFilterer   // Log filterer for contract events
   753  }
   754  
   755  // AddressCaller is an auto generated read-only Go binding around an Ethereum contract.
   756  type AddressCaller struct {
   757  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   758  }
   759  
   760  // AddressTransactor is an auto generated write-only Go binding around an Ethereum contract.
   761  type AddressTransactor struct {
   762  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   763  }
   764  
   765  // AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   766  type AddressFilterer struct {
   767  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   768  }
   769  
   770  // AddressSession is an auto generated Go binding around an Ethereum contract,
   771  // with pre-set call and transact options.
   772  type AddressSession struct {
   773  	Contract     *Address          // Generic contract binding to set the session for
   774  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   775  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   776  }
   777  
   778  // AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   779  // with pre-set call options.
   780  type AddressCallerSession struct {
   781  	Contract *AddressCaller // Generic contract caller binding to set the session for
   782  	CallOpts bind.CallOpts  // Call options to use throughout this session
   783  }
   784  
   785  // AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   786  // with pre-set transact options.
   787  type AddressTransactorSession struct {
   788  	Contract     *AddressTransactor // Generic contract transactor binding to set the session for
   789  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
   790  }
   791  
   792  // AddressRaw is an auto generated low-level Go binding around an Ethereum contract.
   793  type AddressRaw struct {
   794  	Contract *Address // Generic contract binding to access the raw methods on
   795  }
   796  
   797  // AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   798  type AddressCallerRaw struct {
   799  	Contract *AddressCaller // Generic read-only contract binding to access the raw methods on
   800  }
   801  
   802  // AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   803  type AddressTransactorRaw struct {
   804  	Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on
   805  }
   806  
   807  // NewAddress creates a new instance of Address, bound to a specific deployed contract.
   808  func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) {
   809  	contract, err := bindAddress(address, backend, backend, backend)
   810  	if err != nil {
   811  		return nil, err
   812  	}
   813  	return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
   814  }
   815  
   816  // NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract.
   817  func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) {
   818  	contract, err := bindAddress(address, caller, nil, nil)
   819  	if err != nil {
   820  		return nil, err
   821  	}
   822  	return &AddressCaller{contract: contract}, nil
   823  }
   824  
   825  // NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract.
   826  func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) {
   827  	contract, err := bindAddress(address, nil, transactor, nil)
   828  	if err != nil {
   829  		return nil, err
   830  	}
   831  	return &AddressTransactor{contract: contract}, nil
   832  }
   833  
   834  // NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract.
   835  func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) {
   836  	contract, err := bindAddress(address, nil, nil, filterer)
   837  	if err != nil {
   838  		return nil, err
   839  	}
   840  	return &AddressFilterer{contract: contract}, nil
   841  }
   842  
   843  // bindAddress binds a generic wrapper to an already deployed contract.
   844  func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   845  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
   846  	if err != nil {
   847  		return nil, err
   848  	}
   849  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   850  }
   851  
   852  // Call invokes the (constant) contract method with params as input values and
   853  // sets the output to result. The result type might be a single field for simple
   854  // returns, a slice of interfaces for anonymous returns and a struct for named
   855  // returns.
   856  func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   857  	return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...)
   858  }
   859  
   860  // Transfer initiates a plain transaction to move funds to the contract, calling
   861  // its default method if one is available.
   862  func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   863  	return _Address.Contract.AddressTransactor.contract.Transfer(opts)
   864  }
   865  
   866  // Transact invokes the (paid) contract method with params as input values.
   867  func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   868  	return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...)
   869  }
   870  
   871  // Call invokes the (constant) contract method with params as input values and
   872  // sets the output to result. The result type might be a single field for simple
   873  // returns, a slice of interfaces for anonymous returns and a struct for named
   874  // returns.
   875  func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   876  	return _Address.Contract.contract.Call(opts, result, method, params...)
   877  }
   878  
   879  // Transfer initiates a plain transaction to move funds to the contract, calling
   880  // its default method if one is available.
   881  func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   882  	return _Address.Contract.contract.Transfer(opts)
   883  }
   884  
   885  // Transact invokes the (paid) contract method with params as input values.
   886  func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   887  	return _Address.Contract.contract.Transact(opts, method, params...)
   888  }
   889  
   890  // ContextABI is the input ABI used to generate the binding from.
   891  const ContextABI = "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]"
   892  
   893  // Context is an auto generated Go binding around an Ethereum contract.
   894  type Context struct {
   895  	ContextCaller     // Read-only binding to the contract
   896  	ContextTransactor // Write-only binding to the contract
   897  	ContextFilterer   // Log filterer for contract events
   898  }
   899  
   900  // ContextCaller is an auto generated read-only Go binding around an Ethereum contract.
   901  type ContextCaller struct {
   902  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   903  }
   904  
   905  // ContextTransactor is an auto generated write-only Go binding around an Ethereum contract.
   906  type ContextTransactor struct {
   907  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   908  }
   909  
   910  // ContextFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   911  type ContextFilterer struct {
   912  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   913  }
   914  
   915  // ContextSession is an auto generated Go binding around an Ethereum contract,
   916  // with pre-set call and transact options.
   917  type ContextSession struct {
   918  	Contract     *Context          // Generic contract binding to set the session for
   919  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   920  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   921  }
   922  
   923  // ContextCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   924  // with pre-set call options.
   925  type ContextCallerSession struct {
   926  	Contract *ContextCaller // Generic contract caller binding to set the session for
   927  	CallOpts bind.CallOpts  // Call options to use throughout this session
   928  }
   929  
   930  // ContextTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   931  // with pre-set transact options.
   932  type ContextTransactorSession struct {
   933  	Contract     *ContextTransactor // Generic contract transactor binding to set the session for
   934  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
   935  }
   936  
   937  // ContextRaw is an auto generated low-level Go binding around an Ethereum contract.
   938  type ContextRaw struct {
   939  	Contract *Context // Generic contract binding to access the raw methods on
   940  }
   941  
   942  // ContextCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   943  type ContextCallerRaw struct {
   944  	Contract *ContextCaller // Generic read-only contract binding to access the raw methods on
   945  }
   946  
   947  // ContextTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   948  type ContextTransactorRaw struct {
   949  	Contract *ContextTransactor // Generic write-only contract binding to access the raw methods on
   950  }
   951  
   952  // NewContext creates a new instance of Context, bound to a specific deployed contract.
   953  func NewContext(address common.Address, backend bind.ContractBackend) (*Context, error) {
   954  	contract, err := bindContext(address, backend, backend, backend)
   955  	if err != nil {
   956  		return nil, err
   957  	}
   958  	return &Context{ContextCaller: ContextCaller{contract: contract}, ContextTransactor: ContextTransactor{contract: contract}, ContextFilterer: ContextFilterer{contract: contract}}, nil
   959  }
   960  
   961  // NewContextCaller creates a new read-only instance of Context, bound to a specific deployed contract.
   962  func NewContextCaller(address common.Address, caller bind.ContractCaller) (*ContextCaller, error) {
   963  	contract, err := bindContext(address, caller, nil, nil)
   964  	if err != nil {
   965  		return nil, err
   966  	}
   967  	return &ContextCaller{contract: contract}, nil
   968  }
   969  
   970  // NewContextTransactor creates a new write-only instance of Context, bound to a specific deployed contract.
   971  func NewContextTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextTransactor, error) {
   972  	contract, err := bindContext(address, nil, transactor, nil)
   973  	if err != nil {
   974  		return nil, err
   975  	}
   976  	return &ContextTransactor{contract: contract}, nil
   977  }
   978  
   979  // NewContextFilterer creates a new log filterer instance of Context, bound to a specific deployed contract.
   980  func NewContextFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextFilterer, error) {
   981  	contract, err := bindContext(address, nil, nil, filterer)
   982  	if err != nil {
   983  		return nil, err
   984  	}
   985  	return &ContextFilterer{contract: contract}, nil
   986  }
   987  
   988  // bindContext binds a generic wrapper to an already deployed contract.
   989  func bindContext(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   990  	parsed, err := abi.JSON(strings.NewReader(ContextABI))
   991  	if err != nil {
   992  		return nil, err
   993  	}
   994  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   995  }
   996  
   997  // Call invokes the (constant) contract method with params as input values and
   998  // sets the output to result. The result type might be a single field for simple
   999  // returns, a slice of interfaces for anonymous returns and a struct for named
  1000  // returns.
  1001  func (_Context *ContextRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1002  	return _Context.Contract.ContextCaller.contract.Call(opts, result, method, params...)
  1003  }
  1004  
  1005  // Transfer initiates a plain transaction to move funds to the contract, calling
  1006  // its default method if one is available.
  1007  func (_Context *ContextRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1008  	return _Context.Contract.ContextTransactor.contract.Transfer(opts)
  1009  }
  1010  
  1011  // Transact invokes the (paid) contract method with params as input values.
  1012  func (_Context *ContextRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1013  	return _Context.Contract.ContextTransactor.contract.Transact(opts, method, params...)
  1014  }
  1015  
  1016  // Call invokes the (constant) contract method with params as input values and
  1017  // sets the output to result. The result type might be a single field for simple
  1018  // returns, a slice of interfaces for anonymous returns and a struct for named
  1019  // returns.
  1020  func (_Context *ContextCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1021  	return _Context.Contract.contract.Call(opts, result, method, params...)
  1022  }
  1023  
  1024  // Transfer initiates a plain transaction to move funds to the contract, calling
  1025  // its default method if one is available.
  1026  func (_Context *ContextTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1027  	return _Context.Contract.contract.Transfer(opts)
  1028  }
  1029  
  1030  // Transact invokes the (paid) contract method with params as input values.
  1031  func (_Context *ContextTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1032  	return _Context.Contract.contract.Transact(opts, method, params...)
  1033  }
  1034  
  1035  // ERC165ABI is the input ABI used to generate the binding from.
  1036  const ERC165ABI = "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"
  1037  
  1038  // ERC165FuncSigs maps the 4-byte function signature to its string representation.
  1039  var ERC165FuncSigs = map[string]string{
  1040  	"01ffc9a7": "supportsInterface(bytes4)",
  1041  }
  1042  
  1043  // ERC165 is an auto generated Go binding around an Ethereum contract.
  1044  type ERC165 struct {
  1045  	ERC165Caller     // Read-only binding to the contract
  1046  	ERC165Transactor // Write-only binding to the contract
  1047  	ERC165Filterer   // Log filterer for contract events
  1048  }
  1049  
  1050  // ERC165Caller is an auto generated read-only Go binding around an Ethereum contract.
  1051  type ERC165Caller struct {
  1052  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1053  }
  1054  
  1055  // ERC165Transactor is an auto generated write-only Go binding around an Ethereum contract.
  1056  type ERC165Transactor struct {
  1057  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1058  }
  1059  
  1060  // ERC165Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1061  type ERC165Filterer struct {
  1062  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1063  }
  1064  
  1065  // ERC165Session is an auto generated Go binding around an Ethereum contract,
  1066  // with pre-set call and transact options.
  1067  type ERC165Session struct {
  1068  	Contract     *ERC165           // Generic contract binding to set the session for
  1069  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1070  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1071  }
  1072  
  1073  // ERC165CallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1074  // with pre-set call options.
  1075  type ERC165CallerSession struct {
  1076  	Contract *ERC165Caller // Generic contract caller binding to set the session for
  1077  	CallOpts bind.CallOpts // Call options to use throughout this session
  1078  }
  1079  
  1080  // ERC165TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1081  // with pre-set transact options.
  1082  type ERC165TransactorSession struct {
  1083  	Contract     *ERC165Transactor // Generic contract transactor binding to set the session for
  1084  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1085  }
  1086  
  1087  // ERC165Raw is an auto generated low-level Go binding around an Ethereum contract.
  1088  type ERC165Raw struct {
  1089  	Contract *ERC165 // Generic contract binding to access the raw methods on
  1090  }
  1091  
  1092  // ERC165CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1093  type ERC165CallerRaw struct {
  1094  	Contract *ERC165Caller // Generic read-only contract binding to access the raw methods on
  1095  }
  1096  
  1097  // ERC165TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1098  type ERC165TransactorRaw struct {
  1099  	Contract *ERC165Transactor // Generic write-only contract binding to access the raw methods on
  1100  }
  1101  
  1102  // NewERC165 creates a new instance of ERC165, bound to a specific deployed contract.
  1103  func NewERC165(address common.Address, backend bind.ContractBackend) (*ERC165, error) {
  1104  	contract, err := bindERC165(address, backend, backend, backend)
  1105  	if err != nil {
  1106  		return nil, err
  1107  	}
  1108  	return &ERC165{ERC165Caller: ERC165Caller{contract: contract}, ERC165Transactor: ERC165Transactor{contract: contract}, ERC165Filterer: ERC165Filterer{contract: contract}}, nil
  1109  }
  1110  
  1111  // NewERC165Caller creates a new read-only instance of ERC165, bound to a specific deployed contract.
  1112  func NewERC165Caller(address common.Address, caller bind.ContractCaller) (*ERC165Caller, error) {
  1113  	contract, err := bindERC165(address, caller, nil, nil)
  1114  	if err != nil {
  1115  		return nil, err
  1116  	}
  1117  	return &ERC165Caller{contract: contract}, nil
  1118  }
  1119  
  1120  // NewERC165Transactor creates a new write-only instance of ERC165, bound to a specific deployed contract.
  1121  func NewERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC165Transactor, error) {
  1122  	contract, err := bindERC165(address, nil, transactor, nil)
  1123  	if err != nil {
  1124  		return nil, err
  1125  	}
  1126  	return &ERC165Transactor{contract: contract}, nil
  1127  }
  1128  
  1129  // NewERC165Filterer creates a new log filterer instance of ERC165, bound to a specific deployed contract.
  1130  func NewERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC165Filterer, error) {
  1131  	contract, err := bindERC165(address, nil, nil, filterer)
  1132  	if err != nil {
  1133  		return nil, err
  1134  	}
  1135  	return &ERC165Filterer{contract: contract}, nil
  1136  }
  1137  
  1138  // bindERC165 binds a generic wrapper to an already deployed contract.
  1139  func bindERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1140  	parsed, err := abi.JSON(strings.NewReader(ERC165ABI))
  1141  	if err != nil {
  1142  		return nil, err
  1143  	}
  1144  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1145  }
  1146  
  1147  // Call invokes the (constant) contract method with params as input values and
  1148  // sets the output to result. The result type might be a single field for simple
  1149  // returns, a slice of interfaces for anonymous returns and a struct for named
  1150  // returns.
  1151  func (_ERC165 *ERC165Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1152  	return _ERC165.Contract.ERC165Caller.contract.Call(opts, result, method, params...)
  1153  }
  1154  
  1155  // Transfer initiates a plain transaction to move funds to the contract, calling
  1156  // its default method if one is available.
  1157  func (_ERC165 *ERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1158  	return _ERC165.Contract.ERC165Transactor.contract.Transfer(opts)
  1159  }
  1160  
  1161  // Transact invokes the (paid) contract method with params as input values.
  1162  func (_ERC165 *ERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1163  	return _ERC165.Contract.ERC165Transactor.contract.Transact(opts, method, params...)
  1164  }
  1165  
  1166  // Call invokes the (constant) contract method with params as input values and
  1167  // sets the output to result. The result type might be a single field for simple
  1168  // returns, a slice of interfaces for anonymous returns and a struct for named
  1169  // returns.
  1170  func (_ERC165 *ERC165CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1171  	return _ERC165.Contract.contract.Call(opts, result, method, params...)
  1172  }
  1173  
  1174  // Transfer initiates a plain transaction to move funds to the contract, calling
  1175  // its default method if one is available.
  1176  func (_ERC165 *ERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1177  	return _ERC165.Contract.contract.Transfer(opts)
  1178  }
  1179  
  1180  // Transact invokes the (paid) contract method with params as input values.
  1181  func (_ERC165 *ERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1182  	return _ERC165.Contract.contract.Transact(opts, method, params...)
  1183  }
  1184  
  1185  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1186  //
  1187  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  1188  func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  1189  	var out []interface{}
  1190  	err := _ERC165.contract.Call(opts, &out, "supportsInterface", interfaceId)
  1191  
  1192  	if err != nil {
  1193  		return *new(bool), err
  1194  	}
  1195  
  1196  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1197  
  1198  	return out0, err
  1199  
  1200  }
  1201  
  1202  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1203  //
  1204  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  1205  func (_ERC165 *ERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
  1206  	return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId)
  1207  }
  1208  
  1209  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1210  //
  1211  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  1212  func (_ERC165 *ERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  1213  	return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId)
  1214  }
  1215  
  1216  // ERC721ABI is the input ABI used to generate the binding from.
  1217  const ERC721ABI = "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  1218  
  1219  // ERC721FuncSigs maps the 4-byte function signature to its string representation.
  1220  var ERC721FuncSigs = map[string]string{
  1221  	"095ea7b3": "approve(address,uint256)",
  1222  	"70a08231": "balanceOf(address)",
  1223  	"6c0360eb": "baseURI()",
  1224  	"081812fc": "getApproved(uint256)",
  1225  	"e985e9c5": "isApprovedForAll(address,address)",
  1226  	"06fdde03": "name()",
  1227  	"6352211e": "ownerOf(uint256)",
  1228  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  1229  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  1230  	"a22cb465": "setApprovalForAll(address,bool)",
  1231  	"01ffc9a7": "supportsInterface(bytes4)",
  1232  	"95d89b41": "symbol()",
  1233  	"4f6ccce7": "tokenByIndex(uint256)",
  1234  	"2f745c59": "tokenOfOwnerByIndex(address,uint256)",
  1235  	"c87b56dd": "tokenURI(uint256)",
  1236  	"18160ddd": "totalSupply()",
  1237  	"23b872dd": "transferFrom(address,address,uint256)",
  1238  }
  1239  
  1240  // ERC721Bin is the compiled bytecode used for deploying new contracts.
  1241  var ERC721Bin = "0x60806040523480156200001157600080fd5b5060405162001cd638038062001cd6833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405250620001bc91506301ffc9a760e01b90506001600160e01b036200024116565b8151620001d1906006906020850190620002c6565b508051620001e7906007906020840190620002c6565b50620002036380ac58cd60e01b6001600160e01b036200024116565b6200021e635b5e139f60e01b6001600160e01b036200024116565b6200023963780e9d6360e01b6001600160e01b036200024116565b50506200036b565b6001600160e01b03198082161415620002a1576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200030957805160ff191683800117855562000339565b8280016001018555821562000339579182015b82811115620003395782518255916020019190600101906200031c565b50620003479291506200034b565b5090565b6200036891905b8082111562000347576000815560010162000352565b90565b61195b806200037b6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80634f6ccce7116100a257806395d89b411161007157806395d89b4114610349578063a22cb46514610351578063b88d4fde1461037f578063c87b56dd14610445578063e985e9c5146104625761010b565b80634f6ccce7146102e15780636352211e146102fe5780636c0360eb1461031b57806370a08231146103235761010b565b806318160ddd116100de57806318160ddd1461022f57806323b872dd146102495780632f745c591461027f57806342842e0e146102ab5761010b565b806301ffc9a71461011057806306fdde031461014b578063081812fc146101c8578063095ea7b314610201575b600080fd5b6101376004803603602081101561012657600080fd5b50356001600160e01b031916610490565b604080519115158252519081900360200190f35b6101536104b3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018d578181015183820152602001610175565b50505050905090810190601f1680156101ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360208110156101de57600080fd5b5035610549565b604080516001600160a01b039092168252519081900360200190f35b61022d6004803603604081101561021757600080fd5b506001600160a01b0381351690602001356105ab565b005b610237610686565b60408051918252519081900360200190f35b61022d6004803603606081101561025f57600080fd5b506001600160a01b03813581169160208101359091169060400135610697565b6102376004803603604081101561029557600080fd5b506001600160a01b0381351690602001356106ee565b61022d600480360360608110156102c157600080fd5b506001600160a01b0381358116916020810135909116906040013561071f565b610237600480360360208110156102f757600080fd5b503561073a565b6101e56004803603602081101561031457600080fd5b5035610756565b610153610784565b6102376004803603602081101561033957600080fd5b50356001600160a01b03166107e5565b61015361084d565b61022d6004803603604081101561036757600080fd5b506001600160a01b03813516906020013515156108ae565b61022d6004803603608081101561039557600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184600183028401116401000000008311171561040457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109b3945050505050565b6101536004803603602081101561045b57600080fd5b5035610a11565b6101376004803603604081101561047857600080fd5b506001600160a01b0381358116916020013516610cb8565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b820191906000526020600020905b81548152906001019060200180831161052257829003601f168201915b5050505050905090565b600061055482610ce6565b61058f5760405162461bcd60e51b815260040180806020018281038252602c815260200180611850602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006105b682610756565b9050806001600160a01b0316836001600160a01b031614156106095760405162461bcd60e51b81526004018080602001828103825260218152602001806118d46021913960400191505060405180910390fd5b806001600160a01b031661061b610cf9565b6001600160a01b0316148061063c575061063c81610637610cf9565b610cb8565b6106775760405162461bcd60e51b81526004018080602001828103825260388152602001806117a36038913960400191505060405180910390fd5b6106818383610cfd565b505050565b60006106926002610d6b565b905090565b6106a86106a2610cf9565b82610d76565b6106e35760405162461bcd60e51b81526004018080602001828103825260318152602001806118f56031913960400191505060405180910390fd5b610681838383610e1a565b6001600160a01b0382166000908152600160205260408120610716908363ffffffff610f7816565b90505b92915050565b610681838383604051806020016040528060008152506109b3565b60008061074e60028463ffffffff610f8416565b509392505050565b600061071982604051806060016040528060298152602001611805602991396002919063ffffffff610fa016565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b60006001600160a01b03821661082c5760405162461bcd60e51b815260040180806020018281038252602a8152602001806117db602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061071990610d6b565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b6108b6610cf9565b6001600160a01b0316826001600160a01b0316141561091c576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000610929610cf9565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff19169215159290921790915561096d610cf9565b60408051841515815290516001600160a01b0392909216917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319181900360200190a35050565b6109c46109be610cf9565b83610d76565b6109ff5760405162461bcd60e51b81526004018080602001828103825260318152602001806118f56031913960400191505060405180910390fd5b610a0b84848484610fb7565b50505050565b6060610a1c82610ce6565b610a575760405162461bcd60e51b815260040180806020018281038252602f8152602001806118a5602f913960400191505060405180910390fd5b60008281526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610aec5780601f10610ac157610100808354040283529160200191610aec565b820191906000526020600020905b815481529060010190602001808311610acf57829003601f168201915b505060095493945050505060026000196101006001841615020190911604610b155790506104ae565b805115610be6576009816040516020018083805460018160011615610100020316600290048015610b7d5780601f10610b5b576101008083540402835291820191610b7d565b820191906000526020600020905b815481529060010190602001808311610b69575b5050825160208401908083835b60208310610ba95780518252601f199092019160209182019101610b8a565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150506104ae565b6009610bf184611009565b6040516020018083805460018160011615610100020316600290048015610c4f5780601f10610c2d576101008083540402835291820191610c4f565b820191906000526020600020905b815481529060010190602001808311610c3b575b5050825160208401908083835b60208310610c7b5780518252601f199092019160209182019101610c5c565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600061071960028363ffffffff6110e416565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610d3282610756565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610719826110f0565b6000610d8182610ce6565b610dbc5760405162461bcd60e51b815260040180806020018281038252602c815260200180611777602c913960400191505060405180910390fd5b6000610dc783610756565b9050806001600160a01b0316846001600160a01b03161480610e025750836001600160a01b0316610df784610549565b6001600160a01b0316145b80610e125750610e128185610cb8565b949350505050565b826001600160a01b0316610e2d82610756565b6001600160a01b031614610e725760405162461bcd60e51b815260040180806020018281038252602981526020018061187c6029913960400191505060405180910390fd5b6001600160a01b038216610eb75760405162461bcd60e51b81526004018080602001828103825260248152602001806117536024913960400191505060405180910390fd5b610ec2838383610681565b610ecd600082610cfd565b6001600160a01b0383166000908152600160205260409020610ef5908263ffffffff6110f416565b506001600160a01b0382166000908152600160205260409020610f1e908263ffffffff61110016565b50610f316002828463ffffffff61110c16565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60006107168383611122565b6000808080610f938686611186565b9097909650945050505050565b6000610fad848484611201565b90505b9392505050565b610fc2848484610e1a565b610fce848484846112cb565b610a0b5760405162461bcd60e51b81526004018080602001828103825260328152602001806117216032913960400191505060405180910390fd5b60608161102e57506040805180820190915260018152600360fc1b60208201526104ae565b8160005b811561104657600101600a82049150611032565b60608167ffffffffffffffff8111801561105f57600080fd5b506040519080825280601f01601f19166020018201604052801561108a576020820181803683370190505b50859350905060001982015b83156110db57600a840660300160f81b828280600190039350815181106110b957fe5b60200101906001600160f81b031916908160001a905350600a84049350611096565b50949350505050565b60006107168383611506565b5490565b6000610716838361151e565b600061071683836115e4565b6000610fad84846001600160a01b03851661162e565b815460009082106111645760405162461bcd60e51b81526004018080602001828103825260228152602001806116ff6022913960400191505060405180910390fd5b82600001828154811061117357fe5b9060005260206000200154905092915050565b8154600090819083106111ca5760405162461bcd60e51b815260040180806020018281038252602281526020018061182e6022913960400191505060405180910390fd5b60008460000184815481106111db57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161129c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611261578181015183820152602001611249565b50505050905090810190601f16801561128e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106112af57fe5b9060005260206000209060020201600101549150509392505050565b60006112df846001600160a01b03166116c5565b6112eb57506001610e12565b600060606001600160a01b038616630a85bd0160e11b611309610cf9565b89888860405160240180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561138257818101518382015260200161136a565b50505050905090810190601f1680156113af5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909a16999099178952518151919890975087965094509250829150849050835b602083106114175780518252601f1990920191602091820191016113f8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611479576040519150601f19603f3d011682016040523d82523d6000602084013e61147e565b606091505b5091509150816114cf578051156114985780518082602001fd5b60405162461bcd60e51b81526004018080602001828103825260328152602001806117216032913960400191505060405180910390fd5b60008180602001905160208110156114e657600080fd5b50516001600160e01b031916630a85bd0160e11b149350610e1292505050565b60009081526001919091016020526040902054151590565b600081815260018301602052604081205480156115da578354600019808301919081019060009087908390811061155157fe5b906000526020600020015490508087600001848154811061156e57fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061159e57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610719565b6000915050610719565b60006115f08383611506565b61162657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610719565b506000610719565b600082815260018401602052604081205480611693575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610fb0565b828560000160018303815481106116a657fe5b9060005260206000209060020201600101819055506000915050610fb0565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610e1257505015159291505056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220f6f422b16aa279e945d803b8a56bafd616bb3493ab0fb5195077df294a76a03c64736f6c63430006060033"
  1242  
  1243  // DeployERC721 deploys a new Ethereum contract, binding an instance of ERC721 to it.
  1244  func DeployERC721(auth *bind.TransactOpts, backend bind.ContractBackend, name string, symbol string) (common.Address, *types.Transaction, *ERC721, error) {
  1245  	parsed, err := abi.JSON(strings.NewReader(ERC721ABI))
  1246  	if err != nil {
  1247  		return common.Address{}, nil, nil, err
  1248  	}
  1249  
  1250  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC721Bin), backend, name, symbol)
  1251  	if err != nil {
  1252  		return common.Address{}, nil, nil, err
  1253  	}
  1254  	return address, tx, &ERC721{ERC721Caller: ERC721Caller{contract: contract}, ERC721Transactor: ERC721Transactor{contract: contract}, ERC721Filterer: ERC721Filterer{contract: contract}}, nil
  1255  }
  1256  
  1257  // ERC721 is an auto generated Go binding around an Ethereum contract.
  1258  type ERC721 struct {
  1259  	ERC721Caller     // Read-only binding to the contract
  1260  	ERC721Transactor // Write-only binding to the contract
  1261  	ERC721Filterer   // Log filterer for contract events
  1262  }
  1263  
  1264  // ERC721Caller is an auto generated read-only Go binding around an Ethereum contract.
  1265  type ERC721Caller struct {
  1266  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1267  }
  1268  
  1269  // ERC721Transactor is an auto generated write-only Go binding around an Ethereum contract.
  1270  type ERC721Transactor struct {
  1271  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1272  }
  1273  
  1274  // ERC721Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1275  type ERC721Filterer struct {
  1276  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1277  }
  1278  
  1279  // ERC721Session is an auto generated Go binding around an Ethereum contract,
  1280  // with pre-set call and transact options.
  1281  type ERC721Session struct {
  1282  	Contract     *ERC721           // Generic contract binding to set the session for
  1283  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1284  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1285  }
  1286  
  1287  // ERC721CallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1288  // with pre-set call options.
  1289  type ERC721CallerSession struct {
  1290  	Contract *ERC721Caller // Generic contract caller binding to set the session for
  1291  	CallOpts bind.CallOpts // Call options to use throughout this session
  1292  }
  1293  
  1294  // ERC721TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1295  // with pre-set transact options.
  1296  type ERC721TransactorSession struct {
  1297  	Contract     *ERC721Transactor // Generic contract transactor binding to set the session for
  1298  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1299  }
  1300  
  1301  // ERC721Raw is an auto generated low-level Go binding around an Ethereum contract.
  1302  type ERC721Raw struct {
  1303  	Contract *ERC721 // Generic contract binding to access the raw methods on
  1304  }
  1305  
  1306  // ERC721CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1307  type ERC721CallerRaw struct {
  1308  	Contract *ERC721Caller // Generic read-only contract binding to access the raw methods on
  1309  }
  1310  
  1311  // ERC721TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1312  type ERC721TransactorRaw struct {
  1313  	Contract *ERC721Transactor // Generic write-only contract binding to access the raw methods on
  1314  }
  1315  
  1316  // NewERC721 creates a new instance of ERC721, bound to a specific deployed contract.
  1317  func NewERC721(address common.Address, backend bind.ContractBackend) (*ERC721, error) {
  1318  	contract, err := bindERC721(address, backend, backend, backend)
  1319  	if err != nil {
  1320  		return nil, err
  1321  	}
  1322  	return &ERC721{ERC721Caller: ERC721Caller{contract: contract}, ERC721Transactor: ERC721Transactor{contract: contract}, ERC721Filterer: ERC721Filterer{contract: contract}}, nil
  1323  }
  1324  
  1325  // NewERC721Caller creates a new read-only instance of ERC721, bound to a specific deployed contract.
  1326  func NewERC721Caller(address common.Address, caller bind.ContractCaller) (*ERC721Caller, error) {
  1327  	contract, err := bindERC721(address, caller, nil, nil)
  1328  	if err != nil {
  1329  		return nil, err
  1330  	}
  1331  	return &ERC721Caller{contract: contract}, nil
  1332  }
  1333  
  1334  // NewERC721Transactor creates a new write-only instance of ERC721, bound to a specific deployed contract.
  1335  func NewERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC721Transactor, error) {
  1336  	contract, err := bindERC721(address, nil, transactor, nil)
  1337  	if err != nil {
  1338  		return nil, err
  1339  	}
  1340  	return &ERC721Transactor{contract: contract}, nil
  1341  }
  1342  
  1343  // NewERC721Filterer creates a new log filterer instance of ERC721, bound to a specific deployed contract.
  1344  func NewERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC721Filterer, error) {
  1345  	contract, err := bindERC721(address, nil, nil, filterer)
  1346  	if err != nil {
  1347  		return nil, err
  1348  	}
  1349  	return &ERC721Filterer{contract: contract}, nil
  1350  }
  1351  
  1352  // bindERC721 binds a generic wrapper to an already deployed contract.
  1353  func bindERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1354  	parsed, err := abi.JSON(strings.NewReader(ERC721ABI))
  1355  	if err != nil {
  1356  		return nil, err
  1357  	}
  1358  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1359  }
  1360  
  1361  // Call invokes the (constant) contract method with params as input values and
  1362  // sets the output to result. The result type might be a single field for simple
  1363  // returns, a slice of interfaces for anonymous returns and a struct for named
  1364  // returns.
  1365  func (_ERC721 *ERC721Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1366  	return _ERC721.Contract.ERC721Caller.contract.Call(opts, result, method, params...)
  1367  }
  1368  
  1369  // Transfer initiates a plain transaction to move funds to the contract, calling
  1370  // its default method if one is available.
  1371  func (_ERC721 *ERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1372  	return _ERC721.Contract.ERC721Transactor.contract.Transfer(opts)
  1373  }
  1374  
  1375  // Transact invokes the (paid) contract method with params as input values.
  1376  func (_ERC721 *ERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1377  	return _ERC721.Contract.ERC721Transactor.contract.Transact(opts, method, params...)
  1378  }
  1379  
  1380  // Call invokes the (constant) contract method with params as input values and
  1381  // sets the output to result. The result type might be a single field for simple
  1382  // returns, a slice of interfaces for anonymous returns and a struct for named
  1383  // returns.
  1384  func (_ERC721 *ERC721CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1385  	return _ERC721.Contract.contract.Call(opts, result, method, params...)
  1386  }
  1387  
  1388  // Transfer initiates a plain transaction to move funds to the contract, calling
  1389  // its default method if one is available.
  1390  func (_ERC721 *ERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1391  	return _ERC721.Contract.contract.Transfer(opts)
  1392  }
  1393  
  1394  // Transact invokes the (paid) contract method with params as input values.
  1395  func (_ERC721 *ERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1396  	return _ERC721.Contract.contract.Transact(opts, method, params...)
  1397  }
  1398  
  1399  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1400  //
  1401  // Solidity: function balanceOf(address owner) view returns(uint256)
  1402  func (_ERC721 *ERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  1403  	var out []interface{}
  1404  	err := _ERC721.contract.Call(opts, &out, "balanceOf", owner)
  1405  
  1406  	if err != nil {
  1407  		return *new(*big.Int), err
  1408  	}
  1409  
  1410  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1411  
  1412  	return out0, err
  1413  
  1414  }
  1415  
  1416  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1417  //
  1418  // Solidity: function balanceOf(address owner) view returns(uint256)
  1419  func (_ERC721 *ERC721Session) BalanceOf(owner common.Address) (*big.Int, error) {
  1420  	return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, owner)
  1421  }
  1422  
  1423  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1424  //
  1425  // Solidity: function balanceOf(address owner) view returns(uint256)
  1426  func (_ERC721 *ERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  1427  	return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, owner)
  1428  }
  1429  
  1430  // BaseURI is a free data retrieval call binding the contract method 0x6c0360eb.
  1431  //
  1432  // Solidity: function baseURI() view returns(string)
  1433  func (_ERC721 *ERC721Caller) BaseURI(opts *bind.CallOpts) (string, error) {
  1434  	var out []interface{}
  1435  	err := _ERC721.contract.Call(opts, &out, "baseURI")
  1436  
  1437  	if err != nil {
  1438  		return *new(string), err
  1439  	}
  1440  
  1441  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  1442  
  1443  	return out0, err
  1444  
  1445  }
  1446  
  1447  // BaseURI is a free data retrieval call binding the contract method 0x6c0360eb.
  1448  //
  1449  // Solidity: function baseURI() view returns(string)
  1450  func (_ERC721 *ERC721Session) BaseURI() (string, error) {
  1451  	return _ERC721.Contract.BaseURI(&_ERC721.CallOpts)
  1452  }
  1453  
  1454  // BaseURI is a free data retrieval call binding the contract method 0x6c0360eb.
  1455  //
  1456  // Solidity: function baseURI() view returns(string)
  1457  func (_ERC721 *ERC721CallerSession) BaseURI() (string, error) {
  1458  	return _ERC721.Contract.BaseURI(&_ERC721.CallOpts)
  1459  }
  1460  
  1461  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  1462  //
  1463  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  1464  func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  1465  	var out []interface{}
  1466  	err := _ERC721.contract.Call(opts, &out, "getApproved", tokenId)
  1467  
  1468  	if err != nil {
  1469  		return *new(common.Address), err
  1470  	}
  1471  
  1472  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1473  
  1474  	return out0, err
  1475  
  1476  }
  1477  
  1478  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  1479  //
  1480  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  1481  func (_ERC721 *ERC721Session) GetApproved(tokenId *big.Int) (common.Address, error) {
  1482  	return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId)
  1483  }
  1484  
  1485  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  1486  //
  1487  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  1488  func (_ERC721 *ERC721CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  1489  	return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId)
  1490  }
  1491  
  1492  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  1493  //
  1494  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  1495  func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  1496  	var out []interface{}
  1497  	err := _ERC721.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
  1498  
  1499  	if err != nil {
  1500  		return *new(bool), err
  1501  	}
  1502  
  1503  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1504  
  1505  	return out0, err
  1506  
  1507  }
  1508  
  1509  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  1510  //
  1511  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  1512  func (_ERC721 *ERC721Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  1513  	return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator)
  1514  }
  1515  
  1516  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  1517  //
  1518  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  1519  func (_ERC721 *ERC721CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  1520  	return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator)
  1521  }
  1522  
  1523  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  1524  //
  1525  // Solidity: function name() view returns(string)
  1526  func (_ERC721 *ERC721Caller) Name(opts *bind.CallOpts) (string, error) {
  1527  	var out []interface{}
  1528  	err := _ERC721.contract.Call(opts, &out, "name")
  1529  
  1530  	if err != nil {
  1531  		return *new(string), err
  1532  	}
  1533  
  1534  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  1535  
  1536  	return out0, err
  1537  
  1538  }
  1539  
  1540  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  1541  //
  1542  // Solidity: function name() view returns(string)
  1543  func (_ERC721 *ERC721Session) Name() (string, error) {
  1544  	return _ERC721.Contract.Name(&_ERC721.CallOpts)
  1545  }
  1546  
  1547  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  1548  //
  1549  // Solidity: function name() view returns(string)
  1550  func (_ERC721 *ERC721CallerSession) Name() (string, error) {
  1551  	return _ERC721.Contract.Name(&_ERC721.CallOpts)
  1552  }
  1553  
  1554  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  1555  //
  1556  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  1557  func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  1558  	var out []interface{}
  1559  	err := _ERC721.contract.Call(opts, &out, "ownerOf", tokenId)
  1560  
  1561  	if err != nil {
  1562  		return *new(common.Address), err
  1563  	}
  1564  
  1565  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  1566  
  1567  	return out0, err
  1568  
  1569  }
  1570  
  1571  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  1572  //
  1573  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  1574  func (_ERC721 *ERC721Session) OwnerOf(tokenId *big.Int) (common.Address, error) {
  1575  	return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId)
  1576  }
  1577  
  1578  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  1579  //
  1580  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  1581  func (_ERC721 *ERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  1582  	return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId)
  1583  }
  1584  
  1585  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1586  //
  1587  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  1588  func (_ERC721 *ERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  1589  	var out []interface{}
  1590  	err := _ERC721.contract.Call(opts, &out, "supportsInterface", interfaceId)
  1591  
  1592  	if err != nil {
  1593  		return *new(bool), err
  1594  	}
  1595  
  1596  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1597  
  1598  	return out0, err
  1599  
  1600  }
  1601  
  1602  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1603  //
  1604  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  1605  func (_ERC721 *ERC721Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
  1606  	return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId)
  1607  }
  1608  
  1609  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1610  //
  1611  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  1612  func (_ERC721 *ERC721CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  1613  	return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId)
  1614  }
  1615  
  1616  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  1617  //
  1618  // Solidity: function symbol() view returns(string)
  1619  func (_ERC721 *ERC721Caller) Symbol(opts *bind.CallOpts) (string, error) {
  1620  	var out []interface{}
  1621  	err := _ERC721.contract.Call(opts, &out, "symbol")
  1622  
  1623  	if err != nil {
  1624  		return *new(string), err
  1625  	}
  1626  
  1627  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  1628  
  1629  	return out0, err
  1630  
  1631  }
  1632  
  1633  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  1634  //
  1635  // Solidity: function symbol() view returns(string)
  1636  func (_ERC721 *ERC721Session) Symbol() (string, error) {
  1637  	return _ERC721.Contract.Symbol(&_ERC721.CallOpts)
  1638  }
  1639  
  1640  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  1641  //
  1642  // Solidity: function symbol() view returns(string)
  1643  func (_ERC721 *ERC721CallerSession) Symbol() (string, error) {
  1644  	return _ERC721.Contract.Symbol(&_ERC721.CallOpts)
  1645  }
  1646  
  1647  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  1648  //
  1649  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  1650  func (_ERC721 *ERC721Caller) TokenByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) {
  1651  	var out []interface{}
  1652  	err := _ERC721.contract.Call(opts, &out, "tokenByIndex", index)
  1653  
  1654  	if err != nil {
  1655  		return *new(*big.Int), err
  1656  	}
  1657  
  1658  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1659  
  1660  	return out0, err
  1661  
  1662  }
  1663  
  1664  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  1665  //
  1666  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  1667  func (_ERC721 *ERC721Session) TokenByIndex(index *big.Int) (*big.Int, error) {
  1668  	return _ERC721.Contract.TokenByIndex(&_ERC721.CallOpts, index)
  1669  }
  1670  
  1671  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  1672  //
  1673  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  1674  func (_ERC721 *ERC721CallerSession) TokenByIndex(index *big.Int) (*big.Int, error) {
  1675  	return _ERC721.Contract.TokenByIndex(&_ERC721.CallOpts, index)
  1676  }
  1677  
  1678  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  1679  //
  1680  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  1681  func (_ERC721 *ERC721Caller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) {
  1682  	var out []interface{}
  1683  	err := _ERC721.contract.Call(opts, &out, "tokenOfOwnerByIndex", owner, index)
  1684  
  1685  	if err != nil {
  1686  		return *new(*big.Int), err
  1687  	}
  1688  
  1689  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1690  
  1691  	return out0, err
  1692  
  1693  }
  1694  
  1695  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  1696  //
  1697  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  1698  func (_ERC721 *ERC721Session) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  1699  	return _ERC721.Contract.TokenOfOwnerByIndex(&_ERC721.CallOpts, owner, index)
  1700  }
  1701  
  1702  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  1703  //
  1704  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  1705  func (_ERC721 *ERC721CallerSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  1706  	return _ERC721.Contract.TokenOfOwnerByIndex(&_ERC721.CallOpts, owner, index)
  1707  }
  1708  
  1709  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  1710  //
  1711  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  1712  func (_ERC721 *ERC721Caller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
  1713  	var out []interface{}
  1714  	err := _ERC721.contract.Call(opts, &out, "tokenURI", tokenId)
  1715  
  1716  	if err != nil {
  1717  		return *new(string), err
  1718  	}
  1719  
  1720  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  1721  
  1722  	return out0, err
  1723  
  1724  }
  1725  
  1726  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  1727  //
  1728  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  1729  func (_ERC721 *ERC721Session) TokenURI(tokenId *big.Int) (string, error) {
  1730  	return _ERC721.Contract.TokenURI(&_ERC721.CallOpts, tokenId)
  1731  }
  1732  
  1733  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  1734  //
  1735  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  1736  func (_ERC721 *ERC721CallerSession) TokenURI(tokenId *big.Int) (string, error) {
  1737  	return _ERC721.Contract.TokenURI(&_ERC721.CallOpts, tokenId)
  1738  }
  1739  
  1740  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1741  //
  1742  // Solidity: function totalSupply() view returns(uint256)
  1743  func (_ERC721 *ERC721Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  1744  	var out []interface{}
  1745  	err := _ERC721.contract.Call(opts, &out, "totalSupply")
  1746  
  1747  	if err != nil {
  1748  		return *new(*big.Int), err
  1749  	}
  1750  
  1751  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1752  
  1753  	return out0, err
  1754  
  1755  }
  1756  
  1757  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1758  //
  1759  // Solidity: function totalSupply() view returns(uint256)
  1760  func (_ERC721 *ERC721Session) TotalSupply() (*big.Int, error) {
  1761  	return _ERC721.Contract.TotalSupply(&_ERC721.CallOpts)
  1762  }
  1763  
  1764  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1765  //
  1766  // Solidity: function totalSupply() view returns(uint256)
  1767  func (_ERC721 *ERC721CallerSession) TotalSupply() (*big.Int, error) {
  1768  	return _ERC721.Contract.TotalSupply(&_ERC721.CallOpts)
  1769  }
  1770  
  1771  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1772  //
  1773  // Solidity: function approve(address to, uint256 tokenId) returns()
  1774  func (_ERC721 *ERC721Transactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1775  	return _ERC721.contract.Transact(opts, "approve", to, tokenId)
  1776  }
  1777  
  1778  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1779  //
  1780  // Solidity: function approve(address to, uint256 tokenId) returns()
  1781  func (_ERC721 *ERC721Session) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1782  	return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId)
  1783  }
  1784  
  1785  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1786  //
  1787  // Solidity: function approve(address to, uint256 tokenId) returns()
  1788  func (_ERC721 *ERC721TransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1789  	return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId)
  1790  }
  1791  
  1792  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  1793  //
  1794  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  1795  func (_ERC721 *ERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1796  	return _ERC721.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  1797  }
  1798  
  1799  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  1800  //
  1801  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  1802  func (_ERC721 *ERC721Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1803  	return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
  1804  }
  1805  
  1806  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  1807  //
  1808  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  1809  func (_ERC721 *ERC721TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1810  	return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
  1811  }
  1812  
  1813  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  1814  //
  1815  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  1816  func (_ERC721 *ERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  1817  	return _ERC721.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
  1818  }
  1819  
  1820  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  1821  //
  1822  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  1823  func (_ERC721 *ERC721Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  1824  	return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, _data)
  1825  }
  1826  
  1827  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  1828  //
  1829  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  1830  func (_ERC721 *ERC721TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  1831  	return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, _data)
  1832  }
  1833  
  1834  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  1835  //
  1836  // Solidity: function setApprovalForAll(address operator, bool approved) returns()
  1837  func (_ERC721 *ERC721Transactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, approved bool) (*types.Transaction, error) {
  1838  	return _ERC721.contract.Transact(opts, "setApprovalForAll", operator, approved)
  1839  }
  1840  
  1841  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  1842  //
  1843  // Solidity: function setApprovalForAll(address operator, bool approved) returns()
  1844  func (_ERC721 *ERC721Session) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) {
  1845  	return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, operator, approved)
  1846  }
  1847  
  1848  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  1849  //
  1850  // Solidity: function setApprovalForAll(address operator, bool approved) returns()
  1851  func (_ERC721 *ERC721TransactorSession) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) {
  1852  	return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, operator, approved)
  1853  }
  1854  
  1855  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1856  //
  1857  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  1858  func (_ERC721 *ERC721Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1859  	return _ERC721.contract.Transact(opts, "transferFrom", from, to, tokenId)
  1860  }
  1861  
  1862  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1863  //
  1864  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  1865  func (_ERC721 *ERC721Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1866  	return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
  1867  }
  1868  
  1869  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1870  //
  1871  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  1872  func (_ERC721 *ERC721TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1873  	return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
  1874  }
  1875  
  1876  // ERC721ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721 contract.
  1877  type ERC721ApprovalIterator struct {
  1878  	Event *ERC721Approval // Event containing the contract specifics and raw log
  1879  
  1880  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1881  	event    string              // Event name to use for unpacking event data
  1882  
  1883  	logs chan types.Log        // Log channel receiving the found contract events
  1884  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1885  	done bool                  // Whether the subscription completed delivering logs
  1886  	fail error                 // Occurred error to stop iteration
  1887  }
  1888  
  1889  // Next advances the iterator to the subsequent event, returning whether there
  1890  // are any more events found. In case of a retrieval or parsing error, false is
  1891  // returned and Error() can be queried for the exact failure.
  1892  func (it *ERC721ApprovalIterator) Next() bool {
  1893  	// If the iterator failed, stop iterating
  1894  	if it.fail != nil {
  1895  		return false
  1896  	}
  1897  	// If the iterator completed, deliver directly whatever's available
  1898  	if it.done {
  1899  		select {
  1900  		case log := <-it.logs:
  1901  			it.Event = new(ERC721Approval)
  1902  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1903  				it.fail = err
  1904  				return false
  1905  			}
  1906  			it.Event.Raw = log
  1907  			return true
  1908  
  1909  		default:
  1910  			return false
  1911  		}
  1912  	}
  1913  	// Iterator still in progress, wait for either a data or an error event
  1914  	select {
  1915  	case log := <-it.logs:
  1916  		it.Event = new(ERC721Approval)
  1917  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1918  			it.fail = err
  1919  			return false
  1920  		}
  1921  		it.Event.Raw = log
  1922  		return true
  1923  
  1924  	case err := <-it.sub.Err():
  1925  		it.done = true
  1926  		it.fail = err
  1927  		return it.Next()
  1928  	}
  1929  }
  1930  
  1931  // Error returns any retrieval or parsing error occurred during filtering.
  1932  func (it *ERC721ApprovalIterator) Error() error {
  1933  	return it.fail
  1934  }
  1935  
  1936  // Close terminates the iteration process, releasing any pending underlying
  1937  // resources.
  1938  func (it *ERC721ApprovalIterator) Close() error {
  1939  	it.sub.Unsubscribe()
  1940  	return nil
  1941  }
  1942  
  1943  // ERC721Approval represents a Approval event raised by the ERC721 contract.
  1944  type ERC721Approval struct {
  1945  	Owner    common.Address
  1946  	Approved common.Address
  1947  	TokenId  *big.Int
  1948  	Raw      types.Log // Blockchain specific contextual infos
  1949  }
  1950  
  1951  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1952  //
  1953  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  1954  func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721ApprovalIterator, error) {
  1955  
  1956  	var ownerRule []interface{}
  1957  	for _, ownerItem := range owner {
  1958  		ownerRule = append(ownerRule, ownerItem)
  1959  	}
  1960  	var approvedRule []interface{}
  1961  	for _, approvedItem := range approved {
  1962  		approvedRule = append(approvedRule, approvedItem)
  1963  	}
  1964  	var tokenIdRule []interface{}
  1965  	for _, tokenIdItem := range tokenId {
  1966  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1967  	}
  1968  
  1969  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  1970  	if err != nil {
  1971  		return nil, err
  1972  	}
  1973  	return &ERC721ApprovalIterator{contract: _ERC721.contract, event: "Approval", logs: logs, sub: sub}, nil
  1974  }
  1975  
  1976  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1977  //
  1978  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  1979  func (_ERC721 *ERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  1980  
  1981  	var ownerRule []interface{}
  1982  	for _, ownerItem := range owner {
  1983  		ownerRule = append(ownerRule, ownerItem)
  1984  	}
  1985  	var approvedRule []interface{}
  1986  	for _, approvedItem := range approved {
  1987  		approvedRule = append(approvedRule, approvedItem)
  1988  	}
  1989  	var tokenIdRule []interface{}
  1990  	for _, tokenIdItem := range tokenId {
  1991  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1992  	}
  1993  
  1994  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  1995  	if err != nil {
  1996  		return nil, err
  1997  	}
  1998  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1999  		defer sub.Unsubscribe()
  2000  		for {
  2001  			select {
  2002  			case log := <-logs:
  2003  				// New log arrived, parse the event and forward to the user
  2004  				event := new(ERC721Approval)
  2005  				if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil {
  2006  					return err
  2007  				}
  2008  				event.Raw = log
  2009  
  2010  				select {
  2011  				case sink <- event:
  2012  				case err := <-sub.Err():
  2013  					return err
  2014  				case <-quit:
  2015  					return nil
  2016  				}
  2017  			case err := <-sub.Err():
  2018  				return err
  2019  			case <-quit:
  2020  				return nil
  2021  			}
  2022  		}
  2023  	}), nil
  2024  }
  2025  
  2026  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2027  //
  2028  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  2029  func (_ERC721 *ERC721Filterer) ParseApproval(log types.Log) (*ERC721Approval, error) {
  2030  	event := new(ERC721Approval)
  2031  	if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil {
  2032  		return nil, err
  2033  	}
  2034  	event.Raw = log
  2035  	return event, nil
  2036  }
  2037  
  2038  // ERC721ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721 contract.
  2039  type ERC721ApprovalForAllIterator struct {
  2040  	Event *ERC721ApprovalForAll // Event containing the contract specifics and raw log
  2041  
  2042  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2043  	event    string              // Event name to use for unpacking event data
  2044  
  2045  	logs chan types.Log        // Log channel receiving the found contract events
  2046  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2047  	done bool                  // Whether the subscription completed delivering logs
  2048  	fail error                 // Occurred error to stop iteration
  2049  }
  2050  
  2051  // Next advances the iterator to the subsequent event, returning whether there
  2052  // are any more events found. In case of a retrieval or parsing error, false is
  2053  // returned and Error() can be queried for the exact failure.
  2054  func (it *ERC721ApprovalForAllIterator) Next() bool {
  2055  	// If the iterator failed, stop iterating
  2056  	if it.fail != nil {
  2057  		return false
  2058  	}
  2059  	// If the iterator completed, deliver directly whatever's available
  2060  	if it.done {
  2061  		select {
  2062  		case log := <-it.logs:
  2063  			it.Event = new(ERC721ApprovalForAll)
  2064  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2065  				it.fail = err
  2066  				return false
  2067  			}
  2068  			it.Event.Raw = log
  2069  			return true
  2070  
  2071  		default:
  2072  			return false
  2073  		}
  2074  	}
  2075  	// Iterator still in progress, wait for either a data or an error event
  2076  	select {
  2077  	case log := <-it.logs:
  2078  		it.Event = new(ERC721ApprovalForAll)
  2079  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2080  			it.fail = err
  2081  			return false
  2082  		}
  2083  		it.Event.Raw = log
  2084  		return true
  2085  
  2086  	case err := <-it.sub.Err():
  2087  		it.done = true
  2088  		it.fail = err
  2089  		return it.Next()
  2090  	}
  2091  }
  2092  
  2093  // Error returns any retrieval or parsing error occurred during filtering.
  2094  func (it *ERC721ApprovalForAllIterator) Error() error {
  2095  	return it.fail
  2096  }
  2097  
  2098  // Close terminates the iteration process, releasing any pending underlying
  2099  // resources.
  2100  func (it *ERC721ApprovalForAllIterator) Close() error {
  2101  	it.sub.Unsubscribe()
  2102  	return nil
  2103  }
  2104  
  2105  // ERC721ApprovalForAll represents a ApprovalForAll event raised by the ERC721 contract.
  2106  type ERC721ApprovalForAll struct {
  2107  	Owner    common.Address
  2108  	Operator common.Address
  2109  	Approved bool
  2110  	Raw      types.Log // Blockchain specific contextual infos
  2111  }
  2112  
  2113  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  2114  //
  2115  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  2116  func (_ERC721 *ERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721ApprovalForAllIterator, error) {
  2117  
  2118  	var ownerRule []interface{}
  2119  	for _, ownerItem := range owner {
  2120  		ownerRule = append(ownerRule, ownerItem)
  2121  	}
  2122  	var operatorRule []interface{}
  2123  	for _, operatorItem := range operator {
  2124  		operatorRule = append(operatorRule, operatorItem)
  2125  	}
  2126  
  2127  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  2128  	if err != nil {
  2129  		return nil, err
  2130  	}
  2131  	return &ERC721ApprovalForAllIterator{contract: _ERC721.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  2132  }
  2133  
  2134  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  2135  //
  2136  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  2137  func (_ERC721 *ERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  2138  
  2139  	var ownerRule []interface{}
  2140  	for _, ownerItem := range owner {
  2141  		ownerRule = append(ownerRule, ownerItem)
  2142  	}
  2143  	var operatorRule []interface{}
  2144  	for _, operatorItem := range operator {
  2145  		operatorRule = append(operatorRule, operatorItem)
  2146  	}
  2147  
  2148  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  2149  	if err != nil {
  2150  		return nil, err
  2151  	}
  2152  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2153  		defer sub.Unsubscribe()
  2154  		for {
  2155  			select {
  2156  			case log := <-logs:
  2157  				// New log arrived, parse the event and forward to the user
  2158  				event := new(ERC721ApprovalForAll)
  2159  				if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  2160  					return err
  2161  				}
  2162  				event.Raw = log
  2163  
  2164  				select {
  2165  				case sink <- event:
  2166  				case err := <-sub.Err():
  2167  					return err
  2168  				case <-quit:
  2169  					return nil
  2170  				}
  2171  			case err := <-sub.Err():
  2172  				return err
  2173  			case <-quit:
  2174  				return nil
  2175  			}
  2176  		}
  2177  	}), nil
  2178  }
  2179  
  2180  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  2181  //
  2182  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  2183  func (_ERC721 *ERC721Filterer) ParseApprovalForAll(log types.Log) (*ERC721ApprovalForAll, error) {
  2184  	event := new(ERC721ApprovalForAll)
  2185  	if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  2186  		return nil, err
  2187  	}
  2188  	event.Raw = log
  2189  	return event, nil
  2190  }
  2191  
  2192  // ERC721TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721 contract.
  2193  type ERC721TransferIterator struct {
  2194  	Event *ERC721Transfer // Event containing the contract specifics and raw log
  2195  
  2196  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2197  	event    string              // Event name to use for unpacking event data
  2198  
  2199  	logs chan types.Log        // Log channel receiving the found contract events
  2200  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2201  	done bool                  // Whether the subscription completed delivering logs
  2202  	fail error                 // Occurred error to stop iteration
  2203  }
  2204  
  2205  // Next advances the iterator to the subsequent event, returning whether there
  2206  // are any more events found. In case of a retrieval or parsing error, false is
  2207  // returned and Error() can be queried for the exact failure.
  2208  func (it *ERC721TransferIterator) Next() bool {
  2209  	// If the iterator failed, stop iterating
  2210  	if it.fail != nil {
  2211  		return false
  2212  	}
  2213  	// If the iterator completed, deliver directly whatever's available
  2214  	if it.done {
  2215  		select {
  2216  		case log := <-it.logs:
  2217  			it.Event = new(ERC721Transfer)
  2218  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2219  				it.fail = err
  2220  				return false
  2221  			}
  2222  			it.Event.Raw = log
  2223  			return true
  2224  
  2225  		default:
  2226  			return false
  2227  		}
  2228  	}
  2229  	// Iterator still in progress, wait for either a data or an error event
  2230  	select {
  2231  	case log := <-it.logs:
  2232  		it.Event = new(ERC721Transfer)
  2233  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2234  			it.fail = err
  2235  			return false
  2236  		}
  2237  		it.Event.Raw = log
  2238  		return true
  2239  
  2240  	case err := <-it.sub.Err():
  2241  		it.done = true
  2242  		it.fail = err
  2243  		return it.Next()
  2244  	}
  2245  }
  2246  
  2247  // Error returns any retrieval or parsing error occurred during filtering.
  2248  func (it *ERC721TransferIterator) Error() error {
  2249  	return it.fail
  2250  }
  2251  
  2252  // Close terminates the iteration process, releasing any pending underlying
  2253  // resources.
  2254  func (it *ERC721TransferIterator) Close() error {
  2255  	it.sub.Unsubscribe()
  2256  	return nil
  2257  }
  2258  
  2259  // ERC721Transfer represents a Transfer event raised by the ERC721 contract.
  2260  type ERC721Transfer struct {
  2261  	From    common.Address
  2262  	To      common.Address
  2263  	TokenId *big.Int
  2264  	Raw     types.Log // Blockchain specific contextual infos
  2265  }
  2266  
  2267  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2268  //
  2269  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  2270  func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721TransferIterator, error) {
  2271  
  2272  	var fromRule []interface{}
  2273  	for _, fromItem := range from {
  2274  		fromRule = append(fromRule, fromItem)
  2275  	}
  2276  	var toRule []interface{}
  2277  	for _, toItem := range to {
  2278  		toRule = append(toRule, toItem)
  2279  	}
  2280  	var tokenIdRule []interface{}
  2281  	for _, tokenIdItem := range tokenId {
  2282  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  2283  	}
  2284  
  2285  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  2286  	if err != nil {
  2287  		return nil, err
  2288  	}
  2289  	return &ERC721TransferIterator{contract: _ERC721.contract, event: "Transfer", logs: logs, sub: sub}, nil
  2290  }
  2291  
  2292  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2293  //
  2294  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  2295  func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  2296  
  2297  	var fromRule []interface{}
  2298  	for _, fromItem := range from {
  2299  		fromRule = append(fromRule, fromItem)
  2300  	}
  2301  	var toRule []interface{}
  2302  	for _, toItem := range to {
  2303  		toRule = append(toRule, toItem)
  2304  	}
  2305  	var tokenIdRule []interface{}
  2306  	for _, tokenIdItem := range tokenId {
  2307  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  2308  	}
  2309  
  2310  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  2311  	if err != nil {
  2312  		return nil, err
  2313  	}
  2314  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2315  		defer sub.Unsubscribe()
  2316  		for {
  2317  			select {
  2318  			case log := <-logs:
  2319  				// New log arrived, parse the event and forward to the user
  2320  				event := new(ERC721Transfer)
  2321  				if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
  2322  					return err
  2323  				}
  2324  				event.Raw = log
  2325  
  2326  				select {
  2327  				case sink <- event:
  2328  				case err := <-sub.Err():
  2329  					return err
  2330  				case <-quit:
  2331  					return nil
  2332  				}
  2333  			case err := <-sub.Err():
  2334  				return err
  2335  			case <-quit:
  2336  				return nil
  2337  			}
  2338  		}
  2339  	}), nil
  2340  }
  2341  
  2342  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2343  //
  2344  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  2345  func (_ERC721 *ERC721Filterer) ParseTransfer(log types.Log) (*ERC721Transfer, error) {
  2346  	event := new(ERC721Transfer)
  2347  	if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
  2348  		return nil, err
  2349  	}
  2350  	event.Raw = log
  2351  	return event, nil
  2352  }
  2353  
  2354  // EnumerableMapABI is the input ABI used to generate the binding from.
  2355  const EnumerableMapABI = "[]"
  2356  
  2357  // EnumerableMapBin is the compiled bytecode used for deploying new contracts.
  2358  var EnumerableMapBin = "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ae2d82cdf7f3594805398713255350301a08dbee7b0181a00aa4ca544b0ef88b64736f6c63430006060033"
  2359  
  2360  // DeployEnumerableMap deploys a new Ethereum contract, binding an instance of EnumerableMap to it.
  2361  func DeployEnumerableMap(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *EnumerableMap, error) {
  2362  	parsed, err := abi.JSON(strings.NewReader(EnumerableMapABI))
  2363  	if err != nil {
  2364  		return common.Address{}, nil, nil, err
  2365  	}
  2366  
  2367  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(EnumerableMapBin), backend)
  2368  	if err != nil {
  2369  		return common.Address{}, nil, nil, err
  2370  	}
  2371  	return address, tx, &EnumerableMap{EnumerableMapCaller: EnumerableMapCaller{contract: contract}, EnumerableMapTransactor: EnumerableMapTransactor{contract: contract}, EnumerableMapFilterer: EnumerableMapFilterer{contract: contract}}, nil
  2372  }
  2373  
  2374  // EnumerableMap is an auto generated Go binding around an Ethereum contract.
  2375  type EnumerableMap struct {
  2376  	EnumerableMapCaller     // Read-only binding to the contract
  2377  	EnumerableMapTransactor // Write-only binding to the contract
  2378  	EnumerableMapFilterer   // Log filterer for contract events
  2379  }
  2380  
  2381  // EnumerableMapCaller is an auto generated read-only Go binding around an Ethereum contract.
  2382  type EnumerableMapCaller struct {
  2383  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2384  }
  2385  
  2386  // EnumerableMapTransactor is an auto generated write-only Go binding around an Ethereum contract.
  2387  type EnumerableMapTransactor struct {
  2388  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2389  }
  2390  
  2391  // EnumerableMapFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  2392  type EnumerableMapFilterer struct {
  2393  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2394  }
  2395  
  2396  // EnumerableMapSession is an auto generated Go binding around an Ethereum contract,
  2397  // with pre-set call and transact options.
  2398  type EnumerableMapSession struct {
  2399  	Contract     *EnumerableMap    // Generic contract binding to set the session for
  2400  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  2401  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2402  }
  2403  
  2404  // EnumerableMapCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  2405  // with pre-set call options.
  2406  type EnumerableMapCallerSession struct {
  2407  	Contract *EnumerableMapCaller // Generic contract caller binding to set the session for
  2408  	CallOpts bind.CallOpts        // Call options to use throughout this session
  2409  }
  2410  
  2411  // EnumerableMapTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  2412  // with pre-set transact options.
  2413  type EnumerableMapTransactorSession struct {
  2414  	Contract     *EnumerableMapTransactor // Generic contract transactor binding to set the session for
  2415  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  2416  }
  2417  
  2418  // EnumerableMapRaw is an auto generated low-level Go binding around an Ethereum contract.
  2419  type EnumerableMapRaw struct {
  2420  	Contract *EnumerableMap // Generic contract binding to access the raw methods on
  2421  }
  2422  
  2423  // EnumerableMapCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  2424  type EnumerableMapCallerRaw struct {
  2425  	Contract *EnumerableMapCaller // Generic read-only contract binding to access the raw methods on
  2426  }
  2427  
  2428  // EnumerableMapTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  2429  type EnumerableMapTransactorRaw struct {
  2430  	Contract *EnumerableMapTransactor // Generic write-only contract binding to access the raw methods on
  2431  }
  2432  
  2433  // NewEnumerableMap creates a new instance of EnumerableMap, bound to a specific deployed contract.
  2434  func NewEnumerableMap(address common.Address, backend bind.ContractBackend) (*EnumerableMap, error) {
  2435  	contract, err := bindEnumerableMap(address, backend, backend, backend)
  2436  	if err != nil {
  2437  		return nil, err
  2438  	}
  2439  	return &EnumerableMap{EnumerableMapCaller: EnumerableMapCaller{contract: contract}, EnumerableMapTransactor: EnumerableMapTransactor{contract: contract}, EnumerableMapFilterer: EnumerableMapFilterer{contract: contract}}, nil
  2440  }
  2441  
  2442  // NewEnumerableMapCaller creates a new read-only instance of EnumerableMap, bound to a specific deployed contract.
  2443  func NewEnumerableMapCaller(address common.Address, caller bind.ContractCaller) (*EnumerableMapCaller, error) {
  2444  	contract, err := bindEnumerableMap(address, caller, nil, nil)
  2445  	if err != nil {
  2446  		return nil, err
  2447  	}
  2448  	return &EnumerableMapCaller{contract: contract}, nil
  2449  }
  2450  
  2451  // NewEnumerableMapTransactor creates a new write-only instance of EnumerableMap, bound to a specific deployed contract.
  2452  func NewEnumerableMapTransactor(address common.Address, transactor bind.ContractTransactor) (*EnumerableMapTransactor, error) {
  2453  	contract, err := bindEnumerableMap(address, nil, transactor, nil)
  2454  	if err != nil {
  2455  		return nil, err
  2456  	}
  2457  	return &EnumerableMapTransactor{contract: contract}, nil
  2458  }
  2459  
  2460  // NewEnumerableMapFilterer creates a new log filterer instance of EnumerableMap, bound to a specific deployed contract.
  2461  func NewEnumerableMapFilterer(address common.Address, filterer bind.ContractFilterer) (*EnumerableMapFilterer, error) {
  2462  	contract, err := bindEnumerableMap(address, nil, nil, filterer)
  2463  	if err != nil {
  2464  		return nil, err
  2465  	}
  2466  	return &EnumerableMapFilterer{contract: contract}, nil
  2467  }
  2468  
  2469  // bindEnumerableMap binds a generic wrapper to an already deployed contract.
  2470  func bindEnumerableMap(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2471  	parsed, err := abi.JSON(strings.NewReader(EnumerableMapABI))
  2472  	if err != nil {
  2473  		return nil, err
  2474  	}
  2475  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  2476  }
  2477  
  2478  // Call invokes the (constant) contract method with params as input values and
  2479  // sets the output to result. The result type might be a single field for simple
  2480  // returns, a slice of interfaces for anonymous returns and a struct for named
  2481  // returns.
  2482  func (_EnumerableMap *EnumerableMapRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  2483  	return _EnumerableMap.Contract.EnumerableMapCaller.contract.Call(opts, result, method, params...)
  2484  }
  2485  
  2486  // Transfer initiates a plain transaction to move funds to the contract, calling
  2487  // its default method if one is available.
  2488  func (_EnumerableMap *EnumerableMapRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2489  	return _EnumerableMap.Contract.EnumerableMapTransactor.contract.Transfer(opts)
  2490  }
  2491  
  2492  // Transact invokes the (paid) contract method with params as input values.
  2493  func (_EnumerableMap *EnumerableMapRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2494  	return _EnumerableMap.Contract.EnumerableMapTransactor.contract.Transact(opts, method, params...)
  2495  }
  2496  
  2497  // Call invokes the (constant) contract method with params as input values and
  2498  // sets the output to result. The result type might be a single field for simple
  2499  // returns, a slice of interfaces for anonymous returns and a struct for named
  2500  // returns.
  2501  func (_EnumerableMap *EnumerableMapCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  2502  	return _EnumerableMap.Contract.contract.Call(opts, result, method, params...)
  2503  }
  2504  
  2505  // Transfer initiates a plain transaction to move funds to the contract, calling
  2506  // its default method if one is available.
  2507  func (_EnumerableMap *EnumerableMapTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2508  	return _EnumerableMap.Contract.contract.Transfer(opts)
  2509  }
  2510  
  2511  // Transact invokes the (paid) contract method with params as input values.
  2512  func (_EnumerableMap *EnumerableMapTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2513  	return _EnumerableMap.Contract.contract.Transact(opts, method, params...)
  2514  }
  2515  
  2516  // EnumerableSetABI is the input ABI used to generate the binding from.
  2517  const EnumerableSetABI = "[]"
  2518  
  2519  // EnumerableSetBin is the compiled bytecode used for deploying new contracts.
  2520  var EnumerableSetBin = "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c88debb9494829d50bc3d47c25913a9854deb61fadd18a19b59c7669365b211664736f6c63430006060033"
  2521  
  2522  // DeployEnumerableSet deploys a new Ethereum contract, binding an instance of EnumerableSet to it.
  2523  func DeployEnumerableSet(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *EnumerableSet, error) {
  2524  	parsed, err := abi.JSON(strings.NewReader(EnumerableSetABI))
  2525  	if err != nil {
  2526  		return common.Address{}, nil, nil, err
  2527  	}
  2528  
  2529  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(EnumerableSetBin), backend)
  2530  	if err != nil {
  2531  		return common.Address{}, nil, nil, err
  2532  	}
  2533  	return address, tx, &EnumerableSet{EnumerableSetCaller: EnumerableSetCaller{contract: contract}, EnumerableSetTransactor: EnumerableSetTransactor{contract: contract}, EnumerableSetFilterer: EnumerableSetFilterer{contract: contract}}, nil
  2534  }
  2535  
  2536  // EnumerableSet is an auto generated Go binding around an Ethereum contract.
  2537  type EnumerableSet struct {
  2538  	EnumerableSetCaller     // Read-only binding to the contract
  2539  	EnumerableSetTransactor // Write-only binding to the contract
  2540  	EnumerableSetFilterer   // Log filterer for contract events
  2541  }
  2542  
  2543  // EnumerableSetCaller is an auto generated read-only Go binding around an Ethereum contract.
  2544  type EnumerableSetCaller struct {
  2545  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2546  }
  2547  
  2548  // EnumerableSetTransactor is an auto generated write-only Go binding around an Ethereum contract.
  2549  type EnumerableSetTransactor struct {
  2550  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2551  }
  2552  
  2553  // EnumerableSetFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  2554  type EnumerableSetFilterer struct {
  2555  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2556  }
  2557  
  2558  // EnumerableSetSession is an auto generated Go binding around an Ethereum contract,
  2559  // with pre-set call and transact options.
  2560  type EnumerableSetSession struct {
  2561  	Contract     *EnumerableSet    // Generic contract binding to set the session for
  2562  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  2563  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2564  }
  2565  
  2566  // EnumerableSetCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  2567  // with pre-set call options.
  2568  type EnumerableSetCallerSession struct {
  2569  	Contract *EnumerableSetCaller // Generic contract caller binding to set the session for
  2570  	CallOpts bind.CallOpts        // Call options to use throughout this session
  2571  }
  2572  
  2573  // EnumerableSetTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  2574  // with pre-set transact options.
  2575  type EnumerableSetTransactorSession struct {
  2576  	Contract     *EnumerableSetTransactor // Generic contract transactor binding to set the session for
  2577  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  2578  }
  2579  
  2580  // EnumerableSetRaw is an auto generated low-level Go binding around an Ethereum contract.
  2581  type EnumerableSetRaw struct {
  2582  	Contract *EnumerableSet // Generic contract binding to access the raw methods on
  2583  }
  2584  
  2585  // EnumerableSetCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  2586  type EnumerableSetCallerRaw struct {
  2587  	Contract *EnumerableSetCaller // Generic read-only contract binding to access the raw methods on
  2588  }
  2589  
  2590  // EnumerableSetTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  2591  type EnumerableSetTransactorRaw struct {
  2592  	Contract *EnumerableSetTransactor // Generic write-only contract binding to access the raw methods on
  2593  }
  2594  
  2595  // NewEnumerableSet creates a new instance of EnumerableSet, bound to a specific deployed contract.
  2596  func NewEnumerableSet(address common.Address, backend bind.ContractBackend) (*EnumerableSet, error) {
  2597  	contract, err := bindEnumerableSet(address, backend, backend, backend)
  2598  	if err != nil {
  2599  		return nil, err
  2600  	}
  2601  	return &EnumerableSet{EnumerableSetCaller: EnumerableSetCaller{contract: contract}, EnumerableSetTransactor: EnumerableSetTransactor{contract: contract}, EnumerableSetFilterer: EnumerableSetFilterer{contract: contract}}, nil
  2602  }
  2603  
  2604  // NewEnumerableSetCaller creates a new read-only instance of EnumerableSet, bound to a specific deployed contract.
  2605  func NewEnumerableSetCaller(address common.Address, caller bind.ContractCaller) (*EnumerableSetCaller, error) {
  2606  	contract, err := bindEnumerableSet(address, caller, nil, nil)
  2607  	if err != nil {
  2608  		return nil, err
  2609  	}
  2610  	return &EnumerableSetCaller{contract: contract}, nil
  2611  }
  2612  
  2613  // NewEnumerableSetTransactor creates a new write-only instance of EnumerableSet, bound to a specific deployed contract.
  2614  func NewEnumerableSetTransactor(address common.Address, transactor bind.ContractTransactor) (*EnumerableSetTransactor, error) {
  2615  	contract, err := bindEnumerableSet(address, nil, transactor, nil)
  2616  	if err != nil {
  2617  		return nil, err
  2618  	}
  2619  	return &EnumerableSetTransactor{contract: contract}, nil
  2620  }
  2621  
  2622  // NewEnumerableSetFilterer creates a new log filterer instance of EnumerableSet, bound to a specific deployed contract.
  2623  func NewEnumerableSetFilterer(address common.Address, filterer bind.ContractFilterer) (*EnumerableSetFilterer, error) {
  2624  	contract, err := bindEnumerableSet(address, nil, nil, filterer)
  2625  	if err != nil {
  2626  		return nil, err
  2627  	}
  2628  	return &EnumerableSetFilterer{contract: contract}, nil
  2629  }
  2630  
  2631  // bindEnumerableSet binds a generic wrapper to an already deployed contract.
  2632  func bindEnumerableSet(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2633  	parsed, err := abi.JSON(strings.NewReader(EnumerableSetABI))
  2634  	if err != nil {
  2635  		return nil, err
  2636  	}
  2637  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  2638  }
  2639  
  2640  // Call invokes the (constant) contract method with params as input values and
  2641  // sets the output to result. The result type might be a single field for simple
  2642  // returns, a slice of interfaces for anonymous returns and a struct for named
  2643  // returns.
  2644  func (_EnumerableSet *EnumerableSetRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  2645  	return _EnumerableSet.Contract.EnumerableSetCaller.contract.Call(opts, result, method, params...)
  2646  }
  2647  
  2648  // Transfer initiates a plain transaction to move funds to the contract, calling
  2649  // its default method if one is available.
  2650  func (_EnumerableSet *EnumerableSetRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2651  	return _EnumerableSet.Contract.EnumerableSetTransactor.contract.Transfer(opts)
  2652  }
  2653  
  2654  // Transact invokes the (paid) contract method with params as input values.
  2655  func (_EnumerableSet *EnumerableSetRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2656  	return _EnumerableSet.Contract.EnumerableSetTransactor.contract.Transact(opts, method, params...)
  2657  }
  2658  
  2659  // Call invokes the (constant) contract method with params as input values and
  2660  // sets the output to result. The result type might be a single field for simple
  2661  // returns, a slice of interfaces for anonymous returns and a struct for named
  2662  // returns.
  2663  func (_EnumerableSet *EnumerableSetCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  2664  	return _EnumerableSet.Contract.contract.Call(opts, result, method, params...)
  2665  }
  2666  
  2667  // Transfer initiates a plain transaction to move funds to the contract, calling
  2668  // its default method if one is available.
  2669  func (_EnumerableSet *EnumerableSetTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2670  	return _EnumerableSet.Contract.contract.Transfer(opts)
  2671  }
  2672  
  2673  // Transact invokes the (paid) contract method with params as input values.
  2674  func (_EnumerableSet *EnumerableSetTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2675  	return _EnumerableSet.Contract.contract.Transact(opts, method, params...)
  2676  }
  2677  
  2678  // IERC165ABI is the input ABI used to generate the binding from.
  2679  const IERC165ABI = "[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"
  2680  
  2681  // IERC165FuncSigs maps the 4-byte function signature to its string representation.
  2682  var IERC165FuncSigs = map[string]string{
  2683  	"01ffc9a7": "supportsInterface(bytes4)",
  2684  }
  2685  
  2686  // IERC165 is an auto generated Go binding around an Ethereum contract.
  2687  type IERC165 struct {
  2688  	IERC165Caller     // Read-only binding to the contract
  2689  	IERC165Transactor // Write-only binding to the contract
  2690  	IERC165Filterer   // Log filterer for contract events
  2691  }
  2692  
  2693  // IERC165Caller is an auto generated read-only Go binding around an Ethereum contract.
  2694  type IERC165Caller struct {
  2695  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2696  }
  2697  
  2698  // IERC165Transactor is an auto generated write-only Go binding around an Ethereum contract.
  2699  type IERC165Transactor struct {
  2700  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2701  }
  2702  
  2703  // IERC165Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
  2704  type IERC165Filterer struct {
  2705  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2706  }
  2707  
  2708  // IERC165Session is an auto generated Go binding around an Ethereum contract,
  2709  // with pre-set call and transact options.
  2710  type IERC165Session struct {
  2711  	Contract     *IERC165          // Generic contract binding to set the session for
  2712  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  2713  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2714  }
  2715  
  2716  // IERC165CallerSession is an auto generated read-only Go binding around an Ethereum contract,
  2717  // with pre-set call options.
  2718  type IERC165CallerSession struct {
  2719  	Contract *IERC165Caller // Generic contract caller binding to set the session for
  2720  	CallOpts bind.CallOpts  // Call options to use throughout this session
  2721  }
  2722  
  2723  // IERC165TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  2724  // with pre-set transact options.
  2725  type IERC165TransactorSession struct {
  2726  	Contract     *IERC165Transactor // Generic contract transactor binding to set the session for
  2727  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  2728  }
  2729  
  2730  // IERC165Raw is an auto generated low-level Go binding around an Ethereum contract.
  2731  type IERC165Raw struct {
  2732  	Contract *IERC165 // Generic contract binding to access the raw methods on
  2733  }
  2734  
  2735  // IERC165CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  2736  type IERC165CallerRaw struct {
  2737  	Contract *IERC165Caller // Generic read-only contract binding to access the raw methods on
  2738  }
  2739  
  2740  // IERC165TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  2741  type IERC165TransactorRaw struct {
  2742  	Contract *IERC165Transactor // Generic write-only contract binding to access the raw methods on
  2743  }
  2744  
  2745  // NewIERC165 creates a new instance of IERC165, bound to a specific deployed contract.
  2746  func NewIERC165(address common.Address, backend bind.ContractBackend) (*IERC165, error) {
  2747  	contract, err := bindIERC165(address, backend, backend, backend)
  2748  	if err != nil {
  2749  		return nil, err
  2750  	}
  2751  	return &IERC165{IERC165Caller: IERC165Caller{contract: contract}, IERC165Transactor: IERC165Transactor{contract: contract}, IERC165Filterer: IERC165Filterer{contract: contract}}, nil
  2752  }
  2753  
  2754  // NewIERC165Caller creates a new read-only instance of IERC165, bound to a specific deployed contract.
  2755  func NewIERC165Caller(address common.Address, caller bind.ContractCaller) (*IERC165Caller, error) {
  2756  	contract, err := bindIERC165(address, caller, nil, nil)
  2757  	if err != nil {
  2758  		return nil, err
  2759  	}
  2760  	return &IERC165Caller{contract: contract}, nil
  2761  }
  2762  
  2763  // NewIERC165Transactor creates a new write-only instance of IERC165, bound to a specific deployed contract.
  2764  func NewIERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC165Transactor, error) {
  2765  	contract, err := bindIERC165(address, nil, transactor, nil)
  2766  	if err != nil {
  2767  		return nil, err
  2768  	}
  2769  	return &IERC165Transactor{contract: contract}, nil
  2770  }
  2771  
  2772  // NewIERC165Filterer creates a new log filterer instance of IERC165, bound to a specific deployed contract.
  2773  func NewIERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC165Filterer, error) {
  2774  	contract, err := bindIERC165(address, nil, nil, filterer)
  2775  	if err != nil {
  2776  		return nil, err
  2777  	}
  2778  	return &IERC165Filterer{contract: contract}, nil
  2779  }
  2780  
  2781  // bindIERC165 binds a generic wrapper to an already deployed contract.
  2782  func bindIERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2783  	parsed, err := abi.JSON(strings.NewReader(IERC165ABI))
  2784  	if err != nil {
  2785  		return nil, err
  2786  	}
  2787  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  2788  }
  2789  
  2790  // Call invokes the (constant) contract method with params as input values and
  2791  // sets the output to result. The result type might be a single field for simple
  2792  // returns, a slice of interfaces for anonymous returns and a struct for named
  2793  // returns.
  2794  func (_IERC165 *IERC165Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  2795  	return _IERC165.Contract.IERC165Caller.contract.Call(opts, result, method, params...)
  2796  }
  2797  
  2798  // Transfer initiates a plain transaction to move funds to the contract, calling
  2799  // its default method if one is available.
  2800  func (_IERC165 *IERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2801  	return _IERC165.Contract.IERC165Transactor.contract.Transfer(opts)
  2802  }
  2803  
  2804  // Transact invokes the (paid) contract method with params as input values.
  2805  func (_IERC165 *IERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2806  	return _IERC165.Contract.IERC165Transactor.contract.Transact(opts, method, params...)
  2807  }
  2808  
  2809  // Call invokes the (constant) contract method with params as input values and
  2810  // sets the output to result. The result type might be a single field for simple
  2811  // returns, a slice of interfaces for anonymous returns and a struct for named
  2812  // returns.
  2813  func (_IERC165 *IERC165CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  2814  	return _IERC165.Contract.contract.Call(opts, result, method, params...)
  2815  }
  2816  
  2817  // Transfer initiates a plain transaction to move funds to the contract, calling
  2818  // its default method if one is available.
  2819  func (_IERC165 *IERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2820  	return _IERC165.Contract.contract.Transfer(opts)
  2821  }
  2822  
  2823  // Transact invokes the (paid) contract method with params as input values.
  2824  func (_IERC165 *IERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2825  	return _IERC165.Contract.contract.Transact(opts, method, params...)
  2826  }
  2827  
  2828  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  2829  //
  2830  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  2831  func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  2832  	var out []interface{}
  2833  	err := _IERC165.contract.Call(opts, &out, "supportsInterface", interfaceId)
  2834  
  2835  	if err != nil {
  2836  		return *new(bool), err
  2837  	}
  2838  
  2839  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  2840  
  2841  	return out0, err
  2842  
  2843  }
  2844  
  2845  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  2846  //
  2847  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  2848  func (_IERC165 *IERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
  2849  	return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId)
  2850  }
  2851  
  2852  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  2853  //
  2854  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  2855  func (_IERC165 *IERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  2856  	return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId)
  2857  }
  2858  
  2859  // IERC721ABI is the input ABI used to generate the binding from.
  2860  const IERC721ABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  2861  
  2862  // IERC721FuncSigs maps the 4-byte function signature to its string representation.
  2863  var IERC721FuncSigs = map[string]string{
  2864  	"095ea7b3": "approve(address,uint256)",
  2865  	"70a08231": "balanceOf(address)",
  2866  	"081812fc": "getApproved(uint256)",
  2867  	"e985e9c5": "isApprovedForAll(address,address)",
  2868  	"6352211e": "ownerOf(uint256)",
  2869  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  2870  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  2871  	"a22cb465": "setApprovalForAll(address,bool)",
  2872  	"01ffc9a7": "supportsInterface(bytes4)",
  2873  	"23b872dd": "transferFrom(address,address,uint256)",
  2874  }
  2875  
  2876  // IERC721 is an auto generated Go binding around an Ethereum contract.
  2877  type IERC721 struct {
  2878  	IERC721Caller     // Read-only binding to the contract
  2879  	IERC721Transactor // Write-only binding to the contract
  2880  	IERC721Filterer   // Log filterer for contract events
  2881  }
  2882  
  2883  // IERC721Caller is an auto generated read-only Go binding around an Ethereum contract.
  2884  type IERC721Caller struct {
  2885  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2886  }
  2887  
  2888  // IERC721Transactor is an auto generated write-only Go binding around an Ethereum contract.
  2889  type IERC721Transactor struct {
  2890  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2891  }
  2892  
  2893  // IERC721Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
  2894  type IERC721Filterer struct {
  2895  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2896  }
  2897  
  2898  // IERC721Session is an auto generated Go binding around an Ethereum contract,
  2899  // with pre-set call and transact options.
  2900  type IERC721Session struct {
  2901  	Contract     *IERC721          // Generic contract binding to set the session for
  2902  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  2903  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2904  }
  2905  
  2906  // IERC721CallerSession is an auto generated read-only Go binding around an Ethereum contract,
  2907  // with pre-set call options.
  2908  type IERC721CallerSession struct {
  2909  	Contract *IERC721Caller // Generic contract caller binding to set the session for
  2910  	CallOpts bind.CallOpts  // Call options to use throughout this session
  2911  }
  2912  
  2913  // IERC721TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  2914  // with pre-set transact options.
  2915  type IERC721TransactorSession struct {
  2916  	Contract     *IERC721Transactor // Generic contract transactor binding to set the session for
  2917  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  2918  }
  2919  
  2920  // IERC721Raw is an auto generated low-level Go binding around an Ethereum contract.
  2921  type IERC721Raw struct {
  2922  	Contract *IERC721 // Generic contract binding to access the raw methods on
  2923  }
  2924  
  2925  // IERC721CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  2926  type IERC721CallerRaw struct {
  2927  	Contract *IERC721Caller // Generic read-only contract binding to access the raw methods on
  2928  }
  2929  
  2930  // IERC721TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  2931  type IERC721TransactorRaw struct {
  2932  	Contract *IERC721Transactor // Generic write-only contract binding to access the raw methods on
  2933  }
  2934  
  2935  // NewIERC721 creates a new instance of IERC721, bound to a specific deployed contract.
  2936  func NewIERC721(address common.Address, backend bind.ContractBackend) (*IERC721, error) {
  2937  	contract, err := bindIERC721(address, backend, backend, backend)
  2938  	if err != nil {
  2939  		return nil, err
  2940  	}
  2941  	return &IERC721{IERC721Caller: IERC721Caller{contract: contract}, IERC721Transactor: IERC721Transactor{contract: contract}, IERC721Filterer: IERC721Filterer{contract: contract}}, nil
  2942  }
  2943  
  2944  // NewIERC721Caller creates a new read-only instance of IERC721, bound to a specific deployed contract.
  2945  func NewIERC721Caller(address common.Address, caller bind.ContractCaller) (*IERC721Caller, error) {
  2946  	contract, err := bindIERC721(address, caller, nil, nil)
  2947  	if err != nil {
  2948  		return nil, err
  2949  	}
  2950  	return &IERC721Caller{contract: contract}, nil
  2951  }
  2952  
  2953  // NewIERC721Transactor creates a new write-only instance of IERC721, bound to a specific deployed contract.
  2954  func NewIERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC721Transactor, error) {
  2955  	contract, err := bindIERC721(address, nil, transactor, nil)
  2956  	if err != nil {
  2957  		return nil, err
  2958  	}
  2959  	return &IERC721Transactor{contract: contract}, nil
  2960  }
  2961  
  2962  // NewIERC721Filterer creates a new log filterer instance of IERC721, bound to a specific deployed contract.
  2963  func NewIERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC721Filterer, error) {
  2964  	contract, err := bindIERC721(address, nil, nil, filterer)
  2965  	if err != nil {
  2966  		return nil, err
  2967  	}
  2968  	return &IERC721Filterer{contract: contract}, nil
  2969  }
  2970  
  2971  // bindIERC721 binds a generic wrapper to an already deployed contract.
  2972  func bindIERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2973  	parsed, err := abi.JSON(strings.NewReader(IERC721ABI))
  2974  	if err != nil {
  2975  		return nil, err
  2976  	}
  2977  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  2978  }
  2979  
  2980  // Call invokes the (constant) contract method with params as input values and
  2981  // sets the output to result. The result type might be a single field for simple
  2982  // returns, a slice of interfaces for anonymous returns and a struct for named
  2983  // returns.
  2984  func (_IERC721 *IERC721Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  2985  	return _IERC721.Contract.IERC721Caller.contract.Call(opts, result, method, params...)
  2986  }
  2987  
  2988  // Transfer initiates a plain transaction to move funds to the contract, calling
  2989  // its default method if one is available.
  2990  func (_IERC721 *IERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2991  	return _IERC721.Contract.IERC721Transactor.contract.Transfer(opts)
  2992  }
  2993  
  2994  // Transact invokes the (paid) contract method with params as input values.
  2995  func (_IERC721 *IERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2996  	return _IERC721.Contract.IERC721Transactor.contract.Transact(opts, method, params...)
  2997  }
  2998  
  2999  // Call invokes the (constant) contract method with params as input values and
  3000  // sets the output to result. The result type might be a single field for simple
  3001  // returns, a slice of interfaces for anonymous returns and a struct for named
  3002  // returns.
  3003  func (_IERC721 *IERC721CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  3004  	return _IERC721.Contract.contract.Call(opts, result, method, params...)
  3005  }
  3006  
  3007  // Transfer initiates a plain transaction to move funds to the contract, calling
  3008  // its default method if one is available.
  3009  func (_IERC721 *IERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3010  	return _IERC721.Contract.contract.Transfer(opts)
  3011  }
  3012  
  3013  // Transact invokes the (paid) contract method with params as input values.
  3014  func (_IERC721 *IERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3015  	return _IERC721.Contract.contract.Transact(opts, method, params...)
  3016  }
  3017  
  3018  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3019  //
  3020  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  3021  func (_IERC721 *IERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  3022  	var out []interface{}
  3023  	err := _IERC721.contract.Call(opts, &out, "balanceOf", owner)
  3024  
  3025  	if err != nil {
  3026  		return *new(*big.Int), err
  3027  	}
  3028  
  3029  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  3030  
  3031  	return out0, err
  3032  
  3033  }
  3034  
  3035  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3036  //
  3037  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  3038  func (_IERC721 *IERC721Session) BalanceOf(owner common.Address) (*big.Int, error) {
  3039  	return _IERC721.Contract.BalanceOf(&_IERC721.CallOpts, owner)
  3040  }
  3041  
  3042  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3043  //
  3044  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  3045  func (_IERC721 *IERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  3046  	return _IERC721.Contract.BalanceOf(&_IERC721.CallOpts, owner)
  3047  }
  3048  
  3049  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  3050  //
  3051  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  3052  func (_IERC721 *IERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  3053  	var out []interface{}
  3054  	err := _IERC721.contract.Call(opts, &out, "getApproved", tokenId)
  3055  
  3056  	if err != nil {
  3057  		return *new(common.Address), err
  3058  	}
  3059  
  3060  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  3061  
  3062  	return out0, err
  3063  
  3064  }
  3065  
  3066  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  3067  //
  3068  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  3069  func (_IERC721 *IERC721Session) GetApproved(tokenId *big.Int) (common.Address, error) {
  3070  	return _IERC721.Contract.GetApproved(&_IERC721.CallOpts, tokenId)
  3071  }
  3072  
  3073  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  3074  //
  3075  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  3076  func (_IERC721 *IERC721CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  3077  	return _IERC721.Contract.GetApproved(&_IERC721.CallOpts, tokenId)
  3078  }
  3079  
  3080  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  3081  //
  3082  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  3083  func (_IERC721 *IERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  3084  	var out []interface{}
  3085  	err := _IERC721.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
  3086  
  3087  	if err != nil {
  3088  		return *new(bool), err
  3089  	}
  3090  
  3091  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  3092  
  3093  	return out0, err
  3094  
  3095  }
  3096  
  3097  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  3098  //
  3099  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  3100  func (_IERC721 *IERC721Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  3101  	return _IERC721.Contract.IsApprovedForAll(&_IERC721.CallOpts, owner, operator)
  3102  }
  3103  
  3104  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  3105  //
  3106  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  3107  func (_IERC721 *IERC721CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  3108  	return _IERC721.Contract.IsApprovedForAll(&_IERC721.CallOpts, owner, operator)
  3109  }
  3110  
  3111  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  3112  //
  3113  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  3114  func (_IERC721 *IERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  3115  	var out []interface{}
  3116  	err := _IERC721.contract.Call(opts, &out, "ownerOf", tokenId)
  3117  
  3118  	if err != nil {
  3119  		return *new(common.Address), err
  3120  	}
  3121  
  3122  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  3123  
  3124  	return out0, err
  3125  
  3126  }
  3127  
  3128  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  3129  //
  3130  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  3131  func (_IERC721 *IERC721Session) OwnerOf(tokenId *big.Int) (common.Address, error) {
  3132  	return _IERC721.Contract.OwnerOf(&_IERC721.CallOpts, tokenId)
  3133  }
  3134  
  3135  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  3136  //
  3137  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  3138  func (_IERC721 *IERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  3139  	return _IERC721.Contract.OwnerOf(&_IERC721.CallOpts, tokenId)
  3140  }
  3141  
  3142  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  3143  //
  3144  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  3145  func (_IERC721 *IERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  3146  	var out []interface{}
  3147  	err := _IERC721.contract.Call(opts, &out, "supportsInterface", interfaceId)
  3148  
  3149  	if err != nil {
  3150  		return *new(bool), err
  3151  	}
  3152  
  3153  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  3154  
  3155  	return out0, err
  3156  
  3157  }
  3158  
  3159  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  3160  //
  3161  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  3162  func (_IERC721 *IERC721Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
  3163  	return _IERC721.Contract.SupportsInterface(&_IERC721.CallOpts, interfaceId)
  3164  }
  3165  
  3166  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  3167  //
  3168  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  3169  func (_IERC721 *IERC721CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  3170  	return _IERC721.Contract.SupportsInterface(&_IERC721.CallOpts, interfaceId)
  3171  }
  3172  
  3173  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3174  //
  3175  // Solidity: function approve(address to, uint256 tokenId) returns()
  3176  func (_IERC721 *IERC721Transactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3177  	return _IERC721.contract.Transact(opts, "approve", to, tokenId)
  3178  }
  3179  
  3180  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3181  //
  3182  // Solidity: function approve(address to, uint256 tokenId) returns()
  3183  func (_IERC721 *IERC721Session) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3184  	return _IERC721.Contract.Approve(&_IERC721.TransactOpts, to, tokenId)
  3185  }
  3186  
  3187  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3188  //
  3189  // Solidity: function approve(address to, uint256 tokenId) returns()
  3190  func (_IERC721 *IERC721TransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3191  	return _IERC721.Contract.Approve(&_IERC721.TransactOpts, to, tokenId)
  3192  }
  3193  
  3194  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  3195  //
  3196  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  3197  func (_IERC721 *IERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3198  	return _IERC721.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  3199  }
  3200  
  3201  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  3202  //
  3203  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  3204  func (_IERC721 *IERC721Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3205  	return _IERC721.Contract.SafeTransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
  3206  }
  3207  
  3208  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  3209  //
  3210  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  3211  func (_IERC721 *IERC721TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3212  	return _IERC721.Contract.SafeTransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
  3213  }
  3214  
  3215  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  3216  //
  3217  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  3218  func (_IERC721 *IERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  3219  	return _IERC721.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data)
  3220  }
  3221  
  3222  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  3223  //
  3224  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  3225  func (_IERC721 *IERC721Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  3226  	return _IERC721.Contract.SafeTransferFrom0(&_IERC721.TransactOpts, from, to, tokenId, data)
  3227  }
  3228  
  3229  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  3230  //
  3231  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  3232  func (_IERC721 *IERC721TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  3233  	return _IERC721.Contract.SafeTransferFrom0(&_IERC721.TransactOpts, from, to, tokenId, data)
  3234  }
  3235  
  3236  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  3237  //
  3238  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  3239  func (_IERC721 *IERC721Transactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, _approved bool) (*types.Transaction, error) {
  3240  	return _IERC721.contract.Transact(opts, "setApprovalForAll", operator, _approved)
  3241  }
  3242  
  3243  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  3244  //
  3245  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  3246  func (_IERC721 *IERC721Session) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
  3247  	return _IERC721.Contract.SetApprovalForAll(&_IERC721.TransactOpts, operator, _approved)
  3248  }
  3249  
  3250  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  3251  //
  3252  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  3253  func (_IERC721 *IERC721TransactorSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
  3254  	return _IERC721.Contract.SetApprovalForAll(&_IERC721.TransactOpts, operator, _approved)
  3255  }
  3256  
  3257  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3258  //
  3259  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  3260  func (_IERC721 *IERC721Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3261  	return _IERC721.contract.Transact(opts, "transferFrom", from, to, tokenId)
  3262  }
  3263  
  3264  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3265  //
  3266  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  3267  func (_IERC721 *IERC721Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3268  	return _IERC721.Contract.TransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
  3269  }
  3270  
  3271  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3272  //
  3273  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  3274  func (_IERC721 *IERC721TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3275  	return _IERC721.Contract.TransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
  3276  }
  3277  
  3278  // IERC721ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC721 contract.
  3279  type IERC721ApprovalIterator struct {
  3280  	Event *IERC721Approval // Event containing the contract specifics and raw log
  3281  
  3282  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3283  	event    string              // Event name to use for unpacking event data
  3284  
  3285  	logs chan types.Log        // Log channel receiving the found contract events
  3286  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3287  	done bool                  // Whether the subscription completed delivering logs
  3288  	fail error                 // Occurred error to stop iteration
  3289  }
  3290  
  3291  // Next advances the iterator to the subsequent event, returning whether there
  3292  // are any more events found. In case of a retrieval or parsing error, false is
  3293  // returned and Error() can be queried for the exact failure.
  3294  func (it *IERC721ApprovalIterator) Next() bool {
  3295  	// If the iterator failed, stop iterating
  3296  	if it.fail != nil {
  3297  		return false
  3298  	}
  3299  	// If the iterator completed, deliver directly whatever's available
  3300  	if it.done {
  3301  		select {
  3302  		case log := <-it.logs:
  3303  			it.Event = new(IERC721Approval)
  3304  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3305  				it.fail = err
  3306  				return false
  3307  			}
  3308  			it.Event.Raw = log
  3309  			return true
  3310  
  3311  		default:
  3312  			return false
  3313  		}
  3314  	}
  3315  	// Iterator still in progress, wait for either a data or an error event
  3316  	select {
  3317  	case log := <-it.logs:
  3318  		it.Event = new(IERC721Approval)
  3319  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3320  			it.fail = err
  3321  			return false
  3322  		}
  3323  		it.Event.Raw = log
  3324  		return true
  3325  
  3326  	case err := <-it.sub.Err():
  3327  		it.done = true
  3328  		it.fail = err
  3329  		return it.Next()
  3330  	}
  3331  }
  3332  
  3333  // Error returns any retrieval or parsing error occurred during filtering.
  3334  func (it *IERC721ApprovalIterator) Error() error {
  3335  	return it.fail
  3336  }
  3337  
  3338  // Close terminates the iteration process, releasing any pending underlying
  3339  // resources.
  3340  func (it *IERC721ApprovalIterator) Close() error {
  3341  	it.sub.Unsubscribe()
  3342  	return nil
  3343  }
  3344  
  3345  // IERC721Approval represents a Approval event raised by the IERC721 contract.
  3346  type IERC721Approval struct {
  3347  	Owner    common.Address
  3348  	Approved common.Address
  3349  	TokenId  *big.Int
  3350  	Raw      types.Log // Blockchain specific contextual infos
  3351  }
  3352  
  3353  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3354  //
  3355  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  3356  func (_IERC721 *IERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721ApprovalIterator, error) {
  3357  
  3358  	var ownerRule []interface{}
  3359  	for _, ownerItem := range owner {
  3360  		ownerRule = append(ownerRule, ownerItem)
  3361  	}
  3362  	var approvedRule []interface{}
  3363  	for _, approvedItem := range approved {
  3364  		approvedRule = append(approvedRule, approvedItem)
  3365  	}
  3366  	var tokenIdRule []interface{}
  3367  	for _, tokenIdItem := range tokenId {
  3368  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  3369  	}
  3370  
  3371  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  3372  	if err != nil {
  3373  		return nil, err
  3374  	}
  3375  	return &IERC721ApprovalIterator{contract: _IERC721.contract, event: "Approval", logs: logs, sub: sub}, nil
  3376  }
  3377  
  3378  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3379  //
  3380  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  3381  func (_IERC721 *IERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  3382  
  3383  	var ownerRule []interface{}
  3384  	for _, ownerItem := range owner {
  3385  		ownerRule = append(ownerRule, ownerItem)
  3386  	}
  3387  	var approvedRule []interface{}
  3388  	for _, approvedItem := range approved {
  3389  		approvedRule = append(approvedRule, approvedItem)
  3390  	}
  3391  	var tokenIdRule []interface{}
  3392  	for _, tokenIdItem := range tokenId {
  3393  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  3394  	}
  3395  
  3396  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  3397  	if err != nil {
  3398  		return nil, err
  3399  	}
  3400  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3401  		defer sub.Unsubscribe()
  3402  		for {
  3403  			select {
  3404  			case log := <-logs:
  3405  				// New log arrived, parse the event and forward to the user
  3406  				event := new(IERC721Approval)
  3407  				if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil {
  3408  					return err
  3409  				}
  3410  				event.Raw = log
  3411  
  3412  				select {
  3413  				case sink <- event:
  3414  				case err := <-sub.Err():
  3415  					return err
  3416  				case <-quit:
  3417  					return nil
  3418  				}
  3419  			case err := <-sub.Err():
  3420  				return err
  3421  			case <-quit:
  3422  				return nil
  3423  			}
  3424  		}
  3425  	}), nil
  3426  }
  3427  
  3428  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3429  //
  3430  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  3431  func (_IERC721 *IERC721Filterer) ParseApproval(log types.Log) (*IERC721Approval, error) {
  3432  	event := new(IERC721Approval)
  3433  	if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil {
  3434  		return nil, err
  3435  	}
  3436  	event.Raw = log
  3437  	return event, nil
  3438  }
  3439  
  3440  // IERC721ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the IERC721 contract.
  3441  type IERC721ApprovalForAllIterator struct {
  3442  	Event *IERC721ApprovalForAll // Event containing the contract specifics and raw log
  3443  
  3444  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3445  	event    string              // Event name to use for unpacking event data
  3446  
  3447  	logs chan types.Log        // Log channel receiving the found contract events
  3448  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3449  	done bool                  // Whether the subscription completed delivering logs
  3450  	fail error                 // Occurred error to stop iteration
  3451  }
  3452  
  3453  // Next advances the iterator to the subsequent event, returning whether there
  3454  // are any more events found. In case of a retrieval or parsing error, false is
  3455  // returned and Error() can be queried for the exact failure.
  3456  func (it *IERC721ApprovalForAllIterator) Next() bool {
  3457  	// If the iterator failed, stop iterating
  3458  	if it.fail != nil {
  3459  		return false
  3460  	}
  3461  	// If the iterator completed, deliver directly whatever's available
  3462  	if it.done {
  3463  		select {
  3464  		case log := <-it.logs:
  3465  			it.Event = new(IERC721ApprovalForAll)
  3466  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3467  				it.fail = err
  3468  				return false
  3469  			}
  3470  			it.Event.Raw = log
  3471  			return true
  3472  
  3473  		default:
  3474  			return false
  3475  		}
  3476  	}
  3477  	// Iterator still in progress, wait for either a data or an error event
  3478  	select {
  3479  	case log := <-it.logs:
  3480  		it.Event = new(IERC721ApprovalForAll)
  3481  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3482  			it.fail = err
  3483  			return false
  3484  		}
  3485  		it.Event.Raw = log
  3486  		return true
  3487  
  3488  	case err := <-it.sub.Err():
  3489  		it.done = true
  3490  		it.fail = err
  3491  		return it.Next()
  3492  	}
  3493  }
  3494  
  3495  // Error returns any retrieval or parsing error occurred during filtering.
  3496  func (it *IERC721ApprovalForAllIterator) Error() error {
  3497  	return it.fail
  3498  }
  3499  
  3500  // Close terminates the iteration process, releasing any pending underlying
  3501  // resources.
  3502  func (it *IERC721ApprovalForAllIterator) Close() error {
  3503  	it.sub.Unsubscribe()
  3504  	return nil
  3505  }
  3506  
  3507  // IERC721ApprovalForAll represents a ApprovalForAll event raised by the IERC721 contract.
  3508  type IERC721ApprovalForAll struct {
  3509  	Owner    common.Address
  3510  	Operator common.Address
  3511  	Approved bool
  3512  	Raw      types.Log // Blockchain specific contextual infos
  3513  }
  3514  
  3515  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  3516  //
  3517  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  3518  func (_IERC721 *IERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721ApprovalForAllIterator, error) {
  3519  
  3520  	var ownerRule []interface{}
  3521  	for _, ownerItem := range owner {
  3522  		ownerRule = append(ownerRule, ownerItem)
  3523  	}
  3524  	var operatorRule []interface{}
  3525  	for _, operatorItem := range operator {
  3526  		operatorRule = append(operatorRule, operatorItem)
  3527  	}
  3528  
  3529  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  3530  	if err != nil {
  3531  		return nil, err
  3532  	}
  3533  	return &IERC721ApprovalForAllIterator{contract: _IERC721.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  3534  }
  3535  
  3536  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  3537  //
  3538  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  3539  func (_IERC721 *IERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  3540  
  3541  	var ownerRule []interface{}
  3542  	for _, ownerItem := range owner {
  3543  		ownerRule = append(ownerRule, ownerItem)
  3544  	}
  3545  	var operatorRule []interface{}
  3546  	for _, operatorItem := range operator {
  3547  		operatorRule = append(operatorRule, operatorItem)
  3548  	}
  3549  
  3550  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  3551  	if err != nil {
  3552  		return nil, err
  3553  	}
  3554  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3555  		defer sub.Unsubscribe()
  3556  		for {
  3557  			select {
  3558  			case log := <-logs:
  3559  				// New log arrived, parse the event and forward to the user
  3560  				event := new(IERC721ApprovalForAll)
  3561  				if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  3562  					return err
  3563  				}
  3564  				event.Raw = log
  3565  
  3566  				select {
  3567  				case sink <- event:
  3568  				case err := <-sub.Err():
  3569  					return err
  3570  				case <-quit:
  3571  					return nil
  3572  				}
  3573  			case err := <-sub.Err():
  3574  				return err
  3575  			case <-quit:
  3576  				return nil
  3577  			}
  3578  		}
  3579  	}), nil
  3580  }
  3581  
  3582  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  3583  //
  3584  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  3585  func (_IERC721 *IERC721Filterer) ParseApprovalForAll(log types.Log) (*IERC721ApprovalForAll, error) {
  3586  	event := new(IERC721ApprovalForAll)
  3587  	if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  3588  		return nil, err
  3589  	}
  3590  	event.Raw = log
  3591  	return event, nil
  3592  }
  3593  
  3594  // IERC721TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC721 contract.
  3595  type IERC721TransferIterator struct {
  3596  	Event *IERC721Transfer // Event containing the contract specifics and raw log
  3597  
  3598  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3599  	event    string              // Event name to use for unpacking event data
  3600  
  3601  	logs chan types.Log        // Log channel receiving the found contract events
  3602  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3603  	done bool                  // Whether the subscription completed delivering logs
  3604  	fail error                 // Occurred error to stop iteration
  3605  }
  3606  
  3607  // Next advances the iterator to the subsequent event, returning whether there
  3608  // are any more events found. In case of a retrieval or parsing error, false is
  3609  // returned and Error() can be queried for the exact failure.
  3610  func (it *IERC721TransferIterator) Next() bool {
  3611  	// If the iterator failed, stop iterating
  3612  	if it.fail != nil {
  3613  		return false
  3614  	}
  3615  	// If the iterator completed, deliver directly whatever's available
  3616  	if it.done {
  3617  		select {
  3618  		case log := <-it.logs:
  3619  			it.Event = new(IERC721Transfer)
  3620  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3621  				it.fail = err
  3622  				return false
  3623  			}
  3624  			it.Event.Raw = log
  3625  			return true
  3626  
  3627  		default:
  3628  			return false
  3629  		}
  3630  	}
  3631  	// Iterator still in progress, wait for either a data or an error event
  3632  	select {
  3633  	case log := <-it.logs:
  3634  		it.Event = new(IERC721Transfer)
  3635  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3636  			it.fail = err
  3637  			return false
  3638  		}
  3639  		it.Event.Raw = log
  3640  		return true
  3641  
  3642  	case err := <-it.sub.Err():
  3643  		it.done = true
  3644  		it.fail = err
  3645  		return it.Next()
  3646  	}
  3647  }
  3648  
  3649  // Error returns any retrieval or parsing error occurred during filtering.
  3650  func (it *IERC721TransferIterator) Error() error {
  3651  	return it.fail
  3652  }
  3653  
  3654  // Close terminates the iteration process, releasing any pending underlying
  3655  // resources.
  3656  func (it *IERC721TransferIterator) Close() error {
  3657  	it.sub.Unsubscribe()
  3658  	return nil
  3659  }
  3660  
  3661  // IERC721Transfer represents a Transfer event raised by the IERC721 contract.
  3662  type IERC721Transfer struct {
  3663  	From    common.Address
  3664  	To      common.Address
  3665  	TokenId *big.Int
  3666  	Raw     types.Log // Blockchain specific contextual infos
  3667  }
  3668  
  3669  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3670  //
  3671  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  3672  func (_IERC721 *IERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721TransferIterator, error) {
  3673  
  3674  	var fromRule []interface{}
  3675  	for _, fromItem := range from {
  3676  		fromRule = append(fromRule, fromItem)
  3677  	}
  3678  	var toRule []interface{}
  3679  	for _, toItem := range to {
  3680  		toRule = append(toRule, toItem)
  3681  	}
  3682  	var tokenIdRule []interface{}
  3683  	for _, tokenIdItem := range tokenId {
  3684  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  3685  	}
  3686  
  3687  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  3688  	if err != nil {
  3689  		return nil, err
  3690  	}
  3691  	return &IERC721TransferIterator{contract: _IERC721.contract, event: "Transfer", logs: logs, sub: sub}, nil
  3692  }
  3693  
  3694  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3695  //
  3696  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  3697  func (_IERC721 *IERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  3698  
  3699  	var fromRule []interface{}
  3700  	for _, fromItem := range from {
  3701  		fromRule = append(fromRule, fromItem)
  3702  	}
  3703  	var toRule []interface{}
  3704  	for _, toItem := range to {
  3705  		toRule = append(toRule, toItem)
  3706  	}
  3707  	var tokenIdRule []interface{}
  3708  	for _, tokenIdItem := range tokenId {
  3709  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  3710  	}
  3711  
  3712  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  3713  	if err != nil {
  3714  		return nil, err
  3715  	}
  3716  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3717  		defer sub.Unsubscribe()
  3718  		for {
  3719  			select {
  3720  			case log := <-logs:
  3721  				// New log arrived, parse the event and forward to the user
  3722  				event := new(IERC721Transfer)
  3723  				if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
  3724  					return err
  3725  				}
  3726  				event.Raw = log
  3727  
  3728  				select {
  3729  				case sink <- event:
  3730  				case err := <-sub.Err():
  3731  					return err
  3732  				case <-quit:
  3733  					return nil
  3734  				}
  3735  			case err := <-sub.Err():
  3736  				return err
  3737  			case <-quit:
  3738  				return nil
  3739  			}
  3740  		}
  3741  	}), nil
  3742  }
  3743  
  3744  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3745  //
  3746  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  3747  func (_IERC721 *IERC721Filterer) ParseTransfer(log types.Log) (*IERC721Transfer, error) {
  3748  	event := new(IERC721Transfer)
  3749  	if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
  3750  		return nil, err
  3751  	}
  3752  	event.Raw = log
  3753  	return event, nil
  3754  }
  3755  
  3756  // IERC721EnumerableABI is the input ABI used to generate the binding from.
  3757  const IERC721EnumerableABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  3758  
  3759  // IERC721EnumerableFuncSigs maps the 4-byte function signature to its string representation.
  3760  var IERC721EnumerableFuncSigs = map[string]string{
  3761  	"095ea7b3": "approve(address,uint256)",
  3762  	"70a08231": "balanceOf(address)",
  3763  	"081812fc": "getApproved(uint256)",
  3764  	"e985e9c5": "isApprovedForAll(address,address)",
  3765  	"6352211e": "ownerOf(uint256)",
  3766  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  3767  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  3768  	"a22cb465": "setApprovalForAll(address,bool)",
  3769  	"01ffc9a7": "supportsInterface(bytes4)",
  3770  	"4f6ccce7": "tokenByIndex(uint256)",
  3771  	"2f745c59": "tokenOfOwnerByIndex(address,uint256)",
  3772  	"18160ddd": "totalSupply()",
  3773  	"23b872dd": "transferFrom(address,address,uint256)",
  3774  }
  3775  
  3776  // IERC721Enumerable is an auto generated Go binding around an Ethereum contract.
  3777  type IERC721Enumerable struct {
  3778  	IERC721EnumerableCaller     // Read-only binding to the contract
  3779  	IERC721EnumerableTransactor // Write-only binding to the contract
  3780  	IERC721EnumerableFilterer   // Log filterer for contract events
  3781  }
  3782  
  3783  // IERC721EnumerableCaller is an auto generated read-only Go binding around an Ethereum contract.
  3784  type IERC721EnumerableCaller struct {
  3785  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3786  }
  3787  
  3788  // IERC721EnumerableTransactor is an auto generated write-only Go binding around an Ethereum contract.
  3789  type IERC721EnumerableTransactor struct {
  3790  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3791  }
  3792  
  3793  // IERC721EnumerableFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  3794  type IERC721EnumerableFilterer struct {
  3795  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3796  }
  3797  
  3798  // IERC721EnumerableSession is an auto generated Go binding around an Ethereum contract,
  3799  // with pre-set call and transact options.
  3800  type IERC721EnumerableSession struct {
  3801  	Contract     *IERC721Enumerable // Generic contract binding to set the session for
  3802  	CallOpts     bind.CallOpts      // Call options to use throughout this session
  3803  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  3804  }
  3805  
  3806  // IERC721EnumerableCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  3807  // with pre-set call options.
  3808  type IERC721EnumerableCallerSession struct {
  3809  	Contract *IERC721EnumerableCaller // Generic contract caller binding to set the session for
  3810  	CallOpts bind.CallOpts            // Call options to use throughout this session
  3811  }
  3812  
  3813  // IERC721EnumerableTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  3814  // with pre-set transact options.
  3815  type IERC721EnumerableTransactorSession struct {
  3816  	Contract     *IERC721EnumerableTransactor // Generic contract transactor binding to set the session for
  3817  	TransactOpts bind.TransactOpts            // Transaction auth options to use throughout this session
  3818  }
  3819  
  3820  // IERC721EnumerableRaw is an auto generated low-level Go binding around an Ethereum contract.
  3821  type IERC721EnumerableRaw struct {
  3822  	Contract *IERC721Enumerable // Generic contract binding to access the raw methods on
  3823  }
  3824  
  3825  // IERC721EnumerableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  3826  type IERC721EnumerableCallerRaw struct {
  3827  	Contract *IERC721EnumerableCaller // Generic read-only contract binding to access the raw methods on
  3828  }
  3829  
  3830  // IERC721EnumerableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  3831  type IERC721EnumerableTransactorRaw struct {
  3832  	Contract *IERC721EnumerableTransactor // Generic write-only contract binding to access the raw methods on
  3833  }
  3834  
  3835  // NewIERC721Enumerable creates a new instance of IERC721Enumerable, bound to a specific deployed contract.
  3836  func NewIERC721Enumerable(address common.Address, backend bind.ContractBackend) (*IERC721Enumerable, error) {
  3837  	contract, err := bindIERC721Enumerable(address, backend, backend, backend)
  3838  	if err != nil {
  3839  		return nil, err
  3840  	}
  3841  	return &IERC721Enumerable{IERC721EnumerableCaller: IERC721EnumerableCaller{contract: contract}, IERC721EnumerableTransactor: IERC721EnumerableTransactor{contract: contract}, IERC721EnumerableFilterer: IERC721EnumerableFilterer{contract: contract}}, nil
  3842  }
  3843  
  3844  // NewIERC721EnumerableCaller creates a new read-only instance of IERC721Enumerable, bound to a specific deployed contract.
  3845  func NewIERC721EnumerableCaller(address common.Address, caller bind.ContractCaller) (*IERC721EnumerableCaller, error) {
  3846  	contract, err := bindIERC721Enumerable(address, caller, nil, nil)
  3847  	if err != nil {
  3848  		return nil, err
  3849  	}
  3850  	return &IERC721EnumerableCaller{contract: contract}, nil
  3851  }
  3852  
  3853  // NewIERC721EnumerableTransactor creates a new write-only instance of IERC721Enumerable, bound to a specific deployed contract.
  3854  func NewIERC721EnumerableTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721EnumerableTransactor, error) {
  3855  	contract, err := bindIERC721Enumerable(address, nil, transactor, nil)
  3856  	if err != nil {
  3857  		return nil, err
  3858  	}
  3859  	return &IERC721EnumerableTransactor{contract: contract}, nil
  3860  }
  3861  
  3862  // NewIERC721EnumerableFilterer creates a new log filterer instance of IERC721Enumerable, bound to a specific deployed contract.
  3863  func NewIERC721EnumerableFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721EnumerableFilterer, error) {
  3864  	contract, err := bindIERC721Enumerable(address, nil, nil, filterer)
  3865  	if err != nil {
  3866  		return nil, err
  3867  	}
  3868  	return &IERC721EnumerableFilterer{contract: contract}, nil
  3869  }
  3870  
  3871  // bindIERC721Enumerable binds a generic wrapper to an already deployed contract.
  3872  func bindIERC721Enumerable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  3873  	parsed, err := abi.JSON(strings.NewReader(IERC721EnumerableABI))
  3874  	if err != nil {
  3875  		return nil, err
  3876  	}
  3877  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  3878  }
  3879  
  3880  // Call invokes the (constant) contract method with params as input values and
  3881  // sets the output to result. The result type might be a single field for simple
  3882  // returns, a slice of interfaces for anonymous returns and a struct for named
  3883  // returns.
  3884  func (_IERC721Enumerable *IERC721EnumerableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  3885  	return _IERC721Enumerable.Contract.IERC721EnumerableCaller.contract.Call(opts, result, method, params...)
  3886  }
  3887  
  3888  // Transfer initiates a plain transaction to move funds to the contract, calling
  3889  // its default method if one is available.
  3890  func (_IERC721Enumerable *IERC721EnumerableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3891  	return _IERC721Enumerable.Contract.IERC721EnumerableTransactor.contract.Transfer(opts)
  3892  }
  3893  
  3894  // Transact invokes the (paid) contract method with params as input values.
  3895  func (_IERC721Enumerable *IERC721EnumerableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3896  	return _IERC721Enumerable.Contract.IERC721EnumerableTransactor.contract.Transact(opts, method, params...)
  3897  }
  3898  
  3899  // Call invokes the (constant) contract method with params as input values and
  3900  // sets the output to result. The result type might be a single field for simple
  3901  // returns, a slice of interfaces for anonymous returns and a struct for named
  3902  // returns.
  3903  func (_IERC721Enumerable *IERC721EnumerableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  3904  	return _IERC721Enumerable.Contract.contract.Call(opts, result, method, params...)
  3905  }
  3906  
  3907  // Transfer initiates a plain transaction to move funds to the contract, calling
  3908  // its default method if one is available.
  3909  func (_IERC721Enumerable *IERC721EnumerableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3910  	return _IERC721Enumerable.Contract.contract.Transfer(opts)
  3911  }
  3912  
  3913  // Transact invokes the (paid) contract method with params as input values.
  3914  func (_IERC721Enumerable *IERC721EnumerableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3915  	return _IERC721Enumerable.Contract.contract.Transact(opts, method, params...)
  3916  }
  3917  
  3918  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3919  //
  3920  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  3921  func (_IERC721Enumerable *IERC721EnumerableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  3922  	var out []interface{}
  3923  	err := _IERC721Enumerable.contract.Call(opts, &out, "balanceOf", owner)
  3924  
  3925  	if err != nil {
  3926  		return *new(*big.Int), err
  3927  	}
  3928  
  3929  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  3930  
  3931  	return out0, err
  3932  
  3933  }
  3934  
  3935  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3936  //
  3937  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  3938  func (_IERC721Enumerable *IERC721EnumerableSession) BalanceOf(owner common.Address) (*big.Int, error) {
  3939  	return _IERC721Enumerable.Contract.BalanceOf(&_IERC721Enumerable.CallOpts, owner)
  3940  }
  3941  
  3942  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3943  //
  3944  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  3945  func (_IERC721Enumerable *IERC721EnumerableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  3946  	return _IERC721Enumerable.Contract.BalanceOf(&_IERC721Enumerable.CallOpts, owner)
  3947  }
  3948  
  3949  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  3950  //
  3951  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  3952  func (_IERC721Enumerable *IERC721EnumerableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  3953  	var out []interface{}
  3954  	err := _IERC721Enumerable.contract.Call(opts, &out, "getApproved", tokenId)
  3955  
  3956  	if err != nil {
  3957  		return *new(common.Address), err
  3958  	}
  3959  
  3960  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  3961  
  3962  	return out0, err
  3963  
  3964  }
  3965  
  3966  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  3967  //
  3968  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  3969  func (_IERC721Enumerable *IERC721EnumerableSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  3970  	return _IERC721Enumerable.Contract.GetApproved(&_IERC721Enumerable.CallOpts, tokenId)
  3971  }
  3972  
  3973  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  3974  //
  3975  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  3976  func (_IERC721Enumerable *IERC721EnumerableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  3977  	return _IERC721Enumerable.Contract.GetApproved(&_IERC721Enumerable.CallOpts, tokenId)
  3978  }
  3979  
  3980  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  3981  //
  3982  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  3983  func (_IERC721Enumerable *IERC721EnumerableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  3984  	var out []interface{}
  3985  	err := _IERC721Enumerable.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
  3986  
  3987  	if err != nil {
  3988  		return *new(bool), err
  3989  	}
  3990  
  3991  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  3992  
  3993  	return out0, err
  3994  
  3995  }
  3996  
  3997  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  3998  //
  3999  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  4000  func (_IERC721Enumerable *IERC721EnumerableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  4001  	return _IERC721Enumerable.Contract.IsApprovedForAll(&_IERC721Enumerable.CallOpts, owner, operator)
  4002  }
  4003  
  4004  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  4005  //
  4006  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  4007  func (_IERC721Enumerable *IERC721EnumerableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  4008  	return _IERC721Enumerable.Contract.IsApprovedForAll(&_IERC721Enumerable.CallOpts, owner, operator)
  4009  }
  4010  
  4011  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  4012  //
  4013  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  4014  func (_IERC721Enumerable *IERC721EnumerableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  4015  	var out []interface{}
  4016  	err := _IERC721Enumerable.contract.Call(opts, &out, "ownerOf", tokenId)
  4017  
  4018  	if err != nil {
  4019  		return *new(common.Address), err
  4020  	}
  4021  
  4022  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  4023  
  4024  	return out0, err
  4025  
  4026  }
  4027  
  4028  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  4029  //
  4030  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  4031  func (_IERC721Enumerable *IERC721EnumerableSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  4032  	return _IERC721Enumerable.Contract.OwnerOf(&_IERC721Enumerable.CallOpts, tokenId)
  4033  }
  4034  
  4035  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  4036  //
  4037  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  4038  func (_IERC721Enumerable *IERC721EnumerableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  4039  	return _IERC721Enumerable.Contract.OwnerOf(&_IERC721Enumerable.CallOpts, tokenId)
  4040  }
  4041  
  4042  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  4043  //
  4044  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  4045  func (_IERC721Enumerable *IERC721EnumerableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  4046  	var out []interface{}
  4047  	err := _IERC721Enumerable.contract.Call(opts, &out, "supportsInterface", interfaceId)
  4048  
  4049  	if err != nil {
  4050  		return *new(bool), err
  4051  	}
  4052  
  4053  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  4054  
  4055  	return out0, err
  4056  
  4057  }
  4058  
  4059  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  4060  //
  4061  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  4062  func (_IERC721Enumerable *IERC721EnumerableSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  4063  	return _IERC721Enumerable.Contract.SupportsInterface(&_IERC721Enumerable.CallOpts, interfaceId)
  4064  }
  4065  
  4066  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  4067  //
  4068  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  4069  func (_IERC721Enumerable *IERC721EnumerableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  4070  	return _IERC721Enumerable.Contract.SupportsInterface(&_IERC721Enumerable.CallOpts, interfaceId)
  4071  }
  4072  
  4073  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  4074  //
  4075  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  4076  func (_IERC721Enumerable *IERC721EnumerableCaller) TokenByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) {
  4077  	var out []interface{}
  4078  	err := _IERC721Enumerable.contract.Call(opts, &out, "tokenByIndex", index)
  4079  
  4080  	if err != nil {
  4081  		return *new(*big.Int), err
  4082  	}
  4083  
  4084  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  4085  
  4086  	return out0, err
  4087  
  4088  }
  4089  
  4090  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  4091  //
  4092  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  4093  func (_IERC721Enumerable *IERC721EnumerableSession) TokenByIndex(index *big.Int) (*big.Int, error) {
  4094  	return _IERC721Enumerable.Contract.TokenByIndex(&_IERC721Enumerable.CallOpts, index)
  4095  }
  4096  
  4097  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  4098  //
  4099  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  4100  func (_IERC721Enumerable *IERC721EnumerableCallerSession) TokenByIndex(index *big.Int) (*big.Int, error) {
  4101  	return _IERC721Enumerable.Contract.TokenByIndex(&_IERC721Enumerable.CallOpts, index)
  4102  }
  4103  
  4104  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  4105  //
  4106  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256 tokenId)
  4107  func (_IERC721Enumerable *IERC721EnumerableCaller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) {
  4108  	var out []interface{}
  4109  	err := _IERC721Enumerable.contract.Call(opts, &out, "tokenOfOwnerByIndex", owner, index)
  4110  
  4111  	if err != nil {
  4112  		return *new(*big.Int), err
  4113  	}
  4114  
  4115  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  4116  
  4117  	return out0, err
  4118  
  4119  }
  4120  
  4121  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  4122  //
  4123  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256 tokenId)
  4124  func (_IERC721Enumerable *IERC721EnumerableSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  4125  	return _IERC721Enumerable.Contract.TokenOfOwnerByIndex(&_IERC721Enumerable.CallOpts, owner, index)
  4126  }
  4127  
  4128  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  4129  //
  4130  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256 tokenId)
  4131  func (_IERC721Enumerable *IERC721EnumerableCallerSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  4132  	return _IERC721Enumerable.Contract.TokenOfOwnerByIndex(&_IERC721Enumerable.CallOpts, owner, index)
  4133  }
  4134  
  4135  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  4136  //
  4137  // Solidity: function totalSupply() view returns(uint256)
  4138  func (_IERC721Enumerable *IERC721EnumerableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  4139  	var out []interface{}
  4140  	err := _IERC721Enumerable.contract.Call(opts, &out, "totalSupply")
  4141  
  4142  	if err != nil {
  4143  		return *new(*big.Int), err
  4144  	}
  4145  
  4146  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  4147  
  4148  	return out0, err
  4149  
  4150  }
  4151  
  4152  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  4153  //
  4154  // Solidity: function totalSupply() view returns(uint256)
  4155  func (_IERC721Enumerable *IERC721EnumerableSession) TotalSupply() (*big.Int, error) {
  4156  	return _IERC721Enumerable.Contract.TotalSupply(&_IERC721Enumerable.CallOpts)
  4157  }
  4158  
  4159  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  4160  //
  4161  // Solidity: function totalSupply() view returns(uint256)
  4162  func (_IERC721Enumerable *IERC721EnumerableCallerSession) TotalSupply() (*big.Int, error) {
  4163  	return _IERC721Enumerable.Contract.TotalSupply(&_IERC721Enumerable.CallOpts)
  4164  }
  4165  
  4166  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  4167  //
  4168  // Solidity: function approve(address to, uint256 tokenId) returns()
  4169  func (_IERC721Enumerable *IERC721EnumerableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4170  	return _IERC721Enumerable.contract.Transact(opts, "approve", to, tokenId)
  4171  }
  4172  
  4173  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  4174  //
  4175  // Solidity: function approve(address to, uint256 tokenId) returns()
  4176  func (_IERC721Enumerable *IERC721EnumerableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4177  	return _IERC721Enumerable.Contract.Approve(&_IERC721Enumerable.TransactOpts, to, tokenId)
  4178  }
  4179  
  4180  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  4181  //
  4182  // Solidity: function approve(address to, uint256 tokenId) returns()
  4183  func (_IERC721Enumerable *IERC721EnumerableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4184  	return _IERC721Enumerable.Contract.Approve(&_IERC721Enumerable.TransactOpts, to, tokenId)
  4185  }
  4186  
  4187  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  4188  //
  4189  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  4190  func (_IERC721Enumerable *IERC721EnumerableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4191  	return _IERC721Enumerable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  4192  }
  4193  
  4194  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  4195  //
  4196  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  4197  func (_IERC721Enumerable *IERC721EnumerableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4198  	return _IERC721Enumerable.Contract.SafeTransferFrom(&_IERC721Enumerable.TransactOpts, from, to, tokenId)
  4199  }
  4200  
  4201  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  4202  //
  4203  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  4204  func (_IERC721Enumerable *IERC721EnumerableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4205  	return _IERC721Enumerable.Contract.SafeTransferFrom(&_IERC721Enumerable.TransactOpts, from, to, tokenId)
  4206  }
  4207  
  4208  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  4209  //
  4210  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  4211  func (_IERC721Enumerable *IERC721EnumerableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  4212  	return _IERC721Enumerable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data)
  4213  }
  4214  
  4215  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  4216  //
  4217  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  4218  func (_IERC721Enumerable *IERC721EnumerableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  4219  	return _IERC721Enumerable.Contract.SafeTransferFrom0(&_IERC721Enumerable.TransactOpts, from, to, tokenId, data)
  4220  }
  4221  
  4222  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  4223  //
  4224  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  4225  func (_IERC721Enumerable *IERC721EnumerableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  4226  	return _IERC721Enumerable.Contract.SafeTransferFrom0(&_IERC721Enumerable.TransactOpts, from, to, tokenId, data)
  4227  }
  4228  
  4229  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  4230  //
  4231  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  4232  func (_IERC721Enumerable *IERC721EnumerableTransactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, _approved bool) (*types.Transaction, error) {
  4233  	return _IERC721Enumerable.contract.Transact(opts, "setApprovalForAll", operator, _approved)
  4234  }
  4235  
  4236  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  4237  //
  4238  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  4239  func (_IERC721Enumerable *IERC721EnumerableSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
  4240  	return _IERC721Enumerable.Contract.SetApprovalForAll(&_IERC721Enumerable.TransactOpts, operator, _approved)
  4241  }
  4242  
  4243  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  4244  //
  4245  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  4246  func (_IERC721Enumerable *IERC721EnumerableTransactorSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
  4247  	return _IERC721Enumerable.Contract.SetApprovalForAll(&_IERC721Enumerable.TransactOpts, operator, _approved)
  4248  }
  4249  
  4250  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4251  //
  4252  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  4253  func (_IERC721Enumerable *IERC721EnumerableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4254  	return _IERC721Enumerable.contract.Transact(opts, "transferFrom", from, to, tokenId)
  4255  }
  4256  
  4257  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4258  //
  4259  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  4260  func (_IERC721Enumerable *IERC721EnumerableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4261  	return _IERC721Enumerable.Contract.TransferFrom(&_IERC721Enumerable.TransactOpts, from, to, tokenId)
  4262  }
  4263  
  4264  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4265  //
  4266  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  4267  func (_IERC721Enumerable *IERC721EnumerableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4268  	return _IERC721Enumerable.Contract.TransferFrom(&_IERC721Enumerable.TransactOpts, from, to, tokenId)
  4269  }
  4270  
  4271  // IERC721EnumerableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC721Enumerable contract.
  4272  type IERC721EnumerableApprovalIterator struct {
  4273  	Event *IERC721EnumerableApproval // Event containing the contract specifics and raw log
  4274  
  4275  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4276  	event    string              // Event name to use for unpacking event data
  4277  
  4278  	logs chan types.Log        // Log channel receiving the found contract events
  4279  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4280  	done bool                  // Whether the subscription completed delivering logs
  4281  	fail error                 // Occurred error to stop iteration
  4282  }
  4283  
  4284  // Next advances the iterator to the subsequent event, returning whether there
  4285  // are any more events found. In case of a retrieval or parsing error, false is
  4286  // returned and Error() can be queried for the exact failure.
  4287  func (it *IERC721EnumerableApprovalIterator) Next() bool {
  4288  	// If the iterator failed, stop iterating
  4289  	if it.fail != nil {
  4290  		return false
  4291  	}
  4292  	// If the iterator completed, deliver directly whatever's available
  4293  	if it.done {
  4294  		select {
  4295  		case log := <-it.logs:
  4296  			it.Event = new(IERC721EnumerableApproval)
  4297  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4298  				it.fail = err
  4299  				return false
  4300  			}
  4301  			it.Event.Raw = log
  4302  			return true
  4303  
  4304  		default:
  4305  			return false
  4306  		}
  4307  	}
  4308  	// Iterator still in progress, wait for either a data or an error event
  4309  	select {
  4310  	case log := <-it.logs:
  4311  		it.Event = new(IERC721EnumerableApproval)
  4312  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4313  			it.fail = err
  4314  			return false
  4315  		}
  4316  		it.Event.Raw = log
  4317  		return true
  4318  
  4319  	case err := <-it.sub.Err():
  4320  		it.done = true
  4321  		it.fail = err
  4322  		return it.Next()
  4323  	}
  4324  }
  4325  
  4326  // Error returns any retrieval or parsing error occurred during filtering.
  4327  func (it *IERC721EnumerableApprovalIterator) Error() error {
  4328  	return it.fail
  4329  }
  4330  
  4331  // Close terminates the iteration process, releasing any pending underlying
  4332  // resources.
  4333  func (it *IERC721EnumerableApprovalIterator) Close() error {
  4334  	it.sub.Unsubscribe()
  4335  	return nil
  4336  }
  4337  
  4338  // IERC721EnumerableApproval represents a Approval event raised by the IERC721Enumerable contract.
  4339  type IERC721EnumerableApproval struct {
  4340  	Owner    common.Address
  4341  	Approved common.Address
  4342  	TokenId  *big.Int
  4343  	Raw      types.Log // Blockchain specific contextual infos
  4344  }
  4345  
  4346  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4347  //
  4348  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  4349  func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721EnumerableApprovalIterator, error) {
  4350  
  4351  	var ownerRule []interface{}
  4352  	for _, ownerItem := range owner {
  4353  		ownerRule = append(ownerRule, ownerItem)
  4354  	}
  4355  	var approvedRule []interface{}
  4356  	for _, approvedItem := range approved {
  4357  		approvedRule = append(approvedRule, approvedItem)
  4358  	}
  4359  	var tokenIdRule []interface{}
  4360  	for _, tokenIdItem := range tokenId {
  4361  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  4362  	}
  4363  
  4364  	logs, sub, err := _IERC721Enumerable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  4365  	if err != nil {
  4366  		return nil, err
  4367  	}
  4368  	return &IERC721EnumerableApprovalIterator{contract: _IERC721Enumerable.contract, event: "Approval", logs: logs, sub: sub}, nil
  4369  }
  4370  
  4371  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4372  //
  4373  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  4374  func (_IERC721Enumerable *IERC721EnumerableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721EnumerableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  4375  
  4376  	var ownerRule []interface{}
  4377  	for _, ownerItem := range owner {
  4378  		ownerRule = append(ownerRule, ownerItem)
  4379  	}
  4380  	var approvedRule []interface{}
  4381  	for _, approvedItem := range approved {
  4382  		approvedRule = append(approvedRule, approvedItem)
  4383  	}
  4384  	var tokenIdRule []interface{}
  4385  	for _, tokenIdItem := range tokenId {
  4386  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  4387  	}
  4388  
  4389  	logs, sub, err := _IERC721Enumerable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  4390  	if err != nil {
  4391  		return nil, err
  4392  	}
  4393  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4394  		defer sub.Unsubscribe()
  4395  		for {
  4396  			select {
  4397  			case log := <-logs:
  4398  				// New log arrived, parse the event and forward to the user
  4399  				event := new(IERC721EnumerableApproval)
  4400  				if err := _IERC721Enumerable.contract.UnpackLog(event, "Approval", log); err != nil {
  4401  					return err
  4402  				}
  4403  				event.Raw = log
  4404  
  4405  				select {
  4406  				case sink <- event:
  4407  				case err := <-sub.Err():
  4408  					return err
  4409  				case <-quit:
  4410  					return nil
  4411  				}
  4412  			case err := <-sub.Err():
  4413  				return err
  4414  			case <-quit:
  4415  				return nil
  4416  			}
  4417  		}
  4418  	}), nil
  4419  }
  4420  
  4421  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4422  //
  4423  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  4424  func (_IERC721Enumerable *IERC721EnumerableFilterer) ParseApproval(log types.Log) (*IERC721EnumerableApproval, error) {
  4425  	event := new(IERC721EnumerableApproval)
  4426  	if err := _IERC721Enumerable.contract.UnpackLog(event, "Approval", log); err != nil {
  4427  		return nil, err
  4428  	}
  4429  	event.Raw = log
  4430  	return event, nil
  4431  }
  4432  
  4433  // IERC721EnumerableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the IERC721Enumerable contract.
  4434  type IERC721EnumerableApprovalForAllIterator struct {
  4435  	Event *IERC721EnumerableApprovalForAll // Event containing the contract specifics and raw log
  4436  
  4437  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4438  	event    string              // Event name to use for unpacking event data
  4439  
  4440  	logs chan types.Log        // Log channel receiving the found contract events
  4441  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4442  	done bool                  // Whether the subscription completed delivering logs
  4443  	fail error                 // Occurred error to stop iteration
  4444  }
  4445  
  4446  // Next advances the iterator to the subsequent event, returning whether there
  4447  // are any more events found. In case of a retrieval or parsing error, false is
  4448  // returned and Error() can be queried for the exact failure.
  4449  func (it *IERC721EnumerableApprovalForAllIterator) Next() bool {
  4450  	// If the iterator failed, stop iterating
  4451  	if it.fail != nil {
  4452  		return false
  4453  	}
  4454  	// If the iterator completed, deliver directly whatever's available
  4455  	if it.done {
  4456  		select {
  4457  		case log := <-it.logs:
  4458  			it.Event = new(IERC721EnumerableApprovalForAll)
  4459  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4460  				it.fail = err
  4461  				return false
  4462  			}
  4463  			it.Event.Raw = log
  4464  			return true
  4465  
  4466  		default:
  4467  			return false
  4468  		}
  4469  	}
  4470  	// Iterator still in progress, wait for either a data or an error event
  4471  	select {
  4472  	case log := <-it.logs:
  4473  		it.Event = new(IERC721EnumerableApprovalForAll)
  4474  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4475  			it.fail = err
  4476  			return false
  4477  		}
  4478  		it.Event.Raw = log
  4479  		return true
  4480  
  4481  	case err := <-it.sub.Err():
  4482  		it.done = true
  4483  		it.fail = err
  4484  		return it.Next()
  4485  	}
  4486  }
  4487  
  4488  // Error returns any retrieval or parsing error occurred during filtering.
  4489  func (it *IERC721EnumerableApprovalForAllIterator) Error() error {
  4490  	return it.fail
  4491  }
  4492  
  4493  // Close terminates the iteration process, releasing any pending underlying
  4494  // resources.
  4495  func (it *IERC721EnumerableApprovalForAllIterator) Close() error {
  4496  	it.sub.Unsubscribe()
  4497  	return nil
  4498  }
  4499  
  4500  // IERC721EnumerableApprovalForAll represents a ApprovalForAll event raised by the IERC721Enumerable contract.
  4501  type IERC721EnumerableApprovalForAll struct {
  4502  	Owner    common.Address
  4503  	Operator common.Address
  4504  	Approved bool
  4505  	Raw      types.Log // Blockchain specific contextual infos
  4506  }
  4507  
  4508  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  4509  //
  4510  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  4511  func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721EnumerableApprovalForAllIterator, error) {
  4512  
  4513  	var ownerRule []interface{}
  4514  	for _, ownerItem := range owner {
  4515  		ownerRule = append(ownerRule, ownerItem)
  4516  	}
  4517  	var operatorRule []interface{}
  4518  	for _, operatorItem := range operator {
  4519  		operatorRule = append(operatorRule, operatorItem)
  4520  	}
  4521  
  4522  	logs, sub, err := _IERC721Enumerable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  4523  	if err != nil {
  4524  		return nil, err
  4525  	}
  4526  	return &IERC721EnumerableApprovalForAllIterator{contract: _IERC721Enumerable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  4527  }
  4528  
  4529  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  4530  //
  4531  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  4532  func (_IERC721Enumerable *IERC721EnumerableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721EnumerableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  4533  
  4534  	var ownerRule []interface{}
  4535  	for _, ownerItem := range owner {
  4536  		ownerRule = append(ownerRule, ownerItem)
  4537  	}
  4538  	var operatorRule []interface{}
  4539  	for _, operatorItem := range operator {
  4540  		operatorRule = append(operatorRule, operatorItem)
  4541  	}
  4542  
  4543  	logs, sub, err := _IERC721Enumerable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  4544  	if err != nil {
  4545  		return nil, err
  4546  	}
  4547  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4548  		defer sub.Unsubscribe()
  4549  		for {
  4550  			select {
  4551  			case log := <-logs:
  4552  				// New log arrived, parse the event and forward to the user
  4553  				event := new(IERC721EnumerableApprovalForAll)
  4554  				if err := _IERC721Enumerable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  4555  					return err
  4556  				}
  4557  				event.Raw = log
  4558  
  4559  				select {
  4560  				case sink <- event:
  4561  				case err := <-sub.Err():
  4562  					return err
  4563  				case <-quit:
  4564  					return nil
  4565  				}
  4566  			case err := <-sub.Err():
  4567  				return err
  4568  			case <-quit:
  4569  				return nil
  4570  			}
  4571  		}
  4572  	}), nil
  4573  }
  4574  
  4575  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  4576  //
  4577  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  4578  func (_IERC721Enumerable *IERC721EnumerableFilterer) ParseApprovalForAll(log types.Log) (*IERC721EnumerableApprovalForAll, error) {
  4579  	event := new(IERC721EnumerableApprovalForAll)
  4580  	if err := _IERC721Enumerable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  4581  		return nil, err
  4582  	}
  4583  	event.Raw = log
  4584  	return event, nil
  4585  }
  4586  
  4587  // IERC721EnumerableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC721Enumerable contract.
  4588  type IERC721EnumerableTransferIterator struct {
  4589  	Event *IERC721EnumerableTransfer // Event containing the contract specifics and raw log
  4590  
  4591  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4592  	event    string              // Event name to use for unpacking event data
  4593  
  4594  	logs chan types.Log        // Log channel receiving the found contract events
  4595  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4596  	done bool                  // Whether the subscription completed delivering logs
  4597  	fail error                 // Occurred error to stop iteration
  4598  }
  4599  
  4600  // Next advances the iterator to the subsequent event, returning whether there
  4601  // are any more events found. In case of a retrieval or parsing error, false is
  4602  // returned and Error() can be queried for the exact failure.
  4603  func (it *IERC721EnumerableTransferIterator) Next() bool {
  4604  	// If the iterator failed, stop iterating
  4605  	if it.fail != nil {
  4606  		return false
  4607  	}
  4608  	// If the iterator completed, deliver directly whatever's available
  4609  	if it.done {
  4610  		select {
  4611  		case log := <-it.logs:
  4612  			it.Event = new(IERC721EnumerableTransfer)
  4613  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4614  				it.fail = err
  4615  				return false
  4616  			}
  4617  			it.Event.Raw = log
  4618  			return true
  4619  
  4620  		default:
  4621  			return false
  4622  		}
  4623  	}
  4624  	// Iterator still in progress, wait for either a data or an error event
  4625  	select {
  4626  	case log := <-it.logs:
  4627  		it.Event = new(IERC721EnumerableTransfer)
  4628  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4629  			it.fail = err
  4630  			return false
  4631  		}
  4632  		it.Event.Raw = log
  4633  		return true
  4634  
  4635  	case err := <-it.sub.Err():
  4636  		it.done = true
  4637  		it.fail = err
  4638  		return it.Next()
  4639  	}
  4640  }
  4641  
  4642  // Error returns any retrieval or parsing error occurred during filtering.
  4643  func (it *IERC721EnumerableTransferIterator) Error() error {
  4644  	return it.fail
  4645  }
  4646  
  4647  // Close terminates the iteration process, releasing any pending underlying
  4648  // resources.
  4649  func (it *IERC721EnumerableTransferIterator) Close() error {
  4650  	it.sub.Unsubscribe()
  4651  	return nil
  4652  }
  4653  
  4654  // IERC721EnumerableTransfer represents a Transfer event raised by the IERC721Enumerable contract.
  4655  type IERC721EnumerableTransfer struct {
  4656  	From    common.Address
  4657  	To      common.Address
  4658  	TokenId *big.Int
  4659  	Raw     types.Log // Blockchain specific contextual infos
  4660  }
  4661  
  4662  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4663  //
  4664  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  4665  func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721EnumerableTransferIterator, error) {
  4666  
  4667  	var fromRule []interface{}
  4668  	for _, fromItem := range from {
  4669  		fromRule = append(fromRule, fromItem)
  4670  	}
  4671  	var toRule []interface{}
  4672  	for _, toItem := range to {
  4673  		toRule = append(toRule, toItem)
  4674  	}
  4675  	var tokenIdRule []interface{}
  4676  	for _, tokenIdItem := range tokenId {
  4677  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  4678  	}
  4679  
  4680  	logs, sub, err := _IERC721Enumerable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  4681  	if err != nil {
  4682  		return nil, err
  4683  	}
  4684  	return &IERC721EnumerableTransferIterator{contract: _IERC721Enumerable.contract, event: "Transfer", logs: logs, sub: sub}, nil
  4685  }
  4686  
  4687  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4688  //
  4689  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  4690  func (_IERC721Enumerable *IERC721EnumerableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721EnumerableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  4691  
  4692  	var fromRule []interface{}
  4693  	for _, fromItem := range from {
  4694  		fromRule = append(fromRule, fromItem)
  4695  	}
  4696  	var toRule []interface{}
  4697  	for _, toItem := range to {
  4698  		toRule = append(toRule, toItem)
  4699  	}
  4700  	var tokenIdRule []interface{}
  4701  	for _, tokenIdItem := range tokenId {
  4702  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  4703  	}
  4704  
  4705  	logs, sub, err := _IERC721Enumerable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  4706  	if err != nil {
  4707  		return nil, err
  4708  	}
  4709  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4710  		defer sub.Unsubscribe()
  4711  		for {
  4712  			select {
  4713  			case log := <-logs:
  4714  				// New log arrived, parse the event and forward to the user
  4715  				event := new(IERC721EnumerableTransfer)
  4716  				if err := _IERC721Enumerable.contract.UnpackLog(event, "Transfer", log); err != nil {
  4717  					return err
  4718  				}
  4719  				event.Raw = log
  4720  
  4721  				select {
  4722  				case sink <- event:
  4723  				case err := <-sub.Err():
  4724  					return err
  4725  				case <-quit:
  4726  					return nil
  4727  				}
  4728  			case err := <-sub.Err():
  4729  				return err
  4730  			case <-quit:
  4731  				return nil
  4732  			}
  4733  		}
  4734  	}), nil
  4735  }
  4736  
  4737  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4738  //
  4739  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  4740  func (_IERC721Enumerable *IERC721EnumerableFilterer) ParseTransfer(log types.Log) (*IERC721EnumerableTransfer, error) {
  4741  	event := new(IERC721EnumerableTransfer)
  4742  	if err := _IERC721Enumerable.contract.UnpackLog(event, "Transfer", log); err != nil {
  4743  		return nil, err
  4744  	}
  4745  	event.Raw = log
  4746  	return event, nil
  4747  }
  4748  
  4749  // IERC721MetadataABI is the input ABI used to generate the binding from.
  4750  const IERC721MetadataABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  4751  
  4752  // IERC721MetadataFuncSigs maps the 4-byte function signature to its string representation.
  4753  var IERC721MetadataFuncSigs = map[string]string{
  4754  	"095ea7b3": "approve(address,uint256)",
  4755  	"70a08231": "balanceOf(address)",
  4756  	"081812fc": "getApproved(uint256)",
  4757  	"e985e9c5": "isApprovedForAll(address,address)",
  4758  	"06fdde03": "name()",
  4759  	"6352211e": "ownerOf(uint256)",
  4760  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  4761  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  4762  	"a22cb465": "setApprovalForAll(address,bool)",
  4763  	"01ffc9a7": "supportsInterface(bytes4)",
  4764  	"95d89b41": "symbol()",
  4765  	"c87b56dd": "tokenURI(uint256)",
  4766  	"23b872dd": "transferFrom(address,address,uint256)",
  4767  }
  4768  
  4769  // IERC721Metadata is an auto generated Go binding around an Ethereum contract.
  4770  type IERC721Metadata struct {
  4771  	IERC721MetadataCaller     // Read-only binding to the contract
  4772  	IERC721MetadataTransactor // Write-only binding to the contract
  4773  	IERC721MetadataFilterer   // Log filterer for contract events
  4774  }
  4775  
  4776  // IERC721MetadataCaller is an auto generated read-only Go binding around an Ethereum contract.
  4777  type IERC721MetadataCaller struct {
  4778  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4779  }
  4780  
  4781  // IERC721MetadataTransactor is an auto generated write-only Go binding around an Ethereum contract.
  4782  type IERC721MetadataTransactor struct {
  4783  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4784  }
  4785  
  4786  // IERC721MetadataFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  4787  type IERC721MetadataFilterer struct {
  4788  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4789  }
  4790  
  4791  // IERC721MetadataSession is an auto generated Go binding around an Ethereum contract,
  4792  // with pre-set call and transact options.
  4793  type IERC721MetadataSession struct {
  4794  	Contract     *IERC721Metadata  // Generic contract binding to set the session for
  4795  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  4796  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  4797  }
  4798  
  4799  // IERC721MetadataCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  4800  // with pre-set call options.
  4801  type IERC721MetadataCallerSession struct {
  4802  	Contract *IERC721MetadataCaller // Generic contract caller binding to set the session for
  4803  	CallOpts bind.CallOpts          // Call options to use throughout this session
  4804  }
  4805  
  4806  // IERC721MetadataTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  4807  // with pre-set transact options.
  4808  type IERC721MetadataTransactorSession struct {
  4809  	Contract     *IERC721MetadataTransactor // Generic contract transactor binding to set the session for
  4810  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
  4811  }
  4812  
  4813  // IERC721MetadataRaw is an auto generated low-level Go binding around an Ethereum contract.
  4814  type IERC721MetadataRaw struct {
  4815  	Contract *IERC721Metadata // Generic contract binding to access the raw methods on
  4816  }
  4817  
  4818  // IERC721MetadataCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  4819  type IERC721MetadataCallerRaw struct {
  4820  	Contract *IERC721MetadataCaller // Generic read-only contract binding to access the raw methods on
  4821  }
  4822  
  4823  // IERC721MetadataTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  4824  type IERC721MetadataTransactorRaw struct {
  4825  	Contract *IERC721MetadataTransactor // Generic write-only contract binding to access the raw methods on
  4826  }
  4827  
  4828  // NewIERC721Metadata creates a new instance of IERC721Metadata, bound to a specific deployed contract.
  4829  func NewIERC721Metadata(address common.Address, backend bind.ContractBackend) (*IERC721Metadata, error) {
  4830  	contract, err := bindIERC721Metadata(address, backend, backend, backend)
  4831  	if err != nil {
  4832  		return nil, err
  4833  	}
  4834  	return &IERC721Metadata{IERC721MetadataCaller: IERC721MetadataCaller{contract: contract}, IERC721MetadataTransactor: IERC721MetadataTransactor{contract: contract}, IERC721MetadataFilterer: IERC721MetadataFilterer{contract: contract}}, nil
  4835  }
  4836  
  4837  // NewIERC721MetadataCaller creates a new read-only instance of IERC721Metadata, bound to a specific deployed contract.
  4838  func NewIERC721MetadataCaller(address common.Address, caller bind.ContractCaller) (*IERC721MetadataCaller, error) {
  4839  	contract, err := bindIERC721Metadata(address, caller, nil, nil)
  4840  	if err != nil {
  4841  		return nil, err
  4842  	}
  4843  	return &IERC721MetadataCaller{contract: contract}, nil
  4844  }
  4845  
  4846  // NewIERC721MetadataTransactor creates a new write-only instance of IERC721Metadata, bound to a specific deployed contract.
  4847  func NewIERC721MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721MetadataTransactor, error) {
  4848  	contract, err := bindIERC721Metadata(address, nil, transactor, nil)
  4849  	if err != nil {
  4850  		return nil, err
  4851  	}
  4852  	return &IERC721MetadataTransactor{contract: contract}, nil
  4853  }
  4854  
  4855  // NewIERC721MetadataFilterer creates a new log filterer instance of IERC721Metadata, bound to a specific deployed contract.
  4856  func NewIERC721MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721MetadataFilterer, error) {
  4857  	contract, err := bindIERC721Metadata(address, nil, nil, filterer)
  4858  	if err != nil {
  4859  		return nil, err
  4860  	}
  4861  	return &IERC721MetadataFilterer{contract: contract}, nil
  4862  }
  4863  
  4864  // bindIERC721Metadata binds a generic wrapper to an already deployed contract.
  4865  func bindIERC721Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  4866  	parsed, err := abi.JSON(strings.NewReader(IERC721MetadataABI))
  4867  	if err != nil {
  4868  		return nil, err
  4869  	}
  4870  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  4871  }
  4872  
  4873  // Call invokes the (constant) contract method with params as input values and
  4874  // sets the output to result. The result type might be a single field for simple
  4875  // returns, a slice of interfaces for anonymous returns and a struct for named
  4876  // returns.
  4877  func (_IERC721Metadata *IERC721MetadataRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  4878  	return _IERC721Metadata.Contract.IERC721MetadataCaller.contract.Call(opts, result, method, params...)
  4879  }
  4880  
  4881  // Transfer initiates a plain transaction to move funds to the contract, calling
  4882  // its default method if one is available.
  4883  func (_IERC721Metadata *IERC721MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4884  	return _IERC721Metadata.Contract.IERC721MetadataTransactor.contract.Transfer(opts)
  4885  }
  4886  
  4887  // Transact invokes the (paid) contract method with params as input values.
  4888  func (_IERC721Metadata *IERC721MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4889  	return _IERC721Metadata.Contract.IERC721MetadataTransactor.contract.Transact(opts, method, params...)
  4890  }
  4891  
  4892  // Call invokes the (constant) contract method with params as input values and
  4893  // sets the output to result. The result type might be a single field for simple
  4894  // returns, a slice of interfaces for anonymous returns and a struct for named
  4895  // returns.
  4896  func (_IERC721Metadata *IERC721MetadataCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  4897  	return _IERC721Metadata.Contract.contract.Call(opts, result, method, params...)
  4898  }
  4899  
  4900  // Transfer initiates a plain transaction to move funds to the contract, calling
  4901  // its default method if one is available.
  4902  func (_IERC721Metadata *IERC721MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4903  	return _IERC721Metadata.Contract.contract.Transfer(opts)
  4904  }
  4905  
  4906  // Transact invokes the (paid) contract method with params as input values.
  4907  func (_IERC721Metadata *IERC721MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4908  	return _IERC721Metadata.Contract.contract.Transact(opts, method, params...)
  4909  }
  4910  
  4911  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  4912  //
  4913  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  4914  func (_IERC721Metadata *IERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  4915  	var out []interface{}
  4916  	err := _IERC721Metadata.contract.Call(opts, &out, "balanceOf", owner)
  4917  
  4918  	if err != nil {
  4919  		return *new(*big.Int), err
  4920  	}
  4921  
  4922  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  4923  
  4924  	return out0, err
  4925  
  4926  }
  4927  
  4928  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  4929  //
  4930  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  4931  func (_IERC721Metadata *IERC721MetadataSession) BalanceOf(owner common.Address) (*big.Int, error) {
  4932  	return _IERC721Metadata.Contract.BalanceOf(&_IERC721Metadata.CallOpts, owner)
  4933  }
  4934  
  4935  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  4936  //
  4937  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  4938  func (_IERC721Metadata *IERC721MetadataCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  4939  	return _IERC721Metadata.Contract.BalanceOf(&_IERC721Metadata.CallOpts, owner)
  4940  }
  4941  
  4942  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  4943  //
  4944  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  4945  func (_IERC721Metadata *IERC721MetadataCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  4946  	var out []interface{}
  4947  	err := _IERC721Metadata.contract.Call(opts, &out, "getApproved", tokenId)
  4948  
  4949  	if err != nil {
  4950  		return *new(common.Address), err
  4951  	}
  4952  
  4953  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  4954  
  4955  	return out0, err
  4956  
  4957  }
  4958  
  4959  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  4960  //
  4961  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  4962  func (_IERC721Metadata *IERC721MetadataSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  4963  	return _IERC721Metadata.Contract.GetApproved(&_IERC721Metadata.CallOpts, tokenId)
  4964  }
  4965  
  4966  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  4967  //
  4968  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  4969  func (_IERC721Metadata *IERC721MetadataCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  4970  	return _IERC721Metadata.Contract.GetApproved(&_IERC721Metadata.CallOpts, tokenId)
  4971  }
  4972  
  4973  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  4974  //
  4975  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  4976  func (_IERC721Metadata *IERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  4977  	var out []interface{}
  4978  	err := _IERC721Metadata.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
  4979  
  4980  	if err != nil {
  4981  		return *new(bool), err
  4982  	}
  4983  
  4984  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  4985  
  4986  	return out0, err
  4987  
  4988  }
  4989  
  4990  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  4991  //
  4992  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  4993  func (_IERC721Metadata *IERC721MetadataSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  4994  	return _IERC721Metadata.Contract.IsApprovedForAll(&_IERC721Metadata.CallOpts, owner, operator)
  4995  }
  4996  
  4997  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  4998  //
  4999  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  5000  func (_IERC721Metadata *IERC721MetadataCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  5001  	return _IERC721Metadata.Contract.IsApprovedForAll(&_IERC721Metadata.CallOpts, owner, operator)
  5002  }
  5003  
  5004  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  5005  //
  5006  // Solidity: function name() view returns(string)
  5007  func (_IERC721Metadata *IERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) {
  5008  	var out []interface{}
  5009  	err := _IERC721Metadata.contract.Call(opts, &out, "name")
  5010  
  5011  	if err != nil {
  5012  		return *new(string), err
  5013  	}
  5014  
  5015  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  5016  
  5017  	return out0, err
  5018  
  5019  }
  5020  
  5021  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  5022  //
  5023  // Solidity: function name() view returns(string)
  5024  func (_IERC721Metadata *IERC721MetadataSession) Name() (string, error) {
  5025  	return _IERC721Metadata.Contract.Name(&_IERC721Metadata.CallOpts)
  5026  }
  5027  
  5028  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  5029  //
  5030  // Solidity: function name() view returns(string)
  5031  func (_IERC721Metadata *IERC721MetadataCallerSession) Name() (string, error) {
  5032  	return _IERC721Metadata.Contract.Name(&_IERC721Metadata.CallOpts)
  5033  }
  5034  
  5035  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  5036  //
  5037  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  5038  func (_IERC721Metadata *IERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  5039  	var out []interface{}
  5040  	err := _IERC721Metadata.contract.Call(opts, &out, "ownerOf", tokenId)
  5041  
  5042  	if err != nil {
  5043  		return *new(common.Address), err
  5044  	}
  5045  
  5046  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  5047  
  5048  	return out0, err
  5049  
  5050  }
  5051  
  5052  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  5053  //
  5054  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  5055  func (_IERC721Metadata *IERC721MetadataSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  5056  	return _IERC721Metadata.Contract.OwnerOf(&_IERC721Metadata.CallOpts, tokenId)
  5057  }
  5058  
  5059  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  5060  //
  5061  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  5062  func (_IERC721Metadata *IERC721MetadataCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  5063  	return _IERC721Metadata.Contract.OwnerOf(&_IERC721Metadata.CallOpts, tokenId)
  5064  }
  5065  
  5066  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  5067  //
  5068  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  5069  func (_IERC721Metadata *IERC721MetadataCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  5070  	var out []interface{}
  5071  	err := _IERC721Metadata.contract.Call(opts, &out, "supportsInterface", interfaceId)
  5072  
  5073  	if err != nil {
  5074  		return *new(bool), err
  5075  	}
  5076  
  5077  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  5078  
  5079  	return out0, err
  5080  
  5081  }
  5082  
  5083  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  5084  //
  5085  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  5086  func (_IERC721Metadata *IERC721MetadataSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  5087  	return _IERC721Metadata.Contract.SupportsInterface(&_IERC721Metadata.CallOpts, interfaceId)
  5088  }
  5089  
  5090  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  5091  //
  5092  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  5093  func (_IERC721Metadata *IERC721MetadataCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  5094  	return _IERC721Metadata.Contract.SupportsInterface(&_IERC721Metadata.CallOpts, interfaceId)
  5095  }
  5096  
  5097  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  5098  //
  5099  // Solidity: function symbol() view returns(string)
  5100  func (_IERC721Metadata *IERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) {
  5101  	var out []interface{}
  5102  	err := _IERC721Metadata.contract.Call(opts, &out, "symbol")
  5103  
  5104  	if err != nil {
  5105  		return *new(string), err
  5106  	}
  5107  
  5108  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  5109  
  5110  	return out0, err
  5111  
  5112  }
  5113  
  5114  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  5115  //
  5116  // Solidity: function symbol() view returns(string)
  5117  func (_IERC721Metadata *IERC721MetadataSession) Symbol() (string, error) {
  5118  	return _IERC721Metadata.Contract.Symbol(&_IERC721Metadata.CallOpts)
  5119  }
  5120  
  5121  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  5122  //
  5123  // Solidity: function symbol() view returns(string)
  5124  func (_IERC721Metadata *IERC721MetadataCallerSession) Symbol() (string, error) {
  5125  	return _IERC721Metadata.Contract.Symbol(&_IERC721Metadata.CallOpts)
  5126  }
  5127  
  5128  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  5129  //
  5130  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  5131  func (_IERC721Metadata *IERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
  5132  	var out []interface{}
  5133  	err := _IERC721Metadata.contract.Call(opts, &out, "tokenURI", tokenId)
  5134  
  5135  	if err != nil {
  5136  		return *new(string), err
  5137  	}
  5138  
  5139  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  5140  
  5141  	return out0, err
  5142  
  5143  }
  5144  
  5145  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  5146  //
  5147  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  5148  func (_IERC721Metadata *IERC721MetadataSession) TokenURI(tokenId *big.Int) (string, error) {
  5149  	return _IERC721Metadata.Contract.TokenURI(&_IERC721Metadata.CallOpts, tokenId)
  5150  }
  5151  
  5152  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  5153  //
  5154  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  5155  func (_IERC721Metadata *IERC721MetadataCallerSession) TokenURI(tokenId *big.Int) (string, error) {
  5156  	return _IERC721Metadata.Contract.TokenURI(&_IERC721Metadata.CallOpts, tokenId)
  5157  }
  5158  
  5159  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5160  //
  5161  // Solidity: function approve(address to, uint256 tokenId) returns()
  5162  func (_IERC721Metadata *IERC721MetadataTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5163  	return _IERC721Metadata.contract.Transact(opts, "approve", to, tokenId)
  5164  }
  5165  
  5166  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5167  //
  5168  // Solidity: function approve(address to, uint256 tokenId) returns()
  5169  func (_IERC721Metadata *IERC721MetadataSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5170  	return _IERC721Metadata.Contract.Approve(&_IERC721Metadata.TransactOpts, to, tokenId)
  5171  }
  5172  
  5173  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5174  //
  5175  // Solidity: function approve(address to, uint256 tokenId) returns()
  5176  func (_IERC721Metadata *IERC721MetadataTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5177  	return _IERC721Metadata.Contract.Approve(&_IERC721Metadata.TransactOpts, to, tokenId)
  5178  }
  5179  
  5180  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  5181  //
  5182  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  5183  func (_IERC721Metadata *IERC721MetadataTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5184  	return _IERC721Metadata.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  5185  }
  5186  
  5187  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  5188  //
  5189  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  5190  func (_IERC721Metadata *IERC721MetadataSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5191  	return _IERC721Metadata.Contract.SafeTransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
  5192  }
  5193  
  5194  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  5195  //
  5196  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  5197  func (_IERC721Metadata *IERC721MetadataTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5198  	return _IERC721Metadata.Contract.SafeTransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
  5199  }
  5200  
  5201  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  5202  //
  5203  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  5204  func (_IERC721Metadata *IERC721MetadataTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  5205  	return _IERC721Metadata.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data)
  5206  }
  5207  
  5208  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  5209  //
  5210  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  5211  func (_IERC721Metadata *IERC721MetadataSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  5212  	return _IERC721Metadata.Contract.SafeTransferFrom0(&_IERC721Metadata.TransactOpts, from, to, tokenId, data)
  5213  }
  5214  
  5215  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  5216  //
  5217  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  5218  func (_IERC721Metadata *IERC721MetadataTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  5219  	return _IERC721Metadata.Contract.SafeTransferFrom0(&_IERC721Metadata.TransactOpts, from, to, tokenId, data)
  5220  }
  5221  
  5222  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  5223  //
  5224  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  5225  func (_IERC721Metadata *IERC721MetadataTransactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, _approved bool) (*types.Transaction, error) {
  5226  	return _IERC721Metadata.contract.Transact(opts, "setApprovalForAll", operator, _approved)
  5227  }
  5228  
  5229  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  5230  //
  5231  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  5232  func (_IERC721Metadata *IERC721MetadataSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
  5233  	return _IERC721Metadata.Contract.SetApprovalForAll(&_IERC721Metadata.TransactOpts, operator, _approved)
  5234  }
  5235  
  5236  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  5237  //
  5238  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  5239  func (_IERC721Metadata *IERC721MetadataTransactorSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
  5240  	return _IERC721Metadata.Contract.SetApprovalForAll(&_IERC721Metadata.TransactOpts, operator, _approved)
  5241  }
  5242  
  5243  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5244  //
  5245  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  5246  func (_IERC721Metadata *IERC721MetadataTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5247  	return _IERC721Metadata.contract.Transact(opts, "transferFrom", from, to, tokenId)
  5248  }
  5249  
  5250  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5251  //
  5252  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  5253  func (_IERC721Metadata *IERC721MetadataSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5254  	return _IERC721Metadata.Contract.TransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
  5255  }
  5256  
  5257  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5258  //
  5259  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  5260  func (_IERC721Metadata *IERC721MetadataTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5261  	return _IERC721Metadata.Contract.TransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
  5262  }
  5263  
  5264  // IERC721MetadataApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC721Metadata contract.
  5265  type IERC721MetadataApprovalIterator struct {
  5266  	Event *IERC721MetadataApproval // Event containing the contract specifics and raw log
  5267  
  5268  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5269  	event    string              // Event name to use for unpacking event data
  5270  
  5271  	logs chan types.Log        // Log channel receiving the found contract events
  5272  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5273  	done bool                  // Whether the subscription completed delivering logs
  5274  	fail error                 // Occurred error to stop iteration
  5275  }
  5276  
  5277  // Next advances the iterator to the subsequent event, returning whether there
  5278  // are any more events found. In case of a retrieval or parsing error, false is
  5279  // returned and Error() can be queried for the exact failure.
  5280  func (it *IERC721MetadataApprovalIterator) Next() bool {
  5281  	// If the iterator failed, stop iterating
  5282  	if it.fail != nil {
  5283  		return false
  5284  	}
  5285  	// If the iterator completed, deliver directly whatever's available
  5286  	if it.done {
  5287  		select {
  5288  		case log := <-it.logs:
  5289  			it.Event = new(IERC721MetadataApproval)
  5290  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5291  				it.fail = err
  5292  				return false
  5293  			}
  5294  			it.Event.Raw = log
  5295  			return true
  5296  
  5297  		default:
  5298  			return false
  5299  		}
  5300  	}
  5301  	// Iterator still in progress, wait for either a data or an error event
  5302  	select {
  5303  	case log := <-it.logs:
  5304  		it.Event = new(IERC721MetadataApproval)
  5305  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5306  			it.fail = err
  5307  			return false
  5308  		}
  5309  		it.Event.Raw = log
  5310  		return true
  5311  
  5312  	case err := <-it.sub.Err():
  5313  		it.done = true
  5314  		it.fail = err
  5315  		return it.Next()
  5316  	}
  5317  }
  5318  
  5319  // Error returns any retrieval or parsing error occurred during filtering.
  5320  func (it *IERC721MetadataApprovalIterator) Error() error {
  5321  	return it.fail
  5322  }
  5323  
  5324  // Close terminates the iteration process, releasing any pending underlying
  5325  // resources.
  5326  func (it *IERC721MetadataApprovalIterator) Close() error {
  5327  	it.sub.Unsubscribe()
  5328  	return nil
  5329  }
  5330  
  5331  // IERC721MetadataApproval represents a Approval event raised by the IERC721Metadata contract.
  5332  type IERC721MetadataApproval struct {
  5333  	Owner    common.Address
  5334  	Approved common.Address
  5335  	TokenId  *big.Int
  5336  	Raw      types.Log // Blockchain specific contextual infos
  5337  }
  5338  
  5339  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  5340  //
  5341  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  5342  func (_IERC721Metadata *IERC721MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721MetadataApprovalIterator, error) {
  5343  
  5344  	var ownerRule []interface{}
  5345  	for _, ownerItem := range owner {
  5346  		ownerRule = append(ownerRule, ownerItem)
  5347  	}
  5348  	var approvedRule []interface{}
  5349  	for _, approvedItem := range approved {
  5350  		approvedRule = append(approvedRule, approvedItem)
  5351  	}
  5352  	var tokenIdRule []interface{}
  5353  	for _, tokenIdItem := range tokenId {
  5354  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  5355  	}
  5356  
  5357  	logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  5358  	if err != nil {
  5359  		return nil, err
  5360  	}
  5361  	return &IERC721MetadataApprovalIterator{contract: _IERC721Metadata.contract, event: "Approval", logs: logs, sub: sub}, nil
  5362  }
  5363  
  5364  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  5365  //
  5366  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  5367  func (_IERC721Metadata *IERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  5368  
  5369  	var ownerRule []interface{}
  5370  	for _, ownerItem := range owner {
  5371  		ownerRule = append(ownerRule, ownerItem)
  5372  	}
  5373  	var approvedRule []interface{}
  5374  	for _, approvedItem := range approved {
  5375  		approvedRule = append(approvedRule, approvedItem)
  5376  	}
  5377  	var tokenIdRule []interface{}
  5378  	for _, tokenIdItem := range tokenId {
  5379  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  5380  	}
  5381  
  5382  	logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  5383  	if err != nil {
  5384  		return nil, err
  5385  	}
  5386  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5387  		defer sub.Unsubscribe()
  5388  		for {
  5389  			select {
  5390  			case log := <-logs:
  5391  				// New log arrived, parse the event and forward to the user
  5392  				event := new(IERC721MetadataApproval)
  5393  				if err := _IERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
  5394  					return err
  5395  				}
  5396  				event.Raw = log
  5397  
  5398  				select {
  5399  				case sink <- event:
  5400  				case err := <-sub.Err():
  5401  					return err
  5402  				case <-quit:
  5403  					return nil
  5404  				}
  5405  			case err := <-sub.Err():
  5406  				return err
  5407  			case <-quit:
  5408  				return nil
  5409  			}
  5410  		}
  5411  	}), nil
  5412  }
  5413  
  5414  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  5415  //
  5416  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  5417  func (_IERC721Metadata *IERC721MetadataFilterer) ParseApproval(log types.Log) (*IERC721MetadataApproval, error) {
  5418  	event := new(IERC721MetadataApproval)
  5419  	if err := _IERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
  5420  		return nil, err
  5421  	}
  5422  	event.Raw = log
  5423  	return event, nil
  5424  }
  5425  
  5426  // IERC721MetadataApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the IERC721Metadata contract.
  5427  type IERC721MetadataApprovalForAllIterator struct {
  5428  	Event *IERC721MetadataApprovalForAll // Event containing the contract specifics and raw log
  5429  
  5430  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5431  	event    string              // Event name to use for unpacking event data
  5432  
  5433  	logs chan types.Log        // Log channel receiving the found contract events
  5434  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5435  	done bool                  // Whether the subscription completed delivering logs
  5436  	fail error                 // Occurred error to stop iteration
  5437  }
  5438  
  5439  // Next advances the iterator to the subsequent event, returning whether there
  5440  // are any more events found. In case of a retrieval or parsing error, false is
  5441  // returned and Error() can be queried for the exact failure.
  5442  func (it *IERC721MetadataApprovalForAllIterator) Next() bool {
  5443  	// If the iterator failed, stop iterating
  5444  	if it.fail != nil {
  5445  		return false
  5446  	}
  5447  	// If the iterator completed, deliver directly whatever's available
  5448  	if it.done {
  5449  		select {
  5450  		case log := <-it.logs:
  5451  			it.Event = new(IERC721MetadataApprovalForAll)
  5452  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5453  				it.fail = err
  5454  				return false
  5455  			}
  5456  			it.Event.Raw = log
  5457  			return true
  5458  
  5459  		default:
  5460  			return false
  5461  		}
  5462  	}
  5463  	// Iterator still in progress, wait for either a data or an error event
  5464  	select {
  5465  	case log := <-it.logs:
  5466  		it.Event = new(IERC721MetadataApprovalForAll)
  5467  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5468  			it.fail = err
  5469  			return false
  5470  		}
  5471  		it.Event.Raw = log
  5472  		return true
  5473  
  5474  	case err := <-it.sub.Err():
  5475  		it.done = true
  5476  		it.fail = err
  5477  		return it.Next()
  5478  	}
  5479  }
  5480  
  5481  // Error returns any retrieval or parsing error occurred during filtering.
  5482  func (it *IERC721MetadataApprovalForAllIterator) Error() error {
  5483  	return it.fail
  5484  }
  5485  
  5486  // Close terminates the iteration process, releasing any pending underlying
  5487  // resources.
  5488  func (it *IERC721MetadataApprovalForAllIterator) Close() error {
  5489  	it.sub.Unsubscribe()
  5490  	return nil
  5491  }
  5492  
  5493  // IERC721MetadataApprovalForAll represents a ApprovalForAll event raised by the IERC721Metadata contract.
  5494  type IERC721MetadataApprovalForAll struct {
  5495  	Owner    common.Address
  5496  	Operator common.Address
  5497  	Approved bool
  5498  	Raw      types.Log // Blockchain specific contextual infos
  5499  }
  5500  
  5501  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  5502  //
  5503  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  5504  func (_IERC721Metadata *IERC721MetadataFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721MetadataApprovalForAllIterator, error) {
  5505  
  5506  	var ownerRule []interface{}
  5507  	for _, ownerItem := range owner {
  5508  		ownerRule = append(ownerRule, ownerItem)
  5509  	}
  5510  	var operatorRule []interface{}
  5511  	for _, operatorItem := range operator {
  5512  		operatorRule = append(operatorRule, operatorItem)
  5513  	}
  5514  
  5515  	logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  5516  	if err != nil {
  5517  		return nil, err
  5518  	}
  5519  	return &IERC721MetadataApprovalForAllIterator{contract: _IERC721Metadata.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  5520  }
  5521  
  5522  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  5523  //
  5524  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  5525  func (_IERC721Metadata *IERC721MetadataFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  5526  
  5527  	var ownerRule []interface{}
  5528  	for _, ownerItem := range owner {
  5529  		ownerRule = append(ownerRule, ownerItem)
  5530  	}
  5531  	var operatorRule []interface{}
  5532  	for _, operatorItem := range operator {
  5533  		operatorRule = append(operatorRule, operatorItem)
  5534  	}
  5535  
  5536  	logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  5537  	if err != nil {
  5538  		return nil, err
  5539  	}
  5540  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5541  		defer sub.Unsubscribe()
  5542  		for {
  5543  			select {
  5544  			case log := <-logs:
  5545  				// New log arrived, parse the event and forward to the user
  5546  				event := new(IERC721MetadataApprovalForAll)
  5547  				if err := _IERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  5548  					return err
  5549  				}
  5550  				event.Raw = log
  5551  
  5552  				select {
  5553  				case sink <- event:
  5554  				case err := <-sub.Err():
  5555  					return err
  5556  				case <-quit:
  5557  					return nil
  5558  				}
  5559  			case err := <-sub.Err():
  5560  				return err
  5561  			case <-quit:
  5562  				return nil
  5563  			}
  5564  		}
  5565  	}), nil
  5566  }
  5567  
  5568  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  5569  //
  5570  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  5571  func (_IERC721Metadata *IERC721MetadataFilterer) ParseApprovalForAll(log types.Log) (*IERC721MetadataApprovalForAll, error) {
  5572  	event := new(IERC721MetadataApprovalForAll)
  5573  	if err := _IERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  5574  		return nil, err
  5575  	}
  5576  	event.Raw = log
  5577  	return event, nil
  5578  }
  5579  
  5580  // IERC721MetadataTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC721Metadata contract.
  5581  type IERC721MetadataTransferIterator struct {
  5582  	Event *IERC721MetadataTransfer // Event containing the contract specifics and raw log
  5583  
  5584  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5585  	event    string              // Event name to use for unpacking event data
  5586  
  5587  	logs chan types.Log        // Log channel receiving the found contract events
  5588  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5589  	done bool                  // Whether the subscription completed delivering logs
  5590  	fail error                 // Occurred error to stop iteration
  5591  }
  5592  
  5593  // Next advances the iterator to the subsequent event, returning whether there
  5594  // are any more events found. In case of a retrieval or parsing error, false is
  5595  // returned and Error() can be queried for the exact failure.
  5596  func (it *IERC721MetadataTransferIterator) Next() bool {
  5597  	// If the iterator failed, stop iterating
  5598  	if it.fail != nil {
  5599  		return false
  5600  	}
  5601  	// If the iterator completed, deliver directly whatever's available
  5602  	if it.done {
  5603  		select {
  5604  		case log := <-it.logs:
  5605  			it.Event = new(IERC721MetadataTransfer)
  5606  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5607  				it.fail = err
  5608  				return false
  5609  			}
  5610  			it.Event.Raw = log
  5611  			return true
  5612  
  5613  		default:
  5614  			return false
  5615  		}
  5616  	}
  5617  	// Iterator still in progress, wait for either a data or an error event
  5618  	select {
  5619  	case log := <-it.logs:
  5620  		it.Event = new(IERC721MetadataTransfer)
  5621  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5622  			it.fail = err
  5623  			return false
  5624  		}
  5625  		it.Event.Raw = log
  5626  		return true
  5627  
  5628  	case err := <-it.sub.Err():
  5629  		it.done = true
  5630  		it.fail = err
  5631  		return it.Next()
  5632  	}
  5633  }
  5634  
  5635  // Error returns any retrieval or parsing error occurred during filtering.
  5636  func (it *IERC721MetadataTransferIterator) Error() error {
  5637  	return it.fail
  5638  }
  5639  
  5640  // Close terminates the iteration process, releasing any pending underlying
  5641  // resources.
  5642  func (it *IERC721MetadataTransferIterator) Close() error {
  5643  	it.sub.Unsubscribe()
  5644  	return nil
  5645  }
  5646  
  5647  // IERC721MetadataTransfer represents a Transfer event raised by the IERC721Metadata contract.
  5648  type IERC721MetadataTransfer struct {
  5649  	From    common.Address
  5650  	To      common.Address
  5651  	TokenId *big.Int
  5652  	Raw     types.Log // Blockchain specific contextual infos
  5653  }
  5654  
  5655  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5656  //
  5657  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  5658  func (_IERC721Metadata *IERC721MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721MetadataTransferIterator, error) {
  5659  
  5660  	var fromRule []interface{}
  5661  	for _, fromItem := range from {
  5662  		fromRule = append(fromRule, fromItem)
  5663  	}
  5664  	var toRule []interface{}
  5665  	for _, toItem := range to {
  5666  		toRule = append(toRule, toItem)
  5667  	}
  5668  	var tokenIdRule []interface{}
  5669  	for _, tokenIdItem := range tokenId {
  5670  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  5671  	}
  5672  
  5673  	logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  5674  	if err != nil {
  5675  		return nil, err
  5676  	}
  5677  	return &IERC721MetadataTransferIterator{contract: _IERC721Metadata.contract, event: "Transfer", logs: logs, sub: sub}, nil
  5678  }
  5679  
  5680  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5681  //
  5682  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  5683  func (_IERC721Metadata *IERC721MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721MetadataTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  5684  
  5685  	var fromRule []interface{}
  5686  	for _, fromItem := range from {
  5687  		fromRule = append(fromRule, fromItem)
  5688  	}
  5689  	var toRule []interface{}
  5690  	for _, toItem := range to {
  5691  		toRule = append(toRule, toItem)
  5692  	}
  5693  	var tokenIdRule []interface{}
  5694  	for _, tokenIdItem := range tokenId {
  5695  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  5696  	}
  5697  
  5698  	logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  5699  	if err != nil {
  5700  		return nil, err
  5701  	}
  5702  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5703  		defer sub.Unsubscribe()
  5704  		for {
  5705  			select {
  5706  			case log := <-logs:
  5707  				// New log arrived, parse the event and forward to the user
  5708  				event := new(IERC721MetadataTransfer)
  5709  				if err := _IERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
  5710  					return err
  5711  				}
  5712  				event.Raw = log
  5713  
  5714  				select {
  5715  				case sink <- event:
  5716  				case err := <-sub.Err():
  5717  					return err
  5718  				case <-quit:
  5719  					return nil
  5720  				}
  5721  			case err := <-sub.Err():
  5722  				return err
  5723  			case <-quit:
  5724  				return nil
  5725  			}
  5726  		}
  5727  	}), nil
  5728  }
  5729  
  5730  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5731  //
  5732  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  5733  func (_IERC721Metadata *IERC721MetadataFilterer) ParseTransfer(log types.Log) (*IERC721MetadataTransfer, error) {
  5734  	event := new(IERC721MetadataTransfer)
  5735  	if err := _IERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
  5736  		return nil, err
  5737  	}
  5738  	event.Raw = log
  5739  	return event, nil
  5740  }
  5741  
  5742  // IERC721ReceiverABI is the input ABI used to generate the binding from.
  5743  const IERC721ReceiverABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  5744  
  5745  // IERC721ReceiverFuncSigs maps the 4-byte function signature to its string representation.
  5746  var IERC721ReceiverFuncSigs = map[string]string{
  5747  	"150b7a02": "onERC721Received(address,address,uint256,bytes)",
  5748  }
  5749  
  5750  // IERC721Receiver is an auto generated Go binding around an Ethereum contract.
  5751  type IERC721Receiver struct {
  5752  	IERC721ReceiverCaller     // Read-only binding to the contract
  5753  	IERC721ReceiverTransactor // Write-only binding to the contract
  5754  	IERC721ReceiverFilterer   // Log filterer for contract events
  5755  }
  5756  
  5757  // IERC721ReceiverCaller is an auto generated read-only Go binding around an Ethereum contract.
  5758  type IERC721ReceiverCaller struct {
  5759  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5760  }
  5761  
  5762  // IERC721ReceiverTransactor is an auto generated write-only Go binding around an Ethereum contract.
  5763  type IERC721ReceiverTransactor struct {
  5764  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5765  }
  5766  
  5767  // IERC721ReceiverFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  5768  type IERC721ReceiverFilterer struct {
  5769  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5770  }
  5771  
  5772  // IERC721ReceiverSession is an auto generated Go binding around an Ethereum contract,
  5773  // with pre-set call and transact options.
  5774  type IERC721ReceiverSession struct {
  5775  	Contract     *IERC721Receiver  // Generic contract binding to set the session for
  5776  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5777  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5778  }
  5779  
  5780  // IERC721ReceiverCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  5781  // with pre-set call options.
  5782  type IERC721ReceiverCallerSession struct {
  5783  	Contract *IERC721ReceiverCaller // Generic contract caller binding to set the session for
  5784  	CallOpts bind.CallOpts          // Call options to use throughout this session
  5785  }
  5786  
  5787  // IERC721ReceiverTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  5788  // with pre-set transact options.
  5789  type IERC721ReceiverTransactorSession struct {
  5790  	Contract     *IERC721ReceiverTransactor // Generic contract transactor binding to set the session for
  5791  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
  5792  }
  5793  
  5794  // IERC721ReceiverRaw is an auto generated low-level Go binding around an Ethereum contract.
  5795  type IERC721ReceiverRaw struct {
  5796  	Contract *IERC721Receiver // Generic contract binding to access the raw methods on
  5797  }
  5798  
  5799  // IERC721ReceiverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  5800  type IERC721ReceiverCallerRaw struct {
  5801  	Contract *IERC721ReceiverCaller // Generic read-only contract binding to access the raw methods on
  5802  }
  5803  
  5804  // IERC721ReceiverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  5805  type IERC721ReceiverTransactorRaw struct {
  5806  	Contract *IERC721ReceiverTransactor // Generic write-only contract binding to access the raw methods on
  5807  }
  5808  
  5809  // NewIERC721Receiver creates a new instance of IERC721Receiver, bound to a specific deployed contract.
  5810  func NewIERC721Receiver(address common.Address, backend bind.ContractBackend) (*IERC721Receiver, error) {
  5811  	contract, err := bindIERC721Receiver(address, backend, backend, backend)
  5812  	if err != nil {
  5813  		return nil, err
  5814  	}
  5815  	return &IERC721Receiver{IERC721ReceiverCaller: IERC721ReceiverCaller{contract: contract}, IERC721ReceiverTransactor: IERC721ReceiverTransactor{contract: contract}, IERC721ReceiverFilterer: IERC721ReceiverFilterer{contract: contract}}, nil
  5816  }
  5817  
  5818  // NewIERC721ReceiverCaller creates a new read-only instance of IERC721Receiver, bound to a specific deployed contract.
  5819  func NewIERC721ReceiverCaller(address common.Address, caller bind.ContractCaller) (*IERC721ReceiverCaller, error) {
  5820  	contract, err := bindIERC721Receiver(address, caller, nil, nil)
  5821  	if err != nil {
  5822  		return nil, err
  5823  	}
  5824  	return &IERC721ReceiverCaller{contract: contract}, nil
  5825  }
  5826  
  5827  // NewIERC721ReceiverTransactor creates a new write-only instance of IERC721Receiver, bound to a specific deployed contract.
  5828  func NewIERC721ReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721ReceiverTransactor, error) {
  5829  	contract, err := bindIERC721Receiver(address, nil, transactor, nil)
  5830  	if err != nil {
  5831  		return nil, err
  5832  	}
  5833  	return &IERC721ReceiverTransactor{contract: contract}, nil
  5834  }
  5835  
  5836  // NewIERC721ReceiverFilterer creates a new log filterer instance of IERC721Receiver, bound to a specific deployed contract.
  5837  func NewIERC721ReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721ReceiverFilterer, error) {
  5838  	contract, err := bindIERC721Receiver(address, nil, nil, filterer)
  5839  	if err != nil {
  5840  		return nil, err
  5841  	}
  5842  	return &IERC721ReceiverFilterer{contract: contract}, nil
  5843  }
  5844  
  5845  // bindIERC721Receiver binds a generic wrapper to an already deployed contract.
  5846  func bindIERC721Receiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5847  	parsed, err := abi.JSON(strings.NewReader(IERC721ReceiverABI))
  5848  	if err != nil {
  5849  		return nil, err
  5850  	}
  5851  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  5852  }
  5853  
  5854  // Call invokes the (constant) contract method with params as input values and
  5855  // sets the output to result. The result type might be a single field for simple
  5856  // returns, a slice of interfaces for anonymous returns and a struct for named
  5857  // returns.
  5858  func (_IERC721Receiver *IERC721ReceiverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5859  	return _IERC721Receiver.Contract.IERC721ReceiverCaller.contract.Call(opts, result, method, params...)
  5860  }
  5861  
  5862  // Transfer initiates a plain transaction to move funds to the contract, calling
  5863  // its default method if one is available.
  5864  func (_IERC721Receiver *IERC721ReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5865  	return _IERC721Receiver.Contract.IERC721ReceiverTransactor.contract.Transfer(opts)
  5866  }
  5867  
  5868  // Transact invokes the (paid) contract method with params as input values.
  5869  func (_IERC721Receiver *IERC721ReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5870  	return _IERC721Receiver.Contract.IERC721ReceiverTransactor.contract.Transact(opts, method, params...)
  5871  }
  5872  
  5873  // Call invokes the (constant) contract method with params as input values and
  5874  // sets the output to result. The result type might be a single field for simple
  5875  // returns, a slice of interfaces for anonymous returns and a struct for named
  5876  // returns.
  5877  func (_IERC721Receiver *IERC721ReceiverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5878  	return _IERC721Receiver.Contract.contract.Call(opts, result, method, params...)
  5879  }
  5880  
  5881  // Transfer initiates a plain transaction to move funds to the contract, calling
  5882  // its default method if one is available.
  5883  func (_IERC721Receiver *IERC721ReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5884  	return _IERC721Receiver.Contract.contract.Transfer(opts)
  5885  }
  5886  
  5887  // Transact invokes the (paid) contract method with params as input values.
  5888  func (_IERC721Receiver *IERC721ReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5889  	return _IERC721Receiver.Contract.contract.Transact(opts, method, params...)
  5890  }
  5891  
  5892  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
  5893  //
  5894  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
  5895  func (_IERC721Receiver *IERC721ReceiverTransactor) OnERC721Received(opts *bind.TransactOpts, operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  5896  	return _IERC721Receiver.contract.Transact(opts, "onERC721Received", operator, from, tokenId, data)
  5897  }
  5898  
  5899  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
  5900  //
  5901  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
  5902  func (_IERC721Receiver *IERC721ReceiverSession) OnERC721Received(operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  5903  	return _IERC721Receiver.Contract.OnERC721Received(&_IERC721Receiver.TransactOpts, operator, from, tokenId, data)
  5904  }
  5905  
  5906  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
  5907  //
  5908  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
  5909  func (_IERC721Receiver *IERC721ReceiverTransactorSession) OnERC721Received(operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  5910  	return _IERC721Receiver.Contract.OnERC721Received(&_IERC721Receiver.TransactOpts, operator, from, tokenId, data)
  5911  }
  5912  
  5913  // INextContractABI is the input ABI used to generate the binding from.
  5914  const INextContractABI = "[{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"migrateTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  5915  
  5916  // INextContractFuncSigs maps the 4-byte function signature to its string representation.
  5917  var INextContractFuncSigs = map[string]string{
  5918  	"e884703f": "migrateTokens(uint256[],address)",
  5919  }
  5920  
  5921  // INextContract is an auto generated Go binding around an Ethereum contract.
  5922  type INextContract struct {
  5923  	INextContractCaller     // Read-only binding to the contract
  5924  	INextContractTransactor // Write-only binding to the contract
  5925  	INextContractFilterer   // Log filterer for contract events
  5926  }
  5927  
  5928  // INextContractCaller is an auto generated read-only Go binding around an Ethereum contract.
  5929  type INextContractCaller struct {
  5930  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5931  }
  5932  
  5933  // INextContractTransactor is an auto generated write-only Go binding around an Ethereum contract.
  5934  type INextContractTransactor struct {
  5935  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5936  }
  5937  
  5938  // INextContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  5939  type INextContractFilterer struct {
  5940  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5941  }
  5942  
  5943  // INextContractSession is an auto generated Go binding around an Ethereum contract,
  5944  // with pre-set call and transact options.
  5945  type INextContractSession struct {
  5946  	Contract     *INextContract    // Generic contract binding to set the session for
  5947  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5948  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5949  }
  5950  
  5951  // INextContractCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  5952  // with pre-set call options.
  5953  type INextContractCallerSession struct {
  5954  	Contract *INextContractCaller // Generic contract caller binding to set the session for
  5955  	CallOpts bind.CallOpts        // Call options to use throughout this session
  5956  }
  5957  
  5958  // INextContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  5959  // with pre-set transact options.
  5960  type INextContractTransactorSession struct {
  5961  	Contract     *INextContractTransactor // Generic contract transactor binding to set the session for
  5962  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  5963  }
  5964  
  5965  // INextContractRaw is an auto generated low-level Go binding around an Ethereum contract.
  5966  type INextContractRaw struct {
  5967  	Contract *INextContract // Generic contract binding to access the raw methods on
  5968  }
  5969  
  5970  // INextContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  5971  type INextContractCallerRaw struct {
  5972  	Contract *INextContractCaller // Generic read-only contract binding to access the raw methods on
  5973  }
  5974  
  5975  // INextContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  5976  type INextContractTransactorRaw struct {
  5977  	Contract *INextContractTransactor // Generic write-only contract binding to access the raw methods on
  5978  }
  5979  
  5980  // NewINextContract creates a new instance of INextContract, bound to a specific deployed contract.
  5981  func NewINextContract(address common.Address, backend bind.ContractBackend) (*INextContract, error) {
  5982  	contract, err := bindINextContract(address, backend, backend, backend)
  5983  	if err != nil {
  5984  		return nil, err
  5985  	}
  5986  	return &INextContract{INextContractCaller: INextContractCaller{contract: contract}, INextContractTransactor: INextContractTransactor{contract: contract}, INextContractFilterer: INextContractFilterer{contract: contract}}, nil
  5987  }
  5988  
  5989  // NewINextContractCaller creates a new read-only instance of INextContract, bound to a specific deployed contract.
  5990  func NewINextContractCaller(address common.Address, caller bind.ContractCaller) (*INextContractCaller, error) {
  5991  	contract, err := bindINextContract(address, caller, nil, nil)
  5992  	if err != nil {
  5993  		return nil, err
  5994  	}
  5995  	return &INextContractCaller{contract: contract}, nil
  5996  }
  5997  
  5998  // NewINextContractTransactor creates a new write-only instance of INextContract, bound to a specific deployed contract.
  5999  func NewINextContractTransactor(address common.Address, transactor bind.ContractTransactor) (*INextContractTransactor, error) {
  6000  	contract, err := bindINextContract(address, nil, transactor, nil)
  6001  	if err != nil {
  6002  		return nil, err
  6003  	}
  6004  	return &INextContractTransactor{contract: contract}, nil
  6005  }
  6006  
  6007  // NewINextContractFilterer creates a new log filterer instance of INextContract, bound to a specific deployed contract.
  6008  func NewINextContractFilterer(address common.Address, filterer bind.ContractFilterer) (*INextContractFilterer, error) {
  6009  	contract, err := bindINextContract(address, nil, nil, filterer)
  6010  	if err != nil {
  6011  		return nil, err
  6012  	}
  6013  	return &INextContractFilterer{contract: contract}, nil
  6014  }
  6015  
  6016  // bindINextContract binds a generic wrapper to an already deployed contract.
  6017  func bindINextContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6018  	parsed, err := abi.JSON(strings.NewReader(INextContractABI))
  6019  	if err != nil {
  6020  		return nil, err
  6021  	}
  6022  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6023  }
  6024  
  6025  // Call invokes the (constant) contract method with params as input values and
  6026  // sets the output to result. The result type might be a single field for simple
  6027  // returns, a slice of interfaces for anonymous returns and a struct for named
  6028  // returns.
  6029  func (_INextContract *INextContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6030  	return _INextContract.Contract.INextContractCaller.contract.Call(opts, result, method, params...)
  6031  }
  6032  
  6033  // Transfer initiates a plain transaction to move funds to the contract, calling
  6034  // its default method if one is available.
  6035  func (_INextContract *INextContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6036  	return _INextContract.Contract.INextContractTransactor.contract.Transfer(opts)
  6037  }
  6038  
  6039  // Transact invokes the (paid) contract method with params as input values.
  6040  func (_INextContract *INextContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6041  	return _INextContract.Contract.INextContractTransactor.contract.Transact(opts, method, params...)
  6042  }
  6043  
  6044  // Call invokes the (constant) contract method with params as input values and
  6045  // sets the output to result. The result type might be a single field for simple
  6046  // returns, a slice of interfaces for anonymous returns and a struct for named
  6047  // returns.
  6048  func (_INextContract *INextContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6049  	return _INextContract.Contract.contract.Call(opts, result, method, params...)
  6050  }
  6051  
  6052  // Transfer initiates a plain transaction to move funds to the contract, calling
  6053  // its default method if one is available.
  6054  func (_INextContract *INextContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6055  	return _INextContract.Contract.contract.Transfer(opts)
  6056  }
  6057  
  6058  // Transact invokes the (paid) contract method with params as input values.
  6059  func (_INextContract *INextContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6060  	return _INextContract.Contract.contract.Transact(opts, method, params...)
  6061  }
  6062  
  6063  // MigrateTokens is a paid mutator transaction binding the contract method 0xe884703f.
  6064  //
  6065  // Solidity: function migrateTokens(uint256[] tokenIds, address to) returns()
  6066  func (_INextContract *INextContractTransactor) MigrateTokens(opts *bind.TransactOpts, tokenIds []*big.Int, to common.Address) (*types.Transaction, error) {
  6067  	return _INextContract.contract.Transact(opts, "migrateTokens", tokenIds, to)
  6068  }
  6069  
  6070  // MigrateTokens is a paid mutator transaction binding the contract method 0xe884703f.
  6071  //
  6072  // Solidity: function migrateTokens(uint256[] tokenIds, address to) returns()
  6073  func (_INextContract *INextContractSession) MigrateTokens(tokenIds []*big.Int, to common.Address) (*types.Transaction, error) {
  6074  	return _INextContract.Contract.MigrateTokens(&_INextContract.TransactOpts, tokenIds, to)
  6075  }
  6076  
  6077  // MigrateTokens is a paid mutator transaction binding the contract method 0xe884703f.
  6078  //
  6079  // Solidity: function migrateTokens(uint256[] tokenIds, address to) returns()
  6080  func (_INextContract *INextContractTransactorSession) MigrateTokens(tokenIds []*big.Int, to common.Address) (*types.Transaction, error) {
  6081  	return _INextContract.Contract.MigrateTokens(&_INextContract.TransactOpts, tokenIds, to)
  6082  }
  6083  
  6084  // ISorareCardsABI is the input ABI used to generate the binding from.
  6085  const ISorareCardsABI = "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cardId\",\"type\":\"uint256\"}],\"name\":\"cardExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"playerId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"season\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"scarcity\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"serialNumber\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"metadata\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"clubId\",\"type\":\"uint16\"}],\"name\":\"createCard\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_cardId\",\"type\":\"uint256\"}],\"name\":\"getCard\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"playerId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"season\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"scarcity\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"serialNumber\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"clubId\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"clubId\",\"type\":\"uint16\"}],\"name\":\"getClub\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"country\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"city\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"yearFounded\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"playerId\",\"type\":\"uint256\"}],\"name\":\"getPlayer\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"yearOfBirth\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"monthOfBirth\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"dayOfBirth\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"
  6086  
  6087  // ISorareCardsFuncSigs maps the 4-byte function signature to its string representation.
  6088  var ISorareCardsFuncSigs = map[string]string{
  6089  	"4ae3540e": "cardExists(uint256)",
  6090  	"01152383": "createCard(uint256,uint16,uint8,uint16,bytes32,uint16)",
  6091  	"9188d312": "getCard(uint256)",
  6092  	"4a39d2b8": "getClub(uint16)",
  6093  	"e55ae4e8": "getPlayer(uint256)",
  6094  }
  6095  
  6096  // ISorareCards is an auto generated Go binding around an Ethereum contract.
  6097  type ISorareCards struct {
  6098  	ISorareCardsCaller     // Read-only binding to the contract
  6099  	ISorareCardsTransactor // Write-only binding to the contract
  6100  	ISorareCardsFilterer   // Log filterer for contract events
  6101  }
  6102  
  6103  // ISorareCardsCaller is an auto generated read-only Go binding around an Ethereum contract.
  6104  type ISorareCardsCaller struct {
  6105  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6106  }
  6107  
  6108  // ISorareCardsTransactor is an auto generated write-only Go binding around an Ethereum contract.
  6109  type ISorareCardsTransactor struct {
  6110  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6111  }
  6112  
  6113  // ISorareCardsFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  6114  type ISorareCardsFilterer struct {
  6115  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6116  }
  6117  
  6118  // ISorareCardsSession is an auto generated Go binding around an Ethereum contract,
  6119  // with pre-set call and transact options.
  6120  type ISorareCardsSession struct {
  6121  	Contract     *ISorareCards     // Generic contract binding to set the session for
  6122  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  6123  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6124  }
  6125  
  6126  // ISorareCardsCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  6127  // with pre-set call options.
  6128  type ISorareCardsCallerSession struct {
  6129  	Contract *ISorareCardsCaller // Generic contract caller binding to set the session for
  6130  	CallOpts bind.CallOpts       // Call options to use throughout this session
  6131  }
  6132  
  6133  // ISorareCardsTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  6134  // with pre-set transact options.
  6135  type ISorareCardsTransactorSession struct {
  6136  	Contract     *ISorareCardsTransactor // Generic contract transactor binding to set the session for
  6137  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
  6138  }
  6139  
  6140  // ISorareCardsRaw is an auto generated low-level Go binding around an Ethereum contract.
  6141  type ISorareCardsRaw struct {
  6142  	Contract *ISorareCards // Generic contract binding to access the raw methods on
  6143  }
  6144  
  6145  // ISorareCardsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  6146  type ISorareCardsCallerRaw struct {
  6147  	Contract *ISorareCardsCaller // Generic read-only contract binding to access the raw methods on
  6148  }
  6149  
  6150  // ISorareCardsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  6151  type ISorareCardsTransactorRaw struct {
  6152  	Contract *ISorareCardsTransactor // Generic write-only contract binding to access the raw methods on
  6153  }
  6154  
  6155  // NewISorareCards creates a new instance of ISorareCards, bound to a specific deployed contract.
  6156  func NewISorareCards(address common.Address, backend bind.ContractBackend) (*ISorareCards, error) {
  6157  	contract, err := bindISorareCards(address, backend, backend, backend)
  6158  	if err != nil {
  6159  		return nil, err
  6160  	}
  6161  	return &ISorareCards{ISorareCardsCaller: ISorareCardsCaller{contract: contract}, ISorareCardsTransactor: ISorareCardsTransactor{contract: contract}, ISorareCardsFilterer: ISorareCardsFilterer{contract: contract}}, nil
  6162  }
  6163  
  6164  // NewISorareCardsCaller creates a new read-only instance of ISorareCards, bound to a specific deployed contract.
  6165  func NewISorareCardsCaller(address common.Address, caller bind.ContractCaller) (*ISorareCardsCaller, error) {
  6166  	contract, err := bindISorareCards(address, caller, nil, nil)
  6167  	if err != nil {
  6168  		return nil, err
  6169  	}
  6170  	return &ISorareCardsCaller{contract: contract}, nil
  6171  }
  6172  
  6173  // NewISorareCardsTransactor creates a new write-only instance of ISorareCards, bound to a specific deployed contract.
  6174  func NewISorareCardsTransactor(address common.Address, transactor bind.ContractTransactor) (*ISorareCardsTransactor, error) {
  6175  	contract, err := bindISorareCards(address, nil, transactor, nil)
  6176  	if err != nil {
  6177  		return nil, err
  6178  	}
  6179  	return &ISorareCardsTransactor{contract: contract}, nil
  6180  }
  6181  
  6182  // NewISorareCardsFilterer creates a new log filterer instance of ISorareCards, bound to a specific deployed contract.
  6183  func NewISorareCardsFilterer(address common.Address, filterer bind.ContractFilterer) (*ISorareCardsFilterer, error) {
  6184  	contract, err := bindISorareCards(address, nil, nil, filterer)
  6185  	if err != nil {
  6186  		return nil, err
  6187  	}
  6188  	return &ISorareCardsFilterer{contract: contract}, nil
  6189  }
  6190  
  6191  // bindISorareCards binds a generic wrapper to an already deployed contract.
  6192  func bindISorareCards(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6193  	parsed, err := abi.JSON(strings.NewReader(ISorareCardsABI))
  6194  	if err != nil {
  6195  		return nil, err
  6196  	}
  6197  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6198  }
  6199  
  6200  // Call invokes the (constant) contract method with params as input values and
  6201  // sets the output to result. The result type might be a single field for simple
  6202  // returns, a slice of interfaces for anonymous returns and a struct for named
  6203  // returns.
  6204  func (_ISorareCards *ISorareCardsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6205  	return _ISorareCards.Contract.ISorareCardsCaller.contract.Call(opts, result, method, params...)
  6206  }
  6207  
  6208  // Transfer initiates a plain transaction to move funds to the contract, calling
  6209  // its default method if one is available.
  6210  func (_ISorareCards *ISorareCardsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6211  	return _ISorareCards.Contract.ISorareCardsTransactor.contract.Transfer(opts)
  6212  }
  6213  
  6214  // Transact invokes the (paid) contract method with params as input values.
  6215  func (_ISorareCards *ISorareCardsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6216  	return _ISorareCards.Contract.ISorareCardsTransactor.contract.Transact(opts, method, params...)
  6217  }
  6218  
  6219  // Call invokes the (constant) contract method with params as input values and
  6220  // sets the output to result. The result type might be a single field for simple
  6221  // returns, a slice of interfaces for anonymous returns and a struct for named
  6222  // returns.
  6223  func (_ISorareCards *ISorareCardsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6224  	return _ISorareCards.Contract.contract.Call(opts, result, method, params...)
  6225  }
  6226  
  6227  // Transfer initiates a plain transaction to move funds to the contract, calling
  6228  // its default method if one is available.
  6229  func (_ISorareCards *ISorareCardsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6230  	return _ISorareCards.Contract.contract.Transfer(opts)
  6231  }
  6232  
  6233  // Transact invokes the (paid) contract method with params as input values.
  6234  func (_ISorareCards *ISorareCardsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6235  	return _ISorareCards.Contract.contract.Transact(opts, method, params...)
  6236  }
  6237  
  6238  // CardExists is a free data retrieval call binding the contract method 0x4ae3540e.
  6239  //
  6240  // Solidity: function cardExists(uint256 cardId) view returns(bool)
  6241  func (_ISorareCards *ISorareCardsCaller) CardExists(opts *bind.CallOpts, cardId *big.Int) (bool, error) {
  6242  	var out []interface{}
  6243  	err := _ISorareCards.contract.Call(opts, &out, "cardExists", cardId)
  6244  
  6245  	if err != nil {
  6246  		return *new(bool), err
  6247  	}
  6248  
  6249  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  6250  
  6251  	return out0, err
  6252  
  6253  }
  6254  
  6255  // CardExists is a free data retrieval call binding the contract method 0x4ae3540e.
  6256  //
  6257  // Solidity: function cardExists(uint256 cardId) view returns(bool)
  6258  func (_ISorareCards *ISorareCardsSession) CardExists(cardId *big.Int) (bool, error) {
  6259  	return _ISorareCards.Contract.CardExists(&_ISorareCards.CallOpts, cardId)
  6260  }
  6261  
  6262  // CardExists is a free data retrieval call binding the contract method 0x4ae3540e.
  6263  //
  6264  // Solidity: function cardExists(uint256 cardId) view returns(bool)
  6265  func (_ISorareCards *ISorareCardsCallerSession) CardExists(cardId *big.Int) (bool, error) {
  6266  	return _ISorareCards.Contract.CardExists(&_ISorareCards.CallOpts, cardId)
  6267  }
  6268  
  6269  // GetCard is a free data retrieval call binding the contract method 0x9188d312.
  6270  //
  6271  // Solidity: function getCard(uint256 _cardId) view returns(uint256 playerId, uint16 season, uint256 scarcity, uint16 serialNumber, bytes metadata, uint16 clubId)
  6272  func (_ISorareCards *ISorareCardsCaller) GetCard(opts *bind.CallOpts, _cardId *big.Int) (struct {
  6273  	PlayerId     *big.Int
  6274  	Season       uint16
  6275  	Scarcity     *big.Int
  6276  	SerialNumber uint16
  6277  	Metadata     []byte
  6278  	ClubId       uint16
  6279  }, error) {
  6280  	var out []interface{}
  6281  	err := _ISorareCards.contract.Call(opts, &out, "getCard", _cardId)
  6282  
  6283  	outstruct := new(struct {
  6284  		PlayerId     *big.Int
  6285  		Season       uint16
  6286  		Scarcity     *big.Int
  6287  		SerialNumber uint16
  6288  		Metadata     []byte
  6289  		ClubId       uint16
  6290  	})
  6291  
  6292  	outstruct.PlayerId = out[0].(*big.Int)
  6293  	outstruct.Season = out[1].(uint16)
  6294  	outstruct.Scarcity = out[2].(*big.Int)
  6295  	outstruct.SerialNumber = out[3].(uint16)
  6296  	outstruct.Metadata = out[4].([]byte)
  6297  	outstruct.ClubId = out[5].(uint16)
  6298  
  6299  	return *outstruct, err
  6300  
  6301  }
  6302  
  6303  // GetCard is a free data retrieval call binding the contract method 0x9188d312.
  6304  //
  6305  // Solidity: function getCard(uint256 _cardId) view returns(uint256 playerId, uint16 season, uint256 scarcity, uint16 serialNumber, bytes metadata, uint16 clubId)
  6306  func (_ISorareCards *ISorareCardsSession) GetCard(_cardId *big.Int) (struct {
  6307  	PlayerId     *big.Int
  6308  	Season       uint16
  6309  	Scarcity     *big.Int
  6310  	SerialNumber uint16
  6311  	Metadata     []byte
  6312  	ClubId       uint16
  6313  }, error) {
  6314  	return _ISorareCards.Contract.GetCard(&_ISorareCards.CallOpts, _cardId)
  6315  }
  6316  
  6317  // GetCard is a free data retrieval call binding the contract method 0x9188d312.
  6318  //
  6319  // Solidity: function getCard(uint256 _cardId) view returns(uint256 playerId, uint16 season, uint256 scarcity, uint16 serialNumber, bytes metadata, uint16 clubId)
  6320  func (_ISorareCards *ISorareCardsCallerSession) GetCard(_cardId *big.Int) (struct {
  6321  	PlayerId     *big.Int
  6322  	Season       uint16
  6323  	Scarcity     *big.Int
  6324  	SerialNumber uint16
  6325  	Metadata     []byte
  6326  	ClubId       uint16
  6327  }, error) {
  6328  	return _ISorareCards.Contract.GetCard(&_ISorareCards.CallOpts, _cardId)
  6329  }
  6330  
  6331  // GetClub is a free data retrieval call binding the contract method 0x4a39d2b8.
  6332  //
  6333  // Solidity: function getClub(uint16 clubId) view returns(string name, string country, string city, uint16 yearFounded)
  6334  func (_ISorareCards *ISorareCardsCaller) GetClub(opts *bind.CallOpts, clubId uint16) (struct {
  6335  	Name        string
  6336  	Country     string
  6337  	City        string
  6338  	YearFounded uint16
  6339  }, error) {
  6340  	var out []interface{}
  6341  	err := _ISorareCards.contract.Call(opts, &out, "getClub", clubId)
  6342  
  6343  	outstruct := new(struct {
  6344  		Name        string
  6345  		Country     string
  6346  		City        string
  6347  		YearFounded uint16
  6348  	})
  6349  
  6350  	outstruct.Name = out[0].(string)
  6351  	outstruct.Country = out[1].(string)
  6352  	outstruct.City = out[2].(string)
  6353  	outstruct.YearFounded = out[3].(uint16)
  6354  
  6355  	return *outstruct, err
  6356  
  6357  }
  6358  
  6359  // GetClub is a free data retrieval call binding the contract method 0x4a39d2b8.
  6360  //
  6361  // Solidity: function getClub(uint16 clubId) view returns(string name, string country, string city, uint16 yearFounded)
  6362  func (_ISorareCards *ISorareCardsSession) GetClub(clubId uint16) (struct {
  6363  	Name        string
  6364  	Country     string
  6365  	City        string
  6366  	YearFounded uint16
  6367  }, error) {
  6368  	return _ISorareCards.Contract.GetClub(&_ISorareCards.CallOpts, clubId)
  6369  }
  6370  
  6371  // GetClub is a free data retrieval call binding the contract method 0x4a39d2b8.
  6372  //
  6373  // Solidity: function getClub(uint16 clubId) view returns(string name, string country, string city, uint16 yearFounded)
  6374  func (_ISorareCards *ISorareCardsCallerSession) GetClub(clubId uint16) (struct {
  6375  	Name        string
  6376  	Country     string
  6377  	City        string
  6378  	YearFounded uint16
  6379  }, error) {
  6380  	return _ISorareCards.Contract.GetClub(&_ISorareCards.CallOpts, clubId)
  6381  }
  6382  
  6383  // GetPlayer is a free data retrieval call binding the contract method 0xe55ae4e8.
  6384  //
  6385  // Solidity: function getPlayer(uint256 playerId) view returns(string name, uint16 yearOfBirth, uint8 monthOfBirth, uint8 dayOfBirth)
  6386  func (_ISorareCards *ISorareCardsCaller) GetPlayer(opts *bind.CallOpts, playerId *big.Int) (struct {
  6387  	Name         string
  6388  	YearOfBirth  uint16
  6389  	MonthOfBirth uint8
  6390  	DayOfBirth   uint8
  6391  }, error) {
  6392  	var out []interface{}
  6393  	err := _ISorareCards.contract.Call(opts, &out, "getPlayer", playerId)
  6394  
  6395  	outstruct := new(struct {
  6396  		Name         string
  6397  		YearOfBirth  uint16
  6398  		MonthOfBirth uint8
  6399  		DayOfBirth   uint8
  6400  	})
  6401  
  6402  	outstruct.Name = out[0].(string)
  6403  	outstruct.YearOfBirth = out[1].(uint16)
  6404  	outstruct.MonthOfBirth = out[2].(uint8)
  6405  	outstruct.DayOfBirth = out[3].(uint8)
  6406  
  6407  	return *outstruct, err
  6408  
  6409  }
  6410  
  6411  // GetPlayer is a free data retrieval call binding the contract method 0xe55ae4e8.
  6412  //
  6413  // Solidity: function getPlayer(uint256 playerId) view returns(string name, uint16 yearOfBirth, uint8 monthOfBirth, uint8 dayOfBirth)
  6414  func (_ISorareCards *ISorareCardsSession) GetPlayer(playerId *big.Int) (struct {
  6415  	Name         string
  6416  	YearOfBirth  uint16
  6417  	MonthOfBirth uint8
  6418  	DayOfBirth   uint8
  6419  }, error) {
  6420  	return _ISorareCards.Contract.GetPlayer(&_ISorareCards.CallOpts, playerId)
  6421  }
  6422  
  6423  // GetPlayer is a free data retrieval call binding the contract method 0xe55ae4e8.
  6424  //
  6425  // Solidity: function getPlayer(uint256 playerId) view returns(string name, uint16 yearOfBirth, uint8 monthOfBirth, uint8 dayOfBirth)
  6426  func (_ISorareCards *ISorareCardsCallerSession) GetPlayer(playerId *big.Int) (struct {
  6427  	Name         string
  6428  	YearOfBirth  uint16
  6429  	MonthOfBirth uint8
  6430  	DayOfBirth   uint8
  6431  }, error) {
  6432  	return _ISorareCards.Contract.GetPlayer(&_ISorareCards.CallOpts, playerId)
  6433  }
  6434  
  6435  // CreateCard is a paid mutator transaction binding the contract method 0x01152383.
  6436  //
  6437  // Solidity: function createCard(uint256 playerId, uint16 season, uint8 scarcity, uint16 serialNumber, bytes32 metadata, uint16 clubId) returns(uint256)
  6438  func (_ISorareCards *ISorareCardsTransactor) CreateCard(opts *bind.TransactOpts, playerId *big.Int, season uint16, scarcity uint8, serialNumber uint16, metadata [32]byte, clubId uint16) (*types.Transaction, error) {
  6439  	return _ISorareCards.contract.Transact(opts, "createCard", playerId, season, scarcity, serialNumber, metadata, clubId)
  6440  }
  6441  
  6442  // CreateCard is a paid mutator transaction binding the contract method 0x01152383.
  6443  //
  6444  // Solidity: function createCard(uint256 playerId, uint16 season, uint8 scarcity, uint16 serialNumber, bytes32 metadata, uint16 clubId) returns(uint256)
  6445  func (_ISorareCards *ISorareCardsSession) CreateCard(playerId *big.Int, season uint16, scarcity uint8, serialNumber uint16, metadata [32]byte, clubId uint16) (*types.Transaction, error) {
  6446  	return _ISorareCards.Contract.CreateCard(&_ISorareCards.TransactOpts, playerId, season, scarcity, serialNumber, metadata, clubId)
  6447  }
  6448  
  6449  // CreateCard is a paid mutator transaction binding the contract method 0x01152383.
  6450  //
  6451  // Solidity: function createCard(uint256 playerId, uint16 season, uint8 scarcity, uint16 serialNumber, bytes32 metadata, uint16 clubId) returns(uint256)
  6452  func (_ISorareCards *ISorareCardsTransactorSession) CreateCard(playerId *big.Int, season uint16, scarcity uint8, serialNumber uint16, metadata [32]byte, clubId uint16) (*types.Transaction, error) {
  6453  	return _ISorareCards.Contract.CreateCard(&_ISorareCards.TransactOpts, playerId, season, scarcity, serialNumber, metadata, clubId)
  6454  }
  6455  
  6456  // ISorareTokensABI is the input ABI used to generate the binding from.
  6457  const ISorareTokensABI = "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"playerId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"season\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"scarcity\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"serialNumber\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"metadata\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"clubId\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"createCardAndMintToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cardId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mintToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  6458  
  6459  // ISorareTokensFuncSigs maps the 4-byte function signature to its string representation.
  6460  var ISorareTokensFuncSigs = map[string]string{
  6461  	"2850d20e": "createCardAndMintToken(uint256,uint16,uint8,uint16,bytes32,uint16,address)",
  6462  	"a140ae23": "mintToken(uint256,address)",
  6463  }
  6464  
  6465  // ISorareTokens is an auto generated Go binding around an Ethereum contract.
  6466  type ISorareTokens struct {
  6467  	ISorareTokensCaller     // Read-only binding to the contract
  6468  	ISorareTokensTransactor // Write-only binding to the contract
  6469  	ISorareTokensFilterer   // Log filterer for contract events
  6470  }
  6471  
  6472  // ISorareTokensCaller is an auto generated read-only Go binding around an Ethereum contract.
  6473  type ISorareTokensCaller struct {
  6474  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6475  }
  6476  
  6477  // ISorareTokensTransactor is an auto generated write-only Go binding around an Ethereum contract.
  6478  type ISorareTokensTransactor struct {
  6479  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6480  }
  6481  
  6482  // ISorareTokensFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  6483  type ISorareTokensFilterer struct {
  6484  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6485  }
  6486  
  6487  // ISorareTokensSession is an auto generated Go binding around an Ethereum contract,
  6488  // with pre-set call and transact options.
  6489  type ISorareTokensSession struct {
  6490  	Contract     *ISorareTokens    // Generic contract binding to set the session for
  6491  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  6492  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6493  }
  6494  
  6495  // ISorareTokensCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  6496  // with pre-set call options.
  6497  type ISorareTokensCallerSession struct {
  6498  	Contract *ISorareTokensCaller // Generic contract caller binding to set the session for
  6499  	CallOpts bind.CallOpts        // Call options to use throughout this session
  6500  }
  6501  
  6502  // ISorareTokensTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  6503  // with pre-set transact options.
  6504  type ISorareTokensTransactorSession struct {
  6505  	Contract     *ISorareTokensTransactor // Generic contract transactor binding to set the session for
  6506  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  6507  }
  6508  
  6509  // ISorareTokensRaw is an auto generated low-level Go binding around an Ethereum contract.
  6510  type ISorareTokensRaw struct {
  6511  	Contract *ISorareTokens // Generic contract binding to access the raw methods on
  6512  }
  6513  
  6514  // ISorareTokensCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  6515  type ISorareTokensCallerRaw struct {
  6516  	Contract *ISorareTokensCaller // Generic read-only contract binding to access the raw methods on
  6517  }
  6518  
  6519  // ISorareTokensTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  6520  type ISorareTokensTransactorRaw struct {
  6521  	Contract *ISorareTokensTransactor // Generic write-only contract binding to access the raw methods on
  6522  }
  6523  
  6524  // NewISorareTokens creates a new instance of ISorareTokens, bound to a specific deployed contract.
  6525  func NewISorareTokens(address common.Address, backend bind.ContractBackend) (*ISorareTokens, error) {
  6526  	contract, err := bindISorareTokens(address, backend, backend, backend)
  6527  	if err != nil {
  6528  		return nil, err
  6529  	}
  6530  	return &ISorareTokens{ISorareTokensCaller: ISorareTokensCaller{contract: contract}, ISorareTokensTransactor: ISorareTokensTransactor{contract: contract}, ISorareTokensFilterer: ISorareTokensFilterer{contract: contract}}, nil
  6531  }
  6532  
  6533  // NewISorareTokensCaller creates a new read-only instance of ISorareTokens, bound to a specific deployed contract.
  6534  func NewISorareTokensCaller(address common.Address, caller bind.ContractCaller) (*ISorareTokensCaller, error) {
  6535  	contract, err := bindISorareTokens(address, caller, nil, nil)
  6536  	if err != nil {
  6537  		return nil, err
  6538  	}
  6539  	return &ISorareTokensCaller{contract: contract}, nil
  6540  }
  6541  
  6542  // NewISorareTokensTransactor creates a new write-only instance of ISorareTokens, bound to a specific deployed contract.
  6543  func NewISorareTokensTransactor(address common.Address, transactor bind.ContractTransactor) (*ISorareTokensTransactor, error) {
  6544  	contract, err := bindISorareTokens(address, nil, transactor, nil)
  6545  	if err != nil {
  6546  		return nil, err
  6547  	}
  6548  	return &ISorareTokensTransactor{contract: contract}, nil
  6549  }
  6550  
  6551  // NewISorareTokensFilterer creates a new log filterer instance of ISorareTokens, bound to a specific deployed contract.
  6552  func NewISorareTokensFilterer(address common.Address, filterer bind.ContractFilterer) (*ISorareTokensFilterer, error) {
  6553  	contract, err := bindISorareTokens(address, nil, nil, filterer)
  6554  	if err != nil {
  6555  		return nil, err
  6556  	}
  6557  	return &ISorareTokensFilterer{contract: contract}, nil
  6558  }
  6559  
  6560  // bindISorareTokens binds a generic wrapper to an already deployed contract.
  6561  func bindISorareTokens(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6562  	parsed, err := abi.JSON(strings.NewReader(ISorareTokensABI))
  6563  	if err != nil {
  6564  		return nil, err
  6565  	}
  6566  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6567  }
  6568  
  6569  // Call invokes the (constant) contract method with params as input values and
  6570  // sets the output to result. The result type might be a single field for simple
  6571  // returns, a slice of interfaces for anonymous returns and a struct for named
  6572  // returns.
  6573  func (_ISorareTokens *ISorareTokensRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6574  	return _ISorareTokens.Contract.ISorareTokensCaller.contract.Call(opts, result, method, params...)
  6575  }
  6576  
  6577  // Transfer initiates a plain transaction to move funds to the contract, calling
  6578  // its default method if one is available.
  6579  func (_ISorareTokens *ISorareTokensRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6580  	return _ISorareTokens.Contract.ISorareTokensTransactor.contract.Transfer(opts)
  6581  }
  6582  
  6583  // Transact invokes the (paid) contract method with params as input values.
  6584  func (_ISorareTokens *ISorareTokensRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6585  	return _ISorareTokens.Contract.ISorareTokensTransactor.contract.Transact(opts, method, params...)
  6586  }
  6587  
  6588  // Call invokes the (constant) contract method with params as input values and
  6589  // sets the output to result. The result type might be a single field for simple
  6590  // returns, a slice of interfaces for anonymous returns and a struct for named
  6591  // returns.
  6592  func (_ISorareTokens *ISorareTokensCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6593  	return _ISorareTokens.Contract.contract.Call(opts, result, method, params...)
  6594  }
  6595  
  6596  // Transfer initiates a plain transaction to move funds to the contract, calling
  6597  // its default method if one is available.
  6598  func (_ISorareTokens *ISorareTokensTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6599  	return _ISorareTokens.Contract.contract.Transfer(opts)
  6600  }
  6601  
  6602  // Transact invokes the (paid) contract method with params as input values.
  6603  func (_ISorareTokens *ISorareTokensTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6604  	return _ISorareTokens.Contract.contract.Transact(opts, method, params...)
  6605  }
  6606  
  6607  // CreateCardAndMintToken is a paid mutator transaction binding the contract method 0x2850d20e.
  6608  //
  6609  // Solidity: function createCardAndMintToken(uint256 playerId, uint16 season, uint8 scarcity, uint16 serialNumber, bytes32 metadata, uint16 clubId, address to) returns(uint256)
  6610  func (_ISorareTokens *ISorareTokensTransactor) CreateCardAndMintToken(opts *bind.TransactOpts, playerId *big.Int, season uint16, scarcity uint8, serialNumber uint16, metadata [32]byte, clubId uint16, to common.Address) (*types.Transaction, error) {
  6611  	return _ISorareTokens.contract.Transact(opts, "createCardAndMintToken", playerId, season, scarcity, serialNumber, metadata, clubId, to)
  6612  }
  6613  
  6614  // CreateCardAndMintToken is a paid mutator transaction binding the contract method 0x2850d20e.
  6615  //
  6616  // Solidity: function createCardAndMintToken(uint256 playerId, uint16 season, uint8 scarcity, uint16 serialNumber, bytes32 metadata, uint16 clubId, address to) returns(uint256)
  6617  func (_ISorareTokens *ISorareTokensSession) CreateCardAndMintToken(playerId *big.Int, season uint16, scarcity uint8, serialNumber uint16, metadata [32]byte, clubId uint16, to common.Address) (*types.Transaction, error) {
  6618  	return _ISorareTokens.Contract.CreateCardAndMintToken(&_ISorareTokens.TransactOpts, playerId, season, scarcity, serialNumber, metadata, clubId, to)
  6619  }
  6620  
  6621  // CreateCardAndMintToken is a paid mutator transaction binding the contract method 0x2850d20e.
  6622  //
  6623  // Solidity: function createCardAndMintToken(uint256 playerId, uint16 season, uint8 scarcity, uint16 serialNumber, bytes32 metadata, uint16 clubId, address to) returns(uint256)
  6624  func (_ISorareTokens *ISorareTokensTransactorSession) CreateCardAndMintToken(playerId *big.Int, season uint16, scarcity uint8, serialNumber uint16, metadata [32]byte, clubId uint16, to common.Address) (*types.Transaction, error) {
  6625  	return _ISorareTokens.Contract.CreateCardAndMintToken(&_ISorareTokens.TransactOpts, playerId, season, scarcity, serialNumber, metadata, clubId, to)
  6626  }
  6627  
  6628  // MintToken is a paid mutator transaction binding the contract method 0xa140ae23.
  6629  //
  6630  // Solidity: function mintToken(uint256 cardId, address to) returns(uint256)
  6631  func (_ISorareTokens *ISorareTokensTransactor) MintToken(opts *bind.TransactOpts, cardId *big.Int, to common.Address) (*types.Transaction, error) {
  6632  	return _ISorareTokens.contract.Transact(opts, "mintToken", cardId, to)
  6633  }
  6634  
  6635  // MintToken is a paid mutator transaction binding the contract method 0xa140ae23.
  6636  //
  6637  // Solidity: function mintToken(uint256 cardId, address to) returns(uint256)
  6638  func (_ISorareTokens *ISorareTokensSession) MintToken(cardId *big.Int, to common.Address) (*types.Transaction, error) {
  6639  	return _ISorareTokens.Contract.MintToken(&_ISorareTokens.TransactOpts, cardId, to)
  6640  }
  6641  
  6642  // MintToken is a paid mutator transaction binding the contract method 0xa140ae23.
  6643  //
  6644  // Solidity: function mintToken(uint256 cardId, address to) returns(uint256)
  6645  func (_ISorareTokens *ISorareTokensTransactorSession) MintToken(cardId *big.Int, to common.Address) (*types.Transaction, error) {
  6646  	return _ISorareTokens.Contract.MintToken(&_ISorareTokens.TransactOpts, cardId, to)
  6647  }
  6648  
  6649  // MinterAccessABI is the input ABI used to generate the binding from.
  6650  const MinterAccessABI = "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  6651  
  6652  // MinterAccessFuncSigs maps the 4-byte function signature to its string representation.
  6653  var MinterAccessFuncSigs = map[string]string{
  6654  	"a217fddf": "DEFAULT_ADMIN_ROLE()",
  6655  	"d5391393": "MINTER_ROLE()",
  6656  	"983b2d56": "addMinter(address)",
  6657  	"248a9ca3": "getRoleAdmin(bytes32)",
  6658  	"9010d07c": "getRoleMember(bytes32,uint256)",
  6659  	"ca15c873": "getRoleMemberCount(bytes32)",
  6660  	"2f2ff15d": "grantRole(bytes32,address)",
  6661  	"91d14854": "hasRole(bytes32,address)",
  6662  	"8da5cb5b": "owner()",
  6663  	"5f112c68": "renounceMinter(address)",
  6664  	"715018a6": "renounceOwnership()",
  6665  	"36568abe": "renounceRole(bytes32,address)",
  6666  	"cfbd4885": "revokeMinter(address)",
  6667  	"d547741f": "revokeRole(bytes32,address)",
  6668  	"f2fde38b": "transferOwnership(address)",
  6669  }
  6670  
  6671  // MinterAccessBin is the compiled bytecode used for deploying new contracts.
  6672  var MinterAccessBin = "0x608060405234801561001057600080fd5b5060006100246001600160e01b036100ba16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506100826000336001600160e01b036100be16565b604080516a4d494e5445525f524f4c4560a81b8152905190819003600b0190206100b590336001600160e01b036100be16565b6101e5565b3390565b6100d182826001600160e01b036100d516565b5050565b60008281526001602090815260409091206100f991839061081e610153821b17901c565b156100d15761010f6001600160e01b036100ba16565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610171836001600160a01b0384166001600160e01b0361017a16565b90505b92915050565b600061018f83836001600160e01b036101cd16565b6101c557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610174565b506000610174565b60009081526001919091016020526040902054151590565b610ae4806101f46000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806391d1485411610097578063cfbd488511610066578063cfbd488514610283578063d5391393146102a9578063d547741f146102b1578063f2fde38b146102dd576100f5565b806391d14854146101f8578063983b2d5614610238578063a217fddf1461025e578063ca15c87314610266576100f5565b80635f112c68116100d35780635f112c6814610183578063715018a6146101a95780638da5cb5b146101b15780639010d07c146101d5576100f5565b8063248a9ca3146100fa5780632f2ff15d1461012957806336568abe14610157575b600080fd5b6101176004803603602081101561011057600080fd5b5035610303565b60408051918252519081900360200190f35b6101556004803603604081101561013f57600080fd5b50803590602001356001600160a01b0316610318565b005b6101556004803603604081101561016d57600080fd5b50803590602001356001600160a01b0316610384565b6101556004803603602081101561019957600080fd5b50356001600160a01b03166103e5565b610155610412565b6101b96104c6565b604080516001600160a01b039092168252519081900360200190f35b6101b9600480360360408110156101eb57600080fd5b50803590602001356104d5565b6102246004803603604081101561020e57600080fd5b50803590602001356001600160a01b03166104fc565b604080519115158252519081900360200190f35b6101556004803603602081101561024e57600080fd5b50356001600160a01b031661051a565b610117610544565b6101176004803603602081101561027c57600080fd5b5035610549565b6101556004803603602081101561029957600080fd5b50356001600160a01b0316610560565b61011761058a565b610155600480360360408110156102c757600080fd5b50803590602001356001600160a01b03166105ad565b610155600480360360208110156102f357600080fd5b50356001600160a01b0316610606565b60009081526001602052604090206002015490565b60008281526001602052604090206002015461033b90610336610710565b6104fc565b6103765760405162461bcd60e51b815260040180806020018281038252602f8152602001806109fb602f913960400191505060405180910390fd5b6103808282610714565b5050565b61038c610710565b6001600160a01b0316816001600160a01b0316146103db5760405162461bcd60e51b815260040180806020018281038252602f815260200180610a80602f913960400191505060405180910390fd5b6103808282610783565b604080516a4d494e5445525f524f4c4560a81b8152905190819003600b01902061040f9082610384565b50565b61041a610710565b6000546001600160a01b0390811691161461047c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b60008281526001602052604081206104f3908363ffffffff6107f216565b90505b92915050565b60008281526001602052604081206104f3908363ffffffff6107fe16565b604080516a4d494e5445525f524f4c4560a81b8152905190819003600b01902061040f9082610318565b600081565b60008181526001602052604081206104f690610813565b604080516a4d494e5445525f524f4c4560a81b8152905190819003600b01902061040f90826105ad565b604080516a4d494e5445525f524f4c4560a81b8152905190819003600b01902081565b6000828152600160205260409020600201546105cb90610336610710565b6103db5760405162461bcd60e51b8152600401808060200182810382526030815260200180610a506030913960400191505060405180910390fd5b61060e610710565b6000546001600160a01b03908116911614610670576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166106b55760405162461bcd60e51b8152600401808060200182810382526026815260200180610a2a6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6000828152600160205260409020610732908263ffffffff61081e16565b156103805761073f610710565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526001602052604090206107a1908263ffffffff61083316565b15610380576107ae610710565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60006104f38383610848565b60006104f3836001600160a01b0384166108ac565b60006104f6826108c4565b60006104f3836001600160a01b0384166108c8565b60006104f3836001600160a01b038416610912565b8154600090821061088a5760405162461bcd60e51b81526004018080602001828103825260228152602001806109d96022913960400191505060405180910390fd5b82600001828154811061089957fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b60006108d483836108ac565b61090a575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556104f6565b5060006104f6565b600081815260018301602052604081205480156109ce578354600019808301919081019060009087908390811061094557fe5b906000526020600020015490508087600001848154811061096257fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061099257fe5b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506104f6565b60009150506104f656fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e744f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a264697066735822122078fe2824d83f5f2fa05f30dfd7de0645463e423e9a9bbc5f318c39565b4fb0b964736f6c63430006060033"
  6673  
  6674  // DeployMinterAccess deploys a new Ethereum contract, binding an instance of MinterAccess to it.
  6675  func DeployMinterAccess(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *MinterAccess, error) {
  6676  	parsed, err := abi.JSON(strings.NewReader(MinterAccessABI))
  6677  	if err != nil {
  6678  		return common.Address{}, nil, nil, err
  6679  	}
  6680  
  6681  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(MinterAccessBin), backend)
  6682  	if err != nil {
  6683  		return common.Address{}, nil, nil, err
  6684  	}
  6685  	return address, tx, &MinterAccess{MinterAccessCaller: MinterAccessCaller{contract: contract}, MinterAccessTransactor: MinterAccessTransactor{contract: contract}, MinterAccessFilterer: MinterAccessFilterer{contract: contract}}, nil
  6686  }
  6687  
  6688  // MinterAccess is an auto generated Go binding around an Ethereum contract.
  6689  type MinterAccess struct {
  6690  	MinterAccessCaller     // Read-only binding to the contract
  6691  	MinterAccessTransactor // Write-only binding to the contract
  6692  	MinterAccessFilterer   // Log filterer for contract events
  6693  }
  6694  
  6695  // MinterAccessCaller is an auto generated read-only Go binding around an Ethereum contract.
  6696  type MinterAccessCaller struct {
  6697  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6698  }
  6699  
  6700  // MinterAccessTransactor is an auto generated write-only Go binding around an Ethereum contract.
  6701  type MinterAccessTransactor struct {
  6702  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6703  }
  6704  
  6705  // MinterAccessFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  6706  type MinterAccessFilterer struct {
  6707  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6708  }
  6709  
  6710  // MinterAccessSession is an auto generated Go binding around an Ethereum contract,
  6711  // with pre-set call and transact options.
  6712  type MinterAccessSession struct {
  6713  	Contract     *MinterAccess     // Generic contract binding to set the session for
  6714  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  6715  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6716  }
  6717  
  6718  // MinterAccessCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  6719  // with pre-set call options.
  6720  type MinterAccessCallerSession struct {
  6721  	Contract *MinterAccessCaller // Generic contract caller binding to set the session for
  6722  	CallOpts bind.CallOpts       // Call options to use throughout this session
  6723  }
  6724  
  6725  // MinterAccessTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  6726  // with pre-set transact options.
  6727  type MinterAccessTransactorSession struct {
  6728  	Contract     *MinterAccessTransactor // Generic contract transactor binding to set the session for
  6729  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
  6730  }
  6731  
  6732  // MinterAccessRaw is an auto generated low-level Go binding around an Ethereum contract.
  6733  type MinterAccessRaw struct {
  6734  	Contract *MinterAccess // Generic contract binding to access the raw methods on
  6735  }
  6736  
  6737  // MinterAccessCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  6738  type MinterAccessCallerRaw struct {
  6739  	Contract *MinterAccessCaller // Generic read-only contract binding to access the raw methods on
  6740  }
  6741  
  6742  // MinterAccessTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  6743  type MinterAccessTransactorRaw struct {
  6744  	Contract *MinterAccessTransactor // Generic write-only contract binding to access the raw methods on
  6745  }
  6746  
  6747  // NewMinterAccess creates a new instance of MinterAccess, bound to a specific deployed contract.
  6748  func NewMinterAccess(address common.Address, backend bind.ContractBackend) (*MinterAccess, error) {
  6749  	contract, err := bindMinterAccess(address, backend, backend, backend)
  6750  	if err != nil {
  6751  		return nil, err
  6752  	}
  6753  	return &MinterAccess{MinterAccessCaller: MinterAccessCaller{contract: contract}, MinterAccessTransactor: MinterAccessTransactor{contract: contract}, MinterAccessFilterer: MinterAccessFilterer{contract: contract}}, nil
  6754  }
  6755  
  6756  // NewMinterAccessCaller creates a new read-only instance of MinterAccess, bound to a specific deployed contract.
  6757  func NewMinterAccessCaller(address common.Address, caller bind.ContractCaller) (*MinterAccessCaller, error) {
  6758  	contract, err := bindMinterAccess(address, caller, nil, nil)
  6759  	if err != nil {
  6760  		return nil, err
  6761  	}
  6762  	return &MinterAccessCaller{contract: contract}, nil
  6763  }
  6764  
  6765  // NewMinterAccessTransactor creates a new write-only instance of MinterAccess, bound to a specific deployed contract.
  6766  func NewMinterAccessTransactor(address common.Address, transactor bind.ContractTransactor) (*MinterAccessTransactor, error) {
  6767  	contract, err := bindMinterAccess(address, nil, transactor, nil)
  6768  	if err != nil {
  6769  		return nil, err
  6770  	}
  6771  	return &MinterAccessTransactor{contract: contract}, nil
  6772  }
  6773  
  6774  // NewMinterAccessFilterer creates a new log filterer instance of MinterAccess, bound to a specific deployed contract.
  6775  func NewMinterAccessFilterer(address common.Address, filterer bind.ContractFilterer) (*MinterAccessFilterer, error) {
  6776  	contract, err := bindMinterAccess(address, nil, nil, filterer)
  6777  	if err != nil {
  6778  		return nil, err
  6779  	}
  6780  	return &MinterAccessFilterer{contract: contract}, nil
  6781  }
  6782  
  6783  // bindMinterAccess binds a generic wrapper to an already deployed contract.
  6784  func bindMinterAccess(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6785  	parsed, err := abi.JSON(strings.NewReader(MinterAccessABI))
  6786  	if err != nil {
  6787  		return nil, err
  6788  	}
  6789  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6790  }
  6791  
  6792  // Call invokes the (constant) contract method with params as input values and
  6793  // sets the output to result. The result type might be a single field for simple
  6794  // returns, a slice of interfaces for anonymous returns and a struct for named
  6795  // returns.
  6796  func (_MinterAccess *MinterAccessRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6797  	return _MinterAccess.Contract.MinterAccessCaller.contract.Call(opts, result, method, params...)
  6798  }
  6799  
  6800  // Transfer initiates a plain transaction to move funds to the contract, calling
  6801  // its default method if one is available.
  6802  func (_MinterAccess *MinterAccessRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6803  	return _MinterAccess.Contract.MinterAccessTransactor.contract.Transfer(opts)
  6804  }
  6805  
  6806  // Transact invokes the (paid) contract method with params as input values.
  6807  func (_MinterAccess *MinterAccessRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6808  	return _MinterAccess.Contract.MinterAccessTransactor.contract.Transact(opts, method, params...)
  6809  }
  6810  
  6811  // Call invokes the (constant) contract method with params as input values and
  6812  // sets the output to result. The result type might be a single field for simple
  6813  // returns, a slice of interfaces for anonymous returns and a struct for named
  6814  // returns.
  6815  func (_MinterAccess *MinterAccessCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6816  	return _MinterAccess.Contract.contract.Call(opts, result, method, params...)
  6817  }
  6818  
  6819  // Transfer initiates a plain transaction to move funds to the contract, calling
  6820  // its default method if one is available.
  6821  func (_MinterAccess *MinterAccessTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6822  	return _MinterAccess.Contract.contract.Transfer(opts)
  6823  }
  6824  
  6825  // Transact invokes the (paid) contract method with params as input values.
  6826  func (_MinterAccess *MinterAccessTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6827  	return _MinterAccess.Contract.contract.Transact(opts, method, params...)
  6828  }
  6829  
  6830  // DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf.
  6831  //
  6832  // Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32)
  6833  func (_MinterAccess *MinterAccessCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) {
  6834  	var out []interface{}
  6835  	err := _MinterAccess.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE")
  6836  
  6837  	if err != nil {
  6838  		return *new([32]byte), err
  6839  	}
  6840  
  6841  	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
  6842  
  6843  	return out0, err
  6844  
  6845  }
  6846  
  6847  // DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf.
  6848  //
  6849  // Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32)
  6850  func (_MinterAccess *MinterAccessSession) DEFAULTADMINROLE() ([32]byte, error) {
  6851  	return _MinterAccess.Contract.DEFAULTADMINROLE(&_MinterAccess.CallOpts)
  6852  }
  6853  
  6854  // DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf.
  6855  //
  6856  // Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32)
  6857  func (_MinterAccess *MinterAccessCallerSession) DEFAULTADMINROLE() ([32]byte, error) {
  6858  	return _MinterAccess.Contract.DEFAULTADMINROLE(&_MinterAccess.CallOpts)
  6859  }
  6860  
  6861  // MINTERROLE is a free data retrieval call binding the contract method 0xd5391393.
  6862  //
  6863  // Solidity: function MINTER_ROLE() view returns(bytes32)
  6864  func (_MinterAccess *MinterAccessCaller) MINTERROLE(opts *bind.CallOpts) ([32]byte, error) {
  6865  	var out []interface{}
  6866  	err := _MinterAccess.contract.Call(opts, &out, "MINTER_ROLE")
  6867  
  6868  	if err != nil {
  6869  		return *new([32]byte), err
  6870  	}
  6871  
  6872  	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
  6873  
  6874  	return out0, err
  6875  
  6876  }
  6877  
  6878  // MINTERROLE is a free data retrieval call binding the contract method 0xd5391393.
  6879  //
  6880  // Solidity: function MINTER_ROLE() view returns(bytes32)
  6881  func (_MinterAccess *MinterAccessSession) MINTERROLE() ([32]byte, error) {
  6882  	return _MinterAccess.Contract.MINTERROLE(&_MinterAccess.CallOpts)
  6883  }
  6884  
  6885  // MINTERROLE is a free data retrieval call binding the contract method 0xd5391393.
  6886  //
  6887  // Solidity: function MINTER_ROLE() view returns(bytes32)
  6888  func (_MinterAccess *MinterAccessCallerSession) MINTERROLE() ([32]byte, error) {
  6889  	return _MinterAccess.Contract.MINTERROLE(&_MinterAccess.CallOpts)
  6890  }
  6891  
  6892  // GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3.
  6893  //
  6894  // Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32)
  6895  func (_MinterAccess *MinterAccessCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) {
  6896  	var out []interface{}
  6897  	err := _MinterAccess.contract.Call(opts, &out, "getRoleAdmin", role)
  6898  
  6899  	if err != nil {
  6900  		return *new([32]byte), err
  6901  	}
  6902  
  6903  	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
  6904  
  6905  	return out0, err
  6906  
  6907  }
  6908  
  6909  // GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3.
  6910  //
  6911  // Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32)
  6912  func (_MinterAccess *MinterAccessSession) GetRoleAdmin(role [32]byte) ([32]byte, error) {
  6913  	return _MinterAccess.Contract.GetRoleAdmin(&_MinterAccess.CallOpts, role)
  6914  }
  6915  
  6916  // GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3.
  6917  //
  6918  // Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32)
  6919  func (_MinterAccess *MinterAccessCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) {
  6920  	return _MinterAccess.Contract.GetRoleAdmin(&_MinterAccess.CallOpts, role)
  6921  }
  6922  
  6923  // GetRoleMember is a free data retrieval call binding the contract method 0x9010d07c.
  6924  //
  6925  // Solidity: function getRoleMember(bytes32 role, uint256 index) view returns(address)
  6926  func (_MinterAccess *MinterAccessCaller) GetRoleMember(opts *bind.CallOpts, role [32]byte, index *big.Int) (common.Address, error) {
  6927  	var out []interface{}
  6928  	err := _MinterAccess.contract.Call(opts, &out, "getRoleMember", role, index)
  6929  
  6930  	if err != nil {
  6931  		return *new(common.Address), err
  6932  	}
  6933  
  6934  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  6935  
  6936  	return out0, err
  6937  
  6938  }
  6939  
  6940  // GetRoleMember is a free data retrieval call binding the contract method 0x9010d07c.
  6941  //
  6942  // Solidity: function getRoleMember(bytes32 role, uint256 index) view returns(address)
  6943  func (_MinterAccess *MinterAccessSession) GetRoleMember(role [32]byte, index *big.Int) (common.Address, error) {
  6944  	return _MinterAccess.Contract.GetRoleMember(&_MinterAccess.CallOpts, role, index)
  6945  }
  6946  
  6947  // GetRoleMember is a free data retrieval call binding the contract method 0x9010d07c.
  6948  //
  6949  // Solidity: function getRoleMember(bytes32 role, uint256 index) view returns(address)
  6950  func (_MinterAccess *MinterAccessCallerSession) GetRoleMember(role [32]byte, index *big.Int) (common.Address, error) {
  6951  	return _MinterAccess.Contract.GetRoleMember(&_MinterAccess.CallOpts, role, index)
  6952  }
  6953  
  6954  // GetRoleMemberCount is a free data retrieval call binding the contract method 0xca15c873.
  6955  //
  6956  // Solidity: function getRoleMemberCount(bytes32 role) view returns(uint256)
  6957  func (_MinterAccess *MinterAccessCaller) GetRoleMemberCount(opts *bind.CallOpts, role [32]byte) (*big.Int, error) {
  6958  	var out []interface{}
  6959  	err := _MinterAccess.contract.Call(opts, &out, "getRoleMemberCount", role)
  6960  
  6961  	if err != nil {
  6962  		return *new(*big.Int), err
  6963  	}
  6964  
  6965  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  6966  
  6967  	return out0, err
  6968  
  6969  }
  6970  
  6971  // GetRoleMemberCount is a free data retrieval call binding the contract method 0xca15c873.
  6972  //
  6973  // Solidity: function getRoleMemberCount(bytes32 role) view returns(uint256)
  6974  func (_MinterAccess *MinterAccessSession) GetRoleMemberCount(role [32]byte) (*big.Int, error) {
  6975  	return _MinterAccess.Contract.GetRoleMemberCount(&_MinterAccess.CallOpts, role)
  6976  }
  6977  
  6978  // GetRoleMemberCount is a free data retrieval call binding the contract method 0xca15c873.
  6979  //
  6980  // Solidity: function getRoleMemberCount(bytes32 role) view returns(uint256)
  6981  func (_MinterAccess *MinterAccessCallerSession) GetRoleMemberCount(role [32]byte) (*big.Int, error) {
  6982  	return _MinterAccess.Contract.GetRoleMemberCount(&_MinterAccess.CallOpts, role)
  6983  }
  6984  
  6985  // HasRole is a free data retrieval call binding the contract method 0x91d14854.
  6986  //
  6987  // Solidity: function hasRole(bytes32 role, address account) view returns(bool)
  6988  func (_MinterAccess *MinterAccessCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) {
  6989  	var out []interface{}
  6990  	err := _MinterAccess.contract.Call(opts, &out, "hasRole", role, account)
  6991  
  6992  	if err != nil {
  6993  		return *new(bool), err
  6994  	}
  6995  
  6996  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  6997  
  6998  	return out0, err
  6999  
  7000  }
  7001  
  7002  // HasRole is a free data retrieval call binding the contract method 0x91d14854.
  7003  //
  7004  // Solidity: function hasRole(bytes32 role, address account) view returns(bool)
  7005  func (_MinterAccess *MinterAccessSession) HasRole(role [32]byte, account common.Address) (bool, error) {
  7006  	return _MinterAccess.Contract.HasRole(&_MinterAccess.CallOpts, role, account)
  7007  }
  7008  
  7009  // HasRole is a free data retrieval call binding the contract method 0x91d14854.
  7010  //
  7011  // Solidity: function hasRole(bytes32 role, address account) view returns(bool)
  7012  func (_MinterAccess *MinterAccessCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) {
  7013  	return _MinterAccess.Contract.HasRole(&_MinterAccess.CallOpts, role, account)
  7014  }
  7015  
  7016  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  7017  //
  7018  // Solidity: function owner() view returns(address)
  7019  func (_MinterAccess *MinterAccessCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  7020  	var out []interface{}
  7021  	err := _MinterAccess.contract.Call(opts, &out, "owner")
  7022  
  7023  	if err != nil {
  7024  		return *new(common.Address), err
  7025  	}
  7026  
  7027  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  7028  
  7029  	return out0, err
  7030  
  7031  }
  7032  
  7033  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  7034  //
  7035  // Solidity: function owner() view returns(address)
  7036  func (_MinterAccess *MinterAccessSession) Owner() (common.Address, error) {
  7037  	return _MinterAccess.Contract.Owner(&_MinterAccess.CallOpts)
  7038  }
  7039  
  7040  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  7041  //
  7042  // Solidity: function owner() view returns(address)
  7043  func (_MinterAccess *MinterAccessCallerSession) Owner() (common.Address, error) {
  7044  	return _MinterAccess.Contract.Owner(&_MinterAccess.CallOpts)
  7045  }
  7046  
  7047  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  7048  //
  7049  // Solidity: function addMinter(address account) returns()
  7050  func (_MinterAccess *MinterAccessTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  7051  	return _MinterAccess.contract.Transact(opts, "addMinter", account)
  7052  }
  7053  
  7054  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  7055  //
  7056  // Solidity: function addMinter(address account) returns()
  7057  func (_MinterAccess *MinterAccessSession) AddMinter(account common.Address) (*types.Transaction, error) {
  7058  	return _MinterAccess.Contract.AddMinter(&_MinterAccess.TransactOpts, account)
  7059  }
  7060  
  7061  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  7062  //
  7063  // Solidity: function addMinter(address account) returns()
  7064  func (_MinterAccess *MinterAccessTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
  7065  	return _MinterAccess.Contract.AddMinter(&_MinterAccess.TransactOpts, account)
  7066  }
  7067  
  7068  // GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d.
  7069  //
  7070  // Solidity: function grantRole(bytes32 role, address account) returns()
  7071  func (_MinterAccess *MinterAccessTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) {
  7072  	return _MinterAccess.contract.Transact(opts, "grantRole", role, account)
  7073  }
  7074  
  7075  // GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d.
  7076  //
  7077  // Solidity: function grantRole(bytes32 role, address account) returns()
  7078  func (_MinterAccess *MinterAccessSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) {
  7079  	return _MinterAccess.Contract.GrantRole(&_MinterAccess.TransactOpts, role, account)
  7080  }
  7081  
  7082  // GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d.
  7083  //
  7084  // Solidity: function grantRole(bytes32 role, address account) returns()
  7085  func (_MinterAccess *MinterAccessTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) {
  7086  	return _MinterAccess.Contract.GrantRole(&_MinterAccess.TransactOpts, role, account)
  7087  }
  7088  
  7089  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
  7090  //
  7091  // Solidity: function renounceMinter(address account) returns()
  7092  func (_MinterAccess *MinterAccessTransactor) RenounceMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  7093  	return _MinterAccess.contract.Transact(opts, "renounceMinter", account)
  7094  }
  7095  
  7096  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
  7097  //
  7098  // Solidity: function renounceMinter(address account) returns()
  7099  func (_MinterAccess *MinterAccessSession) RenounceMinter(account common.Address) (*types.Transaction, error) {
  7100  	return _MinterAccess.Contract.RenounceMinter(&_MinterAccess.TransactOpts, account)
  7101  }
  7102  
  7103  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
  7104  //
  7105  // Solidity: function renounceMinter(address account) returns()
  7106  func (_MinterAccess *MinterAccessTransactorSession) RenounceMinter(account common.Address) (*types.Transaction, error) {
  7107  	return _MinterAccess.Contract.RenounceMinter(&_MinterAccess.TransactOpts, account)
  7108  }
  7109  
  7110  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7111  //
  7112  // Solidity: function renounceOwnership() returns()
  7113  func (_MinterAccess *MinterAccessTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  7114  	return _MinterAccess.contract.Transact(opts, "renounceOwnership")
  7115  }
  7116  
  7117  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7118  //
  7119  // Solidity: function renounceOwnership() returns()
  7120  func (_MinterAccess *MinterAccessSession) RenounceOwnership() (*types.Transaction, error) {
  7121  	return _MinterAccess.Contract.RenounceOwnership(&_MinterAccess.TransactOpts)
  7122  }
  7123  
  7124  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7125  //
  7126  // Solidity: function renounceOwnership() returns()
  7127  func (_MinterAccess *MinterAccessTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  7128  	return _MinterAccess.Contract.RenounceOwnership(&_MinterAccess.TransactOpts)
  7129  }
  7130  
  7131  // RenounceRole is a paid mutator transaction binding the contract method 0x36568abe.
  7132  //
  7133  // Solidity: function renounceRole(bytes32 role, address account) returns()
  7134  func (_MinterAccess *MinterAccessTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) {
  7135  	return _MinterAccess.contract.Transact(opts, "renounceRole", role, account)
  7136  }
  7137  
  7138  // RenounceRole is a paid mutator transaction binding the contract method 0x36568abe.
  7139  //
  7140  // Solidity: function renounceRole(bytes32 role, address account) returns()
  7141  func (_MinterAccess *MinterAccessSession) RenounceRole(role [32]byte, account common.Address) (*types.Transaction, error) {
  7142  	return _MinterAccess.Contract.RenounceRole(&_MinterAccess.TransactOpts, role, account)
  7143  }
  7144  
  7145  // RenounceRole is a paid mutator transaction binding the contract method 0x36568abe.
  7146  //
  7147  // Solidity: function renounceRole(bytes32 role, address account) returns()
  7148  func (_MinterAccess *MinterAccessTransactorSession) RenounceRole(role [32]byte, account common.Address) (*types.Transaction, error) {
  7149  	return _MinterAccess.Contract.RenounceRole(&_MinterAccess.TransactOpts, role, account)
  7150  }
  7151  
  7152  // RevokeMinter is a paid mutator transaction binding the contract method 0xcfbd4885.
  7153  //
  7154  // Solidity: function revokeMinter(address account) returns()
  7155  func (_MinterAccess *MinterAccessTransactor) RevokeMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  7156  	return _MinterAccess.contract.Transact(opts, "revokeMinter", account)
  7157  }
  7158  
  7159  // RevokeMinter is a paid mutator transaction binding the contract method 0xcfbd4885.
  7160  //
  7161  // Solidity: function revokeMinter(address account) returns()
  7162  func (_MinterAccess *MinterAccessSession) RevokeMinter(account common.Address) (*types.Transaction, error) {
  7163  	return _MinterAccess.Contract.RevokeMinter(&_MinterAccess.TransactOpts, account)
  7164  }
  7165  
  7166  // RevokeMinter is a paid mutator transaction binding the contract method 0xcfbd4885.
  7167  //
  7168  // Solidity: function revokeMinter(address account) returns()
  7169  func (_MinterAccess *MinterAccessTransactorSession) RevokeMinter(account common.Address) (*types.Transaction, error) {
  7170  	return _MinterAccess.Contract.RevokeMinter(&_MinterAccess.TransactOpts, account)
  7171  }
  7172  
  7173  // RevokeRole is a paid mutator transaction binding the contract method 0xd547741f.
  7174  //
  7175  // Solidity: function revokeRole(bytes32 role, address account) returns()
  7176  func (_MinterAccess *MinterAccessTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) {
  7177  	return _MinterAccess.contract.Transact(opts, "revokeRole", role, account)
  7178  }
  7179  
  7180  // RevokeRole is a paid mutator transaction binding the contract method 0xd547741f.
  7181  //
  7182  // Solidity: function revokeRole(bytes32 role, address account) returns()
  7183  func (_MinterAccess *MinterAccessSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) {
  7184  	return _MinterAccess.Contract.RevokeRole(&_MinterAccess.TransactOpts, role, account)
  7185  }
  7186  
  7187  // RevokeRole is a paid mutator transaction binding the contract method 0xd547741f.
  7188  //
  7189  // Solidity: function revokeRole(bytes32 role, address account) returns()
  7190  func (_MinterAccess *MinterAccessTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) {
  7191  	return _MinterAccess.Contract.RevokeRole(&_MinterAccess.TransactOpts, role, account)
  7192  }
  7193  
  7194  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7195  //
  7196  // Solidity: function transferOwnership(address newOwner) returns()
  7197  func (_MinterAccess *MinterAccessTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  7198  	return _MinterAccess.contract.Transact(opts, "transferOwnership", newOwner)
  7199  }
  7200  
  7201  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7202  //
  7203  // Solidity: function transferOwnership(address newOwner) returns()
  7204  func (_MinterAccess *MinterAccessSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  7205  	return _MinterAccess.Contract.TransferOwnership(&_MinterAccess.TransactOpts, newOwner)
  7206  }
  7207  
  7208  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7209  //
  7210  // Solidity: function transferOwnership(address newOwner) returns()
  7211  func (_MinterAccess *MinterAccessTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  7212  	return _MinterAccess.Contract.TransferOwnership(&_MinterAccess.TransactOpts, newOwner)
  7213  }
  7214  
  7215  // MinterAccessOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the MinterAccess contract.
  7216  type MinterAccessOwnershipTransferredIterator struct {
  7217  	Event *MinterAccessOwnershipTransferred // Event containing the contract specifics and raw log
  7218  
  7219  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7220  	event    string              // Event name to use for unpacking event data
  7221  
  7222  	logs chan types.Log        // Log channel receiving the found contract events
  7223  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  7224  	done bool                  // Whether the subscription completed delivering logs
  7225  	fail error                 // Occurred error to stop iteration
  7226  }
  7227  
  7228  // Next advances the iterator to the subsequent event, returning whether there
  7229  // are any more events found. In case of a retrieval or parsing error, false is
  7230  // returned and Error() can be queried for the exact failure.
  7231  func (it *MinterAccessOwnershipTransferredIterator) Next() bool {
  7232  	// If the iterator failed, stop iterating
  7233  	if it.fail != nil {
  7234  		return false
  7235  	}
  7236  	// If the iterator completed, deliver directly whatever's available
  7237  	if it.done {
  7238  		select {
  7239  		case log := <-it.logs:
  7240  			it.Event = new(MinterAccessOwnershipTransferred)
  7241  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7242  				it.fail = err
  7243  				return false
  7244  			}
  7245  			it.Event.Raw = log
  7246  			return true
  7247  
  7248  		default:
  7249  			return false
  7250  		}
  7251  	}
  7252  	// Iterator still in progress, wait for either a data or an error event
  7253  	select {
  7254  	case log := <-it.logs:
  7255  		it.Event = new(MinterAccessOwnershipTransferred)
  7256  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7257  			it.fail = err
  7258  			return false
  7259  		}
  7260  		it.Event.Raw = log
  7261  		return true
  7262  
  7263  	case err := <-it.sub.Err():
  7264  		it.done = true
  7265  		it.fail = err
  7266  		return it.Next()
  7267  	}
  7268  }
  7269  
  7270  // Error returns any retrieval or parsing error occurred during filtering.
  7271  func (it *MinterAccessOwnershipTransferredIterator) Error() error {
  7272  	return it.fail
  7273  }
  7274  
  7275  // Close terminates the iteration process, releasing any pending underlying
  7276  // resources.
  7277  func (it *MinterAccessOwnershipTransferredIterator) Close() error {
  7278  	it.sub.Unsubscribe()
  7279  	return nil
  7280  }
  7281  
  7282  // MinterAccessOwnershipTransferred represents a OwnershipTransferred event raised by the MinterAccess contract.
  7283  type MinterAccessOwnershipTransferred struct {
  7284  	PreviousOwner common.Address
  7285  	NewOwner      common.Address
  7286  	Raw           types.Log // Blockchain specific contextual infos
  7287  }
  7288  
  7289  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  7290  //
  7291  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  7292  func (_MinterAccess *MinterAccessFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*MinterAccessOwnershipTransferredIterator, error) {
  7293  
  7294  	var previousOwnerRule []interface{}
  7295  	for _, previousOwnerItem := range previousOwner {
  7296  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  7297  	}
  7298  	var newOwnerRule []interface{}
  7299  	for _, newOwnerItem := range newOwner {
  7300  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  7301  	}
  7302  
  7303  	logs, sub, err := _MinterAccess.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  7304  	if err != nil {
  7305  		return nil, err
  7306  	}
  7307  	return &MinterAccessOwnershipTransferredIterator{contract: _MinterAccess.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  7308  }
  7309  
  7310  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  7311  //
  7312  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  7313  func (_MinterAccess *MinterAccessFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *MinterAccessOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  7314  
  7315  	var previousOwnerRule []interface{}
  7316  	for _, previousOwnerItem := range previousOwner {
  7317  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  7318  	}
  7319  	var newOwnerRule []interface{}
  7320  	for _, newOwnerItem := range newOwner {
  7321  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  7322  	}
  7323  
  7324  	logs, sub, err := _MinterAccess.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  7325  	if err != nil {
  7326  		return nil, err
  7327  	}
  7328  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7329  		defer sub.Unsubscribe()
  7330  		for {
  7331  			select {
  7332  			case log := <-logs:
  7333  				// New log arrived, parse the event and forward to the user
  7334  				event := new(MinterAccessOwnershipTransferred)
  7335  				if err := _MinterAccess.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  7336  					return err
  7337  				}
  7338  				event.Raw = log
  7339  
  7340  				select {
  7341  				case sink <- event:
  7342  				case err := <-sub.Err():
  7343  					return err
  7344  				case <-quit:
  7345  					return nil
  7346  				}
  7347  			case err := <-sub.Err():
  7348  				return err
  7349  			case <-quit:
  7350  				return nil
  7351  			}
  7352  		}
  7353  	}), nil
  7354  }
  7355  
  7356  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  7357  //
  7358  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  7359  func (_MinterAccess *MinterAccessFilterer) ParseOwnershipTransferred(log types.Log) (*MinterAccessOwnershipTransferred, error) {
  7360  	event := new(MinterAccessOwnershipTransferred)
  7361  	if err := _MinterAccess.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  7362  		return nil, err
  7363  	}
  7364  	event.Raw = log
  7365  	return event, nil
  7366  }
  7367  
  7368  // MinterAccessRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the MinterAccess contract.
  7369  type MinterAccessRoleGrantedIterator struct {
  7370  	Event *MinterAccessRoleGranted // Event containing the contract specifics and raw log
  7371  
  7372  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7373  	event    string              // Event name to use for unpacking event data
  7374  
  7375  	logs chan types.Log        // Log channel receiving the found contract events
  7376  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  7377  	done bool                  // Whether the subscription completed delivering logs
  7378  	fail error                 // Occurred error to stop iteration
  7379  }
  7380  
  7381  // Next advances the iterator to the subsequent event, returning whether there
  7382  // are any more events found. In case of a retrieval or parsing error, false is
  7383  // returned and Error() can be queried for the exact failure.
  7384  func (it *MinterAccessRoleGrantedIterator) Next() bool {
  7385  	// If the iterator failed, stop iterating
  7386  	if it.fail != nil {
  7387  		return false
  7388  	}
  7389  	// If the iterator completed, deliver directly whatever's available
  7390  	if it.done {
  7391  		select {
  7392  		case log := <-it.logs:
  7393  			it.Event = new(MinterAccessRoleGranted)
  7394  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7395  				it.fail = err
  7396  				return false
  7397  			}
  7398  			it.Event.Raw = log
  7399  			return true
  7400  
  7401  		default:
  7402  			return false
  7403  		}
  7404  	}
  7405  	// Iterator still in progress, wait for either a data or an error event
  7406  	select {
  7407  	case log := <-it.logs:
  7408  		it.Event = new(MinterAccessRoleGranted)
  7409  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7410  			it.fail = err
  7411  			return false
  7412  		}
  7413  		it.Event.Raw = log
  7414  		return true
  7415  
  7416  	case err := <-it.sub.Err():
  7417  		it.done = true
  7418  		it.fail = err
  7419  		return it.Next()
  7420  	}
  7421  }
  7422  
  7423  // Error returns any retrieval or parsing error occurred during filtering.
  7424  func (it *MinterAccessRoleGrantedIterator) Error() error {
  7425  	return it.fail
  7426  }
  7427  
  7428  // Close terminates the iteration process, releasing any pending underlying
  7429  // resources.
  7430  func (it *MinterAccessRoleGrantedIterator) Close() error {
  7431  	it.sub.Unsubscribe()
  7432  	return nil
  7433  }
  7434  
  7435  // MinterAccessRoleGranted represents a RoleGranted event raised by the MinterAccess contract.
  7436  type MinterAccessRoleGranted struct {
  7437  	Role    [32]byte
  7438  	Account common.Address
  7439  	Sender  common.Address
  7440  	Raw     types.Log // Blockchain specific contextual infos
  7441  }
  7442  
  7443  // FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d.
  7444  //
  7445  // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
  7446  func (_MinterAccess *MinterAccessFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*MinterAccessRoleGrantedIterator, error) {
  7447  
  7448  	var roleRule []interface{}
  7449  	for _, roleItem := range role {
  7450  		roleRule = append(roleRule, roleItem)
  7451  	}
  7452  	var accountRule []interface{}
  7453  	for _, accountItem := range account {
  7454  		accountRule = append(accountRule, accountItem)
  7455  	}
  7456  	var senderRule []interface{}
  7457  	for _, senderItem := range sender {
  7458  		senderRule = append(senderRule, senderItem)
  7459  	}
  7460  
  7461  	logs, sub, err := _MinterAccess.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule)
  7462  	if err != nil {
  7463  		return nil, err
  7464  	}
  7465  	return &MinterAccessRoleGrantedIterator{contract: _MinterAccess.contract, event: "RoleGranted", logs: logs, sub: sub}, nil
  7466  }
  7467  
  7468  // WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d.
  7469  //
  7470  // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
  7471  func (_MinterAccess *MinterAccessFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *MinterAccessRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) {
  7472  
  7473  	var roleRule []interface{}
  7474  	for _, roleItem := range role {
  7475  		roleRule = append(roleRule, roleItem)
  7476  	}
  7477  	var accountRule []interface{}
  7478  	for _, accountItem := range account {
  7479  		accountRule = append(accountRule, accountItem)
  7480  	}
  7481  	var senderRule []interface{}
  7482  	for _, senderItem := range sender {
  7483  		senderRule = append(senderRule, senderItem)
  7484  	}
  7485  
  7486  	logs, sub, err := _MinterAccess.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule)
  7487  	if err != nil {
  7488  		return nil, err
  7489  	}
  7490  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7491  		defer sub.Unsubscribe()
  7492  		for {
  7493  			select {
  7494  			case log := <-logs:
  7495  				// New log arrived, parse the event and forward to the user
  7496  				event := new(MinterAccessRoleGranted)
  7497  				if err := _MinterAccess.contract.UnpackLog(event, "RoleGranted", log); err != nil {
  7498  					return err
  7499  				}
  7500  				event.Raw = log
  7501  
  7502  				select {
  7503  				case sink <- event:
  7504  				case err := <-sub.Err():
  7505  					return err
  7506  				case <-quit:
  7507  					return nil
  7508  				}
  7509  			case err := <-sub.Err():
  7510  				return err
  7511  			case <-quit:
  7512  				return nil
  7513  			}
  7514  		}
  7515  	}), nil
  7516  }
  7517  
  7518  // ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d.
  7519  //
  7520  // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
  7521  func (_MinterAccess *MinterAccessFilterer) ParseRoleGranted(log types.Log) (*MinterAccessRoleGranted, error) {
  7522  	event := new(MinterAccessRoleGranted)
  7523  	if err := _MinterAccess.contract.UnpackLog(event, "RoleGranted", log); err != nil {
  7524  		return nil, err
  7525  	}
  7526  	event.Raw = log
  7527  	return event, nil
  7528  }
  7529  
  7530  // MinterAccessRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the MinterAccess contract.
  7531  type MinterAccessRoleRevokedIterator struct {
  7532  	Event *MinterAccessRoleRevoked // Event containing the contract specifics and raw log
  7533  
  7534  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7535  	event    string              // Event name to use for unpacking event data
  7536  
  7537  	logs chan types.Log        // Log channel receiving the found contract events
  7538  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  7539  	done bool                  // Whether the subscription completed delivering logs
  7540  	fail error                 // Occurred error to stop iteration
  7541  }
  7542  
  7543  // Next advances the iterator to the subsequent event, returning whether there
  7544  // are any more events found. In case of a retrieval or parsing error, false is
  7545  // returned and Error() can be queried for the exact failure.
  7546  func (it *MinterAccessRoleRevokedIterator) Next() bool {
  7547  	// If the iterator failed, stop iterating
  7548  	if it.fail != nil {
  7549  		return false
  7550  	}
  7551  	// If the iterator completed, deliver directly whatever's available
  7552  	if it.done {
  7553  		select {
  7554  		case log := <-it.logs:
  7555  			it.Event = new(MinterAccessRoleRevoked)
  7556  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7557  				it.fail = err
  7558  				return false
  7559  			}
  7560  			it.Event.Raw = log
  7561  			return true
  7562  
  7563  		default:
  7564  			return false
  7565  		}
  7566  	}
  7567  	// Iterator still in progress, wait for either a data or an error event
  7568  	select {
  7569  	case log := <-it.logs:
  7570  		it.Event = new(MinterAccessRoleRevoked)
  7571  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7572  			it.fail = err
  7573  			return false
  7574  		}
  7575  		it.Event.Raw = log
  7576  		return true
  7577  
  7578  	case err := <-it.sub.Err():
  7579  		it.done = true
  7580  		it.fail = err
  7581  		return it.Next()
  7582  	}
  7583  }
  7584  
  7585  // Error returns any retrieval or parsing error occurred during filtering.
  7586  func (it *MinterAccessRoleRevokedIterator) Error() error {
  7587  	return it.fail
  7588  }
  7589  
  7590  // Close terminates the iteration process, releasing any pending underlying
  7591  // resources.
  7592  func (it *MinterAccessRoleRevokedIterator) Close() error {
  7593  	it.sub.Unsubscribe()
  7594  	return nil
  7595  }
  7596  
  7597  // MinterAccessRoleRevoked represents a RoleRevoked event raised by the MinterAccess contract.
  7598  type MinterAccessRoleRevoked struct {
  7599  	Role    [32]byte
  7600  	Account common.Address
  7601  	Sender  common.Address
  7602  	Raw     types.Log // Blockchain specific contextual infos
  7603  }
  7604  
  7605  // FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b.
  7606  //
  7607  // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
  7608  func (_MinterAccess *MinterAccessFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*MinterAccessRoleRevokedIterator, error) {
  7609  
  7610  	var roleRule []interface{}
  7611  	for _, roleItem := range role {
  7612  		roleRule = append(roleRule, roleItem)
  7613  	}
  7614  	var accountRule []interface{}
  7615  	for _, accountItem := range account {
  7616  		accountRule = append(accountRule, accountItem)
  7617  	}
  7618  	var senderRule []interface{}
  7619  	for _, senderItem := range sender {
  7620  		senderRule = append(senderRule, senderItem)
  7621  	}
  7622  
  7623  	logs, sub, err := _MinterAccess.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule)
  7624  	if err != nil {
  7625  		return nil, err
  7626  	}
  7627  	return &MinterAccessRoleRevokedIterator{contract: _MinterAccess.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil
  7628  }
  7629  
  7630  // WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b.
  7631  //
  7632  // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
  7633  func (_MinterAccess *MinterAccessFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *MinterAccessRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) {
  7634  
  7635  	var roleRule []interface{}
  7636  	for _, roleItem := range role {
  7637  		roleRule = append(roleRule, roleItem)
  7638  	}
  7639  	var accountRule []interface{}
  7640  	for _, accountItem := range account {
  7641  		accountRule = append(accountRule, accountItem)
  7642  	}
  7643  	var senderRule []interface{}
  7644  	for _, senderItem := range sender {
  7645  		senderRule = append(senderRule, senderItem)
  7646  	}
  7647  
  7648  	logs, sub, err := _MinterAccess.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule)
  7649  	if err != nil {
  7650  		return nil, err
  7651  	}
  7652  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7653  		defer sub.Unsubscribe()
  7654  		for {
  7655  			select {
  7656  			case log := <-logs:
  7657  				// New log arrived, parse the event and forward to the user
  7658  				event := new(MinterAccessRoleRevoked)
  7659  				if err := _MinterAccess.contract.UnpackLog(event, "RoleRevoked", log); err != nil {
  7660  					return err
  7661  				}
  7662  				event.Raw = log
  7663  
  7664  				select {
  7665  				case sink <- event:
  7666  				case err := <-sub.Err():
  7667  					return err
  7668  				case <-quit:
  7669  					return nil
  7670  				}
  7671  			case err := <-sub.Err():
  7672  				return err
  7673  			case <-quit:
  7674  				return nil
  7675  			}
  7676  		}
  7677  	}), nil
  7678  }
  7679  
  7680  // ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b.
  7681  //
  7682  // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
  7683  func (_MinterAccess *MinterAccessFilterer) ParseRoleRevoked(log types.Log) (*MinterAccessRoleRevoked, error) {
  7684  	event := new(MinterAccessRoleRevoked)
  7685  	if err := _MinterAccess.contract.UnpackLog(event, "RoleRevoked", log); err != nil {
  7686  		return nil, err
  7687  	}
  7688  	event.Raw = log
  7689  	return event, nil
  7690  }
  7691  
  7692  // NFTClientABI is the input ABI used to generate the binding from.
  7693  const NFTClientABI = "[{\"inputs\":[],\"name\":\"interfaceIdERC721\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_candidate\",\"type\":\"address\"}],\"name\":\"requireERC721\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_nftContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"page\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"rows\",\"type\":\"uint8\"}],\"name\":\"tokensOfOwner\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]"
  7694  
  7695  // NFTClientFuncSigs maps the 4-byte function signature to its string representation.
  7696  var NFTClientFuncSigs = map[string]string{
  7697  	"40edd555": "interfaceIdERC721()",
  7698  	"0b1a6d6a": "requireERC721(address)",
  7699  	"36b7a69c": "tokensOfOwner(address,address,uint8,uint8)",
  7700  	"dc800b0d": "transferAll(IERC721Enumerable,address,address)",
  7701  	"40125765": "transferTokens(IERC721Enumerable,address,address,uint256[])",
  7702  }
  7703  
  7704  // NFTClientBin is the compiled bytecode used for deploying new contracts.
  7705  var NFTClientBin = "0x6107bf610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100615760003560e01c80630b1a6d6a1461006657806336b7a69c1461008e578063401257651461011f57806340edd555146101f0578063dc800b0d14610215575b600080fd5b61008c6004803603602081101561007c57600080fd5b50356001600160a01b031661025a565b005b6100cf600480360360808110156100a457600080fd5b506001600160a01b03813581169160208101359091169060ff6040820135811691606001351661031a565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561010b5781810151838201526020016100f3565b505050509050019250505060405180910390f35b81801561012b57600080fd5b5061008c6004803603608081101561014257600080fd5b6001600160a01b038235811692602081013582169260408201359092169181019060808101606082013564010000000081111561017e57600080fd5b82018360208201111561019057600080fd5b803590602001918460208302840111640100000000831117156101b257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506104d6945050505050565b6101f86105bb565b604080516001600160e01b03199092168252519081900360200190f35b81801561022157600080fd5b5061008c6004803603606081101561023857600080fd5b506001600160a01b0381358116916020810135821691604090910135166105c6565b604080516301ffc9a760e01b81526380ac58cd60e01b600482015290516001600160a01b038316916301ffc9a7916024808301926020929190829003018186803b1580156102a757600080fd5b505afa1580156102bb573d6000803e3d6000fd5b505050506040513d60208110156102d157600080fd5b5051610317576040805162461bcd60e51b815260206004820152601060248201526f24a9afa727aa2f9b9918afaa27a5a2a760811b604482015290519081900360640190fd5b50565b60606103258561025a565b60008590506000816001600160a01b03166370a08231876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561038257600080fd5b505afa158015610396573d6000803e3d6000fd5b505050506040513d60208110156103ac57600080fd5b5051905060ff8585021660008282116103d3576103ce8284038760ff16610771565b6103d6565b60005b905060608167ffffffffffffffff811180156103f157600080fd5b5060405190808252806020026020018201604052801561041b578160200160208202803683370190505b50905060005b828110156104c85760408051632f745c5960e01b81526001600160a01b038c811660048301528684016024830152915191881691632f745c5991604480820192602092909190829003018186803b15801561047b57600080fd5b505afa15801561048f573d6000803e3d6000fd5b505050506040513d60208110156104a557600080fd5b505182518390839081106104b557fe5b6020908102919091010152600101610421565b509998505050505050505050565b60005b81518110156105b4578181815181106104ee57fe5b602002602001015160001415610503576105b4565b846001600160a01b03166342842e0e858585858151811061052057fe5b60200260200101516040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b031681526020018281526020019350505050600060405180830381600087803b15801561059057600080fd5b505af11580156105a4573d6000803e3d6000fd5b5050600190920191506104d99050565b5050505050565b6380ac58cd60e01b81565b6000836001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561061e57600080fd5b505afa158015610632573d6000803e3d6000fd5b505050506040513d602081101561064857600080fd5b505190505b801561076b57836001600160a01b03166342842e0e8484876001600160a01b0316632f745c5988600188036040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018281526020019250505060206040518083038186803b1580156106c557600080fd5b505afa1580156106d9573d6000803e3d6000fd5b505050506040513d60208110156106ef57600080fd5b5051604080516001600160e01b031960e087901b1681526001600160a01b03948516600482015292909316602483015260448201529051606480830192600092919082900301818387803b15801561074657600080fd5b505af115801561075a573d6000803e3d6000fd5b5050600019909201915061064d9050565b50505050565b60008183116107805782610782565b815b939250505056fea2646970667358221220defc145e0d95c16cbb428654ff8a62e070053292ddea66244b14d28eb036ab7864736f6c63430006060033"
  7706  
  7707  // DeployNFTClient deploys a new Ethereum contract, binding an instance of NFTClient to it.
  7708  func DeployNFTClient(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *NFTClient, error) {
  7709  	parsed, err := abi.JSON(strings.NewReader(NFTClientABI))
  7710  	if err != nil {
  7711  		return common.Address{}, nil, nil, err
  7712  	}
  7713  
  7714  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(NFTClientBin), backend)
  7715  	if err != nil {
  7716  		return common.Address{}, nil, nil, err
  7717  	}
  7718  	return address, tx, &NFTClient{NFTClientCaller: NFTClientCaller{contract: contract}, NFTClientTransactor: NFTClientTransactor{contract: contract}, NFTClientFilterer: NFTClientFilterer{contract: contract}}, nil
  7719  }
  7720  
  7721  // NFTClient is an auto generated Go binding around an Ethereum contract.
  7722  type NFTClient struct {
  7723  	NFTClientCaller     // Read-only binding to the contract
  7724  	NFTClientTransactor // Write-only binding to the contract
  7725  	NFTClientFilterer   // Log filterer for contract events
  7726  }
  7727  
  7728  // NFTClientCaller is an auto generated read-only Go binding around an Ethereum contract.
  7729  type NFTClientCaller struct {
  7730  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7731  }
  7732  
  7733  // NFTClientTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7734  type NFTClientTransactor struct {
  7735  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7736  }
  7737  
  7738  // NFTClientFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7739  type NFTClientFilterer struct {
  7740  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7741  }
  7742  
  7743  // NFTClientSession is an auto generated Go binding around an Ethereum contract,
  7744  // with pre-set call and transact options.
  7745  type NFTClientSession struct {
  7746  	Contract     *NFTClient        // Generic contract binding to set the session for
  7747  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7748  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7749  }
  7750  
  7751  // NFTClientCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7752  // with pre-set call options.
  7753  type NFTClientCallerSession struct {
  7754  	Contract *NFTClientCaller // Generic contract caller binding to set the session for
  7755  	CallOpts bind.CallOpts    // Call options to use throughout this session
  7756  }
  7757  
  7758  // NFTClientTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7759  // with pre-set transact options.
  7760  type NFTClientTransactorSession struct {
  7761  	Contract     *NFTClientTransactor // Generic contract transactor binding to set the session for
  7762  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
  7763  }
  7764  
  7765  // NFTClientRaw is an auto generated low-level Go binding around an Ethereum contract.
  7766  type NFTClientRaw struct {
  7767  	Contract *NFTClient // Generic contract binding to access the raw methods on
  7768  }
  7769  
  7770  // NFTClientCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7771  type NFTClientCallerRaw struct {
  7772  	Contract *NFTClientCaller // Generic read-only contract binding to access the raw methods on
  7773  }
  7774  
  7775  // NFTClientTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  7776  type NFTClientTransactorRaw struct {
  7777  	Contract *NFTClientTransactor // Generic write-only contract binding to access the raw methods on
  7778  }
  7779  
  7780  // NewNFTClient creates a new instance of NFTClient, bound to a specific deployed contract.
  7781  func NewNFTClient(address common.Address, backend bind.ContractBackend) (*NFTClient, error) {
  7782  	contract, err := bindNFTClient(address, backend, backend, backend)
  7783  	if err != nil {
  7784  		return nil, err
  7785  	}
  7786  	return &NFTClient{NFTClientCaller: NFTClientCaller{contract: contract}, NFTClientTransactor: NFTClientTransactor{contract: contract}, NFTClientFilterer: NFTClientFilterer{contract: contract}}, nil
  7787  }
  7788  
  7789  // NewNFTClientCaller creates a new read-only instance of NFTClient, bound to a specific deployed contract.
  7790  func NewNFTClientCaller(address common.Address, caller bind.ContractCaller) (*NFTClientCaller, error) {
  7791  	contract, err := bindNFTClient(address, caller, nil, nil)
  7792  	if err != nil {
  7793  		return nil, err
  7794  	}
  7795  	return &NFTClientCaller{contract: contract}, nil
  7796  }
  7797  
  7798  // NewNFTClientTransactor creates a new write-only instance of NFTClient, bound to a specific deployed contract.
  7799  func NewNFTClientTransactor(address common.Address, transactor bind.ContractTransactor) (*NFTClientTransactor, error) {
  7800  	contract, err := bindNFTClient(address, nil, transactor, nil)
  7801  	if err != nil {
  7802  		return nil, err
  7803  	}
  7804  	return &NFTClientTransactor{contract: contract}, nil
  7805  }
  7806  
  7807  // NewNFTClientFilterer creates a new log filterer instance of NFTClient, bound to a specific deployed contract.
  7808  func NewNFTClientFilterer(address common.Address, filterer bind.ContractFilterer) (*NFTClientFilterer, error) {
  7809  	contract, err := bindNFTClient(address, nil, nil, filterer)
  7810  	if err != nil {
  7811  		return nil, err
  7812  	}
  7813  	return &NFTClientFilterer{contract: contract}, nil
  7814  }
  7815  
  7816  // bindNFTClient binds a generic wrapper to an already deployed contract.
  7817  func bindNFTClient(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7818  	parsed, err := abi.JSON(strings.NewReader(NFTClientABI))
  7819  	if err != nil {
  7820  		return nil, err
  7821  	}
  7822  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7823  }
  7824  
  7825  // Call invokes the (constant) contract method with params as input values and
  7826  // sets the output to result. The result type might be a single field for simple
  7827  // returns, a slice of interfaces for anonymous returns and a struct for named
  7828  // returns.
  7829  func (_NFTClient *NFTClientRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7830  	return _NFTClient.Contract.NFTClientCaller.contract.Call(opts, result, method, params...)
  7831  }
  7832  
  7833  // Transfer initiates a plain transaction to move funds to the contract, calling
  7834  // its default method if one is available.
  7835  func (_NFTClient *NFTClientRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7836  	return _NFTClient.Contract.NFTClientTransactor.contract.Transfer(opts)
  7837  }
  7838  
  7839  // Transact invokes the (paid) contract method with params as input values.
  7840  func (_NFTClient *NFTClientRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7841  	return _NFTClient.Contract.NFTClientTransactor.contract.Transact(opts, method, params...)
  7842  }
  7843  
  7844  // Call invokes the (constant) contract method with params as input values and
  7845  // sets the output to result. The result type might be a single field for simple
  7846  // returns, a slice of interfaces for anonymous returns and a struct for named
  7847  // returns.
  7848  func (_NFTClient *NFTClientCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  7849  	return _NFTClient.Contract.contract.Call(opts, result, method, params...)
  7850  }
  7851  
  7852  // Transfer initiates a plain transaction to move funds to the contract, calling
  7853  // its default method if one is available.
  7854  func (_NFTClient *NFTClientTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7855  	return _NFTClient.Contract.contract.Transfer(opts)
  7856  }
  7857  
  7858  // Transact invokes the (paid) contract method with params as input values.
  7859  func (_NFTClient *NFTClientTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7860  	return _NFTClient.Contract.contract.Transact(opts, method, params...)
  7861  }
  7862  
  7863  // InterfaceIdERC721 is a free data retrieval call binding the contract method 0x40edd555.
  7864  //
  7865  // Solidity: function interfaceIdERC721() view returns(bytes4)
  7866  func (_NFTClient *NFTClientCaller) InterfaceIdERC721(opts *bind.CallOpts) ([4]byte, error) {
  7867  	var out []interface{}
  7868  	err := _NFTClient.contract.Call(opts, &out, "interfaceIdERC721")
  7869  
  7870  	if err != nil {
  7871  		return *new([4]byte), err
  7872  	}
  7873  
  7874  	out0 := *abi.ConvertType(out[0], new([4]byte)).(*[4]byte)
  7875  
  7876  	return out0, err
  7877  
  7878  }
  7879  
  7880  // InterfaceIdERC721 is a free data retrieval call binding the contract method 0x40edd555.
  7881  //
  7882  // Solidity: function interfaceIdERC721() view returns(bytes4)
  7883  func (_NFTClient *NFTClientSession) InterfaceIdERC721() ([4]byte, error) {
  7884  	return _NFTClient.Contract.InterfaceIdERC721(&_NFTClient.CallOpts)
  7885  }
  7886  
  7887  // InterfaceIdERC721 is a free data retrieval call binding the contract method 0x40edd555.
  7888  //
  7889  // Solidity: function interfaceIdERC721() view returns(bytes4)
  7890  func (_NFTClient *NFTClientCallerSession) InterfaceIdERC721() ([4]byte, error) {
  7891  	return _NFTClient.Contract.InterfaceIdERC721(&_NFTClient.CallOpts)
  7892  }
  7893  
  7894  // RequireERC721 is a free data retrieval call binding the contract method 0x0b1a6d6a.
  7895  //
  7896  // Solidity: function requireERC721(address _candidate) view returns()
  7897  func (_NFTClient *NFTClientCaller) RequireERC721(opts *bind.CallOpts, _candidate common.Address) error {
  7898  	var out []interface{}
  7899  	err := _NFTClient.contract.Call(opts, &out, "requireERC721", _candidate)
  7900  
  7901  	if err != nil {
  7902  		return err
  7903  	}
  7904  
  7905  	return err
  7906  
  7907  }
  7908  
  7909  // RequireERC721 is a free data retrieval call binding the contract method 0x0b1a6d6a.
  7910  //
  7911  // Solidity: function requireERC721(address _candidate) view returns()
  7912  func (_NFTClient *NFTClientSession) RequireERC721(_candidate common.Address) error {
  7913  	return _NFTClient.Contract.RequireERC721(&_NFTClient.CallOpts, _candidate)
  7914  }
  7915  
  7916  // RequireERC721 is a free data retrieval call binding the contract method 0x0b1a6d6a.
  7917  //
  7918  // Solidity: function requireERC721(address _candidate) view returns()
  7919  func (_NFTClient *NFTClientCallerSession) RequireERC721(_candidate common.Address) error {
  7920  	return _NFTClient.Contract.RequireERC721(&_NFTClient.CallOpts, _candidate)
  7921  }
  7922  
  7923  // TokensOfOwner is a free data retrieval call binding the contract method 0x36b7a69c.
  7924  //
  7925  // Solidity: function tokensOfOwner(address _nftContract, address owner, uint8 page, uint8 rows) view returns(uint256[])
  7926  func (_NFTClient *NFTClientCaller) TokensOfOwner(opts *bind.CallOpts, _nftContract common.Address, owner common.Address, page uint8, rows uint8) ([]*big.Int, error) {
  7927  	var out []interface{}
  7928  	err := _NFTClient.contract.Call(opts, &out, "tokensOfOwner", _nftContract, owner, page, rows)
  7929  
  7930  	if err != nil {
  7931  		return *new([]*big.Int), err
  7932  	}
  7933  
  7934  	out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int)
  7935  
  7936  	return out0, err
  7937  
  7938  }
  7939  
  7940  // TokensOfOwner is a free data retrieval call binding the contract method 0x36b7a69c.
  7941  //
  7942  // Solidity: function tokensOfOwner(address _nftContract, address owner, uint8 page, uint8 rows) view returns(uint256[])
  7943  func (_NFTClient *NFTClientSession) TokensOfOwner(_nftContract common.Address, owner common.Address, page uint8, rows uint8) ([]*big.Int, error) {
  7944  	return _NFTClient.Contract.TokensOfOwner(&_NFTClient.CallOpts, _nftContract, owner, page, rows)
  7945  }
  7946  
  7947  // TokensOfOwner is a free data retrieval call binding the contract method 0x36b7a69c.
  7948  //
  7949  // Solidity: function tokensOfOwner(address _nftContract, address owner, uint8 page, uint8 rows) view returns(uint256[])
  7950  func (_NFTClient *NFTClientCallerSession) TokensOfOwner(_nftContract common.Address, owner common.Address, page uint8, rows uint8) ([]*big.Int, error) {
  7951  	return _NFTClient.Contract.TokensOfOwner(&_NFTClient.CallOpts, _nftContract, owner, page, rows)
  7952  }
  7953  
  7954  // OwnableABI is the input ABI used to generate the binding from.
  7955  const OwnableABI = "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  7956  
  7957  // OwnableFuncSigs maps the 4-byte function signature to its string representation.
  7958  var OwnableFuncSigs = map[string]string{
  7959  	"8da5cb5b": "owner()",
  7960  	"715018a6": "renounceOwnership()",
  7961  	"f2fde38b": "transferOwnership(address)",
  7962  }
  7963  
  7964  // Ownable is an auto generated Go binding around an Ethereum contract.
  7965  type Ownable struct {
  7966  	OwnableCaller     // Read-only binding to the contract
  7967  	OwnableTransactor // Write-only binding to the contract
  7968  	OwnableFilterer   // Log filterer for contract events
  7969  }
  7970  
  7971  // OwnableCaller is an auto generated read-only Go binding around an Ethereum contract.
  7972  type OwnableCaller struct {
  7973  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7974  }
  7975  
  7976  // OwnableTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7977  type OwnableTransactor struct {
  7978  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7979  }
  7980  
  7981  // OwnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7982  type OwnableFilterer struct {
  7983  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7984  }
  7985  
  7986  // OwnableSession is an auto generated Go binding around an Ethereum contract,
  7987  // with pre-set call and transact options.
  7988  type OwnableSession struct {
  7989  	Contract     *Ownable          // Generic contract binding to set the session for
  7990  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7991  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7992  }
  7993  
  7994  // OwnableCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7995  // with pre-set call options.
  7996  type OwnableCallerSession struct {
  7997  	Contract *OwnableCaller // Generic contract caller binding to set the session for
  7998  	CallOpts bind.CallOpts  // Call options to use throughout this session
  7999  }
  8000  
  8001  // OwnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  8002  // with pre-set transact options.
  8003  type OwnableTransactorSession struct {
  8004  	Contract     *OwnableTransactor // Generic contract transactor binding to set the session for
  8005  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  8006  }
  8007  
  8008  // OwnableRaw is an auto generated low-level Go binding around an Ethereum contract.
  8009  type OwnableRaw struct {
  8010  	Contract *Ownable // Generic contract binding to access the raw methods on
  8011  }
  8012  
  8013  // OwnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  8014  type OwnableCallerRaw struct {
  8015  	Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on
  8016  }
  8017  
  8018  // OwnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  8019  type OwnableTransactorRaw struct {
  8020  	Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on
  8021  }
  8022  
  8023  // NewOwnable creates a new instance of Ownable, bound to a specific deployed contract.
  8024  func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) {
  8025  	contract, err := bindOwnable(address, backend, backend, backend)
  8026  	if err != nil {
  8027  		return nil, err
  8028  	}
  8029  	return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil
  8030  }
  8031  
  8032  // NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract.
  8033  func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) {
  8034  	contract, err := bindOwnable(address, caller, nil, nil)
  8035  	if err != nil {
  8036  		return nil, err
  8037  	}
  8038  	return &OwnableCaller{contract: contract}, nil
  8039  }
  8040  
  8041  // NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract.
  8042  func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) {
  8043  	contract, err := bindOwnable(address, nil, transactor, nil)
  8044  	if err != nil {
  8045  		return nil, err
  8046  	}
  8047  	return &OwnableTransactor{contract: contract}, nil
  8048  }
  8049  
  8050  // NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract.
  8051  func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) {
  8052  	contract, err := bindOwnable(address, nil, nil, filterer)
  8053  	if err != nil {
  8054  		return nil, err
  8055  	}
  8056  	return &OwnableFilterer{contract: contract}, nil
  8057  }
  8058  
  8059  // bindOwnable binds a generic wrapper to an already deployed contract.
  8060  func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  8061  	parsed, err := abi.JSON(strings.NewReader(OwnableABI))
  8062  	if err != nil {
  8063  		return nil, err
  8064  	}
  8065  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  8066  }
  8067  
  8068  // Call invokes the (constant) contract method with params as input values and
  8069  // sets the output to result. The result type might be a single field for simple
  8070  // returns, a slice of interfaces for anonymous returns and a struct for named
  8071  // returns.
  8072  func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  8073  	return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...)
  8074  }
  8075  
  8076  // Transfer initiates a plain transaction to move funds to the contract, calling
  8077  // its default method if one is available.
  8078  func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8079  	return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts)
  8080  }
  8081  
  8082  // Transact invokes the (paid) contract method with params as input values.
  8083  func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8084  	return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...)
  8085  }
  8086  
  8087  // Call invokes the (constant) contract method with params as input values and
  8088  // sets the output to result. The result type might be a single field for simple
  8089  // returns, a slice of interfaces for anonymous returns and a struct for named
  8090  // returns.
  8091  func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  8092  	return _Ownable.Contract.contract.Call(opts, result, method, params...)
  8093  }
  8094  
  8095  // Transfer initiates a plain transaction to move funds to the contract, calling
  8096  // its default method if one is available.
  8097  func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8098  	return _Ownable.Contract.contract.Transfer(opts)
  8099  }
  8100  
  8101  // Transact invokes the (paid) contract method with params as input values.
  8102  func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8103  	return _Ownable.Contract.contract.Transact(opts, method, params...)
  8104  }
  8105  
  8106  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  8107  //
  8108  // Solidity: function owner() view returns(address)
  8109  func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  8110  	var out []interface{}
  8111  	err := _Ownable.contract.Call(opts, &out, "owner")
  8112  
  8113  	if err != nil {
  8114  		return *new(common.Address), err
  8115  	}
  8116  
  8117  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  8118  
  8119  	return out0, err
  8120  
  8121  }
  8122  
  8123  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  8124  //
  8125  // Solidity: function owner() view returns(address)
  8126  func (_Ownable *OwnableSession) Owner() (common.Address, error) {
  8127  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
  8128  }
  8129  
  8130  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  8131  //
  8132  // Solidity: function owner() view returns(address)
  8133  func (_Ownable *OwnableCallerSession) Owner() (common.Address, error) {
  8134  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
  8135  }
  8136  
  8137  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  8138  //
  8139  // Solidity: function renounceOwnership() returns()
  8140  func (_Ownable *OwnableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  8141  	return _Ownable.contract.Transact(opts, "renounceOwnership")
  8142  }
  8143  
  8144  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  8145  //
  8146  // Solidity: function renounceOwnership() returns()
  8147  func (_Ownable *OwnableSession) RenounceOwnership() (*types.Transaction, error) {
  8148  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
  8149  }
  8150  
  8151  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  8152  //
  8153  // Solidity: function renounceOwnership() returns()
  8154  func (_Ownable *OwnableTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  8155  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
  8156  }
  8157  
  8158  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8159  //
  8160  // Solidity: function transferOwnership(address newOwner) returns()
  8161  func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  8162  	return _Ownable.contract.Transact(opts, "transferOwnership", newOwner)
  8163  }
  8164  
  8165  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8166  //
  8167  // Solidity: function transferOwnership(address newOwner) returns()
  8168  func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  8169  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
  8170  }
  8171  
  8172  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8173  //
  8174  // Solidity: function transferOwnership(address newOwner) returns()
  8175  func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  8176  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
  8177  }
  8178  
  8179  // OwnableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Ownable contract.
  8180  type OwnableOwnershipTransferredIterator struct {
  8181  	Event *OwnableOwnershipTransferred // Event containing the contract specifics and raw log
  8182  
  8183  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8184  	event    string              // Event name to use for unpacking event data
  8185  
  8186  	logs chan types.Log        // Log channel receiving the found contract events
  8187  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8188  	done bool                  // Whether the subscription completed delivering logs
  8189  	fail error                 // Occurred error to stop iteration
  8190  }
  8191  
  8192  // Next advances the iterator to the subsequent event, returning whether there
  8193  // are any more events found. In case of a retrieval or parsing error, false is
  8194  // returned and Error() can be queried for the exact failure.
  8195  func (it *OwnableOwnershipTransferredIterator) Next() bool {
  8196  	// If the iterator failed, stop iterating
  8197  	if it.fail != nil {
  8198  		return false
  8199  	}
  8200  	// If the iterator completed, deliver directly whatever's available
  8201  	if it.done {
  8202  		select {
  8203  		case log := <-it.logs:
  8204  			it.Event = new(OwnableOwnershipTransferred)
  8205  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8206  				it.fail = err
  8207  				return false
  8208  			}
  8209  			it.Event.Raw = log
  8210  			return true
  8211  
  8212  		default:
  8213  			return false
  8214  		}
  8215  	}
  8216  	// Iterator still in progress, wait for either a data or an error event
  8217  	select {
  8218  	case log := <-it.logs:
  8219  		it.Event = new(OwnableOwnershipTransferred)
  8220  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8221  			it.fail = err
  8222  			return false
  8223  		}
  8224  		it.Event.Raw = log
  8225  		return true
  8226  
  8227  	case err := <-it.sub.Err():
  8228  		it.done = true
  8229  		it.fail = err
  8230  		return it.Next()
  8231  	}
  8232  }
  8233  
  8234  // Error returns any retrieval or parsing error occurred during filtering.
  8235  func (it *OwnableOwnershipTransferredIterator) Error() error {
  8236  	return it.fail
  8237  }
  8238  
  8239  // Close terminates the iteration process, releasing any pending underlying
  8240  // resources.
  8241  func (it *OwnableOwnershipTransferredIterator) Close() error {
  8242  	it.sub.Unsubscribe()
  8243  	return nil
  8244  }
  8245  
  8246  // OwnableOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable contract.
  8247  type OwnableOwnershipTransferred struct {
  8248  	PreviousOwner common.Address
  8249  	NewOwner      common.Address
  8250  	Raw           types.Log // Blockchain specific contextual infos
  8251  }
  8252  
  8253  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8254  //
  8255  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8256  func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) {
  8257  
  8258  	var previousOwnerRule []interface{}
  8259  	for _, previousOwnerItem := range previousOwner {
  8260  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  8261  	}
  8262  	var newOwnerRule []interface{}
  8263  	for _, newOwnerItem := range newOwner {
  8264  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  8265  	}
  8266  
  8267  	logs, sub, err := _Ownable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  8268  	if err != nil {
  8269  		return nil, err
  8270  	}
  8271  	return &OwnableOwnershipTransferredIterator{contract: _Ownable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  8272  }
  8273  
  8274  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8275  //
  8276  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8277  func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  8278  
  8279  	var previousOwnerRule []interface{}
  8280  	for _, previousOwnerItem := range previousOwner {
  8281  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  8282  	}
  8283  	var newOwnerRule []interface{}
  8284  	for _, newOwnerItem := range newOwner {
  8285  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  8286  	}
  8287  
  8288  	logs, sub, err := _Ownable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  8289  	if err != nil {
  8290  		return nil, err
  8291  	}
  8292  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8293  		defer sub.Unsubscribe()
  8294  		for {
  8295  			select {
  8296  			case log := <-logs:
  8297  				// New log arrived, parse the event and forward to the user
  8298  				event := new(OwnableOwnershipTransferred)
  8299  				if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  8300  					return err
  8301  				}
  8302  				event.Raw = log
  8303  
  8304  				select {
  8305  				case sink <- event:
  8306  				case err := <-sub.Err():
  8307  					return err
  8308  				case <-quit:
  8309  					return nil
  8310  				}
  8311  			case err := <-sub.Err():
  8312  				return err
  8313  			case <-quit:
  8314  				return nil
  8315  			}
  8316  		}
  8317  	}), nil
  8318  }
  8319  
  8320  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8321  //
  8322  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8323  func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableOwnershipTransferred, error) {
  8324  	event := new(OwnableOwnershipTransferred)
  8325  	if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  8326  		return nil, err
  8327  	}
  8328  	event.Raw = log
  8329  	return event, nil
  8330  }
  8331  
  8332  // RelayRecipientABI is the input ABI used to generate the binding from.
  8333  const RelayRecipientABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"blockRelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelayAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  8334  
  8335  // RelayRecipientFuncSigs maps the 4-byte function signature to its string representation.
  8336  var RelayRecipientFuncSigs = map[string]string{
  8337  	"309e11fc": "blockRelay()",
  8338  	"32deedc6": "getRelayAddress()",
  8339  	"8da5cb5b": "owner()",
  8340  	"715018a6": "renounceOwnership()",
  8341  	"f2fde38b": "transferOwnership(address)",
  8342  }
  8343  
  8344  // RelayRecipientBin is the compiled bytecode used for deploying new contracts.
  8345  var RelayRecipientBin = "0x608060405234801561001057600080fd5b506040516105903803806105908339818101604052602081101561003357600080fd5b505160006100486001600160e01b0361011216565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b0381166100ed576040805162461bcd60e51b815260206004820181905260248201527f437573746f6d2072656c61792061646472657373206973207265717569726564604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055610192565b6001546000906001600160a01b0316331461012e575033610142565b61013f6001600160e01b0361014516565b90505b90565b600060606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031692915050565b6103ef806101a16000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063309e11fc1461005c57806332deedc614610066578063715018a61461008a5780638da5cb5b14610092578063f2fde38b1461009a575b600080fd5b6100646100c0565b005b61006e61013e565b604080516001600160a01b039092168252519081900360200190f35b61006461014e565b61006e610202565b610064600480360360208110156100b057600080fd5b50356001600160a01b0316610211565b6100c861031b565b6000546001600160a01b0390811691161461012a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180546001600160a01b03191630179055565b6001546001600160a01b03165b90565b61015661031b565b6000546001600160a01b039081169116146101b8576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b61021961031b565b6000546001600160a01b0390811691161461027b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166102c05760405162461bcd60e51b81526004018080602001828103825260268152602001806103946026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546000906001600160a01b0316331461033757503361014b565b61033f610346565b905061014b565b600060606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b03169291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a26469706673582212200ffa9ae5da0047e9678bc345f517b001aa003dfc6c0db4a3360d5d60a60a540d64736f6c63430006060033"
  8346  
  8347  // DeployRelayRecipient deploys a new Ethereum contract, binding an instance of RelayRecipient to it.
  8348  func DeployRelayRecipient(auth *bind.TransactOpts, backend bind.ContractBackend, relayAddress common.Address) (common.Address, *types.Transaction, *RelayRecipient, error) {
  8349  	parsed, err := abi.JSON(strings.NewReader(RelayRecipientABI))
  8350  	if err != nil {
  8351  		return common.Address{}, nil, nil, err
  8352  	}
  8353  
  8354  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RelayRecipientBin), backend, relayAddress)
  8355  	if err != nil {
  8356  		return common.Address{}, nil, nil, err
  8357  	}
  8358  	return address, tx, &RelayRecipient{RelayRecipientCaller: RelayRecipientCaller{contract: contract}, RelayRecipientTransactor: RelayRecipientTransactor{contract: contract}, RelayRecipientFilterer: RelayRecipientFilterer{contract: contract}}, nil
  8359  }
  8360  
  8361  // RelayRecipient is an auto generated Go binding around an Ethereum contract.
  8362  type RelayRecipient struct {
  8363  	RelayRecipientCaller     // Read-only binding to the contract
  8364  	RelayRecipientTransactor // Write-only binding to the contract
  8365  	RelayRecipientFilterer   // Log filterer for contract events
  8366  }
  8367  
  8368  // RelayRecipientCaller is an auto generated read-only Go binding around an Ethereum contract.
  8369  type RelayRecipientCaller struct {
  8370  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8371  }
  8372  
  8373  // RelayRecipientTransactor is an auto generated write-only Go binding around an Ethereum contract.
  8374  type RelayRecipientTransactor struct {
  8375  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8376  }
  8377  
  8378  // RelayRecipientFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  8379  type RelayRecipientFilterer struct {
  8380  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8381  }
  8382  
  8383  // RelayRecipientSession is an auto generated Go binding around an Ethereum contract,
  8384  // with pre-set call and transact options.
  8385  type RelayRecipientSession struct {
  8386  	Contract     *RelayRecipient   // Generic contract binding to set the session for
  8387  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  8388  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  8389  }
  8390  
  8391  // RelayRecipientCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  8392  // with pre-set call options.
  8393  type RelayRecipientCallerSession struct {
  8394  	Contract *RelayRecipientCaller // Generic contract caller binding to set the session for
  8395  	CallOpts bind.CallOpts         // Call options to use throughout this session
  8396  }
  8397  
  8398  // RelayRecipientTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  8399  // with pre-set transact options.
  8400  type RelayRecipientTransactorSession struct {
  8401  	Contract     *RelayRecipientTransactor // Generic contract transactor binding to set the session for
  8402  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  8403  }
  8404  
  8405  // RelayRecipientRaw is an auto generated low-level Go binding around an Ethereum contract.
  8406  type RelayRecipientRaw struct {
  8407  	Contract *RelayRecipient // Generic contract binding to access the raw methods on
  8408  }
  8409  
  8410  // RelayRecipientCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  8411  type RelayRecipientCallerRaw struct {
  8412  	Contract *RelayRecipientCaller // Generic read-only contract binding to access the raw methods on
  8413  }
  8414  
  8415  // RelayRecipientTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  8416  type RelayRecipientTransactorRaw struct {
  8417  	Contract *RelayRecipientTransactor // Generic write-only contract binding to access the raw methods on
  8418  }
  8419  
  8420  // NewRelayRecipient creates a new instance of RelayRecipient, bound to a specific deployed contract.
  8421  func NewRelayRecipient(address common.Address, backend bind.ContractBackend) (*RelayRecipient, error) {
  8422  	contract, err := bindRelayRecipient(address, backend, backend, backend)
  8423  	if err != nil {
  8424  		return nil, err
  8425  	}
  8426  	return &RelayRecipient{RelayRecipientCaller: RelayRecipientCaller{contract: contract}, RelayRecipientTransactor: RelayRecipientTransactor{contract: contract}, RelayRecipientFilterer: RelayRecipientFilterer{contract: contract}}, nil
  8427  }
  8428  
  8429  // NewRelayRecipientCaller creates a new read-only instance of RelayRecipient, bound to a specific deployed contract.
  8430  func NewRelayRecipientCaller(address common.Address, caller bind.ContractCaller) (*RelayRecipientCaller, error) {
  8431  	contract, err := bindRelayRecipient(address, caller, nil, nil)
  8432  	if err != nil {
  8433  		return nil, err
  8434  	}
  8435  	return &RelayRecipientCaller{contract: contract}, nil
  8436  }
  8437  
  8438  // NewRelayRecipientTransactor creates a new write-only instance of RelayRecipient, bound to a specific deployed contract.
  8439  func NewRelayRecipientTransactor(address common.Address, transactor bind.ContractTransactor) (*RelayRecipientTransactor, error) {
  8440  	contract, err := bindRelayRecipient(address, nil, transactor, nil)
  8441  	if err != nil {
  8442  		return nil, err
  8443  	}
  8444  	return &RelayRecipientTransactor{contract: contract}, nil
  8445  }
  8446  
  8447  // NewRelayRecipientFilterer creates a new log filterer instance of RelayRecipient, bound to a specific deployed contract.
  8448  func NewRelayRecipientFilterer(address common.Address, filterer bind.ContractFilterer) (*RelayRecipientFilterer, error) {
  8449  	contract, err := bindRelayRecipient(address, nil, nil, filterer)
  8450  	if err != nil {
  8451  		return nil, err
  8452  	}
  8453  	return &RelayRecipientFilterer{contract: contract}, nil
  8454  }
  8455  
  8456  // bindRelayRecipient binds a generic wrapper to an already deployed contract.
  8457  func bindRelayRecipient(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  8458  	parsed, err := abi.JSON(strings.NewReader(RelayRecipientABI))
  8459  	if err != nil {
  8460  		return nil, err
  8461  	}
  8462  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  8463  }
  8464  
  8465  // Call invokes the (constant) contract method with params as input values and
  8466  // sets the output to result. The result type might be a single field for simple
  8467  // returns, a slice of interfaces for anonymous returns and a struct for named
  8468  // returns.
  8469  func (_RelayRecipient *RelayRecipientRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  8470  	return _RelayRecipient.Contract.RelayRecipientCaller.contract.Call(opts, result, method, params...)
  8471  }
  8472  
  8473  // Transfer initiates a plain transaction to move funds to the contract, calling
  8474  // its default method if one is available.
  8475  func (_RelayRecipient *RelayRecipientRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8476  	return _RelayRecipient.Contract.RelayRecipientTransactor.contract.Transfer(opts)
  8477  }
  8478  
  8479  // Transact invokes the (paid) contract method with params as input values.
  8480  func (_RelayRecipient *RelayRecipientRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8481  	return _RelayRecipient.Contract.RelayRecipientTransactor.contract.Transact(opts, method, params...)
  8482  }
  8483  
  8484  // Call invokes the (constant) contract method with params as input values and
  8485  // sets the output to result. The result type might be a single field for simple
  8486  // returns, a slice of interfaces for anonymous returns and a struct for named
  8487  // returns.
  8488  func (_RelayRecipient *RelayRecipientCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  8489  	return _RelayRecipient.Contract.contract.Call(opts, result, method, params...)
  8490  }
  8491  
  8492  // Transfer initiates a plain transaction to move funds to the contract, calling
  8493  // its default method if one is available.
  8494  func (_RelayRecipient *RelayRecipientTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8495  	return _RelayRecipient.Contract.contract.Transfer(opts)
  8496  }
  8497  
  8498  // Transact invokes the (paid) contract method with params as input values.
  8499  func (_RelayRecipient *RelayRecipientTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8500  	return _RelayRecipient.Contract.contract.Transact(opts, method, params...)
  8501  }
  8502  
  8503  // GetRelayAddress is a free data retrieval call binding the contract method 0x32deedc6.
  8504  //
  8505  // Solidity: function getRelayAddress() view returns(address)
  8506  func (_RelayRecipient *RelayRecipientCaller) GetRelayAddress(opts *bind.CallOpts) (common.Address, error) {
  8507  	var out []interface{}
  8508  	err := _RelayRecipient.contract.Call(opts, &out, "getRelayAddress")
  8509  
  8510  	if err != nil {
  8511  		return *new(common.Address), err
  8512  	}
  8513  
  8514  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  8515  
  8516  	return out0, err
  8517  
  8518  }
  8519  
  8520  // GetRelayAddress is a free data retrieval call binding the contract method 0x32deedc6.
  8521  //
  8522  // Solidity: function getRelayAddress() view returns(address)
  8523  func (_RelayRecipient *RelayRecipientSession) GetRelayAddress() (common.Address, error) {
  8524  	return _RelayRecipient.Contract.GetRelayAddress(&_RelayRecipient.CallOpts)
  8525  }
  8526  
  8527  // GetRelayAddress is a free data retrieval call binding the contract method 0x32deedc6.
  8528  //
  8529  // Solidity: function getRelayAddress() view returns(address)
  8530  func (_RelayRecipient *RelayRecipientCallerSession) GetRelayAddress() (common.Address, error) {
  8531  	return _RelayRecipient.Contract.GetRelayAddress(&_RelayRecipient.CallOpts)
  8532  }
  8533  
  8534  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  8535  //
  8536  // Solidity: function owner() view returns(address)
  8537  func (_RelayRecipient *RelayRecipientCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  8538  	var out []interface{}
  8539  	err := _RelayRecipient.contract.Call(opts, &out, "owner")
  8540  
  8541  	if err != nil {
  8542  		return *new(common.Address), err
  8543  	}
  8544  
  8545  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  8546  
  8547  	return out0, err
  8548  
  8549  }
  8550  
  8551  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  8552  //
  8553  // Solidity: function owner() view returns(address)
  8554  func (_RelayRecipient *RelayRecipientSession) Owner() (common.Address, error) {
  8555  	return _RelayRecipient.Contract.Owner(&_RelayRecipient.CallOpts)
  8556  }
  8557  
  8558  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  8559  //
  8560  // Solidity: function owner() view returns(address)
  8561  func (_RelayRecipient *RelayRecipientCallerSession) Owner() (common.Address, error) {
  8562  	return _RelayRecipient.Contract.Owner(&_RelayRecipient.CallOpts)
  8563  }
  8564  
  8565  // BlockRelay is a paid mutator transaction binding the contract method 0x309e11fc.
  8566  //
  8567  // Solidity: function blockRelay() returns()
  8568  func (_RelayRecipient *RelayRecipientTransactor) BlockRelay(opts *bind.TransactOpts) (*types.Transaction, error) {
  8569  	return _RelayRecipient.contract.Transact(opts, "blockRelay")
  8570  }
  8571  
  8572  // BlockRelay is a paid mutator transaction binding the contract method 0x309e11fc.
  8573  //
  8574  // Solidity: function blockRelay() returns()
  8575  func (_RelayRecipient *RelayRecipientSession) BlockRelay() (*types.Transaction, error) {
  8576  	return _RelayRecipient.Contract.BlockRelay(&_RelayRecipient.TransactOpts)
  8577  }
  8578  
  8579  // BlockRelay is a paid mutator transaction binding the contract method 0x309e11fc.
  8580  //
  8581  // Solidity: function blockRelay() returns()
  8582  func (_RelayRecipient *RelayRecipientTransactorSession) BlockRelay() (*types.Transaction, error) {
  8583  	return _RelayRecipient.Contract.BlockRelay(&_RelayRecipient.TransactOpts)
  8584  }
  8585  
  8586  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  8587  //
  8588  // Solidity: function renounceOwnership() returns()
  8589  func (_RelayRecipient *RelayRecipientTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  8590  	return _RelayRecipient.contract.Transact(opts, "renounceOwnership")
  8591  }
  8592  
  8593  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  8594  //
  8595  // Solidity: function renounceOwnership() returns()
  8596  func (_RelayRecipient *RelayRecipientSession) RenounceOwnership() (*types.Transaction, error) {
  8597  	return _RelayRecipient.Contract.RenounceOwnership(&_RelayRecipient.TransactOpts)
  8598  }
  8599  
  8600  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  8601  //
  8602  // Solidity: function renounceOwnership() returns()
  8603  func (_RelayRecipient *RelayRecipientTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  8604  	return _RelayRecipient.Contract.RenounceOwnership(&_RelayRecipient.TransactOpts)
  8605  }
  8606  
  8607  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8608  //
  8609  // Solidity: function transferOwnership(address newOwner) returns()
  8610  func (_RelayRecipient *RelayRecipientTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  8611  	return _RelayRecipient.contract.Transact(opts, "transferOwnership", newOwner)
  8612  }
  8613  
  8614  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8615  //
  8616  // Solidity: function transferOwnership(address newOwner) returns()
  8617  func (_RelayRecipient *RelayRecipientSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  8618  	return _RelayRecipient.Contract.TransferOwnership(&_RelayRecipient.TransactOpts, newOwner)
  8619  }
  8620  
  8621  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8622  //
  8623  // Solidity: function transferOwnership(address newOwner) returns()
  8624  func (_RelayRecipient *RelayRecipientTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  8625  	return _RelayRecipient.Contract.TransferOwnership(&_RelayRecipient.TransactOpts, newOwner)
  8626  }
  8627  
  8628  // RelayRecipientOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the RelayRecipient contract.
  8629  type RelayRecipientOwnershipTransferredIterator struct {
  8630  	Event *RelayRecipientOwnershipTransferred // Event containing the contract specifics and raw log
  8631  
  8632  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8633  	event    string              // Event name to use for unpacking event data
  8634  
  8635  	logs chan types.Log        // Log channel receiving the found contract events
  8636  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8637  	done bool                  // Whether the subscription completed delivering logs
  8638  	fail error                 // Occurred error to stop iteration
  8639  }
  8640  
  8641  // Next advances the iterator to the subsequent event, returning whether there
  8642  // are any more events found. In case of a retrieval or parsing error, false is
  8643  // returned and Error() can be queried for the exact failure.
  8644  func (it *RelayRecipientOwnershipTransferredIterator) Next() bool {
  8645  	// If the iterator failed, stop iterating
  8646  	if it.fail != nil {
  8647  		return false
  8648  	}
  8649  	// If the iterator completed, deliver directly whatever's available
  8650  	if it.done {
  8651  		select {
  8652  		case log := <-it.logs:
  8653  			it.Event = new(RelayRecipientOwnershipTransferred)
  8654  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8655  				it.fail = err
  8656  				return false
  8657  			}
  8658  			it.Event.Raw = log
  8659  			return true
  8660  
  8661  		default:
  8662  			return false
  8663  		}
  8664  	}
  8665  	// Iterator still in progress, wait for either a data or an error event
  8666  	select {
  8667  	case log := <-it.logs:
  8668  		it.Event = new(RelayRecipientOwnershipTransferred)
  8669  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8670  			it.fail = err
  8671  			return false
  8672  		}
  8673  		it.Event.Raw = log
  8674  		return true
  8675  
  8676  	case err := <-it.sub.Err():
  8677  		it.done = true
  8678  		it.fail = err
  8679  		return it.Next()
  8680  	}
  8681  }
  8682  
  8683  // Error returns any retrieval or parsing error occurred during filtering.
  8684  func (it *RelayRecipientOwnershipTransferredIterator) Error() error {
  8685  	return it.fail
  8686  }
  8687  
  8688  // Close terminates the iteration process, releasing any pending underlying
  8689  // resources.
  8690  func (it *RelayRecipientOwnershipTransferredIterator) Close() error {
  8691  	it.sub.Unsubscribe()
  8692  	return nil
  8693  }
  8694  
  8695  // RelayRecipientOwnershipTransferred represents a OwnershipTransferred event raised by the RelayRecipient contract.
  8696  type RelayRecipientOwnershipTransferred struct {
  8697  	PreviousOwner common.Address
  8698  	NewOwner      common.Address
  8699  	Raw           types.Log // Blockchain specific contextual infos
  8700  }
  8701  
  8702  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8703  //
  8704  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8705  func (_RelayRecipient *RelayRecipientFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*RelayRecipientOwnershipTransferredIterator, error) {
  8706  
  8707  	var previousOwnerRule []interface{}
  8708  	for _, previousOwnerItem := range previousOwner {
  8709  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  8710  	}
  8711  	var newOwnerRule []interface{}
  8712  	for _, newOwnerItem := range newOwner {
  8713  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  8714  	}
  8715  
  8716  	logs, sub, err := _RelayRecipient.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  8717  	if err != nil {
  8718  		return nil, err
  8719  	}
  8720  	return &RelayRecipientOwnershipTransferredIterator{contract: _RelayRecipient.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  8721  }
  8722  
  8723  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8724  //
  8725  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8726  func (_RelayRecipient *RelayRecipientFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *RelayRecipientOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  8727  
  8728  	var previousOwnerRule []interface{}
  8729  	for _, previousOwnerItem := range previousOwner {
  8730  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  8731  	}
  8732  	var newOwnerRule []interface{}
  8733  	for _, newOwnerItem := range newOwner {
  8734  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  8735  	}
  8736  
  8737  	logs, sub, err := _RelayRecipient.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  8738  	if err != nil {
  8739  		return nil, err
  8740  	}
  8741  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8742  		defer sub.Unsubscribe()
  8743  		for {
  8744  			select {
  8745  			case log := <-logs:
  8746  				// New log arrived, parse the event and forward to the user
  8747  				event := new(RelayRecipientOwnershipTransferred)
  8748  				if err := _RelayRecipient.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  8749  					return err
  8750  				}
  8751  				event.Raw = log
  8752  
  8753  				select {
  8754  				case sink <- event:
  8755  				case err := <-sub.Err():
  8756  					return err
  8757  				case <-quit:
  8758  					return nil
  8759  				}
  8760  			case err := <-sub.Err():
  8761  				return err
  8762  			case <-quit:
  8763  				return nil
  8764  			}
  8765  		}
  8766  	}), nil
  8767  }
  8768  
  8769  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8770  //
  8771  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8772  func (_RelayRecipient *RelayRecipientFilterer) ParseOwnershipTransferred(log types.Log) (*RelayRecipientOwnershipTransferred, error) {
  8773  	event := new(RelayRecipientOwnershipTransferred)
  8774  	if err := _RelayRecipient.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  8775  		return nil, err
  8776  	}
  8777  	event.Raw = log
  8778  	return event, nil
  8779  }
  8780  
  8781  // SafeMathABI is the input ABI used to generate the binding from.
  8782  const SafeMathABI = "[]"
  8783  
  8784  // SafeMathBin is the compiled bytecode used for deploying new contracts.
  8785  var SafeMathBin = "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220198782bac737d17dca7f599e0b6e936a9acdee55337b153e7f0e9c9210e75b9064736f6c63430006060033"
  8786  
  8787  // DeploySafeMath deploys a new Ethereum contract, binding an instance of SafeMath to it.
  8788  func DeploySafeMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeMath, error) {
  8789  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
  8790  	if err != nil {
  8791  		return common.Address{}, nil, nil, err
  8792  	}
  8793  
  8794  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SafeMathBin), backend)
  8795  	if err != nil {
  8796  		return common.Address{}, nil, nil, err
  8797  	}
  8798  	return address, tx, &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
  8799  }
  8800  
  8801  // SafeMath is an auto generated Go binding around an Ethereum contract.
  8802  type SafeMath struct {
  8803  	SafeMathCaller     // Read-only binding to the contract
  8804  	SafeMathTransactor // Write-only binding to the contract
  8805  	SafeMathFilterer   // Log filterer for contract events
  8806  }
  8807  
  8808  // SafeMathCaller is an auto generated read-only Go binding around an Ethereum contract.
  8809  type SafeMathCaller struct {
  8810  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8811  }
  8812  
  8813  // SafeMathTransactor is an auto generated write-only Go binding around an Ethereum contract.
  8814  type SafeMathTransactor struct {
  8815  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8816  }
  8817  
  8818  // SafeMathFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  8819  type SafeMathFilterer struct {
  8820  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8821  }
  8822  
  8823  // SafeMathSession is an auto generated Go binding around an Ethereum contract,
  8824  // with pre-set call and transact options.
  8825  type SafeMathSession struct {
  8826  	Contract     *SafeMath         // Generic contract binding to set the session for
  8827  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  8828  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  8829  }
  8830  
  8831  // SafeMathCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  8832  // with pre-set call options.
  8833  type SafeMathCallerSession struct {
  8834  	Contract *SafeMathCaller // Generic contract caller binding to set the session for
  8835  	CallOpts bind.CallOpts   // Call options to use throughout this session
  8836  }
  8837  
  8838  // SafeMathTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  8839  // with pre-set transact options.
  8840  type SafeMathTransactorSession struct {
  8841  	Contract     *SafeMathTransactor // Generic contract transactor binding to set the session for
  8842  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
  8843  }
  8844  
  8845  // SafeMathRaw is an auto generated low-level Go binding around an Ethereum contract.
  8846  type SafeMathRaw struct {
  8847  	Contract *SafeMath // Generic contract binding to access the raw methods on
  8848  }
  8849  
  8850  // SafeMathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  8851  type SafeMathCallerRaw struct {
  8852  	Contract *SafeMathCaller // Generic read-only contract binding to access the raw methods on
  8853  }
  8854  
  8855  // SafeMathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  8856  type SafeMathTransactorRaw struct {
  8857  	Contract *SafeMathTransactor // Generic write-only contract binding to access the raw methods on
  8858  }
  8859  
  8860  // NewSafeMath creates a new instance of SafeMath, bound to a specific deployed contract.
  8861  func NewSafeMath(address common.Address, backend bind.ContractBackend) (*SafeMath, error) {
  8862  	contract, err := bindSafeMath(address, backend, backend, backend)
  8863  	if err != nil {
  8864  		return nil, err
  8865  	}
  8866  	return &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
  8867  }
  8868  
  8869  // NewSafeMathCaller creates a new read-only instance of SafeMath, bound to a specific deployed contract.
  8870  func NewSafeMathCaller(address common.Address, caller bind.ContractCaller) (*SafeMathCaller, error) {
  8871  	contract, err := bindSafeMath(address, caller, nil, nil)
  8872  	if err != nil {
  8873  		return nil, err
  8874  	}
  8875  	return &SafeMathCaller{contract: contract}, nil
  8876  }
  8877  
  8878  // NewSafeMathTransactor creates a new write-only instance of SafeMath, bound to a specific deployed contract.
  8879  func NewSafeMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeMathTransactor, error) {
  8880  	contract, err := bindSafeMath(address, nil, transactor, nil)
  8881  	if err != nil {
  8882  		return nil, err
  8883  	}
  8884  	return &SafeMathTransactor{contract: contract}, nil
  8885  }
  8886  
  8887  // NewSafeMathFilterer creates a new log filterer instance of SafeMath, bound to a specific deployed contract.
  8888  func NewSafeMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeMathFilterer, error) {
  8889  	contract, err := bindSafeMath(address, nil, nil, filterer)
  8890  	if err != nil {
  8891  		return nil, err
  8892  	}
  8893  	return &SafeMathFilterer{contract: contract}, nil
  8894  }
  8895  
  8896  // bindSafeMath binds a generic wrapper to an already deployed contract.
  8897  func bindSafeMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  8898  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
  8899  	if err != nil {
  8900  		return nil, err
  8901  	}
  8902  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  8903  }
  8904  
  8905  // Call invokes the (constant) contract method with params as input values and
  8906  // sets the output to result. The result type might be a single field for simple
  8907  // returns, a slice of interfaces for anonymous returns and a struct for named
  8908  // returns.
  8909  func (_SafeMath *SafeMathRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  8910  	return _SafeMath.Contract.SafeMathCaller.contract.Call(opts, result, method, params...)
  8911  }
  8912  
  8913  // Transfer initiates a plain transaction to move funds to the contract, calling
  8914  // its default method if one is available.
  8915  func (_SafeMath *SafeMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8916  	return _SafeMath.Contract.SafeMathTransactor.contract.Transfer(opts)
  8917  }
  8918  
  8919  // Transact invokes the (paid) contract method with params as input values.
  8920  func (_SafeMath *SafeMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8921  	return _SafeMath.Contract.SafeMathTransactor.contract.Transact(opts, method, params...)
  8922  }
  8923  
  8924  // Call invokes the (constant) contract method with params as input values and
  8925  // sets the output to result. The result type might be a single field for simple
  8926  // returns, a slice of interfaces for anonymous returns and a struct for named
  8927  // returns.
  8928  func (_SafeMath *SafeMathCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  8929  	return _SafeMath.Contract.contract.Call(opts, result, method, params...)
  8930  }
  8931  
  8932  // Transfer initiates a plain transaction to move funds to the contract, calling
  8933  // its default method if one is available.
  8934  func (_SafeMath *SafeMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8935  	return _SafeMath.Contract.contract.Transfer(opts)
  8936  }
  8937  
  8938  // Transact invokes the (paid) contract method with params as input values.
  8939  func (_SafeMath *SafeMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8940  	return _SafeMath.Contract.contract.Transact(opts, method, params...)
  8941  }
  8942  
  8943  // SorareTokensABI is the input ABI used to generate the binding from.
  8944  const SorareTokensABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sorareCardsAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockRelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"playerId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"season\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"scarcity\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"serialNumber\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"metadata\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"clubId\",\"type\":\"uint16\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"createCardAndMintToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getCard\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"playerId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"season\",\"type\":\"uint16\"},{\"internalType\":\"uint256\",\"name\":\"scarcity\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"serialNumber\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"internalType\":\"uint16\",\"name\":\"clubId\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"clubId\",\"type\":\"uint16\"}],\"name\":\"getClub\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"country\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"city\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"yearFounded\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"playerId\",\"type\":\"uint256\"}],\"name\":\"getPlayer\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint16\",\"name\":\"yearOfBirth\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"monthOfBirth\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"dayOfBirth\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelayAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"name\":\"migrateTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cardId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mintToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextContract\",\"outputs\":[{\"internalType\":\"contractINextContract\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeMinter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"nextContractAddress\",\"type\":\"address\"}],\"name\":\"setNextContract\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"prefix\",\"type\":\"string\"}],\"name\":\"setTokenURIPrefix\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sorareCards\",\"outputs\":[{\"internalType\":\"contractISorareCards\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"page\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"rows\",\"type\":\"uint8\"}],\"name\":\"tokensOfOwner\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  8945  
  8946  // SorareTokensFuncSigs maps the 4-byte function signature to its string representation.
  8947  var SorareTokensFuncSigs = map[string]string{
  8948  	"a217fddf": "DEFAULT_ADMIN_ROLE()",
  8949  	"d5391393": "MINTER_ROLE()",
  8950  	"983b2d56": "addMinter(address)",
  8951  	"095ea7b3": "approve(address,uint256)",
  8952  	"70a08231": "balanceOf(address)",
  8953  	"6c0360eb": "baseURI()",
  8954  	"309e11fc": "blockRelay()",
  8955  	"2850d20e": "createCardAndMintToken(uint256,uint16,uint8,uint16,bytes32,uint16,address)",
  8956  	"081812fc": "getApproved(uint256)",
  8957  	"9188d312": "getCard(uint256)",
  8958  	"4a39d2b8": "getClub(uint16)",
  8959  	"e55ae4e8": "getPlayer(uint256)",
  8960  	"32deedc6": "getRelayAddress()",
  8961  	"248a9ca3": "getRoleAdmin(bytes32)",
  8962  	"9010d07c": "getRoleMember(bytes32,uint256)",
  8963  	"ca15c873": "getRoleMemberCount(bytes32)",
  8964  	"2f2ff15d": "grantRole(bytes32,address)",
  8965  	"91d14854": "hasRole(bytes32,address)",
  8966  	"e985e9c5": "isApprovedForAll(address,address)",
  8967  	"e5951e60": "migrateTokens(uint256[])",
  8968  	"a140ae23": "mintToken(uint256,address)",
  8969  	"06fdde03": "name()",
  8970  	"d8787fde": "nextContract()",
  8971  	"8da5cb5b": "owner()",
  8972  	"6352211e": "ownerOf(uint256)",
  8973  	"5f112c68": "renounceMinter(address)",
  8974  	"715018a6": "renounceOwnership()",
  8975  	"36568abe": "renounceRole(bytes32,address)",
  8976  	"cfbd4885": "revokeMinter(address)",
  8977  	"d547741f": "revokeRole(bytes32,address)",
  8978  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  8979  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  8980  	"a22cb465": "setApprovalForAll(address,bool)",
  8981  	"53390100": "setNextContract(address)",
  8982  	"99e0dd7c": "setTokenURIPrefix(string)",
  8983  	"16b1b0c8": "sorareCards()",
  8984  	"01ffc9a7": "supportsInterface(bytes4)",
  8985  	"95d89b41": "symbol()",
  8986  	"4f6ccce7": "tokenByIndex(uint256)",
  8987  	"2f745c59": "tokenOfOwnerByIndex(address,uint256)",
  8988  	"c87b56dd": "tokenURI(uint256)",
  8989  	"4d9c5e58": "tokensOfOwner(address,uint8,uint8)",
  8990  	"18160ddd": "totalSupply()",
  8991  	"23b872dd": "transferFrom(address,address,uint256)",
  8992  	"f2fde38b": "transferOwnership(address)",
  8993  }
  8994  
  8995  // SorareTokensBin is the compiled bytecode used for deploying new contracts.
  8996  var SorareTokensBin = "0x60806040523480156200001157600080fd5b5060405162003bf638038062003bf6833981810160405260408110156200003757600080fd5b5080516020918201516040805180820182526006815265536f7261726560d01b818601528151808301909252600382526229a7a960e91b94820194909452919290918260006200008f6001600160e01b03620002b416565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000ef6000336001600160e01b03620002d116565b604080516a4d494e5445525f524f4c4560a81b8152905190819003600b0190206200012490336001600160e01b03620002d116565b6001600160a01b03811662000180576040805162461bcd60e51b815260206004820181905260248201527f437573746f6d2072656c61792061646472657373206973207265717569726564604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055620001b26301ffc9a760e01b620002ea565b8151620001c790600990602085019062000512565b508051620001dd90600a90602084019062000512565b50620001f96380ac58cd60e01b6001600160e01b03620002ea16565b62000214635b5e139f60e01b6001600160e01b03620002ea16565b6200022f63780e9d6360e01b6001600160e01b03620002ea16565b50506001600160a01b0382166200028d576040805162461bcd60e51b815260206004820152601f60248201527f536f726172654361726473206164647265737320697320726571756972656400604482015290519081900360640190fd5b50600d80546001600160a01b0319166001600160a01b0392909216919091179055620005b4565b6000620002cb6200036f60201b62002bb91760201c565b90505b90565b620002e682826001600160e01b03620003a816565b5050565b6001600160e01b031980821614156200034a576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152600360205260409020805460ff19166001179055565b6002546000906001600160a01b031633146200038d575033620002ce565b620003a06001600160e01b036200042c16565b9050620002ce565b6000828152600160209081526040909120620003cf91839062002c1662000479821b17901c565b15620002e657620003e86001600160e01b03620002b416565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600060606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031692915050565b600062000499836001600160a01b0384166001600160e01b03620004a216565b90505b92915050565b6000620004b983836001600160e01b03620004fa16565b620004f1575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200049c565b5060006200049c565b60009081526001919091016020526040902054151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200055557805160ff191683800117855562000585565b8280016001018555821562000585579182015b828111156200058557825182559160200191906001019062000568565b506200059392915062000597565b5090565b620002ce91905b808211156200059357600081556001016200059e565b61363280620005c46000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c806370a082311161015c578063a22cb465116100ce578063d547741f11610087578063d547741f14610b30578063d8787fde14610b5c578063e55ae4e814610b64578063e5951e6014610c22578063e985e9c514610c90578063f2fde38b14610cbe5761027f565b8063a22cb465146109d6578063b88d4fde14610a04578063c87b56dd14610ac8578063ca15c87314610ae5578063cfbd488514610b02578063d539139314610b285761027f565b806391d148541161012057806391d14854146108a457806395d89b41146108d0578063983b2d56146108d857806399e0dd7c146108fe578063a140ae23146109a2578063a217fddf146109ce5761027f565b806370a08231146107bc578063715018a6146107e25780638da5cb5b146107ea5780639010d07c146107f25780639188d312146108155761027f565b8063309e11fc116101f55780634d9c5e58116101b95780634d9c5e58146106a75780634f6ccce71461072e578063533901001461074b5780635f112c68146107715780636352211e146107975780636c0360eb146107b45761027f565b8063309e11fc146104c657806332deedc6146104ce57806336568abe146104d657806342842e0e146105025780634a39d2b8146105385761027f565b806318160ddd1161024757806318160ddd146103ab57806323b872dd146103c5578063248a9ca3146103fb5780632850d20e146104185780632f2ff15d1461046e5780632f745c591461049a5761027f565b806301ffc9a71461028457806306fdde03146102bf578063081812fc1461033c578063095ea7b31461037557806316b1b0c8146103a3575b600080fd5b6102ab6004803603602081101561029a57600080fd5b50356001600160e01b031916610ce4565b604080519115158252519081900360200190f35b6102c7610d07565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103015781810151838201526020016102e9565b50505050905090810190601f16801561032e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103596004803603602081101561035257600080fd5b5035610d9e565b604080516001600160a01b039092168252519081900360200190f35b6103a16004803603604081101561038b57600080fd5b506001600160a01b038135169060200135610e00565b005b610359610edb565b6103b3610eea565b60408051918252519081900360200190f35b6103a1600480360360608110156103db57600080fd5b506001600160a01b03813581169160208101359091169060400135610efb565b6103b36004803603602081101561041157600080fd5b5035610f52565b6103b3600480360360e081101561042e57600080fd5b50803590602081013561ffff90811691604081013560ff1691606082013581169160808101359160a0820135169060c001356001600160a01b0316610f67565b6103a16004803603604081101561048457600080fd5b50803590602001356001600160a01b03166110a0565b6103b3600480360360408110156104b057600080fd5b506001600160a01b038135169060200135611107565b6103a1611138565b6103596111a4565b6103a1600480360360408110156104ec57600080fd5b50803590602001356001600160a01b03166111b3565b6103a16004803603606081101561051857600080fd5b506001600160a01b03813581169160208101359091169060400135611214565b6105596004803603602081101561054e57600080fd5b503561ffff1661122f565b6040805161ffff83166060820152608080825286519082015285519091829160208084019284019160a08501918a019080838360005b838110156105a757818101518382015260200161058f565b50505050905090810190601f1680156105d45780820380516001836020036101000a031916815260200191505b50848103835287518152875160209182019189019080838360005b838110156106075781810151838201526020016105ef565b50505050905090810190601f1680156106345780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b8381101561066757818101518382015260200161064f565b50505050905090810190601f1680156106945780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6106de600480360360608110156106bd57600080fd5b506001600160a01b038135169060ff602082013581169160400135166114d7565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561071a578181015183820152602001610702565b505050509050019250505060405180910390f35b6103b36004803603602081101561074457600080fd5b503561161d565b6103a16004803603602081101561076157600080fd5b50356001600160a01b0316611639565b6103a16004803603602081101561078757600080fd5b50356001600160a01b0316611711565b610359600480360360208110156107ad57600080fd5b503561173e565b6102c761176c565b6103b3600480360360208110156107d257600080fd5b50356001600160a01b03166117cd565b6103a1611835565b6103596118d7565b6103596004803603604081101561080857600080fd5b50803590602001356118e6565b6108326004803603602081101561082b57600080fd5b5035611904565b604051808781526020018661ffff1661ffff1681526020018581526020018461ffff1661ffff168152602001806020018361ffff1661ffff168152602001828103825284818151815260200191508051906020019080838360008381101561066757818101518382015260200161064f565b6102ab600480360360408110156108ba57600080fd5b50803590602001356001600160a01b0316611a86565b6102c7611aa4565b6103a1600480360360208110156108ee57600080fd5b50356001600160a01b0316611b05565b6103a16004803603602081101561091457600080fd5b810190602081018135600160201b81111561092e57600080fd5b82018360208201111561094057600080fd5b803590602001918460018302840111600160201b8311171561096157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611b2f945050505050565b6103b3600480360360408110156109b857600080fd5b50803590602001356001600160a01b0316611b90565b6103b3611cd9565b6103a1600480360360408110156109ec57600080fd5b506001600160a01b0381351690602001351515611cde565b6103a160048036036080811015610a1a57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b811115610a5457600080fd5b820183602082011115610a6657600080fd5b803590602001918460018302840111600160201b83111715610a8757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611de3945050505050565b6102c760048036036020811015610ade57600080fd5b5035611e41565b6103b360048036036020811015610afb57600080fd5b50356120e8565b6103a160048036036020811015610b1857600080fd5b50356001600160a01b03166120ff565b6103b3612129565b6103a160048036036040811015610b4657600080fd5b50803590602001356001600160a01b031661214c565b6103596121a5565b610b8160048036036020811015610b7a57600080fd5b50356121b4565b60405180806020018561ffff1661ffff1681526020018460ff1660ff1681526020018360ff1660ff168152602001828103825286818151815260200191508051906020019080838360005b83811015610be4578181015183820152602001610bcc565b50505050905090810190601f168015610c115780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b6103a160048036036020811015610c3857600080fd5b810190602081018135600160201b811115610c5257600080fd5b820183602082011115610c6457600080fd5b803590602001918460208302840111600160201b83111715610c8557600080fd5b509092509050612312565b6102ab60048036036040811015610ca657600080fd5b506001600160a01b038135811691602001351661244d565b6103a160048036036020811015610cd457600080fd5b50356001600160a01b031661247b565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b60098054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610d935780601f10610d6857610100808354040283529160200191610d93565b820191906000526020600020905b815481529060010190602001808311610d7657829003601f168201915b505050505090505b90565b6000610da982612573565b610de45760405162461bcd60e51b815260040180806020018281038252602c8152602001806134d8602c913960400191505060405180910390fd5b506000908152600760205260409020546001600160a01b031690565b6000610e0b8261173e565b9050806001600160a01b0316836001600160a01b03161415610e5e5760405162461bcd60e51b815260040180806020018281038252602181526020018061357c6021913960400191505060405180910390fd5b806001600160a01b0316610e70612586565b6001600160a01b03161480610e915750610e9181610e8c612586565b61244d565b610ecc5760405162461bcd60e51b815260040180806020018281038252603881526020018061342b6038913960400191505060405180910390fd5b610ed68383612590565b505050565b600d546001600160a01b031681565b6000610ef660056125fe565b905090565b610f0c610f06612586565b82612609565b610f475760405162461bcd60e51b815260040180806020018281038252603181526020018061359d6031913960400191505060405180910390fd5b610ed68383836126ad565b60009081526001602052604090206002015490565b604080516a4d494e5445525f524f4c4560a81b8152905190819003600b019020600090610f9b90610f96612586565b611a86565b610fe5576040805162461bcd60e51b815260206004820152601660248201527529b2b73232b91034b9903737ba10309036b4b73a32b960511b604482015290519081900360640190fd5b600d5460408051630115238360e01b8152600481018b905261ffff808b16602483015260ff8a166044830152808916606483015260848201889052861660a482015290516000926001600160a01b03169163011523839160c480830192602092919082900301818787803b15801561105c57600080fd5b505af1158015611070573d6000803e3d6000fd5b505050506040513d602081101561108657600080fd5b50519050611094838261280b565b98975050505050505050565b6000828152600160205260409020600201546110be90610f96612586565b6110f95760405162461bcd60e51b815260040180806020018281038252602f815260200180613324602f913960400191505060405180910390fd5b6111038282612945565b5050565b6001600160a01b038216600090815260046020526040812061112f908363ffffffff6129b416565b90505b92915050565b611140612586565b6000546001600160a01b03908116911614611190576040805162461bcd60e51b81526020600482018190526024820152600080516020613504833981519152604482015290519081900360640190fd5b600280546001600160a01b03191630179055565b6002546001600160a01b031690565b6111bb612586565b6001600160a01b0316816001600160a01b03161461120a5760405162461bcd60e51b815260040180806020018281038252602f8152602001806135ce602f913960400191505060405180910390fd5b61110382826129c0565b610ed683838360405180602001604052806000815250611de3565b600d54604080516309473a5760e31b815261ffff841660048201529051606092839283926000926001600160a01b031691634a39d2b89160248083019286929190829003018186803b15801561128457600080fd5b505afa158015611298573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260808110156112c157600080fd5b8101908080516040519392919084600160201b8211156112e057600080fd5b9083019060208201858111156112f557600080fd5b8251600160201b81118282018810171561130e57600080fd5b82525081516020918201929091019080838360005b8381101561133b578181015183820152602001611323565b50505050905090810190601f1680156113685780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b82111561138a57600080fd5b90830190602082018581111561139f57600080fd5b8251600160201b8111828201881017156113b857600080fd5b82525081516020918201929091019080838360005b838110156113e55781810151838201526020016113cd565b50505050905090810190601f1680156114125780820380516001836020036101000a031916815260200191505b5060405260200180516040519392919084600160201b82111561143457600080fd5b90830190602082018581111561144957600080fd5b8251600160201b81118282018810171561146257600080fd5b82525081516020918201929091019080838360005b8381101561148f578181015183820152602001611477565b50505050905090810190601f1680156114bc5780820380516001836020036101000a031916815260200191505b5060405260200151949a939950919750929550909350505050565b60408051630dade9a760e21b81523060048201526001600160a01b038516602482015260ff808516604483015283166064820152905160609173__$6dc487fb79da1fe9b9c445d2980a791dce$__916336b7a69c91608480820192600092909190829003018186803b15801561154c57600080fd5b505af4158015611560573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561158957600080fd5b8101908080516040519392919084600160201b8211156115a857600080fd5b9083019060208201858111156115bd57600080fd5b82518660208202830111600160201b821117156115d957600080fd5b82525081516020918201928201910280838360005b838110156116065781810151838201526020016115ee565b5050505090500160405250505090505b9392505050565b60008061163160058463ffffffff612a2f16565b509392505050565b611641612586565b6000546001600160a01b03908116911614611691576040805162461bcd60e51b81526020600482018190526024820152600080516020613504833981519152604482015290519081900360640190fd5b600e546001600160a01b0316156116ef576040805162461bcd60e51b815260206004820152601860248201527f4e657874436f6e747261637420616c7265616479207365740000000000000000604482015290519081900360640190fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b604080516a4d494e5445525f524f4c4560a81b8152905190819003600b01902061173b90826111b3565b50565b60006111328260405180606001604052806029815260200161348d602991396005919063ffffffff612a4b16565b600c8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610d935780601f10610d6857610100808354040283529160200191610d93565b60006001600160a01b0382166118145760405162461bcd60e51b815260040180806020018281038252602a815260200180613463602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600460205260409020611132906125fe565b61183d612586565b6000546001600160a01b0390811691161461188d576040805162461bcd60e51b81526020600482018190526024820152600080516020613504833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600082815260016020526040812061112f908363ffffffff6129b416565b60008060008060606000600d60009054906101000a90046001600160a01b03166001600160a01b0316639188d312886040518263ffffffff1660e01b81526004018082815260200191505060006040518083038186803b15801561196757600080fd5b505afa15801561197b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260c08110156119a457600080fd5b8151602083015160408085015160608601516080870180519351959794969295919491939282019284600160201b8211156119de57600080fd5b9083019060208201858111156119f357600080fd5b8251600160201b811182820188101715611a0c57600080fd5b82525081516020918201929091019080838360005b83811015611a39578181015183820152602001611a21565b50505050905090810190601f168015611a665780820380516001836020036101000a031916815260200191505b5060405260200151969e959d50939b509199509750929550909350505050565b600082815260016020526040812061112f908363ffffffff612a5816565b600a8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610d935780601f10610d6857610100808354040283529160200191610d93565b604080516a4d494e5445525f524f4c4560a81b8152905190819003600b01902061173b90826110a0565b611b37612586565b6000546001600160a01b03908116911614611b87576040805162461bcd60e51b81526020600482018190526024820152600080516020613504833981519152604482015290519081900360640190fd5b61173b81612a6d565b604080516a4d494e5445525f524f4c4560a81b8152905190819003600b019020600090611bbf90610f96612586565b611c09576040805162461bcd60e51b815260206004820152601660248201527529b2b73232b91034b9903737ba10309036b4b73a32b960511b604482015290519081900360640190fd5b600d5460408051632571aa0760e11b81526004810186905290516001600160a01b0390921691634ae3540e91602480820192602092909190829003018186803b158015611c5557600080fd5b505afa158015611c69573d6000803e3d6000fd5b505050506040513d6020811015611c7f57600080fd5b5051611cc8576040805162461bcd60e51b815260206004820152601360248201527210d85c9908191bd95cc81b9bdd08195e1a5cdd606a1b604482015290519081900360640190fd5b611cd2828461280b565b5090919050565b600081565b611ce6612586565b6001600160a01b0316826001600160a01b03161415611d4c576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060086000611d59612586565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155611d9d612586565b60408051841515815290516001600160a01b0392909216917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319181900360200190a35050565b611df4611dee612586565b83612609565b611e2f5760405162461bcd60e51b815260040180806020018281038252603181526020018061359d6031913960400191505060405180910390fd5b611e3b84848484612a80565b50505050565b6060611e4c82612573565b611e875760405162461bcd60e51b815260040180806020018281038252602f81526020018061354d602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015611f1c5780601f10611ef157610100808354040283529160200191611f1c565b820191906000526020600020905b815481529060010190602001808311611eff57829003601f168201915b5050600c5493945050505060026000196101006001841615020190911604611f45579050610d02565b80511561201657600c816040516020018083805460018160011615610100020316600290048015611fad5780601f10611f8b576101008083540402835291820191611fad565b820191906000526020600020905b815481529060010190602001808311611f99575b5050825160208401908083835b60208310611fd95780518252601f199092019160209182019101611fba565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050610d02565b600c61202184612ad2565b604051602001808380546001816001161561010002031660029004801561207f5780601f1061205d57610100808354040283529182019161207f565b820191906000526020600020905b81548152906001019060200180831161206b575b5050825160208401908083835b602083106120ab5780518252601f19909201916020918201910161208c565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050919050565b6000818152600160205260408120611132906125fe565b604080516a4d494e5445525f524f4c4560a81b8152905190819003600b01902061173b908261214c565b604080516a4d494e5445525f524f4c4560a81b8152905190819003600b01902081565b60008281526001602052604090206002015461216a90610f96612586565b61120a5760405162461bcd60e51b81526004018080602001828103825260308152602001806133fb6030913960400191505060405180910390fd5b600e546001600160a01b031681565b600d5460408051631cab5c9d60e31b8152600481018490529051606092600092839283926001600160a01b03169163e55ae4e89160248083019286929190829003018186803b15801561220657600080fd5b505afa15801561221a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052608081101561224357600080fd5b8101908080516040519392919084600160201b82111561226257600080fd5b90830190602082018581111561227757600080fd5b8251600160201b81118282018810171561229057600080fd5b82525081516020918201929091019080838360005b838110156122bd5781810151838201526020016122a5565b50505050905090810190601f1680156122ea5780820380516001836020036101000a031916815260200191505b506040908152602082015190820151606090920151949a909950909750929550919350505050565b600e546001600160a01b0316612367576040805162461bcd60e51b815260206004820152601560248201527413995e1d0818dbdb9d1c9858dd081b9bdd081cd95d605a1b604482015290519081900360640190fd5b60005b8181101561239e5761239661237d612586565b3085858581811061238a57fe5b90506020020135610efb565b60010161236a565b50600e546001600160a01b031663e884703f83836123ba612586565b604080516001600160e01b031960e087901b1681526001600160a01b038316602482015260048101918252604481018490528190606401856020860280828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b15801561243157600080fd5b505af1158015612445573d6000803e3d6000fd5b505050505050565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b612483612586565b6000546001600160a01b039081169116146124d3576040805162461bcd60e51b81526020600482018190526024820152600080516020613504833981519152604482015290519081900360640190fd5b6001600160a01b0381166125185760405162461bcd60e51b81526004018080602001828103825260268152602001806133856026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600061113260058363ffffffff612bad16565b6000610ef6612bb9565b600081815260076020526040902080546001600160a01b0319166001600160a01b03841690811790915581906125c58261173e565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061113282612be4565b600061261482612573565b61264f5760405162461bcd60e51b815260040180806020018281038252602c8152602001806133cf602c913960400191505060405180910390fd5b600061265a8361173e565b9050806001600160a01b0316846001600160a01b031614806126955750836001600160a01b031661268a84610d9e565b6001600160a01b0316145b806126a557506126a5818561244d565b949350505050565b826001600160a01b03166126c08261173e565b6001600160a01b0316146127055760405162461bcd60e51b81526004018080602001828103825260298152602001806135246029913960400191505060405180910390fd5b6001600160a01b03821661274a5760405162461bcd60e51b81526004018080602001828103825260248152602001806133ab6024913960400191505060405180910390fd5b612755838383610ed6565b612760600082612590565b6001600160a01b0383166000908152600460205260409020612788908263ffffffff612be816565b506001600160a01b03821660009081526004602052604090206127b1908263ffffffff612bf416565b506127c46005828463ffffffff612c0016565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6001600160a01b038216612866576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b61286f81612573565b156128c1576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b6128cd60008383610ed6565b6001600160a01b03821660009081526004602052604090206128f5908263ffffffff612bf416565b506129086005828463ffffffff612c0016565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000828152600160205260409020612963908263ffffffff612c1616565b1561110357612970612586565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061112f8383612c2b565b60008281526001602052604090206129de908263ffffffff612c8f16565b15611103576129eb612586565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000808080612a3e8686612ca4565b9097909650945050505050565b60006126a5848484612d1f565b600061112f836001600160a01b038416612de9565b805161110390600c906020840190613269565b612a8b8484846126ad565b612a9784848484612e01565b611e3b5760405162461bcd60e51b81526004018080602001828103825260328152602001806133536032913960400191505060405180910390fd5b606081612af757506040805180820190915260018152600360fc1b6020820152610d02565b8160005b8115612b0f57600101600a82049150612afb565b60608167ffffffffffffffff81118015612b2857600080fd5b506040519080825280601f01601f191660200182016040528015612b53576020820181803683370190505b50859350905060001982015b8315612ba457600a840660300160f81b82828060019003935081518110612b8257fe5b60200101906001600160f81b031916908160001a905350600a84049350612b5f565b50949350505050565b600061112f8383612de9565b6002546000906001600160a01b03163314612bd5575033610d9b565b612bdd61303c565b9050610d9b565b5490565b600061112f8383613089565b600061112f838361314f565b60006126a584846001600160a01b038516613199565b600061112f836001600160a01b03841661314f565b81546000908210612c6d5760405162461bcd60e51b81526004018080602001828103825260228152602001806133026022913960400191505060405180910390fd5b826000018281548110612c7c57fe5b9060005260206000200154905092915050565b600061112f836001600160a01b038416613089565b815460009081908310612ce85760405162461bcd60e51b81526004018080602001828103825260228152602001806134b66022913960400191505060405180910390fd5b6000846000018481548110612cf957fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b60008281526001840160205260408120548281612dba5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612d7f578181015183820152602001612d67565b50505050905090810190601f168015612dac5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50846000016001820381548110612dcd57fe5b9060005260206000209060020201600101549150509392505050565b60009081526001919091016020526040902054151590565b6000612e15846001600160a01b0316613230565b612e21575060016126a5565b600060606001600160a01b038616630a85bd0160e11b612e3f612586565b89888860405160240180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612eb8578181015183820152602001612ea0565b50505050905090810190601f168015612ee55780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909a16999099178952518151919890975087965094509250829150849050835b60208310612f4d5780518252601f199092019160209182019101612f2e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612faf576040519150601f19603f3d011682016040523d82523d6000602084013e612fb4565b606091505b50915091508161300557805115612fce5780518082602001fd5b60405162461bcd60e51b81526004018080602001828103825260328152602001806133536032913960400191505060405180910390fd5b600081806020019051602081101561301c57600080fd5b50516001600160e01b031916630a85bd0160e11b1493506126a592505050565b600060606000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031692915050565b6000818152600183016020526040812054801561314557835460001980830191908101906000908790839081106130bc57fe5b90600052602060002001549050808760000184815481106130d957fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061310957fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050611132565b6000915050611132565b600061315b8383612de9565b61319157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611132565b506000611132565b6000828152600184016020526040812054806131fe575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055611616565b8285600001600183038154811061321157fe5b9060005260206000209060020201600101819055506000915050611616565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906126a5575050151592915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106132aa57805160ff19168380011785556132d7565b828001600101855582156132d7579182015b828111156132d75782518255916020019190600101906132bc565b506132e39291506132e7565b5090565b610d9b91905b808211156132e357600081556001016132ed56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e744552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b654552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65724552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66a26469706673582212207912b05e0717370978fff8a1fba4936e646b8bf8392e1984868ec68f705e6d1f64736f6c63430006060033"
  8997  
  8998  // DeploySorareTokens deploys a new Ethereum contract, binding an instance of SorareTokens to it.
  8999  func DeploySorareTokens(auth *bind.TransactOpts, backend bind.ContractBackend, sorareCardsAddress common.Address, relayAddress common.Address) (common.Address, *types.Transaction, *SorareTokens, error) {
  9000  	parsed, err := abi.JSON(strings.NewReader(SorareTokensABI))
  9001  	if err != nil {
  9002  		return common.Address{}, nil, nil, err
  9003  	}
  9004  
  9005  	nFTClientAddr, _, _, _ := DeployNFTClient(auth, backend)
  9006  	SorareTokensBin = strings.Replace(SorareTokensBin, "__$6dc487fb79da1fe9b9c445d2980a791dce$__", nFTClientAddr.String()[2:], -1)
  9007  
  9008  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SorareTokensBin), backend, sorareCardsAddress, relayAddress)
  9009  	if err != nil {
  9010  		return common.Address{}, nil, nil, err
  9011  	}
  9012  	return address, tx, &SorareTokens{SorareTokensCaller: SorareTokensCaller{contract: contract}, SorareTokensTransactor: SorareTokensTransactor{contract: contract}, SorareTokensFilterer: SorareTokensFilterer{contract: contract}}, nil
  9013  }
  9014  
  9015  // SorareTokens is an auto generated Go binding around an Ethereum contract.
  9016  type SorareTokens struct {
  9017  	SorareTokensCaller     // Read-only binding to the contract
  9018  	SorareTokensTransactor // Write-only binding to the contract
  9019  	SorareTokensFilterer   // Log filterer for contract events
  9020  }
  9021  
  9022  // SorareTokensCaller is an auto generated read-only Go binding around an Ethereum contract.
  9023  type SorareTokensCaller struct {
  9024  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9025  }
  9026  
  9027  // SorareTokensTransactor is an auto generated write-only Go binding around an Ethereum contract.
  9028  type SorareTokensTransactor struct {
  9029  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9030  }
  9031  
  9032  // SorareTokensFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  9033  type SorareTokensFilterer struct {
  9034  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9035  }
  9036  
  9037  // SorareTokensSession is an auto generated Go binding around an Ethereum contract,
  9038  // with pre-set call and transact options.
  9039  type SorareTokensSession struct {
  9040  	Contract     *SorareTokens     // Generic contract binding to set the session for
  9041  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  9042  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  9043  }
  9044  
  9045  // SorareTokensCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  9046  // with pre-set call options.
  9047  type SorareTokensCallerSession struct {
  9048  	Contract *SorareTokensCaller // Generic contract caller binding to set the session for
  9049  	CallOpts bind.CallOpts       // Call options to use throughout this session
  9050  }
  9051  
  9052  // SorareTokensTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  9053  // with pre-set transact options.
  9054  type SorareTokensTransactorSession struct {
  9055  	Contract     *SorareTokensTransactor // Generic contract transactor binding to set the session for
  9056  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
  9057  }
  9058  
  9059  // SorareTokensRaw is an auto generated low-level Go binding around an Ethereum contract.
  9060  type SorareTokensRaw struct {
  9061  	Contract *SorareTokens // Generic contract binding to access the raw methods on
  9062  }
  9063  
  9064  // SorareTokensCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  9065  type SorareTokensCallerRaw struct {
  9066  	Contract *SorareTokensCaller // Generic read-only contract binding to access the raw methods on
  9067  }
  9068  
  9069  // SorareTokensTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  9070  type SorareTokensTransactorRaw struct {
  9071  	Contract *SorareTokensTransactor // Generic write-only contract binding to access the raw methods on
  9072  }
  9073  
  9074  // NewSorareTokens creates a new instance of SorareTokens, bound to a specific deployed contract.
  9075  func NewSorareTokens(address common.Address, backend bind.ContractBackend) (*SorareTokens, error) {
  9076  	contract, err := bindSorareTokens(address, backend, backend, backend)
  9077  	if err != nil {
  9078  		return nil, err
  9079  	}
  9080  	return &SorareTokens{SorareTokensCaller: SorareTokensCaller{contract: contract}, SorareTokensTransactor: SorareTokensTransactor{contract: contract}, SorareTokensFilterer: SorareTokensFilterer{contract: contract}}, nil
  9081  }
  9082  
  9083  // NewSorareTokensCaller creates a new read-only instance of SorareTokens, bound to a specific deployed contract.
  9084  func NewSorareTokensCaller(address common.Address, caller bind.ContractCaller) (*SorareTokensCaller, error) {
  9085  	contract, err := bindSorareTokens(address, caller, nil, nil)
  9086  	if err != nil {
  9087  		return nil, err
  9088  	}
  9089  	return &SorareTokensCaller{contract: contract}, nil
  9090  }
  9091  
  9092  // NewSorareTokensTransactor creates a new write-only instance of SorareTokens, bound to a specific deployed contract.
  9093  func NewSorareTokensTransactor(address common.Address, transactor bind.ContractTransactor) (*SorareTokensTransactor, error) {
  9094  	contract, err := bindSorareTokens(address, nil, transactor, nil)
  9095  	if err != nil {
  9096  		return nil, err
  9097  	}
  9098  	return &SorareTokensTransactor{contract: contract}, nil
  9099  }
  9100  
  9101  // NewSorareTokensFilterer creates a new log filterer instance of SorareTokens, bound to a specific deployed contract.
  9102  func NewSorareTokensFilterer(address common.Address, filterer bind.ContractFilterer) (*SorareTokensFilterer, error) {
  9103  	contract, err := bindSorareTokens(address, nil, nil, filterer)
  9104  	if err != nil {
  9105  		return nil, err
  9106  	}
  9107  	return &SorareTokensFilterer{contract: contract}, nil
  9108  }
  9109  
  9110  // bindSorareTokens binds a generic wrapper to an already deployed contract.
  9111  func bindSorareTokens(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  9112  	parsed, err := abi.JSON(strings.NewReader(SorareTokensABI))
  9113  	if err != nil {
  9114  		return nil, err
  9115  	}
  9116  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  9117  }
  9118  
  9119  // Call invokes the (constant) contract method with params as input values and
  9120  // sets the output to result. The result type might be a single field for simple
  9121  // returns, a slice of interfaces for anonymous returns and a struct for named
  9122  // returns.
  9123  func (_SorareTokens *SorareTokensRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  9124  	return _SorareTokens.Contract.SorareTokensCaller.contract.Call(opts, result, method, params...)
  9125  }
  9126  
  9127  // Transfer initiates a plain transaction to move funds to the contract, calling
  9128  // its default method if one is available.
  9129  func (_SorareTokens *SorareTokensRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  9130  	return _SorareTokens.Contract.SorareTokensTransactor.contract.Transfer(opts)
  9131  }
  9132  
  9133  // Transact invokes the (paid) contract method with params as input values.
  9134  func (_SorareTokens *SorareTokensRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  9135  	return _SorareTokens.Contract.SorareTokensTransactor.contract.Transact(opts, method, params...)
  9136  }
  9137  
  9138  // Call invokes the (constant) contract method with params as input values and
  9139  // sets the output to result. The result type might be a single field for simple
  9140  // returns, a slice of interfaces for anonymous returns and a struct for named
  9141  // returns.
  9142  func (_SorareTokens *SorareTokensCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  9143  	return _SorareTokens.Contract.contract.Call(opts, result, method, params...)
  9144  }
  9145  
  9146  // Transfer initiates a plain transaction to move funds to the contract, calling
  9147  // its default method if one is available.
  9148  func (_SorareTokens *SorareTokensTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  9149  	return _SorareTokens.Contract.contract.Transfer(opts)
  9150  }
  9151  
  9152  // Transact invokes the (paid) contract method with params as input values.
  9153  func (_SorareTokens *SorareTokensTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  9154  	return _SorareTokens.Contract.contract.Transact(opts, method, params...)
  9155  }
  9156  
  9157  // DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf.
  9158  //
  9159  // Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32)
  9160  func (_SorareTokens *SorareTokensCaller) DEFAULTADMINROLE(opts *bind.CallOpts) ([32]byte, error) {
  9161  	var out []interface{}
  9162  	err := _SorareTokens.contract.Call(opts, &out, "DEFAULT_ADMIN_ROLE")
  9163  
  9164  	if err != nil {
  9165  		return *new([32]byte), err
  9166  	}
  9167  
  9168  	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
  9169  
  9170  	return out0, err
  9171  
  9172  }
  9173  
  9174  // DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf.
  9175  //
  9176  // Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32)
  9177  func (_SorareTokens *SorareTokensSession) DEFAULTADMINROLE() ([32]byte, error) {
  9178  	return _SorareTokens.Contract.DEFAULTADMINROLE(&_SorareTokens.CallOpts)
  9179  }
  9180  
  9181  // DEFAULTADMINROLE is a free data retrieval call binding the contract method 0xa217fddf.
  9182  //
  9183  // Solidity: function DEFAULT_ADMIN_ROLE() view returns(bytes32)
  9184  func (_SorareTokens *SorareTokensCallerSession) DEFAULTADMINROLE() ([32]byte, error) {
  9185  	return _SorareTokens.Contract.DEFAULTADMINROLE(&_SorareTokens.CallOpts)
  9186  }
  9187  
  9188  // MINTERROLE is a free data retrieval call binding the contract method 0xd5391393.
  9189  //
  9190  // Solidity: function MINTER_ROLE() view returns(bytes32)
  9191  func (_SorareTokens *SorareTokensCaller) MINTERROLE(opts *bind.CallOpts) ([32]byte, error) {
  9192  	var out []interface{}
  9193  	err := _SorareTokens.contract.Call(opts, &out, "MINTER_ROLE")
  9194  
  9195  	if err != nil {
  9196  		return *new([32]byte), err
  9197  	}
  9198  
  9199  	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
  9200  
  9201  	return out0, err
  9202  
  9203  }
  9204  
  9205  // MINTERROLE is a free data retrieval call binding the contract method 0xd5391393.
  9206  //
  9207  // Solidity: function MINTER_ROLE() view returns(bytes32)
  9208  func (_SorareTokens *SorareTokensSession) MINTERROLE() ([32]byte, error) {
  9209  	return _SorareTokens.Contract.MINTERROLE(&_SorareTokens.CallOpts)
  9210  }
  9211  
  9212  // MINTERROLE is a free data retrieval call binding the contract method 0xd5391393.
  9213  //
  9214  // Solidity: function MINTER_ROLE() view returns(bytes32)
  9215  func (_SorareTokens *SorareTokensCallerSession) MINTERROLE() ([32]byte, error) {
  9216  	return _SorareTokens.Contract.MINTERROLE(&_SorareTokens.CallOpts)
  9217  }
  9218  
  9219  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  9220  //
  9221  // Solidity: function balanceOf(address owner) view returns(uint256)
  9222  func (_SorareTokens *SorareTokensCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  9223  	var out []interface{}
  9224  	err := _SorareTokens.contract.Call(opts, &out, "balanceOf", owner)
  9225  
  9226  	if err != nil {
  9227  		return *new(*big.Int), err
  9228  	}
  9229  
  9230  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  9231  
  9232  	return out0, err
  9233  
  9234  }
  9235  
  9236  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  9237  //
  9238  // Solidity: function balanceOf(address owner) view returns(uint256)
  9239  func (_SorareTokens *SorareTokensSession) BalanceOf(owner common.Address) (*big.Int, error) {
  9240  	return _SorareTokens.Contract.BalanceOf(&_SorareTokens.CallOpts, owner)
  9241  }
  9242  
  9243  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  9244  //
  9245  // Solidity: function balanceOf(address owner) view returns(uint256)
  9246  func (_SorareTokens *SorareTokensCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  9247  	return _SorareTokens.Contract.BalanceOf(&_SorareTokens.CallOpts, owner)
  9248  }
  9249  
  9250  // BaseURI is a free data retrieval call binding the contract method 0x6c0360eb.
  9251  //
  9252  // Solidity: function baseURI() view returns(string)
  9253  func (_SorareTokens *SorareTokensCaller) BaseURI(opts *bind.CallOpts) (string, error) {
  9254  	var out []interface{}
  9255  	err := _SorareTokens.contract.Call(opts, &out, "baseURI")
  9256  
  9257  	if err != nil {
  9258  		return *new(string), err
  9259  	}
  9260  
  9261  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  9262  
  9263  	return out0, err
  9264  
  9265  }
  9266  
  9267  // BaseURI is a free data retrieval call binding the contract method 0x6c0360eb.
  9268  //
  9269  // Solidity: function baseURI() view returns(string)
  9270  func (_SorareTokens *SorareTokensSession) BaseURI() (string, error) {
  9271  	return _SorareTokens.Contract.BaseURI(&_SorareTokens.CallOpts)
  9272  }
  9273  
  9274  // BaseURI is a free data retrieval call binding the contract method 0x6c0360eb.
  9275  //
  9276  // Solidity: function baseURI() view returns(string)
  9277  func (_SorareTokens *SorareTokensCallerSession) BaseURI() (string, error) {
  9278  	return _SorareTokens.Contract.BaseURI(&_SorareTokens.CallOpts)
  9279  }
  9280  
  9281  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  9282  //
  9283  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  9284  func (_SorareTokens *SorareTokensCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  9285  	var out []interface{}
  9286  	err := _SorareTokens.contract.Call(opts, &out, "getApproved", tokenId)
  9287  
  9288  	if err != nil {
  9289  		return *new(common.Address), err
  9290  	}
  9291  
  9292  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  9293  
  9294  	return out0, err
  9295  
  9296  }
  9297  
  9298  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  9299  //
  9300  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  9301  func (_SorareTokens *SorareTokensSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  9302  	return _SorareTokens.Contract.GetApproved(&_SorareTokens.CallOpts, tokenId)
  9303  }
  9304  
  9305  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  9306  //
  9307  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  9308  func (_SorareTokens *SorareTokensCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  9309  	return _SorareTokens.Contract.GetApproved(&_SorareTokens.CallOpts, tokenId)
  9310  }
  9311  
  9312  // GetCard is a free data retrieval call binding the contract method 0x9188d312.
  9313  //
  9314  // Solidity: function getCard(uint256 tokenId) view returns(uint256 playerId, uint16 season, uint256 scarcity, uint16 serialNumber, bytes metadata, uint16 clubId)
  9315  func (_SorareTokens *SorareTokensCaller) GetCard(opts *bind.CallOpts, tokenId *big.Int) (struct {
  9316  	PlayerId     *big.Int
  9317  	Season       uint16
  9318  	Scarcity     *big.Int
  9319  	SerialNumber uint16
  9320  	Metadata     []byte
  9321  	ClubId       uint16
  9322  }, error) {
  9323  	var out []interface{}
  9324  	err := _SorareTokens.contract.Call(opts, &out, "getCard", tokenId)
  9325  
  9326  	outstruct := new(struct {
  9327  		PlayerId     *big.Int
  9328  		Season       uint16
  9329  		Scarcity     *big.Int
  9330  		SerialNumber uint16
  9331  		Metadata     []byte
  9332  		ClubId       uint16
  9333  	})
  9334  
  9335  	outstruct.PlayerId = out[0].(*big.Int)
  9336  	outstruct.Season = out[1].(uint16)
  9337  	outstruct.Scarcity = out[2].(*big.Int)
  9338  	outstruct.SerialNumber = out[3].(uint16)
  9339  	outstruct.Metadata = out[4].([]byte)
  9340  	outstruct.ClubId = out[5].(uint16)
  9341  
  9342  	return *outstruct, err
  9343  
  9344  }
  9345  
  9346  // GetCard is a free data retrieval call binding the contract method 0x9188d312.
  9347  //
  9348  // Solidity: function getCard(uint256 tokenId) view returns(uint256 playerId, uint16 season, uint256 scarcity, uint16 serialNumber, bytes metadata, uint16 clubId)
  9349  func (_SorareTokens *SorareTokensSession) GetCard(tokenId *big.Int) (struct {
  9350  	PlayerId     *big.Int
  9351  	Season       uint16
  9352  	Scarcity     *big.Int
  9353  	SerialNumber uint16
  9354  	Metadata     []byte
  9355  	ClubId       uint16
  9356  }, error) {
  9357  	return _SorareTokens.Contract.GetCard(&_SorareTokens.CallOpts, tokenId)
  9358  }
  9359  
  9360  // GetCard is a free data retrieval call binding the contract method 0x9188d312.
  9361  //
  9362  // Solidity: function getCard(uint256 tokenId) view returns(uint256 playerId, uint16 season, uint256 scarcity, uint16 serialNumber, bytes metadata, uint16 clubId)
  9363  func (_SorareTokens *SorareTokensCallerSession) GetCard(tokenId *big.Int) (struct {
  9364  	PlayerId     *big.Int
  9365  	Season       uint16
  9366  	Scarcity     *big.Int
  9367  	SerialNumber uint16
  9368  	Metadata     []byte
  9369  	ClubId       uint16
  9370  }, error) {
  9371  	return _SorareTokens.Contract.GetCard(&_SorareTokens.CallOpts, tokenId)
  9372  }
  9373  
  9374  // GetClub is a free data retrieval call binding the contract method 0x4a39d2b8.
  9375  //
  9376  // Solidity: function getClub(uint16 clubId) view returns(string name, string country, string city, uint16 yearFounded)
  9377  func (_SorareTokens *SorareTokensCaller) GetClub(opts *bind.CallOpts, clubId uint16) (struct {
  9378  	Name        string
  9379  	Country     string
  9380  	City        string
  9381  	YearFounded uint16
  9382  }, error) {
  9383  	var out []interface{}
  9384  	err := _SorareTokens.contract.Call(opts, &out, "getClub", clubId)
  9385  
  9386  	outstruct := new(struct {
  9387  		Name        string
  9388  		Country     string
  9389  		City        string
  9390  		YearFounded uint16
  9391  	})
  9392  
  9393  	outstruct.Name = out[0].(string)
  9394  	outstruct.Country = out[1].(string)
  9395  	outstruct.City = out[2].(string)
  9396  	outstruct.YearFounded = out[3].(uint16)
  9397  
  9398  	return *outstruct, err
  9399  
  9400  }
  9401  
  9402  // GetClub is a free data retrieval call binding the contract method 0x4a39d2b8.
  9403  //
  9404  // Solidity: function getClub(uint16 clubId) view returns(string name, string country, string city, uint16 yearFounded)
  9405  func (_SorareTokens *SorareTokensSession) GetClub(clubId uint16) (struct {
  9406  	Name        string
  9407  	Country     string
  9408  	City        string
  9409  	YearFounded uint16
  9410  }, error) {
  9411  	return _SorareTokens.Contract.GetClub(&_SorareTokens.CallOpts, clubId)
  9412  }
  9413  
  9414  // GetClub is a free data retrieval call binding the contract method 0x4a39d2b8.
  9415  //
  9416  // Solidity: function getClub(uint16 clubId) view returns(string name, string country, string city, uint16 yearFounded)
  9417  func (_SorareTokens *SorareTokensCallerSession) GetClub(clubId uint16) (struct {
  9418  	Name        string
  9419  	Country     string
  9420  	City        string
  9421  	YearFounded uint16
  9422  }, error) {
  9423  	return _SorareTokens.Contract.GetClub(&_SorareTokens.CallOpts, clubId)
  9424  }
  9425  
  9426  // GetPlayer is a free data retrieval call binding the contract method 0xe55ae4e8.
  9427  //
  9428  // Solidity: function getPlayer(uint256 playerId) view returns(string name, uint16 yearOfBirth, uint8 monthOfBirth, uint8 dayOfBirth)
  9429  func (_SorareTokens *SorareTokensCaller) GetPlayer(opts *bind.CallOpts, playerId *big.Int) (struct {
  9430  	Name         string
  9431  	YearOfBirth  uint16
  9432  	MonthOfBirth uint8
  9433  	DayOfBirth   uint8
  9434  }, error) {
  9435  	var out []interface{}
  9436  	err := _SorareTokens.contract.Call(opts, &out, "getPlayer", playerId)
  9437  
  9438  	outstruct := new(struct {
  9439  		Name         string
  9440  		YearOfBirth  uint16
  9441  		MonthOfBirth uint8
  9442  		DayOfBirth   uint8
  9443  	})
  9444  
  9445  	outstruct.Name = out[0].(string)
  9446  	outstruct.YearOfBirth = out[1].(uint16)
  9447  	outstruct.MonthOfBirth = out[2].(uint8)
  9448  	outstruct.DayOfBirth = out[3].(uint8)
  9449  
  9450  	return *outstruct, err
  9451  
  9452  }
  9453  
  9454  // GetPlayer is a free data retrieval call binding the contract method 0xe55ae4e8.
  9455  //
  9456  // Solidity: function getPlayer(uint256 playerId) view returns(string name, uint16 yearOfBirth, uint8 monthOfBirth, uint8 dayOfBirth)
  9457  func (_SorareTokens *SorareTokensSession) GetPlayer(playerId *big.Int) (struct {
  9458  	Name         string
  9459  	YearOfBirth  uint16
  9460  	MonthOfBirth uint8
  9461  	DayOfBirth   uint8
  9462  }, error) {
  9463  	return _SorareTokens.Contract.GetPlayer(&_SorareTokens.CallOpts, playerId)
  9464  }
  9465  
  9466  // GetPlayer is a free data retrieval call binding the contract method 0xe55ae4e8.
  9467  //
  9468  // Solidity: function getPlayer(uint256 playerId) view returns(string name, uint16 yearOfBirth, uint8 monthOfBirth, uint8 dayOfBirth)
  9469  func (_SorareTokens *SorareTokensCallerSession) GetPlayer(playerId *big.Int) (struct {
  9470  	Name         string
  9471  	YearOfBirth  uint16
  9472  	MonthOfBirth uint8
  9473  	DayOfBirth   uint8
  9474  }, error) {
  9475  	return _SorareTokens.Contract.GetPlayer(&_SorareTokens.CallOpts, playerId)
  9476  }
  9477  
  9478  // GetRelayAddress is a free data retrieval call binding the contract method 0x32deedc6.
  9479  //
  9480  // Solidity: function getRelayAddress() view returns(address)
  9481  func (_SorareTokens *SorareTokensCaller) GetRelayAddress(opts *bind.CallOpts) (common.Address, error) {
  9482  	var out []interface{}
  9483  	err := _SorareTokens.contract.Call(opts, &out, "getRelayAddress")
  9484  
  9485  	if err != nil {
  9486  		return *new(common.Address), err
  9487  	}
  9488  
  9489  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  9490  
  9491  	return out0, err
  9492  
  9493  }
  9494  
  9495  // GetRelayAddress is a free data retrieval call binding the contract method 0x32deedc6.
  9496  //
  9497  // Solidity: function getRelayAddress() view returns(address)
  9498  func (_SorareTokens *SorareTokensSession) GetRelayAddress() (common.Address, error) {
  9499  	return _SorareTokens.Contract.GetRelayAddress(&_SorareTokens.CallOpts)
  9500  }
  9501  
  9502  // GetRelayAddress is a free data retrieval call binding the contract method 0x32deedc6.
  9503  //
  9504  // Solidity: function getRelayAddress() view returns(address)
  9505  func (_SorareTokens *SorareTokensCallerSession) GetRelayAddress() (common.Address, error) {
  9506  	return _SorareTokens.Contract.GetRelayAddress(&_SorareTokens.CallOpts)
  9507  }
  9508  
  9509  // GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3.
  9510  //
  9511  // Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32)
  9512  func (_SorareTokens *SorareTokensCaller) GetRoleAdmin(opts *bind.CallOpts, role [32]byte) ([32]byte, error) {
  9513  	var out []interface{}
  9514  	err := _SorareTokens.contract.Call(opts, &out, "getRoleAdmin", role)
  9515  
  9516  	if err != nil {
  9517  		return *new([32]byte), err
  9518  	}
  9519  
  9520  	out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte)
  9521  
  9522  	return out0, err
  9523  
  9524  }
  9525  
  9526  // GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3.
  9527  //
  9528  // Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32)
  9529  func (_SorareTokens *SorareTokensSession) GetRoleAdmin(role [32]byte) ([32]byte, error) {
  9530  	return _SorareTokens.Contract.GetRoleAdmin(&_SorareTokens.CallOpts, role)
  9531  }
  9532  
  9533  // GetRoleAdmin is a free data retrieval call binding the contract method 0x248a9ca3.
  9534  //
  9535  // Solidity: function getRoleAdmin(bytes32 role) view returns(bytes32)
  9536  func (_SorareTokens *SorareTokensCallerSession) GetRoleAdmin(role [32]byte) ([32]byte, error) {
  9537  	return _SorareTokens.Contract.GetRoleAdmin(&_SorareTokens.CallOpts, role)
  9538  }
  9539  
  9540  // GetRoleMember is a free data retrieval call binding the contract method 0x9010d07c.
  9541  //
  9542  // Solidity: function getRoleMember(bytes32 role, uint256 index) view returns(address)
  9543  func (_SorareTokens *SorareTokensCaller) GetRoleMember(opts *bind.CallOpts, role [32]byte, index *big.Int) (common.Address, error) {
  9544  	var out []interface{}
  9545  	err := _SorareTokens.contract.Call(opts, &out, "getRoleMember", role, index)
  9546  
  9547  	if err != nil {
  9548  		return *new(common.Address), err
  9549  	}
  9550  
  9551  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  9552  
  9553  	return out0, err
  9554  
  9555  }
  9556  
  9557  // GetRoleMember is a free data retrieval call binding the contract method 0x9010d07c.
  9558  //
  9559  // Solidity: function getRoleMember(bytes32 role, uint256 index) view returns(address)
  9560  func (_SorareTokens *SorareTokensSession) GetRoleMember(role [32]byte, index *big.Int) (common.Address, error) {
  9561  	return _SorareTokens.Contract.GetRoleMember(&_SorareTokens.CallOpts, role, index)
  9562  }
  9563  
  9564  // GetRoleMember is a free data retrieval call binding the contract method 0x9010d07c.
  9565  //
  9566  // Solidity: function getRoleMember(bytes32 role, uint256 index) view returns(address)
  9567  func (_SorareTokens *SorareTokensCallerSession) GetRoleMember(role [32]byte, index *big.Int) (common.Address, error) {
  9568  	return _SorareTokens.Contract.GetRoleMember(&_SorareTokens.CallOpts, role, index)
  9569  }
  9570  
  9571  // GetRoleMemberCount is a free data retrieval call binding the contract method 0xca15c873.
  9572  //
  9573  // Solidity: function getRoleMemberCount(bytes32 role) view returns(uint256)
  9574  func (_SorareTokens *SorareTokensCaller) GetRoleMemberCount(opts *bind.CallOpts, role [32]byte) (*big.Int, error) {
  9575  	var out []interface{}
  9576  	err := _SorareTokens.contract.Call(opts, &out, "getRoleMemberCount", role)
  9577  
  9578  	if err != nil {
  9579  		return *new(*big.Int), err
  9580  	}
  9581  
  9582  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  9583  
  9584  	return out0, err
  9585  
  9586  }
  9587  
  9588  // GetRoleMemberCount is a free data retrieval call binding the contract method 0xca15c873.
  9589  //
  9590  // Solidity: function getRoleMemberCount(bytes32 role) view returns(uint256)
  9591  func (_SorareTokens *SorareTokensSession) GetRoleMemberCount(role [32]byte) (*big.Int, error) {
  9592  	return _SorareTokens.Contract.GetRoleMemberCount(&_SorareTokens.CallOpts, role)
  9593  }
  9594  
  9595  // GetRoleMemberCount is a free data retrieval call binding the contract method 0xca15c873.
  9596  //
  9597  // Solidity: function getRoleMemberCount(bytes32 role) view returns(uint256)
  9598  func (_SorareTokens *SorareTokensCallerSession) GetRoleMemberCount(role [32]byte) (*big.Int, error) {
  9599  	return _SorareTokens.Contract.GetRoleMemberCount(&_SorareTokens.CallOpts, role)
  9600  }
  9601  
  9602  // HasRole is a free data retrieval call binding the contract method 0x91d14854.
  9603  //
  9604  // Solidity: function hasRole(bytes32 role, address account) view returns(bool)
  9605  func (_SorareTokens *SorareTokensCaller) HasRole(opts *bind.CallOpts, role [32]byte, account common.Address) (bool, error) {
  9606  	var out []interface{}
  9607  	err := _SorareTokens.contract.Call(opts, &out, "hasRole", role, account)
  9608  
  9609  	if err != nil {
  9610  		return *new(bool), err
  9611  	}
  9612  
  9613  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  9614  
  9615  	return out0, err
  9616  
  9617  }
  9618  
  9619  // HasRole is a free data retrieval call binding the contract method 0x91d14854.
  9620  //
  9621  // Solidity: function hasRole(bytes32 role, address account) view returns(bool)
  9622  func (_SorareTokens *SorareTokensSession) HasRole(role [32]byte, account common.Address) (bool, error) {
  9623  	return _SorareTokens.Contract.HasRole(&_SorareTokens.CallOpts, role, account)
  9624  }
  9625  
  9626  // HasRole is a free data retrieval call binding the contract method 0x91d14854.
  9627  //
  9628  // Solidity: function hasRole(bytes32 role, address account) view returns(bool)
  9629  func (_SorareTokens *SorareTokensCallerSession) HasRole(role [32]byte, account common.Address) (bool, error) {
  9630  	return _SorareTokens.Contract.HasRole(&_SorareTokens.CallOpts, role, account)
  9631  }
  9632  
  9633  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  9634  //
  9635  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  9636  func (_SorareTokens *SorareTokensCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  9637  	var out []interface{}
  9638  	err := _SorareTokens.contract.Call(opts, &out, "isApprovedForAll", owner, operator)
  9639  
  9640  	if err != nil {
  9641  		return *new(bool), err
  9642  	}
  9643  
  9644  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  9645  
  9646  	return out0, err
  9647  
  9648  }
  9649  
  9650  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  9651  //
  9652  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  9653  func (_SorareTokens *SorareTokensSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  9654  	return _SorareTokens.Contract.IsApprovedForAll(&_SorareTokens.CallOpts, owner, operator)
  9655  }
  9656  
  9657  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  9658  //
  9659  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  9660  func (_SorareTokens *SorareTokensCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  9661  	return _SorareTokens.Contract.IsApprovedForAll(&_SorareTokens.CallOpts, owner, operator)
  9662  }
  9663  
  9664  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  9665  //
  9666  // Solidity: function name() view returns(string)
  9667  func (_SorareTokens *SorareTokensCaller) Name(opts *bind.CallOpts) (string, error) {
  9668  	var out []interface{}
  9669  	err := _SorareTokens.contract.Call(opts, &out, "name")
  9670  
  9671  	if err != nil {
  9672  		return *new(string), err
  9673  	}
  9674  
  9675  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  9676  
  9677  	return out0, err
  9678  
  9679  }
  9680  
  9681  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  9682  //
  9683  // Solidity: function name() view returns(string)
  9684  func (_SorareTokens *SorareTokensSession) Name() (string, error) {
  9685  	return _SorareTokens.Contract.Name(&_SorareTokens.CallOpts)
  9686  }
  9687  
  9688  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  9689  //
  9690  // Solidity: function name() view returns(string)
  9691  func (_SorareTokens *SorareTokensCallerSession) Name() (string, error) {
  9692  	return _SorareTokens.Contract.Name(&_SorareTokens.CallOpts)
  9693  }
  9694  
  9695  // NextContract is a free data retrieval call binding the contract method 0xd8787fde.
  9696  //
  9697  // Solidity: function nextContract() view returns(address)
  9698  func (_SorareTokens *SorareTokensCaller) NextContract(opts *bind.CallOpts) (common.Address, error) {
  9699  	var out []interface{}
  9700  	err := _SorareTokens.contract.Call(opts, &out, "nextContract")
  9701  
  9702  	if err != nil {
  9703  		return *new(common.Address), err
  9704  	}
  9705  
  9706  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  9707  
  9708  	return out0, err
  9709  
  9710  }
  9711  
  9712  // NextContract is a free data retrieval call binding the contract method 0xd8787fde.
  9713  //
  9714  // Solidity: function nextContract() view returns(address)
  9715  func (_SorareTokens *SorareTokensSession) NextContract() (common.Address, error) {
  9716  	return _SorareTokens.Contract.NextContract(&_SorareTokens.CallOpts)
  9717  }
  9718  
  9719  // NextContract is a free data retrieval call binding the contract method 0xd8787fde.
  9720  //
  9721  // Solidity: function nextContract() view returns(address)
  9722  func (_SorareTokens *SorareTokensCallerSession) NextContract() (common.Address, error) {
  9723  	return _SorareTokens.Contract.NextContract(&_SorareTokens.CallOpts)
  9724  }
  9725  
  9726  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  9727  //
  9728  // Solidity: function owner() view returns(address)
  9729  func (_SorareTokens *SorareTokensCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  9730  	var out []interface{}
  9731  	err := _SorareTokens.contract.Call(opts, &out, "owner")
  9732  
  9733  	if err != nil {
  9734  		return *new(common.Address), err
  9735  	}
  9736  
  9737  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  9738  
  9739  	return out0, err
  9740  
  9741  }
  9742  
  9743  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  9744  //
  9745  // Solidity: function owner() view returns(address)
  9746  func (_SorareTokens *SorareTokensSession) Owner() (common.Address, error) {
  9747  	return _SorareTokens.Contract.Owner(&_SorareTokens.CallOpts)
  9748  }
  9749  
  9750  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  9751  //
  9752  // Solidity: function owner() view returns(address)
  9753  func (_SorareTokens *SorareTokensCallerSession) Owner() (common.Address, error) {
  9754  	return _SorareTokens.Contract.Owner(&_SorareTokens.CallOpts)
  9755  }
  9756  
  9757  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  9758  //
  9759  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  9760  func (_SorareTokens *SorareTokensCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  9761  	var out []interface{}
  9762  	err := _SorareTokens.contract.Call(opts, &out, "ownerOf", tokenId)
  9763  
  9764  	if err != nil {
  9765  		return *new(common.Address), err
  9766  	}
  9767  
  9768  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  9769  
  9770  	return out0, err
  9771  
  9772  }
  9773  
  9774  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  9775  //
  9776  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  9777  func (_SorareTokens *SorareTokensSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  9778  	return _SorareTokens.Contract.OwnerOf(&_SorareTokens.CallOpts, tokenId)
  9779  }
  9780  
  9781  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  9782  //
  9783  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  9784  func (_SorareTokens *SorareTokensCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  9785  	return _SorareTokens.Contract.OwnerOf(&_SorareTokens.CallOpts, tokenId)
  9786  }
  9787  
  9788  // SorareCards is a free data retrieval call binding the contract method 0x16b1b0c8.
  9789  //
  9790  // Solidity: function sorareCards() view returns(address)
  9791  func (_SorareTokens *SorareTokensCaller) SorareCards(opts *bind.CallOpts) (common.Address, error) {
  9792  	var out []interface{}
  9793  	err := _SorareTokens.contract.Call(opts, &out, "sorareCards")
  9794  
  9795  	if err != nil {
  9796  		return *new(common.Address), err
  9797  	}
  9798  
  9799  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  9800  
  9801  	return out0, err
  9802  
  9803  }
  9804  
  9805  // SorareCards is a free data retrieval call binding the contract method 0x16b1b0c8.
  9806  //
  9807  // Solidity: function sorareCards() view returns(address)
  9808  func (_SorareTokens *SorareTokensSession) SorareCards() (common.Address, error) {
  9809  	return _SorareTokens.Contract.SorareCards(&_SorareTokens.CallOpts)
  9810  }
  9811  
  9812  // SorareCards is a free data retrieval call binding the contract method 0x16b1b0c8.
  9813  //
  9814  // Solidity: function sorareCards() view returns(address)
  9815  func (_SorareTokens *SorareTokensCallerSession) SorareCards() (common.Address, error) {
  9816  	return _SorareTokens.Contract.SorareCards(&_SorareTokens.CallOpts)
  9817  }
  9818  
  9819  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  9820  //
  9821  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  9822  func (_SorareTokens *SorareTokensCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  9823  	var out []interface{}
  9824  	err := _SorareTokens.contract.Call(opts, &out, "supportsInterface", interfaceId)
  9825  
  9826  	if err != nil {
  9827  		return *new(bool), err
  9828  	}
  9829  
  9830  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  9831  
  9832  	return out0, err
  9833  
  9834  }
  9835  
  9836  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  9837  //
  9838  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  9839  func (_SorareTokens *SorareTokensSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  9840  	return _SorareTokens.Contract.SupportsInterface(&_SorareTokens.CallOpts, interfaceId)
  9841  }
  9842  
  9843  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  9844  //
  9845  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  9846  func (_SorareTokens *SorareTokensCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  9847  	return _SorareTokens.Contract.SupportsInterface(&_SorareTokens.CallOpts, interfaceId)
  9848  }
  9849  
  9850  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  9851  //
  9852  // Solidity: function symbol() view returns(string)
  9853  func (_SorareTokens *SorareTokensCaller) Symbol(opts *bind.CallOpts) (string, error) {
  9854  	var out []interface{}
  9855  	err := _SorareTokens.contract.Call(opts, &out, "symbol")
  9856  
  9857  	if err != nil {
  9858  		return *new(string), err
  9859  	}
  9860  
  9861  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  9862  
  9863  	return out0, err
  9864  
  9865  }
  9866  
  9867  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  9868  //
  9869  // Solidity: function symbol() view returns(string)
  9870  func (_SorareTokens *SorareTokensSession) Symbol() (string, error) {
  9871  	return _SorareTokens.Contract.Symbol(&_SorareTokens.CallOpts)
  9872  }
  9873  
  9874  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  9875  //
  9876  // Solidity: function symbol() view returns(string)
  9877  func (_SorareTokens *SorareTokensCallerSession) Symbol() (string, error) {
  9878  	return _SorareTokens.Contract.Symbol(&_SorareTokens.CallOpts)
  9879  }
  9880  
  9881  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  9882  //
  9883  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  9884  func (_SorareTokens *SorareTokensCaller) TokenByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) {
  9885  	var out []interface{}
  9886  	err := _SorareTokens.contract.Call(opts, &out, "tokenByIndex", index)
  9887  
  9888  	if err != nil {
  9889  		return *new(*big.Int), err
  9890  	}
  9891  
  9892  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  9893  
  9894  	return out0, err
  9895  
  9896  }
  9897  
  9898  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  9899  //
  9900  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  9901  func (_SorareTokens *SorareTokensSession) TokenByIndex(index *big.Int) (*big.Int, error) {
  9902  	return _SorareTokens.Contract.TokenByIndex(&_SorareTokens.CallOpts, index)
  9903  }
  9904  
  9905  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  9906  //
  9907  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  9908  func (_SorareTokens *SorareTokensCallerSession) TokenByIndex(index *big.Int) (*big.Int, error) {
  9909  	return _SorareTokens.Contract.TokenByIndex(&_SorareTokens.CallOpts, index)
  9910  }
  9911  
  9912  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  9913  //
  9914  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  9915  func (_SorareTokens *SorareTokensCaller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) {
  9916  	var out []interface{}
  9917  	err := _SorareTokens.contract.Call(opts, &out, "tokenOfOwnerByIndex", owner, index)
  9918  
  9919  	if err != nil {
  9920  		return *new(*big.Int), err
  9921  	}
  9922  
  9923  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  9924  
  9925  	return out0, err
  9926  
  9927  }
  9928  
  9929  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  9930  //
  9931  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  9932  func (_SorareTokens *SorareTokensSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  9933  	return _SorareTokens.Contract.TokenOfOwnerByIndex(&_SorareTokens.CallOpts, owner, index)
  9934  }
  9935  
  9936  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  9937  //
  9938  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  9939  func (_SorareTokens *SorareTokensCallerSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  9940  	return _SorareTokens.Contract.TokenOfOwnerByIndex(&_SorareTokens.CallOpts, owner, index)
  9941  }
  9942  
  9943  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  9944  //
  9945  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  9946  func (_SorareTokens *SorareTokensCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
  9947  	var out []interface{}
  9948  	err := _SorareTokens.contract.Call(opts, &out, "tokenURI", tokenId)
  9949  
  9950  	if err != nil {
  9951  		return *new(string), err
  9952  	}
  9953  
  9954  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  9955  
  9956  	return out0, err
  9957  
  9958  }
  9959  
  9960  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  9961  //
  9962  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  9963  func (_SorareTokens *SorareTokensSession) TokenURI(tokenId *big.Int) (string, error) {
  9964  	return _SorareTokens.Contract.TokenURI(&_SorareTokens.CallOpts, tokenId)
  9965  }
  9966  
  9967  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  9968  //
  9969  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  9970  func (_SorareTokens *SorareTokensCallerSession) TokenURI(tokenId *big.Int) (string, error) {
  9971  	return _SorareTokens.Contract.TokenURI(&_SorareTokens.CallOpts, tokenId)
  9972  }
  9973  
  9974  // TokensOfOwner is a free data retrieval call binding the contract method 0x4d9c5e58.
  9975  //
  9976  // Solidity: function tokensOfOwner(address owner, uint8 page, uint8 rows) view returns(uint256[])
  9977  func (_SorareTokens *SorareTokensCaller) TokensOfOwner(opts *bind.CallOpts, owner common.Address, page uint8, rows uint8) ([]*big.Int, error) {
  9978  	var out []interface{}
  9979  	err := _SorareTokens.contract.Call(opts, &out, "tokensOfOwner", owner, page, rows)
  9980  
  9981  	if err != nil {
  9982  		return *new([]*big.Int), err
  9983  	}
  9984  
  9985  	out0 := *abi.ConvertType(out[0], new([]*big.Int)).(*[]*big.Int)
  9986  
  9987  	return out0, err
  9988  
  9989  }
  9990  
  9991  // TokensOfOwner is a free data retrieval call binding the contract method 0x4d9c5e58.
  9992  //
  9993  // Solidity: function tokensOfOwner(address owner, uint8 page, uint8 rows) view returns(uint256[])
  9994  func (_SorareTokens *SorareTokensSession) TokensOfOwner(owner common.Address, page uint8, rows uint8) ([]*big.Int, error) {
  9995  	return _SorareTokens.Contract.TokensOfOwner(&_SorareTokens.CallOpts, owner, page, rows)
  9996  }
  9997  
  9998  // TokensOfOwner is a free data retrieval call binding the contract method 0x4d9c5e58.
  9999  //
 10000  // Solidity: function tokensOfOwner(address owner, uint8 page, uint8 rows) view returns(uint256[])
 10001  func (_SorareTokens *SorareTokensCallerSession) TokensOfOwner(owner common.Address, page uint8, rows uint8) ([]*big.Int, error) {
 10002  	return _SorareTokens.Contract.TokensOfOwner(&_SorareTokens.CallOpts, owner, page, rows)
 10003  }
 10004  
 10005  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 10006  //
 10007  // Solidity: function totalSupply() view returns(uint256)
 10008  func (_SorareTokens *SorareTokensCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
 10009  	var out []interface{}
 10010  	err := _SorareTokens.contract.Call(opts, &out, "totalSupply")
 10011  
 10012  	if err != nil {
 10013  		return *new(*big.Int), err
 10014  	}
 10015  
 10016  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
 10017  
 10018  	return out0, err
 10019  
 10020  }
 10021  
 10022  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 10023  //
 10024  // Solidity: function totalSupply() view returns(uint256)
 10025  func (_SorareTokens *SorareTokensSession) TotalSupply() (*big.Int, error) {
 10026  	return _SorareTokens.Contract.TotalSupply(&_SorareTokens.CallOpts)
 10027  }
 10028  
 10029  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 10030  //
 10031  // Solidity: function totalSupply() view returns(uint256)
 10032  func (_SorareTokens *SorareTokensCallerSession) TotalSupply() (*big.Int, error) {
 10033  	return _SorareTokens.Contract.TotalSupply(&_SorareTokens.CallOpts)
 10034  }
 10035  
 10036  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 10037  //
 10038  // Solidity: function addMinter(address account) returns()
 10039  func (_SorareTokens *SorareTokensTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
 10040  	return _SorareTokens.contract.Transact(opts, "addMinter", account)
 10041  }
 10042  
 10043  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 10044  //
 10045  // Solidity: function addMinter(address account) returns()
 10046  func (_SorareTokens *SorareTokensSession) AddMinter(account common.Address) (*types.Transaction, error) {
 10047  	return _SorareTokens.Contract.AddMinter(&_SorareTokens.TransactOpts, account)
 10048  }
 10049  
 10050  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 10051  //
 10052  // Solidity: function addMinter(address account) returns()
 10053  func (_SorareTokens *SorareTokensTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
 10054  	return _SorareTokens.Contract.AddMinter(&_SorareTokens.TransactOpts, account)
 10055  }
 10056  
 10057  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 10058  //
 10059  // Solidity: function approve(address to, uint256 tokenId) returns()
 10060  func (_SorareTokens *SorareTokensTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10061  	return _SorareTokens.contract.Transact(opts, "approve", to, tokenId)
 10062  }
 10063  
 10064  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 10065  //
 10066  // Solidity: function approve(address to, uint256 tokenId) returns()
 10067  func (_SorareTokens *SorareTokensSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10068  	return _SorareTokens.Contract.Approve(&_SorareTokens.TransactOpts, to, tokenId)
 10069  }
 10070  
 10071  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 10072  //
 10073  // Solidity: function approve(address to, uint256 tokenId) returns()
 10074  func (_SorareTokens *SorareTokensTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10075  	return _SorareTokens.Contract.Approve(&_SorareTokens.TransactOpts, to, tokenId)
 10076  }
 10077  
 10078  // BlockRelay is a paid mutator transaction binding the contract method 0x309e11fc.
 10079  //
 10080  // Solidity: function blockRelay() returns()
 10081  func (_SorareTokens *SorareTokensTransactor) BlockRelay(opts *bind.TransactOpts) (*types.Transaction, error) {
 10082  	return _SorareTokens.contract.Transact(opts, "blockRelay")
 10083  }
 10084  
 10085  // BlockRelay is a paid mutator transaction binding the contract method 0x309e11fc.
 10086  //
 10087  // Solidity: function blockRelay() returns()
 10088  func (_SorareTokens *SorareTokensSession) BlockRelay() (*types.Transaction, error) {
 10089  	return _SorareTokens.Contract.BlockRelay(&_SorareTokens.TransactOpts)
 10090  }
 10091  
 10092  // BlockRelay is a paid mutator transaction binding the contract method 0x309e11fc.
 10093  //
 10094  // Solidity: function blockRelay() returns()
 10095  func (_SorareTokens *SorareTokensTransactorSession) BlockRelay() (*types.Transaction, error) {
 10096  	return _SorareTokens.Contract.BlockRelay(&_SorareTokens.TransactOpts)
 10097  }
 10098  
 10099  // CreateCardAndMintToken is a paid mutator transaction binding the contract method 0x2850d20e.
 10100  //
 10101  // Solidity: function createCardAndMintToken(uint256 playerId, uint16 season, uint8 scarcity, uint16 serialNumber, bytes32 metadata, uint16 clubId, address to) returns(uint256)
 10102  func (_SorareTokens *SorareTokensTransactor) CreateCardAndMintToken(opts *bind.TransactOpts, playerId *big.Int, season uint16, scarcity uint8, serialNumber uint16, metadata [32]byte, clubId uint16, to common.Address) (*types.Transaction, error) {
 10103  	return _SorareTokens.contract.Transact(opts, "createCardAndMintToken", playerId, season, scarcity, serialNumber, metadata, clubId, to)
 10104  }
 10105  
 10106  // CreateCardAndMintToken is a paid mutator transaction binding the contract method 0x2850d20e.
 10107  //
 10108  // Solidity: function createCardAndMintToken(uint256 playerId, uint16 season, uint8 scarcity, uint16 serialNumber, bytes32 metadata, uint16 clubId, address to) returns(uint256)
 10109  func (_SorareTokens *SorareTokensSession) CreateCardAndMintToken(playerId *big.Int, season uint16, scarcity uint8, serialNumber uint16, metadata [32]byte, clubId uint16, to common.Address) (*types.Transaction, error) {
 10110  	return _SorareTokens.Contract.CreateCardAndMintToken(&_SorareTokens.TransactOpts, playerId, season, scarcity, serialNumber, metadata, clubId, to)
 10111  }
 10112  
 10113  // CreateCardAndMintToken is a paid mutator transaction binding the contract method 0x2850d20e.
 10114  //
 10115  // Solidity: function createCardAndMintToken(uint256 playerId, uint16 season, uint8 scarcity, uint16 serialNumber, bytes32 metadata, uint16 clubId, address to) returns(uint256)
 10116  func (_SorareTokens *SorareTokensTransactorSession) CreateCardAndMintToken(playerId *big.Int, season uint16, scarcity uint8, serialNumber uint16, metadata [32]byte, clubId uint16, to common.Address) (*types.Transaction, error) {
 10117  	return _SorareTokens.Contract.CreateCardAndMintToken(&_SorareTokens.TransactOpts, playerId, season, scarcity, serialNumber, metadata, clubId, to)
 10118  }
 10119  
 10120  // GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d.
 10121  //
 10122  // Solidity: function grantRole(bytes32 role, address account) returns()
 10123  func (_SorareTokens *SorareTokensTransactor) GrantRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) {
 10124  	return _SorareTokens.contract.Transact(opts, "grantRole", role, account)
 10125  }
 10126  
 10127  // GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d.
 10128  //
 10129  // Solidity: function grantRole(bytes32 role, address account) returns()
 10130  func (_SorareTokens *SorareTokensSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) {
 10131  	return _SorareTokens.Contract.GrantRole(&_SorareTokens.TransactOpts, role, account)
 10132  }
 10133  
 10134  // GrantRole is a paid mutator transaction binding the contract method 0x2f2ff15d.
 10135  //
 10136  // Solidity: function grantRole(bytes32 role, address account) returns()
 10137  func (_SorareTokens *SorareTokensTransactorSession) GrantRole(role [32]byte, account common.Address) (*types.Transaction, error) {
 10138  	return _SorareTokens.Contract.GrantRole(&_SorareTokens.TransactOpts, role, account)
 10139  }
 10140  
 10141  // MigrateTokens is a paid mutator transaction binding the contract method 0xe5951e60.
 10142  //
 10143  // Solidity: function migrateTokens(uint256[] tokenIds) returns()
 10144  func (_SorareTokens *SorareTokensTransactor) MigrateTokens(opts *bind.TransactOpts, tokenIds []*big.Int) (*types.Transaction, error) {
 10145  	return _SorareTokens.contract.Transact(opts, "migrateTokens", tokenIds)
 10146  }
 10147  
 10148  // MigrateTokens is a paid mutator transaction binding the contract method 0xe5951e60.
 10149  //
 10150  // Solidity: function migrateTokens(uint256[] tokenIds) returns()
 10151  func (_SorareTokens *SorareTokensSession) MigrateTokens(tokenIds []*big.Int) (*types.Transaction, error) {
 10152  	return _SorareTokens.Contract.MigrateTokens(&_SorareTokens.TransactOpts, tokenIds)
 10153  }
 10154  
 10155  // MigrateTokens is a paid mutator transaction binding the contract method 0xe5951e60.
 10156  //
 10157  // Solidity: function migrateTokens(uint256[] tokenIds) returns()
 10158  func (_SorareTokens *SorareTokensTransactorSession) MigrateTokens(tokenIds []*big.Int) (*types.Transaction, error) {
 10159  	return _SorareTokens.Contract.MigrateTokens(&_SorareTokens.TransactOpts, tokenIds)
 10160  }
 10161  
 10162  // MintToken is a paid mutator transaction binding the contract method 0xa140ae23.
 10163  //
 10164  // Solidity: function mintToken(uint256 cardId, address to) returns(uint256)
 10165  func (_SorareTokens *SorareTokensTransactor) MintToken(opts *bind.TransactOpts, cardId *big.Int, to common.Address) (*types.Transaction, error) {
 10166  	return _SorareTokens.contract.Transact(opts, "mintToken", cardId, to)
 10167  }
 10168  
 10169  // MintToken is a paid mutator transaction binding the contract method 0xa140ae23.
 10170  //
 10171  // Solidity: function mintToken(uint256 cardId, address to) returns(uint256)
 10172  func (_SorareTokens *SorareTokensSession) MintToken(cardId *big.Int, to common.Address) (*types.Transaction, error) {
 10173  	return _SorareTokens.Contract.MintToken(&_SorareTokens.TransactOpts, cardId, to)
 10174  }
 10175  
 10176  // MintToken is a paid mutator transaction binding the contract method 0xa140ae23.
 10177  //
 10178  // Solidity: function mintToken(uint256 cardId, address to) returns(uint256)
 10179  func (_SorareTokens *SorareTokensTransactorSession) MintToken(cardId *big.Int, to common.Address) (*types.Transaction, error) {
 10180  	return _SorareTokens.Contract.MintToken(&_SorareTokens.TransactOpts, cardId, to)
 10181  }
 10182  
 10183  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
 10184  //
 10185  // Solidity: function renounceMinter(address account) returns()
 10186  func (_SorareTokens *SorareTokensTransactor) RenounceMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
 10187  	return _SorareTokens.contract.Transact(opts, "renounceMinter", account)
 10188  }
 10189  
 10190  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
 10191  //
 10192  // Solidity: function renounceMinter(address account) returns()
 10193  func (_SorareTokens *SorareTokensSession) RenounceMinter(account common.Address) (*types.Transaction, error) {
 10194  	return _SorareTokens.Contract.RenounceMinter(&_SorareTokens.TransactOpts, account)
 10195  }
 10196  
 10197  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
 10198  //
 10199  // Solidity: function renounceMinter(address account) returns()
 10200  func (_SorareTokens *SorareTokensTransactorSession) RenounceMinter(account common.Address) (*types.Transaction, error) {
 10201  	return _SorareTokens.Contract.RenounceMinter(&_SorareTokens.TransactOpts, account)
 10202  }
 10203  
 10204  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 10205  //
 10206  // Solidity: function renounceOwnership() returns()
 10207  func (_SorareTokens *SorareTokensTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
 10208  	return _SorareTokens.contract.Transact(opts, "renounceOwnership")
 10209  }
 10210  
 10211  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 10212  //
 10213  // Solidity: function renounceOwnership() returns()
 10214  func (_SorareTokens *SorareTokensSession) RenounceOwnership() (*types.Transaction, error) {
 10215  	return _SorareTokens.Contract.RenounceOwnership(&_SorareTokens.TransactOpts)
 10216  }
 10217  
 10218  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 10219  //
 10220  // Solidity: function renounceOwnership() returns()
 10221  func (_SorareTokens *SorareTokensTransactorSession) RenounceOwnership() (*types.Transaction, error) {
 10222  	return _SorareTokens.Contract.RenounceOwnership(&_SorareTokens.TransactOpts)
 10223  }
 10224  
 10225  // RenounceRole is a paid mutator transaction binding the contract method 0x36568abe.
 10226  //
 10227  // Solidity: function renounceRole(bytes32 role, address account) returns()
 10228  func (_SorareTokens *SorareTokensTransactor) RenounceRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) {
 10229  	return _SorareTokens.contract.Transact(opts, "renounceRole", role, account)
 10230  }
 10231  
 10232  // RenounceRole is a paid mutator transaction binding the contract method 0x36568abe.
 10233  //
 10234  // Solidity: function renounceRole(bytes32 role, address account) returns()
 10235  func (_SorareTokens *SorareTokensSession) RenounceRole(role [32]byte, account common.Address) (*types.Transaction, error) {
 10236  	return _SorareTokens.Contract.RenounceRole(&_SorareTokens.TransactOpts, role, account)
 10237  }
 10238  
 10239  // RenounceRole is a paid mutator transaction binding the contract method 0x36568abe.
 10240  //
 10241  // Solidity: function renounceRole(bytes32 role, address account) returns()
 10242  func (_SorareTokens *SorareTokensTransactorSession) RenounceRole(role [32]byte, account common.Address) (*types.Transaction, error) {
 10243  	return _SorareTokens.Contract.RenounceRole(&_SorareTokens.TransactOpts, role, account)
 10244  }
 10245  
 10246  // RevokeMinter is a paid mutator transaction binding the contract method 0xcfbd4885.
 10247  //
 10248  // Solidity: function revokeMinter(address account) returns()
 10249  func (_SorareTokens *SorareTokensTransactor) RevokeMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
 10250  	return _SorareTokens.contract.Transact(opts, "revokeMinter", account)
 10251  }
 10252  
 10253  // RevokeMinter is a paid mutator transaction binding the contract method 0xcfbd4885.
 10254  //
 10255  // Solidity: function revokeMinter(address account) returns()
 10256  func (_SorareTokens *SorareTokensSession) RevokeMinter(account common.Address) (*types.Transaction, error) {
 10257  	return _SorareTokens.Contract.RevokeMinter(&_SorareTokens.TransactOpts, account)
 10258  }
 10259  
 10260  // RevokeMinter is a paid mutator transaction binding the contract method 0xcfbd4885.
 10261  //
 10262  // Solidity: function revokeMinter(address account) returns()
 10263  func (_SorareTokens *SorareTokensTransactorSession) RevokeMinter(account common.Address) (*types.Transaction, error) {
 10264  	return _SorareTokens.Contract.RevokeMinter(&_SorareTokens.TransactOpts, account)
 10265  }
 10266  
 10267  // RevokeRole is a paid mutator transaction binding the contract method 0xd547741f.
 10268  //
 10269  // Solidity: function revokeRole(bytes32 role, address account) returns()
 10270  func (_SorareTokens *SorareTokensTransactor) RevokeRole(opts *bind.TransactOpts, role [32]byte, account common.Address) (*types.Transaction, error) {
 10271  	return _SorareTokens.contract.Transact(opts, "revokeRole", role, account)
 10272  }
 10273  
 10274  // RevokeRole is a paid mutator transaction binding the contract method 0xd547741f.
 10275  //
 10276  // Solidity: function revokeRole(bytes32 role, address account) returns()
 10277  func (_SorareTokens *SorareTokensSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) {
 10278  	return _SorareTokens.Contract.RevokeRole(&_SorareTokens.TransactOpts, role, account)
 10279  }
 10280  
 10281  // RevokeRole is a paid mutator transaction binding the contract method 0xd547741f.
 10282  //
 10283  // Solidity: function revokeRole(bytes32 role, address account) returns()
 10284  func (_SorareTokens *SorareTokensTransactorSession) RevokeRole(role [32]byte, account common.Address) (*types.Transaction, error) {
 10285  	return _SorareTokens.Contract.RevokeRole(&_SorareTokens.TransactOpts, role, account)
 10286  }
 10287  
 10288  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 10289  //
 10290  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 10291  func (_SorareTokens *SorareTokensTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10292  	return _SorareTokens.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
 10293  }
 10294  
 10295  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 10296  //
 10297  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 10298  func (_SorareTokens *SorareTokensSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10299  	return _SorareTokens.Contract.SafeTransferFrom(&_SorareTokens.TransactOpts, from, to, tokenId)
 10300  }
 10301  
 10302  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 10303  //
 10304  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 10305  func (_SorareTokens *SorareTokensTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10306  	return _SorareTokens.Contract.SafeTransferFrom(&_SorareTokens.TransactOpts, from, to, tokenId)
 10307  }
 10308  
 10309  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 10310  //
 10311  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 10312  func (_SorareTokens *SorareTokensTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 10313  	return _SorareTokens.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
 10314  }
 10315  
 10316  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 10317  //
 10318  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 10319  func (_SorareTokens *SorareTokensSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 10320  	return _SorareTokens.Contract.SafeTransferFrom0(&_SorareTokens.TransactOpts, from, to, tokenId, _data)
 10321  }
 10322  
 10323  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 10324  //
 10325  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 10326  func (_SorareTokens *SorareTokensTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 10327  	return _SorareTokens.Contract.SafeTransferFrom0(&_SorareTokens.TransactOpts, from, to, tokenId, _data)
 10328  }
 10329  
 10330  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 10331  //
 10332  // Solidity: function setApprovalForAll(address operator, bool approved) returns()
 10333  func (_SorareTokens *SorareTokensTransactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, approved bool) (*types.Transaction, error) {
 10334  	return _SorareTokens.contract.Transact(opts, "setApprovalForAll", operator, approved)
 10335  }
 10336  
 10337  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 10338  //
 10339  // Solidity: function setApprovalForAll(address operator, bool approved) returns()
 10340  func (_SorareTokens *SorareTokensSession) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) {
 10341  	return _SorareTokens.Contract.SetApprovalForAll(&_SorareTokens.TransactOpts, operator, approved)
 10342  }
 10343  
 10344  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 10345  //
 10346  // Solidity: function setApprovalForAll(address operator, bool approved) returns()
 10347  func (_SorareTokens *SorareTokensTransactorSession) SetApprovalForAll(operator common.Address, approved bool) (*types.Transaction, error) {
 10348  	return _SorareTokens.Contract.SetApprovalForAll(&_SorareTokens.TransactOpts, operator, approved)
 10349  }
 10350  
 10351  // SetNextContract is a paid mutator transaction binding the contract method 0x53390100.
 10352  //
 10353  // Solidity: function setNextContract(address nextContractAddress) returns()
 10354  func (_SorareTokens *SorareTokensTransactor) SetNextContract(opts *bind.TransactOpts, nextContractAddress common.Address) (*types.Transaction, error) {
 10355  	return _SorareTokens.contract.Transact(opts, "setNextContract", nextContractAddress)
 10356  }
 10357  
 10358  // SetNextContract is a paid mutator transaction binding the contract method 0x53390100.
 10359  //
 10360  // Solidity: function setNextContract(address nextContractAddress) returns()
 10361  func (_SorareTokens *SorareTokensSession) SetNextContract(nextContractAddress common.Address) (*types.Transaction, error) {
 10362  	return _SorareTokens.Contract.SetNextContract(&_SorareTokens.TransactOpts, nextContractAddress)
 10363  }
 10364  
 10365  // SetNextContract is a paid mutator transaction binding the contract method 0x53390100.
 10366  //
 10367  // Solidity: function setNextContract(address nextContractAddress) returns()
 10368  func (_SorareTokens *SorareTokensTransactorSession) SetNextContract(nextContractAddress common.Address) (*types.Transaction, error) {
 10369  	return _SorareTokens.Contract.SetNextContract(&_SorareTokens.TransactOpts, nextContractAddress)
 10370  }
 10371  
 10372  // SetTokenURIPrefix is a paid mutator transaction binding the contract method 0x99e0dd7c.
 10373  //
 10374  // Solidity: function setTokenURIPrefix(string prefix) returns()
 10375  func (_SorareTokens *SorareTokensTransactor) SetTokenURIPrefix(opts *bind.TransactOpts, prefix string) (*types.Transaction, error) {
 10376  	return _SorareTokens.contract.Transact(opts, "setTokenURIPrefix", prefix)
 10377  }
 10378  
 10379  // SetTokenURIPrefix is a paid mutator transaction binding the contract method 0x99e0dd7c.
 10380  //
 10381  // Solidity: function setTokenURIPrefix(string prefix) returns()
 10382  func (_SorareTokens *SorareTokensSession) SetTokenURIPrefix(prefix string) (*types.Transaction, error) {
 10383  	return _SorareTokens.Contract.SetTokenURIPrefix(&_SorareTokens.TransactOpts, prefix)
 10384  }
 10385  
 10386  // SetTokenURIPrefix is a paid mutator transaction binding the contract method 0x99e0dd7c.
 10387  //
 10388  // Solidity: function setTokenURIPrefix(string prefix) returns()
 10389  func (_SorareTokens *SorareTokensTransactorSession) SetTokenURIPrefix(prefix string) (*types.Transaction, error) {
 10390  	return _SorareTokens.Contract.SetTokenURIPrefix(&_SorareTokens.TransactOpts, prefix)
 10391  }
 10392  
 10393  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 10394  //
 10395  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 10396  func (_SorareTokens *SorareTokensTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10397  	return _SorareTokens.contract.Transact(opts, "transferFrom", from, to, tokenId)
 10398  }
 10399  
 10400  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 10401  //
 10402  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 10403  func (_SorareTokens *SorareTokensSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10404  	return _SorareTokens.Contract.TransferFrom(&_SorareTokens.TransactOpts, from, to, tokenId)
 10405  }
 10406  
 10407  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 10408  //
 10409  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 10410  func (_SorareTokens *SorareTokensTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10411  	return _SorareTokens.Contract.TransferFrom(&_SorareTokens.TransactOpts, from, to, tokenId)
 10412  }
 10413  
 10414  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 10415  //
 10416  // Solidity: function transferOwnership(address newOwner) returns()
 10417  func (_SorareTokens *SorareTokensTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
 10418  	return _SorareTokens.contract.Transact(opts, "transferOwnership", newOwner)
 10419  }
 10420  
 10421  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 10422  //
 10423  // Solidity: function transferOwnership(address newOwner) returns()
 10424  func (_SorareTokens *SorareTokensSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 10425  	return _SorareTokens.Contract.TransferOwnership(&_SorareTokens.TransactOpts, newOwner)
 10426  }
 10427  
 10428  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 10429  //
 10430  // Solidity: function transferOwnership(address newOwner) returns()
 10431  func (_SorareTokens *SorareTokensTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 10432  	return _SorareTokens.Contract.TransferOwnership(&_SorareTokens.TransactOpts, newOwner)
 10433  }
 10434  
 10435  // SorareTokensApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the SorareTokens contract.
 10436  type SorareTokensApprovalIterator struct {
 10437  	Event *SorareTokensApproval // Event containing the contract specifics and raw log
 10438  
 10439  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10440  	event    string              // Event name to use for unpacking event data
 10441  
 10442  	logs chan types.Log        // Log channel receiving the found contract events
 10443  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 10444  	done bool                  // Whether the subscription completed delivering logs
 10445  	fail error                 // Occurred error to stop iteration
 10446  }
 10447  
 10448  // Next advances the iterator to the subsequent event, returning whether there
 10449  // are any more events found. In case of a retrieval or parsing error, false is
 10450  // returned and Error() can be queried for the exact failure.
 10451  func (it *SorareTokensApprovalIterator) Next() bool {
 10452  	// If the iterator failed, stop iterating
 10453  	if it.fail != nil {
 10454  		return false
 10455  	}
 10456  	// If the iterator completed, deliver directly whatever's available
 10457  	if it.done {
 10458  		select {
 10459  		case log := <-it.logs:
 10460  			it.Event = new(SorareTokensApproval)
 10461  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10462  				it.fail = err
 10463  				return false
 10464  			}
 10465  			it.Event.Raw = log
 10466  			return true
 10467  
 10468  		default:
 10469  			return false
 10470  		}
 10471  	}
 10472  	// Iterator still in progress, wait for either a data or an error event
 10473  	select {
 10474  	case log := <-it.logs:
 10475  		it.Event = new(SorareTokensApproval)
 10476  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10477  			it.fail = err
 10478  			return false
 10479  		}
 10480  		it.Event.Raw = log
 10481  		return true
 10482  
 10483  	case err := <-it.sub.Err():
 10484  		it.done = true
 10485  		it.fail = err
 10486  		return it.Next()
 10487  	}
 10488  }
 10489  
 10490  // Error returns any retrieval or parsing error occurred during filtering.
 10491  func (it *SorareTokensApprovalIterator) Error() error {
 10492  	return it.fail
 10493  }
 10494  
 10495  // Close terminates the iteration process, releasing any pending underlying
 10496  // resources.
 10497  func (it *SorareTokensApprovalIterator) Close() error {
 10498  	it.sub.Unsubscribe()
 10499  	return nil
 10500  }
 10501  
 10502  // SorareTokensApproval represents a Approval event raised by the SorareTokens contract.
 10503  type SorareTokensApproval struct {
 10504  	Owner    common.Address
 10505  	Approved common.Address
 10506  	TokenId  *big.Int
 10507  	Raw      types.Log // Blockchain specific contextual infos
 10508  }
 10509  
 10510  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 10511  //
 10512  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 10513  func (_SorareTokens *SorareTokensFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*SorareTokensApprovalIterator, error) {
 10514  
 10515  	var ownerRule []interface{}
 10516  	for _, ownerItem := range owner {
 10517  		ownerRule = append(ownerRule, ownerItem)
 10518  	}
 10519  	var approvedRule []interface{}
 10520  	for _, approvedItem := range approved {
 10521  		approvedRule = append(approvedRule, approvedItem)
 10522  	}
 10523  	var tokenIdRule []interface{}
 10524  	for _, tokenIdItem := range tokenId {
 10525  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 10526  	}
 10527  
 10528  	logs, sub, err := _SorareTokens.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 10529  	if err != nil {
 10530  		return nil, err
 10531  	}
 10532  	return &SorareTokensApprovalIterator{contract: _SorareTokens.contract, event: "Approval", logs: logs, sub: sub}, nil
 10533  }
 10534  
 10535  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 10536  //
 10537  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 10538  func (_SorareTokens *SorareTokensFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *SorareTokensApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 10539  
 10540  	var ownerRule []interface{}
 10541  	for _, ownerItem := range owner {
 10542  		ownerRule = append(ownerRule, ownerItem)
 10543  	}
 10544  	var approvedRule []interface{}
 10545  	for _, approvedItem := range approved {
 10546  		approvedRule = append(approvedRule, approvedItem)
 10547  	}
 10548  	var tokenIdRule []interface{}
 10549  	for _, tokenIdItem := range tokenId {
 10550  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 10551  	}
 10552  
 10553  	logs, sub, err := _SorareTokens.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 10554  	if err != nil {
 10555  		return nil, err
 10556  	}
 10557  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10558  		defer sub.Unsubscribe()
 10559  		for {
 10560  			select {
 10561  			case log := <-logs:
 10562  				// New log arrived, parse the event and forward to the user
 10563  				event := new(SorareTokensApproval)
 10564  				if err := _SorareTokens.contract.UnpackLog(event, "Approval", log); err != nil {
 10565  					return err
 10566  				}
 10567  				event.Raw = log
 10568  
 10569  				select {
 10570  				case sink <- event:
 10571  				case err := <-sub.Err():
 10572  					return err
 10573  				case <-quit:
 10574  					return nil
 10575  				}
 10576  			case err := <-sub.Err():
 10577  				return err
 10578  			case <-quit:
 10579  				return nil
 10580  			}
 10581  		}
 10582  	}), nil
 10583  }
 10584  
 10585  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 10586  //
 10587  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 10588  func (_SorareTokens *SorareTokensFilterer) ParseApproval(log types.Log) (*SorareTokensApproval, error) {
 10589  	event := new(SorareTokensApproval)
 10590  	if err := _SorareTokens.contract.UnpackLog(event, "Approval", log); err != nil {
 10591  		return nil, err
 10592  	}
 10593  	event.Raw = log
 10594  	return event, nil
 10595  }
 10596  
 10597  // SorareTokensApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the SorareTokens contract.
 10598  type SorareTokensApprovalForAllIterator struct {
 10599  	Event *SorareTokensApprovalForAll // Event containing the contract specifics and raw log
 10600  
 10601  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10602  	event    string              // Event name to use for unpacking event data
 10603  
 10604  	logs chan types.Log        // Log channel receiving the found contract events
 10605  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 10606  	done bool                  // Whether the subscription completed delivering logs
 10607  	fail error                 // Occurred error to stop iteration
 10608  }
 10609  
 10610  // Next advances the iterator to the subsequent event, returning whether there
 10611  // are any more events found. In case of a retrieval or parsing error, false is
 10612  // returned and Error() can be queried for the exact failure.
 10613  func (it *SorareTokensApprovalForAllIterator) Next() bool {
 10614  	// If the iterator failed, stop iterating
 10615  	if it.fail != nil {
 10616  		return false
 10617  	}
 10618  	// If the iterator completed, deliver directly whatever's available
 10619  	if it.done {
 10620  		select {
 10621  		case log := <-it.logs:
 10622  			it.Event = new(SorareTokensApprovalForAll)
 10623  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10624  				it.fail = err
 10625  				return false
 10626  			}
 10627  			it.Event.Raw = log
 10628  			return true
 10629  
 10630  		default:
 10631  			return false
 10632  		}
 10633  	}
 10634  	// Iterator still in progress, wait for either a data or an error event
 10635  	select {
 10636  	case log := <-it.logs:
 10637  		it.Event = new(SorareTokensApprovalForAll)
 10638  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10639  			it.fail = err
 10640  			return false
 10641  		}
 10642  		it.Event.Raw = log
 10643  		return true
 10644  
 10645  	case err := <-it.sub.Err():
 10646  		it.done = true
 10647  		it.fail = err
 10648  		return it.Next()
 10649  	}
 10650  }
 10651  
 10652  // Error returns any retrieval or parsing error occurred during filtering.
 10653  func (it *SorareTokensApprovalForAllIterator) Error() error {
 10654  	return it.fail
 10655  }
 10656  
 10657  // Close terminates the iteration process, releasing any pending underlying
 10658  // resources.
 10659  func (it *SorareTokensApprovalForAllIterator) Close() error {
 10660  	it.sub.Unsubscribe()
 10661  	return nil
 10662  }
 10663  
 10664  // SorareTokensApprovalForAll represents a ApprovalForAll event raised by the SorareTokens contract.
 10665  type SorareTokensApprovalForAll struct {
 10666  	Owner    common.Address
 10667  	Operator common.Address
 10668  	Approved bool
 10669  	Raw      types.Log // Blockchain specific contextual infos
 10670  }
 10671  
 10672  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 10673  //
 10674  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 10675  func (_SorareTokens *SorareTokensFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*SorareTokensApprovalForAllIterator, error) {
 10676  
 10677  	var ownerRule []interface{}
 10678  	for _, ownerItem := range owner {
 10679  		ownerRule = append(ownerRule, ownerItem)
 10680  	}
 10681  	var operatorRule []interface{}
 10682  	for _, operatorItem := range operator {
 10683  		operatorRule = append(operatorRule, operatorItem)
 10684  	}
 10685  
 10686  	logs, sub, err := _SorareTokens.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 10687  	if err != nil {
 10688  		return nil, err
 10689  	}
 10690  	return &SorareTokensApprovalForAllIterator{contract: _SorareTokens.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 10691  }
 10692  
 10693  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 10694  //
 10695  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 10696  func (_SorareTokens *SorareTokensFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *SorareTokensApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 10697  
 10698  	var ownerRule []interface{}
 10699  	for _, ownerItem := range owner {
 10700  		ownerRule = append(ownerRule, ownerItem)
 10701  	}
 10702  	var operatorRule []interface{}
 10703  	for _, operatorItem := range operator {
 10704  		operatorRule = append(operatorRule, operatorItem)
 10705  	}
 10706  
 10707  	logs, sub, err := _SorareTokens.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 10708  	if err != nil {
 10709  		return nil, err
 10710  	}
 10711  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10712  		defer sub.Unsubscribe()
 10713  		for {
 10714  			select {
 10715  			case log := <-logs:
 10716  				// New log arrived, parse the event and forward to the user
 10717  				event := new(SorareTokensApprovalForAll)
 10718  				if err := _SorareTokens.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 10719  					return err
 10720  				}
 10721  				event.Raw = log
 10722  
 10723  				select {
 10724  				case sink <- event:
 10725  				case err := <-sub.Err():
 10726  					return err
 10727  				case <-quit:
 10728  					return nil
 10729  				}
 10730  			case err := <-sub.Err():
 10731  				return err
 10732  			case <-quit:
 10733  				return nil
 10734  			}
 10735  		}
 10736  	}), nil
 10737  }
 10738  
 10739  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 10740  //
 10741  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 10742  func (_SorareTokens *SorareTokensFilterer) ParseApprovalForAll(log types.Log) (*SorareTokensApprovalForAll, error) {
 10743  	event := new(SorareTokensApprovalForAll)
 10744  	if err := _SorareTokens.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 10745  		return nil, err
 10746  	}
 10747  	event.Raw = log
 10748  	return event, nil
 10749  }
 10750  
 10751  // SorareTokensOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the SorareTokens contract.
 10752  type SorareTokensOwnershipTransferredIterator struct {
 10753  	Event *SorareTokensOwnershipTransferred // Event containing the contract specifics and raw log
 10754  
 10755  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10756  	event    string              // Event name to use for unpacking event data
 10757  
 10758  	logs chan types.Log        // Log channel receiving the found contract events
 10759  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 10760  	done bool                  // Whether the subscription completed delivering logs
 10761  	fail error                 // Occurred error to stop iteration
 10762  }
 10763  
 10764  // Next advances the iterator to the subsequent event, returning whether there
 10765  // are any more events found. In case of a retrieval or parsing error, false is
 10766  // returned and Error() can be queried for the exact failure.
 10767  func (it *SorareTokensOwnershipTransferredIterator) Next() bool {
 10768  	// If the iterator failed, stop iterating
 10769  	if it.fail != nil {
 10770  		return false
 10771  	}
 10772  	// If the iterator completed, deliver directly whatever's available
 10773  	if it.done {
 10774  		select {
 10775  		case log := <-it.logs:
 10776  			it.Event = new(SorareTokensOwnershipTransferred)
 10777  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10778  				it.fail = err
 10779  				return false
 10780  			}
 10781  			it.Event.Raw = log
 10782  			return true
 10783  
 10784  		default:
 10785  			return false
 10786  		}
 10787  	}
 10788  	// Iterator still in progress, wait for either a data or an error event
 10789  	select {
 10790  	case log := <-it.logs:
 10791  		it.Event = new(SorareTokensOwnershipTransferred)
 10792  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10793  			it.fail = err
 10794  			return false
 10795  		}
 10796  		it.Event.Raw = log
 10797  		return true
 10798  
 10799  	case err := <-it.sub.Err():
 10800  		it.done = true
 10801  		it.fail = err
 10802  		return it.Next()
 10803  	}
 10804  }
 10805  
 10806  // Error returns any retrieval or parsing error occurred during filtering.
 10807  func (it *SorareTokensOwnershipTransferredIterator) Error() error {
 10808  	return it.fail
 10809  }
 10810  
 10811  // Close terminates the iteration process, releasing any pending underlying
 10812  // resources.
 10813  func (it *SorareTokensOwnershipTransferredIterator) Close() error {
 10814  	it.sub.Unsubscribe()
 10815  	return nil
 10816  }
 10817  
 10818  // SorareTokensOwnershipTransferred represents a OwnershipTransferred event raised by the SorareTokens contract.
 10819  type SorareTokensOwnershipTransferred struct {
 10820  	PreviousOwner common.Address
 10821  	NewOwner      common.Address
 10822  	Raw           types.Log // Blockchain specific contextual infos
 10823  }
 10824  
 10825  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 10826  //
 10827  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 10828  func (_SorareTokens *SorareTokensFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*SorareTokensOwnershipTransferredIterator, error) {
 10829  
 10830  	var previousOwnerRule []interface{}
 10831  	for _, previousOwnerItem := range previousOwner {
 10832  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 10833  	}
 10834  	var newOwnerRule []interface{}
 10835  	for _, newOwnerItem := range newOwner {
 10836  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 10837  	}
 10838  
 10839  	logs, sub, err := _SorareTokens.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 10840  	if err != nil {
 10841  		return nil, err
 10842  	}
 10843  	return &SorareTokensOwnershipTransferredIterator{contract: _SorareTokens.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
 10844  }
 10845  
 10846  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 10847  //
 10848  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 10849  func (_SorareTokens *SorareTokensFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *SorareTokensOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
 10850  
 10851  	var previousOwnerRule []interface{}
 10852  	for _, previousOwnerItem := range previousOwner {
 10853  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 10854  	}
 10855  	var newOwnerRule []interface{}
 10856  	for _, newOwnerItem := range newOwner {
 10857  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 10858  	}
 10859  
 10860  	logs, sub, err := _SorareTokens.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 10861  	if err != nil {
 10862  		return nil, err
 10863  	}
 10864  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10865  		defer sub.Unsubscribe()
 10866  		for {
 10867  			select {
 10868  			case log := <-logs:
 10869  				// New log arrived, parse the event and forward to the user
 10870  				event := new(SorareTokensOwnershipTransferred)
 10871  				if err := _SorareTokens.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 10872  					return err
 10873  				}
 10874  				event.Raw = log
 10875  
 10876  				select {
 10877  				case sink <- event:
 10878  				case err := <-sub.Err():
 10879  					return err
 10880  				case <-quit:
 10881  					return nil
 10882  				}
 10883  			case err := <-sub.Err():
 10884  				return err
 10885  			case <-quit:
 10886  				return nil
 10887  			}
 10888  		}
 10889  	}), nil
 10890  }
 10891  
 10892  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 10893  //
 10894  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 10895  func (_SorareTokens *SorareTokensFilterer) ParseOwnershipTransferred(log types.Log) (*SorareTokensOwnershipTransferred, error) {
 10896  	event := new(SorareTokensOwnershipTransferred)
 10897  	if err := _SorareTokens.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 10898  		return nil, err
 10899  	}
 10900  	event.Raw = log
 10901  	return event, nil
 10902  }
 10903  
 10904  // SorareTokensRoleGrantedIterator is returned from FilterRoleGranted and is used to iterate over the raw logs and unpacked data for RoleGranted events raised by the SorareTokens contract.
 10905  type SorareTokensRoleGrantedIterator struct {
 10906  	Event *SorareTokensRoleGranted // Event containing the contract specifics and raw log
 10907  
 10908  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10909  	event    string              // Event name to use for unpacking event data
 10910  
 10911  	logs chan types.Log        // Log channel receiving the found contract events
 10912  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 10913  	done bool                  // Whether the subscription completed delivering logs
 10914  	fail error                 // Occurred error to stop iteration
 10915  }
 10916  
 10917  // Next advances the iterator to the subsequent event, returning whether there
 10918  // are any more events found. In case of a retrieval or parsing error, false is
 10919  // returned and Error() can be queried for the exact failure.
 10920  func (it *SorareTokensRoleGrantedIterator) Next() bool {
 10921  	// If the iterator failed, stop iterating
 10922  	if it.fail != nil {
 10923  		return false
 10924  	}
 10925  	// If the iterator completed, deliver directly whatever's available
 10926  	if it.done {
 10927  		select {
 10928  		case log := <-it.logs:
 10929  			it.Event = new(SorareTokensRoleGranted)
 10930  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10931  				it.fail = err
 10932  				return false
 10933  			}
 10934  			it.Event.Raw = log
 10935  			return true
 10936  
 10937  		default:
 10938  			return false
 10939  		}
 10940  	}
 10941  	// Iterator still in progress, wait for either a data or an error event
 10942  	select {
 10943  	case log := <-it.logs:
 10944  		it.Event = new(SorareTokensRoleGranted)
 10945  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10946  			it.fail = err
 10947  			return false
 10948  		}
 10949  		it.Event.Raw = log
 10950  		return true
 10951  
 10952  	case err := <-it.sub.Err():
 10953  		it.done = true
 10954  		it.fail = err
 10955  		return it.Next()
 10956  	}
 10957  }
 10958  
 10959  // Error returns any retrieval or parsing error occurred during filtering.
 10960  func (it *SorareTokensRoleGrantedIterator) Error() error {
 10961  	return it.fail
 10962  }
 10963  
 10964  // Close terminates the iteration process, releasing any pending underlying
 10965  // resources.
 10966  func (it *SorareTokensRoleGrantedIterator) Close() error {
 10967  	it.sub.Unsubscribe()
 10968  	return nil
 10969  }
 10970  
 10971  // SorareTokensRoleGranted represents a RoleGranted event raised by the SorareTokens contract.
 10972  type SorareTokensRoleGranted struct {
 10973  	Role    [32]byte
 10974  	Account common.Address
 10975  	Sender  common.Address
 10976  	Raw     types.Log // Blockchain specific contextual infos
 10977  }
 10978  
 10979  // FilterRoleGranted is a free log retrieval operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d.
 10980  //
 10981  // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
 10982  func (_SorareTokens *SorareTokensFilterer) FilterRoleGranted(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*SorareTokensRoleGrantedIterator, error) {
 10983  
 10984  	var roleRule []interface{}
 10985  	for _, roleItem := range role {
 10986  		roleRule = append(roleRule, roleItem)
 10987  	}
 10988  	var accountRule []interface{}
 10989  	for _, accountItem := range account {
 10990  		accountRule = append(accountRule, accountItem)
 10991  	}
 10992  	var senderRule []interface{}
 10993  	for _, senderItem := range sender {
 10994  		senderRule = append(senderRule, senderItem)
 10995  	}
 10996  
 10997  	logs, sub, err := _SorareTokens.contract.FilterLogs(opts, "RoleGranted", roleRule, accountRule, senderRule)
 10998  	if err != nil {
 10999  		return nil, err
 11000  	}
 11001  	return &SorareTokensRoleGrantedIterator{contract: _SorareTokens.contract, event: "RoleGranted", logs: logs, sub: sub}, nil
 11002  }
 11003  
 11004  // WatchRoleGranted is a free log subscription operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d.
 11005  //
 11006  // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
 11007  func (_SorareTokens *SorareTokensFilterer) WatchRoleGranted(opts *bind.WatchOpts, sink chan<- *SorareTokensRoleGranted, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) {
 11008  
 11009  	var roleRule []interface{}
 11010  	for _, roleItem := range role {
 11011  		roleRule = append(roleRule, roleItem)
 11012  	}
 11013  	var accountRule []interface{}
 11014  	for _, accountItem := range account {
 11015  		accountRule = append(accountRule, accountItem)
 11016  	}
 11017  	var senderRule []interface{}
 11018  	for _, senderItem := range sender {
 11019  		senderRule = append(senderRule, senderItem)
 11020  	}
 11021  
 11022  	logs, sub, err := _SorareTokens.contract.WatchLogs(opts, "RoleGranted", roleRule, accountRule, senderRule)
 11023  	if err != nil {
 11024  		return nil, err
 11025  	}
 11026  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11027  		defer sub.Unsubscribe()
 11028  		for {
 11029  			select {
 11030  			case log := <-logs:
 11031  				// New log arrived, parse the event and forward to the user
 11032  				event := new(SorareTokensRoleGranted)
 11033  				if err := _SorareTokens.contract.UnpackLog(event, "RoleGranted", log); err != nil {
 11034  					return err
 11035  				}
 11036  				event.Raw = log
 11037  
 11038  				select {
 11039  				case sink <- event:
 11040  				case err := <-sub.Err():
 11041  					return err
 11042  				case <-quit:
 11043  					return nil
 11044  				}
 11045  			case err := <-sub.Err():
 11046  				return err
 11047  			case <-quit:
 11048  				return nil
 11049  			}
 11050  		}
 11051  	}), nil
 11052  }
 11053  
 11054  // ParseRoleGranted is a log parse operation binding the contract event 0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d.
 11055  //
 11056  // Solidity: event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
 11057  func (_SorareTokens *SorareTokensFilterer) ParseRoleGranted(log types.Log) (*SorareTokensRoleGranted, error) {
 11058  	event := new(SorareTokensRoleGranted)
 11059  	if err := _SorareTokens.contract.UnpackLog(event, "RoleGranted", log); err != nil {
 11060  		return nil, err
 11061  	}
 11062  	event.Raw = log
 11063  	return event, nil
 11064  }
 11065  
 11066  // SorareTokensRoleRevokedIterator is returned from FilterRoleRevoked and is used to iterate over the raw logs and unpacked data for RoleRevoked events raised by the SorareTokens contract.
 11067  type SorareTokensRoleRevokedIterator struct {
 11068  	Event *SorareTokensRoleRevoked // Event containing the contract specifics and raw log
 11069  
 11070  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11071  	event    string              // Event name to use for unpacking event data
 11072  
 11073  	logs chan types.Log        // Log channel receiving the found contract events
 11074  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11075  	done bool                  // Whether the subscription completed delivering logs
 11076  	fail error                 // Occurred error to stop iteration
 11077  }
 11078  
 11079  // Next advances the iterator to the subsequent event, returning whether there
 11080  // are any more events found. In case of a retrieval or parsing error, false is
 11081  // returned and Error() can be queried for the exact failure.
 11082  func (it *SorareTokensRoleRevokedIterator) Next() bool {
 11083  	// If the iterator failed, stop iterating
 11084  	if it.fail != nil {
 11085  		return false
 11086  	}
 11087  	// If the iterator completed, deliver directly whatever's available
 11088  	if it.done {
 11089  		select {
 11090  		case log := <-it.logs:
 11091  			it.Event = new(SorareTokensRoleRevoked)
 11092  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11093  				it.fail = err
 11094  				return false
 11095  			}
 11096  			it.Event.Raw = log
 11097  			return true
 11098  
 11099  		default:
 11100  			return false
 11101  		}
 11102  	}
 11103  	// Iterator still in progress, wait for either a data or an error event
 11104  	select {
 11105  	case log := <-it.logs:
 11106  		it.Event = new(SorareTokensRoleRevoked)
 11107  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11108  			it.fail = err
 11109  			return false
 11110  		}
 11111  		it.Event.Raw = log
 11112  		return true
 11113  
 11114  	case err := <-it.sub.Err():
 11115  		it.done = true
 11116  		it.fail = err
 11117  		return it.Next()
 11118  	}
 11119  }
 11120  
 11121  // Error returns any retrieval or parsing error occurred during filtering.
 11122  func (it *SorareTokensRoleRevokedIterator) Error() error {
 11123  	return it.fail
 11124  }
 11125  
 11126  // Close terminates the iteration process, releasing any pending underlying
 11127  // resources.
 11128  func (it *SorareTokensRoleRevokedIterator) Close() error {
 11129  	it.sub.Unsubscribe()
 11130  	return nil
 11131  }
 11132  
 11133  // SorareTokensRoleRevoked represents a RoleRevoked event raised by the SorareTokens contract.
 11134  type SorareTokensRoleRevoked struct {
 11135  	Role    [32]byte
 11136  	Account common.Address
 11137  	Sender  common.Address
 11138  	Raw     types.Log // Blockchain specific contextual infos
 11139  }
 11140  
 11141  // FilterRoleRevoked is a free log retrieval operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b.
 11142  //
 11143  // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
 11144  func (_SorareTokens *SorareTokensFilterer) FilterRoleRevoked(opts *bind.FilterOpts, role [][32]byte, account []common.Address, sender []common.Address) (*SorareTokensRoleRevokedIterator, error) {
 11145  
 11146  	var roleRule []interface{}
 11147  	for _, roleItem := range role {
 11148  		roleRule = append(roleRule, roleItem)
 11149  	}
 11150  	var accountRule []interface{}
 11151  	for _, accountItem := range account {
 11152  		accountRule = append(accountRule, accountItem)
 11153  	}
 11154  	var senderRule []interface{}
 11155  	for _, senderItem := range sender {
 11156  		senderRule = append(senderRule, senderItem)
 11157  	}
 11158  
 11159  	logs, sub, err := _SorareTokens.contract.FilterLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule)
 11160  	if err != nil {
 11161  		return nil, err
 11162  	}
 11163  	return &SorareTokensRoleRevokedIterator{contract: _SorareTokens.contract, event: "RoleRevoked", logs: logs, sub: sub}, nil
 11164  }
 11165  
 11166  // WatchRoleRevoked is a free log subscription operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b.
 11167  //
 11168  // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
 11169  func (_SorareTokens *SorareTokensFilterer) WatchRoleRevoked(opts *bind.WatchOpts, sink chan<- *SorareTokensRoleRevoked, role [][32]byte, account []common.Address, sender []common.Address) (event.Subscription, error) {
 11170  
 11171  	var roleRule []interface{}
 11172  	for _, roleItem := range role {
 11173  		roleRule = append(roleRule, roleItem)
 11174  	}
 11175  	var accountRule []interface{}
 11176  	for _, accountItem := range account {
 11177  		accountRule = append(accountRule, accountItem)
 11178  	}
 11179  	var senderRule []interface{}
 11180  	for _, senderItem := range sender {
 11181  		senderRule = append(senderRule, senderItem)
 11182  	}
 11183  
 11184  	logs, sub, err := _SorareTokens.contract.WatchLogs(opts, "RoleRevoked", roleRule, accountRule, senderRule)
 11185  	if err != nil {
 11186  		return nil, err
 11187  	}
 11188  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11189  		defer sub.Unsubscribe()
 11190  		for {
 11191  			select {
 11192  			case log := <-logs:
 11193  				// New log arrived, parse the event and forward to the user
 11194  				event := new(SorareTokensRoleRevoked)
 11195  				if err := _SorareTokens.contract.UnpackLog(event, "RoleRevoked", log); err != nil {
 11196  					return err
 11197  				}
 11198  				event.Raw = log
 11199  
 11200  				select {
 11201  				case sink <- event:
 11202  				case err := <-sub.Err():
 11203  					return err
 11204  				case <-quit:
 11205  					return nil
 11206  				}
 11207  			case err := <-sub.Err():
 11208  				return err
 11209  			case <-quit:
 11210  				return nil
 11211  			}
 11212  		}
 11213  	}), nil
 11214  }
 11215  
 11216  // ParseRoleRevoked is a log parse operation binding the contract event 0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b.
 11217  //
 11218  // Solidity: event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
 11219  func (_SorareTokens *SorareTokensFilterer) ParseRoleRevoked(log types.Log) (*SorareTokensRoleRevoked, error) {
 11220  	event := new(SorareTokensRoleRevoked)
 11221  	if err := _SorareTokens.contract.UnpackLog(event, "RoleRevoked", log); err != nil {
 11222  		return nil, err
 11223  	}
 11224  	event.Raw = log
 11225  	return event, nil
 11226  }
 11227  
 11228  // SorareTokensTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the SorareTokens contract.
 11229  type SorareTokensTransferIterator struct {
 11230  	Event *SorareTokensTransfer // Event containing the contract specifics and raw log
 11231  
 11232  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11233  	event    string              // Event name to use for unpacking event data
 11234  
 11235  	logs chan types.Log        // Log channel receiving the found contract events
 11236  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11237  	done bool                  // Whether the subscription completed delivering logs
 11238  	fail error                 // Occurred error to stop iteration
 11239  }
 11240  
 11241  // Next advances the iterator to the subsequent event, returning whether there
 11242  // are any more events found. In case of a retrieval or parsing error, false is
 11243  // returned and Error() can be queried for the exact failure.
 11244  func (it *SorareTokensTransferIterator) Next() bool {
 11245  	// If the iterator failed, stop iterating
 11246  	if it.fail != nil {
 11247  		return false
 11248  	}
 11249  	// If the iterator completed, deliver directly whatever's available
 11250  	if it.done {
 11251  		select {
 11252  		case log := <-it.logs:
 11253  			it.Event = new(SorareTokensTransfer)
 11254  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11255  				it.fail = err
 11256  				return false
 11257  			}
 11258  			it.Event.Raw = log
 11259  			return true
 11260  
 11261  		default:
 11262  			return false
 11263  		}
 11264  	}
 11265  	// Iterator still in progress, wait for either a data or an error event
 11266  	select {
 11267  	case log := <-it.logs:
 11268  		it.Event = new(SorareTokensTransfer)
 11269  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11270  			it.fail = err
 11271  			return false
 11272  		}
 11273  		it.Event.Raw = log
 11274  		return true
 11275  
 11276  	case err := <-it.sub.Err():
 11277  		it.done = true
 11278  		it.fail = err
 11279  		return it.Next()
 11280  	}
 11281  }
 11282  
 11283  // Error returns any retrieval or parsing error occurred during filtering.
 11284  func (it *SorareTokensTransferIterator) Error() error {
 11285  	return it.fail
 11286  }
 11287  
 11288  // Close terminates the iteration process, releasing any pending underlying
 11289  // resources.
 11290  func (it *SorareTokensTransferIterator) Close() error {
 11291  	it.sub.Unsubscribe()
 11292  	return nil
 11293  }
 11294  
 11295  // SorareTokensTransfer represents a Transfer event raised by the SorareTokens contract.
 11296  type SorareTokensTransfer struct {
 11297  	From    common.Address
 11298  	To      common.Address
 11299  	TokenId *big.Int
 11300  	Raw     types.Log // Blockchain specific contextual infos
 11301  }
 11302  
 11303  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 11304  //
 11305  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 11306  func (_SorareTokens *SorareTokensFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*SorareTokensTransferIterator, error) {
 11307  
 11308  	var fromRule []interface{}
 11309  	for _, fromItem := range from {
 11310  		fromRule = append(fromRule, fromItem)
 11311  	}
 11312  	var toRule []interface{}
 11313  	for _, toItem := range to {
 11314  		toRule = append(toRule, toItem)
 11315  	}
 11316  	var tokenIdRule []interface{}
 11317  	for _, tokenIdItem := range tokenId {
 11318  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 11319  	}
 11320  
 11321  	logs, sub, err := _SorareTokens.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 11322  	if err != nil {
 11323  		return nil, err
 11324  	}
 11325  	return &SorareTokensTransferIterator{contract: _SorareTokens.contract, event: "Transfer", logs: logs, sub: sub}, nil
 11326  }
 11327  
 11328  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 11329  //
 11330  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 11331  func (_SorareTokens *SorareTokensFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *SorareTokensTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 11332  
 11333  	var fromRule []interface{}
 11334  	for _, fromItem := range from {
 11335  		fromRule = append(fromRule, fromItem)
 11336  	}
 11337  	var toRule []interface{}
 11338  	for _, toItem := range to {
 11339  		toRule = append(toRule, toItem)
 11340  	}
 11341  	var tokenIdRule []interface{}
 11342  	for _, tokenIdItem := range tokenId {
 11343  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 11344  	}
 11345  
 11346  	logs, sub, err := _SorareTokens.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 11347  	if err != nil {
 11348  		return nil, err
 11349  	}
 11350  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11351  		defer sub.Unsubscribe()
 11352  		for {
 11353  			select {
 11354  			case log := <-logs:
 11355  				// New log arrived, parse the event and forward to the user
 11356  				event := new(SorareTokensTransfer)
 11357  				if err := _SorareTokens.contract.UnpackLog(event, "Transfer", log); err != nil {
 11358  					return err
 11359  				}
 11360  				event.Raw = log
 11361  
 11362  				select {
 11363  				case sink <- event:
 11364  				case err := <-sub.Err():
 11365  					return err
 11366  				case <-quit:
 11367  					return nil
 11368  				}
 11369  			case err := <-sub.Err():
 11370  				return err
 11371  			case <-quit:
 11372  				return nil
 11373  			}
 11374  		}
 11375  	}), nil
 11376  }
 11377  
 11378  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 11379  //
 11380  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 11381  func (_SorareTokens *SorareTokensFilterer) ParseTransfer(log types.Log) (*SorareTokensTransfer, error) {
 11382  	event := new(SorareTokensTransfer)
 11383  	if err := _SorareTokens.contract.UnpackLog(event, "Transfer", log); err != nil {
 11384  		return nil, err
 11385  	}
 11386  	event.Raw = log
 11387  	return event, nil
 11388  }
 11389  
 11390  // StringsABI is the input ABI used to generate the binding from.
 11391  const StringsABI = "[]"
 11392  
 11393  // StringsBin is the compiled bytecode used for deploying new contracts.
 11394  var StringsBin = "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220da4b33dead2364cb912c6aedb944bdac18432735a78ac109dc4a7f2f7bc8d0b864736f6c63430006060033"
 11395  
 11396  // DeployStrings deploys a new Ethereum contract, binding an instance of Strings to it.
 11397  func DeployStrings(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Strings, error) {
 11398  	parsed, err := abi.JSON(strings.NewReader(StringsABI))
 11399  	if err != nil {
 11400  		return common.Address{}, nil, nil, err
 11401  	}
 11402  
 11403  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(StringsBin), backend)
 11404  	if err != nil {
 11405  		return common.Address{}, nil, nil, err
 11406  	}
 11407  	return address, tx, &Strings{StringsCaller: StringsCaller{contract: contract}, StringsTransactor: StringsTransactor{contract: contract}, StringsFilterer: StringsFilterer{contract: contract}}, nil
 11408  }
 11409  
 11410  // Strings is an auto generated Go binding around an Ethereum contract.
 11411  type Strings struct {
 11412  	StringsCaller     // Read-only binding to the contract
 11413  	StringsTransactor // Write-only binding to the contract
 11414  	StringsFilterer   // Log filterer for contract events
 11415  }
 11416  
 11417  // StringsCaller is an auto generated read-only Go binding around an Ethereum contract.
 11418  type StringsCaller struct {
 11419  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11420  }
 11421  
 11422  // StringsTransactor is an auto generated write-only Go binding around an Ethereum contract.
 11423  type StringsTransactor struct {
 11424  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11425  }
 11426  
 11427  // StringsFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
 11428  type StringsFilterer struct {
 11429  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11430  }
 11431  
 11432  // StringsSession is an auto generated Go binding around an Ethereum contract,
 11433  // with pre-set call and transact options.
 11434  type StringsSession struct {
 11435  	Contract     *Strings          // Generic contract binding to set the session for
 11436  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 11437  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 11438  }
 11439  
 11440  // StringsCallerSession is an auto generated read-only Go binding around an Ethereum contract,
 11441  // with pre-set call options.
 11442  type StringsCallerSession struct {
 11443  	Contract *StringsCaller // Generic contract caller binding to set the session for
 11444  	CallOpts bind.CallOpts  // Call options to use throughout this session
 11445  }
 11446  
 11447  // StringsTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
 11448  // with pre-set transact options.
 11449  type StringsTransactorSession struct {
 11450  	Contract     *StringsTransactor // Generic contract transactor binding to set the session for
 11451  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
 11452  }
 11453  
 11454  // StringsRaw is an auto generated low-level Go binding around an Ethereum contract.
 11455  type StringsRaw struct {
 11456  	Contract *Strings // Generic contract binding to access the raw methods on
 11457  }
 11458  
 11459  // StringsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 11460  type StringsCallerRaw struct {
 11461  	Contract *StringsCaller // Generic read-only contract binding to access the raw methods on
 11462  }
 11463  
 11464  // StringsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 11465  type StringsTransactorRaw struct {
 11466  	Contract *StringsTransactor // Generic write-only contract binding to access the raw methods on
 11467  }
 11468  
 11469  // NewStrings creates a new instance of Strings, bound to a specific deployed contract.
 11470  func NewStrings(address common.Address, backend bind.ContractBackend) (*Strings, error) {
 11471  	contract, err := bindStrings(address, backend, backend, backend)
 11472  	if err != nil {
 11473  		return nil, err
 11474  	}
 11475  	return &Strings{StringsCaller: StringsCaller{contract: contract}, StringsTransactor: StringsTransactor{contract: contract}, StringsFilterer: StringsFilterer{contract: contract}}, nil
 11476  }
 11477  
 11478  // NewStringsCaller creates a new read-only instance of Strings, bound to a specific deployed contract.
 11479  func NewStringsCaller(address common.Address, caller bind.ContractCaller) (*StringsCaller, error) {
 11480  	contract, err := bindStrings(address, caller, nil, nil)
 11481  	if err != nil {
 11482  		return nil, err
 11483  	}
 11484  	return &StringsCaller{contract: contract}, nil
 11485  }
 11486  
 11487  // NewStringsTransactor creates a new write-only instance of Strings, bound to a specific deployed contract.
 11488  func NewStringsTransactor(address common.Address, transactor bind.ContractTransactor) (*StringsTransactor, error) {
 11489  	contract, err := bindStrings(address, nil, transactor, nil)
 11490  	if err != nil {
 11491  		return nil, err
 11492  	}
 11493  	return &StringsTransactor{contract: contract}, nil
 11494  }
 11495  
 11496  // NewStringsFilterer creates a new log filterer instance of Strings, bound to a specific deployed contract.
 11497  func NewStringsFilterer(address common.Address, filterer bind.ContractFilterer) (*StringsFilterer, error) {
 11498  	contract, err := bindStrings(address, nil, nil, filterer)
 11499  	if err != nil {
 11500  		return nil, err
 11501  	}
 11502  	return &StringsFilterer{contract: contract}, nil
 11503  }
 11504  
 11505  // bindStrings binds a generic wrapper to an already deployed contract.
 11506  func bindStrings(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 11507  	parsed, err := abi.JSON(strings.NewReader(StringsABI))
 11508  	if err != nil {
 11509  		return nil, err
 11510  	}
 11511  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 11512  }
 11513  
 11514  // Call invokes the (constant) contract method with params as input values and
 11515  // sets the output to result. The result type might be a single field for simple
 11516  // returns, a slice of interfaces for anonymous returns and a struct for named
 11517  // returns.
 11518  func (_Strings *StringsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 11519  	return _Strings.Contract.StringsCaller.contract.Call(opts, result, method, params...)
 11520  }
 11521  
 11522  // Transfer initiates a plain transaction to move funds to the contract, calling
 11523  // its default method if one is available.
 11524  func (_Strings *StringsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11525  	return _Strings.Contract.StringsTransactor.contract.Transfer(opts)
 11526  }
 11527  
 11528  // Transact invokes the (paid) contract method with params as input values.
 11529  func (_Strings *StringsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11530  	return _Strings.Contract.StringsTransactor.contract.Transact(opts, method, params...)
 11531  }
 11532  
 11533  // Call invokes the (constant) contract method with params as input values and
 11534  // sets the output to result. The result type might be a single field for simple
 11535  // returns, a slice of interfaces for anonymous returns and a struct for named
 11536  // returns.
 11537  func (_Strings *StringsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
 11538  	return _Strings.Contract.contract.Call(opts, result, method, params...)
 11539  }
 11540  
 11541  // Transfer initiates a plain transaction to move funds to the contract, calling
 11542  // its default method if one is available.
 11543  func (_Strings *StringsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11544  	return _Strings.Contract.contract.Transfer(opts)
 11545  }
 11546  
 11547  // Transact invokes the (paid) contract method with params as input values.
 11548  func (_Strings *StringsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11549  	return _Strings.Contract.contract.Transact(opts, method, params...)
 11550  }