Loading
[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "InvalidQueryRange", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "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": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "maxMintBatchSize", "type": "uint256" } ], "name": "MaxMintBatchSizeChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "enum IEFPListRegistry.MintState", "name": "mintState", "type": "uint8" } ], "name": "MintStateChange", "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": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "priceOracle", "type": "address" } ], "name": "PriceOracleChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "tokenURIProvider", "type": "address" } ], "name": "TokenURIProviderChange", "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": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "listStorageLocation", "type": "bytes" } ], "name": "UpdateListStorageLocation", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract ENS", "name": "ens", "type": "address" }, { "internalType": "address", "name": "claimant", "type": "address" } ], "name": "claimReverseENS", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "explicitOwnershipOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721A.TokenOwnership", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "explicitOwnershipsOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721A.TokenOwnership[]", "name": "", "type": "tuple[]" } ], "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getListStorageLocation", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMaxMintBatchSize", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMintState", "outputs": [ { "internalType": "enum IEFPListRegistry.MintState", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPriceOracle", "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": [ { "internalType": "bytes", "name": "listStorageLocation", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "mintBatch", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "quantity", "type": "uint256" } ], "name": "mintBatchTo", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "bytes", "name": "listStorageLocation", "type": "bytes" } ], "name": "mintTo", "outputs": [], "stateMutability": "payable", "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": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "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": "payable", "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "listStorageLocation", "type": "bytes" } ], "name": "setListStorageLocation", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxMintBatchSize", "type": "uint256" } ], "name": "setMaxMintBatchSize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "enum IEFPListRegistry.MintState", "name": "_mintState", "type": "uint8" } ], "name": "setMintState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "priceOracle_", "type": "address" } ], "name": "setPriceOracle", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract ENS", "name": "ens", "type": "address" }, { "internalType": "string", "name": "name", "type": "string" } ], "name": "setReverseENS", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenURIProvider_", "type": "address" } ], "name": "setTokenURIProvider", "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": "tokenURIProvider", "outputs": [ { "internalType": "contract ITokenURIProvider", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "start", "type": "uint256" }, { "internalType": "uint256", "name": "stop", "type": "uint256" } ], "name": "tokensOfOwnerIn", "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
60806040526008805460ff60a81b191690556127106009553480156200002457600080fd5b5060408051808201825260038082526204546560ec1b60208084018290528451808601909552918452908301529060026200006083826200018d565b5060036200006f82826200018d565b50506000805550620000813362000094565b6008805460ff60a01b1916905562000259565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200011157607f821691505b6020821081036200013257634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000188576000816000526020600020601f850160051c81016020861015620001635750805b601f850160051c820191505b8181101562000184578281556001016200016f565b5050505b505050565b81516001600160401b03811115620001a957620001a9620000e6565b620001c181620001ba8454620000fc565b8462000138565b602080601f831160018114620001f95760008415620001e05750858301515b600019600386901b1c1916600185901b17855562000184565b600085815260208120601f198616915b828110156200022a5788860151825594840194600190910190840162000209565b5085821015620002495787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b612bc580620002696000396000f3fe6080604052600436106102465760003560e01c80637a58aa7211610139578063a22cb465116100b6578063dd58deba1161007a578063dd58deba1461066b578063e985e9c51461068b578063f11cb0af146106d4578063f2fde38b146106f4578063f3fef3a314610714578063fca513a81461073457600080fd5b8063a22cb465146105d8578063b88d4fde146105f8578063c23dc68f1461060b578063c87b56dd14610638578063d52da3ae1461065857600080fd5b80638456cb59116100fd5780638456cb59146105435780638462151c146105585780638da5cb5b1461058557806395d89b41146105a357806399a2557a146105b857600080fd5b80637a58aa72146104b05780637ba0e2e7146104d05780637cebccab146104e35780637f39930f146105035780638007c9401461052357600080fd5b806342842e0e116101c75780636352211e1161018b5780636352211e14610414578063666456981461043457806370a0823114610454578063715018a614610474578063774a88351461048957600080fd5b806342842e0e146103805780635023cb1914610393578063530e784f146103a85780635bbb2177146103c85780635c975abb146103f557600080fd5b806318160ddd1161020e57806318160ddd1461030f57806320e409b41461033257806323b872dd146103455780633d3503d9146103585780633f4ba83a1461036b57600080fd5b806301ffc9a71461024b57806306fdde0314610280578063081812fc146102a2578063095ea7b3146102da57806310623945146102ef575b600080fd5b34801561025757600080fd5b5061026b61026636600461226c565b610752565b60405190151581526020015b60405180910390f35b34801561028c57600080fd5b506102956107a4565b60405161027791906122d9565b3480156102ae57600080fd5b506102c26102bd3660046122ec565b610836565b6040516001600160a01b039091168152602001610277565b6102ed6102e836600461231a565b61087a565b005b3480156102fb57600080fd5b5061029561030a3660046122ec565b61091a565b34801561031b57600080fd5b50600154600054035b604051908152602001610277565b6102ed6103403660046122ec565b6109bc565b6102ed610353366004612346565b610b32565b6102ed6103663660046123cf565b610ccb565b34801561037757600080fd5b506102ed610dbf565b6102ed61038e366004612346565b610dd1565b34801561039f57600080fd5b50600954610324565b3480156103b457600080fd5b506102ed6103c3366004612423565b610df1565b3480156103d457600080fd5b506103e86103e3366004612440565b610e56565b60405161027791906124f0565b34801561040157600080fd5b50600854600160a01b900460ff1661026b565b34801561042057600080fd5b506102c261042f3660046122ec565b610f21565b34801561044057600080fd5b506102ed61044f366004612423565b610f2c565b34801561046057600080fd5b5061032461046f366004612423565b610f82565b34801561048057600080fd5b506102ed610fd0565b34801561049557600080fd5b50600854600160a81b900460ff166040516102779190612548565b3480156104bc57600080fd5b506103246104cb3660046123cf565b610fe2565b6102ed6104de366004612570565b6110ee565b3480156104ef57600080fd5b506102ed6104fe3660046125b1565b6111e1565b34801561050f57600080fd5b506102ed61051e3660046122ec565b611255565b34801561052f57600080fd5b5061032461053e3660046125e3565b61129a565b34801561054f57600080fd5b506102ed61139a565b34801561056457600080fd5b50610578610573366004612423565b6113aa565b604051610277919061261c565b34801561059157600080fd5b506008546001600160a01b03166102c2565b3480156105af57600080fd5b506102956114b2565b3480156105c457600080fd5b506105786105d3366004612654565b6114c1565b3480156105e457600080fd5b506102ed6105f3366004612689565b611638565b6102ed610606366004612729565b6116a4565b34801561061757600080fd5b5061062b6106263660046122ec565b6116e8565b60405161027791906127d7565b34801561064457600080fd5b506102956106533660046122ec565b611760565b6102ed61066636600461231a565b61182c565b34801561067757600080fd5b50600b546102c2906001600160a01b031681565b34801561069757600080fd5b5061026b6106a63660046125e3565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b3480156106e057600080fd5b506102ed6106ef3660046127e5565b611995565b34801561070057600080fd5b506102ed61070f366004612423565b6119fe565b34801561072057600080fd5b5061026b61072f36600461231a565b611a77565b34801561074057600080fd5b50600a546001600160a01b03166102c2565b60006301ffc9a760e01b6001600160e01b03198316148061078357506380ac58cd60e01b6001600160e01b03198316145b8061079e5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6060600280546107b390612806565b80601f01602080910402602001604051908101604052809291908181526020018280546107df90612806565b801561082c5780601f106108015761010080835404028352916020019161082c565b820191906000526020600020905b81548152906001019060200180831161080f57829003601f168201915b5050505050905090565b600061084182611b62565b61085e576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b600061088582610f21565b9050336001600160a01b038216146108be576108a181336106a6565b6108be576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600c6020526040902080546060919061093790612806565b80601f016020809104026020016040519081016040528092919081815260200182805461096390612806565b80156109b05780601f10610985576101008083540402835291602001916109b0565b820191906000526020600020905b81548152906001019060200180831161099357829003601f168201915b50505050509050919050565b6109c4611b89565b6000600854600160a81b900460ff1660038111156109e4576109e4612532565b03610a0a5760405162461bcd60e51b8152600401610a0190612840565b60405180910390fd5b6001600854600160a81b900460ff166003811115610a2a57610a2a612532565b141580610a4157506008546001600160a01b031633145b610a5d5760405162461bcd60e51b8152600401610a0190612877565b6002600854600160a81b900460ff166003811115610a7d57610a7d612532565b141580610a9457506008546001600160a01b031633145b610ab05760405162461bcd60e51b8152600401610a01906128ba565b600954811115610af75760405162461bcd60e51b815260206004820152601260248201527162617463682073697a6520746f6f2062696760701b6044820152606401610a01565b6000610b0282611bd6565b905080341015610b245760405162461bcd60e51b8152600401610a0190612903565b610b2e3383611ce1565b5050565b6000610b3d82611cfb565b9050836001600160a01b0316816001600160a01b031614610b705760405162a1148160e81b815260040160405180910390fd5b60008281526006602052604090208054338082146001600160a01b03881690911417610bbd57610ba086336106a6565b610bbd57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038516610be457604051633a954ecd60e21b815260040160405180910390fd5b8015610bef57600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260046020526040812091909155600160e11b84169003610c8157600184016000818152600460205260408120549003610c7f576000548114610c7f5760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b610cd3611b89565b6000600854600160a81b900460ff166003811115610cf357610cf3612532565b03610d105760405162461bcd60e51b8152600401610a0190612840565b6001600854600160a81b900460ff166003811115610d3057610d30612532565b141580610d4757506008546001600160a01b031633145b610d635760405162461bcd60e51b8152600401610a0190612877565b6000610d726001546000540390565b90506000610d806001611bd6565b905080341015610da25760405162461bcd60e51b8152600401610a0190612903565b610dad856001611ce1565b610db8828585611d62565b5050505050565b610dc7611dbb565b610dcf611e15565b565b610dec838383604051806020016040528060008152506116a4565b505050565b610df9611b89565b610e01611dbb565b600a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f50f00a2e72696d981b6ba41c727758c61783b7a40317c3c8c7c0aa22156b1a13906020015b60405180910390a150565b6060816000816001600160401b03811115610e7357610e736126bc565b604051908082528060200260200182016040528015610ec557816020015b604080516080810182526000808252602080830182905292820181905260608201528252600019909201910181610e915790505b50905060005b828114610f1857610ef3868683818110610ee757610ee761292f565b905060200201356116e8565b828281518110610f0557610f0561292f565b6020908102919091010152600101610ecb565b50949350505050565b600061079e82611cfb565b610f34611dbb565b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527fe53040499957c3d9945fade96500effb92e722ef18f0ad1634a5bdd77a909dca90602001610e4b565b60006001600160a01b038216610fab576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b610fd8611dbb565b610dcf6000611e6a565b6000610fec611dbb565b6040516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260048201526001600160a01b038516906302571be390602401602060405180830381865afa158015611050573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110749190612945565b6001600160a01b031663c47f002784846040518363ffffffff1660e01b81526004016110a192919061298b565b6020604051808303816000875af11580156110c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e4919061299f565b90505b9392505050565b6110f6611b89565b6000600854600160a81b900460ff16600381111561111657611116612532565b036111335760405162461bcd60e51b8152600401610a0190612840565b6001600854600160a81b900460ff16600381111561115357611153612532565b14158061116a57506008546001600160a01b031633145b6111865760405162461bcd60e51b8152600401610a0190612877565b60006111956001546000540390565b905060006111a36001611bd6565b9050803410156111c55760405162461bcd60e51b8152600401610a0190612903565b6111d0336001611ce1565b6111db828585611d62565b50505050565b6111e9611b89565b82336111f482610f21565b6001600160a01b03161461124a5760405162461bcd60e51b815260206004820152601c60248201527f4546503a2063616c6c6572206973206e6f7420746865206f776e6572000000006044820152606401610a01565b6111db848484611d62565b61125d611b89565b611265611dbb565b60098190556040518181527f3219e991fe6339da263a9300a232bd4e46d7902460a6eae556b0945b8347177690602001610e4b565b60006112a4611dbb565b6040516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260048201526001600160a01b038416906302571be390602401602060405180830381865afa158015611308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132c9190612945565b604051630f41a04d60e11b81526001600160a01b0384811660048301529190911690631e83409a906024016020604051808303816000875af1158015611376573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e7919061299f565b6113a2611dbb565b610dcf611ebc565b606060008060006113ba85610f82565b90506000816001600160401b038111156113d6576113d66126bc565b6040519080825280602002602001820160405280156113ff578160200160208202803683370190505b50905061142c60408051608081018252600080825260208201819052918101829052606081019190915290565b60005b8386146114a65761143f81611eff565b9150816040015161149e5781516001600160a01b03161561145f57815194505b876001600160a01b0316856001600160a01b03160361149e57808387806001019850815181106114915761149161292f565b6020026020010181815250505b60010161142f565b50909695505050505050565b6060600380546107b390612806565b60608183106114e357604051631960ccad60e11b815260040160405180910390fd5b6000806114ef60005490565b9050808411156114fd578093505b600061150887610f82565b9050848610156115275785850381811015611521578091505b5061152b565b5060005b6000816001600160401b03811115611545576115456126bc565b60405190808252806020026020018201604052801561156e578160200160208202803683370190505b509050816000036115845793506110e792505050565b600061158f886116e8565b9050600081604001516115a0575080515b885b8881141580156115b25750848714155b15611627576115c081611eff565b9250826040015161161f5782516001600160a01b0316156115e057825191505b8a6001600160a01b0316826001600160a01b03160361161f57808488806001019950815181106116125761161261292f565b6020026020010181815250505b6001016115a2565b505050928352509095945050505050565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6116af848484610b32565b6001600160a01b0383163b156111db576116cb84848484611f3b565b6111db576040516368d2bf6b60e11b815260040160405180910390fd5b604080516080808201835260008083526020808401829052838501829052606080850183905285519384018652828452908301829052938201819052928101839052909150600054831061173c5792915050565b61174583611eff565b90508060400151156117575792915050565b6110e783612026565b600b546060906001600160a01b03166117bb5760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e5552492070726f7669646572206973206e6f7420736574000000006044820152606401610a01565b600b5460405163c87b56dd60e01b8152600481018490526001600160a01b039091169063c87b56dd90602401600060405180830381865afa158015611804573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261079e91908101906129b8565b611834611b89565b6000600854600160a81b900460ff16600381111561185457611854612532565b036118715760405162461bcd60e51b8152600401610a0190612840565b6001600854600160a81b900460ff16600381111561189157611891612532565b1415806118a857506008546001600160a01b031633145b6118c45760405162461bcd60e51b8152600401610a0190612877565b6002600854600160a81b900460ff1660038111156118e4576118e4612532565b1415806118fb57506008546001600160a01b031633145b6119175760405162461bcd60e51b8152600401610a01906128ba565b60095481111561195e5760405162461bcd60e51b815260206004820152601260248201527162617463682073697a6520746f6f2062696760701b6044820152606401610a01565b600061196982611bd6565b90508034101561198b5760405162461bcd60e51b8152600401610a0190612903565b610dec8383611ce1565b61199d611b89565b6119a5611dbb565b6008805482919060ff60a81b1916600160a81b8360038111156119ca576119ca612532565b02179055507fb7b9fda281e81cfc174d175e2b3d01a519b60d7133817213012066742bf2774981604051610e4b9190612548565b611a06611dbb565b6001600160a01b038116611a6b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a01565b611a7481611e6a565b50565b6000611a81611dbb565b47821115611ac85760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610a01565b6000836001600160a01b03168360405160006040518083038185875af1925050503d8060008114611b15576040519150601f19603f3d011682016040523d82523d6000602084013e611b1a565b606091505b50509050806110e75760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b6044820152606401610a01565b600080548210801561079e575050600090815260046020526040902054600160e01b161590565b600854600160a01b900460ff1615610dcf5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610a01565b600a546000906001600160a01b0316611bf057600061079e565b81600114611c6a57600a54604051632bd92dd360e01b8152600481018490526001600160a01b0390911690632bd92dd390602401602060405180830381865afa158015611c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c65919061299f565b61079e565b600a60009054906101000a90046001600160a01b03166001600160a01b03166398d5fdca6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cbd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079e919061299f565b610b2e82826040518060200160405280600081525061205b565b600081600054811015611d495760008181526004602052604081205490600160e01b82169003611d47575b806000036110e7575060001901600081815260046020526040902054611d26565b505b604051636f96cda160e11b815260040160405180910390fd5b6000838152600c60205260409020611d7b828483612a76565b50827fe6504df8b76254e8326dba1d1fd1ac4936de28caf565b9c5a1ad0f10d6c98ec28383604051611dae92919061298b565b60405180910390a2505050565b6008546001600160a01b03163314610dcf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a01565b611e1d6120c1565b6008805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611ec4611b89565b6008805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611e4d3390565b60408051608081018252600080825260208201819052918101829052606081019190915260008281526004602052604090205461079e90612111565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611f70903390899088908890600401612b35565b6020604051808303816000875af1925050508015611fab575060408051601f3d908101601f19168201909252611fa891810190612b72565b60015b612009573d808015611fd9576040519150601f19603f3d011682016040523d82523d6000602084013e611fde565b606091505b508051600003612001576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b60408051608081018252600080825260208201819052918101829052606081019190915261079e61205683611cfb565b612111565b6120658383612158565b6001600160a01b0383163b15610dec576000548281035b61208f6000868380600101945086611f3b565b6120ac576040516368d2bf6b60e11b815260040160405180910390fd5b81811061207c578160005414610db857600080fd5b600854600160a01b900460ff16610dcf5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610a01565b604080516080810182526001600160a01b038316815260a083901c6001600160401b03166020820152600160e01b831615159181019190915260e89190911c606082015290565b600080549082900361217d5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b03831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b81811461222c57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46001016121f4565b508160000361224d57604051622e076360e81b815260040160405180910390fd5b60005550505050565b6001600160e01b031981168114611a7457600080fd5b60006020828403121561227e57600080fd5b81356110e781612256565b60005b838110156122a457818101518382015260200161228c565b50506000910152565b600081518084526122c5816020860160208601612289565b601f01601f19169290920160200192915050565b6020815260006110e760208301846122ad565b6000602082840312156122fe57600080fd5b5035919050565b6001600160a01b0381168114611a7457600080fd5b6000806040838503121561232d57600080fd5b823561233881612305565b946020939093013593505050565b60008060006060848603121561235b57600080fd5b833561236681612305565b9250602084013561237681612305565b929592945050506040919091013590565b60008083601f84011261239957600080fd5b5081356001600160401b038111156123b057600080fd5b6020830191508360208285010111156123c857600080fd5b9250929050565b6000806000604084860312156123e457600080fd5b83356123ef81612305565b925060208401356001600160401b0381111561240a57600080fd5b61241686828701612387565b9497909650939450505050565b60006020828403121561243557600080fd5b81356110e781612305565b6000806020838503121561245357600080fd5b82356001600160401b038082111561246a57600080fd5b818501915085601f83011261247e57600080fd5b81358181111561248d57600080fd5b8660208260051b85010111156124a257600080fd5b60209290920196919550909350505050565b80516001600160a01b031682526020808201516001600160401b03169083015260408082015115159083015260609081015162ffffff16910152565b6020808252825182820181905260009190848201906040850190845b818110156114a65761251f8385516124b4565b928401926080929092019160010161250c565b634e487b7160e01b600052602160045260246000fd5b602081016004831061256a57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806020838503121561258357600080fd5b82356001600160401b0381111561259957600080fd5b6125a585828601612387565b90969095509350505050565b6000806000604084860312156125c657600080fd5b8335925060208401356001600160401b0381111561240a57600080fd5b600080604083850312156125f657600080fd5b823561260181612305565b9150602083013561261181612305565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156114a657835183529284019291840191600101612638565b60008060006060848603121561266957600080fd5b833561267481612305565b95602085013595506040909401359392505050565b6000806040838503121561269c57600080fd5b82356126a781612305565b91506020830135801515811461261157600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156126fa576126fa6126bc565b604052919050565b60006001600160401b0382111561271b5761271b6126bc565b50601f01601f191660200190565b6000806000806080858703121561273f57600080fd5b843561274a81612305565b9350602085013561275a81612305565b92506040850135915060608501356001600160401b0381111561277c57600080fd5b8501601f8101871361278d57600080fd5b80356127a061279b82612702565b6126d2565b8181528860208385010111156127b557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b6080810161079e82846124b4565b6000602082840312156127f757600080fd5b8135600481106110e757600080fd5b600181811c9082168061281a57607f821691505b60208210810361283a57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526018908201527f4546503a206d696e74696e672069732064697361626c65640000000000000000604082015260600190565b60208082526023908201527f4546503a206d696e74696e67206973207265737472696374656420746f206f776040820152623732b960e91b606082015260800190565b60208082526029908201527f4546503a206261746368206d696e74696e672069732072657374726963746564604082015268103a379037bbb732b960b91b606082015260800190565b602080825260129082015271696e73756666696369656e742066756e647360701b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561295757600080fd5b81516110e781612305565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006110e4602083018486612962565b6000602082840312156129b157600080fd5b5051919050565b6000602082840312156129ca57600080fd5b81516001600160401b038111156129e057600080fd5b8201601f810184136129f157600080fd5b80516129ff61279b82612702565b818152856020838501011115612a1457600080fd5b612a25826020830160208601612289565b95945050505050565b601f821115610dec576000816000526020600020601f850160051c81016020861015612a575750805b601f850160051c820191505b81811015610cc357828155600101612a63565b6001600160401b03831115612a8d57612a8d6126bc565b612aa183612a9b8354612806565b83612a2e565b6000601f841160018114612ad55760008515612abd5750838201355b600019600387901b1c1916600186901b178355610db8565b600083815260209020601f19861690835b82811015612b065786850135825560209485019460019092019101612ae6565b5086821015612b235760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612b68908301846122ad565b9695505050505050565b600060208284031215612b8457600080fd5b81516110e78161225656fea2646970667358221220911086c20f6b954f6f424fd71f72f14769050e542738e5b4b1caef54d1da373464736f6c63430008170033