[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "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": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newEndTime", "type": "uint256" } ], "name": "AuctionEndTimeExtended", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "winner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "AuctionEnded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "startPrice", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endTime", "type": "uint256" } ], "name": "AuctionStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "bidder", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "BidPlaced", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "bidder", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "HighestBidIncreased", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "message", "type": "string" } ], "name": "LogMessage", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "action", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "time", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "NFTsActivity", "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": "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": "triggerNodejsServer", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "NFTsDetails", "outputs": [ { "internalType": "uint256", "name": "createAt", "type": "uint256" }, { "internalType": "uint256", "name": "creatorFees", "type": "uint256" }, { "internalType": "bool", "name": "isListed", "type": "bool" }, { "internalType": "bool", "name": "isAuction", "type": "bool" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "category", "type": "string" }, { "internalType": "string", "name": "fileType", "type": "string" }, { "internalType": "uint256", "name": "no_of_fav", "type": "uint256" } ], "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": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bool", "name": "IsApproved", "type": "bool" } ], "name": "approveNFT", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "auctions", "outputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "uint256", "name": "startPrice", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "address", "name": "highestBidder", "type": "address" }, { "internalType": "uint256", "name": "highestBid", "type": "uint256" }, { "internalType": "bool", "name": "ended", "type": "bool" } ], "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": "buyNFT", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "claimAuctionNFT", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string[]", "name": "categories", "type": "string[]" } ], "name": "countNFTsByCategory", "outputs": [ { "internalType": "uint256[]", "name": "counts", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "filterIsAuction", "type": "bool" }, { "internalType": "bool", "name": "filterIsListed", "type": "bool" } ], "name": "countNFTsByFilter", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "MarketOwner", "type": "address" }, { "internalType": "address payable", "name": "Seller", "type": "address" }, { "internalType": "address payable", "name": "Creator", "type": "address" }, { "internalType": "uint256", "name": "fee", "type": "uint256" } ], "name": "distributePaymentsAndApplyFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "newEndTime", "type": "uint256" } ], "name": "extendAuctionEndTime", "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": "getBidsForNFT", "outputs": [ { "components": [ { "internalType": "address", "name": "bidder", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "username", "type": "string" } ], "internalType": "struct MarketPlace.Bid[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getNFTAndAuctionDetails", "outputs": [ { "components": [ { "internalType": "uint256", "name": "createAt", "type": "uint256" }, { "internalType": "uint256", "name": "creatorFees", "type": "uint256" }, { "internalType": "bool", "name": "IsListed", "type": "bool" }, { "internalType": "bool", "name": "isAuction", "type": "bool" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "uint256", "name": "startPrice", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "address", "name": "highestBidder", "type": "address" }, { "internalType": "uint256", "name": "highestBid", "type": "uint256" }, { "internalType": "bool", "name": "ended", "type": "bool" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "components": [ { "internalType": "address", "name": "bidder", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "username", "type": "string" } ], "internalType": "struct MarketPlace.Bid[]", "name": "nftBids", "type": "tuple[]" } ], "internalType": "struct MarketPlace.AuctionNFTObjectReturn", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getNFTById", "outputs": [ { "components": [ { "internalType": "bool", "name": "isAuction", "type": "bool" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "creator", "type": "address" } ], "internalType": "struct MarketPlace.NFTDataObjectReturn", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bool", "name": "includeBuyNow", "type": "bool" }, { "internalType": "bool", "name": "includeAuction", "type": "bool" }, { "internalType": "bool", "name": "sortByEndingSoon", "type": "bool" }, { "internalType": "bool", "name": "sortByPriceLowToHigh", "type": "bool" }, { "internalType": "bool", "name": "sortByPriceHighToLow", "type": "bool" }, { "internalType": "bool", "name": "sortByMostFavorited", "type": "bool" }, { "internalType": "uint256", "name": "minPrice", "type": "uint256" }, { "internalType": "uint256", "name": "maxPrice", "type": "uint256" }, { "internalType": "uint256", "name": "startIndex", "type": "uint256" }, { "internalType": "uint256", "name": "pageSize", "type": "uint256" }, { "internalType": "string", "name": "category", "type": "string" } ], "internalType": "struct MarketPlace.NFTFilter", "name": "filter", "type": "tuple" } ], "name": "getNFTsByFilter", "outputs": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "creatorFees", "type": "uint256" }, { "internalType": "bool", "name": "isListed", "type": "bool" }, { "internalType": "bool", "name": "isAuction", "type": "bool" }, { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "uint256", "name": "startPrice", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "address", "name": "highestBidder", "type": "address" }, { "internalType": "uint256", "name": "highestBid", "type": "uint256" }, { "internalType": "bool", "name": "ended", "type": "bool" }, { "internalType": "uint256", "name": "createAt", "type": "uint256" }, { "internalType": "string", "name": "fileType", "type": "string" }, { "internalType": "uint256", "name": "no_of_fav", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "bidder", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "username", "type": "string" } ], "internalType": "struct MarketPlace.Bid[]", "name": "nftBids", "type": "tuple[]" } ], "internalType": "struct MarketPlace.NFTObject[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "getNFTsOfAddress", "outputs": [ { "components": [ { "internalType": "uint256[]", "name": "created", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "owned", "type": "uint256[]" } ], "internalType": "struct ERC721._AddressNFTsObject", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getPriceOfNFT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "getUserCreatedAuctionNFTs", "outputs": [ { "components": [ { "internalType": "uint256", "name": "createAt", "type": "uint256" }, { "internalType": "uint256", "name": "creatorFees", "type": "uint256" }, { "internalType": "bool", "name": "IsListed", "type": "bool" }, { "internalType": "bool", "name": "isAuction", "type": "bool" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "uint256", "name": "startPrice", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "address", "name": "highestBidder", "type": "address" }, { "internalType": "uint256", "name": "highestBid", "type": "uint256" }, { "internalType": "bool", "name": "ended", "type": "bool" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "components": [ { "internalType": "address", "name": "bidder", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "username", "type": "string" } ], "internalType": "struct MarketPlace.Bid[]", "name": "nftBids", "type": "tuple[]" } ], "internalType": "struct MarketPlace.AuctionNFTObjectReturn[]", "name": "", "type": "tuple[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "getUserCreatedNFTs", "outputs": [ { "components": [ { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "createAt", "type": "uint256" }, { "internalType": "string", "name": "fileType", "type": "string" }, { "internalType": "uint256", "name": "no_of_fav", "type": "uint256" } ], "internalType": "struct MarketPlace.NFTObjectReturn[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "getUserOwnedAuctionNFTs", "outputs": [ { "components": [ { "internalType": "uint256", "name": "createAt", "type": "uint256" }, { "internalType": "uint256", "name": "creatorFees", "type": "uint256" }, { "internalType": "bool", "name": "IsListed", "type": "bool" }, { "internalType": "bool", "name": "isAuction", "type": "bool" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "uint256", "name": "startPrice", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "address", "name": "highestBidder", "type": "address" }, { "internalType": "uint256", "name": "highestBid", "type": "uint256" }, { "internalType": "bool", "name": "ended", "type": "bool" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "components": [ { "internalType": "address", "name": "bidder", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "username", "type": "string" } ], "internalType": "struct MarketPlace.Bid[]", "name": "nftBids", "type": "tuple[]" } ], "internalType": "struct MarketPlace.AuctionNFTObjectReturn[]", "name": "", "type": "tuple[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "getUserOwnedNFTs", "outputs": [ { "components": [ { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "creator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "createAt", "type": "uint256" }, { "internalType": "string", "name": "fileType", "type": "string" }, { "internalType": "uint256", "name": "no_of_fav", "type": "uint256" } ], "internalType": "struct MarketPlace.NFTObjectReturn[]", "name": "", "type": "tuple[]" } ], "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": "string", "name": "TokenURI", "type": "string" }, { "internalType": "uint256", "name": "CreatorFee", "type": "uint256" }, { "internalType": "uint256", "name": "priceOfNFT", "type": "uint256" }, { "internalType": "bool", "name": "ApproveNFT", "type": "bool" }, { "internalType": "bool", "name": "startAuction", "type": "bool" }, { "internalType": "uint256", "name": "startPrice", "type": "uint256" }, { "internalType": "uint256", "name": "endTime", "type": "uint256" }, { "internalType": "string", "name": "category", "type": "string" }, { "internalType": "string", "name": "fileType", "type": "string" } ], "name": "mintNFT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "nftBids", "outputs": [ { "internalType": "address", "name": "bidder", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "username", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "image", "type": "string" }, { "internalType": "string", "name": "username", "type": "string" } ], "name": "placeBid", "outputs": [], "stateMutability": "payable", "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": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_price", "type": "uint256" } ], "name": "setNFTPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_uri", "type": "string" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "setNFTUri", "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": "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" } ]
60806040526000600a556002600b553480156200001b57600080fd5b50336040518060400160405280601781526020017f4d61726b6574506c6163652062792043697363727970740000000000000000008152506040518060400160405280600881526020016710da5cd8dc9e5c1d60c21b8152508160009081620000859190620001d1565b506001620000948282620001d1565b5050506001600160a01b038116620000c657604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000d181620000d8565b506200029d565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200015557607f821691505b6020821081036200017657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001cc576000816000526020600020601f850160051c81016020861015620001a75750805b601f850160051c820191505b81811015620001c857828155600101620001b3565b5050505b505050565b81516001600160401b03811115620001ed57620001ed6200012a565b6200020581620001fe845462000140565b846200017c565b602080601f8311600181146200023d5760008415620002245750858301515b600019600386901b1c1916600185901b178555620001c8565b600085815260208120601f198616915b828110156200026e578886015182559484019460019091019084016200024d565b50858210156200028d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b615aee80620002ad6000396000f3fe6080604052600436106102465760003560e01c8063715018a611610139578063b784f8e1116100b6578063c87b56dd1161007a578063c87b56dd146107bd578063ddde2e75146107dd578063e74065581461080a578063e985e9c51461082a578063ee474f341461084a578063f2fde38b1461086a57600080fd5b8063b784f8e11461070c578063b86a2f7f1461072c578063b88d4fde1461073f578063ba5a95751461075f578063bae86ca11461079057600080fd5b806395d89b41116100fd57806395d89b41146106505780639891aa9d14610665578063a168b80514610692578063a22cb465146106bf578063b35487a5146106df57600080fd5b8063715018a6146105a757806371ad97eb146105bc5780638aa1979f146105dc5780638da5cb5b146106125780639045cd631461063057600080fd5b806325bf0264116101c757806352f2694e1161018b57806352f2694e1461047c578063571a26a01461049c5780636352211e1461054757806367a864911461056757806370a082311461058757600080fd5b806325bf0264146103e95780632b58fb3c1461040957806342842e0e1461041c578063516ae5b01461043c57806351ed82881461046957600080fd5b8063095ea7b31161020e578063095ea7b31461032b57806318160ddd1461034d5780631bb144421461036c57806323b872dd14610399578063245ae880146103b957600080fd5b8063016fc10e1461024b57806301ffc9a7146102815780630335b5af146102b157806306fdde03146102d1578063081812fc146102f3575b600080fd5b34801561025757600080fd5b5061026b610266366004614998565b61088a565b6040516102789190614a05565b60405180910390f35b34801561028d57600080fd5b506102a161029c366004614af2565b610abc565b6040519015158152602001610278565b3480156102bd57600080fd5b5061026b6102cc366004614998565b610ae7565b3480156102dd57600080fd5b506102e6610ce3565b6040516102789190614b0f565b3480156102ff57600080fd5b5061031361030e366004614b22565b610d75565b6040516001600160a01b039091168152602001610278565b34801561033757600080fd5b5061034b610346366004614b3b565b610d9e565b005b34801561035957600080fd5b50600a545b604051908152602001610278565b34801561037857600080fd5b5061038c610387366004614998565b610dad565b6040516102789190614d35565b3480156103a557600080fd5b5061034b6103b4366004614d99565b61115c565b3480156103c557600080fd5b5061035e6103d4366004614b22565b6000908152600c602052604090206003015490565b3480156103f557600080fd5b5061034b610404366004614e22565b6111eb565b61034b610417366004614e6d565b6112b9565b34801561042857600080fd5b5061034b610437366004614d99565b6115a2565b34801561044857600080fd5b5061045c610457366004614fcc565b6115c2565b60405161027891906150ca565b61034b610477366004614b22565b6116be565b34801561048857600080fd5b5061035e6104973660046150f2565b6117ef565b3480156104a857600080fd5b506105036104b7366004614b22565b600d60205260009081526040902080546001820154600283015460038401546004850154600586015460069096015494956001600160a01b039485169593949293929091169160ff1687565b604080519788526001600160a01b0396871660208901528701949094526060860192909252909216608084015260a0830191909152151560c082015260e001610278565b34801561055357600080fd5b50610313610562366004614b22565b611a0e565b34801561057357600080fd5b5061034b610582366004615125565b611a19565b34801561059357600080fd5b5061035e6105a2366004614998565b611a5b565b3480156105b357600080fd5b5061034b611aa3565b3480156105c857600080fd5b5061035e6105d7366004615148565b611ab7565b3480156105e857600080fd5b506105fc6105f7366004614b22565b611d57565b6040516102789a99989796959493929190615239565b34801561061e57600080fd5b506009546001600160a01b0316610313565b34801561063c57600080fd5b5061034b61064b3660046152b8565b611eca565b34801561065c57600080fd5b506102e6611f1e565b34801561067157600080fd5b506106856106803660046152da565b611f2d565b60405161027891906153dd565b34801561069e57600080fd5b506106b26106ad366004614b22565b61275b565b6040516102789190615541565b3480156106cb57600080fd5b5061034b6106da3660046155a3565b6127e5565b3480156106eb57600080fd5b506106ff6106fa366004614b22565b6127f0565b60405161027891906155c1565b34801561071857600080fd5b5061038c610727366004614998565b612cc1565b61035e61073a3660046155d4565b61306d565b34801561074b57600080fd5b5061034b61075a366004615625565b61317b565b34801561076b57600080fd5b5061077f61077a3660046152b8565b613192565b6040516102789594939291906156a4565b34801561079c57600080fd5b506107b06107ab366004614998565b6132fc565b60405161027891906156ef565b3480156107c957600080fd5b506102e66107d8366004614b22565b6133db565b3480156107e957600080fd5b506107fd6107f8366004614b22565b6134ec565b6040516102789190615731565b34801561081657600080fd5b5061034b6108253660046152b8565b6136ad565b34801561083657600080fd5b506102a1610845366004615744565b6136f3565b34801561085657600080fd5b5061034b610865366004614b22565b613721565b34801561087657600080fd5b5061034b610885366004614998565b6137eb565b60606000610897836132fc565b51519050600080826001600160401b038111156108b6576108b6614ee6565b6040519080825280602002602001820160405280156108ef57816020015b6108dc61478d565b8152602001906001900390816108d45790505b50905060005b83811015610ab1576000610908876132fc565b5180518390811061091b5761091b61577d565b60200260200101519050600c600082815260200190815260200160002060020160019054906101000a900460ff16610aa857604051806101000160405280610972836000908152600c602052604090206003015490565b8152602001610980836133db565b815260208082018490526000848152600c808352604080832060048101546001600160a01b0390811692870192909252600581015490911660608601528054608086015291869052909152600701805460a0909201916109df90615793565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0b90615793565b8015610a585780601f10610a2d57610100808354040283529160200191610a58565b820191906000526020600020905b815481529060010190602001808311610a3b57829003601f168201915b50505050508152602001600c600084815260200190815260200160002060080154815250838581518110610a8e57610a8e61577d565b60200260200101819052508380610aa4906157dd565b9450505b506001016108f5565b509081529392505050565b60006001600160e01b03198216632483248360e11b1480610ae15750610ae182613826565b92915050565b60606000610af4836132fc565b602001515190506000816001600160401b03811115610b1557610b15614ee6565b604051908082528060200260200182016040528015610b4e57816020015b610b3b61478d565b815260200190600190039081610b335790505b50905060005b82811015610cdb576000610b67866132fc565b602001518281518110610b7c57610b7c61577d565b60200260200101519050604051806101000160405280610bab836000908152600c602052604090206003015490565b8152602001610bb9836133db565b815260208082018490526000848152600c808352604080832060048101546001600160a01b0390811692870192909252600581015490911660608601528054608086015291869052909152600701805460a090920191610c1890615793565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4490615793565b8015610c915780601f10610c6657610100808354040283529160200191610c91565b820191906000526020600020905b815481529060010190602001808311610c7457829003601f168201915b50505050508152602001600c600084815260200190815260200160002060080154815250838381518110610cc757610cc761577d565b602090810291909101015250600101610b54565b509392505050565b606060008054610cf290615793565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1e90615793565b8015610d6b5780601f10610d4057610100808354040283529160200191610d6b565b820191906000526020600020905b815481529060010190602001808311610d4e57829003601f168201915b5050505050905090565b6000610d8082613876565b506000828152600660205260409020546001600160a01b0316610ae1565b610da98282336138af565b5050565b60606000610dba836132fc565b60200151519050600080826001600160401b03811115610ddc57610ddc614ee6565b604051908082528060200260200182016040528015610e1557816020015b610e026147e4565b815260200190600190039081610dfa5790505b50905060005b83811015610ab1576000610e2e876132fc565b51805183908110610e4157610e4161577d565b60200260200101519050600c600082815260200190815260200160002060020160019054906101000a900460ff161561115357610e7d816138bc565b60408051610200810182526000838152600c6020818152848320805485526001808201548387015260028083015460ff8082161515898b0152610100918290048116151560608a0152608089018b90528a8852600d8652988720928301546001600160a01b0390811660a08a01529183015460c089015260038084015460e08a015260048401549092169088015260058201546101208801526006909101549096161515610140860152928690525291909101546101608201526101808101610f45836133db565b81526000838152600c6020908152604080832060048101546001600160a01b03908116848701526005909101541681850152858352600e825280832080548251818502810185019093528083526060909501949193909284015b828210156111205760008481526020908190206040805160a0810182526005860290920180546001600160a01b03168352600181015493830193909352600283015490820152600382018054919291606084019190610ffd90615793565b80601f016020809104026020016040519081016040528092919081815260200182805461102990615793565b80156110765780601f1061104b57610100808354040283529160200191611076565b820191906000526020600020905b81548152906001019060200180831161105957829003601f168201915b5050505050815260200160048201805461108f90615793565b80601f01602080910402602001604051908101604052809291908181526020018280546110bb90615793565b80156111085780601f106110dd57610100808354040283529160200191611108565b820191906000526020600020905b8154815290600101906020018083116110eb57829003601f168201915b50505050508152505081526020019060010190610f9f565b505050508152508385815181106111395761113961577d565b6020026020010181905250838061114f906157dd565b9450505b50600101610e1b565b6001600160a01b03821661118b57604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000611197838361395f565b9050836001600160a01b0316816001600160a01b0316146111e5576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401611182565b50505050565b806111f581611a0e565b6001600160a01b03163303611260576112448285858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613aaa92505050565b604051600080516020615a9983398151915290600090a16111e5565b60405162461bcd60e51b815260206004820152602860248201527f796f7520617265206e6f74206f776e6572206f66207468697320746f6b656e20604482015267199bdc8819591a5d60c21b6064820152608401611182565b6000858152600d60205260409020600681015460ff16156113105760405162461bcd60e51b8152602060048201526011602482015270105d58dd1a5bdb881a185cc8195b991959607a1b6044820152606401611182565b8060050154341161137e5760405162461bcd60e51b815260206004820152603260248201527f42696420616d6f756e74206d75737420626520686967686572207468616e20636044820152711d5c9c995b9d081a1a59da195cdd08189a5960721b6064820152608401611182565b60048101546001600160a01b0316156113d357600481015460058201546040516001600160a01b039092169181156108fc0291906000818181858888f193505050501580156113d1573d6000803e3d6000fd5b505b6004810180546001600160a01b0319163317905534600582015560006113f887611a0e565b9050600e60008881526020019081526020016000206040518060a00160405280336001600160a01b0316815260200134815260200142815260200188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f8901819004810282018101909252878152918101919088908890819084018382808284376000920182905250939094525050835460018082018655948252602091829020845160059092020180546001600160a01b0319166001600160a01b03909216919091178155908301519381019390935550604081015160028301556060810151909190600382019061150a9082615846565b506080820151600482019061151f9082615846565b505060405134815233915088907f0e54eff26401bf69b81b26f60bd85ef47f5d85275c1d268d84f68d6897431c479060200160405180910390a386604d7f50fa633176245d976ce90490a01dab04798a36643e91f63a003eeb433ba22376338442346040516115919493929190615905565b60405180910390a350505050505050565b6115bd8383836040518060200160405280600081525061317b565b505050565b606081516001600160401b038111156115dd576115dd614ee6565b604051908082528060200260200182016040528015611606578160200160208202803683370190505b50905060005b82518110156116b85760008382815181106116295761162961577d565b602002602001015190506000805b600a5481101561168f578280519060200120600c600083815260200190815260200160002060060160405161166c919061592e565b6040518091039020036116875781611683816157dd565b9250505b600101611637565b50808484815181106116a3576116a361577d565b6020908102919091010152505060010161160c565b50919050565b6000818152600c60205260409020600301543490036117af5760006116e282611a0e565b6000838152600c6020526040812060048101546001909101549293506001600160a01b0316919061171b6009546001600160a01b031690565b9050600061172b8286868661306d565b6000878152600c602052604090206005810180546001600160a01b0319163390811790915560039091018290559091506117679086908861115c565b85604c7f50fa633176245d976ce90490a01dab04798a36643e91f63a003eeb433ba223768733428660405161179f9493929190615905565b60405180910390a3505050505050565b60405162461bcd60e51b815260206004820152601260248201527114185e5b595b9d081dd85cc814995d995c9d60721b6044820152606401611182565b50565b6000806117fb600a5490565b90506000805b82811015611a05576000818152600c6020908152604080832081516101408101835281548152600182015493810193909352600281015460ff8082161515938501939093526101009004909116151560608301526003810154608083015260048101546001600160a01b0390811660a084015260058201541660c0830152600681018054859493929160e084019161189890615793565b80601f01602080910402602001604051908101604052809291908181526020018280546118c490615793565b80156119115780601f106118e657610100808354040283529160200191611911565b820191906000526020600020905b8154815290600101906020018083116118f457829003601f168201915b5050505050815260200160078201805461192a90615793565b80601f016020809104026020016040519081016040528092919081815260200182805461195690615793565b80156119a35780601f10611978576101008083540402835291602001916119a3565b820191906000526020600020905b81548152906001019060200180831161198657829003601f168201915b5050505050815260200160088201548152505090508680156119c6575080604001515b80156119d457508060600151155b806119e857508780156119e8575080606001515b156119fb57836119f7816157dd565b9450505b5050600101611801565b50949350505050565b6000610ae182613876565b6000828152600c60205260409020600201805460ff1916821515179055611a408183613afa565b604051600080516020615a9983398151915290600090a15050565b60006001600160a01b038216611a87576040516322718ad960e21b815260006004820152602401611182565b506001600160a01b031660009081526005602052604090205490565b611aab613b8d565b611ab56000613bba565b565b6000611ac533600a54613c0c565b611b07600a548e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613aaa92505050565b604080516101408101825242815260208082018e90528b1515828401528a15156060830152608082018d90523360a0830152600060c08301528251601f88018290048202810182019093528683528c9260e08301918990899081908401838280828437600092019190915250505090825250604080516020601f88018190048102820181019092528681529181019190879087908190840183828082843760009201829052509385525050506020918201819052600a548152600c825260409081902083518155918301516001830155820151600282018054606085015115156101000261ff00199315159390931661ffff19909116179190911790556080820151600382015560a08201516004820180546001600160a01b039283166001600160a01b03199182161790915560c084015160058401805491909316911617905560e08201516006820190611c5c9082615846565b506101008201516007820190611c729082615846565b5061012082015181600801559050508815611cb057611c946001600a54613afa565b604051600080516020615a9983398151915290600090a1611cbc565b611cbc600a548b611a19565b600a5460627f50fa633176245d976ce90490a01dab04798a36643e91f63a003eeb433ba223763360004286604051611cf79493929190615905565b60405180910390a36001600a6000828254611d1291906159a4565b90915550508815611d3657611d366001600a54611d2f91906159b7565b8989613c26565b6001600a54611d4591906159b7565b9e9d5050505050505050505050505050565b600c6020526000908152604090208054600182015460028301546003840154600485015460058601546006870180549697959660ff8087169761010090970416956001600160a01b0394851694909316929190611db390615793565b80601f0160208091040260200160405190810160405280929190818152602001828054611ddf90615793565b8015611e2c5780601f10611e0157610100808354040283529160200191611e2c565b820191906000526020600020905b815481529060010190602001808311611e0f57829003601f168201915b505050505090806007018054611e4190615793565b80601f0160208091040260200160405190810160405280929190818152602001828054611e6d90615793565b8015611eba5780601f10611e8f57610100808354040283529160200191611eba565b820191906000526020600020905b815481529060010190602001808311611e9d57829003601f168201915b505050505090806008015490508a565b6000828152600d6020526040908190206003018290555182907fe8c9185c1ca125c62fcaa2c4d0965585e69162cb543e089240e245f7e0fe243a90611f129084815260200190565b60405180910390a25050565b606060018054610cf290615793565b60606000611f3a600a5490565b90506000816001600160401b03811115611f5657611f56614ee6565b604051908082528060200260200182016040528015611f8f57816020015b611f7c61488b565b815260200190600190039081611f745790505b5090506000805b838110156125bf576000818152600c6020908152604080832081516101408101835281548152600182015493810193909352600281015460ff8082161515938501939093526101009004909116151560608301526003810154608083015260048101546001600160a01b0390811660a084015260058201541660c0830152600681018054859493929160e084019161202d90615793565b80601f016020809104026020016040519081016040528092919081815260200182805461205990615793565b80156120a65780601f1061207b576101008083540402835291602001916120a6565b820191906000526020600020905b81548152906001019060200180831161208957829003601f168201915b505050505081526020016007820180546120bf90615793565b80601f01602080910402602001604051908101604052809291908181526020018280546120eb90615793565b80156121385780601f1061210d57610100808354040283529160200191612138565b820191906000526020600020905b81548152906001019060200180831161211b57829003601f168201915b5050505050815260200160088201548152505090507f952e9c57cf0576279e960a6af65e3ec5afda8103f983d1b73af8d4cfa7ab1ace88610140015180519060200120146121b15761014088015151156121b157876101400151805190602001208160e0015180519060200120146121b15750506125b7565b8760c00151816080015110806121ce57508760e001518160800151115b156121da5750506125b7565b875180156121e9575080604001515b80156121f757508060600151155b8061222157508760200151801561220f575080606001515b8015612221575061221f82613dff565b155b156125b45761222e61488b565b82815260808201516020820152612244836133db565b604082015260a08201516001600160a01b0316606082015261226583611a0e565b6001600160a01b03166080820152602082015160a08201526040820151151560c0820152606082018051151560e083015282516101c08301526101008301516101e08301526101208301516102008301525115612555576000838152600d6020908152604091829020825160e0810184528154815260018201546001600160a01b03908116938201939093526002820154938101939093526003810154606084015260048101549091166080830152600581015460a08301526006015460ff1615801560c0830181905261233d575042816060015111155b1561234a57600160c08201525b6020808201516001600160a01b039081166101008501526040808401516101208601526060840151610140860152608084015190911661016085015260a083015161018085015260c083015115156101a08501526000868152600e8352818120805483518186028101860190945280845292939092919084015b828210156125455760008481526020908190206040805160a0810182526005860290920180546001600160a01b0316835260018101549383019390935260028301549082015260038201805491929160608401919061242290615793565b80601f016020809104026020016040519081016040528092919081815260200182805461244e90615793565b801561249b5780601f106124705761010080835404028352916020019161249b565b820191906000526020600020905b81548152906001019060200180831161247e57829003601f168201915b505050505081526020016004820180546124b490615793565b80601f01602080910402602001604051908101604052809291908181526020018280546124e090615793565b801561252d5780601f106125025761010080835404028352916020019161252d565b820191906000526020600020905b81548152906001019060200180831161251057829003601f168201915b505050505081525050815260200190600101906123c4565b5050505061022083015250612586565b6000610100820181905261012082018190526101408201819052610160820181905261018082018190526101a08201525b808686815181106125995761259961577d565b602002602001018190525084806125af906157dd565b955050505b50505b600101611f96565b506000816001600160401b038111156125da576125da614ee6565b60405190808252806020026020018201604052801561261357816020015b61260061488b565b8152602001906001900390816125f85790505b50905060005b82811015612660578381815181106126335761263361577d565b602002602001015182828151811061264d5761264d61577d565b6020908102919091010152600101612619565b506000828761012001511161267a5786610120015161267c565b825b90506000816001600160401b0381111561269857612698614ee6565b6040519080825280602002602001820160405280156126d157816020015b6126be61488b565b8152602001906001900390816126b65790505b5061010089015190915060005b83811080156126f55750856126f382846159a4565b105b1561274d578461270582846159a4565b815181106127155761271561577d565b602002602001015183828151811061272f5761272f61577d565b60200260200101819052508080612745906157dd565b9150506126de565b509098975050505050505050565b612763614940565b61276b614940565b600061277684611a0e565b90506000612783856133db565b6000958652600c602090815260409687902060038101546004820154895160a081018b52600290930154610100900460ff161515835292820152968701919091526001600160a01b039283166060870152919091166080850152509192915050565b610da9338383613e88565b6127f86147e4565b6000828152600c6020908152604080832081516101408101835281548152600182015493810193909352600281015460ff8082161515938501939093526101009004909116151560608301526003810154608083015260048101546001600160a01b0390811660a084015260058201541660c083015260068101805460e08401919061288390615793565b80601f01602080910402602001604051908101604052809291908181526020018280546128af90615793565b80156128fc5780601f106128d1576101008083540402835291602001916128fc565b820191906000526020600020905b8154815290600101906020018083116128df57829003601f168201915b5050505050815260200160078201805461291590615793565b80601f016020809104026020016040519081016040528092919081815260200182805461294190615793565b801561298e5780601f106129635761010080835404028352916020019161298e565b820191906000526020600020905b81548152906001019060200180831161297157829003601f168201915b5050509183525050600891909101546020918201526000858152600d8252604090819020815160e0810183528154815260018201546001600160a01b03908116948201949094526002820154928101929092526003810154606083015260048101549092166080820152600582015460a082015260069091015460ff1615801560c083018190529293509091612a28575042816060015111155b15612a3557600160c08201525b6000604051806102000160405280846000015181526020018460200151815260200184604001511515815260200184606001511515815260200186815260200183602001516001600160a01b03168152602001836040015181526020018360600151815260200183608001516001600160a01b031681526020018360a0015181526020018360c001511515815260200184608001518152602001612ad8876133db565b81526020018460a001516001600160a01b03168152602001612af987611a0e565b6001600160a01b031681526000878152600e602090815260408083208054825181850281018501909352808352948301949193909284015b82821015612cb25760008481526020908190206040805160a0810182526005860290920180546001600160a01b03168352600181015493830193909352600283015490820152600382018054919291606084019190612b8f90615793565b80601f0160208091040260200160405190810160405280929190818152602001828054612bbb90615793565b8015612c085780601f10612bdd57610100808354040283529160200191612c08565b820191906000526020600020905b815481529060010190602001808311612beb57829003601f168201915b50505050508152602001600482018054612c2190615793565b80601f0160208091040260200160405190810160405280929190818152602001828054612c4d90615793565b8015612c9a5780601f10612c6f57610100808354040283529160200191612c9a565b820191906000526020600020905b815481529060010190602001808311612c7d57829003601f168201915b50505050508152505081526020019060010190612b31565b50505091525095945050505050565b60606000612cce836132fc565b51519050600080826001600160401b03811115612ced57612ced614ee6565b604051908082528060200260200182016040528015612d2657816020015b612d136147e4565b815260200190600190039081612d0b5790505b50905060005b83811015610ab1576000612d3f876132fc565b51805183908110612d5257612d5261577d565b60200260200101519050600c600082815260200190815260200160002060020160019054906101000a900460ff161561306457612d8e816138bc565b60408051610200810182526000838152600c6020818152848320805485526001808201548387015260028083015460ff8082161515898b0152610100918290048116151560608a0152608089018b90528a8852600d8652988720928301546001600160a01b0390811660a08a01529183015460c089015260038084015460e08a015260048401549092169088015260058201546101208801526006909101549096161515610140860152928690525291909101546101608201526101808101612e56836133db565b81526000838152600c6020908152604080832060048101546001600160a01b03908116848701526005909101541681850152858352600e825280832080548251818502810185019093528083526060909501949193909284015b828210156130315760008481526020908190206040805160a0810182526005860290920180546001600160a01b03168352600181015493830193909352600283015490820152600382018054919291606084019190612f0e90615793565b80601f0160208091040260200160405190810160405280929190818152602001828054612f3a90615793565b8015612f875780601f10612f5c57610100808354040283529160200191612f87565b820191906000526020600020905b815481529060010190602001808311612f6a57829003601f168201915b50505050508152602001600482018054612fa090615793565b80601f0160208091040260200160405190810160405280929190818152602001828054612fcc90615793565b80156130195780601f10612fee57610100808354040283529160200191613019565b820191906000526020600020905b815481529060010190602001808311612ffc57829003601f168201915b50505050508152505081526020019060010190612eb0565b5050505081525083858151811061304a5761304a61577d565b60200260200101819052508380613060906157dd565b9450505b50600101612d2c565b6000806064600b543461308091906159ca565b61308a91906159e1565b9050600060648461309b84346159b7565b6130a591906159ca565b6130af91906159e1565b90506000826130be83346159b7565b6130c891906159b7565b6040519091506001600160a01b0389169084156108fc029085906000818181858888f19350505050158015613101573d6000803e3d6000fd5b506040516001600160a01b0388169082156108fc029083906000818181858888f19350505050158015613138573d6000803e3d6000fd5b506040516001600160a01b0387169083156108fc029084906000818181858888f1935050505015801561316f573d6000803e3d6000fd5b50979650505050505050565b61318684848461115c565b6111e584848484613f27565b600e60205281600052604060002081815481106131ae57600080fd5b600091825260209091206005909102018054600182015460028301546003840180546001600160a01b03909416965091945092916131eb90615793565b80601f016020809104026020016040519081016040528092919081815260200182805461321790615793565b80156132645780601f1061323957610100808354040283529160200191613264565b820191906000526020600020905b81548152906001019060200180831161324757829003601f168201915b50505050509080600401805461327990615793565b80601f01602080910402602001604051908101604052809291908181526020018280546132a590615793565b80156132f25780601f106132c7576101008083540402835291602001916132f2565b820191906000526020600020905b8154815290600101906020018083116132d557829003601f168201915b5050505050905085565b604080518082018252606080825260208083018290526001600160a01b0385166000908152600382528490208451815492830281018401865294850182815293949390928492849184018282801561337357602002820191906000526020600020905b81548152602001906001019080831161335f575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156133cb57602002820191906000526020600020905b8154815260200190600101908083116133b7575b5050505050815250509050919050565b60606133e682613876565b506000828152600860205260408120805461340090615793565b80601f016020809104026020016040519081016040528092919081815260200182805461342c90615793565b80156134795780601f1061344e57610100808354040283529160200191613479565b820191906000526020600020905b81548152906001019060200180831161345c57829003601f168201915b50505050509050600061349760408051602081019091526000815290565b905080516000036134a9575092915050565b8151156134db5780826040516020016134c3929190615a03565b60405160208183030381529060405292505050919050565b6134e484614050565b949350505050565b6060600e6000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156136a25760008481526020908190206040805160a0810182526005860290920180546001600160a01b0316835260018101549383019390935260028301549082015260038201805491929160608401919061357f90615793565b80601f01602080910402602001604051908101604052809291908181526020018280546135ab90615793565b80156135f85780601f106135cd576101008083540402835291602001916135f8565b820191906000526020600020905b8154815290600101906020018083116135db57829003601f168201915b5050505050815260200160048201805461361190615793565b80601f016020809104026020016040519081016040528092919081815260200182805461363d90615793565b801561368a5780601f1061365f5761010080835404028352916020019161368a565b820191906000526020600020905b81548152906001019060200180831161366d57829003601f168201915b50505050508152505081526020019060010190613521565b505050509050919050565b816136b781611a0e565b6001600160a01b03163303611260576000838152600c602052604080822060030184905551600080516020615a998339815191529190a1505050565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b6000818152600d6020526040902061374f61373b83611a0e565b60048301546001600160a01b03168461115c565b61375882611a0e565b6001600160a01b03166108fc82600501549081150290604051600060405180830381858888f19350505050158015613794573d6000803e3d6000fd5b5060068101805460ff191660011790556005810154604051339184917fd2aa34a4fdbbc6dff6a3e56f46e0f3ae2a31d7785ff3487aa5c95c642acea501916137df9190815260200190565b60405180910390a35050565b6137f3613b8d565b6001600160a01b03811661381d57604051631e4fbdf760e01b815260006004820152602401611182565b6117ec81613bba565b60006001600160e01b031982166380ac58cd60e01b148061385757506001600160e01b03198216635b5e139f60e01b145b80610ae157506301ffc9a760e01b6001600160e01b0319831614610ae1565b6000818152600260205260408120546001600160a01b031680610ae157604051637e27328960e01b815260048101849052602401611182565b6115bd83838360016140c4565b6000818152600d602052604090206003015442108015906138ef57506000818152600d602052604090206006015460ff16155b156117ec576000818152600d602090815260409182902060068101805460ff19166001179055600481015460059091015492519283526001600160a01b03169183917fd2aa34a4fdbbc6dff6a3e56f46e0f3ae2a31d7785ff3487aa5c95c642acea501910160405180910390a350565b60008181526002602090815260408083205460049092528220546001600160a01b039091169060ff166139c95760405162461bcd60e51b8152602060048201526012602482015271139195081dd85cc81b9bdd081b1a5cdd195960721b6044820152606401611182565b6001600160a01b03811615613a12576139e66000846000806140c4565b6001600160a01b03811660009081526005602052604090208054600019019055613a1084846141ca565b505b6001600160a01b03841615613a4c576001600160a01b038416600090815260056020526040902080546001019055613a4a81846141ca565b505b60008381526002602052604080822080546001600160a01b0319166001600160a01b0388811691821790925591518693918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a49392505050565b6000828152600860205260409020613ac28282615846565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b33613b0482611a0e565b6001600160a01b031603613b31576000908152600460205260409020805460ff1916911515919091179055565b60405162461bcd60e51b815260206004820152602b60248201527f796f7520617265206e6f74206f776e6572206f66207468697320746f6b656e2060448201526a666f7220417070726f766560a81b6064820152608401611182565b6009546001600160a01b03163314611ab55760405163118cdaa760e01b8152336004820152602401611182565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610da98282604051806020016040528060008152506143c7565b82613c3081611a0e565b6001600160a01b03163303611260576000848152600d602052604090206006015460ff1615613c995760405162461bcd60e51b8152602060048201526015602482015274105d58dd1a5bdb88185b1c9958591e48195b991959605a1b6044820152606401611182565b6000848152600c602052604090206002015460ff1615613cfb5760405162461bcd60e51b815260206004820152601e60248201527f4e465420697320616c7265616479206c697374656420666f722073616c6500006044820152606401611182565b6040805160e0810182528581523360208083019182528284018781526060840187815260006080860181815260a0870182815260c088018381528d8452600d87528984209851895596516001890180546001600160a01b03199081166001600160a01b039384161790915595516002808b0191909155945160038a015591516004890180549096169216919091179093559151600586015592516006909401805460ff191694151594909417909355600c81529183902001805461010061ff0019909116179055815185815290810184905285917f44c53be110c6aa83aa83cd02e351ed172359268272ee1b5d31c0fe48db35c6c7910160405180910390a26111e5565b6000818152600d60209081526040808320815160e0810183528154815260018201546001600160a01b03908116948201949094526002820154928101929092526003810154606083015260048101549092166080820152600582015460a082015260069091015460ff16151560c0820181905280613e81575042816060015111155b9392505050565b6001600160a01b038216613eba57604051630b61174360e31b81526001600160a01b0383166004820152602401611182565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b156111e557604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290613f69903390889087908790600401615a32565b6020604051808303816000875af1925050508015613fa4575060408051601f3d908101601f19168201909252613fa191810190615a65565b60015b61400d573d808015613fd2576040519150601f19603f3d011682016040523d82523d6000602084013e613fd7565b606091505b50805160000361400557604051633250574960e11b81526001600160a01b0385166004820152602401611182565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461404957604051633250574960e11b81526001600160a01b0385166004820152602401611182565b5050505050565b606061405b82613876565b50600061407360408051602081019091526000815290565b905060008151116140935760405180602001604052806000815250613e81565b8061409d846143de565b6040516020016140ae929190615a03565b6040516020818303038152906040529392505050565b80806140d857506001600160a01b03821615155b1561419a5760006140e884613876565b90506001600160a01b038316158015906141145750826001600160a01b0316816001600160a01b031614155b8015614127575061412581846136f3565b155b156141505760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401611182565b81156141985783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260066020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038216600090815260036020526040812060010154815b8181101561431e576001600160a01b03851660009081526003602052604090206001018054859190839081106142205761422061577d565b9060005260206000200154036143165761423b6001836159b7565b8110156142cb576001600160a01b038516600090815260036020526040902060019081019061426a90846159b7565b8154811061427a5761427a61577d565b906000526020600020015460036000876001600160a01b03166001600160a01b0316815260200190815260200160002060010182815481106142be576142be61577d565b6000918252602090912001555b6001600160a01b03851660009081526003602052604090206001018054806142f5576142f5615a82565b60019003818190600052602060002001600090559055600092505050610ae1565b6001016141e8565b506001600160a01b038416600090815260036020526040812054905b81811015614393576001600160a01b038616600090815260036020526040902080548691908390811061436f5761436f61577d565b90600052602060002001540361438b5760009350505050610ae1565b60010161433a565b5050506001600160a01b03929092166000908152600360209081526040822060019081018054918201815583529120015590565b6143d18383614470565b6115bd6000848484613f27565b606060006143eb836144d5565b60010190506000816001600160401b0381111561440a5761440a614ee6565b6040519080825280601f01601f191660200182016040528015614434576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461443e57509392505050565b6001600160a01b03821661449a57604051633250574960e11b815260006004820152602401611182565b60006144a8838360006145ad565b90506001600160a01b038116156115bd576040516339e3563760e11b815260006004820152602401611182565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106145145772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310614540576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061455e57662386f26fc10000830492506010015b6305f5e1008310614576576305f5e100830492506008015b612710831061458a57612710830492506004015b6064831061459c576064830492506002015b600a8310610ae15760010192915050565b6000828152600260205260408120546001600160a01b03908116908316156145da576145da8184866146c6565b6001600160a01b03811615614618576145f76000856000806140c4565b6001600160a01b038116600090815260056020526040902080546000190190555b6001600160a01b03851615614647576001600160a01b0385166000908152600560205260409020805460010190555b600084815260026020908152604080832080546001600160a01b0319166001600160a01b038a811691821790925580855260038452828520805460018101825590865293852090930188905590518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6146d183838361472a565b6115bd576001600160a01b0383166146ff57604051637e27328960e01b815260048101829052602401611182565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401611182565b60006001600160a01b038316158015906134e45750826001600160a01b0316846001600160a01b03161480614764575061476484846136f3565b806134e45750506000908152600660205260409020546001600160a01b03908116911614919050565b60405180610100016040528060008152602001606081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160608152602001600081525090565b60405180610200016040528060008152602001600081526020016000151581526020016000151581526020016000815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600015158152602001600081526020016060815260200160006001600160a01b0316815260200160006001600160a01b03168152602001606081525090565b60405180610240016040528060008152602001600081526020016060815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160001515815260200160001515815260200160006001600160a01b03168152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600015158152602001600081526020016060815260200160008152602001606081525090565b6040518060a00160405280600015158152602001600081526020016060815260200160006001600160a01b0316815260200160006001600160a01b031681525090565b6001600160a01b03811681146117ec57600080fd5b6000602082840312156149aa57600080fd5b8135613e8181614983565b60005b838110156149d05781810151838201526020016149b8565b50506000910152565b600081518084526149f18160208601602086016149b5565b601f01601f19169290920160200192915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561274d57603f1989840301855281516101008151855288820151818a870152614a5d828701826149d9565b838a0151878b01526060808501516001600160a01b0316908801526080808501519193509150614a97828801826001600160a01b03169052565b505060a0828101519086015260c08083015186830382880152614aba83826149d9565b60e0948501519790940196909652505094870194925090860190600101614a2e565b6001600160e01b0319811681146117ec57600080fd5b600060208284031215614b0457600080fd5b8135613e8181614adc565b602081526000613e8160208301846149d9565b600060208284031215614b3457600080fd5b5035919050565b60008060408385031215614b4e57600080fd5b8235614b5981614983565b946020939093013593505050565b600082825180855260208086019550808260051b84010181860160005b84811015614c0457858303601f19018952815180516001600160a01b0316845284810151858501526040808201519085015260608082015160a08287018190529190614bd2838801826149d9565b9250505060808083015192508582038187015250614bf081836149d9565b9a86019a9450505090830190600101614b84565b5090979650505050505050565b600061020082518452602083015160208501526040830151614c37604086018215159052565b506060830151614c4b606086018215159052565b506080830151608085015260a0830151614c7060a08601826001600160a01b03169052565b5060c083015160c085015260e083015160e085015261010080840151614ca0828701826001600160a01b03169052565b5050610120838101519085015261014080840151151590850152610160808401519085015261018080840151818601839052614cde838701826149d9565b925050506101a080840151614cfd828701826001600160a01b03169052565b50506101c0838101516001600160a01b0316908501526101e08084015185830382870152614d2b8382614b67565b9695505050505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015614d8c57603f19888603018452614d7a858351614c11565b94509285019290850190600101614d5e565b5092979650505050505050565b600080600060608486031215614dae57600080fd5b8335614db981614983565b92506020840135614dc981614983565b929592945050506040919091013590565b60008083601f840112614dec57600080fd5b5081356001600160401b03811115614e0357600080fd5b602083019150836020828501011115614e1b57600080fd5b9250929050565b600080600060408486031215614e3757600080fd5b83356001600160401b03811115614e4d57600080fd5b614e5986828701614dda565b909790965060209590950135949350505050565b600080600080600060608688031215614e8557600080fd5b8535945060208601356001600160401b0380821115614ea357600080fd5b614eaf89838a01614dda565b90965094506040880135915080821115614ec857600080fd5b50614ed588828901614dda565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715614f1f57614f1f614ee6565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614f4d57614f4d614ee6565b604052919050565b60006001600160401b03831115614f6e57614f6e614ee6565b614f81601f8401601f1916602001614f25565b9050828152838383011115614f9557600080fd5b828260208301376000602084830101529392505050565b600082601f830112614fbd57600080fd5b613e8183833560208501614f55565b60006020808385031215614fdf57600080fd5b82356001600160401b0380821115614ff657600080fd5b818501915085601f83011261500a57600080fd5b81358181111561501c5761501c614ee6565b8060051b61502b858201614f25565b918252838101850191858101908984111561504557600080fd5b86860192505b83831015615081578235858111156150635760008081fd5b6150718b89838a0101614fac565b835250918601919086019061504b565b9998505050505050505050565b60008151808452602080850194506020840160005b838110156150bf578151875295820195908201906001016150a3565b509495945050505050565b602081526000613e81602083018461508e565b803580151581146150ed57600080fd5b919050565b6000806040838503121561510557600080fd5b61510e836150dd565b915061511c602084016150dd565b90509250929050565b6000806040838503121561513857600080fd5b8235915061511c602084016150dd565b6000806000806000806000806000806000806101208d8f03121561516b57600080fd5b6001600160401b038d35111561518057600080fd5b61518d8e8e358f01614dda565b909c509a5060208d0135995060408d013598506151ac60608e016150dd565b97506151ba60808e016150dd565b965060a08d0135955060c08d013594506001600160401b0360e08e013511156151e257600080fd5b6151f28e60e08f01358f01614dda565b90945092506001600160401b036101008e0135111561521057600080fd5b6152218e6101008f01358f01614dda565b81935080925050509295989b509295989b509295989b565b8a8152602081018a905288151560408201528715156060820152608081018790526001600160a01b0386811660a0830152851660c082015261014060e0820181905260009061528a838201876149d9565b905082810361010084015261529f81866149d9565b915050826101208301529b9a5050505050505050505050565b600080604083850312156152cb57600080fd5b50508035926020909101359150565b6000602082840312156152ec57600080fd5b81356001600160401b038082111561530357600080fd5b90830190610160828603121561531857600080fd5b615320614efc565b615329836150dd565b8152615337602084016150dd565b6020820152615348604084016150dd565b6040820152615359606084016150dd565b606082015261536a608084016150dd565b608082015261537b60a084016150dd565b60a082015260c083013560c082015260e083013560e082015261010080840135818301525061012080840135818301525061014080840135838111156153c057600080fd5b6153cc88828701614fac565b918301919091525095945050505050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b8381101561274d57603f19898403018552815161024081518552888201518986015287820151818987015261543d828701826149d9565b91505060608083015161545a828801826001600160a01b03169052565b50506080828101516001600160a01b039081169187019190915260a0808401519087015260c08084015115159087015260e0808401511515908701526101008084015182169087015261012080840151908701526101408084015190870152610160808401519091169086015261018080830151908601526101a0808301511515908601526101c080830151908601526101e0808301518683038288015261550283826149d9565b92505050610200808301518187015250610220808301519250858203818701525061552d8183614b67565b968901969450505090860190600101615406565b60208152815115156020820152602082015160408201526000604083015160a0606084015261557360c08401826149d9565b60608501516001600160a01b039081166080868101919091529095015190941660a0909301929092525090919050565b600080604083850312156155b657600080fd5b823561510e81614983565b602081526000613e816020830184614c11565b600080600080608085870312156155ea57600080fd5b84356155f581614983565b9350602085013561560581614983565b9250604085013561561581614983565b9396929550929360600135925050565b6000806000806080858703121561563b57600080fd5b843561564681614983565b9350602085013561565681614983565b92506040850135915060608501356001600160401b0381111561567857600080fd5b8501601f8101871361568957600080fd5b61569887823560208401614f55565b91505092959194509250565b60018060a01b038616815284602082015283604082015260a0606082015260006156d160a08301856149d9565b82810360808401526156e381856149d9565b98975050505050505050565b60208152600082516040602084015261570b606084018261508e565b90506020840151601f19848303016040850152615728828261508e565b95945050505050565b602081526000613e816020830184614b67565b6000806040838503121561575757600080fd5b823561576281614983565b9150602083013561577281614983565b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806157a757607f821691505b6020821081036116b857634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016157ef576157ef6157c7565b5060010190565b601f8211156115bd576000816000526020600020601f850160051c8101602086101561581f5750805b601f850160051c820191505b8181101561583e5782815560010161582b565b505050505050565b81516001600160401b0381111561585f5761585f614ee6565b6158738161586d8454615793565b846157f6565b602080601f8311600181146158a857600084156158905750858301515b600019600386901b1c1916600185901b17855561583e565b600085815260208120601f198616915b828110156158d7578886015182559484019460019091019084016158b8565b50858210156158f55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b600080835461593c81615793565b60018281168015615954576001811461596957615998565b60ff1984168752821515830287019450615998565b8760005260208060002060005b8581101561598f5781548a820152908401908201615976565b50505082870194505b50929695505050505050565b80820180821115610ae157610ae16157c7565b81810381811115610ae157610ae16157c7565b8082028115828204841417610ae157610ae16157c7565b6000826159fe57634e487b7160e01b600052601260045260246000fd5b500490565b60008351615a158184602088016149b5565b835190830190615a298183602088016149b5565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090614d2b908301846149d9565b600060208284031215615a7757600080fd5b8151613e8181614adc565b634e487b7160e01b600052603160045260246000fdfec3a9bead1c471f545b6b078b007b110d18cf062d9ce89dce37a8caa6f11d9faca264697066735822122077eaa2187d55b14fe937352fe94d0ee9a00d732de65a8530f9e47923537a614b64736f6c63430008170033