[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, { "inputs": [], "name": "CannotIncreaseMaxMintableSupply", "type": "error" }, { "inputs": [], "name": "CosignerNotSet", "type": "error" }, { "inputs": [], "name": "GlobalWalletLimitOverflow", "type": "error" }, { "inputs": [], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InsufficientStageTimeGap", "type": "error" }, { "inputs": [], "name": "InvalidCosignSignature", "type": "error" }, { "inputs": [], "name": "InvalidLimitArgsLength", "type": "error" }, { "inputs": [], "name": "InvalidProof", "type": "error" }, { "inputs": [], "name": "InvalidStage", "type": "error" }, { "inputs": [], "name": "InvalidStageArgsLength", "type": "error" }, { "inputs": [], "name": "InvalidStartAndEndTimestamp", "type": "error" }, { "inputs": [], "name": "InvalidTokenId", "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": "NotEnoughValue", "type": "error" }, { "inputs": [], "name": "NotMintable", "type": "error" }, { "inputs": [], "name": "NotSupported", "type": "error" }, { "inputs": [], "name": "NotTransferable", "type": "error" }, { "inputs": [], "name": "Reentrancy", "type": "error" }, { "inputs": [], "name": "RoyaltyOverflow", "type": "error" }, { "inputs": [], "name": "RoyaltyReceiverIsZeroAddress", "type": "error" }, { "inputs": [], "name": "StageSupplyExceeded", "type": "error" }, { "inputs": [], "name": "TimestampExpired", "type": "error" }, { "inputs": [], "name": "TransferFailed", "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": "account", "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": 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": true, "internalType": "address", "name": "cosigner", "type": "address" } ], "name": "SetCosigner", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "globalWalletLimit", "type": "uint256" } ], "name": "SetGlobalWalletLimit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "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": false, "internalType": "bool", "name": "transferable", "type": "bool" } ], "name": "SetTransferable", "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": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "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": [ { "internalType": "address", "name": "minter", "type": "address" } ], "name": "addAuthorizedMinter", "outputs": [], "stateMutability": "nonpayable", "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": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint32", "name": "qty", "type": "uint32" }, { "internalType": "uint32", "name": "limit", "type": "uint32" }, { "internalType": "bytes32[]", "name": "proof", "type": "bytes32[]" } ], "name": "authorizedMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "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": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": "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" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getGlobalWalletLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "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": "getNumberStages", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "stage", "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 MintStageInfo1155", "name": "", "type": "tuple" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getTimestampExpirySeconds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "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": "uint256", "name": "tokenId", "type": "uint256" }, { "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": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint32", "name": "qty", "type": "uint32" } ], "name": "ownerMint", "outputs": [], "stateMutability": "nonpayable", "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": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "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": "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": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "globalWalletLimit", "type": "uint256" } ], "name": "setGlobalWalletLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "maxMintableSupply", "type": "uint256" } ], "name": "setMaxMintableSupply", "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 MintStageInfo1155[]", "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": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "transferable", "type": "bool" } ], "name": "setTransferable", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newURI", "type": "string" } ], "name": "setURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri_", "type": "string" }, { "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 MintStageInfo1155[]", "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": "address", "name": "account", "type": "address" } ], "name": "totalMintedByAddress", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60808060405234620000c4575f549060ff8260081c1662000072575060ff8082161062000037575b604051615acd9081620000c98239f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f62000027565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c8062fdd58e1461035357806301ffc9a71461034e578063020451381461034957806302fe53051461034457806304634d8d1461033f57806306fdde031461033a578063077f224a146103355780630e89341c1461033057806316dc705c1461032b57806322fe44c3146103265780632569296214610321578063274a204b1461031c5780632a55205a146103175780632d759d0f146103125780632eb2c2d61461030d5780632ed6d5e8146103085780633115bba71461030357806333bbbf06146102fe5780633ccfd60b146102f9578063424aa884146102f4578063475ae039146102ef5780634ae0402f146102ea5780634e1273f4146102e55780634f558e79146102e057806354d1f13d146102db5780635944c753146102d65780635f710f5c146102d157806370da24ee146102cc578063715018a6146102c757806372bbedb8146102c25780637f7a0531146102bd578063842392c2146102b85780638d3a3e38146102b35780638da5cb5b146102ae5780638febc54b146102a957806395d89b41146102a457806397cf84fc1461029f5780639823560c1461029a5780639cd2370714610295578063a22cb46514610290578063a3759f601461028b578063ac56bf3914610286578063bd85b03914610281578063c3db27c11461027c578063e8e61bb814610277578063e985e9c514610272578063f04e283e1461026d578063f242432a14610268578063f2fde38b14610263578063f9a3e83f1461025e578063fee81cf4146102595763ff1b4ba914610254575f80fd5b612416565b6123e4565b6122d9565b61229e565b612119565b6120cc565b61206e565b611faa565b611f1e565b611ef4565b611e4a565b611d38565b611ad6565b611a74565b611a15565b6119dd565b611937565b6118d7565b6118ad565b611875565b611838565b6117f6565b6117d8565b611792565b611775565b61170b565b611672565b61162c565b611600565b611546565b6114c6565b61145f565b611439565b611369565b611337565b611294565b611199565b610fbe565b610e7c565b610df2565b610cf4565b610ca9565b610b81565b610a9b565b6109d4565b6108af565b6107cf565b6105fd565b61056e565b6104e0565b610435565b6103f4565b600435906001600160a01b038216820361036e57565b5f80fd5b604435906001600160a01b038216820361036e57565b602435906001600160a01b038216820361036e57565b606435906001600160a01b038216820361036e57565b608435906001600160a01b038216820361036e57565b60c435906001600160a01b038216820361036e57565b35906001600160a01b038216820361036e57565b3461036e57604036600319011261036e57602061041b610412610358565b60243590614c7c565b604051908152f35b6001600160e01b031981160361036e57565b3461036e57602036600319011261036e5761048a60043561045581610423565b8060e01c6301ffc9a7632a55205a82149114179081156104db575b811561048e575b5060405190151581529081906020820190565b0390f35b6001600160e01b031916636cdb3d1360e11b8114915081156104ca575b81156104b9575b505f610477565b6301ffc9a760e01b1490505f6104b2565b6303a24d0760e21b811491506104ab565b610470565b3461036e57602036600319011261036e576001600160a01b03610501610358565b610509615795565b805f80516020615a7883398151915255167faea1573caf7b4fdd079b947d86c1be6c725642c47582f8f9bd2c7d2a30bf0bd95f80a2005b9181601f8401121561036e5782359167ffffffffffffffff831161036e576020838186019501011161036e57565b3461036e57602036600319011261036e5760043567ffffffffffffffff811161036e576105b46105a56105b9923690600401610540565b6105ad615795565b3691610f6d565b6150ef565b005b602435906001600160601b038216820361036e57565b604435906001600160601b038216820361036e57565b60e435906001600160601b038216820361036e57565b3461036e57604036600319011261036e57610616610358565b6001600160601b036106266105bb565b61062e615795565b16906127108211610696578060601b908115610689576001600160a01b03602091847f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef941768aa4ec00224afccfdb7556040519485521692a2005b63b4457eaa5f526004601cfd5b63350a88b35f526004601cfd5b634e487b7160e01b5f525f60045260245ffd5b90600182811c921680156106e4575b60208310146106d057565b634e487b7160e01b5f52602260045260245ffd5b91607f16916106c5565b634e487b7160e01b5f52604160045260245ffd5b60e0810190811067ffffffffffffffff82111761071e57604052565b6106ee565b6040810190811067ffffffffffffffff82111761071e57604052565b6020810190811067ffffffffffffffff82111761071e57604052565b90601f8019910116810190811067ffffffffffffffff82111761071e57604052565b91908251928382525f5b8481106107a7575050825f602080949584010152601f8019910116010190565b602081830181015184830182015201610787565b9060206107cc92818152019061077d565b90565b3461036e575f806003193601126108ac57604051908060ca546107f1816106b6565b808552916001918083169081156108825750600114610827575b61048a8561081b8187038261075b565b604051918291826107bb565b925060ca83527f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee15b82841061086a57505050810160200161081b8261048a61080b565b8054602085870181019190915290930192810161084f565b86955061048a9693506020925061081b94915060ff191682840152151560051b820101929361080b565b80fd5b3461036e57606036600319011261036e5767ffffffffffffffff60043581811161036e576108e1903690600401610540565b60249291923591821161036e576108ff610947923690600401610540565b90610908610372565b925f549561092d60ff8860081c1615809881996109c6575b81156109a6575b506127a5565b8661093e600160ff195f5416175f55565b61098f57612a22565b61094d57005b61095b61ff00195f54165f55565b604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989080602081015b0390a1005b6109a161010061ff00195f5416175f55565b612a22565b303b159150816109b8575b505f610927565b6001915060ff16145f6109b1565b600160ff8216109150610920565b3461036e5760208060031936011261036e576040515f916067546109f7816106b6565b80845290600190818116908115610a7b5750600114610a21575b61048a8461081b8188038261075b565b60675f9081529294507f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae5b828410610a68575050508161048a9361081b9282010193610a11565b8054858501870152928501928101610a4c565b60ff1916858501525050151560051b820101915061081b8161048a610a11565b3461036e57602036600319011261036e577f0f1c5629c9ab6d9b97fd6801d012d74903c2eab7df1abec22bb54f9a055476456020600435610ada615795565b807f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e0155604051908152a1005b6044359063ffffffff8216820361036e57565b6064359063ffffffff8216820361036e57565b6024359063ffffffff8216820361036e57565b359063ffffffff8216820361036e57565b9181601f8401121561036e5782359167ffffffffffffffff831161036e576020808501948460051b01011161036e57565b60a036600319011261036e57610b95610358565b60243590610ba1610b06565b91610baa610b19565b60843567ffffffffffffffff811161036e57610bca903690600401610b50565b915f9533875260d560205260ff60408820541615610c975760405194610bef86610723565b60018652600360fc1b602087015260cd54811015610c925760cd8852807f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e0154151580610c59575b610c4757610c4496614551565b80f35b60405163800113cb60e01b8152600490fd5b508088526097602052610c7663ffffffff831660408a2054613338565b610c8c610c828361329c565b90549060031b1c90565b10610c37565b612b2a565b60405163ea8e4eb560e01b8152600490fd5b5f806003193601126108ac5763389a75e1600c523381526202a30042016020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d8280a280f35b3461036e57604036600319011261036e57600435602435610d13615795565b60d154821015610de05760cd54821015610c925760cd5f52817f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e0154151580610dcc575b610dba57610db581610da57f0c899f003b7b88b925c6cdfe9b56bc4df2b91107f0f6d1cec1c3538d156bbe4893610d8d866132d1565b90919082549060031b91821b915f19901b1916179055565b6040519081529081906020820190565b0390a2005b604051630590c51360e01b8152600490fd5b50610dd9610c828361329c565b8111610d57565b6040516307ed98ed60e31b8152600490fd5b3461036e57604036600319011261036e576024355f906004358252604068aa4ec00224afccfdb7928360205220548060601c928315610e6a575b5061048a908360601b1892835f1904831184023d3d3e61271060405194859402049083602090939291936001600160a01b0360408201951681520152565b54606081901c9350905061048a610e2c565b3461036e57602036600319011261036e5760043560cd54811015610c925760209060cd5f527f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e0154604051908152f35b60405190610ed982610702565b565b67ffffffffffffffff811161071e5760051b60200190565b81601f8201121561036e57803591610f0a83610edb565b92610f18604051948561075b565b808452602092838086019260051b82010192831161036e578301905b828210610f42575050505090565b81358152908301908301610f34565b67ffffffffffffffff811161071e57601f01601f191660200190565b929192610f7982610f51565b91610f87604051938461075b565b82948184528183011161036e578281602093845f960137010152565b9080601f8301121561036e578160206107cc93359101610f6d565b3461036e5760a036600319011261036e57610fd7610358565b610fdf610388565b9067ffffffffffffffff9060443582811161036e57611002903690600401610ef3565b9160643581811161036e5761101b903690600401610ef3565b9060843590811161036e57611034903690600401610fa3565b926001600160a01b0393848416943386148015611164575b61105590614df4565b6110628351855114615058565b861661106f811515614e66565b61107b84848988614f32565b5f5b8351811015611120578061109461111b9286613288565b5161111461110c8b6110c66110a9868c613288565b51948c6110fd876110dc836110c6865f52606560205260405f2090565b906001600160a01b03165f5260205260405f2090565b546110e982821015614ec0565b03916110c6845f52606560205260405f2090565b555f52606560205260405f2090565b918254613338565b9055613216565b61107d565b50938691946105b9966040517f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb33918061115b8a8a836150ca565b0390a433615685565b50855f52606660205261105560ff6111903360405f20906001600160a01b03165f5260205260405f2090565b5416905061104c565b3461036e575f36600319011261036e576111b1615795565b60d0546001600160a01b03168015611282576111d160cf5491309061592d565b908082106112705761124a7fbe7426aee8a34d0263892b55ce65ce81d8f4c806eb4719e59015ea49feb92d22926112075f60cf55565b61122c6112148285613338565b9361122760d0546001600160a01b031690565b615895565b60d0546001600160a01b031660d2546001600160a01b0316906158f2565b60d054604080516001600160a01b0390921682526020820192909252908190810161098a565b604051631e9acf1760e31b8152600490fd5b60405163a47ca0b760e01b8152600490fd5b3461036e57606036600319011261036e576112ad610358565b6024356112b8610b06565b906112c1615795565b60cd54811015610c925760cd5f52807f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e0154151580611308575b610c47576105b9926144df565b50805f52609760205261132563ffffffff831660405f2054613338565b611331610c828361329c565b106112fb565b3461036e575f36600319011261036e5760206001600160a01b035f80516020615a788339815191525416604051908152f35b3461036e575f806003193601126108ac57611382615795565b8080808060cf54730b98151bedee73f9ba5f2c7b72dea02d38ce49fc5af16113a86144b0565b5015611427576113b75f60cf55565b4781808080846113cf60d2546001600160a01b031690565b5af16113d96144b0565b50156114155761140f610da57f5b6b431d4476a211bb7d41c20d1aab9ae2321deee0d20be3d9fc9b1093fa6e3d9260cf54613338565b0390a180f35b604051631d42c86760e21b8152600490fd5b6040516312171d8360e31b8152600490fd5b3461036e575f36600319011261036e5760206001600160a01b0360d05416604051908152f35b3461036e57602036600319011261036e576001600160a01b03611480610358565b611488615795565b165f81815260d560205260408120805460ff19169055907fc6711413797b8a562634e98c95d50e7619d39702ed5b82ce335dc93546c3a88c8280a280f35b3461036e575f36600319011261036e5760207f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e0154604051908152f35b9081518082526020808093019301915f5b828110611521575050505090565b835185529381019392810192600101611513565b9060206107cc928181520190611502565b3461036e57604036600319011261036e5760043567ffffffffffffffff80821161036e573660238301121561036e57816004013561158381610edb565b92611591604051948561075b565b81845260209160248386019160051b8301019136831161036e57602401905b8282106115e9578560243586811161036e5761048a916115d76115dd923690600401610ef3565b90614d1f565b60405191829182611535565b8380916115f5846103e0565b8152019101906115b0565b3461036e57602036600319011261036e576004355f526097602052602060405f20541515604051908152f35b5f806003193601126108ac5763389a75e1600c52338152806020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c928280a280f35b3461036e57606036600319011261036e5760043561168e610388565b906001600160601b0361169f6105d1565b6116a7615795565b16916127108311610696578060601b908115610689576001600160a01b03602091857f7f5b076c952c0ec86e5425963c1326dd0f03a3595c19f81d765e8ff559a6e33c94865f5268aa4ec00224afccfdb785521760405f20556040519586521693a3005b3461036e57602036600319011261036e576001600160a01b0361172c610358565b611734615795565b165f81815260d560205260408120805460ff19166001179055907fe6be4d6cc04eb0219337b22db08c688969a9ec8e34d9a0a2ba38a114e050f1ae8280a280f35b3461036e575f36600319011261036e57602060c954604051908152f35b5f806003193601126108ac576117a6615795565b80638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a35580f35b3461036e57602036600319011261036e57602061041b600435613224565b3461036e57602036600319011261036e5760043567ffffffffffffffff811161036e5761182a6105b9913690600401610b50565b90611833615795565b614193565b3461036e57602036600319011261036e576001600160a01b03611859610358565b165f5260d5602052602060ff60405f2054166040519015158152f35b3461036e57604036600319011261036e5760206118a4611893610358565b61189f60243591613345565b613288565b51604051908152f35b3461036e575f36600319011261036e576020638b78c6d819546001600160a01b0360405191168152f35b3461036e5760a036600319011261036e576118f0610358565b6118f8610b2c565b6064359067ffffffffffffffff821161036e5760209261191f61192d933690600401610fa3565b9060843592604435916126f1565b6040519015158152f35b3461036e575f806003193601126108ac57604051908060cb54611959816106b6565b8085529160019180831690811561088257506001146119825761048a8561081b8187038261075b565b925060cb83527fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb5b8284106119c557505050810160200161081b8261048a61080b565b805460208587018101919091529093019281016119aa565b3461036e57602036600319011261036e5761048a611a016119fc610358565b613345565b604051918291602083526020830190611502565b3461036e57602036600319011261036e5760043560ce54811015610c925760209060ce5f527fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a0154604051908152f35b60243590811515820361036e57565b3461036e57602036600319011261036e5760043580151580910361036e5760207fbcde07732ba7563e295b3edc0bf5ec939a471d93d850a58a6f2902c0ed32372891611abe615795565b60ff1960cc541660ff82161760cc55604051908152a1005b3461036e57604036600319011261036e57611aef610358565b611af7611a65565b6001600160a01b03821691823314611b6f5781611b2c611b3d926110c6336001600160a01b03165f52606660205260405f2090565b9060ff801983541691151516179055565b604051901515815233907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190602090a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608490fd5b9081518082526020808093019301915f5b828110611bf9575050505090565b83516001600160501b031685529381019392810192600101611beb565b9081518082526020808093019301915f5b828110611c35575050505090565b835162ffffff1685529381019392810192600101611c27565b9193929060608352611c6d815160e06060860152610140850190611bda565b946020611c8b8184015197605f199889888303016080890152611bda565b96604084015197818782030160a088015282808a5192838152019901905f5b818110611d1e575050509060c0611cf0859493611cdb6107cc9a9b6060611d10990151838c830301868d0152611502565b906080870151908a83030160e08b0152611c16565b9360a0810151610100890152015161012087015285830390860152611502565b916040818403910152611502565b825163ffffffff168b529984019991840191600101611caa565b3461036e5760208060031936011261036e5760c090600435906040918251611d5f81610702565b606080825280848301528085830152808083015260808201525f94818660a081940152015260c954811015611e3957611d9733613345565b9360d15490611da582613306565b93815b838110611dd257878761048a88611dc7611dc18a612b3e565b50612f48565b925193849384611c4e565b84835260d38252868320818452825263ffffffff611e0333898620906001600160a01b03165f5260205260405f2090565b541690611e108188613288565b51918201809211611e3457611e2f91611e298289613288565b52613216565b611da8565b613202565b825163e82a532960e01b8152600490fd5b3461036e5761010036600319011261036e5767ffffffffffffffff60043581811161036e57611e7d903690600401610540565b60243583811161036e57611e95903690600401610ef3565b60443584811161036e57611ead903690600401610ef3565b90611eb661039e565b611ebe6103b4565b9060a43596871161036e57611eda6105b9973690600401610b50565b949093611ee56103ca565b96611eee6105e7565b986133e7565b3461036e57602036600319011261036e576004355f526097602052602060405f2054604051908152f35b3461036e575f36600319011261036e57611f9c604051611f3d81610723565b601581527f455243313135354d496e697469616c697a61626c650000000000000000000000602082015261048a604051611f7681610723565b60058152640312e302e360dc1b602082015260405193849360408552604085019061077d565b90838203602085015261077d565b3461036e57604036600319011261036e57600435602435611fc9615795565b60d154821015610de057611fdf610c828361329c565b15158061205a575b61204857611ffd825f52609760205260405f2090565b54811061203657610db581610da57fc95161027a9b2f0376fa8fa5f504100ccc4748c73f4e479bac3778d02ee5621c93610d8d8661329c565b60405163fb7af64960e01b8152600490fd5b60405163430b83b160e11b8152600490fd5b50612067610c828361329c565b8111611fe7565b3461036e57604036600319011261036e57602060ff6120c061208e610358565b6001600160a01b0361209e610388565b91165f526066845260405f20906001600160a01b03165f5260205260405f2090565b54166040519015158152f35b602036600319011261036e576120e0610358565b6120e8615795565b63389a75e1600c52805f526020600c20908154421161210c575f6105b992556157b1565b636f5e88185f526004601cfd5b3461036e5760a036600319011261036e57612132610358565b61213a610388565b6084359060643560443567ffffffffffffffff841161036e57612164610c44943690600401610fa3565b926001600160a01b0395868116963388148015612269575b61218590614df4565b8216612192811515614e66565b6121af61219e856156c6565b6121a7876156c6565b908585614f32565b5f978489526065602052856121d88460408c20906001600160a01b03165f5260205260405f2090565b546121e582821015614ec0565b868b5260656020520361220c8460408c20906001600160a01b03165f5260205260405f2090565b55612223846110c6875f52606560205260405f2090565b61222e878254613338565b9055604080518681526020810188905233917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6291a4336155a0565b50875f52606660205261218560ff6122953360405f20906001600160a01b03165f5260205260405f2090565b5416905061217c565b602036600319011261036e576122b2610358565b6122ba615795565b8060601b156122cc576105b9906157b1565b637448fbae5f526004601cfd5b60c036600319011261036e576004356122f0610b2c565b6122f8610b06565b67ffffffffffffffff9260643584811161036e5761231a903690600401610b50565b909460a43590811161036e57612334903690600401610540565b68929eee149b4bd212689691308854146123d757612356913089553691610f6d565b9360cd54841015610c925760cd5f52837f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e01541515806123a8575b610c47576123a39560843594336149da565b389055005b50835f5260976020526123c563ffffffff871660405f2054613338565b6123d1610c828661329c565b10612391565b63ab143c065f526004601cfd5b3461036e57602036600319011261036e576123fd610358565b63389a75e1600c525f52602080600c2054604051908152f35b3461036e5760a036600319011261036e5761242f610358565b612437610b2c565b6044359081151580920361036e575f80516020615a7883398151915254916001600160a01b038316156125005760209361041b9360405192868401943060601b86526001600160601b0319809460601b16603486015263ffffffff60e01b9060e01b16604885015260f81b604c84015260601b16604d820152606435606182015246608182015260843560a182015260a181526124d381610702565b5190206020527b19457468657265756d205369676e6564204d6573736167653a0a33325f52603c60042090565b6040516353bd4fb360e11b8152600490fd5b915f80516020615a7883398151915254906001600160a01b03821615612500576107cc936040519260208401943060601b86526001600160601b0319809360601b16603486015263ffffffff60e01b9060e01b1660488501525f604c85015260601b16604d8301525f606183015246608183015260a182015260a181526124d381610702565b929190915f80516020615a7883398151915254916001600160a01b03831615612500576107cc946040519360208501953060601b87526001600160601b0319809360601b16603487015263ffffffff60e01b9060e01b1660488601525f604c86015260601b16604d840152606183015246608183015260a182015260a181526124d381610702565b5f80516020615a788339815191525491936001600160a01b03831692831561250057846126b16126b79260405160208101913060601b83526001600160601b031990818960601b16603484015263ffffffff60e01b8c60e01b166048840152600160f81b604c84015260601b16604d8201525f60618201524660818201528560a182015260a181526124d381610702565b8561595b565b6126e7576126ce946126c892612512565b9061595b565b6126e35760405162b7fad960e11b8152600490fd5b5f90565b5050505050600190565b90935f80516020615a7883398151915254926001600160a01b03841693841561250057856127836127899260405160208101913060601b83526001600160601b031990818a60601b16603484015263ffffffff60e01b8d60e01b166048840152600160f81b604c84015260601b16604d8201528560618201524660818201528660a182015260a181526124d381610702565b8661595b565b61279a576126ce956126c893612598565b505050505050600190565b156127ac57565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608490fd5b818110612822575050565b5f8155600101612817565b90601f821161283a575050565b610ed99160ca5f527f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee1906020601f840160051c83019310612883575b601f0160051c0190612817565b9091508190612876565b90601f821161289a575050565b610ed99160675f527f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae906020601f840160051c8301931061288357601f0160051c0190612817565b90601f82116128ef575050565b610ed99160cb5f527fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb906020601f840160051c8301931061288357601f0160051c0190612817565b919067ffffffffffffffff811161071e5761295c8161295760cb546106b6565b6128e2565b5f601f8211600114612993578192935f92612988575b50508160011b915f199060031b1c19161760cb55565b013590505f80612972565b60cb5f52601f198216937fa7ce836d032b2bf62b7e2097a8e0a6d8aeb35405ad15271e96d3b0188a1d06fb91805b8681106129f857508360019596106129df575b505050811b0160cb55565b01355f19600384901b60f8161c191690555f80806129d4565b909260206001819286860135815501940191016129c1565b60405190612a1d8261073f565b5f8252565b67ffffffffffffffff821161071e57612a4582612a4060ca546106b6565b61282d565b5f90601f8311600114612a9f579180612a7f9492610ed99796945f92612a94575b50508160011b915f199060031b1c19161760ca55612937565b612a8f612a8a612a10565b614c5f565b61575d565b013590505f80612a66565b60ca5f527f42d72674974f694b5f5159593243114d38a5c39c89d6b62fee061ff523240ee191601f198416815b818110612b125750926001928592610ed9999896612a7f989610612af9575b505050811b0160ca55612937565b01355f19600384901b60f8161c191690555f8080612aeb565b91936020600181928787013581550195019201612acc565b634e487b7160e01b5f52603260045260245ffd5b60c954811015610c925760079060c95f52027f66be4f155c5ef2ebd3772b228f2f00681e4ed5826cdb3b1943cc11ad15ad1d2801905f90565b90604080518093805492612b9c612b92858560209181520190565b925f5260205f2090565b935f915b816002840110612c205750610ed9945491818110612c06575b818110612be8575b10612bcf575b50038361075b565b60a01c6001600160501b031681526020905b015f612bc7565b605083901c6001600160501b03168452926001906020019301612bc1565b6001600160501b0383168452926001906020019301612bb9565b93509160016060600392612c7a88546001600160501b03612c4b848284166001600160501b03169052565b612c6560208501828460501c166001600160501b03169052565b8984019160a01c166001600160501b03169052565b01950191019093918693612ba0565b906040519182815491828252602092838301915f52835f20935f905b828210612cbb57505050610ed99250038361075b565b855484526001958601958895509381019390910190612ca5565b90604080518093805492612cf0612b92858560209181520190565b935f915b816009840110612e525750610ed9945491818110612e3c575b818110612e22575b818110612e08575b818110612dee575b818110612dd4575b818110612dba575b818110612da0575b818110612d86575b818110612d6c575b10612d5a5750038361075b565b60d81c62ffffff168152602090612be1565b60c083901c62ffffff168452926001906020019301612d4d565b60a883901c62ffffff168452926001906020019301612d45565b609083901c62ffffff168452926001906020019301612d3d565b607883901c62ffffff168452926001906020019301612d35565b606083901c62ffffff168452926001906020019301612d2d565b604883901c62ffffff168452926001906020019301612d25565b603083901c62ffffff168452926001906020019301612d1d565b601883901c62ffffff168452926001906020019301612d15565b62ffffff83168452926001906020019301612d0d565b9350916001610140600a92612f39885462ffffff612e768482841662ffffff169052565b612e8c60208501828460181c1662ffffff169052565b612ea18a8501828460301c1662ffffff169052565b612ecd6060612ebb818701848660481c1662ffffff169052565b828460808801921c1662ffffff169052565b612ee360a08501828460781c1662ffffff169052565b612f2660c0612efd818701848660901c1662ffffff169052565b612f1360e08701848660a81c1662ffffff169052565b82846101008801921c1662ffffff169052565b61012084019160d81c1662ffffff169052565b01950191019093918693612cf4565b90604091825190612f5882610702565b8193612f6382612b77565b8352600190612f73828401612b77565b602090818601526002840182519384612f9f612f958454809360209181520190565b935f5260205f2090565b5f905b826007830110613141579361300d93889692936006999460c09b999754928583831061311f575b8383106130fb575b898484106130d6575b508383106130b1575b83831061308c575b838310613067575b838310613050575b505010613043575b509050038361075b565b85015261301c60038201612c89565b606085015261302d60048201612cd5565b6080850152600581015460a08501520154910152565b60e01c815201805f613003565b63ffffffff858f1c16865290940193015f85612ffb565b8561308283949763ffffffff8860a01c1663ffffffff169052565b0194019085612ff3565b856130a783949763ffffffff8860801c1663ffffffff169052565b0194019085612feb565b856130cc83949763ffffffff8860601c1663ffffffff169052565b0194019085612fe3565b956130f08163ffffffff8886979a1c1663ffffffff169052565b019401908589612fda565b8561311583949763ffffffff88851c1663ffffffff169052565b0194019085612fd1565b8561313783949763ffffffff881663ffffffff169052565b0194019085612fc9565b93836101006008926131f78a6131ec8b6131938c549361318263ffffffff936131718986891663ffffffff169052565b63ffffffff87821c86161690890152565b63ffffffff85821c84161690870152565b6131aa60608285828901921c1663ffffffff169052565b6131c160808285828901921c1663ffffffff169052565b6131d860a08285828901921c1663ffffffff169052565b60c09083828701921c1663ffffffff169052565b60e090811c90830152565b019501910190612fa2565b634e487b7160e01b5f52601160045260245ffd5b5f198114611e345760010190565b60c954905f5b8281106132435760405163e82a532960e01b8152600490fd5b600561324e82612b3e565b50015482101580613272575b61326c5761326790613216565b61322a565b91505090565b50600661327e82612b3e565b500154821061325a565b8051821015610c925760209160051b010190565b60cd54811015610c925760cd5f527f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e01905f90565b60ce54811015610c925760ce5f527fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a01905f90565b9061331082610edb565b61331d604051918261075b565b828152809261332e601f1991610edb565b0190602036910137565b91908201809211611e3457565b60d15461335181613306565b9160c954905f5b838110613366575050505090565b5f5b83811061337e575061337990613216565b613358565b806133e2915f526133d86133c863ffffffff6133bd87602060d38152604090815f20908a5f52525f20906001600160a01b03165f5260205260405f2090565b541663ffffffff1690565b6133d2858a613288565b51613338565b611e298489613288565b613368565b9197959399969298946133f8615795565b88518a510361351e575f5b8a5181101561344e57613416818b613288565b51151580613431575b610dba5761342c90613216565b613403565b5061343c818c613288565b51613447828c613288565b511061341f565b506134ba6105b495989b61347f6134e3949596999c61347a6134eb9a9d613475835160d155565b613530565b6135de565b613491600160ff1960cc54161760cc55565b6001600160a01b031673ffffffffffffffffffffffffffffffffffffffff1960d054161760d055565b6001600160a01b031673ffffffffffffffffffffffffffffffffffffffff1960d254161760d255565b6105ad61368c565b8061350e575b50506001600160a01b038216613505575050565b610ed991614443565b61351791614193565b5f806134f1565b6040516302c3f8e160e21b8152600490fd5b80519067ffffffffffffffff821161071e57600160401b821161071e5760cd548260cd558083106135a8575b5060208091019060cd5f525f5b8381106135765750505050565b82517f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e82015591810191600101613569565b6135d890837f83978b4c69c48dd978ab43fe30f077615294f938fb7f936d9eb340e51ea7db2e9182019101612817565b5f61355c565b80519067ffffffffffffffff821161071e57600160401b821161071e5760ce548260ce55808310613656575b5060208091019060ce5f525f5b8381106136245750505050565b82517fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a82015591810191600101613617565b61368690837fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a9182019101612817565b5f61360a565b7f0f1c5629c9ab6d9b97fd6801d012d74903c2eab7df1abec22bb54f9a05547645602061012c807f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e0155604051908152a1565b80545f8255806136ec575050565b610ed9915f526003600260205f20920104810190612817565b90600160401b811161071e57815481835580821061372257505050565b610ed9925f526003600260205f2092600a83808488010486019606028061374e575b5001040190612817565b613769905f198701908154905f199060200360031b1c169055565b5f613744565b80545f82558061377d575050565b610ed9915f52600760205f20910160031c810190612817565b90600160401b811161071e5781548183558082106137b357505050565b610ed9925f52600760205f2091601c82850160031c84019460021b16806137e1575b500160031c0190612817565b6137fc905f198601908154905f199060200360031b1c169055565b5f6137d5565b8054905f908181558261381457505050565b815260208120918201915b82811061382b57505050565b81815560010161381f565b80545f825580613844575050565b610ed9915f52600a600960205f20920104810190612817565b90600160401b811161071e57815481835580821061387a57505050565b610ed9925f52600a600960205f2092600383808488010486019606028061374e575001040190612817565b60c9545f908160c955806138b7575050565b6007918183029183830403611e345760c981527f66be4f155c5ef2ebd3772b228f2f00681e4ed5826cdb3b1943cc11ad15ad1d28918201915b8281106138fd5750505050565b8061390885926136de565b613914600182016136de565b6139206002820161376f565b61392c60038201613802565b61393860048201613836565b826005820155826006820155016138f0565b9190811015610c925760051b8101359060de198136030182121561036e570190565b5f19810191908211611e3457565b903590601e198136030182121561036e570180359067ffffffffffffffff821161036e57602001918160051b3603831361036e57565b35906001600160501b038216820361036e57565b92916139cf82610edb565b916139dd604051938461075b565b829481845260208094019160051b810192831161036e57905b828210613a035750505050565b838091613a0f846139b0565b8152019101906139f6565b9291613a2582610edb565b91613a33604051938461075b565b829481845260208094019160051b810192831161036e57905b828210613a595750505050565b838091613a6584610b3f565b815201910190613a4c565b9291613a7b82610edb565b91613a89604051938461075b565b829481845260208094019160051b810192831161036e57905b828210613aaf5750505050565b81358152908301908301613aa2565b359062ffffff8216820361036e57565b9291613ad982610edb565b91613ae7604051938461075b565b829481845260208094019160051b810192831161036e57905b828210613b0d5750505050565b838091613b1984613abe565b815201910190613b00565b90805167ffffffffffffffff811161071e57613b408184613705565b613b526020809301935f5260205f2090565b90600392838204935f5b858110613bd9575084028083039203613b77575b5050505050565b93905f94855b828110613b94575050505001555f80808080613b70565b9091929582613bce600192613bb08a516001600160501b031690565b9085600a0260031b916001600160501b03809116831b921b19161790565b970193929101613b7d565b5f805b838110613bf0575085820155600101613b5c565b979084613c28600192613c0a85516001600160501b031690565b908c600a0260031b916001600160501b03809116831b921b19161790565b92019801613bdc565b90805167ffffffffffffffff811161071e57613c4d8184613796565b613c5f6020809301935f5260205f2090565b908060031c925f5b848110613ce0575060071982169091039081613c84575050505050565b93905f94855b828110613ca1575050505001555f80808080613b70565b9091929582613cd5600192613cba8a5163ffffffff1690565b908560021b60031b9163ffffffff809116831b921b19161790565b970193929101613c8a565b5f805b60088110613cf8575084820155600101613c67565b969083613d2a600192613d0f855163ffffffff1690565b908b60021b60031b9163ffffffff809116831b921b19161790565b92019701613ce3565b81519167ffffffffffffffff831161071e57600160401b831161071e578154838355808410613d8c575b506020809101915f52805f20905f5b848110613d7a575050505050565b83518382015592810192600101613d6c565b5f838152846020822092830192015b828110613da9575050613d5d565b818155600101613d9b565b90805167ffffffffffffffff811161071e57613dd0818461385d565b613de26020809301935f5260205f2090565b90600a92838204935f5b858110613e60575084028083039203613e06575050505050565b93905f94855b828110613e23575050505001555f80808080613b70565b9091929582613e55600192613e3b8a5162ffffff1690565b908560030260031b9162ffffff809116831b921b19161790565b970193929101613e0c565b5f805b838110613e77575085820155600101613dec565b979084613ea7600192613e8d855162ffffff1690565b908c60030260031b9162ffffff809116831b921b19161790565b92019801613e63565b60c95490600160401b82101561071e57613ed160019283810160c955612b3e565b9290926140235781519081519167ffffffffffffffff831161071e57613ef78386613705565b6020809101613f09865f5260205f2090565b93600394858204915f5b838110613fc55750828702900380613f83575b5050505060c092613f438593613f61936006970151908801613b24565b613f54604084015160028801613c31565b6060830151908601613d33565b613f72608082015160048601613db4565b60a081015160058501550151910155565b925f93845b818110613fa157505050015582613f4383613f61613f26565b90919486613fbb8992613bb089516001600160501b031690565b9601929101613f88565b86905f805b888b8210613fde5750508185015501613f13565b909792939161401690613ff885516001600160501b031690565b908a600a0260031b916001600160501b03809116831b921b19161790565b9201960190889291613fca565b6106a3565b9190808252602080920192915f5b828110614044575050505090565b9091929382806001926001600160501b0361405e896139b0565b16815201950193929101614036565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831161036e5760209260051b809284830137010190565b9190808252602080920192915f5b8281106140c6575050505090565b90919293828060019262ffffff6140dc89613abe565b168152019501939291016140b8565b999795929161411f9161410d919e9d9c9e98969860e08d5260e08d0191614028565b60209485938c85818503910152614028565b89810360408b01528281520194915f5b82811061416d5750505050826141639492614155928860c099989603606089015261406d565b9184830360808601526140aa565b9460a08201520152565b90919295828060019263ffffffff6141848b610b3f565b1681520197019392910161412f565b61419b6138a5565b5f5b8281106141a957505050565b60018110156143da575b6141be81848461394a565b60a001356141cd82858561394a565b60c001356141da91614b20565b6141e581848461394a565b6141ee90614b3a565b6141f981848461394a565b806142039161397a565b908461421084828761394a565b6020810161421d9161397a565b9061422986848961394a565b604081016142369161397a565b9061424288868b61394a565b6060810161424f9161397a565b91909261425d8a888d61394a565b6080810161426a9161397a565b9590968c8c61427a818c8461394a565b60a001359a6142889261394a565b60c0013599614295610ecc565b9b36906142a1926139c4565b8b5236906142ae926139c4565b60208a015236906142be92613a1a565b604088015236906142ce92613a70565b606086015236906142de92613ace565b608084015260a083015260c08201526142f690613eb0565b8061430281858561394a565b8061430c9161397a565b61431783878761394a565b602081016143249161397a565b8761433386828a97959761394a565b604081016143409161397a565b90828a8961434f81848461394a565b6060810161435c9161397a565b9361436892919361394a565b608081016143759161397a565b9490938d8c614385818a8461394a565b60a00135986143939261394a565b60c00135976040519b8c9b6143a89b8d6140eb565b037f4fcf5c64a6ebb6fdad18474d5b1bd187bb9d9f9df516c804929b9d7901b7d39191a26143d590613216565b61419d565b60a06143e782858561394a565b013561442b60c06144016143fa8561396c565b878761394a565b01357f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e015490613338565b11156141b357604051636bc1af9360e01b8152600490fd5b906001600160601b0390614455615795565b16906127108211610696578060601b908115610689576001600160a01b03602091847f8a8bae378cb731c5c40b632330c6836c2f916f48edb967699c86736f9a6a76ef941768aa4ec00224afccfdb7556040519485521692a2565b3d156144da573d906144c182610f51565b916144cf604051938461075b565b82523d5f602084013e565b606090565b610ed9929163ffffffff604051936144f68561073f565b5f855216916151d4565b9190916001600160501b0380809416911601918211611e3457565b9190916001600160501b0380809416911602918216918203611e3457565b91909163ffffffff80809416911601918211611e3457565b9491959390929342905f916001600160a01b0391826145845f80516020615a78833981519152546001600160a01b031690565b166149aa575b5061459490613224565b936145a1611dc186612b3e565b9215614993575f965b60d0546001600160a01b03169283161591828b8a8a83614961575b50505061494f578a9560808601898962ffffff6145ef6145e6848651613288565b5162ffffff1690565b166148ec575b506146049150610c82906132d1565b6148a6575b604086018b8963ffffffff998a928d84614631614627838951613288565b5163ffffffff1690565b16614863575b5050505050506060860161464c8a8251613288565b51614767575b50505050610ed9986146a361469e61469661468a8a986146c0986147039b988e8c6146f59a1561471e575b505050508516809c61451b565b6001600160501b031690565b60cf54613338565b60cf55565b6146e16146cd8a6110c6886146c0885f5260d360205260405f2090565b905f5260205260405f2090565b916146dc835463ffffffff1690565b614539565b63ffffffff1663ffffffff19825416179055565b5f5260d460205260405f2090565b61470e838254613338565b9055614718612a10565b926151d4565b61474b6147549261474661473961468a9461475e9851613288565b516001600160501b031690565b614500565b858b169061451b565b9030903390615840565b5f808e8c61467d565b918b6147d36147d8936147838d6147dc979d9a9b9c9d51613288565b5160405160609490941b6bffffffffffffffffffffffff19166020850190815260e089901b6001600160e01b03191660348601526018855290936147c860388261075b565b519020933691613a70565b6157ea565b1590565b6148515785168015159081614811575b506147ff575f8080809796959497614652565b60405163b4f3729b60e01b8152600490fd5b905061484a6148418b6146dc6148378d6110c68d6146c08b5f5260d360205260405f2090565b5463ffffffff1690565b63ffffffff1690565b115f6147ec565b6040516309bde33960e01b8152600490fd5b61488d614841936146dc614837614627956110c6866146c06148949b5f5260d360205260405f2090565b9551613288565b9116116147ff575f87898e8e8d614637565b95506148c26148b5898c614ab3565b63ffffffff8d1690613338565b6148ce610c828a6132d1565b106148da578a95614609565b60405163751304ed60e11b8152600490fd5b8161492061492f94959b63ffffffff614917614927966146c06145e6975f5260d460205260405f2090565b54911690613338565b9451613288565b62ffffff1690565b1061493e578a955f89896145f5565b60405162d0844960e21b8152600490fd5b604051630717c22560e51b8152600490fd5b614989935061498161468a939261474661473963ffffffff948d51613288565b91169061451b565b34108b8a8a6145c5565b6149a4614739876020860151613288565b966145aa565b90506149c89192506149bf8661189f33613345565b51908933612620565b906149d1614a51565b5f61459461458a565b9590939196949294425f926001600160a01b039283614a0d5f80516020615a78833981519152546001600160a01b031690565b16614a1e575b505061459490613224565b614a409194506145949250614a368861189f33613345565b5190858c336126f1565b92614a4a81614a88565b905f614a13565b7f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e01544203614a7b57565b6326c69d1a5f526004601cfd5b7f7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e0154420311614a7b57565b60c9545f928392905b828410614aca575050505090565b90919293845f5263ffffffff614b0384602060d38152604090815f2090875f52525f20906001600160a01b03165f5260205260405f2090565b54168101809111611e3457614b189094613216565b929190614abc565b1015614b2857565b604051631750215560e11b8152600490fd5b614b44818061397a565b905060d15480911491821592614bd3575b8215614bb9575b8215614b9f575b8215614b84575b5050614b7257565b604051634f7ee04f60e11b8152600490fd5b614b94919250608081019061397a565b905014155f80614b6a565b915080614baf606084018461397a565b9050141591614b63565b915080614bc9604084018461397a565b9050141591614b5c565b915080614be3602084018461397a565b9050141591614b55565b15614bf457565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608490fd5b610ed9906105b460ff5f5460081c16614c7781614bed565b614bed565b6001600160a01b03811615614cb457614cb0915f52606560205260405f20906001600160a01b03165f5260205260405f2090565b5490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e6572000000000000000000000000000000000000000000006064820152608490fd5b9190918051835103614d8957614d358151613306565b905f5b8151811015614d825780614d73614d62614d55614d7d9486613288565b516001600160a01b031690565b614d6c8389613288565b5190614c7c565b611e298286613288565b614d38565b5090925050565b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608490fd5b15614dfb57565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f7665640000000000000000000000000000000000006064820152608490fd5b15614e6d57565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b15614ec757565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e73666572000000000000000000000000000000000000000000006064820152608490fd5b6001600160a01b039081161592918361500a575b16159283614f96575b5050159081614f8d575b5080614f78575b614f6657565b60405163dc8d8db760e01b8152600490fd5b50614f886147d860cc5460ff1690565b614f60565b9050155f614f59565b91925f9491945b8551811015614ffd5780614fb4614ff89288613288565b51614ff2614fc28388613288565b51614fd5835f52609760205260405f2090565b54614fe2828210156156eb565b03915f52609760205260405f2090565b55613216565b614f9d565b5092915092505f80614f4f565b93949192905f5b845181101561504d57806150286150489289613288565b5161111461110c615039848a613288565b515f52609760205260405f2090565b615011565b509092919493614f46565b1561505f57565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608490fd5b90916150e16107cc93604084526040840190611502565b916020818403910152611502565b90815167ffffffffffffffff811161071e57615115816151106067546106b6565b61288d565b602080601f831160011461514f57508192935f92615144575b50508160011b915f199060031b1c191617606755565b015190505f8061512e565b90601f1983169461518160675f527f9787eeb91fe3101235e4a76063c7023ecb40f923f97916639c598592fa30d6ae90565b925f905b8782106151bc5750508360019596106151a4575b505050811b01606755565b01515f1960f88460031b161c191690555f8080615199565b80600185968294968601518155019501930190615185565b939091926001600160a01b038516938415615297576151f2846156c6565b936151fc826156c6565b965f5b865181101561522c5780615216615227928b613288565b5161111461110c615039848c613288565b6151ff565b5091939650919350610ed99461524e826110c6855f52606560205260405f2090565b615259858254613338565b905560408051848152602081018690525f9133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629190a4336153eb565b60405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b9081602091031261036e57516107cc81610423565b909260a0926001600160a01b036107cc96951683525f602084015260408301526060820152816080820152019061077d565b91926107cc95949160a0946001600160a01b03809216855216602084015260408301526060820152816080820152019061077d565b5f9060033d1161536e57565b905060045f803e5f5160e01c90565b5f60443d106107cc57604051600319913d83016004833e815167ffffffffffffffff918282113d6024840111176153da578184019485519384116153e2573d850101602084870101116153da57506107cc9291016020019061075b565b949350505050565b50949350505050565b9390803b6153fa575050505050565b615429935f6001600160a01b036020956040519788968795869363f23a6e6160e01b9c8d8652600486016152fb565b0393165af15f9181615570575b506154ec57615443615362565b6308c379a0146154bd575b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608490fd5b0390fd5b6154c561537d565b806154d0575061544e565b60405162461bcd60e51b81529081906154b990600483016107bb565b6001600160e01b03191603615505575f80808080613b70565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e730000000000000000000000000000000000000000000000006064820152608490fd5b61559291925060203d8111615599575b61558a818361075b565b8101906152e6565b905f615436565b503d615580565b9493919092813b6155b4575b505050505050565b5f6001600160a01b036020956155e26040519889978896879463f23a6e6160e01b9d8e87526004870161532d565b0393165af15f9181615616575b506155fc57615443615362565b6001600160e01b03191603615505575f80808080806155ac565b61562f91925060203d81116155995761558a818361075b565b905f6155ef565b93906107cc959361566991615677946001600160a01b03809216885216602087015260a0604087015260a0860190611502565b908482036060860152611502565b91608081840391015261077d565b9493919092813b61569857505050505050565b5f6001600160a01b036020956155e26040519889978896879463bc197c8160e01b9d8e875260048701615636565b604051906156d382610723565b60018252602082016020368237825115610c92575290565b156156f257565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f7460448201527f616c537570706c790000000000000000000000000000000000000000000000006064820152608490fd5b6001600160a01b031680638b78c6d819555f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3565b638b78c6d8195433036157a457565b6382b429005f526004601cfd5b6001600160a01b0316638b78c6d8198181547f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b9190918051806157fb575b50501490565b91906020908180820191600595861b0101925b81518111851b9081528282519118528160405f209101938385101561583457939061580e565b50925050505f806157f5565b601c5f60649281946020966040519860605260405260601b602c526f23b872dd000000000000000000000000600c525af13d1560015f5114171615615888575f606052604052565b637939f4245f526004601cfd5b602090601092730b98151bedee73f9ba5f2c7b72dea02d38ce49fc60145260345260445f938480936fa9059cbb00000000000000000000000082525af13d1560018351141716156158e557603452565b6390b8ec1890526004601cfd5b60109260209260145260345260445f938480936fa9059cbb00000000000000000000000082525af13d1560018351141716156158e557603452565b602460106020939284936014526f70a082310000000000000000000000005f525afa601f3d11166020510290565b92915f936001600160a01b035f911680615976575b50505050565b909192939450604090815185845260209384860151845283865114615a27575b60418651146159e5575b606052808352630b135d3f60e11b9485825260049687830152602482019687948552815186019081604493848601925afa503d01915afa91511416905f808080615970565b606080870151821a865284870151815260018681608085825afa5185183d151715615a115750506159a0565b935097965092935093509452525f808080615970565b83860151601b8160ff1c0186527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60609116815260018681608085825afa5185183d151715615a1157505061599656fe7a773b7a6a1a56c71d7c444f8c85789ff8084674fcb1b3c236aa236aec141e00a2646970667358221220ed73516dcec48064dc5a13492d1070fcaee671a8abad3edb7f08ecf5545b4f1164736f6c63430008140033