[ { "inputs": [ { "internalType": "address", "name": "_factory", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "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": "strategy", "type": "address" }, { "indexed": true, "internalType": "address", "name": "asset", "type": "address" }, { "indexed": false, "internalType": "string", "name": "apiVersion", "type": "string" } ], "name": "NewTokenizedStrategy", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "profit", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "loss", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "protocolFees", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "performanceFees", "type": "uint256" } ], "name": "Reported", "type": "event" }, { "anonymous": false, "inputs": [], "name": "StrategyShutdown", "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": true, "internalType": "address", "name": "newEmergencyAdmin", "type": "address" } ], "name": "UpdateEmergencyAdmin", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newKeeper", "type": "address" } ], "name": "UpdateKeeper", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newManagement", "type": "address" } ], "name": "UpdateManagement", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newPendingManagement", "type": "address" } ], "name": "UpdatePendingManagement", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "newPerformanceFee", "type": "uint16" } ], "name": "UpdatePerformanceFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newPerformanceFeeRecipient", "type": "address" } ], "name": "UpdatePerformanceFeeRecipient", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newProfitMaxUnlockTime", "type": "uint256" } ], "name": "UpdateProfitMaxUnlockTime", "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": [], "name": "FACTORY", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_FEE", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "acceptManagement", "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": [], "name": "apiVersion", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "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": [], "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": "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": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "emergencyAdmin", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "emergencyWithdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "fullProfitUnlockDate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_asset", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "address", "name": "_management", "type": "address" }, { "internalType": "address", "name": "_performanceFeeRecipient", "type": "address" }, { "internalType": "address", "name": "_keeper", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isShutdown", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "keeper", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastReport", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "management", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "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": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "assets", "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": [], "name": "pendingManagement", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "performanceFee", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "performanceFeeRecipient", "outputs": [ { "internalType": "address", "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": "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": [], "name": "pricePerShare", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "profitMaxUnlockTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "profitUnlockingRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "maxLoss", "type": "uint256" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "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": "report", "outputs": [ { "internalType": "uint256", "name": "profit", "type": "uint256" }, { "internalType": "uint256", "name": "loss", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_sender", "type": "address" } ], "name": "requireEmergencyAuthorized", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_sender", "type": "address" } ], "name": "requireKeeperOrManagement", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_sender", "type": "address" } ], "name": "requireManagement", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_emergencyAdmin", "type": "address" } ], "name": "setEmergencyAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_keeper", "type": "address" } ], "name": "setKeeper", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_management", "type": "address" } ], "name": "setPendingManagement", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_performanceFee", "type": "uint16" } ], "name": "setPerformanceFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_performanceFeeRecipient", "type": "address" } ], "name": "setPerformanceFeeRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_profitMaxUnlockTime", "type": "uint256" } ], "name": "setProfitMaxUnlockTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "shutdownStrategy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tend", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "totalAssets", "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": "amount", "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": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unlockedShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "maxLoss", "type": "uint256" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" } ]
60a06040523480156200001157600080fd5b5060405162003f3b38038062003f3b8339810160408190526200003491620000a8565b6001600160a01b03811660805260016200004d62000072565b80546001600160a01b0319166001600160a01b039290921691909117905550620000fc565b600080620000a260017fd2841a5d2692465040bd5e06a6f3b37483952c866e0f304dc0e03f76a1f8a0b1620000da565b92915050565b600060208284031215620000bb57600080fd5b81516001600160a01b0381168114620000d357600080fd5b9392505050565b81810381811115620000a257634e487b7160e01b600052601160045260246000fd5b608051613e1c6200011f600039600081816104bb0152610a820152613e1c6000f3fe608060405234801561001057600080fd5b50600436106103af5760003560e01c806387788782116101f4578063be8f16681161011a578063d505accf116100ad578063df69b22a1161007c578063df69b22a1461077b578063ed27f7c91461078e578063ef8b30f7146106f9578063f629b7901461079657600080fd5b8063d505accf1461073a578063d905777e1461074d578063d9a0e97a14610760578063dd62ed3e1461076857600080fd5b8063c6e6f592116100e9578063c6e6f592146106f9578063c8c2fe6c1461070c578063ce96cb7714610714578063d43fdcf71461072757600080fd5b8063be8f1668146106ce578063bf86d690146106d6578063c3535b52146106de578063c63d75b6146106e657600080fd5b8063a318c1a411610192578063b3d7f6b911610161578063b3d7f6b91461068c578063b460af941461069f578063ba087652146106b2578063bc063e1a146106c557600080fd5b8063a318c1a41461064b578063a9059cbb1461065e578063aa290e6d14610671578063aced16611461068457600080fd5b806395d89b41116101ce57806395d89b411461061557806397073ae61461061d57806399530b06146106305780639f40a7b31461063857600080fd5b806387788782146105df57806388a8d602146105fa57806394bf804d1461060257600080fd5b80633644e515116102d95780635312ea8e1161027757806370a082311161024657806370a0823114610593578063748747e6146105a65780637ecebe00146105b957806382e00a44146105cc57600080fd5b80635312ea8e146105525780636a5f1aa2146105655780636e553f651461057857806370905dce1461058b57600080fd5b8063440368a3116102b3578063440368a31461052f57806348e4a649146105375780634cdad506146103e45780635141eebb1461054a57600080fd5b80633644e5151461050c57806338d52e0f14610514578063402d267d1461051c57600080fd5b806318160ddd116103515780632d632692116103205780632d632692146104ae5780632dd31000146104b6578063313ce567146104dd57806335da3394146104f757600080fd5b806318160ddd1461045557806323b872dd1461045d57806325829410146104705780632606a10b1461049157600080fd5b80630952864e1161038d5780630952864e146103f7578063095ea7b3146103ff5780630a28a477146104225780630b68f46f1461043557600080fd5b806301e1d114146103b457806306fdde03146103cf57806307a2d13a146103e4575b600080fd5b6103bc6107a9565b6040519081526020015b60405180910390f35b6103d76107c2565b6040516103c6919061353e565b6103bc6103f2366004613571565b61085d565b6103bc610878565b61041261040d3660046135af565b610891565b60405190151581526020016103c6565b6103bc610430366004613571565b6108af565b61043d6108c4565b6040516001600160a01b0390911681526020016103c6565b6103bc6108e0565b61041261046b3660046135db565b6108f2565b604080518082019091526005815264199718171960d91b60208201526103d7565b610499610924565b604080519283526020830191909152016103c6565b6103bc610d57565b61043d7f000000000000000000000000000000000000000000000000000000000000000081565b6104e5610d73565b60405160ff90911681526020016103c6565b61050a61050536600461361c565b610d8d565b005b6103bc610dec565b61043d610e30565b6103bc61052a36600461361c565b610e49565b61050a610e5c565b61050a61054536600461361c565b610f97565b6103bc610ff5565b61050a610560366004613571565b611008565b61050a61057336600461361c565b61111e565b6103bc610586366004613639565b6111f8565b61043d611323565b6103bc6105a136600461361c565b61133f565b61050a6105b436600461361c565b611352565b6103bc6105c736600461361c565b6113b6565b61050a6105da36600461361c565b6113e2565b6105e761146b565b60405161ffff90911681526020016103c6565b61043d61148a565b6103bc610610366004613639565b6114ad565b6103d76115bd565b61050a61062b3660046136d8565b61165b565b6103bc611962565b6103bc61064636600461379d565b611994565b6103bc61065936600461379d565b611ac8565b61041261066c3660046135af565b611bf8565b61050a61067f3660046137f5565b611c0d565b61043d611cb5565b6103bc61069a366004613571565b611cd8565b6103bc6106ad366004613812565b611ced565b6103bc6106c0366004613812565b611d04565b6105e761138881565b61050a611d14565b610412611d6f565b6103bc611d8c565b6103bc6106f436600461361c565b611da8565b6103bc610707366004613571565b611dbb565b61050a611dd0565b6103bc61072236600461361c565b611e80565b61050a61073536600461361c565b611e93565b61050a610748366004613863565b611f11565b6103bc61075b36600461361c565b61211f565b6103bc612132565b6103bc6107763660046138d4565b612144565b61050a610789366004613571565b61217f565b61043d612267565b61050a6107a436600461361c565b61228a565b60006107bd6107b661230f565b6007015490565b905090565b60606107cc61230f565b60010180546107da90613902565b80601f016020809104026020016040519081016040528092919081815260200182805461080690613902565b80156108535780601f1061082857610100808354040283529160200191610853565b820191906000526020600020905b81548152906001019060200180831161083657829003601f168201915b5050505050905090565b600061087261086a61230f565b83600061233d565b92915050565b600061088261230f565b600a015463ffffffff16919050565b60006108a661089e61230f565b338585612378565b50600192915050565b60006108726108bc61230f565b8360016124a0565b60006108ce61230f565b600c01546001600160a01b0316919050565b60006107bd6108ed61230f565b6124f3565b6000806108fd61230f565b905061090b8186338661250d565b610917818686866125a3565b60019150505b9392505050565b600080600061093161230f565b600d810154909150600119600160a01b90910460ff160161096d5760405162461bcd60e51b815260040161096490613936565b60405180910390fd5b600d8101805460ff60a01b1916600160a11b17905561098b33611e93565b600061099561230f565b90506000306001600160a01b03166349317f1d6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156109d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fd919061396d565b90506000610a0c836007015490565b90506000610a1984612748565b600a8501549091506000908190819063ffffffff1685871115610b9a578587039a50610a47888c60006124a0565b600a890154909250640100000000900461ffff1660008115610b595761271061ffff83168e0204955061271061ffff831685020490506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635153b1996040518163ffffffff1660e01b81526004016040805180830381865afa158015610add573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b01919061399c565b9150915060008261ffff16600014610b32575061271061ffff83168981028290049850840204610b328d83836127b0565b600a8d0154610b55908e90600160301b90046001600160a01b03168387036127b0565b5050505b8215610b9357808403935083871115610b7e57610b798a30868a03612877565b610b93565b86841115610b9357610b938a308987036127b0565b5050610bef565b868603995089600014610bde57306000908152600589016020526040812054610bdb918790610bcc908c908f906124a0565b610bd691906139e1565b61294f565b94505b8415610bef57610bef883087612877565b3060009081526005890160205260409020548015610caa5760098901546000906001600160601b031642811115610c335784830342826001600160601b0316030291505b600083610c4086886139f4565b610c4a90856139e1565b610c549190613a0b565b905080610c6664e8d4a51000866139f4565b610c709190613a0b565b60088d0155610c7f81426139e1565b60098d0180546001600160601b0319166001600160601b039290921691909117905550610cbd915050565b6009890180546001600160601b03191690555b60078901889055600b890180546001600160601b031916426001600160601b03161790557fecdd072e4d5bd913a75a37f02daedcea7e2dc0281f9942c0063cfd1cfe5c4c4f8c8c86610d0f818a613a2d565b60408051948552602085019390935291830152606082015260800160405180910390a1505050600d909601805460ff60a01b1916600160a01b17905550959694955050505050565b6000610d6161230f565b600901546001600160601b0316919050565b6000610d7d61230f565b54600160a01b900460ff16919050565b610d9633610f97565b80610d9f61230f565b600d0180546001600160a01b0319166001600160a01b03928316179055604051908216907f2bf242d027263e45fab022c28b4144255c97b30b8e54c30f1f5757906d487f0990600090a250565b600080610df761230f565b8054909150600160a81b90046affffffffffffffffffffff164614610e2457610e1f81612965565b610e2a565b80600301545b91505090565b6000610e3a61230f565b546001600160a01b0316919050565b6000610872610e5661230f565b83612a1c565b6000610e6661230f565b600d810154909150600119600160a01b90910460ff1601610e995760405162461bcd60e51b815260040161096490613936565b600d8101805460ff60a01b1916600160a11b179055610eb733611e93565b30639d7fb70c610ec561230f565b546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610f0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2f919061396d565b6040518263ffffffff1660e01b8152600401610f4d91815260200190565b600060405180830381600087803b158015610f6757600080fd5b505af1158015610f7b573d6000803e3d6000fd5b505050600d909101805460ff60a01b1916600160a01b17905550565b610f9f61230f565b600b01546001600160a01b03828116600160601b9092041614610ff25760405162461bcd60e51b815260206004820152600b60248201526a085b585b9859d95b595b9d60aa1b6044820152606401610964565b50565b6000610fff61230f565b60080154905090565b600061101261230f565b600d810154909150600119600160a01b90910460ff16016110455760405162461bcd60e51b815260040161096490613936565b600d8101805460ff60a01b1916600160a11b179055611063336113e2565b61106b61230f565b600d0154600160a81b900460ff166110b45760405162461bcd60e51b815260206004820152600c60248201526b3737ba1039b43aba3237bbb760a11b6044820152606401610964565b604051631fbd027560e31b815260048101839052309063fde813a890602401600060405180830381600087803b1580156110ed57600080fd5b505af1158015611101573d6000803e3d6000fd5b505050600d909101805460ff60a01b1916600160a01b1790555050565b61112733610f97565b6001600160a01b03811661114d5760405162461bcd60e51b815260040161096490613a40565b306001600160a01b038216036111965760405162461bcd60e51b815260206004820152600e60248201526d21b0b73737ba1031329039b2b63360911b6044820152606401610964565b8061119f61230f565b600a0180546601000000000000600160d01b031916600160301b6001600160a01b0393841602179055604051908216907f9ebbf695dd251e855d9d15a146a72f5f654dc6f8630fbc11212f27e0c88ba11a90600090a250565b60008061120361230f565b600d810154909150600119600160a01b90910460ff16016112365760405162461bcd60e51b815260040161096490613936565b600d8101805460ff60a01b1916600160a11b179055600061125561230f565b90506112618185612a1c565b8511156112b05760405162461bcd60e51b815260206004820152601e60248201527f455243343632363a206465706f736974206d6f7265207468616e206d617800006044820152606401610964565b6112bc818660006124a0565b9250826000036112fc5760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f53484152455360a81b6044820152606401610964565b61130881858786612aa3565b50600d01805460ff60a01b1916600160a01b17905592915050565b600061132d61230f565b600d01546001600160a01b0316919050565b600061087261134c61230f565b83612c3d565b61135b33610f97565b8061136461230f565b60090180546001600160601b0316600160601b6001600160a01b0393841602179055604051908216907fd7f49e282c36d417b290d4181a56943f6d670aaa2987c0d40e60d39919c6888290600090a250565b60006113c061230f565b6001600160a01b03909216600090815260049290920160205250604090205490565b60006113ec61230f565b600d8101549091506001600160a01b03838116911614806114235750600b8101546001600160a01b03838116600160601b90920416145b6114675760405162461bcd60e51b815260206004820152601560248201527408595b595c99d95b98de48185d5d1a1bdc9a5e9959605a1b6044820152606401610964565b5050565b600061147561230f565b600a0154640100000000900461ffff16919050565b600061149461230f565b600b0154600160601b90046001600160a01b0316919050565b6000806114b861230f565b600d810154909150600119600160a01b90910460ff16016114eb5760405162461bcd60e51b815260040161096490613936565b600d8101805460ff60a01b1916600160a11b179055600061150a61230f565b90506115168185612ca4565b8511156115655760405162461bcd60e51b815260206004820152601b60248201527f455243343632363a206d696e74206d6f7265207468616e206d617800000000006044820152606401610964565b6115718186600161233d565b9250826000036115b15760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f41535345545360a81b6044820152606401610964565b61130881858588612aa3565b60606115c761230f565b54604080516395d89b4160e01b815290516001600160a01b03909216916395d89b41916004808201926000929091908290030181865afa15801561160f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116379190810190613a66565b6040516020016116479190613ad4565b604051602081830303815290604052905090565b600061166561230f565b80549091506001600160a01b0316156116ae5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9a5d1a585b1a5e995960aa1b6044820152606401610964565b80546001600160a01b0319166001600160a01b038716178155600181016116d58682613b4c565b50856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611714573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117389190613c0c565b815460ff91909116600160a01b0260ff60a01b199091161781556affffffffffffffffffffff461061179f5760405162461bcd60e51b815260206004820152601060248201526f1a5b9d985b1a590818da185a5b881a5960821b6044820152606401610964565b80546001600160a81b0316600160a81b466affffffffffffffffffffff16021781556117ca81612965565b6003820155600a8101805463ffffffff1916620d2f001790556001600160a01b0383166118095760405162461bcd60e51b815260040161096490613a40565b306001600160a01b0384160361184a5760405162461bcd60e51b81526004016109649060208082526004908201526339b2b63360e11b604082015260600190565b600a81018054640100000000600160d01b031916600160301b6001600160a01b038681169190910265ffff000000001916919091176503e80000000017909155600b820180546001600160601b031916426001600160601b031617905584166118c55760405162461bcd60e51b815260040161096490613a40565b600b810180546001600160a01b03808716600160601b9081026001600160601b0393841617909355600984018054868316909402939092169290921790556040805180820182526005815264199718171960d91b602082015290519188169130917ffb1616746b8474b6b7c67f2fe5ada156ed24774d0efe8bfe529cf537ba17333091611952919061353e565b60405180910390a3505050505050565b60008061196d61230f565b8054909150610e2a90829061198d90600160a01b900460ff16600a613d0d565b600061233d565b60008061199f61230f565b600d810154909150600119600160a01b90910460ff16016119d25760405162461bcd60e51b815260040161096490613936565b600d8101805460ff60a01b1916600160a11b17905560006119f161230f565b90506119fd8186612d42565b871115611a4c5760405162461bcd60e51b815260206004820152601d60248201527f455243343632363a2072656465656d206d6f7265207468616e206d61780000006044820152606401610964565b6000611a5a8289600061233d565b905080600003611a9a5760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f41535345545360a81b6044820152606401610964565b611aa8828888848c8a612ddb565b93505050600d01805460ff60a01b1916600160a01b179055949350505050565b600080611ad361230f565b600d810154909150600119600160a01b90910460ff1601611b065760405162461bcd60e51b815260040161096490613936565b600d8101805460ff60a01b1916600160a11b1790556000611b2561230f565b9050611b3181866130a6565b871115611b805760405162461bcd60e51b815260206004820152601f60248201527f455243343632363a207769746864726177206d6f7265207468616e206d6178006044820152606401610964565b611b8c818860016124a0565b925082600003611bcc5760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f53484152455360a81b6044820152606401610964565b611bda8187878a8789612ddb565b5050600d01805460ff60a01b1916600160a01b179055949350505050565b60006108a6611c0561230f565b3385856125a3565b611c1633610f97565b61138861ffff82161115611c565760405162461bcd60e51b81526020600482015260076024820152664d41582046454560c81b6044820152606401610964565b80611c5f61230f565b600a01805465ffff00000000191664010000000061ffff9384160217905560405190821681527fdc843735e683348ec21c302ffff45462399c5c46f75f67b0a1a5395c535997539060200160405180910390a150565b6000611cbf61230f565b60090154600160601b90046001600160a01b0316919050565b6000610872611ce561230f565b83600161233d565b6000611cfc8484846000611ac8565b949350505050565b6000611cfc848484612710611994565b611d1d336113e2565b6001611d2761230f565b600d018054911515600160a81b0260ff60a81b199092169190911790556040517ffc1249757a7f27c510c8173c55d03ba442e0d33d9223e06ceb416feac8c7693f90600090a1565b6000611d7961230f565b600d0154600160a81b900460ff16919050565b6000611d9661230f565b600b01546001600160601b0316919050565b6000610872611db561230f565b83612ca4565b6000610872611dc861230f565b8360006124a0565b6000611dda61230f565b600c8101549091506001600160a01b03163314611e245760405162461bcd60e51b81526020600482015260086024820152672170656e64696e6760c01b6044820152606401610964565b600b810180546001600160601b031633600160601b810291909117909155600c820180546001600160a01b03191690556040517fff54978127edd34aec0f9061fb3b155fbe0ededdfa881ee3e0d541d3a1eef43890600090a250565b6000610872611e8d61230f565b836130a6565b6000611e9d61230f565b60098101549091506001600160a01b03838116600160601b909204161480611edb5750600b8101546001600160a01b03838116600160601b90920416145b6114675760405162461bcd60e51b815260206004820152600760248201526610b5b2b2b832b960c91b6044820152606401610964565b42841015611f615760405162461bcd60e51b815260206004820152601e60248201527f45524332303a205045524d49545f444541444c494e455f4558504952454400006044820152606401610964565b60006001611f6d610dec565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a611f9961230f565b6001600160a01b038f8116600090815260049290920160209081526040928390208054600181019091558351808301989098529582168784015293166060860152608085019190915260a084019290925260c08084018b90528251808503909101815260e08401909252815191012061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015612088573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906120be5750876001600160a01b0316816001600160a01b0316145b6121025760405162461bcd60e51b815260206004820152601560248201527422a92199181d1024a72b20a624a22fa9a4a3a722a960591b6044820152606401610964565b61211561210d61230f565b828989612378565b5050505050505050565b600061087261212c61230f565b83612d42565b60006107bd61213f61230f565b612748565b600061091d61215161230f565b6001600160a01b03808616600090815260069290920160209081526040808420928716845291905290205490565b61218833610f97565b6301e185588111156121c75760405162461bcd60e51b8152602060048201526008602482015267746f6f206c6f6e6760c01b6044820152606401610964565b60006121d161230f565b9050816000036122195730600090815260058201602052604090205480156121fe576121fe823083612877565b50600060088201556009810180546001600160601b03191690555b600a8101805463ffffffff191663ffffffff84161790556040518281527ff361aed463da6fa20358e45c6209f1d3e16d4eca706e6eab0b0aeb338729c77a9060200160405180910390a15050565b600061227161230f565b600a0154600160301b90046001600160a01b0316919050565b61229333610f97565b6001600160a01b0381166122b95760405162461bcd60e51b815260040161096490613a40565b806122c261230f565b600c0180546001600160a01b0319166001600160a01b03928316179055604051908216907fd74668a8c80a07cc56d7c3318a06439eaa815e740d97dcd83487e1fc75076b8b90600090a250565b60008061087260017fd2841a5d2692465040bd5e06a6f3b37483952c866e0f304dc0e03f76a1f8a0b1613a2d565b600080612349856124f3565b9050801561236d5761236861235f866007015490565b85908386613141565b61236f565b835b95945050505050565b6001600160a01b0383166123da5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610964565b6001600160a01b03821661243b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610964565b6001600160a01b03838116600081815260068701602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a350505050565b6000806124ae856007015490565b905060006124bb866124f3565b9050816000036124dd5780156124d25760006124d4565b845b9250505061091d565b6124e985828487613141565b9695505050505050565b60006124fe82612748565b82600201546108729190613a2d565b6001600160a01b038381166000908152600686016020908152604080832093861683529290522054600019811461259c578181101561258e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610964565b61259c858585858503612378565b5050505050565b6001600160a01b0383166126075760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610964565b6001600160a01b0382166126695760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610964565b306001600160a01b038316036126c15760405162461bcd60e51b815260206004820152601a60248201527f4552433230207472616e7366657220746f2073747261746567790000000000006044820152606401610964565b6001600160a01b0383166000908152600585016020526040812080548392906126eb908490613a2d565b90915550506001600160a01b038083166000818152600587016020526040908190208054850190555190918516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124929085815260200190565b60098101546000906001600160601b03164281111561278657600b830154600884015464e8d4a51000916001600160601b03164203020491506127aa565b6001600160601b038116156127aa5730600090815260058401602052604090205491505b50919050565b6001600160a01b0382166128065760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610964565b8083600201600082825461281a91906139e1565b90915550506001600160a01b03821660008181526005850160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a3505050565b6001600160a01b0382166128d75760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610964565b6001600160a01b038216600090815260058401602052604081208054839290612901908490613a2d565b909155505060028301805482900390556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161286a565b600081831061295e578161091d565b5090919050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f826001016040516129999190613d1c565b6040805191829003822082820182526005835264199718171960d91b6020938401528151928301939093528101919091527f9b05054bd9341297fefb2453389e7533e0f19626959ede8bc13c51627768c97460608201524660808201523060a082015260c001604051602081830303815290604052805190602001209050919050565b600d820154600090600160a81b900460ff1615612a3b57506000610872565b604051632355178960e11b81526001600160a01b038316600482015230906346aa2f1290602401602060405180830381865afa158015612a7f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091d919061396d565b306001600160a01b03841603612af35760405162461bcd60e51b815260206004820152601560248201527422a9219a1b191b1d1036b4b73a103a379039b2b63360591b6044820152606401610964565b83546001600160a01b0316612b0a81333086613192565b6040516370a0823160e01b815230600482018190529063503160d9906001600160a01b038416906370a0823190602401602060405180830381865afa158015612b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7b919061396d565b6040518263ffffffff1660e01b8152600401612b9991815260200190565b600060405180830381600087803b158015612bb357600080fd5b505af1158015612bc7573d6000803e3d6000fd5b5050505082856007016000828254612bdf91906139e1565b90915550612bf090508585846127b0565b60408051848152602081018490526001600160a01b0386169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7910160405180910390a35050505050565b6000306001600160a01b03831603612c8457612c5883612748565b6001600160a01b0383166000908152600585016020526040902054612c7d9190613a2d565b9050610872565b506001600160a01b03166000908152600591909101602052604090205490565b600d820154600090600160a81b900460ff1615612cc357506000610872565b604051632355178960e11b81526001600160a01b038316600482015230906346aa2f1290602401602060405180830381865afa158015612d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2b919061396d565b905060001981146108725761091d838260006124a0565b6040516304bd462960e01b81526001600160a01b038216600482015260009030906304bd462990602401602060405180830381865afa158015612d89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dad919061396d565b90506000198103612dc257612c7d8383612c3d565b61091d612dd1848360006124a0565b610bd68585612c3d565b60006001600160a01b038616612e035760405162461bcd60e51b815260040161096490613a40565b612710821115612e475760405162461bcd60e51b815260206004820152600f60248201526e65786365656473204d41585f42505360881b6044820152606401610964565b336001600160a01b03861614612e6357612e638786338661250d565b86546040516370a0823160e01b81523060048201526001600160a01b039091169060009082906370a0823190602401602060405180830381865afa158015612eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed3919061396d565b905060008682101561300b57604051633d6cb57560e01b815282880360048201523090633d6cb57590602401600060405180830381600087803b158015612f1957600080fd5b505af1158015612f2d573d6000803e3d6000fd5b50506040516370a0823160e01b81523060048201526001600160a01b03861692506370a082319150602401602060405180830381865afa158015612f75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f99919061396d565b91508682101561300b575080860361271085101561300757612710612fbe86896139f4565b612fc89190613a0b565b8111156130075760405162461bcd60e51b815260206004820152600d60248201526c746f6f206d756368206c6f737360981b6044820152606401610964565b8196505b61301581886139e1565b8a60070160008282546130289190613a2d565b9091555061303990508a8988612877565b61304d6001600160a01b0384168a89613203565b60408051888152602081018890526001600160a01b03808b1692908c169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a4509498975050505050505050565b6040516304bd462960e01b81526001600160a01b038216600482015260009030906304bd462990602401602060405180830381865afa1580156130ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613111919061396d565b9050600019810361312a57612c7d8361198d8585612c3d565b61091d61313b8461198d8686612c3d565b8261294f565b60008061314f868686613238565b9050600183600281111561316557613165613d92565b14801561318257506000848061317d5761317d613986565b868809115b1561236f576124e96001826139e1565b6040516001600160a01b03808516602483015283166044820152606481018290526131fd9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613322565b50505050565b6040516001600160a01b03831660248201526044810182905261323390849063a9059cbb60e01b906064016131c6565b505050565b60008080600019858709858702925082811083820303915050806000036132725783828161326857613268613986565b049250505061091d565b8084116132b95760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610964565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000613377826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166133f79092919063ffffffff16565b90508051600014806133985750808060200190518101906133989190613da8565b6132335760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610964565b6060611cfc848460008585600080866001600160a01b0316858760405161341e9190613dca565b60006040518083038185875af1925050503d806000811461345b576040519150601f19603f3d011682016040523d82523d6000602084013e613460565b606091505b50915091506134718783838761347c565b979650505050505050565b606083156134eb5782516000036134e4576001600160a01b0385163b6134e45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610964565b5081611cfc565b611cfc83838151156135005781518083602001fd5b8060405162461bcd60e51b8152600401610964919061353e565b60005b8381101561353557818101518382015260200161351d565b50506000910152565b602081526000825180602084015261355d81604085016020870161351a565b601f01601f19169190910160400192915050565b60006020828403121561358357600080fd5b5035919050565b6001600160a01b0381168114610ff257600080fd5b80356135aa8161358a565b919050565b600080604083850312156135c257600080fd5b82356135cd8161358a565b946020939093013593505050565b6000806000606084860312156135f057600080fd5b83356135fb8161358a565b9250602084013561360b8161358a565b929592945050506040919091013590565b60006020828403121561362e57600080fd5b813561091d8161358a565b6000806040838503121561364c57600080fd5b82359150602083013561365e8161358a565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156136a8576136a8613669565b604052919050565b600067ffffffffffffffff8211156136ca576136ca613669565b50601f01601f191660200190565b600080600080600060a086880312156136f057600080fd5b85356136fb8161358a565b9450602086013567ffffffffffffffff81111561371757600080fd5b8601601f8101881361372857600080fd5b803561373b613736826136b0565b61367f565b81815289602083850101111561375057600080fd5b816020840160208301376000602083830101528096505050506137756040870161359f565b92506137836060870161359f565b91506137916080870161359f565b90509295509295909350565b600080600080608085870312156137b357600080fd5b8435935060208501356137c58161358a565b925060408501356137d58161358a565b9396929550929360600135925050565b61ffff81168114610ff257600080fd5b60006020828403121561380757600080fd5b813561091d816137e5565b60008060006060848603121561382757600080fd5b8335925060208401356138398161358a565b915060408401356138498161358a565b809150509250925092565b60ff81168114610ff257600080fd5b600080600080600080600060e0888a03121561387e57600080fd5b87356138898161358a565b965060208801356138998161358a565b9550604088013594506060880135935060808801356138b781613854565b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156138e757600080fd5b82356138f28161358a565b9150602083013561365e8161358a565b600181811c9082168061391657607f821691505b6020821081036127aa57634e487b7160e01b600052602260045260246000fd5b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60006020828403121561397f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600080604083850312156139af57600080fd5b82516139ba816137e5565b602084015190925061365e8161358a565b634e487b7160e01b600052601160045260246000fd5b80820180821115610872576108726139cb565b8082028115828204841417610872576108726139cb565b600082613a2857634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610872576108726139cb565b6020808252600c908201526b5a45524f204144445245535360a01b604082015260600190565b600060208284031215613a7857600080fd5b815167ffffffffffffffff811115613a8f57600080fd5b8201601f81018413613aa057600080fd5b8051613aae613736826136b0565b818152856020838501011115613ac357600080fd5b61236f82602083016020860161351a565b61797360f01b815260008251613af181600285016020870161351a565b9190910160020192915050565b601f82111561323357600081815260208120601f850160051c81016020861015613b255750805b601f850160051c820191505b81811015613b4457828155600101613b31565b505050505050565b815167ffffffffffffffff811115613b6657613b66613669565b613b7a81613b748454613902565b84613afe565b602080601f831160018114613baf5760008415613b975750858301515b600019600386901b1c1916600185901b178555613b44565b600085815260208120601f198616915b82811015613bde57888601518255948401946001909101908401613bbf565b5085821015613bfc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215613c1e57600080fd5b815161091d81613854565b600181815b80851115613c64578160001904821115613c4a57613c4a6139cb565b80851615613c5757918102915b93841c9390800290613c2e565b509250929050565b600082613c7b57506001610872565b81613c8857506000610872565b8160018114613c9e5760028114613ca857613cc4565b6001915050610872565b60ff841115613cb957613cb96139cb565b50506001821b610872565b5060208310610133831016604e8410600b8410161715613ce7575081810a610872565b613cf18383613c29565b8060001904821115613d0557613d056139cb565b029392505050565b600061091d60ff841683613c6c565b6000808354613d2a81613902565b60018281168015613d425760018114613d5757613d86565b60ff1984168752821515830287019450613d86565b8760005260208060002060005b85811015613d7d5781548a820152908401908201613d64565b50505082870194505b50929695505050505050565b634e487b7160e01b600052602160045260246000fd5b600060208284031215613dba57600080fd5b8151801515811461091d57600080fd5b60008251613ddc81846020870161351a565b919091019291505056fea264697066735822122037992bb045e92c0fead1dc9f42e41fc6f9a03bdf5b40efe98740a8e729906b7b64736f6c63430008120033000000000000000000000000444045c5c13c246e117ed36437303cac8e250ab0