[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "name": "ERC2612ExpiredSignature", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "signer", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC2612InvalidSigner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "uint256", "name": "max", "type": "uint256" } ], "name": "ERC4626ExceededMaxDeposit", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "uint256", "name": "max", "type": "uint256" } ], "name": "ERC4626ExceededMaxRedeem", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "uint256", "name": "maxShares", "type": "uint256" } ], "name": "ExceededMaxRedeemRequest", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "FeesTooHigh", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "currentNonce", "type": "uint256" } ], "name": "InvalidAccountNonce", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "InvalidTreasury", "type": "error" }, { "inputs": [], "name": "MathOverflowedMulDiv", "type": "error" }, { "inputs": [], "name": "MinRateReached", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "NoClaimAvailable", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "PermitFailed", "type": "error" }, { "inputs": [], "name": "ReceiverFailed", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "inputs": [], "name": "UnavailableMethod", "type": "error" }, { "inputs": [], "name": "VaultIsClosed", "type": "error" }, { "inputs": [], "name": "VaultIsEmpty", "type": "error" }, { "inputs": [], "name": "VaultIsOpen", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "requestId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "ClaimRedeem", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "requestId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "previousRequestedShares", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newRequestedShares", "type": "uint256" } ], "name": "DecreaseRedeemRequest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "lastSavedBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "returnedAssets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "fees", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalShares", "type": "uint256" } ], "name": "EpochEnd", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "lastSavedBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalShares", "type": "uint256" } ], "name": "EpochStart", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "requestId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "RedeemRequest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "supply", "type": "uint256" }, { "internalType": "uint256", "name": "duration", "type": "uint256" }, { "internalType": "uint256", "name": "annualBips", "type": "uint256" } ], "name": "_computeFees", "outputs": [ { "internalType": "uint256", "name": "fees", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_epochRate", "type": "uint256" }, { "internalType": "uint256", "name": "_fees", "type": "uint256" }, { "internalType": "uint256", "name": "_supply", "type": "uint256" } ], "name": "_computeRealRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "asset", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "claimRedeem", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "claimableRedeemRequest", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "claimableSilo", "outputs": [ { "internalType": "contract Silo", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "close", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "convertToAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "convertToShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "decreaseRedeemRequest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "internalType": "struct PermitParams", "name": "permitParams", "type": "tuple" } ], "name": "depositWithPermit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "epochId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "epochStart", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "epochId", "type": "uint256" } ], "name": "epochs", "outputs": [ { "internalType": "uint256", "name": "redeemRatio", "type": "uint256" }, { "internalType": "uint256", "name": "totalSupplySnapshot", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feesInBips", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_fees", "type": "uint16" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_treasury", "type": "address" }, { "internalType": "contract IERC20", "name": "_underlying", "type": "address" }, { "internalType": "uint256", "name": "bootstrapAmount", "type": "uint256" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "bool", "name": "withBootstrap", "type": "bool" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "lastRedeemRequestId", "outputs": [ { "internalType": "uint256", "name": "epochId", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastSavedBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxRedeemRequest", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assetReturned", "type": "uint256" } ], "name": "open", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "pendingRedeemRequest", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingSilo", "outputs": [ { "internalType": "contract Silo", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "previewClaimRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "epochRate", "type": "uint256" } ], "name": "previewSettle", "outputs": [ { "internalType": "uint256", "name": "assetsToVault", "type": "uint256" }, { "internalType": "uint256", "name": "expectedAssetFromOwner", "type": "uint256" }, { "internalType": "uint256", "name": "redeemRatio", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "fees", "type": "uint256" }, { "internalType": "uint256", "name": "pendingRedeem", "type": "uint256" }, { "internalType": "uint256", "name": "assetsToWithdraw", "type": "uint256" }, { "internalType": "uint256", "name": "totalSupplySnapshot", "type": "uint256" } ], "internalType": "struct SettleValues", "name": "settleValues", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "requestRedeem", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "requestRedeemAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_block_deposits", "type": "bool" } ], "name": "setBlockDeposits", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_fees", "type": "uint16" } ], "name": "setFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_rate", "type": "uint256" } ], "name": "setMinRate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_treasury", "type": "address" } ], "name": "setTreasury", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "epochRate", "type": "uint256" } ], "name": "settle", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalClaimableAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalPendingRedeems", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "treasury", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "vaultIsOpen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b614d5680620000e66000396000f3fe60806040523480156200001157600080fd5b5060043610620004145760003560e01c806379ba50971162000229578063c6d8a0741162000131578063db6b207411620000bb578063ebe7ef951162000086578063ebe7ef9514620009d9578063f0f4426014620009f0578063f2fde38b1462000a07578063f9c5fa4a1462000a1e57600080fd5b8063db6b20741462000902578063dd62ed3e1462000919578063de4e099b1462000974578063e30c397814620009cf57600080fd5b8063d3181f5a11620000fc578063d3181f5a14620008a6578063d505accf14620008bd578063d6da9ab814620008d4578063d905777e14620008eb57600080fd5b8063c6d8a0741462000867578063c6e6f59214620004b1578063ca1123c2146200087b578063cce96c21146200089257600080fd5b806394bf804d11620001b3578063aa9bbc0c116200017e578063aa9bbc0c14620007ef578063ba08765214620007f9578063c1c73f531462000810578063c6b61e4c146200082757600080fd5b806394bf804d14620007a057806395d89b4114620007b75780639ae4bf0e14620007c1578063a9059cbb14620007d857600080fd5b806384b0196e11620001f457806384b0196e14620007495780638da5cb5b14620007685780638df8280014620007725780638e06aafc146200078957600080fd5b806379ba509714620007145780637ecebe00146200071e57806380023a6914620007355780638456cb59146200073f57600080fd5b806323b872dd116200032d57806343d726d611620002b7578063690e7c091162000282578063690e7c0914620006c55780636e553f6514620006dc57806370a0823114620006f3578063715018a6146200070a57600080fd5b806343d726d6146200063d57806353dc1dd314620006475780635c975abb146200068657806361d027b314620006b157600080fd5b80633f4ba83a11620002f85780633f4ba83a14620005f75780633f78f54f1462000601578063402d267d14620006185780634375d8cd146200062f57600080fd5b806323b872dd14620005a0578063313ce56714620005b75780633644e51514620005c757806338d52e0f14620005d157600080fd5b8063095ea7b311620003af57806315e5a1e5116200037a57806315e5a1e5146200052d57806317d6eb81146200053757806318160ddd146200054e578063221bf17e146200057657600080fd5b8063095ea7b314620004c55780630c5cb57214620004dc578063120dc84414620004f35780631291d4e0146200050a57600080fd5b80630217631e11620003f05780630217631e1462000475578063065fb545146200047f57806306fdde03146200049857806307a2d13a14620004b157600080fd5b806288d3e5146200041957806301e1d114146200044357806301ffc9a7146200044d575b600080fd5b620004306200042a36600462003f94565b62000a28565b6040519081526020015b60405180910390f35b6200043062000a81565b620004646200045e36600462003fcb565b62000b83565b60405190151581526020016200043a565b6200043060055481565b620004966200049036600462004096565b62000bed565b005b620004a262000c7c565b6040516200043a91906200412b565b62000430620004c236600462004140565b90565b62000464620004d63660046200415a565b62000d3f565b62000430620004ed36600462003f94565b62000d59565b6200049662000504366004620041ab565b62000d76565b620004306200051b36600462003f94565b600b6020526000908152604090205481565b6200043060035481565b620004966200054836600462004287565b6200123f565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025462000430565b6007546200058c90600160a01b900461ffff1681565b60405161ffff90911681526020016200043a565b62000464620005b1366004620042fb565b6200144a565b604051601281526020016200043a565b6200043062001472565b6006546001600160a01b03165b6040516001600160a01b0390911681526020016200043a565b620004966200147e565b620004306200061236600462004341565b62001494565b620004306200062936600462003f94565b620014dd565b600454620004649060ff1681565b6200049662001521565b620004306200065836600462003f94565b600280546000908152600a602090815260408083206001600160a01b03909516835293909201909152205490565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1662000464565b600754620005de906001600160a01b031681565b62000496620006d636600462004140565b6200167f565b62000430620006ed3660046200436e565b620016fb565b620004306200070436600462003f94565b62001861565b62000496620018a6565b62000496620018bc565b620004306200072f36600462003f94565b6200190a565b6200043062001917565b6200049662001942565b6200075362001956565b6040516200043a9796959493929190620043a1565b620005de62001a3f565b620004966200078336600462004140565b62001a74565b620004306200079a36600462004459565b62001b02565b62000430620007b13660046200436e565b62001bad565b620004a262001c6f565b62000496620007d236600462004140565b62001cc2565b62000464620007e93660046200415a565b62001d23565b6200043060025481565b620004306200080a366004620044a7565b62001d33565b620004306200082136600462004341565b62001f33565b620008516200083836600462004140565b600a602052600090815260409020805460019091015482565b604080519283526020830191909152016200043a565b600854620005de906001600160a01b031681565b620004966200088c366004620044ee565b62001f6e565b600954620005de906001600160a01b031681565b62000430620008b736600462003f94565b62001ff5565b62000496620008ce3660046200451e565b62002047565b62000496620008e536600462004593565b620021dd565b62000430620008fc36600462003f94565b620021fa565b620004306200091336600462003f94565b6200224a565b620004306200092a366004620045b3565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6200098b6200098536600462004140565b62002296565b604080519485526020808601949094528481019290925280516060808601919091529281015160808501529081015160a0840152015160c082015260e0016200043a565b620005de620023ed565b62000496620009ea36600462004140565b62002417565b6200049662000a0136600462003f94565b620024fa565b6200049662000a1836600462003f94565b62002567565b62000430620025f0565b6001600160a01b0381166000908152600b6020526040812054600254811462000a77576000818152600a602090815260408083206001600160a01b038716845260020190915290205462000a7a565b60005b9392505050565b60045460009060ff161562000b05576006546040516370a0823160e01b81523060048201526001600160a01b03909116906370a08231906024015b602060405180830381865afa15801562000ada573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b009190620045e6565b905090565b6005546006546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801562000b51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b779190620045e6565b62000b00919062004616565b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148062000be757506001600160e01b031982167f440af65200000000000000000000000000000000000000000000000000000000145b92915050565b62000bf76200262a565b60045460ff161562000c1c5760405163cf9c0f0960e01b815260040160405180910390fd5b33600062000c2a8262001ff5565b111562000c3f5762000c3d818262002687565b505b600062000c4c826200224a565b60085490915062000c699083906001600160a01b031683620027a9565b62000c7781838486620027b6565b505050565b606060007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace005b905080600301805462000cb5906200462c565b80601f016020809104026020016040519081016040528092919081815260200182805462000ce3906200462c565b801562000d345780601f1062000d085761010080835404028352916020019162000d34565b820191906000526020600020905b81548152906001019060200180831162000d1657829003601f168201915b505050505091505090565b60003362000d4f81858562002986565b5060019392505050565b600062000d656200262a565b62000be7338362002687565b919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff1660008115801562000dc25750825b905060008267ffffffffffffffff16600114801562000de05750303b155b90508115801562000def575080155b1562000e27576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831562000e5c57845468ff00000000000000001916680100000000000000001785555b60008d61ffff161162000eb65760405162461bcd60e51b815260206004820152601560248201527f46656573206d757374206265206e6f6e2d7a65726f000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b038c1662000f0e5760405162461bcd60e51b815260206004820152601c60248201527f4f776e657220616464726573732063616e6e6f74206265207a65726f00000000604482015260640162000ead565b6001600160a01b038b1662000f665760405162461bcd60e51b815260206004820152601f60248201527f547265617375727920616464726573732063616e6e6f74206265207a65726f00604482015260640162000ead565b6001600160a01b038a1662000fe45760405162461bcd60e51b815260206004820152602760248201527f556e6465726c79696e6720617373657420616464726573732063616e6e6f742060448201527f6265207a65726f00000000000000000000000000000000000000000000000000606482015260840162000ead565b6000885111620010375760405162461bcd60e51b815260206004820152601660248201527f4e616d65206d757374206265206e6f6e2d656d70747900000000000000000000604482015260640162000ead565b60008751116200108a5760405162461bcd60e51b815260206004820152601860248201527f53796d626f6c206d757374206265206e6f6e2d656d7074790000000000000000604482015260640162000ead565b600160028190556004805460ff19169091179055600680546001600160a01b0319166001600160a01b038c161790556040518a90620010c99062003f70565b6001600160a01b039091168152602001604051809103906000f080158015620010f6573d6000803e3d6000fd5b50600880546001600160a01b0319166001600160a01b03929092169190911790556040518a90620011279062003f70565b6001600160a01b039091168152602001604051809103906000f08015801562001154573d6000803e3d6000fd5b50600980546001600160a01b0319166001600160a01b039290921691909117905562001181888862002995565b6200118c8c620029ab565b6200119788620029c0565b620011a162002a0b565b8515620011b657620011b4898d620016fb565b505b620011c18b620024fa565b620011cc8d62001f6e565b6289544060005562989680600155600c805460ff1916905583156200123057845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b620012496200262a565b60045460ff16156200126e5760405163cf9c0f0960e01b815260040160405180910390fd5b60008411620012c05760405162461bcd60e51b815260206004820152601760248201527f536861726573206d757374206265206e6f6e2d7a65726f000000000000000000604482015260640162000ead565b6001600160a01b038316620013185760405162461bcd60e51b815260206004820152601f60248201527f526563656976657220616464726573732063616e6e6f74206265207a65726f00604482015260640162000ead565b6001600160a01b038216620013705760405162461bcd60e51b815260206004820152601c60248201527f4f776e657220616464726573732063616e6e6f74206265207a65726f00000000604482015260640162000ead565b336001600160a01b038316146200138e576200138e82338662002a1f565b60006200139b8462001ff5565b1115620013b057620013ae838462002687565b505b620013bb826200224a565b8411156200141c578284620013d0846200224a565b6040517fb9eb7aa50000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830191909152604482015260640162000ead565b600854620014369083906001600160a01b031686620027a9565b6200144484848484620027b6565b50505050565b6000336200145a85828562002a1f565b6200146785858562002ad4565b506001949350505050565b600062000b0062002b39565b6200148862002b45565b6200149262002b7b565b565b600080620014a88386629896808462002bef565b905062989680620014ba858362004668565b620014c691906200467e565b9050620014d48382620046ae565b95945050505050565b60006200150b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1690565b620015195760001962000be7565b600092915050565b6200152b62002b45565b60045460ff1662001568576040517f782c1e2500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254600003620015c4576040517f61e9d8b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546005556004805460ff191690554260038190557fc33272939f066c227e913a4b3434d860794f185c551685c29451a3a38b9b259c620016437f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02546040805192835260208301919091520160405180910390a2565b6200168962002b45565b620016936200262a565b60045460ff1615620016b85760405163cf9c0f0960e01b815260040160405180910390fd5b6000620016c58262002c49565b6004805460ff191660011790559050620016f7620016e262001a3f565b6006546001600160a01b031690308462002e36565b5050565b6000620017076200262a565b600083116200177f5760405162461bcd60e51b815260206004820152603360248201527f50617373656420616d6f756e74206f66206173736574732073686f756c64206260448201527f652067726561746572207468616e207a65726f00000000000000000000000000606482015260840162000ead565b6001600160a01b038216620017e75760405162461bcd60e51b815260206004820152602760248201527f506173736564207265636569766572206d7573746e2774206265207a65726f206044820152666164647265737360c81b606482015260840162000ead565b6000620017f483620014dd565b9050808411156200184b576040517f79012fb20000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602481018590526044810182905260640162000ead565b620018593384868762002eb4565b509192915050565b6000807f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace005b6001600160a01b0390931660009081526020939093525050604090205490565b620018b062002b45565b62001492600062002f96565b3380620018c8620023ed565b6001600160a01b031614620018fc5760405163118cdaa760e01b81526001600160a01b038216600482015260240162000ead565b620019078162002f96565b50565b600062000be78262002fd0565b60045460009060ff166200193c5760085462000b00906001600160a01b031662001861565b50600090565b6200194c62002b45565b6200149262002ffa565b600060608082808083817fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10080549091501580156200199657506001810154155b620019e45760405162461bcd60e51b815260206004820152601560248201527f4549503731323a20556e696e697469616c697a65640000000000000000000000604482015260640162000ead565b620019ee62003058565b620019f8620030ab565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009c939b5091995046985030975095509350915050565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b62001a7e62002b45565b62001a886200262a565b60045460ff161562001aad5760405163cf9c0f0960e01b815260040160405180910390fd5b600062001aba8262002c49565b426003819055604080518381526020810184905292935090917fc33272939f066c227e913a4b3434d860794f185c551685c29451a3a38b9b259c910160405180910390a25050565b600062001b0e6200262a565b600033600654604051636eb1769f60e11b81526001600160a01b03808416600483015230602483015292935087929091169063dd62ed3e90604401602060405180830381865afa15801562001b67573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b8d9190620045e6565b101562001ba15762001ba1813085620030d6565b620014d48585620016fb565b600062001bb96200262a565b6000831162001c0b5760405162461bcd60e51b815260206004820152601760248201527f536861726573206d757374206265206e6f6e2d7a65726f000000000000000000604482015260640162000ead565b6001600160a01b03821662001c635760405162461bcd60e51b815260206004820152601f60248201527f526563656976657220616464726573732063616e6e6f74206265207a65726f00604482015260640162000ead565b62000a7a8383620016fb565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace009162000cb5906200462c565b62001ccc62002b45565b6000811162001d1e5760405162461bcd60e51b815260206004820152601560248201527f52617465206d757374206265206e6f6e2d7a65726f0000000000000000000000604482015260640162000ead565b600055565b60003362000d4f81858562002ad4565b600062001d3f6200262a565b6000841162001db75760405162461bcd60e51b815260206004820152603360248201527f50617373656420616d6f756e74206f66207368617265732073686f756c64206260448201527f652067726561746572207468616e207a65726f00000000000000000000000000606482015260840162000ead565b6001600160a01b03831662001e1f5760405162461bcd60e51b815260206004820152602760248201527f506173736564207265636569766572206d7573746e2774206265207a65726f206044820152666164647265737360c81b606482015260840162000ead565b6001600160a01b03821662001e9c5760405162461bcd60e51b8152602060048201526024808201527f506173736564206f776e6572206d7573746e2774206265207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840162000ead565b600062001ea983620021fa565b90508085111562001f00576040517fb94abeec0000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602481018690526044810182905260640162000ead565b60015460009062001f18908790629896808462002bef565b905062001f29338686848a62003243565b5093949350505050565b60008160000362001f475750600062000a7a565b600062001f5b85856301da9c008462002bef565b9050620014d48184612710600062002bef565b62001f7862002b45565b610bb861ffff8216111562001fb9576040517fc9034e1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007805461ffff909216600160a01b027fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6001600160a01b0381166000818152600b6020908152604080832054808452600a8084528285209585526002860184529184205481855291909252925491929091620014d48282629896808762002bef565b8342111562002086576040517f627913020000000000000000000000000000000000000000000000000000000081526004810185905260240162000ead565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888620020f38c6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006200215082620032f7565b90506000620021628287878762003342565b9050896001600160a01b0316816001600160a01b031614620021c4576040517f4b800e460000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301528b16602482015260440162000ead565b620021d18a8a8a62002986565b50505050505050505050565b620021e762002b45565b600c805460ff1916911515919091179055565b60045460009060ff1680156200223257507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16155b6200223f57600062000be7565b62000be78262001861565b60045460009060ff16806200228057507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff165b6200151957620022908262001861565b62000be7565b6000806000620022c76040518060800160405280600081526020016000815260200160008152602001600081525090565b60005485101562002304576040517f7ae1210000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006200232f7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b905060006003544262002343919062004668565b90506000620023688383600760149054906101000a900461ffff1661ffff1662001f33565b90506200237788828562001494565b6008549095506001600160a01b03166000620023938262001861565b90506000620023a88289629896808462002bef565b905060405180608001604052808581526020018381526020018281526020018781525096508099508984620023de919062004616565b98505050505050509193509193565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0062001a64565b60045460ff16156200243c5760405163cf9c0f0960e01b815260040160405180910390fd5b620024466200262a565b600280546000908152600a60209081526040808320338085529401909152812080549184919062002478838562004668565b909155505060085462002496906001600160a01b03168385620027a9565b600280546000818152600a602090815260408083206001600160a01b0388168085529501825291829020549151918252849392917f34865e459ae19e6d62b2827e0558e83e0011069c831ec3662558b93aa4478f16910160405180910390a4505050565b6200250462002b45565b6001600160a01b03811662002545576040517f14bcf5c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6200257162002b45565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b0383169081178255620025b762001a3f565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b6006546009546040516370a0823160e01b81526001600160a01b03918216600482015260009291909116906370a082319060240162000abc565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff161562001492576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000620026936200262a565b6001600160a01b0383166000908152600b60205260409020546002548103620026f4576040517f8572c1c40000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240162000ead565b620026ff8462001ff5565b6000828152600a602090815260408083206001600160a01b038981168552600290910190925282208054929055600954600654939550919262002749929082169116868662002e36565b836001600160a01b0316856001600160a01b0316837f97e51cb7384809a186f5f66727774f4e061708a7133dd467f6eb423ec4ccb8d3868560405162002799929190918252602082015260400190565b60405180910390a4505092915050565b62000c7783838362003374565b600280546000908152600a602090815260408083206001600160a01b038816845290930190529081208054869290620027f190849062004616565b90915550506002546001600160a01b0384166000908152600b60205260409020541462002835576002546001600160a01b0384166000908152600b60205260409020555b60008151118015620028e757506002546040517f01a2e97e00000000000000000000000000000000000000000000000000000000808252916001600160a01b038616916301a2e97e916200289491339188918b908990600401620046c5565b6020604051808303816000875af1158015620028b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620028da91906200470a565b6001600160e01b03191614155b156200291f576040517f9d77809700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254826001600160a01b0316846001600160a01b03167f1fdc681a13d8c5da54e301c7ce6542dcde4581e4725043fdab2db12ddc5745066200295f3390565b604080516001600160a01b039092168252602082018a90520160405180910390a450505050565b62000c7783838360016200338b565b6200299f620034bd565b620016f7828262003525565b620029b5620034bd565b62001907816200358e565b620029ca620034bd565b62001907816040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250620035dd565b62002a15620034bd565b6200149262003656565b6001600160a01b0383811660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093861683529290522054600019811462001444578181101562002ac3576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602481018290526044810183905260640162000ead565b62001444848484840360006200338b565b6001600160a01b03831662002b0057604051634b637e8f60e11b81526000600482015260240162000ead565b6001600160a01b03821662002b2c5760405163ec442f0560e01b81526000600482015260240162000ead565b62000c77838383620027a9565b600062000b006200368b565b3362002b5062001a3f565b6001600160a01b031614620014925760405163118cdaa760e01b815233600482015260240162000ead565b62002b8562003703565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b60008062002bff8686866200375f565b905062002c0c8362003842565b801562002c2c57506000848062002c275762002c2762004698565b868809115b15620014d45762002c3f60018262004616565b9695505050505050565b60008060008062002c5a8562002296565b93509350509250427f2ba91c5af725b7eb47a99fc37633a131c737733dfb297706e7b11c724250efdb62002cac7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b8351869062002cd97f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b60408051948552602085019390935291830152606082015260800160405180910390a280511562002d2f5762002d2f62002d1262001a3f565b60075483516006546001600160a01b039081169392169062002e36565b600854602082015162002d4c916001600160a01b03169062003874565b62002d7562002d5a62001a3f565b6009546006546001600160a01b039081169291168662002e36565b6008546009546040838101516020808601518351928352908201526001600160a01b03938416939092169183917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a46060810151600280546000908152600a60205260408082206001908101949094558254825281208590559184905580549162002e09836200472a565b90915550507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254620014d4565b6040516001600160a01b038481166024830152838116604483015260648201839052620014449186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050620038ae565b600c5460ff161562002f095760405162461bcd60e51b815260206004820152601460248201527f4465706f736974732061726520626c6f636b6564000000000000000000000000604482015260640162000ead565b62002f2d8462002f1862001a3f565b6006546001600160a01b031691908562002e36565b62002f39838262003931565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7848460405162002f88929190918252602082015260400190565b60405180910390a350505050565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319168155620016f7826200396b565b6000807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0062001886565b620030046200262a565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583362002bd1565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060917fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1009162000cb5906200462c565b606060007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10062000ca2565b6006546001600160a01b031663d505accf84848435602086013562003102606088016040890162004746565b6040516001600160e01b031960e088901b1681526001600160a01b0395861660048201529490931660248501526044840191909152606483015260ff166084820152606084013560a4820152608084013560c482015260e401600060405180830381600087803b1580156200317657600080fd5b505af11580156200318b573d6000803e3d6000fd5b5050600654604051636eb1769f60e11b81526001600160a01b038781166004830152868116602483015285359450909116915063dd62ed3e90604401602060405180830381865afa158015620031e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200320b9190620045e6565b1462000c77576040517fb78cb0dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316856001600160a01b0316146200326a576200326a83868362002a1f565b62003276838262003874565b6006546200328f906001600160a01b03168584620039dc565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051620032e8929190918252602082015260400190565b60405180910390a45050505050565b600062000be76200330762002b39565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b600080600080620033568888888862003a0f565b92509250925062003368828262003ae3565b50909695505050505050565b6200337e6200262a565b62000c7783838362003bf9565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b038516620033f1576040517fe602df050000000000000000000000000000000000000000000000000000000081526000600482015260240162000ead565b6001600160a01b03841662003436576040517f94280d620000000000000000000000000000000000000000000000000000000081526000600482015260240162000ead565b6001600160a01b03808616600090815260018301602090815260408083209388168352929052208390558115620034b657836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051620034ad91815260200190565b60405180910390a35b5050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1662001492576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200352f620034bd565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036200357d8482620047b6565b5060048101620014448382620047b6565b62003598620034bd565b6001600160a01b038116620018fc576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240162000ead565b620035e7620034bd565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102620036358482620047b6565b5060038101620036468382620047b6565b5060008082556001909101555050565b62003660620034bd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff19169055565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620036b862003d5d565b620036c262003ddd565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1662001492576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008383028160001985870982811083820303915050806000036200379b5783828162003790576200379062004698565b049250505062000a7a565b808411620037d5576040517f227bc15300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600060028260038111156200385b576200385b62004883565b62003867919062004899565b60ff166001149050919050565b6001600160a01b038216620038a057604051634b637e8f60e11b81526000600482015260240162000ead565b620016f782600083620027a9565b6000620038c56001600160a01b0384168362003e37565b90508051600014158015620038ed575080806020019051810190620038eb9190620048be565b155b1562000c77576040517f5274afe70000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260240162000ead565b6001600160a01b0382166200395d5760405163ec442f0560e01b81526000600482015260240162000ead565b620016f760008383620027a9565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6040516001600160a01b0383811660248301526044820183905262000c7791859182169063a9059cbb9060640162002e6c565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111562003a4c575060009150600390508262003ad9565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801562003aa1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811662003acf5750600092506001915082905062003ad9565b9250600091508190505b9450945094915050565b600082600381111562003afa5762003afa62004883565b0362003b04575050565b600182600381111562003b1b5762003b1b62004883565b0362003b53576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111562003b6a5762003b6a62004883565b0362003ba6576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240162000ead565b600382600381111562003bbd5762003bbd62004883565b03620016f7576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240162000ead565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b03841662003c4b578181600201600082825462003c3f919062004616565b9091555062003cd89050565b6001600160a01b0384166000908152602082905260409020548281101562003cb9576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481018290526044810184905260640162000ead565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b03831662003cf857600281018054839003905562003d17565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405162002f8891815260200190565b60007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008162003d8b62003058565b80519091501562003da457805160209091012092915050565b8154801562003db4579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b60007fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008162003e0b620030ab565b80519091501562003e2457805160209091012092915050565b6001820154801562003db4579392505050565b606062000a7a8383600084600080856001600160a01b0316848660405162003e609190620048de565b60006040518083038185875af1925050503d806000811462003e9f576040519150601f19603f3d011682016040523d82523d6000602084013e62003ea4565b606091505b509150915062002c3f86838360608262003ec95762003ec38262003f2d565b62000a7a565b815115801562003ee157506001600160a01b0384163b155b1562003f25576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b038516600482015260240162000ead565b508062000a7a565b80511562003f3e5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61042480620048fd83390190565b6001600160a01b03811681146200190757600080fd5b60006020828403121562003fa757600080fd5b813562000a7a8162003f7e565b6001600160e01b0319811681146200190757600080fd5b60006020828403121562003fde57600080fd5b813562000a7a8162003fb4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200401357600080fd5b813567ffffffffffffffff8082111562004031576200403162003feb565b604051601f8301601f19908116603f011681019082821181831017156200405c576200405c62003feb565b816040528381528660208588010111156200407657600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060208284031215620040a957600080fd5b813567ffffffffffffffff811115620040c157600080fd5b620040cf8482850162004001565b949350505050565b60005b83811015620040f4578181015183820152602001620040da565b50506000910152565b6000815180845262004117816020860160208601620040d7565b601f01601f19169290920160200192915050565b60208152600062000a7a6020830184620040fd565b6000602082840312156200415357600080fd5b5035919050565b600080604083850312156200416e57600080fd5b82356200417b8162003f7e565b946020939093013593505050565b803561ffff8116811462000d7157600080fd5b80151581146200190757600080fd5b600080600080600080600080610100898b031215620041c957600080fd5b620041d48962004189565b97506020890135620041e68162003f7e565b96506040890135620041f88162003f7e565b955060608901356200420a8162003f7e565b94506080890135935060a089013567ffffffffffffffff808211156200422f57600080fd5b6200423d8c838d0162004001565b945060c08b01359150808211156200425457600080fd5b50620042638b828c0162004001565b92505060e089013562004276816200419c565b809150509295985092959890939650565b600080600080608085870312156200429e57600080fd5b843593506020850135620042b28162003f7e565b92506040850135620042c48162003f7e565b9150606085013567ffffffffffffffff811115620042e157600080fd5b620042ef8782880162004001565b91505092959194509250565b6000806000606084860312156200431157600080fd5b83356200431e8162003f7e565b92506020840135620043308162003f7e565b929592945050506040919091013590565b6000806000606084860312156200435757600080fd5b505081359360208301359350604090920135919050565b600080604083850312156200438257600080fd5b823591506020830135620043968162003f7e565b809150509250929050565b7fff00000000000000000000000000000000000000000000000000000000000000881681526000602060e081840152620043df60e084018a620040fd565b8381036040850152620043f3818a620040fd565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015620044475783518352928401929184019160010162004429565b50909c9b505050505050505050505050565b600080600083850360e08112156200447057600080fd5b843593506020850135620044848162003f7e565b925060a0603f19820112156200449957600080fd5b506040840190509250925092565b600080600060608486031215620044bd57600080fd5b833592506020840135620044d18162003f7e565b91506040840135620044e38162003f7e565b809150509250925092565b6000602082840312156200450157600080fd5b62000a7a8262004189565b803560ff8116811462000d7157600080fd5b600080600080600080600060e0888a0312156200453a57600080fd5b8735620045478162003f7e565b96506020880135620045598162003f7e565b9550604088013594506060880135935062004577608089016200450c565b925060a0880135915060c0880135905092959891949750929550565b600060208284031215620045a657600080fd5b813562000a7a816200419c565b60008060408385031215620045c757600080fd5b8235620045d48162003f7e565b91506020830135620043968162003f7e565b600060208284031215620045f957600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000be75762000be762004600565b600181811c908216806200464157607f821691505b6020821081036200466257634e487b7160e01b600052602260045260246000fd5b50919050565b8181038181111562000be75762000be762004600565b808202811582820484141762000be75762000be762004600565b634e487b7160e01b600052601260045260246000fd5b600082620046c057620046c062004698565b500490565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a06080830152620046ff60a0830184620040fd565b979650505050505050565b6000602082840312156200471d57600080fd5b815162000a7a8162003fb4565b6000600182016200473f576200473f62004600565b5060010190565b6000602082840312156200475957600080fd5b62000a7a826200450c565b601f82111562000c7757600081815260208120601f850160051c810160208610156200478d5750805b601f850160051c820191505b81811015620047ae5782815560010162004799565b505050505050565b815167ffffffffffffffff811115620047d357620047d362003feb565b620047eb81620047e484546200462c565b8462004764565b602080601f8311600181146200482357600084156200480a5750858301515b600019600386901b1c1916600185901b178555620047ae565b600085815260208120601f198616915b82811015620048545788860151825594840194600190910190840162004833565b5085821015620048735787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b600060ff831680620048af57620048af62004698565b8060ff84160691505092915050565b600060208284031215620048d157600080fd5b815162000a7a816200419c565b60008251620048f2818460208701620040d7565b919091019291505056fe608060405234801561001057600080fd5b5060405161042438038061042483398101604081905261002f9161035d565b6100456001600160a01b0382163360001961004b565b506103d7565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526100a3908590839061011016565b61010a57604080516001600160a01b038516602482015260006044808301919091528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526101009186916101b816565b61010a84826101b8565b50505050565b6000806000846001600160a01b03168460405161012d9190610386565b6000604051808303816000865af19150503d806000811461016a576040519150601f19603f3d011682016040523d82523d6000602084013e61016f565b606091505b509150915081801561019957508051158061019957508080602001905181019061019991906103b5565b80156101af57506000856001600160a01b03163b115b95945050505050565b60006101cd6001600160a01b03841683610225565b905080516000141580156101f25750808060200190518101906101f091906103b5565b155b1561022057604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b505050565b60606102338383600061023a565b9392505050565b60608147101561025f5760405163cd78605960e01b8152306004820152602401610217565b600080856001600160a01b0316848660405161027b9190610386565b60006040518083038185875af1925050503d80600081146102b8576040519150601f19603f3d011682016040523d82523d6000602084013e6102bd565b606091505b5090925090506102ce8683836102d8565b9695505050505050565b6060826102ed576102e882610334565b610233565b815115801561030457506001600160a01b0384163b155b1561032d57604051639996b31560e01b81526001600160a01b0385166004820152602401610217565b5080610233565b8051156103445780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60006020828403121561036f57600080fd5b81516001600160a01b038116811461023357600080fd5b6000825160005b818110156103a7576020818601810151858301520161038d565b506000920191825250919050565b6000602082840312156103c757600080fd5b8151801515811461023357600080fd5b603f806103e56000396000f3fe6080604052600080fdfea264697066735822122023592884975ccfdea77b085e51d019abcf5cefd0a5294c8f9a8050cf00564d6764736f6c63430008150033a264697066735822122070b97de328bac645bc20bd70c066855886248ffb8ab4b253fa9001a04a1cc08664736f6c63430008150033