[ { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "address", "name": "minter_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "ERC721EnumerableForbiddenBatchMint", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "ERC721OutOfBoundsIndex", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "Unauthorized", "type": "error" }, { "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": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Claimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Minted", "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": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "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": "ADMIN", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "CONVERSION_RATE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "claim", "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": [], "name": "getConversionRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "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": "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": "address", "name": "to", "type": "address" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "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" }, { "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": "bool", "name": "_isActive", "type": "bool" } ], "name": "setActive", "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": "_fashTokenContract", "type": "address" } ], "name": "setFashTokenContract", "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" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b5060405162002545380380620025458339810160408190526200003491620002f2565b8181818686600062000047838262000412565b50600162000056828262000412565b5050506001600160a01b0381166200008857604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000938162000108565b50620000a16000836200015a565b50620000ce7fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec42836200015a565b50620000fb7ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc9826200015a565b50505050505050620004de565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000828152600a602090815260408083206001600160a01b038516845290915281205460ff1662000203576000838152600a602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620001ba3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000207565b5060005b92915050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200023557600080fd5b81516001600160401b03808211156200025257620002526200020d565b604051601f8301601f19908116603f011681019082821181831017156200027d576200027d6200020d565b81604052838152602092508660208588010111156200029b57600080fd5b600091505b83821015620002bf5785820183015181830184015290820190620002a0565b6000602085830101528094505050505092915050565b80516001600160a01b0381168114620002ed57600080fd5b919050565b600080600080608085870312156200030957600080fd5b84516001600160401b03808211156200032157600080fd5b6200032f8883890162000223565b955060208701519150808211156200034657600080fd5b50620003558782880162000223565b9350506200036660408601620002d5565b91506200037660608601620002d5565b905092959194509250565b600181811c908216806200039657607f821691505b602082108103620003b757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200040d576000816000526020600020601f850160051c81016020861015620003e85750805b601f850160051c820191505b818110156200040957828155600101620003f4565b5050505b505050565b81516001600160401b038111156200042e576200042e6200020d565b62000446816200043f845462000381565b84620003bd565b602080601f8311600181146200047e5760008415620004655750858301515b600019600386901b1c1916600185901b17855562000409565b600085815260208120601f198616915b82811015620004af578886015182559484019460019091019084016200048e565b5085821015620004ce5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61205780620004ee6000396000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c80636352211e11610145578063acec338a116100bd578063e985e9c51161008c578063f36089ec11610071578063f36089ec1461051b578063fe6d812414610522578063fefb28331461054957600080fd5b8063e985e9c5146104cc578063f2fde38b1461050857600080fd5b8063acec338a14610480578063b88d4fde14610493578063c87b56dd146104a6578063d547741f146104b957600080fd5b80638da5cb5b1161011457806395d89b41116100f957806395d89b411461045d578063a217fddf14610465578063a22cb4651461046d57600080fd5b80638da5cb5b1461041357806391d148541461042457600080fd5b80636352211e146103d25780636a627842146103e557806370a08231146103f8578063715018a61461040b57600080fd5b80632a0acc6a116101d857806336568abe116101a757806342842e0e1161018c57806342842e0e1461039957806342966c68146103ac5780634f6ccce7146103bf57600080fd5b806336568abe14610373578063379607f51461038657600080fd5b80632a0acc6a1461031e5780632c8bff31146103455780632f2ff15d1461034d5780632f745c591461036057600080fd5b806318160ddd1161021457806318160ddd146102c357806323b872dd146102d5578063248a9ca3146102e8578063248b71fc1461030b57600080fd5b806301ffc9a71461024657806306fdde031461026e578063081812fc14610283578063095ea7b3146102ae575b600080fd5b610259610254366004611bc8565b61055c565b60405190151581526020015b60405180910390f35b61027661056d565b6040516102659190611c3c565b610296610291366004611c4f565b6105ff565b6040516001600160a01b039091168152602001610265565b6102c16102bc366004611c84565b610628565b005b6008545b604051908152602001610265565b6102c16102e3366004611cae565b610637565b6102c76102f6366004611c4f565b6000908152600a602052604090206001015490565b6102c1610319366004611c84565b6106e0565b6102c77fdf8b4c520ffe197c5343c6f5aec59570151ef9a492f2c624fd45ddde6135ec4281565b6102c7606481565b6102c161035b366004611cea565b6107f9565b6102c761036e366004611c84565b61081e565b6102c1610381366004611cea565b610883565b6102c1610394366004611c4f565b6108d4565b6102c16103a7366004611cae565b610a81565b6102c16103ba366004611c4f565b610a9c565b6102c76103cd366004611c4f565b610aa8565b6102966103e0366004611c4f565b610b01565b6102c16103f3366004611d16565b610b0c565b6102c7610406366004611d16565b610c02565b6102c1610c63565b600b546001600160a01b0316610296565b610259610432366004611cea565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610276610c77565b6102c7600081565b6102c161047b366004611d3f565b610c86565b6102c161048e366004611d76565b610c91565b6102c16104a1366004611da9565b610cd2565b6102766104b4366004611c4f565b610ce9565b6102c16104c7366004611cea565b610d23565b6102596104da366004611e85565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6102c1610516366004611d16565b610d48565b60646102c7565b6102c77ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc981565b6102c1610557366004611d16565b610d9c565b600061056782610dd3565b92915050565b60606000805461057c90611eaf565b80601f01602080910402602001604051908101604052809291908181526020018280546105a890611eaf565b80156105f55780601f106105ca576101008083540402835291602001916105f5565b820191906000526020600020905b8154815290600101906020018083116105d857829003601f168201915b5050505050905090565b600061060a82610e11565b506000828152600460205260409020546001600160a01b0316610567565b610633828233610e4a565b5050565b6001600160a01b03821661066657604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610673838333610e57565b9050836001600160a01b0316816001600160a01b0316146106da576040517f64283d7b0000000000000000000000000000000000000000000000000000000081526001600160a01b038086166004830152602482018490528216604482015260640161065d565b50505050565b3360009081527faa21b1d42ba005f53a5dca3c67cdeeca913f12dff4f792be5374f31b53b4cbb6602052604090205460ff1661075157604051637336246d60e11b81527ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc9600482015260240161065d565b600c54600160a01b900460ff166107bb5760405162461bcd60e51b815260206004820152602860248201527f46617368566f7563686572546f6b656e3a20636f6e7472616374206973206e6f604482015267742061637469766560c01b606482015260840161065d565b60006107c660085490565b6107d1906001611eff565b905060005b828110156106da576107f1846107ec8385611eff565b610e6c565b6001016107d6565b6000828152600a602052604090206001015461081481610e86565b6106da8383610e90565b600061082983610c02565b821061085a5760405163295f44f760e21b81526001600160a01b03841660048201526024810183905260440161065d565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6001600160a01b03811633146108c5576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108cf8282610f3e565b505050565b600c54600160a01b900460ff1661093e5760405162461bcd60e51b815260206004820152602860248201527f46617368566f7563686572546f6b656e3a20636f6e7472616374206973206e6f604482015267742061637469766560c01b606482015260840161065d565b3361094882610b01565b6001600160a01b0316146109c45760405162461bcd60e51b815260206004820152603660248201527f46617368566f7563686572546f6b656e3a2063616c6c6572206973206e6f742060448201527f746865206f776e6572206f662074686520746f6b656e00000000000000000000606482015260840161065d565b600c546001600160a01b031663a9059cbb336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152606460248201526044016020604051808303816000875af1158015610a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a479190611f12565b50610a5181610fc5565b604051819033907fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a90600090a350565b6108cf83838360405180602001604052806000815250610cd2565b61063360008233610e57565b6000610ab360085490565b8210610adc5760405163295f44f760e21b8152600060048201526024810183905260440161065d565b60088281548110610aef57610aef611f2f565b90600052602060002001549050919050565b600061056782610e11565b3360009081527faa21b1d42ba005f53a5dca3c67cdeeca913f12dff4f792be5374f31b53b4cbb6602052604090205460ff16610b7d57604051637336246d60e11b81527ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc9600482015260240161065d565b600c54600160a01b900460ff16610be75760405162461bcd60e51b815260206004820152602860248201527f46617368566f7563686572546f6b656e3a20636f6e7472616374206973206e6f604482015267742061637469766560c01b606482015260840161065d565b610bff81610bf460085490565b6107ec906001611eff565b50565b60006001600160a01b038216610c47576040517f89c62b640000000000000000000000000000000000000000000000000000000081526000600482015260240161065d565b506001600160a01b031660009081526003602052604090205490565b610c6b611000565b610c756000611046565b565b60606001805461057c90611eaf565b6106333383836110a5565b610c99611000565b600c8054911515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b610cdd848484610637565b6106da8484848461115d565b6060610cf3611286565b610cfc836112a6565b604051602001610d0d929190611f45565b6040516020818303038152906040529050919050565b6000828152600a6020526040902060010154610d3e81610e86565b6106da8383610f3e565b610d50611000565b6001600160a01b038116610d93576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161065d565b610bff81611046565b610da4611000565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60006001600160e01b031982167f7965db0b000000000000000000000000000000000000000000000000000000001480610567575061056782611346565b6000818152600260205260408120546001600160a01b03168061056757604051637e27328960e01b81526004810184905260240161065d565b6108cf8383836001611384565b6000610e648484846114cf565b949350505050565b61063382826040518060200160405280600081525061159c565b610bff81336115b3565b6000828152600a602090815260408083206001600160a01b038516845290915281205460ff16610f36576000838152600a602090815260408083206001600160a01b03861684529091529020805460ff19166001179055610eee3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610567565b506000610567565b6000828152600a602090815260408083206001600160a01b038516845290915281205460ff1615610f36576000838152600a602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610567565b6000610fd46000836000610e57565b90506001600160a01b03811661063357604051637e27328960e01b81526004810183905260240161065d565b600b546001600160a01b03163314610c75576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161065d565b600b80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166110f0576040517f5b08ba180000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161065d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156106da57604051630a85bd0160e11b81526001600160a01b0384169063150b7a029061119f903390889087908790600401611f74565b6020604051808303816000875af19250505080156111da575060408051601f3d908101601f191682019092526111d791810190611fb0565b60015b611243573d808015611208576040519150601f19603f3d011682016040523d82523d6000602084013e61120d565b606091505b50805160000361123b57604051633250574960e11b81526001600160a01b038516600482015260240161065d565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461127f57604051633250574960e11b81526001600160a01b038516600482015260240161065d565b5050505050565b60606040518060600160405280602b8152602001611ff7602b9139905090565b606060006112b383611621565b600101905060008167ffffffffffffffff8111156112d3576112d3611d93565b6040519080825280601f01601f1916602001820160405280156112fd576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461130757509392505050565b60006001600160e01b031982167f780e9d63000000000000000000000000000000000000000000000000000000001480610567575061056782611703565b808061139857506001600160a01b03821615155b156114925760006113a884610e11565b90506001600160a01b038316158015906113d45750826001600160a01b0316816001600160a01b031614155b801561140657506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15611448576040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240161065d565b81156114905783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50506000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000806114dd85858561179e565b90506001600160a01b03811661153a5761153584600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61155d565b846001600160a01b0316816001600160a01b03161461155d5761155d81856118a4565b6001600160a01b0385166115795761157484611935565b610e64565b846001600160a01b0316816001600160a01b031614610e6457610e6485856119e4565b6115a68383611a34565b6108cf600084848461115d565b6000828152600a602090815260408083206001600160a01b038516845290915290205460ff16610633576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024810183905260440161065d565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061166a577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611696576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106116b457662386f26fc10000830492506010015b6305f5e10083106116cc576305f5e100830492506008015b61271083106116e057612710830492506004015b606483106116f2576064830492506002015b600a83106105675760010192915050565b60006001600160e01b031982167f80ac58cd00000000000000000000000000000000000000000000000000000000148061176657506001600160e01b031982167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061056757507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b0319831614610567565b6000828152600260205260408120546001600160a01b03908116908316156117cb576117cb818486611ab2565b6001600160a01b03811615611809576117e8600085600080611384565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615611838576001600160a01b0385166000908152600360205260409020805460010190555b600084815260026020526040808220805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b60006118af83610c02565b600083815260076020526040902054909150808214611902576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061194790600190611fcd565b6000838152600960205260408120546008805493945090928490811061196f5761196f611f2f565b90600052602060002001549050806008838154811061199057611990611f2f565b60009182526020808320909101929092558281526009909152604080822084905585825281205560088054806119c8576119c8611fe0565b6001900381819060005260206000200160009055905550505050565b600060016119f184610c02565b6119fb9190611fcd565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b038216611a5e57604051633250574960e11b81526000600482015260240161065d565b6000611a6c83836000610e57565b90506001600160a01b038116156108cf576040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526000600482015260240161065d565b611abd838383611b2f565b6108cf576001600160a01b038316611aeb57604051637e27328960e01b81526004810182905260240161065d565b6040517f177e802f0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024810182905260440161065d565b60006001600160a01b03831615801590610e645750826001600160a01b0316846001600160a01b03161480611b8957506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80610e645750506000908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b031981168114610bff57600080fd5b600060208284031215611bda57600080fd5b8135611be581611bb2565b9392505050565b60005b83811015611c07578181015183820152602001611bef565b50506000910152565b60008151808452611c28816020860160208601611bec565b601f01601f19169290920160200192915050565b602081526000611be56020830184611c10565b600060208284031215611c6157600080fd5b5035919050565b80356001600160a01b0381168114611c7f57600080fd5b919050565b60008060408385031215611c9757600080fd5b611ca083611c68565b946020939093013593505050565b600080600060608486031215611cc357600080fd5b611ccc84611c68565b9250611cda60208501611c68565b9150604084013590509250925092565b60008060408385031215611cfd57600080fd5b82359150611d0d60208401611c68565b90509250929050565b600060208284031215611d2857600080fd5b611be582611c68565b8015158114610bff57600080fd5b60008060408385031215611d5257600080fd5b611d5b83611c68565b91506020830135611d6b81611d31565b809150509250929050565b600060208284031215611d8857600080fd5b8135611be581611d31565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611dbf57600080fd5b611dc885611c68565b9350611dd660208601611c68565b925060408501359150606085013567ffffffffffffffff80821115611dfa57600080fd5b818701915087601f830112611e0e57600080fd5b813581811115611e2057611e20611d93565b604051601f8201601f19908116603f01168101908382118183101715611e4857611e48611d93565b816040528281528a6020848701011115611e6157600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611e9857600080fd5b611ea183611c68565b9150611d0d60208401611c68565b600181811c90821680611ec357607f821691505b602082108103611ee357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561056757610567611ee9565b600060208284031215611f2457600080fd5b8151611be581611d31565b634e487b7160e01b600052603260045260246000fd5b60008351611f57818460208801611bec565b835190830190611f6b818360208801611bec565b01949350505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152611fa66080830184611c10565b9695505050505050565b600060208284031215611fc257600080fd5b8151611be581611bb2565b8181038181111561056757610567611ee9565b634e487b7160e01b600052603160045260246000fdfe68747470733a2f2f666173682d636c61696d2d6170692e626e762e6d652f6170692f6d657461646174612fa264697066735822122024a884a89324a4a9cebf168bfa7bb2ac8701894e047ffa9ea42bfc78b104bddf64736f6c63430008180033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000c40441f3f7793897ef5528e4573012b706d9857a000000000000000000000000b7403e2161358c6d819e97878a7ce653b08a2e1a000000000000000000000000000000000000000000000000000000000000000c4661246820436f75706f6e73000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024643000000000000000000000000000000000000000000000000000000000000