[ { "inputs": [ { "internalType": "string", "name": "_initUnrevealedURI", "type": "string" }, { "internalType": "address", "name": "_initCommunityAddress", "type": "address" }, { "internalType": "address", "name": "_initDonationAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "wallet", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "ClaimedRewards", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "DisbursedRewards", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenID", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "seller", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "NewListing", "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": "uint256", "name": "tokenID", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "TokenSold", "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": true, "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "WithdrawnListing", "type": "event" }, { "inputs": [ { "internalType": "address[]", "name": "addresses", "type": "address[]" }, { "internalType": "uint8[]", "name": "amounts", "type": "uint8[]" } ], "name": "airDrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_lastToken", "type": "uint256" } ], "name": "airDropVMOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "allowListings", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "claimRewardOfToken", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "claimRewards", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "collectSalesRewardsFromThirdParty", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cost", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "createListing", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "disburseRewards", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "dust", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "emergencyWithdraw", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "flipAllowListingsState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "flipCollectSalesRewardsFromThirdParty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "flipPausedState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "fulfillListing", "outputs": [], "stateMutability": "payable", "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": "getListingByTokenID", "outputs": [ { "components": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "internalType": "struct VMGorillas.Listing", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getListings", "outputs": [ { "components": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" }, { "internalType": "uint256", "name": "price", "type": "uint256" }, { "internalType": "address", "name": "seller", "type": "address" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "internalType": "struct VMGorillas.Listing[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "getRewardsOfAddress", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "getRewardsOfToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "isTokenListed", "outputs": [ { "internalType": "bool", "name": "isListed", "type": "bool" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxMintAmountPerTX", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "mintRewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextVMAirdrop", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "reservedSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_initBaseURI", "type": "string" } ], "name": "reveal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "revealed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "royalties", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "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": "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": [], "name": "salesRewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newBaseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newCost", "type": "uint256" } ], "name": "setCost", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "setDust", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "setMaxMintAmountPerTX", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "setMaxSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "setMintRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "setNextVMAirDrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "setReservedSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "setRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "setSalesRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "setTotalRewardsIndex", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newSuffix", "type": "string" } ], "name": "setURIsuffix", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newUnrevealedURI", "type": "string" } ], "name": "setUnrevealedURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_contract", "type": "address" } ], "name": "setVMAddr", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newCommunityAddress", "type": "address" }, { "internalType": "address", "name": "newDonationAddress", "type": "address" } ], "name": "setWithdrawAddresses", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceID", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalRewardsIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalRewardsVault", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenID", "type": "uint256" } ], "name": "withdrawListing", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040523480156200001157600080fd5b5060405162004cb338038062004cb383398101604081905262000034916200037d565b604080518082018252600b81526a564d20476f72696c6c617360a81b602080830191825283518085019094526003845262564d4760e81b9084015281519192916200008291600091620002a4565b50805162000098906001906020840190620002a4565b50506001600a5550620000ab336200018f565b600b8054630101000160a01b63ffffffff60a01b19909116179055670de0b6b3a7640000600f556122b860105561115c601155600a60135560016012819055609660148190556103e8601655601755633b9aca00601555601855601b80546001600160a01b038085166001600160a01b031992831617909255601c805492841692821692909217909155601d805490911673bbd9786f178e2aebb4b4329c41a821921ca05339179055604080518082019091526005815264173539b7b760d91b60208201526200017b90620001e1565b620001868362000249565b505050620004bd565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600b546001600160a01b03163314620002305760405162461bcd60e51b8152602060048201819052602482015260008051602062004c9383398151915260448201526064015b60405180910390fd5b80516200024590600e906020840190620002a4565b5050565b600b546001600160a01b03163314620002945760405162461bcd60e51b8152602060048201819052602482015260008051602062004c93833981519152604482015260640162000227565b80516200024590600c9060208401905b828054620002b29062000480565b90600052602060002090601f016020900481019282620002d6576000855562000321565b82601f10620002f157805160ff191683800117855562000321565b8280016001018555821562000321579182015b828111156200032157825182559160200191906001019062000304565b506200032f92915062000333565b5090565b5b808211156200032f576000815560010162000334565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200037857600080fd5b919050565b6000806000606084860312156200039357600080fd5b83516001600160401b0380821115620003ab57600080fd5b818601915086601f830112620003c057600080fd5b815181811115620003d557620003d56200034a565b604051601f8201601f19908116603f011681019083821181831017156200040057620004006200034a565b816040528281526020935089848487010111156200041d57600080fd5b600091505b8282101562000441578482018401518183018501529083019062000422565b82821115620004535760008484830101525b96506200046591505086820162000360565b93505050620004776040850162000360565b90509250925092565b600181811c908216806200049557607f821691505b60208210811415620004b757634e487b7160e01b600052602260045260246000fd5b50919050565b6147c680620004cd6000396000f3fe6080604052600436106103fe5760003560e01c80636352211e11610213578063aff7214111610123578063e8365027116100ab578063f1b2d6a31161007a578063f1b2d6a314610c4b578063f2fde38b14610c6d578063f9daade414610c8d578063fad9aba314610cad578063fe2c7fee14610cc357600080fd5b8063e836502714610bb6578063e985e9c514610bcc578063ef0c016f14610c15578063f053dc5c14610c3557600080fd5b8063d3dc1bd1116100f2578063d3dc1bd114610b42578063d5abeb0114610b62578063d6fb650c14610b78578063db2e21bc14610b98578063e02f399314610ba057600080fd5b8063aff7214114610ada578063b5350ebf14610afa578063b88d4fde14610b02578063c87b56dd14610b2257600080fd5b806395d89b41116101a6578063a17bd78311610175578063a17bd78314610a52578063a22cb46514610a67578063a79123a914610a87578063aec6e27314610aa7578063aeccec8c14610ac757600080fd5b806395d89b41146109d25780639b83cddc146109e7578063a0712d6814610a1e578063a0ba1bbf14610a3157600080fd5b806384917f4a116101e257806384917f4a146109525780638da5cb5b1461097f5780638e6fe1a31461099d57806393eff851146109bd57600080fd5b80636352211e146108d25780636f8b44b0146108f257806370a08231146109125780637ef6f6561461093257600080fd5b80633912fc851161030e5780634c261247116102a15780635183022711610270578063518302271461083057806355f804b31461085157806356fcf95b146108715780635c975abb146108915780635f4966f7146108b257600080fd5b80634c261247146107af5780634e9be749146107cf5780634f6ccce7146107ef5780634f8a1db51461080f57600080fd5b806344a0d68a116102dd57806344a0d68a1461073957806344d19d2b146107595780634501b5581461076f5780634bbedc291461078f57600080fd5b80633912fc85146106d15780633ccfd60b146106e457806342842e0e146106f9578063437552c01461071957600080fd5b80631e13f86b116103915780632b80183f116103605780632b80183f1461065d5780632dfa9d001461067d5780632f745c59146106935780632f98ea73146106b3578063372500ab146106c957600080fd5b80631e13f86b146105c8578063234cb051146105e857806323b872dd146105fe5780632a55205a1461061e57600080fd5b8063095ea7b3116103cd578063095ea7b31461055957806313faede614610579578063176b48ee1461059d57806318160ddd146105b357600080fd5b806301ffc9a7146104b357806306fdde03146104e85780630798e5c91461050a578063081812fc1461052157600080fd5b366104ae57600061040e601f5490565b600b54909150600160b81b900460ff161515600114801561042f5750600081115b156104ab5760008160175460145460175461044a9190613e7b565b6104549034613ea9565b61045e9190613ebd565b6104689190613ea9565b905060006104768383613ebd565b9050816018600082825461048a9190613e7b565b9250508190555080601960008282546104a39190613e7b565b909155505050505b50005b600080fd5b3480156104bf57600080fd5b506104d36104ce366004613ef2565b610ce3565b60405190151581526020015b60405180910390f35b3480156104f457600080fd5b506104fd610d0e565b6040516104df9190613f67565b34801561051657600080fd5b5061051f610da0565b005b34801561052d57600080fd5b5061054161053c366004613f7a565b610df4565b6040516001600160a01b0390911681526020016104df565b34801561056557600080fd5b5061051f610574366004613fa8565b610e89565b34801561058557600080fd5b5061058f600f5481565b6040519081526020016104df565b3480156105a957600080fd5b5061058f60185481565b3480156105bf57600080fd5b5060085461058f565b3480156105d457600080fd5b5061051f6105e3366004613f7a565b610f9f565b3480156105f457600080fd5b5061058f60165481565b34801561060a57600080fd5b5061051f610619366004613fd4565b610fce565b34801561062a57600080fd5b5061063e610639366004614015565b610fff565b604080516001600160a01b0390931683526020830191909152016104df565b34801561066957600080fd5b5061051f610678366004613f7a565b611034565b34801561068957600080fd5b5061058f60135481565b34801561069f57600080fd5b5061058f6106ae366004613fa8565b611063565b3480156106bf57600080fd5b5061058f60125481565b61051f6110f9565b61051f6106df366004613f7a565b611287565b3480156106f057600080fd5b5061051f6116fa565b34801561070557600080fd5b5061051f610714366004613fd4565b6119a8565b34801561072557600080fd5b5061051f610734366004613f7a565b6119c3565b34801561074557600080fd5b5061051f610754366004613f7a565b6119f2565b34801561076557600080fd5b5061058f60115481565b34801561077b57600080fd5b5061051f61078a366004614037565b611a21565b34801561079b57600080fd5b5061051f6107aa366004613f7a565b611a6d565b3480156107bb57600080fd5b5061051f6107ca3660046140e0565b611c39565b3480156107db57600080fd5b5061051f6107ea366004613f7a565b611c82565b3480156107fb57600080fd5b5061058f61080a366004613f7a565b611cb1565b34801561081b57600080fd5b50600b546104d390600160b81b900460ff1681565b34801561083c57600080fd5b50600b546104d390600160a81b900460ff1681565b34801561085d57600080fd5b5061051f61086c3660046140e0565b611d44565b34801561087d57600080fd5b5061051f61088c366004613f7a565b611d85565b34801561089d57600080fd5b50600b546104d390600160a01b900460ff1681565b3480156108be57600080fd5b5061058f6108cd366004613f7a565b611db4565b3480156108de57600080fd5b506105416108ed366004613f7a565b611e2a565b3480156108fe57600080fd5b5061051f61090d366004613f7a565b611ea1565b34801561091e57600080fd5b5061058f61092d366004614037565b611ed0565b34801561093e57600080fd5b5061051f61094d366004614129565b611f57565b34801561095e57600080fd5b5061097261096d366004613f7a565b611faf565b6040516104df9190614162565b34801561098b57600080fd5b50600b546001600160a01b0316610541565b3480156109a957600080fd5b5061051f6109b8366004613f7a565b612075565b3480156109c957600080fd5b5061051f6120a4565b3480156109de57600080fd5b506104fd6120ef565b3480156109f357600080fd5b50610a07610a02366004613f7a565b6120fe565b6040805192151583526020830191909152016104df565b61051f610a2c366004613f7a565b612162565b348015610a3d57600080fd5b50600b546104d390600160b01b900460ff1681565b348015610a5e57600080fd5b5061051f612424565b348015610a7357600080fd5b5061051f610a82366004614196565b61246f565b348015610a9357600080fd5b5061051f610aa2366004614015565b61247a565b348015610ab357600080fd5b5061051f610ac2366004613f7a565b612767565b61051f610ad5366004613f7a565b61291e565b348015610ae657600080fd5b5061051f610af53660046140e0565b612b04565b61051f612b41565b348015610b0e57600080fd5b5061051f610b1d3660046141c9565b612bfc565b348015610b2e57600080fd5b506104fd610b3d366004613f7a565b612c2e565b348015610b4e57600080fd5b5061051f610b5d366004613f7a565b612daf565b348015610b6e57600080fd5b5061058f60105481565b348015610b8457600080fd5b5061051f610b93366004613f7a565b612dde565b61051f612e0d565b348015610bac57600080fd5b5061058f60175481565b348015610bc257600080fd5b5061058f60195481565b348015610bd857600080fd5b506104d3610be7366004614129565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b348015610c2157600080fd5b5061058f610c30366004614037565b612ebb565b348015610c4157600080fd5b5061058f60145481565b348015610c5757600080fd5b50610c60612f14565b6040516104df9190614249565b348015610c7957600080fd5b5061051f610c88366004614037565b612f9e565b348015610c9957600080fd5b5061051f610ca836600461430a565b613036565b348015610cb957600080fd5b5061058f60155481565b348015610ccf57600080fd5b5061051f610cde3660046140e0565b61320a565b60006001600160e01b0319821663152a902d60e11b1480610d085750610d0882613247565b92915050565b606060008054610d1d90614376565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4990614376565b8015610d965780601f10610d6b57610100808354040283529160200191610d96565b820191906000526020600020905b815481529060010190602001808311610d7957829003601f168201915b5050505050905090565b600b546001600160a01b03163314610dd35760405162461bcd60e51b8152600401610dca906143b1565b60405180910390fd5b600b805460ff60b81b198116600160b81b9182900460ff1615909102179055565b6000818152600260205260408120546001600160a01b0316610e6d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610dca565b506000908152600460205260409020546001600160a01b031690565b6000610e9482611e2a565b9050806001600160a01b0316836001600160a01b03161415610f025760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610dca565b336001600160a01b0382161480610f1e5750610f1e8133610be7565b610f905760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610dca565b610f9a838361326c565b505050565b600b546001600160a01b03163314610fc95760405162461bcd60e51b8152600401610dca906143b1565b601155565b610fd833826132da565b610ff45760405162461bcd60e51b8152600401610dca906143e6565b610f9a8383836133d1565b60175460145430916000916127109161101791613e7b565b6110219085613ebd565b61102b9190613ea9565b90509250929050565b600b546001600160a01b0316331461105e5760405162461bcd60e51b8152600401610dca906143b1565b601455565b600061106e83611ed0565b82106110d05760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610dca565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6002600a54141561111c5760405162461bcd60e51b8152600401610dca90614437565b6002600a55600061112c33612ebb565b90506000811161117e5760405162461bcd60e51b815260206004820152601a60248201527f596f7520646f6e2774206861766520616e7920726577617264730000000000006044820152606401610dca565b600061118933611ed0565b905060005b818110156111c85760006111a23383611063565b6018546000918252601a60205260409091205550806111c08161446e565b91505061118e565b5081601960008282546111db9190614489565b9091555050604051600090339084908381818185875af1925050503d8060008114611222576040519150601f19603f3d011682016040523d82523d6000602084013e611227565b606091505b50509050806112485760405162461bcd60e51b8152600401610dca906144a0565b60405183815233907f2d5429efdeca7741a8cd94067b18d988bc4e5f1d5b8272c37b7bfc31e9bfa32c9060200160405180910390a250506001600a5550565b6002600a5414156112aa5760405162461bcd60e51b8152600401610dca90614437565b6002600a556000806112bb836120fe565b91509150816112dc5760405162461bcd60e51b8152600401610dca906144d8565b6000601e82815481106112f1576112f161451f565b60009182526020918290206040805160808101825260049093029091018054835260018101549383019390935260028301546001600160a01b031690820152600390910154606082015290506113443390565b6001600160a01b031681604001516001600160a01b031614156113db5760405162461bcd60e51b815260206004820152604360248201527f455243373231204d61726b6574706c6163653a20427579657220616e6420736560448201527f6c6c6572206d75737420626520626520646966666572656e742061646472657360648201526273657360e81b608482015260a401610dca565b806020015134101561143e5760405162461bcd60e51b815260206004820152602660248201527f455243373231204d61726b6574706c6163653a20496e73756666696369656e746044820152652066756e647360d01b6064820152608401610dca565b6000612710601454346114519190613ebd565b61145b9190613ea9565b90506000600161146a601f5490565b6114749190614489565b612710601754346114859190613ebd565b61148f9190613ea9565b6114999190613ea9565b9050600060016114a8601f5490565b6114b29190614489565b6114bc9083613ebd565b601e8054919250906114d090600190614489565b815481106114e0576114e061451f565b9060005260206000209060040201601e86815481106115015761150161451f565b6000918252602090912082546004909202019081556001808301549082015560028083015490820180546001600160a01b0319166001600160a01b03909216919091179055600391820154910155601e80548061156057611560614535565b600082815260208120600460001990930192830201818155600181018290556002810180546001600160a01b03191690556003018190559155601880548492906115ab908490613e7b565b90915550506000878152601a6020526040812080548492906115ce908490613e7b565b9250508190555080601960008282546115e79190613e7b565b909155503390506001600160a01b031684604001516001600160a01b0316887f3d5eb834b5d6cadc063c171c3f25f60bca8ea892ba9db25342278927d0af95563460405161163791815260200190565b60405180910390a4611664846040015161164e3390565b8960405180602001604052806000815250613578565b60408401516000906001600160a01b031661167f8386613e7b565b6116899034614489565b604051600081818185875af1925050503d80600081146116c5576040519150601f19603f3d011682016040523d82523d6000602084013e6116ca565b606091505b50509050806116eb5760405162461bcd60e51b8152600401610dca906144a0565b50506001600a55505050505050565b600b546001600160a01b031633146117245760405162461bcd60e51b8152600401610dca906143b1565b60006064601954476117369190614489565b61174190600a613ebd565b61174b9190613ea9565b601b549091506000906001600160a01b0316611768836004613ebd565b604051600081818185875af1925050503d80600081146117a4576040519150601f19603f3d011682016040523d82523d6000602084013e6117a9565b606091505b505090508061180e5760405162461bcd60e51b815260206004820152603f602482015260008051602061477183398151915260448201527f736665722066756e647320746f20636f6d6d756e6974792077616c6c657421006064820152608401610dca565b601c546040516000916001600160a01b03169084908381818185875af1925050503d806000811461185b576040519150601f19603f3d011682016040523d82523d6000602084013e611860565b606091505b50509050806118c55760405162461bcd60e51b815260206004820152603e602482015260008051602061477183398151915260448201527f736665722066756e647320746f20646f6e6174696f6e2077616c6c65742100006064820152608401610dca565b60006118d9600b546001600160a01b031690565b6001600160a01b03166015546019546118f29190613e7b565b6118fc9047614489565b604051600081818185875af1925050503d8060008114611938576040519150601f19603f3d011682016040523d82523d6000602084013e61193d565b606091505b50509050806119a25760405162461bcd60e51b815260206004820152603f602482015260008051602061477183398151915260448201527f736665722066756e647320746f20746865206f776e65722077616c6c657421006064820152608401610dca565b50505050565b610f9a83838360405180602001604052806000815250612bfc565b600b546001600160a01b031633146119ed5760405162461bcd60e51b8152600401610dca906143b1565b601555565b600b546001600160a01b03163314611a1c5760405162461bcd60e51b8152600401610dca906143b1565b600f55565b600b546001600160a01b03163314611a4b5760405162461bcd60e51b8152600401610dca906143b1565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b03163314611a975760405162461bcd60e51b8152600401610dca906143b1565b806012541115611ae95760405162461bcd60e51b815260206004820152601960248201527f546f6b656e20616c72656164792061697264726f7070656421000000000000006044820152606401610dca565b61115c811115611b3b5760405162461bcd60e51b815260206004820181905260248201527f4c61737420746f6b656e206d7573742062652034343434206f72206c6573732e6044820152606401610dca565b601d546012546001600160a01b03909116905b828111611c2657611b63601f80546001019055565b6000611b6e601f5490565b6040516331a9108f60e11b815260048101849052909150611be4906001600160a01b03851690636352211e90602401602060405180830381865afa158015611bba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bde919061454b565b826135ab565b6018546000828152601a60205260408120919091556011805460019290611c0c908490614489565b90915550829150611c1e90508161446e565b915050611b4e565b50611c32826001613e7b565b6012555050565b600b546001600160a01b03163314611c635760405162461bcd60e51b8152600401610dca906143b1565b600b805460ff60a81b1916600160a81b179055611c7f81611d44565b50565b600b546001600160a01b03163314611cac5760405162461bcd60e51b8152600401610dca906143b1565b601255565b6000611cbc60085490565b8210611d1f5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610dca565b60088281548110611d3257611d3261451f565b90600052602060002001549050919050565b600b546001600160a01b03163314611d6e5760405162461bcd60e51b8152600401610dca906143b1565b8051611d8190600d906020840190613dcc565b5050565b600b546001600160a01b03163314611daf5760405162461bcd60e51b8152600401610dca906143b1565b601755565b600081611dc0601f5490565b1015611e0e5760405162461bcd60e51b815260206004820152601b60248201527f517565727920666f72206e6f6e6578697374656e7420746f6b656e00000000006044820152606401610dca565b6000828152601a6020526040902054601854610d089190614489565b6000818152600260205260408120546001600160a01b031680610d085760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610dca565b600b546001600160a01b03163314611ecb5760405162461bcd60e51b8152600401610dca906143b1565b601055565b60006001600160a01b038216611f3b5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610dca565b506001600160a01b031660009081526003602052604090205490565b600b546001600160a01b03163314611f815760405162461bcd60e51b8152600401610dca906143b1565b601b80546001600160a01b039384166001600160a01b031991821617909155601c8054929093169116179055565b611fe36040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b600080611fef846120fe565b91509150816120105760405162461bcd60e51b8152600401610dca906144d8565b601e81815481106120235761202361451f565b60009182526020918290206040805160808101825260049093029091018054835260018101549383019390935260028301546001600160a01b0316908201526003909101546060820152949350505050565b600b546001600160a01b0316331461209f5760405162461bcd60e51b8152600401610dca906143b1565b601355565b600b546001600160a01b031633146120ce5760405162461bcd60e51b8152600401610dca906143b1565b600b805460ff60a01b198116600160a01b9182900460ff1615909102179055565b606060018054610d1d90614376565b60008060005b601e5481101561215c5783601e82815481106121225761212261451f565b9060005260206000209060040201600001541461213e5761214a565b6001925080915061215c565b806121548161446e565b915050612104565b50915091565b6002600a5414156121855760405162461bcd60e51b8152600401610dca90614437565b6002600a55801580159061219b57506013548111155b6121dd5760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081b5a5b9d08185b5bdd5b9d606a1b6044820152606401610dca565b6000816121e9601f5490565b6121f39190613e7b565b90506010548111156122435760405162461bcd60e51b815260206004820152601960248201527813585e081d1bdad95b881cdd5c1c1b1e48195e18d959591959603a1b6044820152606401610dca565b6011546010546122539190614489565b8111156122a25760405162461bcd60e51b815260206004820152601d60248201527f52656d61696e696e6720746f6b656e73206172652072657365727665640000006044820152606401610dca565b600b54600160a01b900460ff16156122f05760405162461bcd60e51b8152602060048201526011602482015270135a5b9d1a5b99c81a5cc81c185d5cd959607a1b6044820152606401610dca565b81600f546122fe9190613ebd565b3410156123425760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610dca565b60008061234e601f5490565b905061235a33856135c5565b60005b848110156124015781156123cf5760008286612710601654346123809190613ebd565b61238a9190613ea9565b6123949190613ea9565b61239e9190613ea9565b90506123aa8382613ebd565b6123b49085613e7b565b935080601860008282546123c89190613e7b565b9091555050505b816123d98161446e565b6018546000828152601a602052604090205592508190506123f98161446e565b91505061235d565b5081601960008282546124149190613e7b565b90915550506001600a5550505050565b600b546001600160a01b0316331461244e5760405162461bcd60e51b8152600401610dca906143b1565b600b805460ff60b01b198116600160b01b9182900460ff1615909102179055565b611d81338383613602565b6002600a54141561249d5760405162461bcd60e51b8152600401610dca90614437565b6002600a55600b54600160b01b900460ff166125175760405162461bcd60e51b815260206004820152603360248201527f455243373231204d61726b6574706c6163653a204c697374696e6773206172656044820152720818dd5c9c995b9d1b1e48191a5cd8589b1959606a1b6064820152608401610dca565b600081116125795760405162461bcd60e51b815260206004820152602960248201527f455243373231204d61726b6574706c6163653a20496e76616c6964206c697374604482015268696e6720707269636560b81b6064820152608401610dca565b3361258383611e2a565b6001600160a01b0316146125a95760405162461bcd60e51b8152600401610dca90614568565b60006125b4836120fe565b50905080156126195760405162461bcd60e51b815260206004820152602b60248201527f455243373231204d61726b6574706c6163653a20546f6b656e20697320616c7260448201526a1958591e481b1a5cdd195960aa1b6064820152608401610dca565b600060405180608001604052808581526020018481526020016126393390565b6001600160a01b03908116825242602092830152601e805460018101825560009190915283517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350600490920291820155918301517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e35183015560408301517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e352830180546001600160a01b0319169190921617905560608201517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e353909101559050336001600160a01b0316847fda5118e11956b6ccec7a349074d6efada2b70b987d2eabba029de60d8f67b1aa8560405161275491815260200190565b60405180910390a350506001600a555050565b6002600a54141561278a5760405162461bcd60e51b8152600401610dca90614437565b6002600a5560008061279b836120fe565b91509150816127bc5760405162461bcd60e51b8152600401610dca906144d8565b336001600160a01b0316601e82815481106127d9576127d961451f565b60009182526020909120600260049092020101546001600160a01b0316146128135760405162461bcd60e51b8152600401610dca90614568565b601e805461282390600190614489565b815481106128335761283361451f565b9060005260206000209060040201601e82815481106128545761285461451f565b6000918252602090912082546004909202019081556001808301549082015560028083015490820180546001600160a01b0319166001600160a01b03909216919091179055600391820154910155601e8054806128b3576128b3614535565b600082815260208120600460001990930192830201818155600181018290556002810180546001600160a01b0319169055600301819055915560405184917fd61f1a8b7be6805af2e554cc25e9395d458bbd556fa7c01c166ffbd9197347de91a250506001600a5550565b6002600a5414156129415760405162461bcd60e51b8152600401610dca90614437565b6002600a55600061295182611e2a565b9050336001600160a01b038216146129bf5760405162461bcd60e51b815260206004820152602b60248201527f4f6e6c7920746865206f776e6572206f66206120746f6b656e2063616e20636c60448201526a61696d207265776172647360a81b6064820152608401610dca565b60006129ca83611db4565b905060008111612a1c5760405162461bcd60e51b815260206004820152601a60248201527f596f7520646f6e2774206861766520616e7920726577617264730000000000006044820152606401610dca565b8060196000828254612a2e9190614489565b90915550506018546000848152601a60205260408082209290925590516001600160a01b0384169083908381818185875af1925050503d8060008114612a90576040519150601f19603f3d011682016040523d82523d6000602084013e612a95565b606091505b5050905080612ab65760405162461bcd60e51b8152600401610dca906144a0565b826001600160a01b03167f2d5429efdeca7741a8cd94067b18d988bc4e5f1d5b8272c37b7bfc31e9bfa32c83604051612af191815260200190565b60405180910390a250506001600a555050565b600b546001600160a01b03163314612b2e5760405162461bcd60e51b8152600401610dca906143b1565b8051611d8190600e906020840190613dcc565b600b546001600160a01b03163314612b6b5760405162461bcd60e51b8152600401610dca906143b1565b6000612b76601f5490565b90506000612b848234613ea9565b90506000612b928383613ebd565b90508160186000828254612ba69190613e7b565b925050819055508060196000828254612bbf9190613e7b565b90915550506040513481527ff47d3b5520326a887c3a79604ff206e16718a200fe11d7f3b555b2a4ddd93faa9060200160405180910390a1505050565b612c0633836132da565b612c225760405162461bcd60e51b8152600401610dca906143e6565b6119a284848484613578565b6000818152600260205260409020546060906001600160a01b0316612cad5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610dca565b600b54600160a81b900460ff16612d5057600c8054612ccb90614376565b80601f0160208091040260200160405190810160405280929190818152602001828054612cf790614376565b8015612d445780601f10612d1957610100808354040283529160200191612d44565b820191906000526020600020905b815481529060010190602001808311612d2757829003601f168201915b50505050509050919050565b6000612d5a6136d1565b90506000815111612d7a5760405180602001604052806000815250612da8565b80612d84846136e0565b600e604051602001612d98939291906145b3565b6040516020818303038152906040525b9392505050565b600b546001600160a01b03163314612dd95760405162461bcd60e51b8152600401610dca906143b1565b601855565b600b546001600160a01b03163314612e085760405162461bcd60e51b8152600401610dca906143b1565b601655565b600b546001600160a01b03163314612e375760405162461bcd60e51b8152600401610dca906143b1565b6000612e4b600b546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114612e95576040519150601f19603f3d011682016040523d82523d6000602084013e612e9a565b606091505b5050905080611c7f5760405162461bcd60e51b8152600401610dca906144a0565b600080612ec783611ed0565b90506000805b82811015612f0c576000612ee18683611063565b9050612eec81611db4565b612ef69084613e7b565b9250508080612f049061446e565b915050612ecd565b509392505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015612f955760008481526020908190206040805160808101825260048602909201805483526001808201548486015260028201546001600160a01b0316928401929092526003015460608301529083529092019101612f38565b50505050905090565b600b546001600160a01b03163314612fc85760405162461bcd60e51b8152600401610dca906143b1565b6001600160a01b03811661302d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dca565b611c7f816137de565b600b546001600160a01b031633146130605760405162461bcd60e51b8152600401610dca906143b1565b82811461306f5761306f614677565b821580159061307d57508015155b61308957613089614677565b6000805b828110156130dd578383828181106130a7576130a761451f565b90506020020160208101906130bc919061468d565b6130c99060ff1683613e7b565b9150806130d58161446e565b91505061308d565b50601054816130eb601f5490565b6130f59190613e7b565b111561313f5760405162461bcd60e51b815260206004820152601960248201527813585e081d1bdad95b881cdd5c1c1b1e48195e18d959591959603a1b6044820152606401610dca565b60005b8481101561320257600084848381811061315e5761315e61451f565b9050602002016020810190613173919061468d565b905060005b8160ff168110156131ed57613191601f80546001019055565b600061319c601f5490565b90506131c88989868181106131b3576131b361451f565b9050602002016020810190611bde9190614037565b6018546000918252601a602052604090912055806131e58161446e565b915050613178565b505080806131fa9061446e565b915050613142565b505050505050565b600b546001600160a01b031633146132345760405162461bcd60e51b8152600401610dca906143b1565b8051611d8190600c906020840190613dcc565b60006001600160e01b0319821663780e9d6360e01b1480610d085750610d0882613830565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906132a182611e2a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166133535760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610dca565b600061335e83611e2a565b9050806001600160a01b0316846001600160a01b031614806133995750836001600160a01b031661338e84610df4565b6001600160a01b0316145b806133c957506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166133e482611e2a565b6001600160a01b0316146134485760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610dca565b6001600160a01b0382166134aa5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610dca565b6134b5838383613880565b6134c060008261326c565b6001600160a01b03831660009081526003602052604081208054600192906134e9908490614489565b90915550506001600160a01b0382166000908152600360205260408120805460019290613517908490613e7b565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6135838484846133d1565b61358f84848484613905565b6119a25760405162461bcd60e51b8152600401610dca906146b0565b611d81828260405180602001604052806000815250613a03565b60005b81811015610f9a576135de601f80546001019055565b6135f0836135eb601f5490565b6135ab565b806135fa8161446e565b9150506135c8565b816001600160a01b0316836001600160a01b031614156136645760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610dca565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6060600d8054610d1d90614376565b6060816137045750506040805180820190915260018152600360fc1b602082015290565b8160005b811561372e57806137188161446e565b91506137279050600a83613ea9565b9150613708565b60008167ffffffffffffffff81111561374957613749614054565b6040519080825280601f01601f191660200182016040528015613773576020820181803683370190505b5090505b84156133c957613788600183614489565b9150613795600a86614702565b6137a0906030613e7b565b60f81b8183815181106137b5576137b561451f565b60200101906001600160f81b031916908160001a9053506137d7600a86613ea9565b9450613777565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006001600160e01b031982166380ac58cd60e01b148061386157506001600160e01b03198216635b5e139f60e01b145b80610d0857506301ffc9a760e01b6001600160e01b0319831614610d08565b600061388b826120fe565b50905080156138fa5760405162461bcd60e51b815260206004820152603560248201527f455243373231204d61726b6574706c6163653a20556e61626c6520746f20747260448201527430b739b332b91030903634b9ba32b2103a37b5b2b760591b6064820152608401610dca565b6119a2848484613a36565b60006001600160a01b0384163b156139f857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613949903390899088908890600401614716565b6020604051808303816000875af1925050508015613984575060408051601f3d908101601f1916820190925261398191810190614753565b60015b6139de573d8080156139b2576040519150601f19603f3d011682016040523d82523d6000602084013e6139b7565b606091505b5080516139d65760405162461bcd60e51b8152600401610dca906146b0565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506133c9565b506001949350505050565b613a0d8383613aee565b613a1a6000848484613905565b610f9a5760405162461bcd60e51b8152600401610dca906146b0565b6001600160a01b038316613a9157613a8c81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b613ab4565b816001600160a01b0316836001600160a01b031614613ab457613ab48382613c3c565b6001600160a01b038216613acb57610f9a81613cd9565b826001600160a01b0316826001600160a01b031614610f9a57610f9a8282613d88565b6001600160a01b038216613b445760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610dca565b6000818152600260205260409020546001600160a01b031615613ba95760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610dca565b613bb560008383613880565b6001600160a01b0382166000908152600360205260408120805460019290613bde908490613e7b565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001613c4984611ed0565b613c539190614489565b600083815260076020526040902054909150808214613ca6576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090613ceb90600190614489565b60008381526009602052604081205460088054939450909284908110613d1357613d1361451f565b906000526020600020015490508060088381548110613d3457613d3461451f565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480613d6c57613d6c614535565b6001900381819060005260206000200160009055905550505050565b6000613d9383611ed0565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b828054613dd890614376565b90600052602060002090601f016020900481019282613dfa5760008555613e40565b82601f10613e1357805160ff1916838001178555613e40565b82800160010185558215613e40579182015b82811115613e40578251825591602001919060010190613e25565b50613e4c929150613e50565b5090565b5b80821115613e4c5760008155600101613e51565b634e487b7160e01b600052601160045260246000fd5b60008219821115613e8e57613e8e613e65565b500190565b634e487b7160e01b600052601260045260246000fd5b600082613eb857613eb8613e93565b500490565b6000816000190483118215151615613ed757613ed7613e65565b500290565b6001600160e01b031981168114611c7f57600080fd5b600060208284031215613f0457600080fd5b8135612da881613edc565b60005b83811015613f2a578181015183820152602001613f12565b838111156119a25750506000910152565b60008151808452613f53816020860160208601613f0f565b601f01601f19169290920160200192915050565b602081526000612da86020830184613f3b565b600060208284031215613f8c57600080fd5b5035919050565b6001600160a01b0381168114611c7f57600080fd5b60008060408385031215613fbb57600080fd5b8235613fc681613f93565b946020939093013593505050565b600080600060608486031215613fe957600080fd5b8335613ff481613f93565b9250602084013561400481613f93565b929592945050506040919091013590565b6000806040838503121561402857600080fd5b50508035926020909101359150565b60006020828403121561404957600080fd5b8135612da881613f93565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561408557614085614054565b604051601f8501601f19908116603f011681019082821181831017156140ad576140ad614054565b816040528093508581528686860111156140c657600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156140f257600080fd5b813567ffffffffffffffff81111561410957600080fd5b8201601f8101841361411a57600080fd5b6133c98482356020840161406a565b6000806040838503121561413c57600080fd5b823561414781613f93565b9150602083013561415781613f93565b809150509250929050565b81518152602080830151908201526040808301516001600160a01b0316908201526060808301519082015260808101610d08565b600080604083850312156141a957600080fd5b82356141b481613f93565b91506020830135801515811461415757600080fd5b600080600080608085870312156141df57600080fd5b84356141ea81613f93565b935060208501356141fa81613f93565b925060408501359150606085013567ffffffffffffffff81111561421d57600080fd5b8501601f8101871361422e57600080fd5b61423d8782356020840161406a565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b818110156142b25761429f83855180518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b9284019260809290920191600101614265565b50909695505050505050565b60008083601f8401126142d057600080fd5b50813567ffffffffffffffff8111156142e857600080fd5b6020830191508360208260051b850101111561430357600080fd5b9250929050565b6000806000806040858703121561432057600080fd5b843567ffffffffffffffff8082111561433857600080fd5b614344888389016142be565b9096509450602087013591508082111561435d57600080fd5b5061436a878288016142be565b95989497509550505050565b600181811c9082168061438a57607f821691505b602082108114156143ab57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600060001982141561448257614482613e65565b5060010190565b60008282101561449b5761449b613e65565b500390565b6020808252602a90820152600080516020614771833981519152604082015269736665722066756e647360b01b606082015260800190565b60208082526027908201527f455243373231204d61726b6574706c6163653a20546f6b656e206973206e6f74604082015266081b1a5cdd195960ca1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006020828403121561455d57600080fd5b8151612da881613f93565b6020808252602b908201527f455243373231204d61726b6574706c6163653a2043616c6c6572206973206e6f60408201526a3a103a34329037bbb732b960a91b606082015260800190565b6000845160206145c68285838a01613f0f565b8551918401916145d98184848a01613f0f565b8554920191600090600181811c90808316806145f657607f831692505b85831081141561461457634e487b7160e01b85526022600452602485fd5b808015614628576001811461463957614666565b60ff19851688528388019550614666565b60008b81526020902060005b8581101561465e5781548a820152908401908801614645565b505083880195505b50939b9a5050505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561469f57600080fd5b813560ff81168114612da857600080fd5b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008261471157614711613e93565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061474990830184613f3b565b9695505050505050565b60006020828403121561476557600080fd5b8151612da881613edc56fe41564158205472616e73616374696f6e3a204661696c656420746f207472616ea2646970667358221220bc826f1d706b25139bbb4d256d8d1e88ee3ff61ca7608108c98f612f068c366364736f6c634300080b00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000000000000000000000000000600000000000000000000000004057f6d0c49358b88a318dcb230f7d3140fa78de0000000000000000000000001070aa92aa80d0bdf14692352726bc22cd8d9130000000000000000000000000000000000000000000000000000000000000002e516d52426165594473544c3477615655764c46513448684a6f506a786670675179624673667a374b425761626965000000000000000000000000000000000000