[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "NotCompatibleWithSpotMints", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "SequentialMintExceedsLimit", "type": "error" }, { "inputs": [], "name": "SequentialUpToTooSmall", "type": "error" }, { "inputs": [], "name": "SpotMintTokenIdTooSmall", "type": "error" }, { "inputs": [], "name": "TokenAlreadyExists", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "isBurningAllowed", "type": "bool" } ], "name": "BurningAllowedUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "toTokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" } ], "name": "ConsecutiveTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "bytes32", "name": "dna", "type": "bytes32" } ], "name": "Evolution", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "extensionAddress", "type": "address" } ], "name": "ExtensionAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "extensionAddress", "type": "address" } ], "name": "ExtensionRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "payoutReceiver", "type": "address" } ], "name": "PayoutChangeLocked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "extensionAddress", "type": "address" } ], "name": "RendererAdded", "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": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [], "name": "MINT_FEE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PLATFORM", "outputs": [ { "internalType": "string", "name": "_url", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "PLATFORM_FEE", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VERSION", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_extension", "type": "address" } ], "name": "addExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_isAllowed", "type": "bool" } ], "name": "allowBurning", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nTokens", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "claim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "data", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "endTimestamp", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "extensionList", "outputs": [ { "internalType": "contract INFTExtension[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "extensions", "outputs": [ { "internalType": "contract INFTExtension", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "extensionsLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "forceMetadataUpdate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "forceWithdrawPlatform", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPayoutReceiver", "outputs": [ { "internalType": "address payable", "name": "receiver", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRoyaltyReceiver", "outputs": [ { "internalType": "address payable", "name": "receiver", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint256", "name": "_maxSupply", "type": "uint256" }, { "internalType": "uint256", "name": "_nReserved", "type": "uint256" }, { "internalType": "bool", "name": "_startAtOne", "type": "bool" }, { "internalType": "string", "name": "_uri", "type": "string" }, { "components": [ { "internalType": "uint256", "name": "publicPrice", "type": "uint256" }, { "internalType": "uint256", "name": "maxTokensPerMint", "type": "uint256" }, { "internalType": "uint256", "name": "maxTokensPerWallet", "type": "uint256" }, { "internalType": "uint256", "name": "royaltyFee", "type": "uint256" }, { "internalType": "address", "name": "payoutReceiver", "type": "address" }, { "internalType": "bool", "name": "shouldLockPayoutReceiver", "type": "bool" }, { "internalType": "uint32", "name": "startTimestamp", "type": "uint32" }, { "internalType": "uint32", "name": "endTimestamp", "type": "uint32" } ], "internalType": "struct MintConfig", "name": "_config", "type": "tuple" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "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": [], "name": "isBurningAllowed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_extension", "type": "address" } ], "name": "isExtensionAdded", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isPayoutChangeLocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lockPayoutReceiver", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "maxPerMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxPerWallet", "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": "nTokens", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nTokens", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "mintExternal", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "mintedBy", "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": "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": "payoutReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "price", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxSupply", "type": "uint256" } ], "name": "reduceMaxSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renderer", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reserved", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "revokeAllExtensions", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_extension", "type": "address" } ], "name": "revokeExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "royaltyFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "royaltyReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "saleStarted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "uri", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_receiver", "type": "address" } ], "name": "setPayoutReceiver", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_price", "type": "uint256" } ], "name": "setPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_renderer", "type": "address" } ], "name": "setRenderer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_royaltyFee", "type": "uint256" } ], "name": "setRoyaltyFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_receiver", "type": "address" } ], "name": "setRoyaltyReceiver", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "startSale", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "startTimestamp", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "startTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "stopSale", "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" }, { "internalType": "bytes32", "name": "dna", "type": "bytes32" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "tokenHTML", "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": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxPerMint", "type": "uint256" } ], "name": "updateMaxPerMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxPerWallet", "type": "uint256" } ], "name": "updateMaxPerWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_startTimestamp", "type": "uint32" }, { "internalType": "uint32", "name": "_endTimestamp", "type": "uint32" } ], "name": "updateMintStartEnd", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_startTimestamp", "type": "uint32" } ], "name": "updateStartTimestamp", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20", "name": "token", "type": "address" } ], "name": "withdrawToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60808060405234620001275760005460ff8160081c16159182809362000119575b801562000100575b15620000a7575060ff1981166001176000558162000094575b5062000058575b6040516148cf90816200012d8239f35b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a162000048565b61ffff1916610101176000553862000041565b62461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015620000285750600160ff83161462000028565b50600160ff83161062000020565b600080fdfe6080604052600436101561001b575b361561001957600080fd5b005b60003560e01c806301582f00146104bb57806301ffc9a7146104b65780630563aae5146104b157806306fdde03146104ac578063081812fc146104a7578063095ea7b3146104a2578063170ff3e11461049d57806318160ddd1461049857806320b7b8df1461049357806323b872dd1461048e57806329406326146104895780632a30e4c2146104845780632a55205a1461047f57806334fbc9a11461047a5780633ccfd60b146104755780633cef28d2146104705780633e4086e51461046b57806342842e0e1461046657806342966c6814610461578063453c23101461045c5780634690521b14610457578063507e094f14610452578063513dc7e91461044d57806353c4b14a1461044857806355f804b31461044357806356d3163d1461043e5780635c474f9e146104395780636352211e146104345780636b0071761461042f5780636e878ffb1461042a57806370a0823114610425578063715018a614610420578063735328021461041b5780637efc77fa146104165780638589a1a014610411578063894760691461040c5780638ada6b0f146104075780638da5cb5b146104025780638dc251e3146103fd57806391b7f5ed146103f857806395d89b41146103f35780639fbc8713146103ee578063a035b1fe146103e9578063a0712d68146103e4578063a22cb465146103df578063a474935c146103da578063a4f6628d146103d5578063a5bd5235146103d0578063a769310a146103cb578063a85adeab146103c6578063b66a0e5d146103c1578063b88d4fde146103bc578063b8997a97146103b7578063b89a56ce146103b2578063c39c5a35146103ad578063c87b56dd146103a8578063d5abeb01146103a3578063d7bf81a31461039e578063db85d59c14610399578063dd35f1f614610394578063ddd5e1b21461038f578063e36b0b371461038a578063e6798baa14610385578063e6fd48bc14610380578063e76af32e1461037b578063e8a3d48514610376578063e985e9c514610371578063efbbd4671461036c578063f0ba844014610367578063f2fde38b14610362578063f867b7971461035d578063fe60d12c14610358578063fecfda49146103535763ffa1ad740361000e576125ae565b612581565b612563565b6124ec565b61245b565b61242f565b6123a3565b61235e565b612342565b61231c565b6122f5565b6122d2565b6122a7565b612205565b61217c565b612098565b61203a565b61201c565b611ffd565b611f83565b611edb565b611ebd565b611e5b565b611cfe565b611cd7565b611bcc565b611bb1565b611b8a565b611b64565b611ae5565b6119d1565b6119b3565b61198a565b6118d6565b6118b5565b61186e565b611845565b61181c565b61172f565b6116c5565b611671565b611556565b6114f8565b61149e565b611471565b6113e2565b6113b3565b61138e565b6112a4565b611263565b611189565b611140565b6110e7565b610fee565b610fd0565b610ddd565b610dba565b610d99565b610d5c565b610c4b565b610c2d565b610bdd565b610b44565b610aee565b610aaf565b610a5a565b610a02565b610904565b610832565b6107b1565b6106c1565b610647565b61058a565b346105735760008060031936011261057057604051809160a554908183526020809301809260a583526000805160206147ba83398151915290835b818110610553575050508461050c910385611de8565b60405193838594850191818652518092526040850193925b82811061053357505050500390f35b83516001600160a01b031685528695509381019392810192600101610524565b82546001600160a01b0316845292860192600192830192016104f6565b80fd5b600080fd5b6001600160e01b031981160361057357565b34610573576020366003190112610573576105e66004356105aa81610578565b63ffffffff60e01b1663152a902d60e11b811490811561063e575b811561062d575b81156105ea575b5060405190151581529081906020820190565b0390f35b6301ffc9a760e01b81149150811561061c575b811561060b575b50386105d3565b635b5e139f60e01b14905038610604565b6380ac58cd60e01b811491506105fd565b63d13f73fb60e01b811491506105cc565b801591506105c5565b3461057357600036600319011261057357602060a554604051908152f35b60005b8381106106785750506000910152565b8181015183820152602001610668565b906020916106a181518092818552858086019101610665565b601f01601f1916010190565b9060206106be928181520190610688565b90565b346105735760008060031936011261057057604051908060008051602061483a83398151915280546106f2816125ca565b80865292602092600192808416908115610782575060011461072b575b6105e68761071f81890382611de8565b604051918291826106ad565b815293507f933ecf8acb7824b680a8d16f3ff3db8864228d986aa4c2ebab1eeb2703b4beb35b83851061076f5750505050810160200161071f826105e6388061070f565b8054868601840152938201938101610751565b9150508695506105e69693506020925061071f94915060ff191682840152151560051b8201019293388061070f565b34610573576020366003190112610573576004356107ce81613887565b156108005760005260008051602061481a833981519152602052602060018060a01b0360406000205416604051908152f35b6333d1c03960e21b60005260046000fd5b6001600160a01b0381160361057357565b610144359061083082610811565b565b60403660031901126105735760043561084a81610811565b6024356001600160a01b038061085f836139b9565b16908133036108c7575b600083815260008051602061481a8339815191526020526040812080546001600160a01b0319166001600160a01b0387161790559316907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258480a480f35b60ff6108ed336108d685610cea565b9060018060a01b0316600052602052604060002090565b5416610869576367d9dca160e11b60005260046000fd5b346105735760203660031901126105735760043561092181610811565b610929613949565b6001600160a01b038116903082146109bd5761094490612e94565b61097857610951816126b6565b7f99c6112dbaef85e57ac8ca86dd23e3c785162b58a6e810e5d5e7455b568d66b1600080a2005b60405162461bcd60e51b815260206004820152601760248201527f457874656e73696f6e20616c72656164792061646465640000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f74206164642073656c6620617320657874656e73696f6e000000006044820152606490fd5b346105735760003660031901126105735760206000805160206147da833981519152547f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c41549003610a516139a1565b60405191038152f35b346105735760003660031901126105735760a1546040516001600160a01b039091168152602090f35b606090600319011261057357600435610a9b81610811565b90602435610aa881610811565b9060443590565b610019610abb36610a83565b91612715565b9181601f84011215610573578235916001600160401b038311610573576020838186019501011161057357565b34610573576060366003190112610573576044356001600160401b03811161057357610b30610b246105e6923690600401610ac1565b906024356004356128e5565b604051918291602083526020830190610688565b3461057357602036600319011261057357600435610b6181610811565b610b69613949565b60ff60a25460a01c16610b985760a180546001600160a01b0319166001600160a01b0392909216919091179055005b60405162461bcd60e51b815260206004820152601760248201527f5061796f7574206368616e6765206973206c6f636b65640000000000000000006044820152606490fd5b34610573576040366003190112610573576001600160a01b03610bfe612ee8565b16612710610c10609f54602435612995565b604080516001600160a01b03949094168452919004602083015290f35b34610573576000366003190112610573576020609754604051908152f35b3461057357600036600319011261057357610c64613949565b47609754612710908103818111610ce557610c7f9083612995565b0490610c89612ce7565b6099546001600160a01b039081169291610ca385826143d3565b848303928311610ce557610cda6020937f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364956143d3565b6040519485521692a2005b61297f565b6001600160a01b031660009081527f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c476020526040902090565b6001600160a01b031660009081527f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c456020526040902090565b3461057357602036600319011261057357600435610d7981610811565b60018060a01b031660005260a46020526020604060002054604051908152f35b3461057357602036600319011261057357610db2613949565b600435609f55005b610019610dc636610a83565b9060405192610dd484611d97565b60008452612f70565b346105735760203660031901126105735760043560ff60a25460a81c1615610f9257610e07613a31565b610e10816139b9565b600082815260008051602061481a833981519152602052604090208054916001600160a01b03811691338085149084141715610e4b565b1590565b610f6e575b600093610f65575b50610e6282610d23565b80546fffffffffffffffffffffffffffffffff0190556001600160a01b0382164260a01b17600360e01b17610e9685612400565b55600160e11b811615610f24575b507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4610f1b610ef77f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c415460010190565b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4155565b61001960018055565b60018401610f3181612400565b5415610f3e575b50610ea4565b6000805160206147da833981519152548114610f3857610f5d90612400565b553880610f38565b83905538610e58565b610f88610e47610f81336108d687610cea565b5460ff1690565b15610e50576138e5565b60405162461bcd60e51b8152602060048201526016602482015275109d5c9b9a5b99c81a5cc81b9bdd08185b1b1bddd95960521b6044820152606490fd5b34610573576000366003190112610573576020609d54604051908152f35b60603660031901126105735760043560243561100981610811565b61101233612e94565b156110855761101f613a31565b61102b82609854612995565b3410611049578161103e61104393613a87565b613af4565b60018055005b60405162461bcd60e51b8152602060048201526014602482015273135a5b9d08119959481a5cc81c995c5d5a5c995960621b6044820152606490fd5b60405162461bcd60e51b815260206004820152603460248201527f457874656e73696f6e2073686f756c6420626520616464656420746f20636f6e6044820152737472616374206265666f7265206d696e74696e6760601b6064820152608490fd5b34610573576000366003190112610573576020609c54604051908152f35b6004359063ffffffff8216820361057357565b610184359063ffffffff8216820361057357565b6101a4359063ffffffff8216820361057357565b346105735760203660031901126105735761001961115c611105565b611164613949565b6099805463ffffffff60a01b191660a09290921b63ffffffff60a01b16919091179055565b34610573576000366003190112610573576099546001600160a01b039081169033829003611225574790609754612710908103818111610ce5576111cd9084612995565b04926111d7612ce7565b906111e285836143d3565b848403938411610ce5577f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436493611217916143d3565b6040519384521691602090a2005b60405162461bcd60e51b815260206004820152601660248201527543616c6c6572206973206e6f7420506c6174666f726d60501b6044820152606490fd5b34610573576020366003190112610573576004356001600160401b03811161057357611296610019913690600401610ac1565b9061129f613949565b612b0d565b34610573576020366003190112610573576004356112c181610811565b6112c9613949565b6001600160a01b038116903082146113495761130e9082158015611335575b6112f190612c4b565b60018060a01b03166001600160601b0360a01b60a254161760a255565b7f9ecad07ead74f2fb52324485432408cf6261ad2454126bb85412492425a8b1d0600080a2005b506112f161134282613be3565b90506112e8565b60405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74206164642073656c662061732072656e646572657200000000006044820152606490fd5b346105735760003660031901126105735760206113a9612ca2565b6040519015158152f35b346105735760203660031901126105735760206001600160a01b036113d96004356139b9565b16604051908152f35b3461057357604036600319011261057357600435602435611401613949565b80821161143c576040805192835260208301919091527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c91a1005b60405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b6044820152606490fd5b3461057357600036600319011261057357602061148c612ce7565b6040516001600160a01b039091168152f35b34610573576020366003190112610573576004356114bb81610811565b6001600160a01b038116156114e7576001600160401b036114dd602092610d23565b5416604051908152f35b6323d3ad8160e21b60005260046000fd5b346105735760008060031936011261057057611512613949565b606580546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b346105735760203660031901126105735760043561157b611575612ca2565b15612d09565b611583613949565b61158b613bc6565b609a548101809111610ce557811061160657609b548110156115ac57609b55005b60405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f742073657420686967686572207468616e2074686520637572726560448201526b6e74206d6178537570706c7960a01b6064820152608490fd5b60405162461bcd60e51b815260206004820152603760248201527f4d617820737570706c7920697320746f6f206c6f772c20616c7265616479206d60448201527f696e746564206d6f726520282b207265736572766564290000000000000000006064820152608490fd5b34610573576000366003190112610573576105e660405161169181611db2565b6013815272343a3a38399d1797b0b93a33b2b732973c3cbd60691b6020820152604051918291602083526020830190610688565b34610573576000366003190112610573576116de613949565b60a2805460ff60a01b1916600160a01b1790557f1ebea55c22e40654c702e9f441c6344fd8ab9edd3fd2bcd0275d1ba76cfc8472602061171c612ce7565b6040516001600160a01b039091168152a1005b346105735760203660031901126105735760043561174c81610811565b611754613949565b6040516370a0823160e01b8152306004820152906001600160a01b03906020836024818585165afa91821561181757610019936000936117e6575b506117de6117b26117aa6117a4609754612ae1565b86612995565b612710900490565b6117ba612ce7565b946117d982856117d160995460018060a01b031690565b981687613d07565b612b00565b921690613d07565b61180991935060203d602011611810575b6118018183611de8565b810190612d55565b913861178f565b503d6117f7565b6128c6565b346105735760003660031901126105735760a2546040516001600160a01b039091168152602090f35b34610573576000366003190112610573576065546040516001600160a01b039091168152602090f35b346105735760203660031901126105735760043561188b81610811565b611893613949565b60a080546001600160a01b0319166001600160a01b0392909216919091179055005b34610573576020366003190112610573576118ce613949565b600435609e55005b34610573576000806003193601126105705760405190806000805160206147fa8339815191528054611907816125ca565b808652926020926001928084169081156107825750600114611933576105e68761071f81890382611de8565b815293507f617167b76dcc8247761fd21f427ad8ec3be6b3be203aed34e3aac08b4d31817c5b8385106119775750505050810160200161071f826105e6388061070f565b8054868601840152938201938101611959565b346105735760003660031901126105735760a0546040516001600160a01b039091168152602090f35b34610573576000366003190112610573576020609e54604051908152f35b6020366003190112610573576004356119e8613a31565b6119f0612ca2565b15611a9657609d549081611a4d575b610f1b90611a11609c54821115612dd6565b611a3d611a35611a23609e5484612995565b611a2f84609854612995565b90612ad4565b341015612e48565b611a4681613a87565b3390613af4565b3360005260a4602052604060002054818101809111610ce557610f1b92611a75911115612d64565b33600090815260a460205260409020611a8f828254612ad4565b90556119ff565b60405162461bcd60e51b815260206004820152600f60248201526e53616c65206e6f742061637469766560881b6044820152606490fd5b8015150361057357565b610164359061083082611acd565b3461057357604036600319011261057357600435611b0281610811565b60243590611b0f82611acd565b611b1c816108d633610cea565b9115159160ff1981541660ff841617905560405191825260018060a01b0316907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b3461057357600036600319011261057357602060ff60a25460a01c166040519015158152f35b346105735760203660031901126105735760206113a9600435611bac81610811565b612e94565b3461057357600036600319011261057357602061148c612ee8565b3461057357602036600319011261057357600435611be981610811565b611bf1613949565b60a580546001600160a01b03928316926000929084905b838510611c94575b50611c6584611c47611c41611c2c611c2788612af1565b61206e565b905460039190911b1c6001600160a01b031690565b9161206e565b90919060018060a01b038084549260031b9316831b921b1916179055565b611c6d612f06565b7fe056b30f86b962fc88925cb7559e4364707cab11d2c52e090e6c0db62eb91135600080a2005b909193846000528282611cbd836000805160206147ba833981519152015460018060a01b031690565b1614611cce57600101939190611c08565b93829150611c10565b3461057357600036600319011261057357602063ffffffff60995460c01c16604051908152f35b3461057357600036600319011261057357611d17613949565b6099805463ffffffff60a01b19164260a01b63ffffffff60a01b1617905563ffffffff60995490808260a01c16908260c01c1610611d5157005b63ffffffff60c01b191663ffffffff60c01b17609955005b634e487b7160e01b600052604160045260246000fd5b6001600160401b038111611d9257604052565b611d69565b602081019081106001600160401b03821117611d9257604052565b604081019081106001600160401b03821117611d9257604052565b606081019081106001600160401b03821117611d9257604052565b90601f801991011681019081106001600160401b03821117611d9257604052565b6001600160401b038111611d9257601f01601f191660200190565b929192611e3082611e09565b91611e3e6040519384611de8565b829481845281830111610573578281602093846000960137010152565b608036600319011261057357600435611e7381610811565b602435611e7f81610811565b606435916001600160401b038311610573573660238401121561057357611eb3610019933690602481600401359101611e24565b9160443591612f70565b34610573576000366003190112610573576020609f54604051908152f35b346105735760008060031936011261057057611ef5613949565b60a554815b818110611f3a57508160a55580611f0f575080f35b6000805160206147ba833981519152908101905b818110611f2f57505080f35b828155600101611f23565b6000805160206147ba833981519152810154600191906001600160a01b03167fe056b30f86b962fc88925cb7559e4364707cab11d2c52e090e6c0db62eb911358580a201611efa565b3461057357602036600319011261057357600435611f9f613949565b611fa7613a31565b60328111611fb857609c5560018055005b60405162461bcd60e51b815260206004820152601860248201527f546f6f206d616e7920746f6b656e7320706572206d696e7400000000000000006044820152606490fd5b34610573576020366003190112610573576105e6610b30600435612fb3565b34610573576000366003190112610573576020609b54604051908152f35b34610573576000366003190112610573576020609854604051908152f35b634e487b7160e01b600052603260045260246000fd5b60a5548110156120935760a56000526000805160206147ba8339815191520190600090565b612058565b346105735760203660031901126105735760043560a5548110156105735760a56000526000805160206147ba83398151915201546040516001600160a01b039091168152602090f35b9080601f83011215610573578160206106be93359101611e24565b90610100809260c3190112610573576040519182018281106001600160401b03821117611d92576040528160c435815260e435602082015261010435604082015261012435606082015261214e610822565b608082015261215b611ad7565b60a0820152612168611118565b60c082015260e061217761112c565b910152565b34610573576101c0366003190112610573576001600160401b03600435818111610573576121ae9036906004016120e1565b602435828111610573576121c69036906004016120e1565b6084356121d281611acd565b60a435938411610573576121ed6100199436906004016120e1565b916121f7366120fc565b9360643591604435916130cb565b346105735760403660031901126105735760043560243561222581610811565b61222d613a31565b612235613949565b609a549182811161225657808303928311610ce55761104392609a55613af4565b60405162461bcd60e51b815260206004820152602360248201527f5468617420776f756c642065786365656420746865206d61782072657365727660448201526232b21760e91b6064820152608490fd5b34610573576000366003190112610573576122c0613949565b6099805463ffffffff60a01b19169055005b346105735760003660031901126105735760206122ed6139a1565b604051908152f35b3461057357600036600319011261057357602063ffffffff60995460a01c16604051908152f35b3461057357600036600319011261057357602060ff60a25460a81c166040519015158152f35b34610573576000366003190112610573576105e6610b30612604565b3461057357604036600319011261057357602060ff61239760043561238281610811565b6108d66024359161239283610811565b610cea565b54166040519015158152f35b34610573576040366003190112610573576123bc611105565b60243563ffffffff81168103610573576123db61001992611164613949565b6099805463ffffffff60c01b191660c09290921b63ffffffff60c01b16919091179055565b6000527f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c44602052604060002090565b346105735760203660031901126105735760043560005260a36020526020604060002054604051908152f35b346105735760203660031901126105735760043561247881610811565b612480613949565b6001600160a01b038116156124985761001990613cbe565b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b34610573576020366003190112610573577f893763ec5f264ab31e47c251fe8d99f8c6c9d84e36fcd0cfe6cae3e925fb13cb602060043561252c81611acd565b612537611575612ca2565b61253f613949565b151560a25460ff60a81b8260a81b169060ff60a81b19161760a255604051908152a1005b34610573576000366003190112610573576020609a54604051908152f35b346105735760203660031901126105735761259a613949565b6125a2613a31565b600435609d5560018055005b3461057357600036600319011261057357602060405160058152f35b90600182811c921680156125fa575b60208310146125e457565b634e487b7160e01b600052602260045260246000fd5b91607f16916125d9565b6040519060008260a65491612618836125ca565b808352926020906001908181169081156126925750600114612643575b505061083092500383611de8565b91509260a660005260008051602061485a833981519152936000925b82841061267a57506108309450505081016020013880612635565b8554888501830152948501948794509281019261265f565b9150506020925061083094915060ff191682840152151560051b8201013880612635565b60a5549068010000000000000000821015611d9257600182018060a5558210156120935760a56000526000805160206147ba83398151915290910180546001600160a01b0319166001600160a01b03909216919091179055565b609a55565b919091612721826139b9565b6001600160a01b03918216939082811685900361286357600084815260008051602061481a83398151915260205260409020805461276e6001600160a01b03881633908114908314171590565b612846575b61283c575b5061278285610d23565b805460001901905561279382610d23565b805460010190556001600160a01b0382164260a01b17600160e11b176127b885612400565b55600160e11b8116156127fb575b501680927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4156127f657565b613906565b6001840161280881612400565b5415612815575b506127c6565b6000805160206147da83398151915254811461280f5761283490612400565b55388061280f565b6000905538612778565b612859610e47610f81336108d68b610cea565b15612773576138e5565b6138f6565b602081830312610573578051906001600160401b038211610573570181601f8201121561057357805161289a81611e09565b926128a86040519485611de8565b81845260208284010111610573576106be9160208085019101610665565b6040513d6000823e3d90fd5b604051906128df82611d97565b60008252565b919060018060a01b0360a2541690816129055750505050506106be6128d2565b608460009486604051978896879586946314a0319360e11b86526004860152602485015260606044850152816064850152848401378181018301879052601f01601f191681010301915afa90811561181757600091612962575090565b6106be91503d806000833e6129778183611de8565b810190612868565b634e487b7160e01b600052601160045260246000fd5b81810292918115918404141715610ce557565b8181106129b3575050565b600081556001016129a8565b90601f82116129cc575050565b6108309160a660005260008051602061485a833981519152906020601f840160051c83019310612a04575b601f0160051c01906129a8565b90915081906129f7565b90601f8211612a1b575050565b6108309160008051602061483a8339815191526000527f933ecf8acb7824b680a8d16f3ff3db8864228d986aa4c2ebab1eeb2703b4beb3906020601f840160051c83019310612a0457601f0160051c01906129a8565b90601f8211612a7e575050565b610830916000805160206147fa8339815191526000527f617167b76dcc8247761fd21f427ad8ec3be6b3be203aed34e3aac08b4d31817c906020601f840160051c83019310612a0457601f0160051c01906129a8565b91908201809211610ce557565b90612710918203918211610ce557565b600019810191908211610ce557565b91908203918211610ce557565b91906001600160401b038111611d9257612b3181612b2c60a6546125ca565b6129bf565b6000601f8211600114612bdb578190612b629394600092612bd0575b50508160011b916000199060031b1c19161790565b60a6555b612b6e613bc6565b15610830577f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c612b9c6139a1565b612bb7612bb2612baa6139a1565b611a2f613bc6565b612af1565b604080519283526020830191909152819081015b0390a1565b013590503880612b4d565b60a6600052601f1982169360008051602061485a83398151915291805b868110612c335750836001959610612c19575b505050811b0160a655612b66565b0135600019600384901b60f8161c19169055388080612c0b565b90926020600181928686013581550194019101612bf8565b15612c5257565b60405162461bcd60e51b815260206004820152602260248201527f4e6f7420636f6e666f726d7320746f2072656e646572657220696e7465726661604482015261636560f01b6064820152608490fd5b60995463ffffffff808260a01c16918215612cdf5760c01c16908115612cd7574210159081612ccf575090565b905042111590565b905042101590565b505050600090565b60a1546001600160a01b03908116908115612d00575090565b90506065541690565b15612d1057565b60405162461bcd60e51b815260206004820152601960248201527f53616c652073686f756c64206e6f7420626520616374697665000000000000006044820152606490fd5b90816020910312610573575190565b15612d6b57565b60405162461bcd60e51b815260206004820152603e60248201527f596f752063616e6e6f74206d696e74206d6f7265207468616e206d617850657260448201527f57616c6c657420746f6b656e7320666f72206f6e6520616464726573732100006064820152608490fd5b15612ddd57565b60405162461bcd60e51b815260206004820152603d60248201527f596f752063616e6e6f74206d696e74206d6f7265207468616e204d41585f544f60448201527f4b454e535f5045525f4d494e5420746f6b656e73206174206f6e6365210000006064820152608490fd5b15612e4f57565b60405162461bcd60e51b815260206004820152601960248201527f496e636f6e73697374656e7420616d6f756e742073656e7421000000000000006044820152606490fd5b60a5805491906000805b848110612eaf575050505050600090565b8282526000805160206147ba8339815191528101546001600160a01b03858116911614612ede57600101612e9e565b5050505050600190565b60a0546001600160a01b03168015612efd5790565b506106be612ce7565b60a5548015612f5a5760001981019080821015612093577fb29a2b3b6f2ff1b765777a231725941da5072cc4fcc30ac4a2ce09706e8ddefe9060a5600052016001600160601b0360a01b815416905560a555565b634e487b7160e01b600052603160045260246000fd5b929190612f7e828286612715565b803b612f8b575b50505050565b612f9493613f6b565b15612fa25738808080612f85565b6368d2bf6b60e11b60005260046000fd5b60a2546001600160a01b031680613076575b50612fcf81613887565b1561306557612fdc612604565b805190919015613050576040519060a08201604052608082019060008252905b6000190190600a906030828206018353049081612ffc57905061303e926130446106be936080601f199485810192030181526040519586936020850190613f94565b90613f94565b03908101835282611de8565b505060405161305e81611d97565b6000815290565b630a14c4b560e41b60005260046000fd5b60006024916040519283809263c87b56dd60e01b82528660048301525afa908115611817576000916130b0575b50805115612fc557905090565b6130c591503d806000833e6129778183611de8565b386130a3565b9593919492909460008051602061487a833981519152549560ff8760081c1696876000146131b95750303b155b1561314e5761310d9615978861312d576131c2565b61311357565b60008051602061487a833981519152805461ff0019169055565b60008051602061487a833981519152805461ffff19166101011790556131c2565b60405162461bcd60e51b815260206004820152603760248201527f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460448201527f20697320616c726561647920696e697469616c697a65640000000000000000006064820152608490fd5b60ff16156130f8565b9492909593916000549660ff8860081c1615809881996132e8575b81156132c8575b501561326c5761320a9688613201600160ff196000541617600055565b61325357613660565b61321057565b61322061ff001960005416600055565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498908060208101612bcb565b61326761010061ff00196000541617600055565b613660565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b303b159150816132da575b50386131e4565b6001915060ff1614386132d3565b600160ff82161091506131dd565b156132fd57565b60405162461bcd60e51b815260206004820152602c60248201527f4f70656e45646974696f6e20726571756972657320737461727420616e64206560448201526b06e642074696d657374616d760a41b6064820152608490fd5b1561335e57565b60405162461bcd60e51b815260206004820152603260248201527f4f70656e45646974696f6e20726571756972657320737461727454696d6573746044820152710616d70203c20656e6454696d657374616d760741b6064820152608490fd5b156133c557565b60405162461bcd60e51b815260206004820152602660248201527f4f70656e45646974696f6e207265717569726573206d617850657257616c6c6560448201526507420213d20360d41b6064820152608490fd5b9081516001600160401b038111611d925761343981612b2c60a6546125ca565b602080601f831160011461347b5750819061346b93946000926134705750508160011b916000199060031b1c19161790565b60a655565b015190503880612b4d565b90601f1983169461349c60a660005260008051602061485a83398151915290565b926000905b8782106134d95750508360019596106134c0575b505050811b0160a655565b015160001960f88460031b161c191690553880806134b5565b806001859682949686015181550195019301906134a1565b9081516001600160401b038111611d92576000805160206147fa833981519152906135258161352084546125ca565b612a71565b602080601f831160011461355c575081906135589394956000926134705750508160011b916000199060031b1c19161790565b9055565b90601f1983169561359c6000805160206147fa8339815191526000527f617167b76dcc8247761fd21f427ad8ec3be6b3be203aed34e3aac08b4d31817c90565b926000905b8882106135d9575050836001959697106135c0575b505050811b019055565b015160001960f88460031b161c191690553880806135b6565b806001859682949686015181550195019301906135a1565b156135f857565b60405162461bcd60e51b8152602060048201526015602482015274141b185d199bdc9b481b9bdd0819195c1b1bde5959605a1b6044820152606490fd5b919082608091031261057357815161364c81610811565b916020810151916060604083015192015190565b959491936136f161371092956136ec613715968215600014612710576136dd8a60c081016136d56136cc60e06136c063ffffffff94856136a4825163ffffffff1690565b16151580613867575b6136b6906132f6565b5163ffffffff1690565b94015163ffffffff1690565b63ffffffff1690565b911610613357565b61271060408b015115156133be565b609b55565b60a2805460ff60b01b191691151560b01b60ff60b01b16919091179055565b613419565b61371f6032609c55565b61372b333b15156135f1565b60405163776187ab60e01b815290608082600481335afa938415611817576137936137989361380996600090600090600090613829575b61377692935061377190609855565b609755565b60018060a01b03166001600160601b0360a01b6099541617609955565b614014565b6137a0614168565b6137a86141ea565b6137b061420a565b805160208201516040830151606084015160808501519394936001600160a01b0316916137e060a0860151151590565b9361380360e06137f760c089015163ffffffff1690565b97015163ffffffff1690565b96614228565b6002604360981b013b61381857565b613820614329565b6108303361438a565b5050506137766138536137719260803d608011613860575b61384b8183611de8565b810190613635565b5091935083925090613762565b503d613841565b506136b661387e6136cc858a015163ffffffff1690565b151590506136ad565b90600091806138946139a1565b111561389d5750565b6000805160206147da8339815191525481106138b65750565b9091505b6138c381612400565b54806138d957508015610ce557600019016138ba565b600160e01b1615919050565b632ce44b5f60e11b60005260046000fd5b62a1148160e81b60005260046000fd5b633a954ecd60e21b60005260046000fd5b636f96cda160e11b60005260046000fd5b63b562e8dd60e01b60005260046000fd5b622e076360e81b60005260046000fd5b6065546001600160a01b0316330361395d57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60a25460b01c60ff16156139b457600190565b600090565b806139c26139a1565b11613917576139d081612400565b549081156139e75750600160e01b81166139175790565b90506000805160206147da83398151915254811015613a2c575b60001901613a0e81612400565b54908115613a255750600160e01b81166139175790565b9050613a01565b613917565b600260015414613a42576002600155565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b61083090613aa260018060a01b036099541691609854612995565b906143d3565b15613aaf57565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420656e6f75676820546f6b656e73206c6566742e0000000000000000006044820152606490fd5b90609b5480613b84575b50613b226000805160206147da833981519152549183613b1c6128d2565b916144ae565b60005b828110613b3157505050565b80613b3e60019284612ad4565b7fa332d417eec9f7658bbe4001b4a5b148d28ae8e74744fd70d1f88175646a6c1b613b7b613b6b836145fe565b6040519081529081906020820190565b0390a201613b25565b6000805160206147da83398151915254613b9c6139a1565b900390838201809211610ce557609a548201809211610ce557613bc0911115613aa8565b38613afe565b6000805160206147da83398151915254613bde6139a1565b900390565b6040519060208083018160006301ffc9a760e01b9586845286602482015260248152613c0e81611dcd565b51617530938685fa933d6000519086613cb3575b5085613ca9575b5084613c46575b50505081613c3c575090565b6106be9150614645565b83945090600091839460405185810192835263ffffffff60e01b602482015260248152613c7281611dcd565b5192fa60005190913d83613c9e575b505081613c94575b501590388080613c30565b9050151538613c89565b101591503880613c81565b1515945038613c29565b841115955038613c22565b606580546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b60405163a9059cbb60e01b60208083019182526001600160a01b039490941660248301526044808301959095529381529192613da092916000908190613d4e606486611de8565b60018060a01b03169260405194613d6486611db2565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af1613d9a613ea1565b91614724565b8051828115918215613e10575b5050905015613db95750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b838092935001031261057357810151613e2881611acd565b808238613dad565b9081602091031261057357516106be81610578565b6106be939260809260018060a01b031682526000602083015260408201528160608201520190610688565b6001600160a01b0391821681529116602082015260408101919091526080606082018190526106be92910190610688565b3d15613ecc573d90613eb282611e09565b91613ec06040519384611de8565b82523d6000602084013e565b606090565b613efa60209160009394604051948580948193630a85bd0160e11b998a84523360048501613e45565b03926001600160a01b03165af160009181613f3a575b50613f2c57613f1d613ea1565b805115612fa257805190602001fd5b6001600160e01b0319161490565b613f5d91925060203d602011613f64575b613f558183611de8565b810190613e30565b9038613f10565b503d613f4b565b92602091613efa936000604051809681958294630a85bd0160e11b9a8b85523360048601613e70565b90613fa760209282815194859201610665565b0190565b15613fb257565b60405162461bcd60e51b815260206004820152603460248201527f455243373231415f5f496e697469616c697a61626c653a20636f6e7472616374604482015273206973206e6f7420696e697469616c697a696e6760601b6064820152608490fd5b919061403d60ff60008051602061487a8339815191525460081c1661403881613fab565b613fab565b82516001600160401b038111611d925760008051602061483a833981519152906140708161406b84546125ca565b612a0e565b602080601f83116001146140ca575090806140a6926140ad96976000926134705750508160011b916000199060031b1c19161790565b90556134f1565b6108306140b86139a1565b6000805160206147da83398151915255565b90601f1983169661410a60008051602061483a8339815191526000527f933ecf8acb7824b680a8d16f3ff3db8864228d986aa4c2ebab1eeb2703b4beb390565b926000905b898210614150575050908392916001946140ad989910614137575b505050811b0190556134f1565b015160001960f88460031b161c1916905538808061412a565b8060018596829496860151815501950193019061410f565b61083060ff60008051602061487a8339815191525460081c1661403881613fab565b1561419157565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b61420460ff60005460081c166141ff8161418a565b61418a565b60018055565b61421f60ff60005460081c166141ff8161418a565b61083033613cbe565b919395969092949663ffffffff90818116614300575b5081166142d7575b50806142ce575b50806142c5575b50806142bc575b50806142b3575b506001600160a01b03811661428e575b5061427957565b60a2805460ff60a01b1916600160a01b179055565b60a180546001600160a01b0319166001600160a01b0390921691909117905538614272565b609f5538614262565b609d553861425b565b609c5538614254565b609e553861424d565b6099805463ffffffff60c01b191660c09290921b63ffffffff60c01b1691909117905538614246565b6099805463ffffffff60a01b191660a09290921b63ffffffff60a01b169190911790553861423e565b6001600160a01b036143396146a2565b16803b1561057357600080916024604051809481936336b91f2b60e01b8352739b1419cd4b86c6c44146276a9a5c34a91872d84160048401525af18015611817576143815750565b61083090611d7f565b6002604360981b0190813b1561057357604051631d70c8d360e31b81526001600160a01b039091166004820152906000908290602490829084905af18015611817576143815750565b814710614469576000918291829182916001600160a01b03165af16143f6613ea1565b50156143fe57565b60405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608490fd5b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606490fd5b90916000805160206147da8339815191529182549084156145f9576001916001600160a01b0382164260a01b87851460e11b17176144eb82612400565b556144f582610d23565b80546801000000000000000188020190556001600160a01b03821680156145f45786820191908480805b6145a4575b5050505061453e906000805160206147da83398151915255565b803b61454c575b5050505050565b83549485039180805b61456f575b50505050505403610573573880808080614545565b15614597575b6000614588610e47868487019686613ed1565b6145925781614555565b612fa2565b858310614575578061455a565b156145dc575b506000858383837fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4908161451f565b909101908282146145ed57846145aa565b8481614524565b613939565b613928565b600019430190438211610ce557604051906020820192448452406040830152606082015260608152608081018181106001600160401b03821117611d925760405251902090565b6000602091604051838101906301ffc9a760e01b8252633f2b9d7560e11b60248201526024815261467581611dcd565b5191617530fa6000513d82614696575b508161468f575090565b9050151590565b60201115915038614685565b4662013e31036146c457732536fe9ab3f511540f2f9e2ec2a805005c3dd80090565b46630a0c71fd036146e757732fc95838c71e76ec69ff817983bff17c710f34e090565b60405162461bcd60e51b815260206004820152601560248201527410da185a5b881251081a5cc81b9bdd08109b185cdd605a1b6044820152606490fd5b919290156147865750815115614738575090565b3b156147415790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156147995750805190602001fd5b60405162461bcd60e51b81529081906147b590600483016106ad565b0390fdfeb29a2b3b6f2ff1b765777a231725941da5072cc4fcc30ac4a2ce09706e8ddeff2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c402569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c432569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c462569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c422da56674729343acc9933752c8c469a244252915242eb6d4c02d11ddd69164a1ee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85fa26469706673582212203f43b7596cd5a5c5f365781c320c8eb5373911db34b376a298f17f2e9b353d8664736f6c63430008180033