[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "ApprovalCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "ApprovalQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "BalanceQueryForZeroAddress", "type": "error" }, { "inputs": [], "name": "CannotIncreaseMaxMintableSupply", "type": "error" }, { "inputs": [], "name": "CosignerNotSet", "type": "error" }, { "inputs": [], "name": "CreatorTokenBase__InvalidTransferValidatorContract", "type": "error" }, { "inputs": [], "name": "GlobalWalletLimitOverflow", "type": "error" }, { "inputs": [], "name": "InitialOwnerCannotBeZero", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InsufficientStageTimeGap", "type": "error" }, { "inputs": [], "name": "InvalidCosignSignature", "type": "error" }, { "inputs": [], "name": "InvalidProof", "type": "error" }, { "inputs": [], "name": "InvalidQueryRange", "type": "error" }, { "inputs": [], "name": "InvalidStage", "type": "error" }, { "inputs": [], "name": "InvalidStageArgsLength", "type": "error" }, { "inputs": [], "name": "InvalidStartAndEndTimestamp", "type": "error" }, { "inputs": [], "name": "MintERC2309QuantityExceedsLimit", "type": "error" }, { "inputs": [], "name": "MintToZeroAddress", "type": "error" }, { "inputs": [], "name": "MintZeroQuantity", "type": "error" }, { "inputs": [], "name": "Mintable", "type": "error" }, { "inputs": [], "name": "NewOwnerIsZeroAddress", "type": "error" }, { "inputs": [], "name": "NewSupplyLessThanTotalSupply", "type": "error" }, { "inputs": [], "name": "NoHandoverRequest", "type": "error" }, { "inputs": [], "name": "NoSupplyLeft", "type": "error" }, { "inputs": [], "name": "NotAuthorized", "type": "error" }, { "inputs": [], "name": "NotCompatibleWithSpotMints", "type": "error" }, { "inputs": [], "name": "NotEnoughValue", "type": "error" }, { "inputs": [], "name": "NotMintable", "type": "error" }, { "inputs": [], "name": "NotSupported", "type": "error" }, { "inputs": [], "name": "NotTransferable", "type": "error" }, { "inputs": [], "name": "OwnerQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "OwnershipNotInitializedForExtraData", "type": "error" }, { "inputs": [], "name": "Reentrancy", "type": "error" }, { "inputs": [], "name": "RoyaltyOverflow", "type": "error" }, { "inputs": [], "name": "RoyaltyReceiverIsZeroAddress", "type": "error" }, { "inputs": [], "name": "SequentialMintExceedsLimit", "type": "error" }, { "inputs": [], "name": "SequentialUpToTooSmall", "type": "error" }, { "inputs": [], "name": "ShouldNotMintToBurnAddress", "type": "error" }, { "inputs": [], "name": "SpotMintTokenIdTooSmall", "type": "error" }, { "inputs": [], "name": "StageSupplyExceeded", "type": "error" }, { "inputs": [], "name": "TimestampExpired", "type": "error" }, { "inputs": [], "name": "TokenAlreadyExists", "type": "error" }, { "inputs": [], "name": "TransferCallerNotOwnerNorApproved", "type": "error" }, { "inputs": [], "name": "TransferFailed", "type": "error" }, { "inputs": [], "name": "TransferFromIncorrectOwner", "type": "error" }, { "inputs": [], "name": "TransferToNonERC721ReceiverImplementer", "type": "error" }, { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, { "inputs": [], "name": "URIQueryForNonexistentToken", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "inputs": [], "name": "WalletGlobalLimitExceeded", "type": "error" }, { "inputs": [], "name": "WalletStageLimitExceeded", "type": "error" }, { "inputs": [], "name": "WithdrawFailed", "type": "error" }, { "inputs": [], "name": "WrongMintCurrency", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "minter", "type": "address" } ], "name": "AuthorizedMinterAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "minter", "type": "address" } ], "name": "AuthorizedMinterRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "autoApproved", "type": "bool" } ], "name": "AutomaticApprovalOfTransferValidatorSet", "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": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "DefaultRoyaltySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "OwnershipHandoverRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "oldOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "activeStage", "type": "uint256" } ], "name": "SetActiveStage", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "baseURI", "type": "string" } ], "name": "SetBaseURI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "uri", "type": "string" } ], "name": "SetContractURI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "cosigner", "type": "address" } ], "name": "SetCosigner", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "SetDefaultRoyalty", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "globalWalletLimit", "type": "uint256" } ], "name": "SetGlobalWalletLimit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "maxMintableSupply", "type": "uint256" } ], "name": "SetMaxMintableSupply", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "mintCurrency", "type": "address" } ], "name": "SetMintCurrency", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "mintable", "type": "bool" } ], "name": "SetMintable", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "timestampExpirySeconds", "type": "uint256" } ], "name": "SetTimestampExpirySeconds", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "suffix", "type": "string" } ], "name": "SetTokenURISuffix", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "TokenRoyaltySet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldValidator", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newValidator", "type": "address" } ], "name": "TransferValidatorUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "stage", "type": "uint256" }, { "indexed": false, "internalType": "uint80", "name": "price", "type": "uint80" }, { "indexed": false, "internalType": "uint80", "name": "mintFee", "type": "uint80" }, { "indexed": false, "internalType": "uint32", "name": "walletLimit", "type": "uint32" }, { "indexed": false, "internalType": "bytes32", "name": "merkleRoot", "type": "bytes32" }, { "indexed": false, "internalType": "uint24", "name": "maxStageSupply", "type": "uint24" }, { "indexed": false, "internalType": "uint256", "name": "startTimeUnixSeconds", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "endTimeUnixSeconds", "type": "uint256" } ], "name": "UpdateStage", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "mintCurrency", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "WithdrawERC20", "type": "event" }, { "inputs": [], "name": "DEFAULT_TRANSFER_VALIDATOR", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" } ], "name": "__ERC721ACQueryableInitializable_init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "addAuthorizedMinter", "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": "minter", "type": "address" }, { "internalType": "uint32", "name": "qty", "type": "uint32" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }, { "internalType": "uint256", "name": "cosignNonce", "type": "uint256" } ], "name": "assertValidCosign", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "qty", "type": "uint32" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint32", "name": "limit", "type": "uint32" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "authorizedMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "autoApproveTransfersFromValidator", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cancelOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "completeOwnershipHandover", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "contractNameAndVersion", "outputs": [ { "internalType": "string", "name": "", "type": "string" }, { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721AUpgradeable.TokenOwnership", "name": "ownership", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" } ], "name": "explicitOwnershipsOf", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "uint64", "name": "startTimestamp", "type": "uint64" }, { "internalType": "bool", "name": "burned", "type": "bool" }, { "internalType": "uint24", "name": "extraData", "type": "uint24" } ], "internalType": "struct IERC721AUpgradeable.TokenOwnership[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "getActiveStageFromTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" }, { "internalType": "uint32", "name": "qty", "type": "uint32" }, { "internalType": "bool", "name": "waiveMintFee", "type": "bool" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "uint256", "name": "cosignNonce", "type": "uint256" } ], "name": "getCosignDigest", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "getCosignNonce", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCosigner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getGlobalWalletLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMaxMintableSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMintCurrency", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMintable", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getNumberStages", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getStageInfo", "outputs": [ { "components": [ { "internalType": "uint80", "name": "price", "type": "uint80" }, { "internalType": "uint80", "name": "mintFee", "type": "uint80" }, { "internalType": "uint32", "name": "walletLimit", "type": "uint32" }, { "internalType": "bytes32", "name": "merkleRoot", "type": "bytes32" }, { "internalType": "uint24", "name": "maxStageSupply", "type": "uint24" }, { "internalType": "uint256", "name": "startTimeUnixSeconds", "type": "uint256" }, { "internalType": "uint256", "name": "endTimeUnixSeconds", "type": "uint256" } ], "internalType": "struct MintStageInfo", "name": "", "type": "tuple" }, { "internalType": "uint32", "name": "", "type": "uint32" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTimestampExpirySeconds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTransferValidationFunction", "outputs": [ { "internalType": "bytes4", "name": "functionSignature", "type": "bytes4" }, { "internalType": "bool", "name": "isViewFunction", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getTransferValidator", "outputs": [ { "internalType": "address", "name": "validator", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "address", "name": "initialOwner", "type": "address" } ], "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": "isApproved", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "isAuthorizedMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "qty", "type": "uint32" }, { "internalType": "uint32", "name": "limit", "type": "uint32" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "bytes", "name": "signature", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "result", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "qty", "type": "uint32" }, { "internalType": "address", "name": "to", "type": "address" } ], "name": "ownerMint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pendingOwner", "type": "address" } ], "name": "ownershipHandoverExpiresAt", "outputs": [ { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "removeAuthorizedMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "requestOwnershipHandover", "outputs": [], "stateMutability": "payable", "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": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "autoApprove", "type": "bool" } ], "name": "setAutomaticApprovalOfTransfersFromValidator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "cosigner", "type": "address" } ], "name": "setCosigner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "globalWalletLimit", "type": "uint256" } ], "name": "setGlobalWalletLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "maxMintableSupply", "type": "uint256" } ], "name": "setMaxMintableSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "mintable", "type": "bool" } ], "name": "setMintable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint80", "name": "price", "type": "uint80" }, { "internalType": "uint80", "name": "mintFee", "type": "uint80" }, { "internalType": "uint32", "name": "walletLimit", "type": "uint32" }, { "internalType": "bytes32", "name": "merkleRoot", "type": "bytes32" }, { "internalType": "uint24", "name": "maxStageSupply", "type": "uint24" }, { "internalType": "uint256", "name": "startTimeUnixSeconds", "type": "uint256" }, { "internalType": "uint256", "name": "endTimeUnixSeconds", "type": "uint256" } ], "internalType": "struct MintStageInfo[]", "name": "newStages", "type": "tuple[]" } ], "name": "setStages", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "timestampExpirySeconds", "type": "uint256" } ], "name": "setTimestampExpirySeconds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "suffix", "type": "string" } ], "name": "setTokenURISuffix", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "transferValidator_", "type": "address" } ], "name": "setTransferValidator", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "maxMintableSupply", "type": "uint256" }, { "internalType": "uint256", "name": "globalWalletLimit", "type": "uint256" }, { "internalType": "address", "name": "mintCurrency", "type": "address" }, { "internalType": "address", "name": "fundReceiver", "type": "address" }, { "components": [ { "internalType": "uint80", "name": "price", "type": "uint80" }, { "internalType": "uint80", "name": "mintFee", "type": "uint80" }, { "internalType": "uint32", "name": "walletLimit", "type": "uint32" }, { "internalType": "bytes32", "name": "merkleRoot", "type": "bytes32" }, { "internalType": "uint24", "name": "maxStageSupply", "type": "uint24" }, { "internalType": "uint256", "name": "startTimeUnixSeconds", "type": "uint256" }, { "internalType": "uint256", "name": "endTimeUnixSeconds", "type": "uint256" } ], "internalType": "struct MintStageInfo[]", "name": "initialStages", "type": "tuple[]" }, { "internalType": "address", "name": "royaltyReceiver", "type": "address" }, { "internalType": "uint96", "name": "royaltyFeeNumerator", "type": "uint96" } ], "name": "setup", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "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": [ { "internalType": "address", "name": "a", "type": "address" } ], "name": "totalMintedByAddress", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "payable", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6080604090808252346200017f575f905f81527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac8373721c0078c2328597ca70f5451fff5a7b38d4e94792836020820152a1803b6200011d575b50805460ff8160b81c16620000c95760ff808260b01c161062000086575b82516155399081620001848239f35b60ff60b01b191660ff60b01b179055805160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890602090a15f8062000077565b825162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b803b156200017f575f8091604485518094819363fb2de5d760e01b83523060048401526102d160248401525af115620000595790506001600160401b0381116200016b5781525f8062000059565b634e487b7160e01b5f52604160045260245ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8063014635461461044f57806301ffc9a71461044a578063020451381461044557806304634d8d1461044057806306fdde031461043b578063077f224a14610436578063081812fc14610431578063095ea7b31461042c578063098144d4146104275780630d705df61461042257806316dc705c1461041d57806318160ddd1461041857806323b872dd14610413578063256929621461040e578063285d70d4146104095780632a55205a146104045780632ed6d5e8146103ff57806333bbbf06146103fa578063359f7183146103f5578063372992e4146103f05780633ccfd60b146103eb578063424aa884146103e657806342842e0e146103e1578063475ae039146103dc5780634ae0402f146103d75780634b1c53b4146103d257806354d1f13d146103cd57806355f804b3146103c85780635bbb2177146103c35780635f710f5c146103be5780636221d13c146103b95780636352211e146103b457806370a08231146103af57806370da24ee146103aa578063715018a6146103a557806372bbedb8146103a0578063842392c21461039b5780638462151c146103965780638da5cb5b146103915780638febc54b1461038c578063938e3d7b1461038757806395d89b411461038257806397cf84fc1461037357806399a2557a1461037d5780639e05d24014610378578063a06c492f14610373578063a22cb4651461036e578063a3759f6014610369578063a9852bfb14610364578063a9fc664e1461035f578063aac5ab1f1461035a578063ac0f3d8614610355578063b38c9f4c14610350578063b88d4fde1461034b578063b971b4c414610346578063c23dc68f14610341578063c3db27c11461033c578063c87b56dd14610337578063e8a3d48514610332578063e985e9c51461032d578063efdaa2ec14610328578063f04e283e14610323578063f2fde38b1461031e578063f698bceb14610319578063f73134d014610314578063f8d096961461030f578063fee81cf41461030a5763ff1b4ba914610305575f80fd5b6132d9565b6132a7565b61323f565b6131ec565b6131ca565b61318f565b613142565b613125565b6130f9565b613029565b612f5b565b612ecf565b612e6a565b6129ed565b6129a3565b61241b565b6122fe565b612265565b61217b565b612089565b611fb9565b611e80565b611c05565b611ded565b611c5c565b611b40565b611a08565b6119a4565b611852565b6116c6565b61164e565b611630565b6115e7565b6115ca565b61159f565b611570565b61154c565b6114e5565b61146c565b611271565b6111fe565b6111e1565b6111a5565b611141565b61111f565b6110f9565b611020565b610fb8565b610f76565b610f00565b610e05565b610d7c565b610d1e565b610cc6565b610cb2565b610c30565b610bc5565b610b9e565b610b73565b610ab1565b610a42565b6108c8565b61079b565b610696565b6105ed565b6104a2565b610462565b5f91031261045e57565b5f80fd5b3461045e575f36600319011261045e57602060405173721c0078c2328597ca70f5451fff5a7b38d4e9478152f35b6001600160e01b031981160361045e57565b3461045e57602036600319011261045e576104f76004356104c281610490565b8060e01c6301ffc9a7632a55205a821491141790811561057a575b81156104fb575b5060405190151581529081906020820190565b0390f35b6001600160e01b031916632b435fdb60e21b811491508115610569575b8115610526575b505f6104e4565b6301ffc9a760e01b811491508115610558575b8115610547575b505f61051f565b635b5e139f60e01b1490505f610540565b6380ac58cd60e01b81149150610539565b63503e914d60e11b81149150610518565b6104dd565b600435906001600160a01b038216820361045e57565b604435906001600160a01b038216820361045e57565b602435906001600160a01b038216820361045e57565b606435906001600160a01b038216820361045e57565b60a435906001600160a01b038216820361045e57565b3461045e57602036600319011261045e576001600160a01b0361060e61057f565b610616614322565b807f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e0055167faea1573caf7b4fdd079b947d86c1be6c725642c47582f8f9bd2c7d2a30bf0bd95f80a2005b602435906bffffffffffffffffffffffff8216820361045e57565b60c435906bffffffffffffffffffffffff8216820361045e57565b3461045e57604036600319011261045e576106af61057f565b6bffffffffffffffffffffffff6106c4610660565b6106cc614322565b16906127108211610734578060601b908115610727576001600160a01b03602091847f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef941768aa4ec00224afccfdb7556040519485521692a2005b63b4457eaa5f526004601cfd5b63350a88b35f526004601cfd5b5f5b8381106107525750505f910152565b8181015183820152602001610743565b9060209161077b81518092818552858086019101610741565b601f01601f1916010190565b906020610798928181520190610762565b90565b3461045e575f36600319011261045e576040515f7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c428054906107dc82613463565b8085529160209160019182811690811561086d5750600114610815575b6104f78661080981880382611906565b60405191829182610787565b5f90815293507f933ecf8acb7824b680a8d16f3ff3db8864228d986aa4c2ebab1eeb2703b4beb35b83851061085a57505050508101602001610809826104f75f6107f9565b805486860184015293820193810161083d565b90508695506104f79693506020925061080994915060ff191682840152151560051b82010192935f6107f9565b9181601f8401121561045e5782359167ffffffffffffffff831161045e576020838186019501011161045e57565b3461045e57606036600319011261045e5767ffffffffffffffff60043581811161045e576108fa90369060040161089a565b60249291923591821161045e5761091861099492369060040161089a565b90610921610595565b925f549561094660ff8860b81c161580988199610a30575b8115610a0d575b5061355c565b8661098b7601000000000000000000000000000000000000000000007fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff5f5416175f55565b6109de576135ce565b61099a57005b6109aa60ff60b81b195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989080602081015b0390a1005b610a087701000000000000000000000000000000000000000000000060ff60b81b195f5416175f55565b6135ce565b303b15915081610a1f575b505f610940565b60b01c60ff1660011490505f610a18565b9050600160ff8260b01c161090610939565b3461045e57602036600319011261045e57600435610a5f8161433e565b15610aa2575f527f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4660205260206001600160a01b0360405f205416604051908152f35b6333d1c03960e21b5f5260045ffd5b604036600319011261045e57610ac561057f565b602435906001600160a01b0380610adb84614455565b1690813303610b56575b835f527f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4660205260405f209216918273ffffffffffffffffffffffffffffffffffffffff198254161790557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b610b603383614068565b610ae5576367d9dca160e11b5f5260045ffd5b3461045e575f36600319011261045e576020610b8d61377b565b6001600160a01b0360405191168152f35b3461045e575f36600319011261045e576040805163657711f560e11b815260016020820152f35b3461045e57602036600319011261045e577f0f1c5629c9ab6d9b97fd6801d012d74903c2eab7df1abec22bb54f9a055476456020600435610c04614322565b807f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e0155604051908152a1005b3461045e575f36600319011261045e5760205f805160206154a4833981519152547f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c41549003604051908152f35b606090600319011261045e576001600160a01b0390600435828116810361045e5791602435908116810361045e579060443590565b610cc4610cbe36610c7d565b916137b8565b005b5f36600319011261045e5763389a75e1600c52335f526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a2005b60043590811515820361045e57565b3461045e57602036600319011261045e577fe717a2bfc51e250b028aaac5eb448e76f4df26b9609956782bff49097bb792cf6020610d5a610d0f565b610d62614322565b151560ff196002541660ff821617600255604051908152a1005b3461045e57604036600319011261045e576024356004355f5268aa4ec00224afccfdb7908160205260405f20548060601c928315610df3575b506104f7908360601b1892835f1904831184023d3d3e61271060405194859402049083602090939291936001600160a01b0360408201951681520152565b54606081901c935090506104f7610db5565b3461045e575f36600319011261045e57610e1d614322565b600a546001600160a01b03168015610eee57610e3d600b549130906145fe565b90808210610edc57610eb67fbe7426aee8a34d0263892b55ce65ce81d8f4c806eb4719e59015ea49feb92d2292610e735f600b55565b610e98610e8082856139b3565b93610e93600a546001600160a01b031690565b61462c565b600a546001600160a01b0316600c546001600160a01b031690614687565b600a54604080516001600160a01b039092168252602082019290925290819081016109d9565b604051631e9acf1760e31b8152600490fd5b60405163a47ca0b760e01b8152600490fd5b3461045e575f36600319011261045e5760206001600160a01b037f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e005416604051908152f35b9181601f8401121561045e5782359167ffffffffffffffff831161045e5760208085019460e0850201011161045e57565b3461045e57602036600319011261045e5760043567ffffffffffffffff811161045e57610faa610cc4913690600401610f45565b90610fb3614322565b6148d3565b3461045e57602036600319011261045e57600435610fd4614322565b600354811161100e576020817f5307de8ad7d34d5ddfd5171435c143bdc645493980f453eb5d7cdb3e494a1b3592600455604051908152a1005b604051630590c51360e01b8152600490fd5b3461045e575f36600319011261045e57611038614322565b5f808080600b54730b98151bedee73f9ba5f2c7b72dea02d38ce49fc5af161105e6139c0565b50156110e75761106d5f600b55565b475f80808084611085600c546001600160a01b031690565b5af161108f6139c0565b50156110d5576109d96110c57f5b6b431d4476a211bb7d41c20d1aab9ae2321deee0d20be3d9fc9b1093fa6e3d92600b546139b3565b6040519081529081906020820190565b604051631d42c86760e21b8152600490fd5b6040516312171d8360e31b8152600490fd5b3461045e575f36600319011261045e5760206001600160a01b03600a5416604051908152f35b610cc461112b36610c7d565b9060405192611139846118ce565b5f8452613eda565b3461045e57602036600319011261045e576001600160a01b0361116261057f565b61116a614322565b16805f52600160205260405f2060ff1981541690557fc6711413797b8a562634e98c95d50e7619d39702ed5b82ce335dc93546c3a88c5f80a2005b3461045e575f36600319011261045e5760207f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e0154604051908152f35b3461045e575f36600319011261045e576020600354604051908152f35b5f36600319011261045e5763389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2005b602060031982011261045e576004359067ffffffffffffffff821161045e5761126d9160040161089a565b9091565b3461045e5761127f36611242565b611287614322565b67ffffffffffffffff81116113b6576112aa816112a5600554613463565b613a02565b5f91601f8211600114611316576112f882807f23c8c9488efebfd474e85a7956de6f39b17c7ab88502d42a623db2d8e382bbaa955f9161130b575b508160011b915f199060031b1c19161790565b6005555b6109d960405192839283613c61565b90508301355f6112e5565b60055f52601f1982167f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0905f5b81811061139e575093837f23c8c9488efebfd474e85a7956de6f39b17c7ab88502d42a623db2d8e382bbaa9510611385575b5050600182811b016005556112fc565b8201355f19600385901b60f8161c191690555f80611375565b83860135835560209586019560019093019201611343565b61188a565b9181601f8401121561045e5782359167ffffffffffffffff831161045e576020808501948460051b01011161045e57565b60209060206040818301928281528551809452019301915f5b828110611413575050505090565b9091929382608082611460600194895162ffffff606080926001600160a01b03815116855267ffffffffffffffff6020820151166020860152604081015115156040860152015116910152565b01950193929101611405565b3461045e57602036600319011261045e5760043567ffffffffffffffff811161045e5761149d9036906004016113bb565b906040519180835260051b6020818401016040525b808180156114d7576114ce90601f198091019385010135613fa3565b908401526114b2565b604051806104f787826113ec565b3461045e57602036600319011261045e576001600160a01b0361150661057f565b61150e614322565b16805f52600160205260405f20600160ff198254161790557fe6be4d6cc04eb0219337b22db08c688969a9ec8e34d9a0a2ba38a114e050f1ae5f80a2005b3461045e575f36600319011261045e57602060ff5f5460a81c166040519015158152f35b3461045e57602036600319011261045e5760206001600160a01b03611596600435614455565b16604051908152f35b3461045e57602036600319011261045e5760206115c26115bd61057f565b613c88565b604051908152f35b3461045e575f36600319011261045e576020600754604051908152f35b5f36600319011261045e576115fa614322565b638b78c6d8195f81547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3600160ff1b9055005b3461045e57602036600319011261045e5760206115c2600435613d2d565b3461045e57602036600319011261045e576001600160a01b0361166f61057f565b165f526001602052602060ff60405f2054166040519015158152f35b60209060206040818301928281528551809452019301915f5b8281106116b2575050505090565b8351855293810193928101926001016116a4565b3461045e57602036600319011261045e576116df61057f565b5f805160206154a48339815191525490606091606091811591821561170d575b604051806104f7868261168b565b909192505f60609361184d5761172283613c88565b948561173a575b505050506104f791505f80806116ff565b909192935084831115611844575b604091604051946001926005916001890160051b8801988960405261176b613f50565b905f9161178261177e6040830151151590565b1590565b611832575b505f989195916001885b6117b0575b505050505050505050506104f7925081525f808080611729565b15611814575b5f966117c1846150a4565b808b0151156117de575050875f935b0196888d8b52979397611791565b939093518061180c575b50848418861b156117fb575b88906117d0565b99880180871b8c018b9052996117f4565b93505f6117e8565b8083148015611829575b156117b65780611796565b50818a1461181e565b516001600160a01b031691505f611787565b93508193611748565b6143d7565b3461045e575f36600319011261045e576020638b78c6d819546001600160a01b0360405191168152f35b63ffffffff81160361045e57565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff8211176113b657604052565b67ffffffffffffffff81116113b657604052565b6020810190811067ffffffffffffffff8211176113b657604052565b6040810190811067ffffffffffffffff8211176113b657604052565b90601f8019910116810190811067ffffffffffffffff8211176113b657604052565b604051906119358261189e565b565b67ffffffffffffffff81116113b657601f01601f191660200190565b92919261195f82611937565b9161196d6040519384611906565b82948184528183011161045e578281602093845f960137010152565b9080601f8301121561045e5781602061079893359101611953565b3461045e5760a036600319011261045e576119bd61057f565b6024356119c98161187c565b6064359067ffffffffffffffff821161045e576020926119f06119fe933690600401611989565b906084359260443591613d8b565b6040519015158152f35b3461045e57611a1636611242565b611a1e614322565b67ffffffffffffffff81116113b657611a4181611a3c600d54613463565b613a6f565b5f91601f8211600114611aa057611a8e82807f5ca9f750836b0b7efdace104f07b5c9f0df0650c0fd24f5163e99044ae36ea52955f9161130b57508160011b915f199060031b1c19161790565b600d556109d960405192839283613c61565b600d5f52601f1982167fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5905f5b818110611b28575093837f5ca9f750836b0b7efdace104f07b5c9f0df0650c0fd24f5163e99044ae36ea529510611b0f575b5050600182811b01600d556112fc565b8201355f19600385901b60f8161c191690555f80611aff565b83860135835560209586019560019093019201611acd565b3461045e575f36600319011261045e576040515f7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c43805490611b8182613463565b8085529160209160019182811690811561086d5750600114611bad576104f78661080981880382611906565b5f90815293507f617167b76dcc8247761fd21f427ad8ec3be6b3be203aed34e3aac08b4d31817c5b838510611bf257505050508101602001610809826104f75f6107f9565b8054868601840152938201938101611bd5565b3461045e57602036600319011261045e576020611c46611c2361057f565b6001600160a01b03165f525f805160206154e483398151915260205260405f2090565b5467ffffffffffffffff6040519160401c168152f35b3461045e5760608060031936011261045e57611c7661057f565b60243591604435836060938286101561184d575f805160206154a48339815191525480841015611de5575b50611cab81613c88565b9183871015611ddd575b82611cc9575b604051806104f7888261168b565b90919293945085840383811115611dd5575b5060409260405195600193600592611cff6001820160051b8a019a8b604052613fa3565b905f91611d1261177e6040830151151590565b611dc3575b505f989195916001885b611d41575b505050505050505050506104f7925081525f80808080611cbb565b15611da5575b5f96611d52846150a4565b808b015115611d6f575050875f935b0196888d8b52979397611d21565b9390935180611d9d575b50848418861b15611d8c575b8890611d61565b99880180871b8c018b905299611d85565b93505f611d79565b8083148015611dba575b15611d475780611d26565b50818a14611daf565b516001600160a01b031691505f611d17565b92505f611cdb565b5f9250611cb5565b92505f611ca1565b3461045e57602036600319011261045e577f6787c7f9a80aa0f5ceddab2c54f1f5169c0b88e75dd5e19d5e858a64144c7dbc6020611e29610d0f565b611e31614322565b15155f547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff75ff0000000000000000000000000000000000000000008360a81b169116175f55604051908152a1005b3461045e57604036600319011261045e57611e9961057f565b6024359081151580920361045e5780611f046001600160a01b0392611eee336001600160a01b03165f527f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4760205260405f2090565b906001600160a01b03165f5260205260405f2090565b60ff1981541660ff851617905560405192835216907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b611fb56101009295949360c06101208401976001600160501b03808251168652602082015116602086015263ffffffff60408201511660408601526060810151606086015262ffffff608082015116608086015260a081015160a0860152015160c084015260e083019063ffffffff169052565b0152565b3461045e57602036600319011261045e576004355f60c0604051611fdc8161189e565b8281528260208201528260408201528260608201528260808201528260a0820152015260075481101561207757612041612037612021835f52600860205260405f2090565b336001600160a01b03165f5260205260405f2090565b5463ffffffff1690565b906104f761206a61206461205d845f52600960205260405f2090565b5493613cef565b50613e76565b9160405193849384611f41565b60405163e82a532960e01b8152600490fd5b3461045e5761209736611242565b61209f614322565b67ffffffffffffffff81116113b6576120c2816120bd600654613463565b613adc565b5f601f82116001146120ff5781906120ef935f926120f4575b50508160011b915f199060031b1c19161790565b600655005b013590505f806120db565b60065f52601f198216927ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f915f5b8581106121635750836001951061214a575b505050811b01600655005b01355f19600384901b60f8161c191690555f808061213f565b9092602060018192868601358155019401910161212d565b3461045e57602036600319011261045e5761219461057f565b61219c614322565b6001600160a01b0381161515813b158161225d575b5061224b57807fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac610cc4926121e461377b565b604080516001600160a01b03928316815292909116602083015290a160015f547fffffffffffffffffffffff00000000000000000000000000000000000000000074ffffffffffffffffffffffffffffffffffffffff008460081b16911617175f55614cbd565b6040516332483afb60e01b8152600490fd5b90505f6121b1565b3461045e57604036600319011261045e576004356122828161187c565b63ffffffff61228f6105ab565b91612298614322565b165f805160206154a4833981519152547f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c415490038181018091116122f957600354106122e757610cc491614d14565b60405163800113cb60e01b8152600490fd5b61399f565b3461045e5760e036600319011261045e5760243560043561231d610595565b906123266105c1565b9060843567ffffffffffffffff811161045e57612347903690600401610f45565b9190926123526105d7565b9561235b61067b565b95612364614322565b83821161100e576123906123b99261238b6123e296600160ff196002541617600255600355565b600455565b6001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19600a541617600a55565b6001600160a01b031673ffffffffffffffffffffffffffffffffffffffff19600c541617600c55565b6123ea614403565b8061240b575b50506001600160a01b03821661240257005b610cc4916133f1565b612414916148d3565b5f806123f0565b60c036600319011261045e57600480356124348161187c565b61243c6105ab565b604435916124498361187c565b67ffffffffffffffff60643581811161045e5761246990369087016113bb565b906084359560a43584811161045e576124859036908a0161089a565b919093335f52600160205260409360ff855f205416156129935760ff60025416156129835763ffffffff938489169a6124ed5f805160206154a4833981519152547f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4154900390565b8c81018091116122f9576003541061297357928b95926120649d95928a99989542918d5f9b6001600160a01b039d8e61254d7f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e00546001600160a01b031690565b1661290f575b505050505061256461256b91613d2d565b9e8f613cef565b97156128fb575f995b600a546001600160a01b0316998a161580988c8b839b6128d4575b5050506128c457848f918f8f90918f9260808e0162ffffff6125b4825162ffffff1690565b16612867575b508b54918261280a575b505050888c0193836125da865163ffffffff1690565b166127ba575b5050505050606088015190816126db575b5050505050505061263961263161262589878161267f9861268d9b98610cc49f9b61263e991561269f575b50505050614ee0565b6001600160501b031690565b600b546139b3565b600b55565b61266b61265786611eee865f52600860205260405f2090565b91612666835463ffffffff1690565b614efe565b63ffffffff1663ffffffff19825416179055565b5f52600960205260405f2090565b6126988382546139b3565b9055614d14565b6126d2936126c3612625926126be6126c895516001600160501b031690565b614ec5565b614ee0565b90309033906153b7565b815f808361261c565b855160608e901b6bffffffffffffffffffffffff19166020820190815260e086901b6001600160e01b03191660348301526127449461177e949093909261273f929061273481603881015b03601f198101835282611906565b519020933691614f16565b61535f565b6127ab571680151590888a8d84612775575b505050506127685780808080806125f1565b5163b4f3729b60e01b8152fd5b6127a19394506120376127989392611eee612666935f52600860205260405f2090565b63ffffffff1690565b115f888a8d612756565b5050516309bde33960e01b8152fd5b6127e89261266661203761279894611eee6127dd955f52600860205260405f2090565b935163ffffffff1690565b9116116127fa575f848f8e8e916125e0565b845163b4f3729b60e01b81528690fd5b9290935061283c91955061284594506001600160a01b03165f525f805160206154e483398151915260205260405f2090565b54891c166139b3565b11612857578d848c8f8f90805f6125c4565b845163751304ed60e11b81528690fd5b94506128a19350612899925061288961288f92965f52600960205260405f2090565b546139b3565b925162ffffff1690565b62ffffff1690565b106128b557848f918f8f90918f925f6125ba565b855162d0844960e21b81528790fd5b8551630717c22560e51b81528790fd5b516128f1935061262592916126c3916001600160501b0316614ec5565b34108e8c8b61258f565b60208801516001600160501b031699612574565b849d5061256b955093612959612960949392612564968d61294d336001600160a01b03165f525f805160206154e483398151915260205260405f2090565b54901c16943691611953565b9133613d8b565b9961296a81615327565b918d5f8e612553565b865163800113cb60e01b81528d90fd5b8451630952c8a960e11b81528b90fd5b845163ea8e4eb560e01b81528b90fd5b608036600319011261045e576129b761057f565b6129bf6105ab565b6064359167ffffffffffffffff831161045e576129e3610cc4933690600401611989565b9160443591613eda565b60a036600319011261045e5760048035612a068161187c565b60243591612a138361187c565b67ffffffffffffffff9160443583811161045e57612a3490369084016113bb565b926064359460843581811161045e57612a50903690840161089a565b91909268929eee149b4bd2126898308a5414612e5e57308a5560ff6002541615612e4e5763ffffffff9081881699612ab75f805160206154a4833981519152547f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4154900390565b8b81018091116122f95760035410612e3d5742905f966001600160a01b039889612b087f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e00546001600160a01b031690565b16612ddf575b505050612b1a90613d2d565b98612b276120648b613cef565b9515612dcb575f975b600a546001600160a01b03169788161595868d81612da5575b50612d94578c8c60808a019162ffffff612b66845162ffffff1690565b16612d5b575b5050508554908d82612d08575b50505060408701848c8c82612b92855163ffffffff1690565b16612cc3575b5050505060608701519081612c0c575b50505050505061263961263161262589878161267f98612bf49b98612c079e9d9b612bdb991561269f5750505050614ee0565b61266b61265733611eee865f52600860205260405f2090565b612bff8282546139b3565b905533614d14565b389055005b6040513360601b6bffffffffffffffffffffffff19166020820190815260e086901b6001600160e01b0319166034830152612c5b9461177e949093909261273f92906127348160388101612726565b612cb257168015159081612c88575b50612c79578080808080612ba8565b60405163b4f3729b60e01b8152fd5b9050612cab612798886126666120378c611eee33915f52600860205260405f2090565b115f612c6a565b6040516309bde33960e01b81528390fd5b6127dd61279891612666612037612ce795611eee33915f52600860205260405f2090565b911611612cf7575f848c8c612b98565b60405163b4f3729b60e01b81528590fd5b612d3d91612d33336001600160a01b03165f525f805160206154e483398151915260205260405f2090565b5460401c166139b3565b11612d4a575f808d612b79565b60405163751304ed60e11b81528590fd5b61288f61289991612889612d77945f52600960205260405f2090565b10612d84575f8c8e612b6c565b60405162d0844960e21b81528690fd5b604051630717c22560e51b81528690fd5b612dc39150612625906126c38d6126be8d516001600160501b031690565b34108d612b49565b60208601516001600160501b031697612b30565b612e2b929850612b1a9350612e239088612e16336001600160a01b03165f525f805160206154e483398151915260205260405f2090565b5460401c16923691611953565b888c33613d8b565b95612e3581615327565b905f80612b0e565b60405163800113cb60e01b81528490fd5b50604051630952c8a960e11b8152fd5b5063ab143c065f52601cfd5b3461045e57602036600319011261045e576080612e88600435613fa3565b612ecd604051809262ffffff606080926001600160a01b03815116855267ffffffffffffffff6020820151166020860152604081015115156040860152015116910152565bf35b3461045e575f36600319011261045e57612f4d604051612eee816118ea565b601581527f455243373231434d496e697469616c697a61626c65000000000000000000000060208201526104f7604051612f27816118ea565b60058152640312e302e360dc1b6020820152604051938493604085526040850190610762565b908382036020850152610762565b3461045e57602036600319011261045e57600435612f788161433e565b1561301757612f8561349b565b805115612ffe5760405160a0810160405260808101925f8452925b5f190192600a906030828206018553049283612fa0576104f79350612fe792612ff2612fed610809946080601f199586810192030181526040519687946020860190613fc5565b90613fc5565b613fdc565b03908101835282611906565b50506104f760405161300f816118ce565b5f8152610809565b604051630a14c4b560e41b8152600490fd5b3461045e575f36600319011261045e576040515f600d5461304981613463565b808452906020906001908181169081156130cf5750600114613076575b6104f78561080981870382611906565b600d5f90815293507fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb55b8385106130bc57505050508101602001610809826104f7613066565b80548686018401529382019381016130a0565b8695506104f79693506020925061080994915060ff191682840152151560051b8201019293613066565b3461045e57604036600319011261045e5760206119fe61311761057f565b61311f6105ab565b90614068565b3461045e575f36600319011261045e576020600454604051908152f35b602036600319011261045e5761315661057f565b61315e614322565b63389a75e1600c52805f526020600c209081544211613182575f610cc49255614b68565b636f5e88185f526004601cfd5b602036600319011261045e576131a361057f565b6131ab614322565b8060601b156131bd57610cc490614b68565b637448fbae5f526004601cfd5b3461045e575f36600319011261045e57602060ff600254166040519015158152f35b3461045e57604036600319011261045e5767ffffffffffffffff60043581811161045e5761321e903690600401611989565b60243591821161045e57613239610cc4923690600401611989565b906140e2565b3461045e57602036600319011261045e5760043561325b614322565b6003548111613295576020817fc7bbc2b288fc13314546ea4aa51f6bcf71b7ba4740beeb3d32e9acef57b6668a92600355604051908152a1005b60405163430b83b160e11b8152600490fd5b3461045e57602036600319011261045e576132c061057f565b63389a75e1600c525f52602080600c2054604051908152f35b3461045e5760a036600319011261045e576132f261057f565b6024356132fe8161187c565b6044359081151580920361045e577f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e0054916001600160a01b038316156133df576020936115c29360405192868401943060601b86526bffffffffffffffffffffffff19809460601b16603486015263ffffffff60e01b9060e01b16604885015260f81b604c84015260601b16604d820152606435606182015246608182015260843560a182015260a181526133b28161189e565b5190206020527b19457468657265756d205369676e6564204d6573736167653a0a33325f52603c60042090565b6040516353bd4fb360e11b8152600490fd5b906bffffffffffffffffffffffff90613408614322565b16906127108211610734578060601b908115610727576001600160a01b03602091847f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef941768aa4ec00224afccfdb7556040519485521692a2565b90600182811c92168015613491575b602083101461347d57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691613472565b604051905f82600554916134ae83613463565b8083529260209060019081811690811561353857506001146134d9575b505061193592500383611906565b91509260055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0935f925b82841061352057506119359450505081016020015f806134cb565b85548885018301529485019487945092810192613505565b9150506020925061193594915060ff191682840152151560051b8201015f806134cb565b1561356357565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608490fd5b93919290927fee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85f549360ff8560081c1694855f146136ef5750303b155b156136845761361f94159586613651576136f8565b61362557565b7fee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85f805461ff0019169055565b7fee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85f805461ffff19166101011790556136f8565b60405162461bcd60e51b815260206004820152603760248201527f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460448201527f20697320616c726561647920696e697469616c697a65640000000000000000006064820152608490fd5b60ff161561360a565b909291936001600160a01b03169384156137695761371e61323992613726953691611953565b923691611953565b638b78c6d819805461375c578190555f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3565b630dc149f05f526004601cfd5b604051633358897d60e21b8152600490fd5b5f54906001600160a01b038260081c169182156137955750565b60ff161561379f57565b73721c0078c2328597ca70f5451fff5a7b38d4e9479150565b91906137c382614455565b926001600160a01b0380911693848282160361399a575f8481527f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c466020526040902080546138206001600160a01b03881633908114908314171590565b613983575b6138308686896144ea565b61397a575b5061385d856001600160a01b03165f525f805160206154e483398151915260205260405f2090565b80545f1901905561388b836001600160a01b03165f525f805160206154e483398151915260205260405f2090565b805460010190556001600160a01b0383164260a01b17600160e11b176138c5855f525f805160206154c483398151915260205260405f2090565b55600160e11b811615613910575b5081168281857fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a41561390b57611935926145ac565b6143b9565b60018401613932815f525f805160206154c483398151915260205260405f2090565b541561393f575b506138d3565b5f805160206154a483398151915254811461393957613972905f525f805160206154c483398151915260205260405f2090565b555f80613939565b5f90555f613835565b61399061177e3389614068565b15613825576143aa565b61439c565b634e487b7160e01b5f52601160045260245ffd5b919082018092116122f957565b3d156139ea573d906139d182611937565b916139df6040519384611906565b82523d5f602084013e565b606090565b634e487b7160e01b5f525f60045260245ffd5b601f8111613a0e575050565b60055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0906020601f840160051c83019310613a65575b601f0160051c01905b818110613a5a575050565b5f8155600101613a4f565b9091508190613a46565b601f8111613a7b575050565b600d5f527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5906020601f840160051c83019310613ad2575b601f0160051c01905b818110613ac7575050565b5f8155600101613abc565b9091508190613ab3565b601f8111613ae8575050565b60065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f906020601f840160051c83019310613b3f575b601f0160051c01905b818110613b34575050565b5f8155600101613b29565b9091508190613b20565b601f8111613b55575050565b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c425f527f933ecf8acb7824b680a8d16f3ff3db8864228d986aa4c2ebab1eeb2703b4beb3906020601f840160051c83019310613bcb575b601f0160051c01905b818110613bc0575050565b5f8155600101613bb5565b9091508190613bac565b601f8111613be1575050565b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c435f527f617167b76dcc8247761fd21f427ad8ec3be6b3be203aed34e3aac08b4d31817c906020601f840160051c83019310613c57575b601f0160051c01905b818110613c4c575050565b5f8155600101613c41565b9091508190613c38565b90918060409360208452816020850152848401375f828201840152601f01601f1916010190565b6001600160a01b03811615613ccc57613cc767ffffffffffffffff916001600160a01b03165f525f805160206154e483398151915260205260405f2090565b541690565b6323d3ad8160e21b5f5260045ffd5b634e487b7160e01b5f52603260045260245ffd5b600754811015613d285760059060075f52027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801905f90565b613cdb565b600754905f5b828110613d4c5760405163e82a532960e01b8152600490fd5b6003613d5782613cef565b50015482101580613d75575b613d6f57600101613d33565b91505090565b506004613d8182613cef565b5001548210613d63565b90937f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e0054926001600160a01b0384169384156133df5785613e35613e3b9260405160208101913060601b83526bffffffffffffffffffffffff1990818a60601b16603484015263ffffffff60e01b8d60e01b166048840152600160f81b604c84015260601b16604d8201528560618201524660818201528660a182015260a181526133b28161189e565b86614ba9565b613e6b57613e5295613e4c93614282565b90614ba9565b613e675760405162b7fad960e11b8152600490fd5b5f90565b505050505050600190565b90604051613e838161189e565b60c06004829463ffffffff81546001600160501b0380821687528160501c16602087015260a01c1660408501526001810154606085015262ffffff6002820154166080850152600381015460a08501520154910152565b929190613ee88282866137b8565b803b613ef5575b50505050565b613efe93615074565b15613f0c575f808080613eef565b6368d2bf6b60e11b5f5260045ffd5b604051906080820182811067ffffffffffffffff8211176113b6576040525f6060838281528260208201528260408201520152565b5f90613f5a613f1b565b915f805160206154a483398151915254613f715750565b9091505b805f525f805160206154c483398151915260205260405f2054613f9a575f1901613f75565b610798906150a4565b90613fac613f1b565b915f805160206154a4833981519152548110613f715750565b90613fd860209282815194859201610741565b0190565b6006545f9291613feb82613463565b91600190818116908115614055575060011461400657505050565b909192935060065f527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f905f915b848310614042575050500190565b8181602092548587015201920191614034565b60ff191683525050811515909102019150565b6140ab82611eee60ff939594956001600160a01b03165f527f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4760205260405f2090565b54169182156140b8575b50565b60ff5f5460a81c166140c75750565b9091506001600160a01b03806140db61377b565b1691161490565b919061411460ff7fee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85f5460081c16615106565b825167ffffffffffffffff81116113b6577f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c429061415a816141558454613463565b613b49565b602080601f83116001146141d55750908061418e9261419596975f926141ca5750508160011b915f199060031b1c19161790565b9055615178565b6141aa5f5f805160206154a483398151915255565b6141b2615298565b6141ba6152c8565b6119356141c561377b565b614cbd565b015190505f806120db565b90601f198316966142267f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c425f527f933ecf8acb7824b680a8d16f3ff3db8864228d986aa4c2ebab1eeb2703b4beb390565b925f905b89821061426a57505090839291600194614195989910614252575b505050811b019055615178565b01515f1960f88460031b161c191690555f8080614245565b8060018596829496860151815501950193019061422a565b929190917f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e0054916001600160a01b038316156133df57610798946040519360208501953060601b87526bffffffffffffffffffffffff19809360601b16603487015263ffffffff60e01b9060e01b1660488601525f604c86015260601b16604d840152606183015246608183015260a182015260a181526133b28161189e565b638b78c6d81954330361433157565b6382b429005f526004601cfd5b905f915f805160206154a48339815191525481106143595750565b9091505b61437b815f525f805160206154c483398151915260205260405f2090565b5480614390575080156122f9575f190161435d565b600160e01b1615919050565b62a1148160e81b5f5260045ffd5b632ce44b5f60e11b5f5260045ffd5b633a954ecd60e21b5f5260045ffd5b636f96cda160e11b5f5260045ffd5b631960ccad60e11b5f5260045ffd5b63b562e8dd60e01b5f5260045ffd5b622e076360e81b5f5260045ffd5b7f0f1c5629c9ab6d9b97fd6801d012d74903c2eab7df1abec22bb54f9a05547645602061012c807f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e0155604051908152a1565b614473815f525f805160206154c483398151915260205260405f2090565b5490811561448a5750600160e01b81166143c85790565b90505f805160206154a4833981519152548110156143c8575b5f19015f8181525f805160206154c483398151915260205260409020549081156144e35750600160e01b81161561079857636f96cda160e11b5f5260045ffd5b90506144a3565b90915f5b60019081811015614564578083018084116122f9576001600160a01b038681161590861615808061455d575b1561453157604051635cbd944160e01b8152600490fd5b1561453f575b5050016144ee565b1561454b575b80614537565b6145579086863361540c565b5f614545565b508161451a565b5050505050565b905f5b83811061457b5750505050565b80820182116122f9576001600160a01b0383166145a457604051635cbd944160e01b8152600490fd5b60010161456e565b5f5b600190818110156145645780850185116122f9576001600160a01b038084161590816145f3575b50156145ed57604051635cbd944160e01b8152600490fd5b016145ae565b90508416155f6145d5565b602460106020939284936014526f70a082310000000000000000000000005f525afa601f3d11166020510290565b604460105f8093602095730b98151bedee73f9ba5f2c7b72dea02d38ce49fc6014526034526fa9059cbb00000000000000000000000082525af13d1560015f511417161561467a575f603452565b6390b8ec185f526004601cfd5b60105f60449260209582956014526034526fa9059cbb00000000000000000000000082525af13d1560015f511417161561467a575f603452565b6007545f600755806146d05750565b600590806005029060058204036122f95760075f527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688908101905b81811061471757505050565b805f8492555f60018201555f60028201555f60038201555f60048201550161470b565b9190811015613d285760e0020190565b5f198101919082116122f957565b356001600160501b038116810361045e5790565b356107988161187c565b3562ffffff8116810361045e5790565b600754680100000000000000008110156113b6578060016147aa9201600755613cef565b9190916148ce5760c0816001600160501b0360049351166001600160501b031985541617845561482c6147e760208301516001600160501b031690565b85547fffffffffffffffffffffffff00000000000000000000ffffffffffffffffffff1660509190911b73ffffffffffffffffffff0000000000000000000016178555565b614889614840604083015163ffffffff1690565b85547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1660a09190911b77ffffffff000000000000000000000000000000000000000016178555565b606081015160018501556148bd6148a6608083015162ffffff1690565b600286019062ffffff1662ffffff19825416179055565b60a081015160038501550151910155565b6139ef565b6148db6146c1565b5f5b8281106148e957505050565b60019081811015614aff575b60a0838161490484888461473a565b013560c09081614915868a8661473a565b01356149209161530d565b61492b84888461473a565b61493490614758565b60209182614943878b8761473a565b0161494d90614758565b946040928361495d898d8961473a565b016149679061476c565b968b896060998a61497983858d61473a565b0135908760809b8c61498c86888461473a565b0161499690614776565b94896149a382898561473a565b0135966149af9261473a565b0135946149ba611928565b6001600160501b0390971687526001600160501b0316868b015263ffffffff1685890152848b015262ffffff168884015283830152838201526149fc90614786565b614a07878b8b61473a565b614a1090614758565b93614a1c888c8c61473a565b01614a2690614758565b9483614a33898d8d61473a565b01614a3d9061476c565b96614a49898d8d61473a565b013590614a57898d8d61473a565b01614a6190614776565b91614a6d898d8d61473a565b013592614a7b898d8d61473a565b01359351968796614ad5968a8994909897969363ffffffff9060e0979362ffffff9561010089019c89526001600160501b0380921660208a015216604088015216606086015260808501521660a083015260c08201520152565b037fd4d1f42a08182d6508cb22b382bf9fb146c3fd9f27dcbbcbd5d6b6130e4283c791a1016148dd565b60a0614b0c82868661473a565b0135614b5060c0614b26614b1f8561474a565b888861473a565b01357f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e0154906139b3565b11156148f557604051636bc1af9360e01b8152600490fd5b6001600160a01b0316638b78c6d819908082547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3801560ff1b179055565b92916001600160a01b035f941680614bc057505050565b90919293506040805191845f5260209283850151835282855114614c62575b6041855114614c28575b5f606052808352630b135d3f60e11b9485825260049687830152602482019687948552815186019081604493848601925afa503d01915afa9151141690565b6060808601515f1a85528386015181526001858160805f825afa5184183d151715614c54575050614be9565b5f9091529252509392505050565b82850151601b8160ff1c0185527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6060911681526001858160805f825afa5184183d151715614c54575050614bdf565b6040513d5f823e3d90fd5b6001600160a01b0381169081614cd1575050565b3b614cd95750565b803b1561045e575f809160446040518094819363fb2de5d760e01b83523060048401526102d160248401525af1156140b557611935906118ba565b604051614d20816118ce565b5f81525f805160206154a4833981519152918254908415614ec057614d4685838361456b565b6001916001600160a01b0382164260a01b87851460e11b1717614d7d825f525f805160206154c483398151915260205260405f2090565b55614da5826001600160a01b03165f525f805160206154e483398151915260205260405f2090565b68010000000000000001870281540190556001600160a01b0382168015614ebb5786908183019083908680805b614e5e575b5050505091614df4614dfa935f805160206154a483398151915255565b8361456b565b803b614e07575050505050565b83549485039180805b614e2a575b5050505050540361045e575f80808080614564565b15614e51575b5f614e4261177e868487019686614fdc565b614e4c5781614e10565b613f0c565b858310614e305780614e15565b90919293945015614e9f575b505f8683835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a48a9493929181614dd2565b9091019088838314614eb2575085614e6a565b92918681614dd7565b6143f5565b6143e6565b9190916001600160501b03808094169116019182116122f957565b9190916001600160501b03808094169116029182169182036122f957565b91909163ffffffff808094169116019182116122f957565b90929167ffffffffffffffff84116113b6578360051b6020926020604051614f4082850182611906565b809781520191810192831161045e57905b828210614f5e5750505050565b81358152908301908301614f51565b9081602091031261045e575161079881610490565b61079893926001600160a01b036080931682525f602083015260408201528160608201520190610762565b909261079894936080936001600160a01b03809216845216602083015260408201528160608201520190610762565b61500c6020916001600160a01b0393945f604051958680958194630a85bd0160e11b9a8b84523360048501614f82565b0393165af15f9181615043575b50615035576150266139c0565b805115613f0c57805190602001fd5b6001600160e01b0319161490565b61506691925060203d60201161506d575b61505e8183611906565b810190614f6d565b905f615019565b503d615054565b9260209161500c935f6001600160a01b03604051809781968295630a85bd0160e11b9b8c85523360048601614fad565b6150ac613f1b565b505f525f805160206154c483398151915260205260405f20546150cd613f1b565b906001600160a01b038116825267ffffffffffffffff8160a01c166020830152600160e01b81161515604083015260e81c606082015290565b1561510d57565b60405162461bcd60e51b815260206004820152603460248201527f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460448201527f206973206e6f7420696e697469616c697a696e670000000000000000000000006064820152608490fd5b90815167ffffffffffffffff81116113b6577f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c43906151bf816151ba8454613463565b613bd5565b602080601f83116001146151f4575081906151f09394955f926141ca5750508160011b915f199060031b1c19161790565b9055565b90601f198316956152457f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c435f527f617167b76dcc8247761fd21f427ad8ec3be6b3be203aed34e3aac08b4d31817c90565b925f905b88821061528057505083600195969710615268575b505050811b019055565b01515f1960f88460031b161c191690555f808061525e565b80600185968294968601518155019501930190615249565b61193560ff7fee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85f5460081c16615106565b7fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac604080515f815273721c0078c2328597ca70f5451fff5a7b38d4e9476020820152a1565b101561531557565b604051631750215560e11b8152600490fd5b7f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e015442031161535257565b6326c69d1a5f526004601cfd5b919091805180615370575b50501490565b919060209060208082019160059560051b0101925b81518111851b9081528282519118528160405f20910193838510156153ab579390615385565b50925050505f8061536a565b601c5f60649281946020966040519860605260405260601b602c526f23b872dd000000000000000000000000600c525af13d1560015f51141716156153ff575f606052604052565b637939f4245f526004601cfd5b9092916001600160a01b03918261542161377b565b1680615430575b505050505050565b80331461542857803b1561045e575f948460849481604051998a98899763657711f560e11b895216600488015216602486015216604484015260648301525afa801561549e57615485575b8080808080615428565b80615492615498926118ba565b80610454565b5f61547b565b614cb256fe2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c402569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c442569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c45a26469706673582212207036dc46fa30e247993b8ab5109166752610b60c19320c9a4a2284f89a3cfc4364736f6c63430008160033