[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "ApprovalToCurrentOwner", "type": "error" }, { "inputs": [], "name": "ApproveToCaller", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "BatchMintInvalidBatchId", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "BatchMintInvalidTokenId", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "batchId", "type": "uint256" } ], "name": "BatchMintMetadataFrozen", "type": "error" }, { "inputs": [], "name": "ContractMetadataUnauthorized", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "expected", "type": "bytes32" }, { "internalType": "bytes32", "name": "actual", "type": "bytes32" } ], "name": "DelayedRevealIncorrectResultHash", "type": "error" }, { "inputs": [], "name": "DelayedRevealNothingToReveal", "type": "error" }, { "inputs": [], "name": "InvalidQueryRange", "type": "error" }, { "inputs": [], "name": "LazyMintInvalidAmount", "type": "error" }, { "inputs": [], "name": "LazyMintUnauthorized", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "OwnableUnauthorized", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "max", "type": "uint256" }, { "internalType": "uint256", "name": "actual", "type": "uint256" } ], "name": "RoyaltyExceededMaxFeeBps", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" } ], "name": "RoyaltyInvalidRecipient", "type": "error" }, { "inputs": [], "name": "RoyaltyUnauthorized", "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": "string", "name": "prevURI", "type": "string" }, { "indexed": false, "internalType": "string", "name": "newURI", "type": "string" } ], "name": "ContractURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newRoyaltyRecipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "newRoyaltyBps", "type": "uint256" } ], "name": "DefaultRoyalty", "type": "event" }, { "anonymous": false, "inputs": [], "name": "MetadataFrozen", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "prevOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnerUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "royaltyRecipient", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "royaltyBps", "type": "uint256" } ], "name": "RoyaltyForToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "index", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "revealedURI", "type": "string" } ], "name": "TokenURIRevealed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "claimer", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "startTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "quantityClaimed", "type": "uint256" } ], "name": "TokensClaimed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "startTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endTokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "baseURI", "type": "string" }, { "indexed": false, "internalType": "bytes", "name": "encryptedBaseURI", "type": "bytes" } ], "name": "TokensLazyMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "acceptedTokens", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "alpaToken", "outputs": [ { "internalType": "contract extendedIERC20", "name": "", "type": "address" } ], "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": [], "name": "baseAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "batchFrozen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_quantity", "type": "uint256" }, { "internalType": "string", "name": "_baseURI", "type": "string" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "batchMintTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_receiver", "type": "address" }, { "internalType": "uint256", "name": "_quantity", "type": "uint256" } ], "name": "claim", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "bytes", "name": "key", "type": "bytes" } ], "name": "encryptDecrypt", "outputs": [ { "internalType": "bytes", "name": "result", "type": "bytes" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "encryptedData", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "explicitOwnershipOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" } ], "internalType": "struct IERC721A.TokenOwnership", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "explicitOwnershipsOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" } ], "internalType": "struct IERC721A.TokenOwnership[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getBaseURICount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_index", "type": "uint256" } ], "name": "getBatchIdAtIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDefaultRoyaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_batchId", "type": "uint256" }, { "internalType": "bytes", "name": "_key", "type": "bytes" } ], "name": "getRevealURI", "outputs": [ { "internalType": "string", "name": "revealedURI", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "getRoyaltyInfoForToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_operator", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "isApprovedOrOwner", "outputs": [ { "internalType": "bool", "name": "isApprovedOrOwnerOf", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_batchId", "type": "uint256" } ], "name": "isEncryptedBatch", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "string", "name": "_baseURIForTokens", "type": "string" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "lazyMint", "outputs": [ { "internalType": "uint256", "name": "batchId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "string", "name": "_tokenURI", "type": "string" } ], "name": "mintTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes[]", "name": "data", "type": "bytes[]" } ], "name": "multicall", "outputs": [ { "internalType": "bytes[]", "name": "results", "type": "bytes[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextTokenIdToClaim", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextTokenIdToMint", "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": [ { "internalType": "uint256", "name": "_index", "type": "uint256" }, { "internalType": "bytes", "name": "_key", "type": "bytes" } ], "name": "reveal", "outputs": [ { "internalType": "string", "name": "revealedURI", "type": "string" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "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": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_uri", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_royaltyRecipient", "type": "address" }, { "internalType": "uint256", "name": "_royaltyBps", "type": "uint256" } ], "name": "setDefaultRoyaltyInfo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "setOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_tokenId", "type": "uint256" }, { "internalType": "address", "name": "_recipient", "type": "address" }, { "internalType": "uint256", "name": "_bps", "type": "uint256" } ], "name": "setRoyaltyInfoForToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tier", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setTierURI", "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": "", "type": "uint256" } ], "name": "tokenIdToNftTier", "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": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "tokensOfOwner", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "start", "type": "uint256" }, { "internalType": "uint256", "name": "stop", "type": "uint256" } ], "name": "tokensOfOwnerIn", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_claimer", "type": "address" }, { "internalType": "uint256", "name": "_quantity", "type": "uint256" } ], "name": "verifyClaim", "outputs": [], "stateMutability": "view", "type": "function" } ]
60a06040523480156200001157600080fd5b503360405180604001604052806006815260200165414c5041545760d01b8152506040518060400160405280600381526020016210541560ea1b8152503360008383816002908162000064919062000233565b50600362000073828262000233565b505060008055506200008585620000a5565b6200009a826001600160801b038316620000f7565b5050505050620002ff565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a35050565b6127108111156200012a57604051630a4930ad60e31b815261271060048201526024810182905260440160405180910390fd5b600a80546001600160a01b0384166001600160b01b03199091168117600160a01b61ffff851602179091556040518281527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb9060200160405180910390a25050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001b757607f821691505b602082108103620001d857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022e576000816000526020600020601f850160051c81016020861015620002095750805b601f850160051c820191505b818110156200022a5782815560010162000215565b5050505b505050565b81516001600160401b038111156200024f576200024f6200018c565b6200026781620002608454620001a2565b84620001de565b602080601f8311600181146200029f5760008415620002865750858301515b600019600386901b1c1916600185901b1785556200022a565b600085815260208120601f198616915b82811015620002d057888601518255948401946001909101908401620002af565b5085821015620002ef5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051613ce56200031b60003960006107380152613ce56000f3fe6080604052600436106102c85760003560e01c806382dc4a0511610175578063a22cb465116100dc578063c23dc68f11610095578063d37c353b1161006f578063d37c353b14610927578063e715032214610947578063e8a3d48514610967578063e985e9c51461097c57600080fd5b8063c23dc68f146108ba578063c87b56dd146108e7578063ce8056421461090757600080fd5b8063a22cb4651461080f578063aad3ec961461082f578063ac9650d814610842578063acd083f8146104ac578063b24f2d391461086f578063b88d4fde1461089a57600080fd5b806395d89b411161012e57806395d89b411461075a57806399a2557a1461076f5780639bcf7a151461078f5780639c0c3228146107af5780639fc4d68f146107cf578063a05112fc146107ef57600080fd5b806382dc4a051461065b578063830405321461068b5780638462151c146106bb5780638da5cb5b146106e8578063938e3d7b14610706578063938fbf7c1461072657600080fd5b80633b1475a7116102345780634cc157df116101ed5780636352211e116101c75780636352211e146105e657806363b45e2d1461060657806370a082311461061b578063754a81d91461063b57600080fd5b80634cc157df146105575780635bbb217714610599578063600dd5ea146105c657600080fd5b80633b1475a7146104ac57806342842e0e146104c157806342966c68146104e1578063430c2081146105015780634864d14014610521578063492e224b1461053757600080fd5b806318160ddd1161028657806318160ddd146103be57806323b872dd146103e15780632419f51b146104015780632a55205a146104215780632f92023a14610460578063398a8aa71461047f57600080fd5b806275a317146102cd57806301ffc9a7146102ef57806306fdde0314610324578063081812fc14610346578063095ea7b31461037e57806313af40351461039e575b600080fd5b3480156102d957600080fd5b506102ed6102e8366004613053565b6109c5565b005b3480156102fb57600080fd5b5061030f61030a3660046130b6565b610a45565b60405190151581526020015b60405180910390f35b34801561033057600080fd5b50610339610ab2565b60405161031b9190613123565b34801561035257600080fd5b50610366610361366004613136565b610b44565b6040516001600160a01b03909116815260200161031b565b34801561038a57600080fd5b506102ed61039936600461314f565b610b88565b3480156103aa57600080fd5b506102ed6103b9366004613179565b610c0e565b3480156103ca57600080fd5b50600154600054035b60405190815260200161031b565b3480156103ed57600080fd5b506102ed6103fc366004613194565b610c3f565b34801561040d57600080fd5b506103d361041c366004613136565b610c4a565b34801561042d57600080fd5b5061044161043c3660046131d0565b610c9c565b604080516001600160a01b03909316835260208301919091520161031b565b34801561046c57600080fd5b506102ed61047b36600461314f565b5050565b34801561048b57600080fd5b506103d361049a366004613136565b601a6020526000908152604090205481565b3480156104b857600080fd5b506000546103d3565b3480156104cd57600080fd5b506102ed6104dc366004613194565b610cd9565b3480156104ed57600080fd5b506102ed6104fc366004613136565b610cf4565b34801561050d57600080fd5b5061030f61051c36600461314f565b610cff565b34801561052d57600080fd5b506103d361019081565b34801561054357600080fd5b5061030f610552366004613136565b610d7e565b34801561056357600080fd5b50610577610572366004613136565b610da4565b604080516001600160a01b03909316835261ffff90911660208301520161031b565b3480156105a557600080fd5b506105b96105b43660046131f2565b610e0f565b60405161031b9190613297565b3480156105d257600080fd5b506102ed6105e136600461314f565b610ed5565b3480156105f257600080fd5b50610366610601366004613136565b610f04565b34801561061257600080fd5b50600c546103d3565b34801561062757600080fd5b506103d3610636366004613179565b610f16565b34801561064757600080fd5b506102ed610656366004613301565b610f64565b34801561066757600080fd5b5061030f610676366004613179565b60186020526000908152604090205460ff1681565b34801561069757600080fd5b5061030f6106a6366004613136565b600e6020526000908152604090205460ff1681565b3480156106c757600080fd5b506106db6106d6366004613179565b610fd8565b60405161031b919061337e565b3480156106f457600080fd5b506009546001600160a01b0316610366565b34801561071257600080fd5b506102ed6107213660046133b6565b61111d565b34801561073257600080fd5b506103667f000000000000000000000000000000000000000000000000000000000000000081565b34801561076657600080fd5b5061033961114b565b34801561077b57600080fd5b506106db61078a3660046133ea565b61115a565b34801561079b57600080fd5b506102ed6107aa36600461341d565b61130d565b3480156107bb57600080fd5b506102ed6107ca366004613442565b61133d565b3480156107db57600080fd5b506103396107ea3660046134ba565b6113df565b3480156107fb57600080fd5b5061033961080a366004613136565b611556565b34801561081b57600080fd5b506102ed61082a366004613505565b6115f0565b6102ed61083d36600461314f565b611685565b34801561084e57600080fd5b5061086261085d366004613541565b611745565b60405161031b91906135b5565b34801561087b57600080fd5b50600a546001600160a01b03811690600160a01b900461ffff16610577565b3480156108a657600080fd5b506102ed6108b5366004613619565b6118aa565b3480156108c657600080fd5b506108da6108d5366004613136565b6118ee565b60405161031b9190613674565b3480156108f357600080fd5b50610339610902366004613136565b61199c565b34801561091357600080fd5b506103396109223660046134ba565b611b22565b34801561093357600080fd5b506103d36109423660046136a9565b611be6565b34801561095357600080fd5b50610339610962366004613722565b611c7e565b34801561097357600080fd5b50610339611cf3565b34801561098857600080fd5b5061030f61099736600461377d565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b6109cd611d00565b610a185760405162461bcd60e51b81526020600482015260176024820152762737ba1030baba3437b934bd32b2103a379036b4b73a1760491b60448201526064015b60405180910390fd5b610a2a610a2460005490565b82611d2d565b61047b82600160405180602001604052806000815250611d9a565b60006301ffc9a760e01b6001600160e01b031983161480610a7657506380ac58cd60e01b6001600160e01b03198316145b80610a915750635b5e139f60e01b6001600160e01b03198316145b80610aac57506001600160e01b0319821663152a902d60e11b145b92915050565b606060028054610ac1906137b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610aed906137b0565b8015610b3a5780601f10610b0f57610100808354040283529160200191610b3a565b820191906000526020600020905b815481529060010190602001808311610b1d57829003601f168201915b5050505050905090565b6000610b4f82611f3d565b610b6c576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b6000610b9382610f04565b9050806001600160a01b0316836001600160a01b031603610bc75760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b03821614610bfe57610be18133610997565b610bfe576040516367d9dca160e11b815260040160405180910390fd5b610c09838383611f68565b505050565b610c16611d00565b610c33576040516316ccb9cb60e11b815260040160405180910390fd5b610c3c81611fc4565b50565b610c09838383612016565b6000610c55600c5490565b8210610c7757604051630793127760e11b815260048101839052602401610a0f565b600c8281548110610c8a57610c8a6137ea565b90600052602060002001549050919050565b600080600080610cab86610da4565b90945084925061ffff169050612710610cc48287613816565b610cce9190613843565b925050509250929050565b610c09838383604051806020016040528060008152506118aa565b610c3c8160016121f1565b600080610d0b83610f04565b9050806001600160a01b0316846001600160a01b03161480610d5257506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b80610d765750836001600160a01b0316610d6b84610b44565b6001600160a01b0316145b949350505050565b60008181526011602052604081208054829190610d9a906137b0565b9050119050919050565b6000818152600b60209081526040808320815180830190925280546001600160a01b031680835260019091015492820192909252829115610deb5780516020820151610e05565b600a546001600160a01b03811690600160a01b900461ffff165b9250925050915091565b80516060906000816001600160401b03811115610e2e57610e2e612f90565b604051908082528060200260200182016040528015610e7957816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610e4c5790505b50905060005b828114610ecd57610ea8858281518110610e9b57610e9b6137ea565b60200260200101516118ee565b828281518110610eba57610eba6137ea565b6020908102919091010152600101610e7f565b509392505050565b610edd611d00565b610efa57604051636fae358160e11b815260040160405180910390fd5b61047b82826123a4565b6000610f0f82612434565b5192915050565b60006001600160a01b038216610f3f576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b610f6c611d00565b610fb25760405162461bcd60e51b81526020600482015260176024820152762737ba1030baba3437b934bd32b2103a379036b4b73a1760491b6044820152606401610a0f565b610fc5610fbe60005490565b848461254e565b5050610fd2848483611d9a565b50505050565b60606000806000610fe885610f16565b90506000816001600160401b0381111561100457611004612f90565b60405190808252806020026020018201604052801561102d578160200160208202803683370190505b509050611053604080516060810182526000808252602082018190529181019190915290565b60005b83861461111157600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff16151591810182905292506111095781516001600160a01b0316156110ca57815194505b876001600160a01b0316856001600160a01b03160361110957808387806001019850815181106110fc576110fc6137ea565b6020026020010181815250505b600101611056565b50909695505050505050565b611125611d00565b61114257604051639f7f092560e01b815260040160405180910390fd5b610c3c816125b2565b606060038054610ac1906137b0565b606081831061117c57604051631960ccad60e11b815260040160405180910390fd5b600080548084111561118c578093505b600061119787610f16565b9050848610156111b657858503818110156111b0578091505b506111ba565b5060005b6000816001600160401b038111156111d4576111d4612f90565b6040519080825280602002602001820160405280156111fd578160200160208202803683370190505b5090508160000361121357935061130692505050565b600061121e886118ee565b90506000816040015161122f575080515b885b8881141580156112415750848714155b156112fa57600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff16151591810182905293506112f25782516001600160a01b0316156112b357825191505b8a6001600160a01b0316826001600160a01b0316036112f257808488806001019950815181106112e5576112e56137ea565b6020026020010181815250505b600101611231565b50505092835250909150505b9392505050565b611315611d00565b61133257604051636fae358160e11b815260040160405180910390fd5b610c0983838361268e565b6009546001600160a01b03163314611368576040516316ccb9cb60e11b815260040160405180910390fd5b6001821015801561137a575060058211155b6113b55760405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b2103a34b2b960a11b6044820152606401610a0f565b8060136113c3600185613857565b600581106113d3576113d36137ea565b0190610c0990826138ba565b6000838152601160205260408120805460609291906113fd906137b0565b80601f0160208091040260200160405190810160405280929190818152602001828054611429906137b0565b80156114765780601f1061144b57610100808354040283529160200191611476565b820191906000526020600020905b81548152906001019060200180831161145957829003601f168201915b50505050509050805160000361149f57604051635d0580b360e01b815260040160405180910390fd5b600080828060200190518101906114b69190613979565b915091506114c5828787611c7e565b935080848787466040516020016114df94939291906139f9565b604051602081830303815290604052805190602001201461154c57808487874660405160200161151294939291906139f9565b60405160208183030381529060405280519060200120604051633364574f60e21b8152600401610a0f929190918252602082015260400190565b5050509392505050565b6011602052600090815260409020805461156f906137b0565b80601f016020809104026020016040519081016040528092919081815260200182805461159b906137b0565b80156115e85780601f106115bd576101008083540402835291602001916115e8565b820191906000526020600020905b8154815290600101906020018083116115cb57829003601f168201915b505050505081565b336001600160a01b038316036116195760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b601054816000546116969190613a22565b11156116e45760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420656e6f756768206c617a79206d696e74656420746f6b656e732e00006044820152606401610a0f565b60006116f08383612741565b905080836001600160a01b0316336001600160a01b03167fff097c7d8b1957a4ff09ef1361b5fb54dcede3941ba836d0beb9d10bec725de68560405161173891815260200190565b60405180910390a4505050565b6060816001600160401b0381111561175f5761175f612f90565b60405190808252806020026020018201604052801561179257816020015b606081526020019060019003908161177d5790505b509050336000805b848110156118a1578115611819576117f7308787848181106117be576117be6137ea565b90506020028101906117d09190613a35565b866040516020016117e393929190613a7b565b60405160208183030381529060405261274e565b848281518110611809576118096137ea565b6020026020010181905250611899565b61187b3087878481811061182f5761182f6137ea565b90506020028101906118419190613a35565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061274e92505050565b84828151811061188d5761188d6137ea565b60200260200101819052505b60010161179a565b50505092915050565b6118b5848484612016565b6001600160a01b0383163b15610fd2576118d184848484612773565b610fd2576040516368d2bf6b60e11b815260040160405180910390fd5b60408051606080820183526000808352602080840182905283850182905284519283018552818352820181905292810183905290915060005483106119335792915050565b50600082815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff1615801592820192909252906119935792915050565b61130683612434565b60606119a782611f3d565b611a0b5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610a0f565b60008281526012602052604081208054611a24906137b0565b80601f0160208091040260200160405190810160405280929190818152602001828054611a50906137b0565b8015611a9d5780601f10611a7257610100808354040283529160200191611a9d565b820191906000526020600020905b815481529060010190602001808311611a8057829003601f168201915b50505050509050600081511115611ab45792915050565b6000611abf8461285e565b5090506000611acd85612945565b9050611ad882610d7e565b15611b075780604051602001611aee9190613aa1565b6040516020818303038152906040529350505050919050565b80611b1186612ac3565b604051602001611aee929190613ac6565b6060611b2c611d00565b611b695760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610a0f565b6000611b7485610c4a565b9050611b818185856113df565b9150611b9c8160405180602001604052806000815250612bc3565b611ba68183612bdb565b847f6df1d8db2a036436ffe0b2d1833f2c5f1e624818dfce2578c0faa4b83ef9998d83604051611bd69190613123565b60405180910390a2509392505050565b60008115611c6757600080611bfd84860186613af5565b915091508151600014158015611c1257508015155b15611c6457611c6488601054611c289190613a22565b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612bc392505050565b50505b611c748686868686612c65565b9695505050505050565b8251604080518083016020019091528181529060005b81811015611cea576000858583604051602001611cb393929190613b39565b60408051601f19818403018152919052805160209182012088840182015118858401820152611ce3915082613a22565b9050611c94565b50509392505050565b6008805461156f906137b0565b6000611d146009546001600160a01b031690565b6001600160a01b0316336001600160a01b031614905090565b611d3682611f3d565b611d825760405162461bcd60e51b815260206004820152601d60248201527f5365742055524920666f72206e6f6e6578697374656e7420746f6b656e0000006044820152606401610a0f565b6000828152601260205260409020610c0982826138ba565b6000546001600160a01b038416611dc357604051622e076360e81b815260040160405180910390fd5b82600003611de45760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038416600081815260056020908152604080832080546fffffffffffffffffffffffffffffffff1981166001600160401b038083168b0181169182176801000000000000000067ffffffffffffffff1990941690921783900481168b01811690920217909155858452600490925290912080546001600160e01b0319168317600160a01b42909316929092029190911790558190818501903b15611efa575b60405182906001600160a01b03881690600090600080516020613c90833981519152908290a4611ec36000878480600101955087612773565b611ee0576040516368d2bf6b60e11b815260040160405180910390fd5b808210611e8a578260005414611ef557600080fd5b611f2d565b5b6040516001830192906001600160a01b03881690600090600080516020613c90833981519152908290a4808210611efb575b506000908155610fd29085838684565b6000805482108015610aac575050600090815260046020526040902054600160e01b900460ff161590565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a35050565b600061202182612434565b9050836001600160a01b031681600001516001600160a01b0316146120585760405162a1148160e81b815260040160405180910390fd5b6000336001600160a01b038616148061207657506120768533610997565b8061209157503361208684610b44565b6001600160a01b0316145b9050806120b157604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b0384166120d857604051633a954ecd60e21b815260040160405180910390fd5b6120e460008487611f68565b6001600160a01b038581166000908152600560209081526040808320805467ffffffffffffffff198082166001600160401b0392831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600490945282852080546001600160e01b031916909417600160a01b429092169190910217835587018084529220805491939091166121b85760005482146121b857805460208601516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b0316600080516020613c9083398151915260405160405180910390a45050505050565b60006121fc83612434565b80519091508215612262576000336001600160a01b038316148061222557506122258233610997565b8061224057503361223586610b44565b6001600160a01b0316145b90508061226057604051632ce44b5f60e11b815260040160405180910390fd5b505b61226e60008583611f68565b6001600160a01b0380821660008181526005602090815260408083208054600160801b6000196001600160401b0380841691909101811667ffffffffffffffff198416811783900482166001908101831690930277ffffffffffffffff0000000000000000ffffffffffffffff19909416179290921783558b86526004909452828520805460ff60e01b1942909316600160a01b026001600160e01b03199091169097179690961716600160e01b17855591890180845292208054919490911661236c57600054821461236c57805460208701516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038716171781555b5050604051869250600091506001600160a01b03841690600080516020613c90833981519152908390a4505060018054810190555050565b6127108111156123d257604051630a4930ad60e31b8152612710600482015260248101829052604401610a0f565b600a80546001600160a01b0384166001600160b01b03199091168117600160a01b61ffff851602179091556040518281527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb9060200160405180910390a25050565b60408051606081018252600080825260208201819052918101919091528160005481101561253557600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff161515918101829052906125335780516001600160a01b0316156124ca579392505050565b5060001901600081815260046020908152604091829020825160608101845290546001600160a01b038116808352600160a01b82046001600160401b031693830193909352600160e01b900460ff161515928101929092521561252e579392505050565b6124ca565b505b604051636f96cda160e11b815260040160405180910390fd5b60008061255b8486613a22565b600c8054600181019091557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7018190556000818152600d602052604090209092508291506125a984826138ba565b50935093915050565b6000600880546125c1906137b0565b80601f01602080910402602001604051908101604052809291908181526020018280546125ed906137b0565b801561263a5780601f1061260f5761010080835404028352916020019161263a565b820191906000526020600020905b81548152906001019060200180831161261d57829003601f168201915b50505050509050816008908161265091906138ba565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a168183604051612682929190613b4b565b60405180910390a15050565b6127108111156126bc57604051630a4930ad60e31b8152612710600482015260248101829052604401610a0f565b6040805180820182526001600160a01b0384811680835260208084018681526000898152600b8352869020945185546001600160a01b031916941693909317845591516001909301929092559151838152909185917f7365cf4122f072a3365c20d54eff9b38d73c096c28e1892ec8f5b0e403a0f12d910160405180910390a3505050565b600054610aac8383612d5c565b60606113068383604051806060016040528060278152602001613c6960279139612d76565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a02906127a8903390899088908890600401613b79565b6020604051808303816000875af19250505080156127e3575060408051601f3d908101601f191682019092526127e091810190613bac565b60015b612841573d808015612811576040519150601f19603f3d011682016040523d82523d6000602084013e612816565b606091505b508051600003612839576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b600080600061286c600c5490565b90506000600c8054806020026020016040519081016040528092919081815260200182805480156128bc57602002820191906000526020600020905b8154815260200190600101908083116128a8575b5050505050905060005b82811015612928578181815181106128e0576128e06137ea565b602002602001015186101561291657809350818181518110612904576129046137ea565b60200260200101519450505050915091565b612921600182613a22565b90506128c6565b506040516309797f6960e21b815260048101869052602401610a0f565b60606000612952600c5490565b90506000600c8054806020026020016040519081016040528092919081815260200182805480156129a257602002820191906000526020600020905b81548152602001906001019080831161298e575b5050505050905060005b82811015612aa6578181815181106129c6576129c66137ea565b6020026020010151851015612a9457600d60008383815181106129eb576129eb6137ea565b602002602001015181526020019081526020016000208054612a0c906137b0565b80601f0160208091040260200160405190810160405280929190818152602001828054612a38906137b0565b8015612a855780601f10612a5a57610100808354040283529160200191612a85565b820191906000526020600020905b815481529060010190602001808311612a6857829003601f168201915b50505050509350505050919050565b612a9f600182613a22565b90506129ac565b506040516309797f6960e21b815260048101859052602401610a0f565b606081600003612aea5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612b145780612afe81613bc9565b9150612b0d9050600a83613843565b9150612aee565b6000816001600160401b03811115612b2e57612b2e612f90565b6040519080825280601f01601f191660200182016040528015612b58576020820181803683370190505b5090505b8415610d7657612b6d600183613857565b9150612b7a600a86613be2565b612b85906030613a22565b60f81b818381518110612b9a57612b9a6137ea565b60200101906001600160f81b031916908160001a905350612bbc600a86613843565b9450612b5c565b6000828152601160205260409020610c0982826138ba565b6000828152600e602052604090205460ff1615612c0e57604051635d079ac960e11b815260048101839052602401610a0f565b6000828152600d60205260409020612c2682826138ba565b507f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c612c5183612de4565b604080519182526020820185905201612682565b6000612c6f611d00565b612c8c5760405163f409ec7360e01b815260040160405180910390fd5b85600003612cad57604051638fd36a9b60e01b815260040160405180910390fd5b60006010549050612cf5818888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061254e92505050565b6010919091559150807f2a0365091ef1a40953c670dce28177e37520648a6fdc91506bffac0ab045570d6001612d2b8a84613a22565b612d359190613857565b88888888604051612d4a959493929190613c1f565b60405180910390a25095945050505050565b61047b828260405180602001604052806000815250611d9a565b6060600080856001600160a01b031685604051612d939190613c4c565b600060405180830381855af49150503d8060008114612dce576040519150601f19603f3d011682016040523d82523d6000602084013e612dd3565b606091505b5091509150611c7486838387612ed6565b600080612df0600c5490565b90506000600c805480602002602001604051908101604052809291908181526020018280548015612e4057602002820191906000526020600020905b815481526020019060010190808311612e2c575b5050505050905060005b82811015612eb957818181518110612e6457612e646137ea565b60200260200101518503612eb1578015612ea65781612e84600183613857565b81518110612e9457612e946137ea565b60200260200101519350505050919050565b506000949350505050565b600101612e4a565b50604051630793127760e11b815260048101859052602401610a0f565b60608315612f45578251600003612f3e576001600160a01b0385163b612f3e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a0f565b5081610d76565b610d768383815115612f5a5781518083602001fd5b8060405162461bcd60e51b8152600401610a0f9190613123565b80356001600160a01b0381168114612f8b57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612fce57612fce612f90565b604052919050565b60006001600160401b03821115612fef57612fef612f90565b50601f01601f191660200190565b600082601f83011261300e57600080fd5b813561302161301c82612fd6565b612fa6565b81815284602083860101111561303657600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561306657600080fd5b61306f83612f74565b915060208301356001600160401b0381111561308a57600080fd5b61309685828601612ffd565b9150509250929050565b6001600160e01b031981168114610c3c57600080fd5b6000602082840312156130c857600080fd5b8135611306816130a0565b60005b838110156130ee5781810151838201526020016130d6565b50506000910152565b6000815180845261310f8160208601602086016130d3565b601f01601f19169290920160200192915050565b60208152600061130660208301846130f7565b60006020828403121561314857600080fd5b5035919050565b6000806040838503121561316257600080fd5b61316b83612f74565b946020939093013593505050565b60006020828403121561318b57600080fd5b61130682612f74565b6000806000606084860312156131a957600080fd5b6131b284612f74565b92506131c060208501612f74565b9150604084013590509250925092565b600080604083850312156131e357600080fd5b50508035926020909101359150565b6000602080838503121561320557600080fd5b82356001600160401b038082111561321c57600080fd5b818501915085601f83011261323057600080fd5b81358181111561324257613242612f90565b8060051b9150613253848301612fa6565b818152918301840191848101908884111561326d57600080fd5b938501935b8385101561328b57843582529385019390850190613272565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611111576132ee83855180516001600160a01b031682526020808201516001600160401b0316908301526040908101511515910152565b92840192606092909201916001016132b3565b6000806000806080858703121561331757600080fd5b61332085612f74565b93506020850135925060408501356001600160401b038082111561334357600080fd5b61334f88838901612ffd565b9350606087013591508082111561336557600080fd5b5061337287828801612ffd565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b818110156111115783518352928401929184019160010161339a565b6000602082840312156133c857600080fd5b81356001600160401b038111156133de57600080fd5b610d7684828501612ffd565b6000806000606084860312156133ff57600080fd5b61340884612f74565b95602085013595506040909401359392505050565b60008060006060848603121561343257600080fd5b833592506131c060208501612f74565b6000806040838503121561345557600080fd5b8235915060208301356001600160401b0381111561308a57600080fd5b60008083601f84011261348457600080fd5b5081356001600160401b0381111561349b57600080fd5b6020830191508360208285010111156134b357600080fd5b9250929050565b6000806000604084860312156134cf57600080fd5b8335925060208401356001600160401b038111156134ec57600080fd5b6134f886828701613472565b9497909650939450505050565b6000806040838503121561351857600080fd5b61352183612f74565b91506020830135801515811461353657600080fd5b809150509250929050565b6000806020838503121561355457600080fd5b82356001600160401b038082111561356b57600080fd5b818501915085601f83011261357f57600080fd5b81358181111561358e57600080fd5b8660208260051b85010111156135a357600080fd5b60209290920196919550909350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561360c57603f198886030184526135fa8583516130f7565b945092850192908501906001016135de565b5092979650505050505050565b6000806000806080858703121561362f57600080fd5b61363885612f74565b935061364660208601612f74565b92506040850135915060608501356001600160401b0381111561366857600080fd5b61337287828801612ffd565b81516001600160a01b031681526020808301516001600160401b03169082015260408083015115159082015260608101610aac565b6000806000806000606086880312156136c157600080fd5b8535945060208601356001600160401b03808211156136df57600080fd5b6136eb89838a01613472565b9096509450604088013591508082111561370457600080fd5b5061371188828901613472565b969995985093965092949392505050565b60008060006040848603121561373757600080fd5b83356001600160401b038082111561374e57600080fd5b61375a87838801612ffd565b9450602086013591508082111561377057600080fd5b506134f886828701613472565b6000806040838503121561379057600080fd5b61379983612f74565b91506137a760208401612f74565b90509250929050565b600181811c908216806137c457607f821691505b6020821081036137e457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610aac57610aac613800565b634e487b7160e01b600052601260045260246000fd5b6000826138525761385261382d565b500490565b81810381811115610aac57610aac613800565b601f821115610c09576000816000526020600020601f850160051c810160208610156138935750805b601f850160051c820191505b818110156138b25782815560010161389f565b505050505050565b81516001600160401b038111156138d3576138d3612f90565b6138e7816138e184546137b0565b8461386a565b602080601f83116001811461391c57600084156139045750858301515b600019600386901b1c1916600185901b1785556138b2565b600085815260208120601f198616915b8281101561394b5788860151825594840194600190910190840161392c565b50858210156139695787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000806040838503121561398c57600080fd5b82516001600160401b038111156139a257600080fd5b8301601f810185136139b357600080fd5b80516139c161301c82612fd6565b8181528660208385010111156139d657600080fd5b6139e78260208301602086016130d3565b60209590950151949694955050505050565b60008551613a0b818460208a016130d3565b820184868237909301918252506020019392505050565b80820180821115610aac57610aac613800565b6000808335601e19843603018112613a4c57600080fd5b8301803591506001600160401b03821115613a6657600080fd5b6020019150368190038213156134b357600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251613ab38184602087016130d3565b600360fc1b920191825250600101919050565b60008351613ad88184602088016130d3565b835190830190613aec8183602088016130d3565b01949350505050565b60008060408385031215613b0857600080fd5b82356001600160401b03811115613b1e57600080fd5b613b2a85828601612ffd565b95602094909401359450505050565b82848237909101908152602001919050565b604081526000613b5e60408301856130f7565b8281036020840152613b7081856130f7565b95945050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611c74908301846130f7565b600060208284031215613bbe57600080fd5b8151611306816130a0565b600060018201613bdb57613bdb613800565b5060010190565b600082613bf157613bf161382d565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b858152606060208201526000613c39606083018688613bf6565b828103604084015261328b818587613bf6565b60008251613c5e8184602087016130d3565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d65b8fc2e9718a1516cefb12e3208ae08411d5a3700151ee692ffce1c5c51ae264736f6c63430008160033