UNPKG

@vechain/vebetterdao-contracts

Version:

Vebetter DAO smart contracts, including their addresses, ABIs, and interfaces.

1,313 lines 101 kB
{ "_format": "hh-sol-artifact-1", "contractName": "TokenAuction", "sourceName": "contracts/mocks/VechainNodes/TokenAuction.sol", "abi": [ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "_auctionId", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "_candidate", "type": "address" } ], "name": "AddAuctionWhiteList", "type": "event" }, { "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": "uint256", "name": "_auctionId", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "AuctionCancelled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "_auctionId", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_startingPrice", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_endingPrice", "type": "uint256" }, { "indexed": false, "internalType": "uint64", "name": "_duration", "type": "uint64" } ], "name": "AuctionCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "_auctionId", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "_seller", "type": "address" }, { "indexed": false, "internalType": "address", "name": "_winner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_finalPrice", "type": "uint256" } ], "name": "AuctionSuccessful", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_person", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "_op", "type": "bool" } ], "name": "BlackListUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "_owner", "type": "address" } ], "name": "CancelUpgrade", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "_owner", "type": "address" }, { "indexed": false, "internalType": "enum ThunderFactory.strengthLevel", "name": "_fromLevel", "type": "uint8" }, { "indexed": false, "internalType": "enum ThunderFactory.strengthLevel", "name": "_toLevel", "type": "uint8" } ], "name": "LevelChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "_applier", "type": "address" }, { "indexed": false, "internalType": "enum ThunderFactory.strengthLevel", "name": "_level", "type": "uint8" }, { "indexed": false, "internalType": "uint64", "name": "_applyTime", "type": "uint64" }, { "indexed": false, "internalType": "uint64", "name": "_applyBlockno", "type": "uint64" } ], "name": "NewUpgradeApply", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_op", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "_enabled", "type": "bool" } ], "name": "OperatorUpdated", "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": [], "name": "Pause", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_saleAuction", "type": "address" } ], "name": "ProtocolUpgrade", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "_auctionId", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "_candidate", "type": "address" } ], "name": "RemoveAuctionWhiteList", "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" }, { "anonymous": false, "inputs": [], "name": "Unpause", "type": "event" }, { "inputs": [], "name": "InterfaceId_ERC165", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "address", "name": "_address", "type": "address" } ], "name": "addAuctionWhiteList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_operator", "type": "address" } ], "name": "addOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_badGuy", "type": "address" } ], "name": "addToBlackList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_addr", "type": "address" }, { "internalType": "enum ThunderFactory.strengthLevel", "name": "_lvl", "type": "uint8" }, { "internalType": "bool", "name": "_onUpgrade", "type": "bool" }, { "internalType": "uint64", "name": "_applyUpgradeTime", "type": "uint64" }, { "internalType": "uint64", "name": "_applyUpgradeBlockno", "type": "uint64" } ], "name": "addToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "enum ThunderFactory.strengthLevel", "name": "_toLvl", "type": "uint8" } ], "name": "applyUpgrade", "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": [], "name": "auctionCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "bid", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "blackList", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "canTransfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "cancelAuction", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "cancelUpgrade", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint128", "name": "_price", "type": "uint128" }, { "internalType": "uint64", "name": "_duration", "type": "uint64" }, { "internalType": "address", "name": "_toAddress", "type": "address" } ], "name": "createDirectionalSaleAuction", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "uint128", "name": "_startingPrice", "type": "uint128" }, { "internalType": "uint128", "name": "_endingPrice", "type": "uint128" }, { "internalType": "uint64", "name": "_duration", "type": "uint64" } ], "name": "createSaleAuction", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "enum ThunderFactory.strengthLevel", "name": "_toLvl", "type": "uint8" } ], "name": "downgradeTo", "outputs": [], "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": "getMetadata", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "enum ThunderFactory.strengthLevel", "name": "", "type": "uint8" }, { "internalType": "bool", "name": "", "type": "bool" }, { "internalType": "bool", "name": "", "type": "bool" }, { "internalType": "uint64", "name": "", "type": "uint64" }, { "internalType": "uint64", "name": "", "type": "uint64" }, { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "enum ThunderFactory.strengthLevel", "name": "_level", "type": "uint8" } ], "name": "getTokenParams", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint64", "name": "", "type": "uint64" }, { "internalType": "uint64", "name": "", "type": "uint64" }, { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "idToOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_target", "type": "address" } ], "name": "isNormalToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_target", "type": "address" } ], "name": "isToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_target", "type": "address" } ], "name": "isX", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "leadTime", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "normalTokenCount", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "operators", "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": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "ownerToId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "address", "name": "_address", "type": "address" } ], "name": "removeAuctionWhiteList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_innocent", "type": "address" } ], "name": "removeFromBlackList", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_operator", "type": "address" } ], "name": "removeOperator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "saleAuction", "outputs": [ { "internalType": "contract ClockAuction", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "sendBonusTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "_leadtime", "type": "uint64" } ], "name": "setLeadTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "setSaleAuctionAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_newBaseURI", "type": "string" } ], "name": "setTokenMetadataBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "_cooldown", "type": "uint64" } ], "name": "setTransferCooldown", "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": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "transfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "transferCooldown", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "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" }, { "inputs": [], "name": "unpause", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "enum ThunderFactory.strengthLevel", "name": "_toLvl", "type": "uint8" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "xTokenCount", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x6000805460ff60a01b19169055600380546102a360a71b600160a01b600160e01b0319909116179055600480546001600160401b03191661384017905560c0604052601660809081527f5665436861696e54686f72204e6f646520546f6b656e0000000000000000000060a052600c906200007b908262000a09565b5060408051808201909152600381526215939560ea1b6020820152600d90620000a5908262000a09565b50604080516020810190915260008152600e90620000c4908262000a09565b50348015620000d257600080fd5b50600080546001600160a01b031916331781556040805160a08101825282815260208101838152918101838152606082018481526080830185905260068054600181018255955282517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9095018054945192511515600160801b0260ff60801b196001600160401b0394851668010000000000000000026001600160801b031990971694909716939093179490941794851682178455519193839160ff60881b191661ffff60801b1990911617600160881b836007811115620001b957620001b962000ad5565b021790555060808201518160000160126101000a8154816001600160401b0302191690836001600160401b031602179055505050604051806080016040528069d3c21bcecceda10000008152602001600a6001600160401b0316815260200160006001600160401b0316815260200160646001600160401b031681525060056000600160ff1681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160106101000a8154816001600160401b0302191690836001600160401b0316021790555090505060405180608001604052806a0422ca8b0a00a425000000815260200160146001600160401b0316815260200160006001600160401b0316815260200160966001600160401b031681525060056000600260ff1681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160106101000a8154816001600160401b0302191690836001600160401b0316021790555090505060405180608001604052806a0c685fa11e01ec6f0000008152602001601e6001600160401b0316815260200160006001600160401b0316815260200160c86001600160401b031681525060056000600360ff1681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160106101000a8154816001600160401b0302191690836001600160401b031602179055509050506040518060800160405280697f0e10af47c1c7000000815260200160006001600160401b0316815260200160196001600160401b0316815260200160006001600160401b031681525060056000600460ff1681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160106101000a8154816001600160401b0302191690836001600160401b0316021790555090505060405180608001604052806a0152d02c7e14af680000008152602001601e6001600160401b0316815260200160646001600160401b0316815260200160646001600160401b031681525060056000600560ff1681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160106101000a8154816001600160401b0302191690836001600160401b0316021790555090505060405180608001604052806a04a1d89bb94865ec0000008152602001603c6001600160401b0316815260200160966001600160401b0316815260200160966001600160401b031681525060056000600660ff1681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160106101000a8154816001600160401b0302191690836001600160401b0316021790555090505060405180608001604052806a0ce76db1cd49ae360000008152602001605a6001600160401b0316815260200160c86001600160401b0316815260200160c86001600160401b031681525060056000600760ff1681526020019081526020016000206000820151816000015560208201518160010160006101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160010160086101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160010160106101000a8154816001600160401b0302191690836001600160401b03160217905550905050620008b66301ffc9a760e01b620008e060201b60201c565b620008c8630148d34b60e51b620008e0565b620008da635b5e139f60e01b620008e0565b62000aeb565b6001600160e01b031980821690036200093f5760405162461bcd60e51b815260206004820152601360248201527f696e76616c696420696e74657266616365696400000000000000000000000000604482015260640160405180910390fd5b6001600160e01b0319166000908152600b60205260409020805460ff19166001179055565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200098f57607f821691505b602082108103620009b057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000a0457600081815260208120601f850160051c81016020861015620009df5750805b601f850160051c820191505b8181101562000a0057828155600101620009eb565b5050505b505050565b81516001600160401b0381111562000a255762000a2562000964565b62000a3d8162000a3684546200097a565b84620009b6565b602080601f83116001811462000a75576000841562000a5c5750858301515b600019600386901b1c1916600185901b17855562000a00565b600085815260208120601f198616915b8281101562000aa65788860151825594840194600190910190840162000a85565b508582101562000ac55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b61425f8062000afb6000396000f3fe60806040526004361061025a5760003560e01c8063019211971461025f57806301ffc9a7146102815780630324529c146102d057806306fdde03146102f057806307fa65f914610312578063081812fc14610332578063095ea7b31461035f57806313e7c9d81461037f57806318160ddd146103af57806319f37361146103d257806319fa8f50146103f25780631e20363a1461042657806323b872dd14610446578063287e8495146104665780632ad71573146104b55780632c12cc9f146104cb5780632ed9b4fd146104eb5780633f4ba83a1461050b578063417c73a714610520578063454a2ab3146105405780634838d165146105535780634a49ac4c146105835780634d4f6ea9146105a35780635c975abb146105c357806360836166146105e45780636352211e1461060457806368f16293146106245780636fbde40d1461066357806370a082311461068357806379512513146106a35780637aaed899146106c35780638456cb59146106e35780638c8d04a7146106f85780638da5cb5b1461071857806395d89b411461073857806396b5a7551461074d5780639870d7fe1461076d578063a574cea41461078d578063a9059cbb146107c0578063ac8a584a146107e0578063b03e02c214610800578063ba2a954d14610820578063ba6f2e6514610840578063bae3e19e14610860578063bfc206ed14610880578063c87b56dd146108b6578063cd5967db146108d6578063d4156148146108f6578063e6cbe3511461091d578063e729e3a41461093d578063f2fde38b1461096a578063f7e6e60c1461098a578063f9574c69146109aa575b600080fd5b34801561026b57600080fd5b5061027f61027a36600461373e565b6109ca565b005b34801561028d57600080fd5b506102bb61029c36600461376e565b6001600160e01b0319166000908152600b602052604090205460ff1690565b60405190151581526020015b60405180910390f35b3480156102dc57600080fd5b5061027f6102eb366004613798565b610b6a565b3480156102fc57600080fd5b50610305610c61565b6040516102c791906137c4565b34801561031e57600080fd5b506102bb61032d366004613812565b610cef565b34801561033e57600080fd5b5061035261034d36600461382f565b610d12565b6040516102c79190613848565b34801561036b57600080fd5b5061027f61037a366004613798565b610d2d565b34801561038b57600080fd5b506102bb61039a366004613812565b60016020526000908152604090205460ff1681565b3480156103bb57600080fd5b506103c4610dfc565b6040519081526020016102c7565b3480156103de57600080fd5b506102bb6103ed366004613812565b610e2c565b3480156103fe57600080fd5b5061040d6301ffc9a760e01b81565b6040516001600160e01b031990911681526020016102c7565b34801561043257600080fd5b5061027f610441366004613872565b610e88565b34801561045257600080fd5b5061027f610461366004613922565b610ec2565b34801561047257600080fd5b50610486610481366004613977565b61101c565b604080519485526001600160401b039384166020860152918316918401919091521660608201526080016102c7565b3480156104c157600080fd5b506103c4600f5481565b3480156104d757600080fd5b5061027f6104e63660046139a7565b6110a4565b3480156104f757600080fd5b5061027f6105063660046139db565b6110f5565b34801561051757600080fd5b506102bb61130f565b34801561052c57600080fd5b5061027f61053b366004613812565b6113c5565b61027f61054e36600461382f565b61146a565b34801561055f57600080fd5b506102bb61056e366004613812565b60026020526000908152604090205460ff1681565b34801561058f57600080fd5b5061027f61059e366004613812565b6115d7565b3480156105af57600080fd5b506102bb6105be36600461382f565b611669565b3480156105cf57600080fd5b506000546102bb90600160a01b900460ff1681565b3480156105f057600080fd5b5061027f6105ff366004613a2c565b61173e565b34801561061057600080fd5b5061035261061f36600461382f565b6118a4565b34801561063057600080fd5b5060035461064b90600160a01b90046001600160401b031681565b6040516001600160401b0390911681526020016102c7565b34801561066f57600080fd5b5061027f61067e366004613812565b6118bf565b34801561068f57600080fd5b506103c461069e366004613812565b61195a565b3480156106af57600080fd5b5061027f6106be366004613977565b61197c565b3480156106cf57600080fd5b5061027f6106de366004613a66565b611c53565b3480156106ef57600080fd5b506102bb611e1f565b34801561070457600080fd5b5060045461064b906001600160401b031681565b34801561072457600080fd5b50600054610352906001600160a01b031681565b34801561074457600080fd5b50610305611eb4565b34801561075957600080fd5b5061027f61076836600461382f565b611ec1565b34801561077957600080fd5b5061027f610788366004613812565b611f27565b34801561079957600080fd5b506107ad6107a836600461382f565b611fbf565b6040516102c79796959493929190613b0d565b3480156107cc57600080fd5b5061027f6107db366004613798565b61213e565b3480156107ec57600080fd5b5061027f6107fb366004613812565b612269565b34801561080c57600080fd5b5061027f61081b366004613a2c565b6122fb565b34801561082c57600080fd5b5061027f61083b36600461382f565b6124e8565b34801561084c57600080fd5b5061027f61085b3660046139a7565b61268a565b34801561086c57600080fd5b5061027f61087b366004613b5f565b6126e5565b34801561088c57600080fd5b5061035261089b36600461382f565b6008602052600090815260409020546001600160a01b031681565b3480156108c257600080fd5b506103056108d136600461382f565b612874565b3480156108e257600080fd5b5061027f6108f136600461373e565b612912565b34801561090257600080fd5b5060075461064b90600160401b90046001600160401b031681565b34801561092957600080fd5b50600354610352906001600160a01b031681565b34801561094957600080fd5b506103c4610958366004613812565b60096020526000908152604090205481565b34801561097657600080fd5b5061027f610985366004613812565b612a97565b34801561099657600080fd5b5060075461064b906001600160401b031681565b3480156109b657600080fd5b506102bb6109c5366004613812565b612b42565b600054600160a01b900460ff16156109fd5760405162461bcd60e51b81526004016109f490613ba3565b60405180910390fd5b33610a07836118a4565b6001600160a01b031614610a2d5760405162461bcd60e51b81526004016109f490613bd0565b610a3633610e2c565b610a525760405162461bcd60e51b81526004016109f490613bfb565b600354604051630192119760e01b81526001600160a01b0390911690630192119790610a849085908590600401613c23565b600060405180830381600087803b158015610a9e57600080fd5b505af1158015610ab2573d6000803e3d6000fd5b50506003546040516378bd793560e01b815260048101869052600093506001600160a01b0390911691506378bd79359060240160c060405180830381865afa158015610b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b269190613c3a565b50505050509050816001600160a01b031683827f9bd63f96cf38bbd738ef415c10d8ce738b56b75bbe3b31f6bf2059d35f3a8f3a60405160405180910390a4505050565b3360009081526001602052604090205460ff16610b995760405162461bcd60e51b81526004016109f490613bd0565b6001600160a01b038216610bbf5760405162461bcd60e51b81526004016109f490613ca4565b60008111610c005760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a5908185b5bdd5b9d60921b60448201526064016109f4565b60405163a9059cbb60e01b815265456e657267799063a9059cbb90610c2b9085908590600401613ccd565b600060405180830381600087803b158015610c4557600080fd5b505af1158015610c59573d6000803e3d6000fd5b505050505050565b600c8054610c6e90613ce6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c9a90613ce6565b8015610ce75780601f10610cbc57610100808354040283529160200191610ce7565b820191906000526020600020905b815481529060010190602001808311610cca57829003601f168201915b505050505081565b6000610cfa82610e2c565b8015610d0c5750610d0a82612b42565b155b92915050565b6000908152600a60205260409020546001600160a01b031690565b600054600160a01b900460ff1615610d575760405162461bcd60e51b81526004016109f490613ba3565b6000610d62826118a4565b9050806001600160a01b0316836001600160a01b031603610dc55760405162461bcd60e51b815260206004820152601d60248201527f63616e6e6f7420617070726f766520796f7572206f776e20746f6b656e00000060448201526064016109f4565b336001600160a01b03821614610ded5760405162461bcd60e51b81526004016109f490613bd0565b610df78284612ba0565b505050565b600754600090610e1e906001600160401b03600160401b820481169116613d36565b6001600160401b0316905090565b6001600160a01b038116600090815260096020526040812054600680548392908110610e5a57610e5a613d5d565b600091825260209091200154600160881b900460ff166007811115610e8157610e81613ad5565b1192915050565b6000546001600160a01b03163314610eb25760405162461bcd60e51b81526004016109f490613d73565b600e610ebe8282613ddd565b5050565b600054600160a01b900460ff1615610eec5760405162461bcd60e51b81526004016109f490613ba3565b6001600160a01b038216610f125760405162461bcd60e51b81526004016109f490613ca4565b826001600160a01b0316610f25826118a4565b6001600160a01b031614610f4b5760405162461bcd60e51b81526004016109f490613bd0565b610f553382612c18565b610f715760405162461bcd60e51b81526004016109f490613bd0565b610f7a81611669565b610f965760405162461bcd60e51b81526004016109f490613e9c565b6003546040516337e246ad60e01b8152600481018390526001600160a01b03909116906337e246ad90602401602060405180830381865afa158015610fdf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110039190613ed0565b156110115761101181612c67565b610df7838383612d44565b60008060008060006005600087600781111561103a5761103a613ad5565b60ff1681526020808201929092526040908101600020815160808101835281548082526001909201546001600160401b03808216958301869052600160401b82048116948301859052600160801b9091041660609091018190529099929850909650945092505050565b3360009081526001602052604090205460ff166110d35760405162461bcd60e51b81526004016109f490613bd0565b600480546001600160401b0319166001600160401b0392909216919091179055565b600054600160a01b900460ff161561111f5760405162461bcd60e51b81526004016109f490613ba3565b33611129856118a4565b6001600160a01b03161461114f5760405162461bcd60e51b81526004016109f490613bd0565b61115833610e2c565b6111745760405162461bcd60e51b81526004016109f490613bfb565b6006848154811061118757611187613d5d565b600091825260209091200154600160801b900460ff16156111ba5760405162461bcd60e51b81526004016109f490613eed565b6003546111d19085906001600160a01b0316612ba0565b600f546111df906001612d58565b600f81905560035460405163e4f9dd2d60e01b81526001600160a01b039091169163e4f9dd2d9161121f9190889088908190899042903390600401613f1d565b600060405180830381600087803b15801561123957600080fd5b505af115801561124d573d6000803e3d6000fd5b5050505083600f5460008051602061416a83398151915285868660405161127693929190613f6b565b60405180910390a360035460405163cd5967db60e01b81526001600160a01b039091169063cd5967db906112b09087908590600401613c23565b600060405180830381600087803b1580156112ca57600080fd5b505af11580156112de573d6000803e3d6000fd5b5050600f546040516001600160a01b038516935087925060008051602061418a83398151915290600090a450505050565b600080546001600160a01b0316331461133a5760405162461bcd60e51b81526004016109f490613d73565b600054600160a01b900460ff1661138b5760405162461bcd60e51b81526020600482015260156024820152741b9959591cc81c1c9bdd1bd8dbdb081c185d5cd959605a1b60448201526064016109f4565b6000805460ff60a01b191681556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b339190a150600190565b6000546001600160a01b031633146113ef5760405162461bcd60e51b81526004016109f490613d73565b600054600160a01b900460ff16156114195760405162461bcd60e51b81526004016109f490613ba3565b6001600160a01b03811660009081526002602052604090819020805460ff1916600190811790915590516000805160206141ea8339815191529161145f91849190613f97565b60405180910390a150565b600054600160a01b900460ff16156114945760405162461bcd60e51b81526004016109f490613ba3565b6003546040516378bd793560e01b81526004810183905260009182916001600160a01b03909116906378bd79359060240160c060405180830381865afa1580156114e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115069190613c3a565b50506003546040516359d667a560e01b81529496509294506000936001600160a01b03909316926359d667a592503491506115479033908990600401613ccd565b60206040518083038185885af1158015611565573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061158a9190613fb2565b9050816001600160a01b031684847fc2a394cb356728b3540b84dee72ea6de41f44fd94de223565258efe1549ee06f33856040516115c9929190613ccd565b60405180910390a450505050565b6000546001600160a01b031633146116015760405162461bcd60e51b81526004016109f490613d73565b600054600160a01b900460ff161561162b5760405162461bcd60e51b81526004016109f490613ba3565b6001600160a01b038116600090815260026020526040808220805460ff19169055516000805160206141ea8339815191529161145f91849190613f97565b600061167482612dac565b80156116a657506006828154811061168e5761168e613d5d565b600091825260209091200154600160801b900460ff16155b80156116d757506000828152600860209081526040808320546001600160a01b03168352600290915290205460ff16155b8015610d0c5750600360149054906101000a90046001600160401b03166006838154811061170757611707613d5d565b60009182526020909120015461172d9190600160901b90046001600160401b0316613d36565b6001600160401b0316421192915050565b3360009081526001602052604090205460ff1661176d5760405162461bcd60e51b81526004016109f490613bd0565b80600781111561177f5761177f613ad5565b6006838154811061179257611792613d5d565b600091825260209091200154600160881b900460ff1660078111156117b9576117b9613ad5565b106117d65760405162461bcd60e51b81526004016109f490613fcb565b6003546040516337e246ad60e01b8152600481018490526001600160a01b03909116906337e246ad90602401602060405180830381865afa15801561181f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118439190613ed0565b156118605760405162461bcd60e51b81526004016109f490613ff2565b60006006838154811061187557611875613d5d565b60009182526020909120018054911515600160801b0260ff60801b19909216919091179055610ebe8282612dc9565b6000908152600860205260409020546001600160a01b031690565b6000546001600160a01b031633146118e95760405162461bcd60e51b81526004016109f490613d73565b6001600160a01b03811661190f5760405162461bcd60e51b81526004016109f490613ca4565b600380546001600160a01b0319166001600160a01b0383161790556040517fb69d08e828d243d599db935e2be5ce7ed7b0d2f9c9f712ff469a10a27924deb89061145f908390613848565b600061196582610e2c565b611970576000611973565b60015b60ff1692915050565b600054600160a01b900460ff16156119a65760405162461bcd60e51b81526004016109f490613ba3565b33600090815260096020526040812054908190036119cd576119ca336000806130c5565b90505b6000600682815481106119e2576119e2613d5d565b60009182526020909120018054909150600160801b900460ff1615611a3b5760405162461bcd60e51b815260206004820152600f60248201526e7374696c6c20757067726164696e6760881b60448201526064016109f4565b6003546040516337e246ad60e01b8152600481018490526001600160a01b03909116906337e246ad90602401602060405180830381865afa158015611a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa89190613ed0565b15611ac55760405162461bcd60e51b81526004016109f490613ff2565b826007811115611ad757611ad7613ad5565b815460ff91821691600160881b909104166007811115611af957611af9613ad5565b611b04906001614020565b60ff16148015611b2657506004836007811115611b2357611b23613ad5565b14155b8015611b4457506007836007811115611b4157611b41613ad5565b11155b611b815760405162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a590817dd1bd31d9b60921b60448201526064016109f4565b60056000846007811115611b9757611b97613ad5565b60ff16815260208101919091526040016000205433311015611bf25760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b60448201526064016109f4565b80546001600160401b0342908116600160401b02600160401b600160881b031990921691909117600160801b178255604051339184916000805160206141ca83398151915291611c46918891904390614039565b60405180910390a3505050565b3360009081526001602052604090205460ff16611c825760405162461bcd60e51b81526004016109f490613bd0565b611c8b8561326d565b15611cd35760405162461bcd60e51b81526020600482015260186024820152773cb7ba9030b63932b0b23c903437b6321030903a37b5b2b760411b60448201526064016109f4565b6000611ce08686866130c5565b9050846007811115611cf457611cf4613ad5565b600111158015611d1657506003856007811115611d1357611d13613ad5565b11155b15611d5e57600780546001600160401b0316906000611d3483614069565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050611ddd565b846007811115611d7057611d70613ad5565b600411158015611d9257506007856007811115611d8f57611d8f613ad5565b11155b15611ddd5760078054600160401b90046001600160401b0316906008611db783614069565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b8315610c5957856001600160a01b0316816000805160206141ca833981519152878686604051611e0f93929190614039565b60405180910390a3505050505050565b600080546001600160a01b03163314611e4a5760405162461bcd60e51b81526004016109f490613d73565b600054600160a01b900460ff1615611e745760405162461bcd60e51b81526004016109f490613ba3565b6000805460ff60a01b1916600160a01b1781556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff6259190a150600190565b600d8054610c6e90613ce6565b600054600160a01b900460ff1615611eeb5760405162461bcd60e51b81526004016109f490613ba3565b33611ef5826118a4565b6001600160a01b031614611f1b5760405162461bcd60e51b81526004016109f490613bd0565b611f2481612c67565b50565b6000546001600160a01b03163314611f515760405162461bcd60e51b81526004016109f490613d73565b600054600160a01b900460ff1615611f7b5760405162461bcd60e51b81526004016109f490613ba3565b6001600160a01b038116600090815260016020819052604091829020805460ff191682179055905160008051602061420a8339815191529161145f91849190613f97565b6000806000806000806000611fd388612dac565b1561213357600060068981548110611fed57611fed613d5d565b60009182526020918290206040805160a0810182529190920180546001600160401b038082168452600160401b8204169483019490945260ff600160801b85048116151593830193909352909290916060840191600160881b900416600781111561205a5761205a613ad5565b600781111561206b5761206b613ad5565b81529054600160901b90046001600160401b031660209182015260008b815260089091526040908190205460608301518383015160035493516337e246ad60e01b8152600481018f90529495506001600160a01b039