[ { "inputs": [ { "internalType": "address", "name": "_asset", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "address", "name": "_ajnaPool", "type": "address" }, { "internalType": "uint24", "name": "_uniswapFee", "type": "uint24" }, { "internalType": "bytes4", "name": "_unwrappedToWrappedSelector", "type": "bytes4" }, { "internalType": "address", "name": "_chainlinkOracle", "type": "address" }, { "internalType": "bool", "name": "_oracleWrapped", "type": "bool" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "stateMutability": "nonpayable", "type": "fallback" }, { "inputs": [], "name": "ajnaPool", "outputs": [ { "internalType": "contract IERC20Pool", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "auction", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "auctionFactory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" } ], "name": "auctionKicked", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "availableDepositLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "availableWithdrawLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "chainlinkOracle", "outputs": [ { "internalType": "contract IChainlinkAggregator", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentLTV", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "deployFunds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "depositLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "doHealthCheck", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "estimatedTotalAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "estimatedTotalAssetsNoSlippage", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "freeFunds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "harvestAndReport", "outputs": [ { "internalType": "uint256", "name": "_totalAssets", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" } ], "name": "kickable", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lossLimitRatio", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ltvs", "outputs": [ { "internalType": "uint64", "name": "targetLTV", "type": "uint64" }, { "internalType": "uint64", "name": "minAdjustThreshold", "type": "uint64" }, { "internalType": "uint64", "name": "warningThreshold", "type": "uint64" }, { "internalType": "uint64", "name": "emergencyThreshold", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_toLoose", "type": "uint256" }, { "internalType": "uint64", "name": "_targetLTV", "type": "uint64" }, { "internalType": "bool", "name": "_force", "type": "bool" } ], "name": "manualLeverDown", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_debtAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_collateralAmount", "type": "uint256" }, { "internalType": "bool", "name": "_stamp", "type": "bool" } ], "name": "manualRepayWithdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amountIn", "type": "uint256" }, { "internalType": "uint64", "name": "_minOut", "type": "uint64" }, { "internalType": "bool", "name": "_assetForWeth", "type": "bool" } ], "name": "manualSwap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "maxTendBasefee", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minAjnaToAuction", "outputs": [ { "internalType": "uint96", "name": "", "type": "uint96" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "oracleWrapped", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "positionInfo", "outputs": [ { "internalType": "uint256", "name": "_debt", "type": "uint256" }, { "internalType": "uint256", "name": "_collateral", "type": "uint256" }, { "internalType": "uint256", "name": "_t0Np", "type": "uint256" }, { "internalType": "uint256", "name": "_thresholdPrice", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "positionOpen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "uint256", "name": "_amountTaken", "type": "uint256" }, { "internalType": "uint256", "name": "_amountPayed", "type": "uint256" } ], "name": "postTake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_token", "type": "address" }, { "internalType": "uint256", "name": "_amountToTake", "type": "uint256" }, { "internalType": "uint256", "name": "_amountToPay", "type": "uint256" } ], "name": "preTake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "profitLimitRatio", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_weeks", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "_amounts", "type": "uint256[]" }, { "internalType": "bytes32[][]", "name": "_proofs", "type": "bytes32[][]" } ], "name": "redeemSummerAjnaRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_auction", "type": "address" } ], "name": "setAuction", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_depositLimit", "type": "uint256" } ], "name": "setDepositLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_doHealthCheck", "type": "bool" } ], "name": "setDoHealthCheck", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newLossLimitRatio", "type": "uint256" } ], "name": "setLossLimitRatio", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint64", "name": "targetLTV", "type": "uint64" }, { "internalType": "uint64", "name": "minAdjustThreshold", "type": "uint64" }, { "internalType": "uint64", "name": "warningThreshold", "type": "uint64" }, { "internalType": "uint64", "name": "emergencyThreshold", "type": "uint64" } ], "internalType": "struct Strategy.LTVConfig", "name": "_ltvs", "type": "tuple" } ], "name": "setLtvConfig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "_maxTendBasefee", "type": "uint64" } ], "name": "setMaxTendBasefee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint96", "name": "_minAjnaToAuction", "type": "uint96" } ], "name": "setMinAjnaToAuction", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_newProfitLimitRatio", "type": "uint256" } ], "name": "setProfitLimitRatio", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_slippageAllowedBps", "type": "uint16" } ], "name": "setSlippageAllowedBps", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint24", "name": "_fee", "type": "uint24" } ], "name": "setUniswapFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "shutdownWithdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "slippageAllowedBps", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "summerfiAccount", "outputs": [ { "internalType": "contract IAccount", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_totalIdle", "type": "uint256" } ], "name": "tendThis", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "tendTrigger", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokenizedStrategyAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uniswapPool", "outputs": [ { "internalType": "contract IUniswapV3Pool", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "int256", "name": "_amount0Delta", "type": "int256" }, { "internalType": "int256", "name": "_amount1Delta", "type": "int256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "uniswapV3SwapCallback", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unwrappedToWrappedSelector", "outputs": [ { "internalType": "bytes4", "name": "", "type": "bytes4" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
61018060405234620001cb576200002662000019620002b7565b9594909493919362000468565b604051614975908162000dff82396080518181816110630152818161156b01528181612390015281816124a6015281816138b30152614057015260a0518181816103ed01528181610652015281816107a301528181610e9901528181610fe30152818161139501528181611478015281816115e90152818161169e015281816117990152818161185d0152818161198f01528181611c7d01528181611df401528181612014015281816127a701528181612c52015261391b015260c05181818161174c01528181612a6001528181613ae5015281816142cd015281816143ab01526145cc015260e051818181611429015281816129d201528181613330015281816139b501528181613dd801528181614166015281816141f00152818161426a015281816143380152818161447e01528181614588015261478d015261010051818181611f880152613fb10152610120518181816104ba0152613fef0152610140518181816105c301526140200152610160518181816119ef015281816121530152818161257e015281816125a5015281816125fa015281816135cb01526136c10152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176200020257604052565b620001d0565b601f909101601f19168101906001600160401b038211908210176200020257604052565b51906001600160a01b0382168203620001cb57565b6001600160401b0381116200020257601f01601f191660200190565b60005b838110620002715750506000910152565b818101518382015260200162000260565b519062ffffff82168203620001cb57565b51906001600160e01b031982168203620001cb57565b51908115158203620001cb57565b620057748038038060405192620002cf828562000208565b833981019160e082840312620001cb57620002ea826200022c565b60208301519091906001600160401b038111620001cb57830184601f82011215620001cb5780516200031c8162000241565b956200032c604051978862000208565b81875260208284010111620001cb576200034d91602080880191016200025d565b6200035b604084016200022c565b926200036a6060820162000282565b92620003796080830162000293565b926200039660c06200038e60a086016200022c565b9401620002a9565b9196959493929190565b90816020910312620001cb57620003b7906200022c565b90565b6040513d6000823e3d90fd5b15620003ce57565b60405162461bcd60e51b81526020600482015260076024820152660858dbdb1b185d60ca1b6044820152606490fd5b156200040557565b60405162461bcd60e51b8152602060048201526005602482015264042eecae8d60db1b6044820152606490fd5b60405190608082016001600160401b03811183821017620002025760405260006060838281528260208201528260408201520152565b93959294906200047990856200070f565b600180546001600160601b031916683635c9adc5dea00000179055620004aa61320062ffff00196002541617600255565b600280546301000000600160581b0319166706fc23ac000000001790556040516348d399e760e01b81526001600160a01b0392831694602094909185816004818a5afa928315620006b8578591600094620006e2575b508116926200051291168314620003c6565b6040516305d69a3160e51b81529085826004818a5afa918215620006b857600092620006be575b506200055e8573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc293168314620003fd565b604051639dca362f60e01b8152948686600481600073f7b75183a2829843db06266c114297dfbfaee2b65af1948515620006b857620006809a6200067a99620005f19860009862000682575b5060e05286831660c05261014052166101005261012052608051620005e690620005da906001600160a01b031681565b6001600160a01b031690565b1061016052620008a6565b6200060e620005ff62000432565b9182016611c37937e080009052565b662386f26fc1000060408281019190915266470de4df82000060608301528151602090920151901b6fffffffffffffffff0000000000000000166001600160401b03909116177e470de4df820000002386f26fc100000000000000000000000000000000000017600455565b62000b53565b565b620006a89198508a3d8c11620006b0575b6200069f818362000208565b810190620003a0565b9638620005aa565b503d62000693565b620003ba565b620006da919250863d8811620006b0576200069f818362000208565b903862000539565b8291945091620007056200051293893d8b11620006b0576200069f818362000208565b9491925062000500565b60006200075862000779829360018060a01b031694856080523060a0526040519283916020830197634b839d7360e11b8952602484015260a0604484015260c4830190620007fc565b3360648301523360848301523360a483015203601f19810183528262000208565b5173bb51273d6c746910c7c06fe718f30c936170fed093845af46200079d62000a73565b5015620007f0577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55620007d9600160ff196000541617600055565b620006806227100062ffff00196000541617600055565b6040513d90816000823efd5b9060209162000817815180928185528580860191016200025d565b601f01601f1916010190565b90816020910312620001cb575190565b156200083b57565b60405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608490fd5b60405190636eb1769f60e11b825230600483015260208260448160018060a01b03808816602483015285165afa8015620006b8576200068093620008fe6200093f92620009309560009162000945575b501562000833565b60405163095ea7b360e01b60208201526001600160a01b03909116602482015260001960448201529283906064820190565b03601f19810184528362000208565b6200097a565b6200096b915060203d811162000972575b62000962818362000208565b81019062000823565b38620008f6565b503d62000956565b604051620009de916001600160a01b03166200099682620001e6565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1620009d762000a73565b9162000aa8565b805182811591821562000a50575b5050905015620009f95750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b8380929350010312620001cb578162000a6a9101620002a9565b808238620009ec565b3d1562000aa3573d9062000a878262000241565b9162000a97604051938462000208565b82523d6000602084013e565b606090565b9192901562000b0d575081511562000abe575090565b3b1562000ac85790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b82519091501562000b215750805190602001fd5b60405162461bcd60e51b81526020600482015290819062000b47906024830190620007fc565b0390fd5b15620001cb57565b60805162000b6a906001600160a01b0316620005da565b604051630b4c774160e11b81526001600160a01b0391909116600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2602482015262ffffff91909116604482015260208082606481731f98431c8ad98523631ae4a59f267346ea31f9845afa918215620006b85760009262000dda575b50604051630dfe168160e01b8082526001600160a01b039384169290918181600481875afa908115620006b85760009162000db8575b50608051859062000c3090620005da906001600160a01b031681565b911614801562000d44575b62000c469062000b4b565b6040519182528082600481865afa8015620006b857849260009162000d22575b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2948591161493841562000cc1575b50505062000c9c620006809262000b4b565b600180546001600160601b031660609290921b6001600160601b031916919091179055565b60405163d21220a760e01b8152945090918285600481875afa8015620006b857620006809562000c9c9460009262000d00575b50501614923862000c8a565b62000d1a9250803d10620006b0576200069f818362000208565b388062000cf4565b62000d3d9150823d8411620006b0576200069f818362000208565b3862000c66565b5060405163d21220a760e01b81528181600481875afa8015620006b85762000c469160009162000d96575b50608051869062000d8b90620005da906001600160a01b031681565b911614905062000c3b565b62000db19150833d8511620006b0576200069f818362000208565b3862000d6f565b62000dd39150823d8411620006b0576200069f818362000208565b3862000c14565b8162000df69293503d8411620006b0576200069f818362000208565b903862000bde56fe60806040526004361015610022575b3615610020573415612923575b600080fd5b005b60003560e01c806304bd46291461032d578063204dcfd81461032857806326a8a9891461032357806328e72f971461031e5780632dc6b25a146102d35780632f1cb0511461031957806330b4e375146103145780633d6cb5751461030f57806346aa2f121461030a57806349317f1d146103055780634a5d0943146103005780634aca9482146102fb578063503160d9146102f65780635d265d3f146102f15780636718835f146102ec5780636c9d273b146102e757806373957839146102e257806373c33917146102dd5780637b05fe62146102d85780637b3eb8da146102d35780637d969932146102ce5780637d9f6db5146102c957806383fe2009146102c457806386bdbc81146102bf578063950b3d73146102ba5780639a3d8869146102b55780639d7fb70c146102b0578063abf4fde4146102ab578063ac00ff26146102a6578063b4c7547e146102a1578063b8c6f5791461029c578063bdc8144b14610297578063bdd3d82514610292578063c7c7bc671461028d578063c7ed12d414610288578063c84b16c614610283578063d19a3bb81461027e578063d696860114610279578063db96af0c14610274578063de1fa3581461026f578063e851acac1461026a578063e96615fc14610265578063ecf7085814610260578063ef06e72c1461025b578063efbb5cb014610256578063f13d6bb114610251578063f60e8e4e1461024c578063fa461e33146102475763fde813a80361000e5761262d565b6120b8565b61208d565b611fdd565b611fac565b611f68565b611f4a565b611f1e565b611de4565b611c1c565b611975565b61183c565b61180d565b611770565b61172c565b611672565b611651565b6115cc565b61144d565b611409565b61136b565b611332565b61130e565b610fb2565b610e78565b610cc1565b610c6d565b610c43565b610c1e565b610515565b610beb565b610ba5565b610b80565b610a21565b6109fe565b610990565b61092c565b6108b2565b61088d565b61082c565b61076b565b6105e7565b61058a565b610539565b6104df565b6104a2565b6103c7565b610343565b6001600160a01b0381160361001b57565b3461001b57602060031936011261001b5761035f600435610332565b60206040516000198152f35b6004359067ffffffffffffffff8216820361001b57565b6024359067ffffffffffffffff8216820361001b57565b6044359067ffffffffffffffff8216820361001b57565b6064359067ffffffffffffffff8216820361001b57565b3461001b5760006020600319360112610494576103e261036b565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156104905781602491604051928380926348e4a64960e01b82523360048301525afa801561048b5761047c575b50907fffffffffffffffffffffffffffffffffffffffffff0000000000000000ffffff6affffffffffffffff0000006002549260181b1691161760025580f35b61048590611b61565b3861043c565b6126a8565b5080fd5b80fd5b600091031261001b57565b3461001b57600060031936011261001b5760206040517f000000000000000000000000000000000000000000000000000000000000000015158152f35b3461001b57600060031936011261001b57602061050d6104fd6139aa565b5050610507613f61565b916148c3565b604051908152f35b3461001b57606060031936011261001b57610531600435610332565b61002061287b565b3461001b57600060031936011261001b576105706105556139aa565b50509190610561613890565b9261056a613f61565b9161490e565b90810180911161058557602090604051908152f35b6126c3565b3461001b57600060031936011261001b5760206040517fffffffff000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461001b57602060031936011261001b576004356106036128d6565b8061060c6139aa565b505091610617613f61565b9361063461062686868661490e565b61062e613890565b90612965565b94604051956278744560e21b87526020876004816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa92831561048b578261071096610703966106d5966106c5956100209c60009261073b575b506106a282613973565b958681141580610732575b610716575b5050506106bd612b17565b998a92613583565b6106cd6139aa565b5050906148c3565b926106fd60206106ed835167ffffffffffffffff1690565b92015167ffffffffffffffff1690565b90612b55565b67ffffffffffffffff1690565b11612b71565b61072a935090610725916126f6565b612709565b3880806106b2565b508282106106ad565b61075d91925060203d8111610764575b6107558183611bea565b8101906126b4565b9038610698565b503d61074b565b3461001b57602060031936011261001b57610787600435610332565b6040516278744560e21b81526020816004816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa90811561048b5760009161080e575b50600354908181106107fc5750506107f860005b6040519081529081906020820190565b0390f35b8103908111610585576107f8906107e8565b610826915060203d8111610764576107558183611bea565b386107d4565b3461001b57600060031936011261001b576108456128d6565b610855610850613890565b61318f565b6108706108606139aa565b505061086a613f61565b916148e5565b610878613890565b8101809111610585578061050d602092612774565b3461001b57600060031936011261001b57602061ffff60005460081c16604051908152f35b3461001b57602060031936011261001b576001600160a01b0360206004356108d981610332565b6024604051809481936370a0823160e01b8352306004840152165afa801561048b5760209160009161090f575b50604051908152f35b6109269150823d8111610764576107558183611bea565b38610906565b3461001b57602060031936011261001b576109456128d6565b61002060043561298e565b919082519283825260005b84811061097c575050601f19601f8460006020809697860101520116010190565b60208183018101518483018201520161095b565b3461001b57600060031936011261001b576109a9612c48565b604051907f440368a3000000000000000000000000000000000000000000000000000000006020830152600482526109e082611b96565b6107f860405192839215158352604060208401526040830190610950565b3461001b57600060031936011261001b57602060ff600054166040519015158152f35b3461001b5760208060031936011261001b576001600160a01b03600435610a4781610332565b610a4f61287b565b16739a96ec9b57fb64fbc60b423d1f4da7691bd35079810361001b576040516370a0823160e01b8082523060048301528382602481865afa92831561048b57610ad7938593600091610b63575b5080610b43575b5060005460281c6001600160a01b03166040519283526001600160a01b031660048301529092839190829081906024820190565b03915afa90811561048b576107f892600092610b26575b50506107e8610b1e610b0d6001546bffffffffffffffffffffffff1690565b6bffffffffffffffffffffffff1690565b821015612972565b610b3c9250803d10610764576107558183611bea565b3880610aee565b600054610b5d919060281c6001600160a01b031683612e8c565b38610aa3565b610b7a9150843d8611610764576107558183611bea565b38610a9c565b3461001b57600060031936011261001b57602061ffff60025460081c16604051908152f35b3461001b57600060031936011261001b5760806004546040519067ffffffffffffffff8082168352808260401c16602084015281841c16604083015260c01c6060820152f35b3461001b57600060031936011261001b576080610c066139aa565b91604051938452602084015260408301526060820152f35b3461001b57600060031936011261001b57602061ffff60005460181c16604051908152f35b3461001b57600060031936011261001b5760206001600160a01b0360005460281c16604051908152f35b3461001b57600060031936011261001b57602060ff600254166040519015158152f35b9181601f8401121561001b5782359167ffffffffffffffff831161001b576020808501948460051b01011161001b57565b3461001b5760031960608136011261001b5767ffffffffffffffff60043581811161001b57610cf4903690600401610c90565b929060243583811161001b57610d0e903690600401610c90565b93909260443582811161001b57610d29903690600401610c90565b93909473f309ee5603bf05e5614db930e4eab661662acee696873b1561001b5788959297969391610da191610d916040519a8b997fc0b09e5b000000000000000000000000000000000000000000000000000000008b52606060048c015260648b0191613152565b91848984030160248a0152613152565b908582030160448601528181526020908181016005908385831b84010196866000945b878610610df85750896000818d8183818f03925af1801561048b57610de557005b80610df261002092611b61565b80610497565b91939597995091939597601f1982820301855289357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181121561001b57830188810191903585811161001b5780881b3603831361001b57610e628a928392600195613152565b9b01950196019396949290918b99989692610dc4565b3461001b576000602060031936011261049457600435906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156104905781602491604051928380926348e4a64960e01b82523360048301525afa801561048b57610fa3575b50908015610f5f5761ffff808211610f1b57610f18911662ffff001962ffff006000549260081b16911617600055565b80f35b606460405162461bcd60e51b815260206004820152600960248201527f21746f6f206869676800000000000000000000000000000000000000000000006044820152fd5b606460405162461bcd60e51b815260206004820152600c60248201527f217a65726f2070726f66697400000000000000000000000000000000000000006044820152fd5b610fac90611b61565b38610ee8565b3461001b57600060208060031936011261049057600480359062ffffff8216820361130a576001600160a01b0392837f00000000000000000000000000000000000000000000000000000000000000001693843b15611306576024866040968751928380926348e4a64960e01b825233898301525afa801561048b576112f3575b5084517f1698ee820000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000831690811685830190815273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2602082015262ffffff9096166040870152948390829081906060010381731f98431c8ad98523631ae4a59f267346ea31f9845afa801561048b57829188916112d6575b5016938551907f0dfe16810000000000000000000000000000000000000000000000000000000091828152848187818a5afa90811561048b57829185918b916112b9575b5016148015611252575b61113d9150612972565b855190815282818581885afa801561048b5782918891611235575b5073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc292839116149586156111b4575b87610f18876111898a612972565b6bffffffffffffffffffffffff6bffffffffffffffffffffffff196001549260601b16911617600155565b83949650929091925180967fd21220a700000000000000000000000000000000000000000000000000000000825281875afa801561048b57610f1895611189948892611208575b505016149238808061117b565b6112279250803d1061122e575b61121f8183611bea565b810190612979565b38806111fb565b503d611215565b61124c9150843d861161122e5761121f8183611bea565b38611158565b508651907fd21220a7000000000000000000000000000000000000000000000000000000008252848287818a5afa91821561048b5761113d9285918b9161129c575b501614611133565b6112b39150873d891161122e5761121f8183611bea565b38611294565b6112d09150873d891161122e5761121f8183611bea565b38611129565b6112ed9150843d861161122e5761121f8183611bea565b386110e5565b6112ff90969196611b61565b9438611033565b8580fd5b8380fd5b3461001b57602060031936011261001b576113276128d6565b61002060043561318f565b3461001b57600060031936011261001b57602060405173e6ab098e8582178a76dc80d55ca304d1dec11ad88152f35b8015150361001b57565b3461001b5760006020600319360112610494576004359061138b82611361565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156104905781602491604051928380926348e4a64960e01b82523360048301525afa801561048b576113fa575b509060ff60ff1960005416911515161760005580f35b61140390611b61565b386113e4565b3461001b57600060031936011261001b5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461001b57600060206003193601126104945760043561146c81610332565b6001600160a01b0390817f00000000000000000000000000000000000000000000000000000000000000001683813b1561049457602491604051928380926320b8029160e21b82523360048301525afa801561048b576115b9575b5081811680611521575b83610f18837fffffffffffffff0000000000000000000000000000000000000000ffffffffff78ffffffffffffffffffffffffffffffffffffffff00000000006000549260281b16911617600055565b6020600491604051928380927f1f1fcd510000000000000000000000000000000000000000000000000000000082525afa801561048b57610f1893611593928692611599575b50807f000000000000000000000000000000000000000000000000000000000000000016911614612972565b386114d1565b6115b291925060203d811161122e5761121f8183611bea565b9038611567565b6115c590939193611b61565b91386114c7565b3461001b5760006020600319360112610494576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681813b1561049457602491604051928380926348e4a64960e01b82523360048301525afa801561048b57611642575b5060043560035580f35b61164b90611b61565b38611638565b3461001b57600060031936011261001b57602060015460601c604051908152f35b3461001b57600060206003193601126104945760043561ffff8116808203611728576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001683813b1561049457602491604051928380926348e4a64960e01b82523360048301525afa801561048b57611713575b506127101061049057610f189062ffff001962ffff006002549260081b16911617600255565b926117216127109294611b61565b92906116ed565b8280fd5b3461001b57600060031936011261001b5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461001b57600060606003193601126104945760443561178f81611361565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682813b1561049457602491604051928380926320b8029160e21b82523360048301525afa801561048b576117f8575b50610f1890602435600435614459565b91611806610f189293611b61565b91906117e8565b3461001b57600060031936011261001b57602060405173bb51273d6c746910c7c06fe718f30c936170fed08152f35b3461001b576000602060031936011261049457600435906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156104905781602491604051928380926348e4a64960e01b82523360048301525afa801561048b57611932575b50906127108110156118ee577fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffff64ffff00000083549260181b16911617815580f35b606460405162461bcd60e51b815260206004820152600b60248201527f216c6f7373206c696d69740000000000000000000000000000000000000000006044820152fd5b61193b90611b61565b386118ac565b600319606091011261001b576004359060243567ffffffffffffffff8116810361001b579060443561197281611361565b90565b3461001b5761198336611941565b91906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692833b1561001b57604090815180956320b8029160e21b825281602460009889933360048301525afa801561048b57611b2e575b509080611a45611a9c937f0000000000000000000000000000000000000000000000000000000000000000600014611b2757955b611a53611a22611c0d565b6003815289602082015289858201528960608201528451938491602083016130d2565b03601f198101845283611bea565b611a6e611a6260015460601c90565b6001600160a01b031690565b908715611b0b57886401000276a4915b855197889586948593630251596160e31b85528d306004870161311c565b03925af190811561048b57610f189467ffffffffffffffff9387928894611ad8575b505015611ad05750915b161115612972565b905091611ac8565b8091929450611afc9350903d10611b04575b611af48183611bea565b810190613106565b913880611abe565b503d611aea565b8873fffd8963efd1fc6a506488495d951d5263988d2591611a7e565b1595611a17565b91611a45819296611b41611a9c95611b61565b96929350506119e3565b634e487b7160e01b600052604160045260246000fd5b67ffffffffffffffff8111611b7557604052565b611b4b565b6080810190811067ffffffffffffffff821117611b7557604052565b6040810190811067ffffffffffffffff821117611b7557604052565b6060810190811067ffffffffffffffff821117611b7557604052565b60c0810190811067ffffffffffffffff821117611b7557604052565b90601f601f19910116810190811067ffffffffffffffff821117611b7557604052565b60405190611c1a82611b7a565b565b3461001b576000608060031936011261049457604051611c3b81611b7a565b611c4361036b565b8152611c4d610382565b60208201908152611c5c610399565b9160408101928352611c6c6103b0565b606082019081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001685813b1561049457602491604051928380926348e4a64960e01b82523360048301525afa801561048b57611dd1575b5067ffffffffffffffff80809551169151169283821015611306575181858216101561130657610f1894611d879351167fffffffffffffffffffffffffffffffff000000000000000000000000000000006fffffffffffffffff00000000000000006004549360401b16921617176004557fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff77ffffffffffffffff000000000000000000000000000000006004549260801b16911617600455565b77ffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffff0000000000000000000000000000000000000000000000006004549260c01b16911617600455565b611ddd90959195611b61565b9338611ccc565b3461001b57611df236611941565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169291833b1561001b5760405180946320b8029160e21b825281602460009788933360048301525afa801561048b57611f0b575b50611e586139aa565b50509092611e64613f61565b90611e6d612b17565b92819582159687611ef2575b15611eee578385610f1899611ea49467ffffffffffffffff809a168352611e9e6138ff565b94613583565b611eac6139aa565b50509195611ebd575b878787612b71565b611ee394955091611ed29161070394936148c3565b936020818351169201511690612b55565b113880808080611eb5565b8880fd5b5067ffffffffffffffff80600454169087161115611e79565b611f1790949194611b61565b9238611e4f565b3461001b57600060031936011261001b5760206bffffffffffffffffffffffff60015416604051908152f35b3461001b57600060031936011261001b576020600354604051908152f35b3461001b57600060031936011261001b5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461001b57600060031936011261001b57610570611fc86139aa565b50509190611fd4613890565b9261086a613f61565b3461001b576000602060031936011261049457600435906bffffffffffffffffffffffff8216809203610494576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156104905781602491604051928380926348e4a64960e01b82523360048301525afa801561048b5761207e575b50906bffffffffffffffffffffffff19600154161760015580f35b61208790611b61565b38612063565b3461001b57600060031936011261001b57602067ffffffffffffffff60025460181c16604051908152f35b3461001b57606060031936011261001b5760048035906044359060243567ffffffffffffffff80841161001b573660238501121561001b578383013590811161001b5783016024019236841161001b5761212461211d611a62611a6260015460601c90565b3314612972565b600094858113808015612624575b61213b90612972565b80156125e8578661217d61214e86613476565b9760247f0000000000000000000000000000000000000000000000000000000000000000159599965b016137ec565b948551612189816130a6565b612192816130a6565b6122b157505050916121fc602094926121ae61224f9795612972565b6121f56121e76002549460406121de6121d66121d061ffff8a60081c166126d9565b8b6126f6565b612710900490565b910151906126f6565b670de0b6b3a7640000900490565b1115613833565b60ff612206613890565b91166122a25761222890612222600160ff196002541617600255565b8361412c565b6040805163a9059cbb60e01b81523392810192835260208301939093529193849283920190565b03818573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1801561048b57612277575080f35b6122979060203d811161229b575b61228f8183611bea565b810190612c19565b5080f35b503d612285565b6122ac90836141b6565b612228565b6001869596516122c0816130a6565b6122c9816130a6565b1480156125cb575b156124375750505091602093916122ec612383969415612972565b866122fe6121e76040840151856126f6565b6123386123306121d661232a61232561231e60025461ffff9060081c1690565b61ffff1690565b612955565b846126f6565b871115613833565b808611612400575b50506001815161234f816130a6565b612358816130a6565b036123c0579061237d8260606123748861222896015188612965565b9101519061387e565b90614313565b0381856001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561048b57612277575080f35b600290516123cd816130a6565b6123d6816130a6565b146123e2575b50612228565b6123fa906123f560ff1960025416600255565b61454a565b386123dc565b61240a90866126e9565b86830190808251116000146124305781612426929350516126e9565b90525b8638612340565b5052612429565b925092600391945051612449816130a6565b612452816130a6565b14612460575b505050505080f35b826125a3575b821561256b575b5050156124fd576040805163a9059cbb60e01b815233928101928352602083810194909452929183918291010381856001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561048b576124df575b505b3880808381612458565b6124f69060203d811161229b5761228f8183611bea565b50386124d3565b6040805163a9059cbb60e01b8152339281019283526020838101949094529291839182910103818573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25af1801561048b5761254d575b506124d5565b6125649060203d811161229b5761228f8183611bea565b5038612547565b1390508061257b575b833861246d565b507f000000000000000000000000000000000000000000000000000000000000000015612574565b7f00000000000000000000000000000000000000000000000000000000000000009250612466565b50600285516125d9816130a6565b6125e2816130a6565b146122d1565b94906125f390613476565b948661217d7f0000000000000000000000000000000000000000000000000000000000000000936024879996612177565b50868413612132565b3461001b57602060031936011261001b576126466128d6565b6100206126826126546139aa565b50506106c5612664939293613f61565b918261266e612b17565b80966126786138ff565b9360043591613583565b906126a167ffffffffffffffff91826020818351169201511690612b55565b1611612b71565b6040513d6000823e3d90fd5b9081602091031261001b575190565b634e487b7160e01b600052601160045260246000fd5b9061271091820391821161058557565b9190820391821161058557565b8181029291811591840414171561058557565b8115612713570490565b634e487b7160e01b600052601260045260246000fd5b1561273057565b606460405162461bcd60e51b815260206004820152600b60248201527f6865616c7468436865636b0000000000000000000000000000000000000000006044820152fd5b61278761278360005460ff1690565b1590565b612868576040516278744560e21b81526020816004816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa90811561048b5760009161284a575b50808211156128165761280f6121d66127f483611c1a956126e9565b9261280961231e60005461ffff9060081c1690565b906126f6565b1015612729565b818111612822575b5050565b61280f6121d6612835611c1a94846126e9565b9261280961231e60005461ffff9060181c1690565b612862915060203d8111610764576107558183611bea565b386127d8565b50611c1a600160ff196000541617600055565b6001600160a01b0360005460281c16330361289257565b606460405162461bcd60e51b815260206004820152600860248201527f2161756374696f6e0000000000000000000000000000000000000000000000006044820152fd5b3033036128df57565b606460405162461bcd60e51b815260206004820152600560248201527f2173656c660000000000000000000000000000000000000000000000000000006044820152fd5b6000368180378080368173bb51273d6c746910c7c06fe718f30c936170fed05af43d82803e15612951573d90f35b3d90fd5b9061271091820180921161058557565b9190820180921161058557565b1561001b57565b9081602091031261001b575161197281610332565b60ff6002541615612b14576020612a2a612a38612a52936040519283917f854a169400000000000000000000000000000000000000000000000000000000868401527f00000000000000000000000000000000000000000000000000000000000000006024840160809060009294936001600160a01b0360a08301961682528360208301526040820152670de0b6b3a764000060608201520152565b03601f198101835282611bea565b60405180938192631cff79cd60e01b835260048301614101565b038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561048b57612af6575b504773c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2803b1561001b576000906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1801561048b57612ae95750565b80610df2611c1a92611b61565b612b0d9060203d8111610764576107558183611bea565b5038612a8d565b50565b60405190612b2482611b7a565b81606060045467ffffffffffffffff8082168452808260401c1660208501528160801c16604084015260c01c910152565b91909167ffffffffffffffff8080941691160191821161058557565b15612b7857565b606460405162461bcd60e51b815260206004820152600460248201527f216c7476000000000000000000000000000000000000000000000000000000006044820152fd5b600190670de0b6b3a7640000906002835b808211612bd8575050565b90928060001904811161058557818416612bf8575b800292811c90612bcd565b80940293612bed565b612c09612bbc565b9081600019048111610585570290565b9081602091031261001b575161197281611361565b67ffffffffffffffff918216908216039190821161058557565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016604051906278744560e21b82526020918281600481855afa90811561048b57600091612e6f575b50158015612e5a575b612e5357612cae6139aa565b9391929050612cda612cbe612b17565b93612cc7613f61565b90612cd482610725612c01565b936148c3565b93612d07610703612cf3865167ffffffffffffffff1690565b606087015167ffffffffffffffff166106fd565b851091821592612e48575b5050612e3657600254612d319060181c67ffffffffffffffff16610703565b481015612e3f57612d64610703612d50845167ffffffffffffffff1690565b604085015167ffffffffffffffff166106fd565b831015612e365783600491604051928380927fbf86d6900000000000000000000000000000000000000000000000000000000082525afa90811561048b57600091612e19575b50612e11578115159283612de1575b50505080612dd0575b612dcb57600090565b600190565b506064612ddb613dcb565b11612dc2565b612e0792935090612e01610703926106ed835167ffffffffffffffff1690565b90612c2e565b1015388080612db9565b505050600090565b612e309150843d861161229b5761228f8183611bea565b38612daa565b50505050600190565b50505050600090565b111590503880612d12565b5050600090565b50612e6a61278360025460ff1690565b612ca2565b612e869150833d8511610764576107558183611bea565b38612c99565b612f2f916000806001600160a01b0360405194612ee486612ed660209a8b83019863a9059cbb60e01b8a5260248401602090939291936001600160a01b0360408201951681520152565b03601f198101885287611bea565b169260405194612ef386611b96565b8786527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656488870152519082855af1612f29612fca565b9161300a565b805190828215928315612fb2575b50505015612f485750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b612fc29350820181019101612c19565b388281612f3d565b3d15613005573d9067ffffffffffffffff8211611b755760405191612ff96020601f19601f8401160184611bea565b82523d6000602084013e565b606090565b9192901561306b575081511561301e575090565b3b156130275790565b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b82519091501561307e5750805190602001fd5b6130a29060405191829162461bcd60e51b8352602060048401526024830190610950565b0390fd5b600411156130b057565b634e487b7160e01b600052602160045260246000fd5b60048210156130b05752565b81516080820193929060048110156130b0576060918291845260208101516020850152604081015160408501520151910152565b919082604091031261001b576020825192015190565b919360a09361197296956001600160a01b0380941685521515602085015260408401521660608201528160808201520190610950565b90918281527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831161001b5760209260051b809284830137010190565b6131976139aa565b93929190506131a4612b17565b926131ad613f61565b946131ba86610725612c01565b6131c58785876148c3565b916131d260025460ff1690565b9182613263575b5050156132045750506106d5846106c561071094611c1a9787610703966131fe6138ff565b936134a3565b6132239061062e610703602088979597015167ffffffffffffffff1690565b613238610703865167ffffffffffffffff1690565b1061325c5784613257611c1a968661071096610703966106d5966132a9565b6106c5565b5050505050565b1180159150613274575b38806131d9565b506132a161070361328d875167ffffffffffffffff1690565b602088015167ffffffffffffffff166106fd565b81101561326d565b939290836132b7918661490e565b918201809211610585576132d89167ffffffffffffffff849251169061487b565b918083111561001b5780830392831161058557826132f4613dcb565b90811061346e575b5060648310908115613317575b5061281e57611c1a916135c4565b9050828101809111610585576000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016604051907f4d966198000000000000000000000000000000000000000000000000000000008252608082600481845afa90811561048b576004928592613438575b50606090604051938480927f3884cd880000000000000000000000000000000000000000000000000000000082525afa91821561048b578492613405575b50600a8210156133e3575b50501038613309565b6133fd929350906107256133f692614737565b600a900490565b9038806133da565b61342791925060603d8111613431575b61341f8183611bea565b810190614713565b91505090386133cf565b503d613415565b606091925061345d9060803d8111613467575b6134558183611bea565b8101906146f1565b5050509190613391565b503d61344b565b9250386132fc565b7f800000000000000000000000000000000000000000000000000000000000000081146105855760000390565b939092916000906134b584868861490e565b90828215613579575082820390828211610585576134e9916134e361070388935167ffffffffffffffff1690565b9061487b565b905b8187111561355e57611c1a968281039261350c61350785613476565b614761565b11613556575b82149384613522575b50506136b3565b90919350821591821561354c575b508115613541575b5091388061351b565b905081101538613538565b8314915038613530565b915081613512565b50509350505050606481116135705750565b611c1a90614247565b91925050816134eb565b949190939261359384868861490e565b90600083831115613579575082820390828211610585576134e9916134e361070388935167ffffffffffffffff1690565b90613620907f0000000000000000000000000000000000000000000000000000000000000000156135f3611c0d565b93600085526000602086015261362e604095869485820152600060608201528451958691602083016130d2565b03601f198101865285611bea565b61363d611a6260015460601c90565b9082156136965760006401000276a4935b61366e865197889687958694630251596160e31b8652306004870161311c565b03925af1801561048b57613680575050565b8161281e92903d10611b0457611af48183611bea565b600073fffd8963efd1fc6a506488495d951d5263988d259361364e565b92612a2a61371f61376596937f0000000000000000000000000000000000000000000000000000000000000000956000146137e4576002905b6136fe6136f7611c0d565b92836130c6565b602082015260409485948583015260608201528351928391602083016130d2565b61372e611a6260015460601c90565b61373786613476565b85156137c75760006401000276a4915b8551998a9586948593630251596160e31b85528b306004870161311c565b03925af191821561048b57611c1a9460009283946137a4575b505015613795575061378f90613476565b14612972565b61379f9150613476565b61378f565b80919294506137bf9350903d10611b0457611af48183611bea565b91388061377e565b600073fffd8963efd1fc6a506488495d951d5263988d2591613747565b6001906136ec565b9081608091031261001b576040519061380482611b7a565b803590600482101561001b57606091835260208101356020840152604081013560408401520135606082015290565b1561383a57565b606460405162461bcd60e51b815260206004820152600960248201527f21736c69707061676500000000000000000000000000000000000000000000006044820152fd5b908082101561388b575090565b905090565b6040516370a0823160e01b81523060048201526020816024816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa90811561048b576000916138e7575090565b611972915060203d8111610764576107558183611bea565b6040516278744560e21b81526020816004816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa801561048b5761197291600091613955575b50613973565b61396d915060203d8111610764576107558183611bea565b3861394f565b61397b613890565b81811015612e535781039081116105855790565b9081606091031261001b578051916040602083015192015190565b6001600160a01b03807f000000000000000000000000000000000000000000000000000000000000000016906040918251927f063d829f0000000000000000000000000000000000000000000000000000000084528084600481855afa801561048b576000948591613c0f575b508151947ecdcefb0000000000000000000000000000000000000000000000000000000086528286600481875afa95861561048b57600096613bea575b5082517f78792ff100000000000000000000000000000000000000000000000000000000815260048101919091526024810191909152604481019490945260208460648173e88aaf46c9124b7b08c2dcc2505429ce729796485af493841561048b57600094613bbf575b50517fca103d150000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000929092166001600160a01b0316600483015260609082908180602481015b03915afa92831561048b5760009182908395613b8b575b50613b5681948215968388600014613b7457505060005b94613c6c565b9415613b625750600090565b613b6f6119729186613ca0565b613c32565b613b8691613b8188613c32565b613d1c565b613b50565b91945050613bb0915060603d8111613bb8575b613ba88183611bea565b81019061398f565b939038613b39565b503d613b9e565b613b229391945091613be060609360203d8111610764576107558183611bea565b9491935091613abe565b602092919650613c0690843d8611611b0457611af48183611bea565b50959091613a54565b905081613c299295503d8611611b0457611af48183611bea565b93909338613a17565b670e6ed27d6668000090818102918183041490151715610585576706f05b59d3b20000810180911161058557670de0b6b3a7640000900490565b90613c76916126f6565b670de0b6b3a7640000908181019081811161058557670de0b6b3a763ffff01908111610585570490565b90670de0b6b3a764000091828102928184041490151715610585578060011c82018092116105855761197291612709565b15613cd857565b606460405162461bcd60e51b815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f7700000000000000000000006044820152fd5b90916000198383099280830292838086109503948086039514613d9757908291613d47868411613cd1565b096001821901821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b5050906119729250612709565b908160a091031261001b578051916020820151916040810151916080606083015192015190565b6000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166040517f5a3b447700000000000000000000000000000000000000000000000000000000815260a081600481855afa801561048b57613e41916000908192613f2d575b50612965565b6040516370a0823160e01b81526001600160a01b03831660048201529091602091828160248173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc25afa90811561048b576004928491600093613f0e575b50604051938480927f7b3f86550000000000000000000000000000000000000000000000000000000082525afa91821561048b57613ed993600093613eef575b50506126f6565b818111613ee4575050565b6119729293506126e9565b613f06929350803d10610764576107558183611bea565b903880613ed2565b613f26919350823d8411610764576107558183611bea565b9138613e92565b9050613f50915060a03d8111613f5a575b613f488183611bea565b810190613da4565b5050509038613e3b565b503d613f3e565b613f69612bbc565b80600019939293048311610585576040517f50d25bcd0000000000000000000000000000000000000000000000000000000081526020936001600160a01b03928583600481877f0000000000000000000000000000000000000000000000000000000000000000165afa91821561048b57613fed936000936140e2575b5002612709565b7f00000000000000000000000000000000000000000000000000000000000000006140dd576000918291604051868101917f0000000000000000000000000000000000000000000000000000000000000000835260248201526024815261405381611bb2565b51917f0000000000000000000000000000000000000000000000000000000000000000165afa614081612fca565b901561409957826119729293825183010191016126b4565b6064836040519062461bcd60e51b82526004820152600860248201527f21737563636573730000000000000000000000000000000000000000000000006044820152fd5b925050565b6140fa919350873d8911610764576107558183611bea565b9138613fe6565b90604061197292733637df43f938b05a71bb828f13d9f14498e6883c81528160208201520190610950565b612a5291612a38602092612a2a6040519384927fd9d0373b00000000000000000000000000000000000000000000000000000000878501527f0000000000000000000000000000000000000000000000000000000000000000602485016060919493670de0b6b3a7640000936001600160a01b036080840197168352602083015260408201520152565b612a5291612a38602092612a2a6040519384927f854a169400000000000000000000000000000000000000000000000000000000878501527f00000000000000000000000000000000000000000000000000000000000000006024850160809194936000936001600160a01b0360a084019716835260208301526040820152670de0b6b3a764000060608201520152565b60206142c960009260405163c64609ff60e01b848201526001600160a01b0391827f00000000000000000000000000000000000000000000000000000000000000001660248301528560448301526064820152846084820152608481526142ad81611bce565b604051948580948193631cff79cd60e01b835260048301614101565b03927f0000000000000000000000000000000000000000000000000000000000000000165af1801561048b576142fc5750565b612b149060203d8111610764576107558183611bea565b90816143da575b60405163c64609ff60e01b6020828101919091526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248301526044820184905260648201929092526000608482015261439f926143848260a48101611a45565b6040518080958194631cff79cd60e01b835260048301614101565b03916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561048b576142fc5750565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2803b1561001b5760006040518092632e1a7d4d60e01b825281838161441c89600483019190602083019252565b03925af192831561048b57614384602093611a459361439f96614446575b5093505092505061431a565b80610df261445392611b61565b3861443a565b90816144cd575b60405163c64609ff60e01b6020828101919091526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166024830152604482018490526064820192909252921515608484015261439f9290916143848260a48101611a45565b9173c02aaa39b223fe8d0a0e5c4f27ead9083c756cc291823b1561001b5760006040518094632e1a7d4d60e01b825281838161451187600483019190602083019252565b03925af1801561048b5761439f9460209461438492614537575b50929450509150614460565b80610df261454492611b61565b3861452b565b8061467b575b60206145c091604051907fa967ee2c000000000000000000000000000000000000000000000000000000008383015261438482611a457f0000000000000000000000000000000000000000000000000000000000000000602483019190916001600160a01b036020820193169052565b03916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561048b5761465d575b5047806146035750565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2803b1561001b576000906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1801561048b57612ae95750565b6146749060203d8111610764576107558183611bea565b50386145f9565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290813b1561001b5760006040518093632e1a7d4d60e01b82528183816146be87600483019190602083019252565b03925af190811561048b576145c0926020926146de575b50915050614550565b80610df26146eb92611b61565b386146d5565b919082608091031261001b578151916020810151916060604083015192015190565b9081606091031261001b57805161472981610332565b916040602083015192015190565b906000821280151661058557565b9190916000838201938412911290801582169115161761058557565b6040517f4d966198000000000000000000000000000000000000000000000000000000008152600092917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316608083600481845afa90811561048b57600493600092614855575b50606090604051948580927f3884cd880000000000000000000000000000000000000000000000000000000082525afa92831561048b57600093614832575b50600a83101561481e57505050565b6119729394506133f6929161072591614745565b61484b91935060603d81116134315761341f8183611bea565b915050913861480f565b60609192506148719060803d8111613467576134558183611bea565b50505091906147d0565b9190918215612e11578261488e916126f6565b670de0b6b3a7640000928303838111610585576148aa91612709565b8281029281840414901517156105855761197291612709565b801580156148dd575b612e115761197292610725916126f6565b5081156148cc565b919061ffff60025460081c1661271090810193848211610585576119729461490c916126f6565b045b670de0b6b3a76400009192614922916126f6565b0490808210801590614937575b612e53570390565b50801561492f56fea2646970667358221220cf0b1c8d769769736640daa1f32bbafd5040e1db45f1b9ee432263576915180764736f6c63430008120033000000000000000000000000ae78736cd615f374d3085123a210448e74fc639300000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000e300b3a6b24cb3c5c87034155f7fff7f77c862a000000000000000000000000000000000000000000000000000000000000000644346f03e00000000000000000000000000000000000000000000000000000000000000000000000000000000536218f9e9eb48863970252233c8f271f554c2d0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000116c6576616a6e6120726574682f77657468000000000000000000000000000000