[ { "inputs": [ { "internalType": "address", "name": "riskManager_", "type": "address" }, { "internalType": "contract ERC20", "name": "asset_", "type": "address" }, { "internalType": "address", "name": "treasury_", "type": "address" }, { "internalType": "address", "name": "accountFactory", "type": "address" }, { "internalType": "address", "name": "liquidator", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AmountExceedsBalance", "type": "error" }, { "inputs": [], "name": "AuctionOngoing", "type": "error" }, { "inputs": [], "name": "CoolDownPeriodNotPassed", "type": "error" }, { "inputs": [], "name": "FunctionIsPaused", "type": "error" }, { "inputs": [], "name": "FunctionNotImplemented", "type": "error" }, { "inputs": [], "name": "InvalidVersion", "type": "error" }, { "inputs": [], "name": "IsNotAnAccount", "type": "error" }, { "inputs": [], "name": "IsNotAnAccountWithDebt", "type": "error" }, { "inputs": [], "name": "LiquidationWeightsTooHigh", "type": "error" }, { "inputs": [], "name": "NonExistingTranche", "type": "error" }, { "inputs": [], "name": "OnlyGuardian", "type": "error" }, { "inputs": [], "name": "OpenPositionNonZero", "type": "error" }, { "inputs": [], "name": "TrancheAlreadyExists", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "inputs": [], "name": "ZeroAmount", "type": "error" }, { "inputs": [], "name": "ZeroShares", "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": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "creditor", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "startDebt", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "initiationReward", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "terminationReward", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "penalty", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "badDebt", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "surplus", "type": "uint256" } ], "name": "AuctionFinished", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "creditor", "type": "address" }, { "indexed": false, "internalType": "uint128", "name": "openDebt", "type": "uint128" } ], "name": "AuctionStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "by", "type": "address" }, { "indexed": false, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "fee", "type": "uint256" }, { "indexed": true, "internalType": "bytes3", "name": "referrer", "type": "bytes3" } ], "name": "Borrow", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "beneficiary", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "CreditApproval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "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": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newGuardian", "type": "address" } ], "name": "GuardianChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "interest", "type": "uint256" } ], "name": "InterestSynced", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "tranche", "type": "address" }, { "indexed": true, "internalType": "uint8", "name": "trancheIndex", "type": "uint8" }, { "indexed": false, "internalType": "uint16", "name": "interestWeight", "type": "uint16" } ], "name": "InterestWeightTrancheUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "liquidationWeight", "type": "uint16" } ], "name": "LiquidationWeightTrancheUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "repayPauseFlagsUpdated", "type": "bool" }, { "indexed": false, "internalType": "bool", "name": "withdrawPauseFlagsUpdated", "type": "bool" }, { "indexed": false, "internalType": "bool", "name": "borrowPauseFlagsUpdated", "type": "bool" }, { "indexed": false, "internalType": "bool", "name": "depositPauseFlagsUpdated", "type": "bool" }, { "indexed": false, "internalType": "bool", "name": "liquidationPauseFlagsUpdated", "type": "bool" } ], "name": "PauseFlagsUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "totalDebt", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalLiquidity", "type": "uint256" }, { "indexed": false, "internalType": "uint80", "name": "interestRate", "type": "uint80" } ], "name": "PoolStateUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Repay", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "riskManager", "type": "address" } ], "name": "RiskManagerUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "tranche", "type": "address" } ], "name": "TranchePopped", "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": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "interestWeight", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "liquidationWeight", "type": "uint16" } ], "name": "TreasuryWeightsUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "accountVersion", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "valid", "type": "bool" } ], "name": "ValidAccountVersionsUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "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": "address", "name": "tranche", "type": "address" }, { "internalType": "uint16", "name": "interestWeight_", "type": "uint16" } ], "name": "addTranche", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "beneficiary", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "approveBeneficiary", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "asset", "outputs": [ { "internalType": "contract ERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "startDebt", "type": "uint256" }, { "internalType": "uint256", "name": "minimumMargin_", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "bidder", "type": "address" } ], "name": "auctionRepay", "outputs": [ { "internalType": "bool", "name": "earlyTerminate", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "bytes3", "name": "referrer", "type": "bytes3" } ], "name": "borrow", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "borrowPaused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "calcUnrealisedDebt", "outputs": [ { "internalType": "uint256", "name": "unrealisedDebt", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "guardian_", "type": "address" } ], "name": "changeGuardian", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "closeMarginAccount", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "convertToAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "convertToShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "creditAllowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "from", "type": "address" } ], "name": "depositInLendingPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "depositPaused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "trancheIndex", "type": "uint256" }, { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "donateToTranche", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amountBorrowed", "type": "uint256" }, { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "actionTarget", "type": "address" }, { "internalType": "bytes", "name": "actionData", "type": "bytes" }, { "internalType": "bytes3", "name": "referrer", "type": "bytes3" } ], "name": "flashAction", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "callbackData", "type": "bytes" } ], "name": "flashActionCallback", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getInterestRateConfig", "outputs": [ { "internalType": "uint72", "name": "", "type": "uint72" }, { "internalType": "uint72", "name": "", "type": "uint72" }, { "internalType": "uint72", "name": "", "type": "uint72" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getLiquidationParameters", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" }, { "internalType": "uint16", "name": "", "type": "uint16" }, { "internalType": "uint16", "name": "", "type": "uint16" }, { "internalType": "uint16", "name": "", "type": "uint16" }, { "internalType": "uint80", "name": "", "type": "uint80" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getOpenPosition", "outputs": [ { "internalType": "uint256", "name": "openPosition", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "guardian", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "interestRate", "outputs": [ { "internalType": "uint80", "name": "", "type": "uint80" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "isValidVersion", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "liquidationPaused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" } ], "name": "liquidityOf", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" } ], "name": "liquidityOfAndSync", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxMint", "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": "maxWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "accountVersion", "type": "uint256" } ], "name": "openMarginAccount", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" }, { "internalType": "address", "name": "numeraire", "type": "address" }, { "internalType": "address", "name": "liquidator_", "type": "address" }, { "internalType": "uint256", "name": "minimumMargin_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "originationFee", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "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": "pauseTimestamp", "outputs": [ { "internalType": "uint96", "name": "", "type": "uint96" } ], "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": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "repay", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "repayPaused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "riskManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "accountVersion", "type": "uint256" }, { "internalType": "bool", "name": "valid", "type": "bool" } ], "name": "setAccountVersion", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint72", "name": "baseRatePerYear_", "type": "uint72" }, { "internalType": "uint72", "name": "lowSlopePerYear_", "type": "uint72" }, { "internalType": "uint72", "name": "highSlopePerYear_", "type": "uint72" }, { "internalType": "uint16", "name": "utilisationThreshold_", "type": "uint16" } ], "name": "setInterestParameters", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "uint16", "name": "interestWeight_", "type": "uint16" } ], "name": "setInterestWeightTranche", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "initiationWeight_", "type": "uint16" }, { "internalType": "uint16", "name": "penaltyWeight_", "type": "uint16" }, { "internalType": "uint16", "name": "terminationWeight_", "type": "uint16" }, { "internalType": "uint16", "name": "minRewardWeight_", "type": "uint16" }, { "internalType": "uint80", "name": "maxReward_", "type": "uint80" } ], "name": "setLiquidationParameters", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "liquidationWeight", "type": "uint16" } ], "name": "setLiquidationWeightTranche", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint96", "name": "minimumMargin_", "type": "uint96" } ], "name": "setMinimumMargin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint8", "name": "originationFee_", "type": "uint8" } ], "name": "setOriginationFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "riskManager_", "type": "address" } ], "name": "setRiskManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "treasury_", "type": "address" } ], "name": "setTreasury", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "interestWeight_", "type": "uint16" }, { "internalType": "uint16", "name": "liquidationWeight", "type": "uint16" } ], "name": "setTreasuryWeights", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "startDebt", "type": "uint256" }, { "internalType": "uint256", "name": "minimumMargin_", "type": "uint256" }, { "internalType": "address", "name": "terminator", "type": "address" } ], "name": "settleLiquidationHappyFlow", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "startDebt", "type": "uint256" }, { "internalType": "uint256", "name": "minimumMargin_", "type": "uint256" }, { "internalType": "address", "name": "terminator", "type": "address" } ], "name": "settleLiquidationUnhappyFlow", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "skim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "initiator", "type": "address" }, { "internalType": "uint256", "name": "minimumMargin_", "type": "uint256" } ], "name": "startLiquidation", "outputs": [ { "internalType": "uint256", "name": "startDebt", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAssets", "outputs": [ { "internalType": "uint256", "name": "totalDebt", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalLiquidity", "outputs": [ { "internalType": "uint256", "name": "totalLiquidity_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "repayPaused_", "type": "bool" }, { "internalType": "bool", "name": "withdrawPaused_", "type": "bool" }, { "internalType": "bool", "name": "borrowPaused_", "type": "bool" }, { "internalType": "bool", "name": "depositPaused_", "type": "bool" }, { "internalType": "bool", "name": "liquidationPaused_", "type": "bool" } ], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "updateInterestRate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "withdrawFromLendingPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawPaused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ]
61014060405234801562000011575f80fd5b506040516200646438038062006464833981016040819052620000349162000371565b8380816001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa15801562000072573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526200009b919081019062000425565b604051602001620000ad9190620004d8565b604051602081830303815290604052826001600160a01b03166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015620000f8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262000121919081019062000425565b6040516020016200013391906200051a565b6040516020818303038152906040528181846001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000181573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a7919062000549565b5f80546001600160a01b0319163390811782556040518e9282917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620001f2816200026a565b506005620002018482620005fc565b506006620002108382620005fc565b5060ff81166080524660a05262000226620002be565b60c052505050506001600160a01b0391821660e05250600f80546001600160a01b031916958216959095179094555090821661010052166101205250620007429050565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f6d9a586ef7be36e9ed3db326a9c62cce6c939c7ddae2c48f8f35562dce4fcd729060200160405180910390a150565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6005604051620002f19190620006c8565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6001600160a01b03811681146200036e575f80fd5b50565b5f805f805f60a0868803121562000386575f80fd5b8551620003938162000359565b6020870151909550620003a68162000359565b6040870151909450620003b98162000359565b6060870151909350620003cc8162000359565b6080870151909250620003df8162000359565b809150509295509295909350565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156200041d57818101518382015260200162000403565b50505f910152565b5f6020828403121562000436575f80fd5b81516001600160401b03808211156200044d575f80fd5b818401915084601f83011262000461575f80fd5b815181811115620004765762000476620003ed565b604051601f8201601f19908116603f01168101908382118183101715620004a157620004a1620003ed565b81604052828152876020848701011115620004ba575f80fd5b620004cd83602083016020880162000401565b979650505050505050565b69020b931b0b234b0ab19160b51b81525f8251620004fe81600a85016020870162000401565b64081119589d60da1b600a939091019283015250600f01919050565b653230b931ab1960d11b81525f82516200053c81600685016020870162000401565b9190910160060192915050565b5f602082840312156200055a575f80fd5b815160ff811681146200056b575f80fd5b9392505050565b600181811c908216806200058757607f821691505b602082108103620005a657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005f757805f5260205f20601f840160051c81016020851015620005d35750805b601f840160051c820191505b81811015620005f4575f8155600101620005df565b50505b505050565b81516001600160401b03811115620006185762000618620003ed565b620006308162000629845462000572565b84620005ac565b602080601f83116001811462000666575f84156200064e5750858301515b5f19600386901b1c1916600185901b178555620006c0565b5f85815260208120601f198616915b82811015620006965788860151825594840194600190910190840162000675565b5085821015620006b457878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f808354620006d78162000572565b60018281168015620006f25760018114620007085762000736565b60ff198416875282151583028701945062000736565b875f526020805f205f5b858110156200072d5781548a82015290840190820162000712565b50505082870194505b50929695505050505050565b60805160a05160c05160e0516101005161012051615c78620007ec5f395f8181610ff40152818161125501528181611b28015261234c01525f81816118e401528181611ff6015261241e01525f81816105e801528181610dce01528181611578015281816116ae015281816117ad01528181611b830152818161225501528181612329015281816126ae0152613f9501525f6110a101525f61107101525f6105940152615c785ff3fe608060405234801561000f575f80fd5b506004361061046f575f3560e01c8063894bacc91161024d578063bcb4bbea11610140578063d905777e116100bf578063ee02e45411610084578063ee02e45414610b4d578063ef8b30f714610b60578063f0f4426014610b73578063f2fde38b14610b86578063f5f9a4aa14610b99575f80fd5b8063d905777e14610acd578063dd62ed3e14610af5578063e11a0b8314610b1f578063e6b75aa514610b27578063e970a25f14610b3a575f80fd5b8063ce76756f11610105578063ce76756f14610a78578063ce96cb7714610a80578063d215f8a014610a93578063d505accf14610aa6578063d53dc73914610ab9575f80fd5b8063bcb4bbea14610a2b578063c11002df14610a3f578063c63d75b614610650578063c6e6f59214610a52578063ce67805a14610a65575f80fd5b8063acb70815116101cc578063b73c02ff11610191578063b73c02ff14610946578063b8bb5c4214610968578063ba08765214610938578063baf5dc441461097c578063bb278a09146109ac575f80fd5b8063acb70815146108ce578063ad55a588146108e1578063ad84f341146108f4578063b3d7f6b914610925578063b460af9414610938575f80fd5b80639086c3a1116102125780639086c3a11461089257806392d5f9f0146108a557806394bf804d1461072457806395d89b41146108b8578063a9059cbb146108c0575f80fd5b8063894bacc9146108025780638994685f146108155780638c480523146108285780638da5cb5b1461086d5780638dfaafea1461087f575f80fd5b80633f4ba83a116103655780636e553f65116102e45780637ecebe00116102a95780637ecebe00146107a25780637f3357a4146107c157806383cc645e146107d45780638456cb59146107e757806385e5ce4e146107ef575f80fd5b80636e553f651461072457806370a082311461073257806372b5e923146107515780637c3a00fd146107645780637db71c4d1461078f575f80fd5b80634cdad5061161032a5780634cdad5061461068a5780634da1f9a81461069d5780635d6af166146106b057806362c9b0f0146106fe57806362ca846014610711575f80fd5b80633f4ba83a146106355780633fc1e6911461063d578063402d267d14610650578063452a9320146106645780634784266314610677575f80fd5b80631e9dbce6116103f1578063313ce567116103b6578063313ce5671461058f57806332c97c26146105c85780633644e515146105db57806338d52e0f146105e35780633c4750df14610622575f80fd5b80631e9dbce61461052e57806323b872dd146105425780632ce1ed15146105555780632f3ffb9f146105685780632fcb4f041461057c575f80fd5b80630a28a477116104375780630a28a477146104ed57806315770f921461050057806318160ddd146105085780631dd19cb4146105115780631e8658151461051b575f80fd5b806301e1d1141461047357806302befd241461048e57806306fdde03146104b257806307a2d13a146104c7578063095ea7b3146104da575b5f80fd5b61047b610bac565b6040519081526020015b60405180910390f35b6001546104a290600160b81b900460ff1681565b6040519015158152602001610485565b6104ba610be9565b60405161048591906152b1565b61047b6104d53660046152c3565b610c75565b6104a26104e83660046152ee565b610ca1565b61047b6104fb3660046152c3565b610d0d565b61047b610d2c565b61047b60075481565b610519610d72565b005b610519610529366004615328565b610ebd565b6001546104a290600160a01b900460ff1681565b6104a2610550366004615341565b610f0f565b61051961056336600461537f565b610f29565b6001546104a290600160a81b900460ff1681565b61051961058a36600461537f565b610f53565b6105b67f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610485565b6105196105d636600461539a565b610fc7565b61047b61106e565b61060a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610485565b61047b61063036600461537f565b6110c3565b61051961115b565b61051961064b36600461539a565b611228565b61047b61065e36600461537f565b505f1990565b60015461060a906001600160a01b031681565b60025461060a906001600160a01b031681565b61047b6106983660046152c3565b611500565b6105196106ab3660046153e1565b61150a565b600c54600d5460408051600160501b840468ffffffffffffffffff9081168252600160981b9094048416602082015292821690830152600160481b900461ffff166060820152608001610485565b61051961070c3660046153e1565b6115fa565b61051961071f36600461537f565b6116f6565b61047b6105503660046153e1565b61047b61074036600461537f565b60086020525f908152604090205481565b61051961075f36600461540f565b611728565b600c54610777906001600160501b031681565b6040516001600160501b039091168152602001610485565b61051961079d36600461542f565b611836565b61047b6107b036600461537f565b600a6020525f908152604090205481565b6105196107cf3660046154b1565b611890565b6104a26107e236600461552e565b611af9565b610519611c71565b61047b6107fd3660046152ee565b611d64565b61047b61081036600461537f565b611f79565b610519610823366004615580565b611f82565b61083b6108363660046152c3565b612302565b604051610485949392919093151584526001600160a01b03928316602085015291166040830152606082015260800190565b5f5461060a906001600160a01b031681565b61051961088d3660046155df565b612384565b6105196108a03660046155f8565b6123fd565b6105196108b3366004615637565b61251b565b6104ba612644565b6104a26105503660046152ee565b6105196108dc3660046153e1565b612651565b6105196108ef366004615677565b61273d565b5f5461090d90600160a01b90046001600160601b031681565b6040516001600160601b039091168152602001610485565b61047b6109333660046152c3565b612770565b61047b610550366004615698565b6104a26109543660046152c3565b60046020525f908152604090205460ff1681565b600d546105b690600160781b900460ff1681565b61047b61098a3660046156cc565b601660209081525f938452604080852082529284528284209052825290205481565b6109ed601054600f5462010000820461ffff908116936401000000008404821693600160301b8104831693921691600160b01b90046001600160501b031690565b6040805161ffff968716815294861660208601529285169284019290925290921660608201526001600160501b03909116608082015260a001610485565b6001546104a290600160b01b900460ff1681565b61047b610a4d36600461537f565b61278e565b61047b610a603660046152c3565b612798565b610519610a733660046156f9565b6127b7565b6105196128fc565b61047b610a8e36600461537f565b61291d565b610519610aa136600461575b565b61293e565b610519610ab436600461577c565b612acb565b6001546104a290600160c01b900460ff1681565b61047b610adb36600461537f565b6001600160a01b03165f9081526008602052604090205490565b61047b610b033660046157e5565b600960209081525f928352604080842090915290825290205481565b61047b612d09565b610519610b35366004615811565b612d7e565b610519610b4836600461582d565b612f4c565b610519610b5b3660046158a6565b6130b4565b61047b610b6e3660046152c3565b613179565b610519610b8136600461537f565b613183565b610519610b9436600461537f565b6131ce565b610519610ba73660046158ec565b613241565b600d545f904263ffffffff908116600160581b9092041614610be257610bd0612d09565b600b54610bdd919061593f565b905090565b50600b5490565b60058054610bf690615952565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2290615952565b8015610c6d5780601f10610c4457610100808354040283529160200191610c6d565b820191905f5260205f20905b815481529060010190602001808311610c5057829003601f168201915b505050505081565b6007545f908015610c9857610c93610c8b610bac565b849083613286565b610c9a565b825b9392505050565b335f8181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610cfb9086815260200190565b60405180910390a35060015b92915050565b6007545f908015610c9857610c9381610d24610bac565b8591906132a9565b600d545f904263ffffffff908116600160581b9092041614610d6257610d50612d09565b600e546001600160801b031601905090565b50600e546001600160801b031690565b610d7a6132c4565b600f54600160a01b900461ffff1615610da657604051639331280d60e01b815260040160405180910390fd5b600e54600b546040516370a0823160e01b81523060048201525f926001600160801b031691907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610e1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3f919061598a565b610e49919061593f565b610e5391906159a1565b600e54909150610e6d906001600160801b03168201613348565b600e80546001600160801b0319166001600160801b03928316178155600f546001600160a01b03165f908152601560205260409020805493909301909255600b549154610ebb92911661335c565b565b5f546001600160a01b03163314610eef5760405162461bcd60e51b8152600401610ee6906159b4565b60405180910390fd5b600d805460ff909216600160781b0260ff60781b19909216919091179055565b5f60405163ced4f63360e01b815260040160405180910390fd5b610f328161291d565b15610f5057604051632fd6c94960e21b815260040160405180910390fd5b50565b5f546001600160a01b03163314610f7c5760405162461bcd60e51b8152600401610ee6906159b4565b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa14fc14d8620a708a896fd11392a235647d99385500a295f0d7da2a258b2e967905f90a350565b600154600160c01b900460ff1615610ff25760405163bbc5234f60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461103a576040516282b42960e81b815260040160405180910390fd5b6110426132c4565b61104f848484845f613401565b600b54600e5461106891906001600160801b031661335c565b50505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000461461109e57610bdd61358b565b507f000000000000000000000000000000000000000000000000000000000000000090565b600d545f904263ffffffff908116600160581b909204161461113c576001600160a01b0382165f90815260146020526040812054600d5461111a9190600160801b900462ffffff16611113612d09565b91906132a9565b6001600160a01b0384165f908152601560205260409020540191506111569050565b506001600160a01b0381165f908152601560205260409020545b919050565b5f5462278d009061117d908290600160a01b90046001600160601b031661593f565b421161119c5760405163036a87d960e21b815260040160405180910390fd5b6001805464ff0000ffff60a01b198116909155604080515f8082526020820181905260ff600160b01b61ffff60a01b199095169485048116151593830193909352600160b81b9093049091161515606082015260808101919091527ff2971de95199967f91df0bcc4cfca74d65c7c48e619271f896873fdca0aae4ec9060a0015b60405180910390a150565b600154600160c01b900460ff16156112535760405163bbc5234f60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461129b576040516282b42960e81b815260040160405180910390fd5b6112a36132c4565b5f805f6112b08686613624565b6001600160a01b038a165f9081526008602052604081205493965091945092506112d982610c75565b90505f6112e6848661593f565b82111561133a5750600e548482038490039061130c9082906001600160801b03166159a1565b600e80546001600160801b0319166001600160801b039290921691909117905561133581613701565b61140c565b5f82611346878761593f565b61135091906159a1565b905084831061138b576001600160a01b0388165f908152601560205260408120805483929061138090849061593f565b909155506113ca9050565b6001600160a01b0388165f90815260156020526040812080548892906113b290849061593f565b909155506113ca90506113c587836159a1565b613885565b600e546113ea906113e59083906001600160801b031661593f565b613348565b600e80546001600160801b0319166001600160801b0392909216919091179055505b6114168a8461397d565b81600b5f82825461142791906159a1565b909155505060408051838152602081018590526001600160a01b038c1691829133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a461147c6139f7565b604080518a81526020810188905290810186905260608101859052608081018290525f60a082015230906001600160a01b038c16907f212af1f2c2f6bd8194697adfafd5ef352c5fc730c77be9a8d25a2ab21668e6749060c00160405180910390a35050600b54600e5461106895509093506001600160801b0316915061335c9050565b5f610d0782610c75565b600154600160b81b900460ff16156115355760405163bbc5234f60e01b815260040160405180910390fd5b335f9081526013602052604090205460ff16611563576040516282b42960e81b815260040160405180910390fd5b61156b6132c4565b6115a06001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016823085613aaa565b335f908152601560205260409020805483019055600e546115cb906001600160801b03168301613348565b600e80546001600160801b0319166001600160801b03929092169182179055600b546115f69161335c565b5050565b600154600160a81b900460ff16156116255760405163bbc5234f60e01b815260040160405180910390fd5b61162d6132c4565b335f9081526015602052604090205482111561165c576040516312d5633960e31b815260040160405180910390fd5b335f90815260156020526040902080548390039055600e54611689906001600160801b0316839003613348565b600e80546001600160801b0319166001600160801b03929092169190911790556116dd7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168284613b3b565b600b54600e546115f691906001600160801b031661335c565b5f546001600160a01b0316331461171f5760405162461bcd60e51b8152600401610ee6906159b4565b610f5081613bb8565b600154600160b81b900460ff16156117535760405163bbc5234f60e01b815260040160405180910390fd5b61175b6132c4565b805f0361177b57604051631f2a200560e01b815260040160405180910390fd5b5f6012838154811061178f5761178f6159da565b5f918252602090912001546001600160a01b0390811691506117d5907f000000000000000000000000000000000000000000000000000000000000000016333085613aaa565b6001600160a01b0381165f908152601560205260409020805483019055600e54611809906001600160801b03168301613348565b600e80546001600160801b0319166001600160801b03929092169182179055600b546115f692509061335c565b5f546001600160a01b0316331461185f5760405162461bcd60e51b8152600401610ee6906159b4565b600e80546001600160601b03909216600160801b026bffffffffffffffffffffffff60801b19909216919091179055565b600154600160b01b900460ff16156118bb5760405163bbc5234f60e01b815260040160405180910390fd5b6118c36132c4565b604051632f91bba760e21b81526001600160a01b0386811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063be46ee9c90602401602060405180830381865afa15801561192b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061194f91906159ee565b90506001600160a01b0381166119785760405163fba55c4f60e01b815260040160405180910390fd5b6001600160a01b03811633146119d4576001600160a01b038087165f9081526016602090815260408083209385168352928152828220338352905220545f19146119d4576040516282b42960e81b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b038881169190911790915560408051602081018a9052918716908201523360608201526001600160e81b0319831660808201525f9060a00160408051601f1981840301815290829052633d7e00df60e11b825291505f906001600160a01b03891690637afc01be90611a659085908b908b908b90600401615a09565b6020604051808303815f875af1158015611a81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa5919061598a565b5f8181526004602052604090205490915060ff16611ad65760405163a9146eeb60e01b815260040160405180910390fd5b5050600b54600e54611af192506001600160801b031661335c565b505050505050565b6001545f90600160c01b900460ff1615611b265760405163bbc5234f60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314611b6e576040516282b42960e81b815260040160405180910390fd5b611b766132c4565b611bab6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016833087613aaa565b5f611bb58461291d565b9050805f03611bd757604051638276ded760e01b815260040160405180910390fd5b848111611bf55760019150611bf184888886858a03613401565b8094505b611c00853086613c06565b50826001600160a01b0316846001600160a01b03167f05f2eeda0e08e4b437f487c8d7d29b14537d15e3488170dc3de5dbdf8dac468487604051611c4691815260200190565b60405180910390a350600b54600e54611c6891906001600160801b031661335c565b95945050505050565b6001546001600160a01b03163314611c9c57604051636570ecab60e11b815260040160405180910390fd5b5f54622a300090611cbe908290600160a01b90046001600160601b031661593f565b4211611cdd5760405163036a87d960e21b815260040160405180910390fd5b5f80546001600160a01b0316600160a01b426001600160601b0316021790556001805464ffffffffff60a01b191664010101010160a01b17815560408051828152602081018390529081018290526060810182905260808101919091527ff2971de95199967f91df0bcc4cfca74d65c7c48e619271f896873fdca0aae4ec9060a00161121d565b6001545f90600160c01b900460ff1615611d915760405163bbc5234f60e01b815260040160405180910390fd5b611d996132c4565b611da23361291d565b9050805f03611dc457604051638276ded760e01b815260040160405180910390fd5b5f805f611dd18486613624565b91945092509050611df682611de6838661593f565b611df0919061593f565b33613ca4565b506001600160a01b0386165f9081526015602052604081208054859290611e1e90849061593f565b9091555050600e54611e3e906113e59085906001600160801b031661593f565b600e80546001600160801b0319166001600160801b0392909216919091179055600f54600160a01b900461ffff16158015611e7a575060125415155b15611ef857601280545f198101908110611e9657611e966159da565b5f91825260209091200154604051633dd217f760e21b8152600160048201526001600160a01b039091169063f7485fdc906024015f604051808303815f87803b158015611ee1575f80fd5b505af1158015611ef3573d5f803e3d5ffd5b505050505b600f805461ffff60a01b198116600160a01b9182900461ffff908116600101169091021790556040516001600160801b0385168152309033907f846a4e40815baaa2b21f6db4e117bb994f314fdeb45061f3ae3101e3177693b49060200160405180910390a35050600b54600e54610d0792506001600160801b031661335c565b5f61113c6132c4565b600154600160b01b900460ff1615611fad5760405163bbc5234f60e01b815260040160405180910390fd5b611fb56132c4565b835f03611fd557604051631f2a200560e01b815260040160405180910390fd5b604051632f91bba760e21b81526001600160a01b0384811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063be46ee9c90602401602060405180830381865afa15801561203d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061206191906159ee565b90506001600160a01b03811661208a5760405163fba55c4f60e01b815260040160405180910390fd5b600d545f906120a7908790600160781b900460ff16612710613286565b6120b1908761593f565b90506001600160a01b0382163314612132576001600160a01b038086165f9081526016602090815260408083209386168352928152828220338352905220545f1981146121305761210282826159a1565b6001600160a01b038088165f9081526016602090815260408083209388168352928152828220338352905220555b505b61213c8186613ca4565b508086146121a057600e5461215e906001600160801b03168201879003613348565b600e80546001600160801b0319166001600160801b0392909216919091179055600f546001600160a01b03165f90815260156020526040902080548783030190555b5f856001600160a01b031663055493676121b98861291d565b6040518263ffffffff1660e01b81526004016121d791815260200190565b6020604051808303815f875af11580156121f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612217919061598a565b5f8181526004602052604090205490915060ff166122485760405163a9146eeb60e01b815260040160405180910390fd5b61227c6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168689613b3b565b6001600160e81b03198416336001600160a01b0388167f921c81c17e72f815c88a3e0fa28e7e709d56f0c5832e17b4bcc606dc9ee1a611888b6122bf81896159a1565b604080516001600160a01b03909416845260208401929092529082015260600160405180910390a45050600b54600e5461106892506001600160801b031661335c565b5f8181526004602052604081205481908190819060ff161561237d575050600e54600192507f000000000000000000000000000000000000000000000000000000000000000091507f000000000000000000000000000000000000000000000000000000000000000090600160801b90046001600160601b03165b9193509193565b5f546001600160a01b031633146123ad5760405162461bcd60e51b8152600401610ee6906159b4565b600d805461ffff60b81b1916600160b81b61ffff8416908102919091179091556040519081527f22e0ae0f91efd4f8765c4f89e4cf3876cf3b8ea47337e1415d393cb9dfb9bd8b9060200161121d565b604051632f91bba760e21b81526001600160a01b03828116600483015233917f00000000000000000000000000000000000000000000000000000000000000009091169063be46ee9c90602401602060405180830381865afa158015612465573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248991906159ee565b6001600160a01b0316146124af576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038181165f8181526016602090815260408083203380855290835281842095891680855295835292819020879055518681529192917f9c3c3fddd897f6c3dce14f62fcc742f199fb00b47c0664b980cbdea1be127411910160405180910390a4505050565b5f546001600160a01b031633146125445760405162461bcd60e51b8152600401610ee6906159b4565b61254c6132c4565b600d5461ffff8381169161257491600160981b82041690600160801b900462ffffff16615a5c565b61257e9190615a7f565b600d805462ffffff60801b1916600160801b62ffffff9390931692909202919091178155600f546001600160a01b03165f9081526014602090815260409182902061ffff86811691829055845463ffffffff60981b1916600160981b830261ffff60a81b191617600160a81b918716918202179094558251908152908101929092527f6ee1bca4e0a0dbb7e71fc4333f590901e270b3d7fbc79e5e5edf8a5137117ec3910160405180910390a1600b54600e546115f691906001600160801b031661335c565b60068054610bf690615952565b600154600160a01b900460ff161561267c5760405163bbc5234f60e01b815260040160405180910390fd5b6126846132c4565b5f61268e8261291d565b905082811161269d578061269f565b825b92506126d66001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086613aaa565b6126e1833084613c06565b5060405183815233906001600160a01b038416907f05f2eeda0e08e4b437f487c8d7d29b14537d15e3488170dc3de5dbdf8dac4684906020015b60405180910390a350600b54600e546115f691906001600160801b031661335c565b5f546001600160a01b031633146127665760405162461bcd60e51b8152600401610ee6906159b4565b6115f68282613d1c565b6007545f908015610c9857610c93612786610bac565b8490836132a9565b5f610d078261291d565b6007545f908015610c9857610c93816127af610bac565b859190613286565b5f546001600160a01b031633146127e05760405162461bcd60e51b8152600401610ee6906159b4565b600f54600160a01b900461ffff161561280c57604051639331280d60e01b815260040160405180910390fd5b61044c8361ffff168561ffff168761ffff16612828919061593f565b612832919061593f565b11156128515760405163f7fda0d360e01b815260040160405180910390fd5b6113888261ffff1611156128785760405163f7fda0d360e01b815260040160405180910390fd5b6010805465ffffffff000019166201000061ffff9788160265ffff00000000191617640100000000958716959095029490941767ffff00000000ffff1916600160301b9386169390930261ffff1916929092179316929092179055600f80546001600160b01b0316600160b01b6001600160501b0390931692909202919091179055565b6129046132c4565b600b54600e54610ebb91906001600160801b031661335c565b6001600160a01b0381165f90815260086020526040812054610d0790610c75565b5f546001600160a01b031633146129675760405162461bcd60e51b8152600401610ee6906159b4565b61296f6132c4565b60125482106129915760405163711e472760e01b815260040160405180910390fd5b8061ffff16601183815481106129a9576129a96159da565b905f5260205f2090601091828204019190066002029054906101000a900461ffff1661ffff16600d60109054906101000a900462ffffff166129eb9190615a5c565b6129f59190615a7f565b600d60106101000a81548162ffffff021916908362ffffff1602179055508060118381548110612a2757612a276159da565b905f5260205f2090601091828204019190066002026101000a81548161ffff021916908361ffff1602179055505f60128381548110612a6857612a686159da565b5f918252602080832091909101546001600160a01b03168083526014825260409283902061ffff8616908190559251928352925060ff85169183917fa161bccb4e1b3f5e1b1f63a7c354eafede3f3c96ad27019e3d71db2660908f69910161271b565b42841015612b1b5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610ee6565b5f6001612b2661106e565b6001600160a01b038a81165f818152600a602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f1981840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015612c2e573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811615801590612c645750876001600160a01b0316816001600160a01b0316145b612ca15760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610ee6565b6001600160a01b039081165f9081526009602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b600c54600d545f916001600160501b03908116670de0b6b3a7640000908101909116916301e13380600160581b90910463ffffffff1642038202049080612d508484613d72565b03600b540281612d6257612d62615a9b565b0492505050612d7081613348565b6001600160801b0316905090565b5f546001600160a01b03163314612da75760405162461bcd60e51b8152600401610ee6906159b4565b612daf6132c4565b600f54600160a01b900461ffff1615612ddb57604051639331280d60e01b815260040160405180910390fd5b6001600160a01b0382165f9081526013602052604090205460ff1615612e145760405163f67d880160e01b815260040160405180910390fd5b8061ffff16600d60108282829054906101000a900462ffffff16612e389190615a7f565b825462ffffff91821661010093840a9081029202191617909155601180546001818101909255601081047f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6801805461ffff8781166002600f9095169490940290950a83810295021916939093179092556001600160a01b0385165f818152601460209081526040808320869055601280548087019091557fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec3444810180546001600160a01b031916861790556013835292819020805460ff19169095179094559251938452935060ff84169290917fa161bccb4e1b3f5e1b1f63a7c354eafede3f3c96ad27019e3d71db2660908f69910161271b565b5f546001600160a01b03163314612f755760405162461bcd60e51b8152600401610ee6906159b4565b6001547ff2971de95199967f91df0bcc4cfca74d65c7c48e619271f896873fdca0aae4ec90600160a01b900460ff168015612fad5750855b6001805460ff60a01b1916600160a01b83151502179081905560ff600160a81b909104168015612fda5750855b6001805460ff60a81b1916600160a81b83151502179081905560ff600160b01b9091041680156130075750855b6001805460ff60b01b1916600160b01b83151502179081905560ff600160b81b9091041680156130345750855b6001805460ff60b81b1916600160b81b83151502179081905560ff600160c01b9091041680156130615750855b6001805460ff60c01b1916600160c01b9215159283021790556040805195151586529315156020860152911515928401929092529015156060830152608082015260a00160405180910390a15050505050565b6130bc6132c4565b5f546001600160a01b031633146130e55760405162461bcd60e51b8152600401610ee6906159b4565b600c805471ffffffffffffffffffffffffffffffffffff60501b1916600160501b68ffffffffffffffffff8781169190910268ffffffffffffffffff60981b191691909117600160981b8683160217909155600d80549184166affffffffffffffffffffff1990921691909117600160481b61ffff841602179055600b54600e5461106891906001600160801b031661335c565b5f610d0782612798565b5f546001600160a01b031633146131ac5760405162461bcd60e51b8152600401610ee6906159b4565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146131f75760405162461bcd60e51b8152600401610ee6906159b4565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6003546001600160a01b0316331461326b576040516282b42960e81b815260040160405180910390fd5b600380546001600160a01b03191690556115f6338383613ee1565b5f825f19048411830215820261329a575f80fd5b50910281810615159190040190565b5f825f1904841183021582026132bd575f80fd5b5091020490565b600d544263ffffffff908116600160581b9092041614610ebb575f6132e7612d09565b600d805463ffffffff60581b1916600160581b4263ffffffff1602179055600b805482019055905061331881614025565b6040518181527f787efdcea8eb1ae89f0bf874e4be63032cc15baecfd23bae4b3f282f7734c8aa9060200161121d565b5f600160801b8210613358575f80fd5b5090565b5f811561337a578161271084028161337657613376615a9b565b0490505b61271081111561338c5761271061338e565b805b90507fcca6689932fb10cfb74d0833ad7a1d37d1c12dd1b6a5765458398371880d66b683836133bc8461417a565b600c805469ffffffffffffffffffff19166001600160501b039290921691821790556040805193845260208401929092529082015260600160405180910390a1505050565b5f805f61340e8787613624565b92509250925061341d81613885565b600e54613450908590839061343c9086906001600160801b031661593f565b613446919061593f565b6113e5919061593f565b600e80546001600160801b0319166001600160801b039290921691909117905583156134fa578360155f8a6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134da91906159ee565b6001600160a01b0316815260208101919091526040015f20805490910190555b6001600160a01b0385165f90815260156020526040902080548301905561351f6139f7565b6040805188815260208101859052908101839052606081018290525f608082015260a0810185905230906001600160a01b038a16907f212af1f2c2f6bd8194697adfafd5ef352c5fc730c77be9a8d25a2ab21668e6749060c00160405180910390a35050505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60056040516135bc9190615aaf565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600f546010545f9182918291600160b01b90046001600160501b031690829061365590879061ffff16612710613286565b60105490915061367390889062010000900461ffff166127106132a9565b94508085116136825780613684565b845b94508185116136935784613695565b815b6010549095506136b4908890600160301b900461ffff166127106132a9565b93508084116136c357806136c5565b835b93508184116136d457836136d6565b815b6010549094506136f6908890640100000000900461ffff16612710613286565b925050509250925092565b6012545f908190805b801561387e57806001900390506012818154811061372a5761372a6159da565b5f9182526020808320909101546001600160a01b0316808352601590915260409091205490945092508285101561377e576001600160a01b0384165f9081526015602052604090208054869003905561387e565b6001600160a01b0384165f908152601560205260408120556137a08185614220565b8285039450836001600160a01b031663f83d08ba6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156137dd575f80fd5b505af11580156137ef573d5f803e3d5ffd5b50505050805f146138795760126138076001836159a1565b81548110613817576138176159da565b5f91825260209091200154604051633dd217f760e21b8152600160048201526001600160a01b039091169063f7485fdc906024015f604051808303815f87803b158015613862575f80fd5b505af1158015613874573d5f803e3d5ffd5b505050505b61370a565b5050505050565b601254600d5461ffff600160b81b8204811691600160a81b900416810180158015906138b057505f83115b15613957575f60158160126138c66001886159a1565b815481106138d6576138d66159da565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205490508015613955575f61390e8685856132a9565b905080820160155f6012600189038154811061392c5761392c6159da565b5f9182526020808320909101546001600160a01b03168352820192909252604001902055909403935b505b5050600f546001600160a01b03165f908152601560205260409020805490920190915550565b6001600160a01b0382165f90815260086020526040812080548392906139a49084906159a1565b90915550506007805482900390556040518181525f906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b600f805461ffff60a01b198116600160a01b9182900461ffff9081165f1901811683029190911792839055910416158015613a33575060125415155b15610ebb57601280545f198101908110613a4f57613a4f6159da565b5f918252602082200154604051633dd217f760e21b815260048101929092526001600160a01b03169063f7485fdc906024015f604051808303815f87803b158015613a98575f80fd5b505af1158015611068573d5f803e3d5ffd5b5f6040516323b872dd60e01b81526001600160a01b03851660048201526001600160a01b038416602482015282604482015260205f6064835f8a5af13d15601f3d1160015f51141617169150508061387e5760405162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152606401610ee6565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f5114161716915050806110685760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610ee6565b600280546001600160a01b0319166001600160a01b0383169081179091556040519081527f6d9a586ef7be36e9ed3db326a9c62cce6c939c7ddae2c48f8f35562dce4fcd729060200161121d565b5f613c1084610d0d565b9050805f03613c3257604051639811e0c760e01b815260040160405180910390fd5b613c3c828261397d565b83600b5f828254613c4d91906159a1565b909155505060408051858152602081018390526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a49392505050565b5f613cae83613179565b9050613cba828261435c565b82600b5f828254613ccb919061593f565b909155505060408051848152602081018390526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7910160405180910390a392915050565b5f82815260046020908152604091829020805460ff1916841515908117909155915191825283917fddda1b7c0627ea48393f748e6a87c0a8d8318fb620e1944bcbb8cdc33ff729a4910160405180910390a25050565b5f815f03613d895750670de0b6b3a7640000610d07565b825f03613d9757505f610d07565b613da8600160ff1b841060066143be565b82613dcc613dc368056bc75e2d63100000600160fe1b615b4d565b841060076143be565b825f82613de967016345785d8a0000670de0b6b3a7640000615b60565b128015613e0e5750613e0b670de0b6b3a764000067016345785d8a0000615b7f565b83125b15613e76575f613e1d846143cc565b9050670de0b6b3a764000083613e338284615ba6565b613e3d9190615bb9565b613e479190615be8565b83613e5a670de0b6b3a764000084615be8565b613e649190615bb9565b613e6e9190615b7f565b915050613e8d565b81613e8084614600565b613e8a9190615bb9565b90505b613e9f670de0b6b3a764000082615be8565b9050613ece81680238fd42c5cf03ffff1913158015613ec7575068070c1cc73b00c800008213155b60086143be565b613ed781614be2565b9695505050505050565b5f808080613ef185870187615580565b600d54939750919550935091505f90613f18908690600160781b900460ff16612710613286565b613f22908661593f565b9050613f2e8189613ca4565b50808514613f8857613f41858203613348565b600e80546001600160801b031981166001600160801b039182169390930116919091179055600f546001600160a01b03165f90815260156020526040902080548683030190555b613fbc6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168587613b3b565b604080516001600160a01b038681168252602082018890528784038284015291516001600160e81b031985169286811692908c16917f921c81c17e72f815c88a3e0fa28e7e709d56f0c5832e17b4bcc606dc9ee1a6119181900360600190a45050505050505050565b600d548190600160801b900462ffffff16801561411e576012545f908190815b818110156141195760155f60128381548110614063576140636159da565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205493508315614111576140cc601182815481106140a5576140a56159da565b5f91825260209091206010820401548991600f166002026101000a900461ffff16876132a9565b925082840160155f601284815481106140e7576140e76159da565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205594829003945b600101614045565b505050505b600e54614135906001600160801b03168401613348565b600e80546001600160801b0319166001600160801b039290921691909117905550600f546001600160a01b03165f908152601560205260409020805491909101905550565b6001545f90600160a01b900460ff161561419557505f919050565b600d54600160481b900461ffff1682106141f257600c54600d54600160981b820468ffffffffffffffffff908116600160481b830461ffff16908102939282169086030291600160501b9004166127108284010401949350505050565b600c5468ffffffffffffffffff600160501b820481169161271091600160981b909104168402040192915050565b60118281548110614233576142336159da565b5f9182526020808320601083040154600d805461ffff6002600f909616959095026101000a9092049390931662ffffff600160801b808404821692909203160262ffffff60801b19909116179091556001600160a01b03831682526013905260409020805460ff1916905560118054806142af576142af615c14565b5f8281526020902060105f1990920191820401805461ffff6002600f8516026101000a0219169055905560128054806142ea576142ea615c14565b5f82815260208082205f19908401810180546001600160a01b03191690559092019092556001600160a01b0383168083526014825260408084209390935591519182527f14254003b9294c30e1b403adc733441503a0aecf4ff410885229833defef329a910160405180910390a15050565b8060075f82825461436d919061593f565b90915550506001600160a01b0382165f818152600860209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016139eb565b816115f6576115f681615216565b5f6143df670de0b6b3a764000083615bb9565b91505f6143fa6a0c097ce7bc90715b34b9f160241b84615b7f565b6a0c097ce7bc90715b34b9f160241b6144138186615b60565b61441d9190615bb9565b6144279190615be8565b90505f6a0c097ce7bc90715b34b9f160241b6144438380615bb9565b61444d9190615be8565b905081806a0c097ce7bc90715b34b9f160241b61446a8483615bb9565b6144749190615be8565b9150614481600383615be8565b61448b9082615b7f565b90506a0c097ce7bc90715b34b9f160241b6144a68484615bb9565b6144b09190615be8565b91506144bd600583615be8565b6144c79082615b7f565b90506a0c097ce7bc90715b34b9f160241b6144e28484615bb9565b6144ec9190615be8565b91506144f9600783615be8565b6145039082615b7f565b90506a0c097ce7bc90715b34b9f160241b61451e8484615bb9565b6145289190615be8565b9150614535600983615be8565b61453f9082615b7f565b90506a0c097ce7bc90715b34b9f160241b61455a8484615bb9565b6145649190615be8565b9150614571600b83615be8565b61457b9082615b7f565b90506a0c097ce7bc90715b34b9f160241b6145968484615bb9565b6145a09190615be8565b91506145ad600d83615be8565b6145b79082615b7f565b90506a0c097ce7bc90715b34b9f160241b6145d28484615bb9565b6145dc9190615be8565b91506145e9600f83615be8565b6145f39082615b7f565b9050613ed7816002615bb9565b5f670de0b6b3a764000082121561463f5761463682614627670de0b6b3a764000080615bb9565b6146319190615be8565b614600565b610d0790615c28565b5f61466a670de0b6b3a7640000770195e54c5dd42177f53a27172fa9ec630262827000000000615bb9565b83126146aa57614692770195e54c5dd42177f53a27172fa9ec63026282700000000084615be8565b92506146a76806f05b59d3b200000082615b7f565b90505b6146c8670de0b6b3a76400006b1425982cf597cd205cef7380615bb9565b83126146fc576146e46b1425982cf597cd205cef738084615be8565b92506146f96803782dace9d900000082615b7f565b90505b614707606482615bb9565b9050614714606484615bb9565b92506e01855144814a7ff805980ff00840008312614771576e01855144814a7ff805980ff008400061474f68056bc75e2d6310000085615bb9565b6147599190615be8565b925061476e68ad78ebc5ac6200000082615b7f565b90505b6b02df0ab5a80a22c61ab5a70083126147c6576b02df0ab5a80a22c61ab5a7006147a468056bc75e2d6310000085615bb9565b6147ae9190615be8565b92506147c36856bc75e2d63100000082615b7f565b90505b693f1fce3da636ea5cf850831261481757693f1fce3da636ea5cf8506147f568056bc75e2d6310000085615bb9565b6147ff9190615be8565b9250614814682b5e3af16b1880000082615b7f565b90505b690127fa27722cc06cc5e2831261486857690127fa27722cc06cc5e261484668056bc75e2d6310000085615bb9565b6148509190615be8565b92506148656815af1d78b58c40000082615b7f565b90505b68280e60114edb805d0383126148b75768280e60114edb805d0361489568056bc75e2d6310000085615bb9565b61489f9190615be8565b92506148b4680ad78ebc5ac620000082615b7f565b90505b680ebc5fb41746121110831261490657680ebc5fb417461211106148e468056bc75e2d6310000085615bb9565b6148ee9190615be8565b925061490368056bc75e2d6310000082615b7f565b90505b6808f00f760a4b2db55d8312614955576808f00f760a4b2db55d61493368056bc75e2d6310000085615bb9565b61493d9190615be8565b92506149526802b5e3af16b188000082615b7f565b90505b6806f5f177578893793783126149a4576806f5f177578893793761498268056bc75e2d6310000085615bb9565b61498c9190615be8565b92506149a168015af1d78b58c4000082615b7f565b90505b6806248f33704b28660383126149f2576806248f33704b2866036149d168056bc75e2d6310000085615bb9565b6149db9190615be8565b92506149ef67ad78ebc5ac62000082615b7f565b90505b6805c548670b9510e7ac8312614a40576805c548670b9510e7ac614a1f68056bc75e2d6310000085615bb9565b614a299190615be8565b9250614a3d6756bc75e2d631000082615b7f565b90505b5f614a5468056bc75e2d6310000085615b7f565b68056bc75e2d63100000614a688187615b60565b614a729190615bb9565b614a7c9190615be8565b90505f68056bc75e2d63100000614a938380615bb9565b614a9d9190615be8565b9050818068056bc75e2d63100000614ab58483615bb9565b614abf9190615be8565b9150614acc600383615be8565b614ad69082615b7f565b905068056bc75e2d63100000614aec8484615bb9565b614af69190615be8565b9150614b03600583615be8565b614b0d9082615b7f565b905068056bc75e2d63100000614b238484615bb9565b614b2d9190615be8565b9150614b3a600783615be8565b614b449082615b7f565b905068056bc75e2d63100000614b5a8484615bb9565b614b649190615be8565b9150614b71600983615be8565b614b7b9082615b7f565b905068056bc75e2d63100000614b918484615bb9565b614b9b9190615be8565b9150614ba8600b83615be8565b614bb29082615b7f565b9050614bbf600282615bb9565b90506064614bcd8287615b7f565b614bd79190615be8565b979650505050505050565b5f614c10680238fd42c5cf03ffff198312158015614c09575068070c1cc73b00c800008313155b60096143be565b5f821215614c4557614c29614c2483615c28565b614be2565b614c3b670de0b6b3a764000080615bb9565b610d079190615be8565b5f6806f05b59d3b20000008312614c8b57614c696806f05b59d3b200000084615b60565b9250770195e54c5dd42177f53a27172fa9ec6302628270000000009050614cc8565b6803782dace9d90000008312614cc457614cae6803782dace9d900000084615b60565b92506b1425982cf597cd205cef73809050614cc8565b5060015b614cd3606484615bb9565b925068056bc75e2d6310000068ad78ebc5ac620000008412614d3457614d0268ad78ebc5ac6200000085615b60565b935068056bc75e2d63100000614d276e01855144814a7ff805980ff008400083615bb9565b614d319190615be8565b90505b6856bc75e2d6310000008412614d8657614d576856bc75e2d63100000085615b60565b935068056bc75e2d63100000614d796b02df0ab5a80a22c61ab5a70083615bb9565b614d839190615be8565b90505b682b5e3af16b188000008412614dd657614da9682b5e3af16b1880000085615b60565b935068056bc75e2d63100000614dc9693f1fce3da636ea5cf85083615bb9565b614dd39190615be8565b90505b6815af1d78b58c4000008412614e2657614df96815af1d78b58c40000085615b60565b935068056bc75e2d63100000614e19690127fa27722cc06cc5e283615bb9565b614e239190615be8565b90505b680ad78ebc5ac62000008412614e7557614e49680ad78ebc5ac620000085615b60565b935068056bc75e2d63100000614e6868280e60114edb805d0383615bb9565b614e729190615be8565b90505b68056bc75e2d631000008412614ec457614e9868056bc75e2d6310000085615b60565b935068056bc75e2d63100000614eb7680ebc5fb4174612111083615bb9565b614ec19190615be8565b90505b6802b5e3af16b18800008412614f1357614ee76802b5e3af16b188000085615b60565b935068056bc75e2d63100000614f066808f00f760a4b2db55d83615bb9565b614f109190615be8565b90505b68015af1d78b58c400008412614f6257614f3668015af1d78b58c4000085615b60565b935068056bc75e2d63100000614f556806f5f177578893793783615bb9565b614f5f9190615be8565b90505b68056bc75e2d6310000084614f778183615b7f565b9150600268056bc75e2d63100000614f8f8884615bb9565b614f999190615be8565b614fa39190615be8565b9050614faf8183615b7f565b9150600368056bc75e2d63100000614fc78884615bb9565b614fd19190615be8565b614fdb9190615be8565b9050614fe78183615b7f565b9150600468056bc75e2d63100000614fff8884615bb9565b6150099190615be8565b6150139190615be8565b905061501f8183615b7f565b9150600568056bc75e2d631000006150378884615bb9565b6150419190615be8565b61504b9190615be8565b90506150578183615b7f565b9150600668056bc75e2d6310000061506f8884615bb9565b6150799190615be8565b6150839190615be8565b905061508f8183615b7f565b9150600768056bc75e2d631000006150a78884615bb9565b6150b19190615be8565b6150bb9190615be8565b90506150c78183615b7f565b9150600868056bc75e2d631000006150df8884615bb9565b6150e99190615be8565b6150f39190615be8565b90506150ff8183615b7f565b9150600968056bc75e2d631000006151178884615bb9565b6151219190615be8565b61512b9190615be8565b90506151378183615b7f565b9150600a68056bc75e2d6310000061514f8884615bb9565b6151599190615be8565b6151639190615be8565b905061516f8183615b7f565b9150600b68056bc75e2d631000006151878884615bb9565b6151919190615be8565b61519b9190615be8565b90506151a78183615b7f565b9150600c68056bc75e2d631000006151bf8884615bb9565b6151c99190615be8565b6151d39190615be8565b90506151df8183615b7f565b915060648468056bc75e2d631000006151f88587615bb9565b6152029190615be8565b61520c9190615bb9565b613ed79190615be8565b6030600a820601600a820491506030600a830601600a830492506030600a8406018060101b8260081b8401016642414c230000000160c81b9250505062461bcd60e51b5f52602060045260076024528060445260645ffd5b5f81518084525f5b8181101561529257602081850181015186830182015201615276565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610c9a602083018461526e565b5f602082840312156152d3575f80fd5b5035919050565b6001600160a01b0381168114610f50575f80fd5b5f80604083850312156152ff575f80fd5b823561530a816152da565b946020939093013593505050565b803560ff81168114611156575f80fd5b5f60208284031215615338575f80fd5b610c9a82615318565b5f805f60608486031215615353575f80fd5b833561535e816152da565b9250602084013561536e816152da565b929592945050506040919091013590565b5f6020828403121561538f575f80fd5b8135610c9a816152da565b5f805f80608085870312156153ad575f80fd5b84356153b8816152da565b9350602085013592506040850135915060608501356153d6816152da565b939692955090935050565b5f80604083850312156153f2575f80fd5b823591506020830135615404816152da565b809150509250929050565b5f8060408385031215615420575f80fd5b50508035926020909101359150565b5f6020828403121561543f575f80fd5b81356001600160601b0381168114610c9a575f80fd5b5f8083601f840112615465575f80fd5b50813567ffffffffffffffff81111561547c575f80fd5b602083019150836020828501011115615493575f80fd5b9250929050565b80356001600160e81b031981168114611156575f80fd5b5f805f805f8060a087890312156154c6575f80fd5b8635955060208701356154d8816152da565b945060408701356154e8816152da565b9350606087013567ffffffffffffffff811115615503575f80fd5b61550f89828a01615455565b909450925061552290506080880161549a565b90509295509295509295565b5f805f805f60a08688031215615542575f80fd5b8535945060208601359350604086013592506060860135615562816152da565b91506080860135615572816152da565b809150509295509295909350565b5f805f8060808587031215615593575f80fd5b8435935060208501356155a5816152da565b925060408501356155b5816152da565b91506155c36060860161549a565b905092959194509250565b803561ffff81168114611156575f80fd5b5f602082840312156155ef575f80fd5b610c9a826155ce565b5f805f6060848603121561560a575f80fd5b8335615615816152da565b925060208401359150604084013561562c816152da565b809150509250925092565b5f8060408385031215615648575f80fd5b615651836155ce565b915061565f602084016155ce565b90509250929050565b80358015158114611156575f80fd5b5f8060408385031215615688575f80fd5b8235915061565f60208401615668565b5f805f606084860312156156aa575f80fd5b8335925060208401356156bc816152da565b9150604084013561562c816152da565b5f805f606084860312156156de575f80fd5b83356156e9816152da565b925060208401356156bc816152da565b5f805f805f60a0868803121561570d575f80fd5b615716866155ce565b9450615724602087016155ce565b9350615732604087016155ce565b9250615740606087016155ce565b915060808601356001600160501b0381168114615572575f80fd5b5f806040838503121561576c575f80fd5b8235915061565f602084016155ce565b5f805f805f805f60e0888a031215615792575f80fd5b873561579d816152da565b965060208801356157ad816152da565b955060408801359450606088013593506157c960808901615318565b925060a0880135915060c0880135905092959891949750929550565b5f80604083850312156157f6575f80fd5b8235615801816152da565b91506020830135615404816152da565b5f8060408385031215615822575f80fd5b8235615651816152da565b5f805f805f60a08688031215615841575f80fd5b61584a86615668565b945061585860208701615668565b935061586660408701615668565b925061587460608701615668565b915061588260808701615668565b90509295509295909350565b803568ffffffffffffffffff81168114611156575f80fd5b5f805f80608085870312156158b9575f80fd5b6158c28561588e565b93506158d06020860161588e565b92506158de6040860161588e565b91506155c3606086016155ce565b5f80602083850312156158fd575f80fd5b823567ffffffffffffffff811115615913575f80fd5b61591f85828601615455565b90969095509350505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610d0757610d0761592b565b600181811c9082168061596657607f821691505b60208210810361598457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f6020828403121561599a575f80fd5b5051919050565b81810381811115610d0757610d0761592b565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156159fe575f80fd5b8151610c9a816152da565b606081525f615a1b606083018761526e565b60018060a01b03861660208401528281036040840152838152838560208301375f602085830101526020601f19601f86011682010191505095945050505050565b62ffffff828116828216039080821115615a7857615a7861592b565b5092915050565b62ffffff818116838216019080821115615a7857615a7861592b565b634e487b7160e01b5f52601260045260245ffd5b5f8083545f60018260011c91506001831680615acc57607f831692505b60208084108203615aeb57634e487b7160e01b5f52602260045260245ffd5b818015615aff5760018114615b1457615b3f565b60ff1986168952841515850289019650615b3f565b5f8a8152602090205f5b86811015615b375781548b820152908501908301615b1e565b505084890196505b509498975050505050505050565b5f82615b5b57615b5b615a9b565b500490565b8181035f831280158383131683831282161715615a7857615a7861592b565b8082018281125f831280158216821582161715615b9e57615b9e61592b565b505092915050565b5f82615bb457615bb4615a9b565b500790565b8082025f8212600160ff1b84141615615bd457615bd461592b565b8181058314821517610d0757610d0761592b565b5f82615bf657615bf6615a9b565b600160ff1b82145f1984141615615c0f57615c0f61592b565b500590565b634e487b7160e01b5f52603160045260245ffd5b5f600160ff1b8201615c3c57615c3c61592b565b505f039056fea2646970667358221220017477decc81bcdee193c87427c537ab8f793044c58a67b6f73e9322f88f31d664736f6c634300081600330000000000000000000000000f518becfc14125f23b8422849f6393d59627ddb00000000000000000000000042000000000000000000000000000000000000060000000000000000000000000f518becfc14125f23b8422849f6393d59627ddb000000000000000000000000da14fdd72345c4d2511357214c5b89a919768e59000000000000000000000000a4b0b9fd1d91fa2de44f6abfd59cc14ba1e1a7af