[ { "inputs": [ { "internalType": "address", "name": "underlying_", "type": "address" }, { "internalType": "contract ComptrollerInterface", "name": "comptroller_", "type": "address" }, { "internalType": "contract InterestRateModel", "name": "interestRateModel_", "type": "address" }, { "internalType": "uint256", "name": "initialExchangeRateMantissa_", "type": "uint256" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint8", "name": "decimals_", "type": "uint8" }, { "internalType": "address payable", "name": "admin_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "cashPrior", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "interestAccumulated", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "borrowIndex", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalBorrows", "type": "uint256" } ], "name": "AccrueInterest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "borrower", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "borrowAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "accountBorrows", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalBorrows", "type": "uint256" } ], "name": "Borrow", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "error", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "info", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "detail", "type": "uint256" } ], "name": "Failure", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "liquidator", "type": "address" }, { "indexed": false, "internalType": "address", "name": "borrower", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "cTokenCollateral", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "seizeTokens", "type": "uint256" } ], "name": "LiquidateBorrow", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "borrower", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "insufficientLeverage", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldBorrowPrincipal", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newBorrowPrincipal", "type": "uint256" } ], "name": "LiquidateLeverage", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "payer", "type": "address" }, { "indexed": false, "internalType": "address", "name": "minter", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "mintAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "mintTokens", "type": "uint256" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "NewAdmin", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "contract ComptrollerInterface", "name": "oldComptroller", "type": "address" }, { "indexed": false, "internalType": "contract ComptrollerInterface", "name": "newComptroller", "type": "address" } ], "name": "NewComptroller", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "contract InterestRateModel", "name": "oldInterestRateModel", "type": "address" }, { "indexed": false, "internalType": "contract InterestRateModel", "name": "newInterestRateModel", "type": "address" } ], "name": "NewMarketInterestRateModel", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldVeeProxy", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newVeeProxy", "type": "address" } ], "name": "NewOrderProxy", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldPendingAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newPendingAdmin", "type": "address" } ], "name": "NewPendingAdmin", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldReserveFactorMantissa", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newReserveFactorMantissa", "type": "uint256" } ], "name": "NewReserveFactor", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "redeemer", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "redeemAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "redeemTokens", "type": "uint256" } ], "name": "Redeem", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "payer", "type": "address" }, { "indexed": false, "internalType": "address", "name": "borrower", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "accountBorrows", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalBorrows", "type": "uint256" } ], "name": "RepayBorrow", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "payer", "type": "address" }, { "indexed": false, "internalType": "address", "name": "borrower", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "expectLeverageAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "remainLeverageAmount", "type": "uint256" } ], "name": "RepayLeverage", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "benefactor", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "addAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newTotalReserves", "type": "uint256" } ], "name": "ReservesAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "admin", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "reduceAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newTotalReserves", "type": "uint256" } ], "name": "ReservesReduced", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "_acceptAdmin", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "addAmount", "type": "uint256" } ], "name": "_addReserves", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "reduceAmount", "type": "uint256" } ], "name": "_reduceReserves", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract ComptrollerInterface", "name": "newComptroller", "type": "address" } ], "name": "_setComptroller", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract InterestRateModel", "name": "newInterestRateModel", "type": "address" } ], "name": "_setInterestRateModel", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "newPendingAdmin", "type": "address" } ], "name": "_setPendingAdmin", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newReserveFactorMantissa", "type": "uint256" } ], "name": "_setReserveFactor", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "accountLeverage", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "accrualBlockNumber", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "accrueInterest", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "admin", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOfUnderlying", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "borrowAmount", "type": "uint256" } ], "name": "borrow", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "borrowAmount", "type": "uint256" }, { "internalType": "uint8", "name": "leverage", "type": "uint8" }, { "internalType": "bytes4", "name": "signature", "type": "bytes4" }, { "internalType": "bytes", "name": "order", "type": "bytes" } ], "name": "borrowAndCall", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "borrowBalanceCurrent", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "borrowBalanceStored", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "borrowIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "borrowRatePerBlock", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cTokenCore", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "comptroller", "outputs": [ { "internalType": "contract ComptrollerInterface", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "exchangeRateCurrent", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "exchangeRateStored", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getAccountSnapshot", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCash", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getOrderProxy", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "underlying_", "type": "address" }, { "internalType": "contract ComptrollerInterface", "name": "comptroller_", "type": "address" }, { "internalType": "contract InterestRateModel", "name": "interestRateModel_", "type": "address" }, { "internalType": "uint256", "name": "initialExchangeRateMantissa_", "type": "uint256" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint8", "name": "decimals_", "type": "uint8" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract ComptrollerInterface", "name": "comptroller_", "type": "address" }, { "internalType": "contract InterestRateModel", "name": "interestRateModel_", "type": "address" }, { "internalType": "uint256", "name": "initialExchangeRateMantissa_", "type": "uint256" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint8", "name": "decimals_", "type": "uint8" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "interestRateModel", "outputs": [ { "internalType": "contract InterestRateModel", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isCToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "borrower", "type": "address" }, { "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { "internalType": "contract CTokenInterface", "name": "cTokenCollateral", "type": "address" } ], "name": "liquidateBorrow", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "mintAmount", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "mintAmount", "type": "uint256" } ], "name": "mintBehalf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "orderProxy", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingAdmin", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "redeemTokens", "type": "uint256" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "redeemAmount", "type": "uint256" } ], "name": "redeemUnderlying", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "repayAmount", "type": "uint256" } ], "name": "repayBorrow", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "borrower", "type": "address" }, { "internalType": "uint256", "name": "repayAmount", "type": "uint256" } ], "name": "repayBorrowBehalf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "borrower", "type": "address" }, { "internalType": "uint256", "name": "repayAmount", "type": "uint256" }, { "internalType": "uint256", "name": "expectLeverageAmount", "type": "uint256" }, { "internalType": "uint256", "name": "realLeverageAmount", "type": "uint256" } ], "name": "repayLeverageAndBorrow", "outputs": [ { "internalType": "uint256", "name": "err", "type": "uint256" }, { "internalType": "uint256", "name": "result", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reserveFactorMantissa", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "liquidator", "type": "address" }, { "internalType": "address", "name": "borrower", "type": "address" }, { "internalType": "uint256", "name": "seizeTokens", "type": "uint256" } ], "name": "seize", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOrderProxy", "type": "address" } ], "name": "setOrderProxy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "supplyRatePerBlock", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract EIP20NonStandardInterface", "name": "token", "type": "address" } ], "name": "sweepToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalBorrows", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalBorrowsCurrent", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "totalReserves", "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": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "src", "type": "address" }, { "internalType": "address", "name": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "underlying", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b506040516200672738038062006727833981016040819052620000349162000883565b60038054610100600160a81b03191633610100021790556200005c8888888888888862000090565b600380546001600160a01b0390921661010002610100600160a81b03199092169190911790555062000a2495505050505050565b620000ab8686868686866200014560201b6200150b1760201c565b601480546001600160a01b0319166001600160a01b038916908117909155604080516318160ddd60e01b815290516318160ddd91600480820192602092909190829003018186803b1580156200010057600080fd5b505afa15801562000115573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013b919062000988565b5050505050505050565b60035461010090046001600160a01b03163314620001b65760405162461bcd60e51b8152602060048201526024808201527f6f6e6c792061646d696e206d617920696e697469616c697a6520746865206d616044820152631c9ad95d60e21b60648201526084015b60405180910390fd5b600954158015620001c75750600a54155b620002215760405162461bcd60e51b815260206004820152602360248201527f6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6044820152626e636560e81b6064820152608401620001ad565b6007849055836200028e5760405162461bcd60e51b815260206004820152603060248201527f696e697469616c2065786368616e67652072617465206d75737420626520677260448201526f32b0ba32b9103a3430b7103d32b9379760811b6064820152608401620001ad565b60006200029b87620003b7565b90508015620002ed5760405162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c65640000000000006044820152606401620001ad565b43600955670de0b6b3a7640000600a5562000308866200051b565b90508015620003655760405162461bcd60e51b815260206004820152602260248201527f73657474696e6720696e7465726573742072617465206d6f64656c206661696c604482015261195960f21b6064820152608401620001ad565b83516200037a90600190602087019062000714565b5082516200039090600290602086019062000714565b50506003805460ff90921660ff199283161790556000805490911660011790555050505050565b60035460009061010090046001600160a01b03163314620003e657620003e06001603f62000692565b92915050565b60055460408051623f1ee960e11b815290516001600160a01b0392831692851691627e3dd2916004808301926020929190829003018186803b1580156200042c57600080fd5b505afa15801562000441573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000467919062000964565b620004b55760405162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c7365000000006044820152606401620001ad565b600580546001600160a01b0319166001600160a01b0385811691821790925560408051928416835260208301919091527f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d91015b60405180910390a160005b9392505050565b600354600090819061010090046001600160a01b031633146200054657620005146001604262000692565b43600954146200055e5762000514600a604162000692565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b158015620005b057600080fd5b505afa158015620005c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005eb919062000964565b620006395760405162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c7365000000006044820152606401620001ad565b600680546001600160a01b0319166001600160a01b0385811691821790925560408051928416835260208301919091527fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926910162000509565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0836010811115620006ca57620006ca620009df565b836052811115620006df57620006df620009df565b60408051928352602083019190915260009082015260600160405180910390a1826010811115620005145762000514620009df565b8280546200072290620009a2565b90600052602060002090601f01602090048101928262000746576000855562000791565b82601f106200076157805160ff191683800117855562000791565b8280016001018555821562000791579182015b828111156200079157825182559160200191906001019062000774565b506200079f929150620007a3565b5090565b5b808211156200079f5760008155600101620007a4565b8051620007c78162000a0b565b919050565b600082601f830112620007de57600080fd5b81516001600160401b0380821115620007fb57620007fb620009f5565b604051601f8301601f19908116603f01168101908282118183101715620008265762000826620009f5565b816040528381526020925086838588010111156200084357600080fd5b600091505b8382101562000867578582018301518183018401529082019062000848565b83821115620008795760008385830101525b9695505050505050565b600080600080600080600080610100898b031215620008a157600080fd5b8851620008ae8162000a0b565b60208a0151909850620008c18162000a0b565b60408a0151909750620008d48162000a0b565b60608a015160808b015191975095506001600160401b0380821115620008f957600080fd5b620009078c838d01620007cc565b955060a08b01519150808211156200091e57600080fd5b506200092d8b828c01620007cc565b93505060c089015160ff811681146200094557600080fd5b91506200095560e08a01620007ba565b90509295985092959890939650565b6000602082840312156200097757600080fd5b815180151581146200051457600080fd5b6000602082840312156200099b57600080fd5b5051919050565b600181811c90821680620009b757607f821691505b60208210811415620009d957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811462000a2157600080fd5b50565b615cf38062000a346000396000f3fe6080604052600436106103765760003560e01c806373acee98116101d1578063b71d1a0c11610102578063e9c714f2116100a0578063f851a4401161006f578063f851a44014610a45578063f8f9da2814610a6a578063fca7820b14610a7f578063fe9c44ae14610a9f57600080fd5b8063e9c714f2146109d0578063f2b3abbd146109e5578063f3fdb15a14610a05578063f5e3c46214610a2557600080fd5b8063c5ebeaec116100dc578063c5ebeaec1461092a578063c66688581461094a578063db006a751461096a578063dd62ed3e1461098a57600080fd5b8063b71d1a0c146108b5578063bd6d894d146108d5578063c37f68e2146108ea57600080fd5b8063a0712d681161016f578063a9059cbb11610149578063a9059cbb1461084a578063aa5af0fd1461086a578063ae9d70b014610880578063b2a02ff11461089557600080fd5b8063a0712d6814610802578063a6afed9514610822578063a7de93e61461083757600080fd5b80638f840ddd116101ab5780638f840ddd1461079757806395d89b41146107ad57806395dd9193146107c257806399d8c1b4146107e257600080fd5b806373acee9814610742578063852a12e3146107575780638a07b6421461077757600080fd5b8063313ce567116102ab5780634ead96be11610249578063622a7c0511610223578063622a7c05146106a15780636c540baf146106d65780636f307dc3146106ec57806370a082311461070c57600080fd5b80634ead96be146106415780635fe3b56714610661578063601a0bf11461068157600080fd5b80633c42f81f116102855780633c42f81f146105be5780633e941010146105eb5780634576b5db1461060b57806347bd37181461062b57600080fd5b8063313ce5671461055d5780633af9e669146105895780633b1d21a2146105a957600080fd5b80631a31d4651161031857806323b872dd116102f257806323b872dd146104c75780632608f818146104e7578063267822471461050757806328921e6a1461053f57600080fd5b80631a31d465146104655780631be195601461048757806323323e03146104a757600080fd5b8063173b990411610354578063173b99041461040457806317bfdfbc1461041a57806318160ddd1461043a578063182df0f51461045057600080fd5b806306fdde031461037b578063095ea7b3146103a65780630e752702146103d6575b600080fd5b34801561038757600080fd5b50610390610ab4565b60405161039d9190615a3c565b60405180910390f35b3480156103b257600080fd5b506103c66103c13660046156ec565b610b42565b604051901515815260200161039d565b3480156103e257600080fd5b506103f66103f13660046158d0565b610bb0565b60405190815260200161039d565b34801561041057600080fd5b506103f660085481565b34801561042657600080fd5b506103f661043536600461559f565b610bc4565b34801561044657600080fd5b506103f6600d5481565b34801561045c57600080fd5b506103f6610c3d565b34801561047157600080fd5b50610485610480366004615636565b610cc0565b005b34801561049357600080fd5b506104856104a236600461559f565b610d64565b3480156104b357600080fd5b506103f66104c23660046156ec565b610ec9565b3480156104d357600080fd5b506103c66104e23660046155f5565b610f54565b3480156104f357600080fd5b506103f66105023660046156ec565b610fa4565b34801561051357600080fd5b50600454610527906001600160a01b031681565b6040516001600160a01b03909116815260200161039d565b34801561054b57600080fd5b50600e546001600160a01b0316610527565b34801561056957600080fd5b506003546105779060ff1681565b60405160ff909116815260200161039d565b34801561059557600080fd5b506103f66105a436600461559f565b610fba565b3480156105b557600080fd5b506103f661106a565b3480156105ca57600080fd5b506103f66105d936600461559f565b60126020526000908152604090205481565b3480156105f757600080fd5b506103f66106063660046158d0565b611079565b34801561061757600080fd5b506103f661062636600461559f565b611084565b34801561063757600080fd5b506103f6600b5481565b34801561064d57600080fd5b50600e54610527906001600160a01b031681565b34801561066d57600080fd5b50600554610527906001600160a01b031681565b34801561068d57600080fd5b506103f661069c3660046158d0565b6111d8565b3480156106ad57600080fd5b506106c16106bc36600461575a565b611257565b6040805192835260208301919091520161039d565b3480156106e257600080fd5b506103f660095481565b3480156106f857600080fd5b50601454610527906001600160a01b031681565b34801561071857600080fd5b506103f661072736600461559f565b6001600160a01b03166000908152600f602052604090205490565b34801561074e57600080fd5b506103f66112f8565b34801561076357600080fd5b506103f66107723660046158d0565b61135e565b34801561078357600080fd5b5061048561079236600461559f565b611369565b3480156107a357600080fd5b506103f6600c5481565b3480156107b957600080fd5b5061039061147f565b3480156107ce57600080fd5b506103f66107dd36600461559f565b61148c565b3480156107ee57600080fd5b506104856107fd3660046157b7565b61150b565b34801561080e57600080fd5b506103f661081d3660046158d0565b611766565b34801561082e57600080fd5b506103f6611772565b610390610845366004615926565b611ae7565b34801561085657600080fd5b506103c66108653660046156ec565b611cac565b34801561087657600080fd5b506103f6600a5481565b34801561088c57600080fd5b506103f6611cfc565b3480156108a157600080fd5b506103f66108b03660046155f5565b611da3565b3480156108c157600080fd5b506103f66108d036600461559f565b611df2565b3480156108e157600080fd5b506103f6611e72565b3480156108f657600080fd5b5061090a61090536600461559f565b611ede565b60408051948552602085019390935291830152606082015260800161039d565b34801561093657600080fd5b506103f66109453660046158d0565b611f7f565b34801561095657600080fd5b50601354610527906001600160a01b031681565b34801561097657600080fd5b506103f66109853660046158d0565b611f8a565b34801561099657600080fd5b506103f66109a53660046155bc565b6001600160a01b03918216600090815260106020908152604080832093909416825291909152205490565b3480156109dc57600080fd5b506103f6611f95565b3480156109f157600080fd5b506103f6610a0036600461559f565b61208d565b348015610a1157600080fd5b50600654610527906001600160a01b031681565b348015610a3157600080fd5b506103f6610a40366004615718565b6120c5565b348015610a5157600080fd5b506003546105279061010090046001600160a01b031681565b348015610a7657600080fd5b506103f66120dd565b348015610a8b57600080fd5b506103f6610a9a3660046158d0565b612130565b348015610aab57600080fd5b506103c6600181565b60018054610ac190615bad565b80601f0160208091040260200160405190810160405280929190818152602001828054610aed90615bad565b8015610b3a5780601f10610b0f57610100808354040283529160200191610b3a565b820191906000526020600020905b815481529060010190602001808311610b1d57829003601f168201915b505050505081565b3360008181526010602090815260408083206001600160a01b03871680855292528083208590555191929182907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b9e9087815260200190565b60405180910390a35060019392505050565b600080610bbc83612192565b509392505050565b6000805460ff16610bf05760405162461bcd60e51b8152600401610be790615a7f565b60405180910390fd5b6000805460ff19168155610c02611772565b14610c1f5760405162461bcd60e51b8152600401610be790615a4f565b610c288261148c565b90505b6000805460ff19166001179055919050565b6000806000610c4a61221e565b90925090506000826003811115610c6357610c63615c43565b14610cba5760405162461bcd60e51b815260206004820152602160248201527f65786368616e67655261746553746f726564496e7465726e616c206661696c656044820152601960fa1b6064820152608401610be7565b92915050565b610cce86868686868661150b565b601480546001600160a01b0319166001600160a01b038916908117909155604080516318160ddd60e01b815290516318160ddd91600480820192602092909190829003018186803b158015610d2257600080fd5b505afa158015610d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5a91906158e9565b5050505050505050565b6014546001600160a01b0382811691161415610ddd5760405162461bcd60e51b815260206004820152603260248201527f4345726332303a3a7377656570546f6b656e3a2063616e206e6f74207377656560448201527138103ab73232b9363cb4b733903a37b5b2b760711b6064820152608401610be7565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610e1f57600080fd5b505afa158015610e33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5791906158e9565b60035460405163a9059cbb60e01b81526001600160a01b03610100909204821660048201526024810183905291925083169063a9059cbb906044015b600060405180830381600087803b158015610ead57600080fd5b505af1158015610ec1573d6000803e3d6000fd5b505050505050565b600081610f0b5760405162461bcd60e51b815260206004820152601060248201526f36b4b73a20b6b7bab73a1032b93937b960811b6044820152606401610be7565b6000610f1784846122bd565b509050610f4d81604051806040016040528060118152602001701b5a5b9d10995a185b198819985a5b1959607a1b81525061234a565b9392505050565b6000805460ff16610f775760405162461bcd60e51b8152600401610be790615a7f565b6000805460ff19168155610f8d33868686612573565b1490506000805460ff191660011790559392505050565b600080610fb1848461279c565b50949350505050565b6000806040518060200160405280610fd0611e72565b90526001600160a01b0384166000908152600f6020526040812054919250908190610ffc908490612802565b9092509050600082600381111561101557611015615c43565b146110625760405162461bcd60e51b815260206004820152601f60248201527f62616c616e636520636f756c64206e6f742062652063616c63756c61746564006044820152606401610be7565b949350505050565b6000611074612855565b905090565b6000610cba826128d9565b60035460009061010090046001600160a01b031633146110aa57610cba6001603f612951565b60055460408051623f1ee960e11b815290516001600160a01b0392831692851691627e3dd2916004808301926020929190829003018186803b1580156110ef57600080fd5b505afa158015611103573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111279190615795565b6111735760405162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c7365000000006044820152606401610be7565b600580546001600160a01b0319166001600160a01b0385811691821790925560408051928416835260208301919091527f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d91015b60405180910390a160009392505050565b6000805460ff166111fb5760405162461bcd60e51b8152600401610be790615a7f565b6000805460ff1916815561120d611772565b905080156112395761123181601081111561122a5761122a615c43565b6030612951565b915050610c2b565b611242836129ca565b9150506000805460ff19166001179055919050565b60008082156112a65761126b868585612b08565b6040805180820190915260148152731c995c185e53195d995c9859d94819985a5b195960621b602082015291935091506112a690839061234a565b84156112ef576112b6868661279c565b6040805180820190915260128152711c995c185e509bdc9c9bddc819985a5b195960721b602082015291935091506112ef90839061234a565b94509492505050565b6000805460ff1661131b5760405162461bcd60e51b8152600401610be790615a7f565b6000805460ff1916815561132d611772565b1461134a5760405162461bcd60e51b8152600401610be790615a4f565b50600b546000805460ff1916600117905590565b6000610cba82612b98565b60035461010090046001600160a01b031633146113c85760405162461bcd60e51b815260206004820152601d60248201527f6f6e6c792061646d696e206d617920736574204f7264657250726f78790000006044820152606401610be7565b6001600160a01b03811661141e5760405162461bcd60e51b815260206004820152601a60248201527f696e76616c6964204f7264657250726f787920616464726573730000000000006044820152606401610be7565b600e80546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f5bdc68c0fc53c8c4d7aa6227b9e64ddc96da585778861dec1b1219db146a4c00910160405180910390a15050565b60028054610ac190615bad565b600080600061149a84612bfd565b909250905060008260038111156114b3576114b3615c43565b14610f4d5760405162461bcd60e51b815260206004820152602260248201527f626f72726f7742616c616e636553746f726564496e7465726e616c206661696c604482015261195960f21b6064820152608401610be7565b60035461010090046001600160a01b031633146115765760405162461bcd60e51b8152602060048201526024808201527f6f6e6c792061646d696e206d617920696e697469616c697a6520746865206d616044820152631c9ad95d60e21b6064820152608401610be7565b6009541580156115865750600a54155b6115de5760405162461bcd60e51b815260206004820152602360248201527f6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6044820152626e636560e81b6064820152608401610be7565b6007849055836116495760405162461bcd60e51b815260206004820152603060248201527f696e697469616c2065786368616e67652072617465206d75737420626520677260448201526f32b0ba32b9103a3430b7103d32b9379760811b6064820152608401610be7565b600061165487611084565b905080156116a45760405162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c65640000000000006044820152606401610be7565b43600955670de0b6b3a7640000600a556116bd86612c49565b905080156117185760405162461bcd60e51b815260206004820152602260248201527f73657474696e6720696e7465726573742072617465206d6f64656c206661696c604482015261195960f21b6064820152608401610be7565b835161172b906001906020870190615454565b50825161173f906002906020860190615454565b50506003805460ff90921660ff199283161790556000805490911660011790555050505050565b600080610bbc83612db3565b60095460009043908082141561178c5760005b9250505090565b6000611796612855565b600b54600c54600a546006546040516315f2405360e01b81526004810186905260248101859052604481018490529495509293919290916000916001600160a01b0316906315f240539060640160206040518083038186803b1580156117fb57600080fd5b505afa15801561180f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183391906158e9565b905065048c2739500081111561188b5760405162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c792068696768000000006044820152606401610be7565b6000806118988989612e11565b909250905060008260038111156118b1576118b1615c43565b146118f25760405162461bcd60e51b8152602060048201526011602482015270313637b1b5903232b63a309032b93937b960791b6044820152606401610be7565b60408051602081019091526000815260008060008061191f60405180602001604052808a81525087612e3c565b9097509450600087600381111561193857611938615c43565b1461196e5761195b6009600689600381111561195657611956615c43565b612eb8565b9e50505050505050505050505050505090565b611978858c612802565b9097509350600087600381111561199157611991615c43565b146119af5761195b6009600189600381111561195657611956615c43565b6119b9848c612f30565b909750925060008760038111156119d2576119d2615c43565b146119f05761195b6009600489600381111561195657611956615c43565b611a0b6040518060200160405280600854815250858c612f60565b90975091506000876003811115611a2457611a24615c43565b14611a425761195b6009600589600381111561195657611956615c43565b611a4d858a8b612f60565b90975090506000876003811115611a6657611a66615c43565b14611a845761195b6009600389600381111561195657611956615c43565b60098e9055600a819055600b839055600c829055604080518d815260208101869052908101829052606081018490527f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc049060800160405180910390a1600061195b565b6014546060906001600160a01b0316600080611b068960ff8a16612fba565b90925090506000826003811115611b1f57611b1f615c43565b14611b5b5760405162461bcd60e51b815260206004820152600c60248201526b30b6b7bab73a1032b93937b960a11b6044820152606401610be7565b600e5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018390529084169063095ea7b390604401602060405180830381600087803b158015611ba957600080fd5b505af1158015611bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be19190615795565b506000611bee8a8a613004565b90508015611c2d5760405162461bcd60e51b815260206004820152600c60248201526b3137b93937bb9032b93937b960a11b6044820152606401610be7565b600080611c708a8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506130df92505050565b9150915081611c7e826131ce565b90611c9c5760405162461bcd60e51b8152600401610be79190615a3c565b509b9a5050505050505050505050565b6000805460ff16611ccf5760405162461bcd60e51b8152600401610be790615a7f565b6000805460ff19168155611ce533338686612573565b1490505b6000805460ff1916600117905592915050565b6006546000906001600160a01b031663b8168816611d18612855565b600b54600c546008546040516001600160e01b031960e087901b16815260048101949094526024840192909252604483015260648201526084015b60206040518083038186803b158015611d6b57600080fd5b505afa158015611d7f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107491906158e9565b6000805460ff16611dc65760405162461bcd60e51b8152600401610be790615a7f565b6000805460ff19169055611ddc3385858561321a565b90506000805460ff191660011790559392505050565b60035460009061010090046001600160a01b03163314611e1857610cba60016045612951565b600480546001600160a01b038481166001600160a01b031983168117909355604080519190921680825260208201939093527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991016111c7565b6000805460ff16611e955760405162461bcd60e51b8152600401610be790615a7f565b6000805460ff19168155611ea7611772565b14611ec45760405162461bcd60e51b8152600401610be790615a4f565b611ecc610c3d565b90506000805460ff1916600117905590565b6001600160a01b0381166000908152600f6020526040812054819081908190818080611f0989612bfd565b935090506000816003811115611f2157611f21615c43565b14611f3f5760095b6000806000975097509750975050505050611f78565b611f4761221e565b925090506000816003811115611f5f57611f5f615c43565b14611f6b576009611f29565b5060009650919450925090505b9193509193565b6000610cba826133a5565b6000610cba82613403565b6004546000906001600160a01b031633141580611fb0575033155b15611fc15761107460016000612951565b60038054600480546001600160a01b03808216610100818102610100600160a81b0319871617968790556001600160a01b031990931690935560408051948390048216808652929095041660208401529290917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a1600454604080516001600160a01b03808516825290921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9910160405180910390a16000611785565b600080612098611772565b905080156120bc57610f4d8160108111156120b5576120b5615c43565b6040612951565b610f4d83612c49565b6000806120d3858585613461565b5095945050505050565b6006546000906001600160a01b03166315f240536120f9612855565b600b54600c546040516001600160e01b031960e086901b168152600481019390935260248301919091526044820152606401611d53565b6000805460ff166121535760405162461bcd60e51b8152600401610be790615a7f565b6000805460ff19168155612165611772565b905080156121895761123181601081111561218257612182615c43565b6046612951565b61124283613588565b60008054819060ff166121b75760405162461bcd60e51b8152600401610be790615a7f565b6000805460ff191681556121c9611772565b905080156121f9576121ed8160108111156121e6576121e6615c43565b6036612951565b6000925092505061220a565b61220433338661361d565b92509250505b6000805460ff191660011790559092909150565b600d54600090819080612238575050600754600092909150565b6000612242612855565b905061225a6040518060200160405280600081525090565b600080600c54600b548561226e9190615afc565b6122789190615b47565b90506122848186613891565b93509150600082600381111561229c5761229c615c43565b146122ae575095600095509350505050565b50505160009590945092505050565b60008054819060ff166122e25760405162461bcd60e51b8152600401610be790615a7f565b6000805460ff191681556122f4611772565b905080156123245761231881601081111561231157612311615c43565b601e612951565b60009250925050612334565b61232e858561395c565b92509250505b6000805460ff1916600117905590939092509050565b81612353575050565b6000815160056123639190615afc565b67ffffffffffffffff81111561237b5761237b615c6f565b6040519080825280601f01601f1916602001820160405280156123a5576020820181803683370190505b50905060005b825181101561240c578281815181106123c6576123c6615c59565b602001015160f81c60f81b8282815181106123e3576123e3615c59565b60200101906001600160f81b031916908160001a9053508061240481615be8565b9150506123ab565b600160fd1b8261241d836000615afc565b8151811061242d5761242d615c59565b60200101906001600160f81b031916908160001a905350600560fb1b82612455836001615afc565b8151811061246557612465615c59565b60200101906001600160f81b031916908160001a905350612487600a85615b14565b612492906030615afc565b60f81b826124a1836002615afc565b815181106124b1576124b1615c59565b60200101906001600160f81b031916908160001a9053506124d3600a85615c03565b6124de906030615afc565b60f81b826124ed836003615afc565b815181106124fd576124fd615c59565b60200101906001600160f81b031916908160001a905350602960f81b82612525836004615afc565b8151811061253557612535615c59565b60200101906001600160f81b031916908160001a90535081841561256c5760405162461bcd60e51b8152600401610be79190615a3c565b5050505050565b6005546040516317b9b84b60e31b81523060048201526001600160a01b038581166024830152848116604483015260648201849052600092839291169063bdcdc25890608401602060405180830381600087803b1580156125d357600080fd5b505af11580156125e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260b91906158e9565b90508015612628576126206003604a83612eb8565b915050611062565b836001600160a01b0316856001600160a01b0316141561264e576126206002604b612951565b6000856001600160a01b0316876001600160a01b03161415612673575060001961269b565b506001600160a01b038086166000908152601060209081526040808320938a16835292905220545b60006126a78583615b47565b6001600160a01b0388166000908152600f6020526040812054919250906126cf908790615b47565b6001600160a01b0388166000908152600f6020526040812054919250906126f7908890615b47565b6001600160a01b03808b166000908152600f6020526040808220869055918b1681522081905590506000198414612751576001600160a01b03808a166000908152601060209081526040808320938e168352929052208390555b876001600160a01b0316896001600160a01b0316600080516020615c9e8339815191528960405161278491815260200190565b60405180910390a35060009998505050505050505050565b60008054819060ff166127c15760405162461bcd60e51b8152600401610be790615a7f565b6000805460ff191681556127d3611772565b905080156127f7576123188160108111156127f0576127f0615c43565b6035612951565b61232e33868661361d565b6000806000806128128686612e3c565b9092509050600082600381111561282b5761282b615c43565b1461283c575091506000905061284e565b600061284782613cb3565b9350935050505b9250929050565b6014546040516370a0823160e01b81523060048201526000916001600160a01b03169081906370a082319060240160206040518083038186803b15801561289b57600080fd5b505afa1580156128af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d391906158e9565b91505090565b6000805460ff166128fc5760405162461bcd60e51b8152600401610be790615a7f565b6000805460ff1916815561290e611772565b905080156129325761123181601081111561292b5761292b615c43565b604e612951565b61293b83613ccb565b509150506000805460ff19166001179055919050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa083601081111561298657612986615c43565b83605281111561299857612998615c43565b60408051928352602083019190915260009082015260600160405180910390a1826010811115610f4d57610f4d615c43565b600354600090819061010090046001600160a01b031633146129f257610f4d60016031612951565b4360095414612a0757610f4d600a6033612951565b82612a10612855565b1015612a2257610f4d600e6032612951565b600c54831115612a3857610f4d60026034612951565b82600c54612a469190615b47565b9050600c54811115612a9a5760405162461bcd60e51b815260206004820152601960248201527f72656475636520726573657276657320756e646572666c6f77000000000000006044820152606401610be7565b600c819055600354612aba9061010090046001600160a01b031684613da2565b600354604080516101009092046001600160a01b031682526020820185905281018290527f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e906060016111c7565b60008082841015612b4b5760405162461bcd60e51b815260206004820152600d60248201526c1c185c985b481a5b9d985b1a59609a1b6044820152606401610be7565b6000612b55611772565b90508015612b7e57612b728160108111156127f0576127f0615c43565b60009250925050612b90565b612b8a33878787613e8c565b92509250505b935093915050565b6000805460ff16612bbb5760405162461bcd60e51b8152600401610be790615a7f565b6000805460ff19168155612bcd611772565b90508015612bf157611231816010811115612bea57612bea615c43565b6027612951565b611242336000856141ea565b6001600160a01b03811660009081526011602052604081208054829190612c2a5750600093849350915050565b612c3f8160000154600a5483600101546146c0565b9250925050915091565b600354600090819061010090046001600160a01b03163314612c7157610f4d60016042612951565b4360095414612c8657610f4d600a6041612951565b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b815260040160206040518083038186803b158015612cd757600080fd5b505afa158015612ceb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0f9190615795565b612d5b5760405162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c7365000000006044820152606401610be7565b600680546001600160a01b0319166001600160a01b0385811691821790925560408051928416835260208301919091527fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f92691016111c7565b60008054819060ff16612dd85760405162461bcd60e51b8152600401610be790615a7f565b6000805460ff19168155612dea611772565b90508015612e07576121ed81601081111561231157612311615c43565b612204338561395c565b600080838311612e30576000612e278486615b47565b9150915061284e565b5060039050600061284e565b6000612e546040518060200160405280600081525090565b600080612e65866000015186612fba565b90925090506000826003811115612e7e57612e7e615c43565b14612e9d5750604080516020810190915260008152909250905061284e565b60408051602081019091529081526000969095509350505050565b60007f45b96fe442630264581b197e84bbada861235052c5a1aadfff9ea4e40a969aa0846010811115612eed57612eed615c43565b846052811115612eff57612eff615c43565b604080519283526020830191909152810184905260600160405180910390a183601081111561106257611062615c43565b60008080612f3e8486615afc565b9050848110612f525760009250905061284e565b60026000925092505061284e565b600080600080612f708787612e3c565b90925090506000826003811115612f8957612f89615c43565b14612f9a5750915060009050612b90565b612fac612fa682613cb3565b86612f30565b935093505050935093915050565b60008083612fcd5750600090508061284e565b6000612fd98486615b28565b905083612fe68683615b14565b14612ff95760026000925092505061284e565b60009250905061284e565b6000805460ff166130275760405162461bcd60e51b8152600401610be790615a7f565b6000805460ff19169055600160ff831610801590613049575060038260ff1611155b6130885760405162461bcd60e51b815260206004820152601060248201526f1b195d995c9859d9481a5b9d985b1a5960821b6044820152606401610be7565b6000613092611772565b905080156130be576130b68160108111156130af576130af615c43565b6008612951565b915050611ce9565b6130c933858561474f565b9150506000805460ff1916600117905592915050565b600e546000906060906001600160a01b03166131325760405162461bcd60e51b81526020600482015260126024820152711bdc99195c941c9bde1e481b9bdd081cd95d60721b6044820152606401610be7565b60408051336020820152600091016040516020818303038152906040529050600061315e868387614b50565b600e546040519192506001600160a01b031690349061317e9084906159fc565b60006040518083038185875af1925050503d80600081146131bb576040519150601f19603f3d011682016040523d82523d6000602084013e6131c0565b606091505b509350935050509250929050565b606060448251101561320057505060408051808201909152600a8152696e6f2064657461696c7360b01b602082015290565b60048201915081806020019051810190610cba9190615859565b60055460405163d02f735160e01b81523060048201526001600160a01b0386811660248301528581166044830152848116606483015260848201849052600092839291169063d02f73519060a401602060405180830381600087803b15801561328257600080fd5b505af1158015613296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ba91906158e9565b905080156132cf576126206003601b83612eb8565b846001600160a01b0316846001600160a01b031614156132f5576126206006601c612951565b6001600160a01b0384166000908152600f6020526040812054613319908590615b47565b6001600160a01b0387166000908152600f602052604081205491925090613341908690615afc565b6001600160a01b038088166000818152600f6020526040808220879055928b168082529083902084905591519293509091600080516020615c9e8339815191529061338f9089815260200190565b60405180910390a3600098975050505050505050565b6000805460ff166133c85760405162461bcd60e51b8152600401610be790615a7f565b6000805460ff191681556133da611772565b905080156133f7576112318160108111156130af576130af615c43565b6112423384600061474f565b6000805460ff166134265760405162461bcd60e51b8152600401610be790615a7f565b6000805460ff19168155613438611772565b9050801561345557611231816010811115612bea57612bea615c43565b611242338460006141ea565b60008054819060ff166134865760405162461bcd60e51b8152600401610be790615a7f565b6000805460ff19168155613498611772565b905080156134c8576134bc8160108111156134b5576134b5615c43565b600f612951565b60009250925050613571565b836001600160a01b031663a6afed956040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561350357600080fd5b505af1158015613517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061353b91906158e9565b9050801561355f576134bc81601081111561355857613558615c43565b6010612951565b61356b33878787614bdc565b92509250505b6000805460ff191660011790559094909350915050565b60035460009061010090046001600160a01b031633146135ae57610cba60016047612951565b43600954146135c357610cba600a6048612951565b670de0b6b3a76400008211156135df57610cba60026049612951565b600880549083905560408051828152602081018590527faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f82146091016111c7565b600554604051631200453160e11b81523060048201526001600160a01b03858116602483015284811660448301526064820184905260009283928392909116906324008a6290608401602060405180830381600087803b15801561368057600080fd5b505af1158015613694573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b891906158e9565b905080156136cd57612b726003603883612eb8565b43600954146136e257612b72600a6039612951565b6136ea6154d8565b6001600160a01b038616600090815260116020526040902060010154606082015261371486612bfd565b608083018190526020830182600381111561373157613731615c43565b600381111561374257613742615c43565b905250600090508160200151600381111561375f5761375f615c43565b1461378e57613781600960378360200151600381111561195657611956615c43565b6000935093505050612b90565b6000198514156137a757608081015160408201526137af565b604081018590525b6137bd8782604001516150be565b60e0820181905260808201516137d39190615b47565b60a082015260e0810151600b546137ea9190615b47565b60c0820190815260a080830180516001600160a01b038a8116600081815260116020908152604091829020948555600a546001909501949094559551600b81905560e088015194518751938f1684529383019190915294810192909252606082015260808101929092527f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a1910160405180910390a160e00151600097909650945050505050565b60006138a96040518060200160405280600081525090565b6000806138be86670de0b6b3a7640000612fba565b909250905060008260038111156138d7576138d7615c43565b146138f65750604080516020810190915260008152909250905061284e565b6000806139038388615302565b9092509050600082600381111561391c5761391c615c43565b1461393f578160405180602001604052806000815250955095505050505061284e565b604080516020810190915290815260009890975095505050505050565b600554604051634ef4c3e160e01b8152600091829182916001600160a01b031690634ef4c3e19061399590309089908990600401615a18565b602060405180830381600087803b1580156139af57600080fd5b505af11580156139c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e791906158e9565b90508015613a08576139fc6003601f83612eb8565b6000925092505061284e565b4360095414613a1d576139fc600a6022612951565b613a5e6040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b613a6661221e565b6040830181905260208301826003811115613a8357613a83615c43565b6003811115613a9457613a94615c43565b9052506000905081602001516003811115613ab157613ab1615c43565b14613ae057613ad3600960218360200151600381111561195657611956615c43565b600093509350505061284e565b33613aeb81876150be565b60c0830181905260408051602081018252908401518152613b0c919061532d565b6060840181905260208401826003811115613b2957613b29615c43565b6003811115613b3a57613b3a615c43565b9052506000905082602001516003811115613b5757613b57615c43565b14613ba45760405162461bcd60e51b815260206004820181905260248201527f4d494e545f45584348414e47455f43414c43554c4154494f4e5f4641494c45446044820152606401610be7565b8160600151600d54613bb69190615afc565b608083015260608201516001600160a01b0388166000908152600f6020526040902054613be39190615afc565b60a08301819052608080840151600d556001600160a01b038981166000818152600f60209081526040918290209590955560c08701516060808901518351958916865296850193909352908301528101929092527f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee910160405180910390a1866001600160a01b0316306001600160a01b0316600080516020615c9e8339815191528460600151604051613c9991815260200190565b60405180910390a35060c001516000969095509350505050565b8051600090610cba90670de0b6b3a764000090615b14565b60008080804360095414613cef57613ce5600a604f612951565b9590945092505050565b613cf933866150be565b905080600c54613d099190615afc565b9150600c54821015613d555760405162461bcd60e51b8152602060048201526015602482015274616464207265736572766573206f766572666c6f7760581b6044820152606401610be7565b600c82905560408051338152602081018390529081018390527fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc59060600160405180910390a16000613ce5565b60145460405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905290911690819063a9059cbb90604401600060405180830381600087803b158015613df257600080fd5b505af1158015613e06573d6000803e3d6000fd5b5050505060003d60008114613e225760208114613e2c57600080fd5b6000199150613e38565b60206000803e60005191505b5080613e865760405162461bcd60e51b815260206004820152601960248201527f544f4b454e5f5452414e534645525f4f55545f4641494c4544000000000000006044820152606401610be7565b50505050565b6000804360095414613eaf57613ea4600a6039612951565b6000915091506112ef565b613eb76154d8565b6001600160a01b0386166000908152601160205260409020600101546060820152613ee186612bfd565b6080830181905260208301826003811115613efe57613efe615c43565b6003811115613f0f57613f0f615c43565b9052506000905081602001516003811115613f2c57613f2c615c43565b14613f5a57613f4e600960528360200151600381111561195657611956615c43565b600092509250506112ef565b613f6487856150be565b60e08201819052600090613f789087615b47565b6001600160a01b03881660009081526012602052604081205491925090613fa0908890615b47565b6001600160a01b03891660009081526012602052604090205490915015614090576001600160a01b03881660009081526011602090815260408083206012909252822054600a546001830154929392613ffa92919061533d565b8660200181935082600381111561401357614013615c43565b600381111561402457614024615c43565b905250600090508560200151600381111561404157614041615c43565b1461407357614063600960528760200151600381111561195657611956615c43565b60009650965050505050506112ef565b8085608001516140839190615afc565b60a08601525061409b9050565b608083015160a08401525b818360a001516140ab9190615afc565b60a084015260e0830151600b546140c29190615b47565b60c08401526001600160a01b0388166000908152601260205260409020819055811561414a576001600160a01b0388166000818152601160209081526040918290205460a08701518351948552918401869052838301526060830152517fca6a04e1c3e238bc2a1b301e665c0177601c7a7febed4b4fc9151dad656816ba9181900360800190a15b60a0838101516001600160a01b038a8116600081815260116020908152604091829020948555600a5460019095019490945560c0880151600b5560e08801518151938f1684529383019190915281019190915260608101899052608081018390527f2a9c212ff2c87629e08944d61beea2f32d055a69369363b2d6050d841c67e10a910160405180910390a1505060e00151600097909650945050505050565b60008215806141f7575081155b6142605760405162461bcd60e51b815260206004820152603460248201527f6f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416044820152736d6f756e74496e206d757374206265207a65726f60601b6064820152608401610be7565b6142a16040805160e0810190915280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6142a961221e565b60408301819052602083018260038111156142c6576142c6615c43565b60038111156142d7576142d7615c43565b90525060009050816020015160038111156142f4576142f4615c43565b1461431e576143166009602b8360200151600381111561195657611956615c43565b915050610f4d565b83156143b75760608101849052604080516020810182529082015181526143459085612802565b608083018190526020830182600381111561436257614362615c43565b600381111561437357614373615c43565b905250600090508160200151600381111561439057614390615c43565b146143b257614316600960298360200151600381111561195657611956615c43565b614448565b6143d3836040518060200160405280846040015181525061532d565b60608301819052602083018260038111156143f0576143f0615c43565b600381111561440157614401615c43565b905250600090508160200151600381111561441e5761441e615c43565b14614440576143166009602a8360200151600381111561195657611956615c43565b608081018390525b600554606082015160405163eabe7d9160e01b81526000926001600160a01b03169163eabe7d91916144819130918b9190600401615a18565b602060405180830381600087803b15801561449b57600080fd5b505af11580156144af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144d391906158e9565b905080156144f1576144e86003602883612eb8565b92505050610f4d565b4360095414614506576144e8600a602c612951565b8160600151600d546145189190615b47565b60a083015260608201516001600160a01b0387166000908152600f60205260409020546145459190615b47565b60c08301526080820151614557612855565b1015614569576144e8600e602f612951565b60a0820151600d5560c08201516001600160a01b0387166000908152600f6020526040902055608082015161459f908790613da2565b306001600160a01b0316866001600160a01b0316600080516020615c9e83398151915284606001516040516145d691815260200190565b60405180910390a36080820151606080840151604080516001600160a01b038b16815260208101949094528301527fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929910160405180910390a1600554608083015160608401516040516351dff98960e01b81523060048201526001600160a01b038a81166024830152604482019390935260648101919091529116906351dff98990608401600060405180830381600087803b15801561469557600080fd5b505af11580156146a9573d6000803e3d6000fd5b50600092506146b6915050565b9695505050505050565b60008060008060006146d28888612fba565b909350915060008360038111156146eb576146eb615c43565b146146ff5782600094509450505050612b90565b6147138261470e886004615afc565b615302565b9093509050600083600381111561472c5761472c615c43565b146147405782600094509450505050612b90565b60009890975095505050505050565b6000333b156147955760405162461bcd60e51b8152602060048201526012602482015271636f6e74726163742063616c6c2064656e7960701b6044820152606401610be7565b60055460405163368f515360e21b81526000916001600160a01b03169063da3d454c906147ca90309089908990600401615a18565b602060405180830381600087803b1580156147e457600080fd5b505af11580156147f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061481c91906158e9565b90508015614831576143166003600e83612eb8565b436009541461484557614316600a80612951565b8361484e612855565b101561486057614316600e6009612951565b61488c604080516080810190915280600081526020016000815260200160008152602001600081525090565b60008061489888612bfd565b60208501819052848260038111156148b2576148b2615c43565b60038111156148c3576148c3615c43565b90525060009050835160038111156148dd576148dd615c43565b1461490a576148ff600960078560000151600381111561195657611956615c43565b945050505050610f4d565b6001600160a01b038816600090815260126020526040902054156149e0576001600160a01b0388166000908152601160209081526040808320601290925290912054600a54600183015461495f92919061533d565b9350838582600381111561497557614975615c43565b600381111561498657614986615c43565b90525060009050845160038111156149a0576149a0615c43565b146149ce576149c2600960078660000151600381111561195657611956615c43565b95505050505050610f4d565b6149d88389615afc565b9150506149e3565b50855b8083602001516149f39190615afc565b6040840152600b54614a06908890615afc565b60608401526040808401516001600160a01b038a166000908152601160205291909120908155600a5460019091015560ff8616614a54576060830151600b55614a4f8888613da2565b614aea565b60018660ff161115614ad857600080614a6e600189615b5e565b614a7b9060ff168a615b28565b6001600160a01b038b16600090815260126020526040902054909250614aa2908390615afc565b6001600160a01b038b1660009081526012602052604090208190556060860151909150614ad0908390615afc565b606086015250505b6060830151600b55614aea8787615397565b60408084015160608086015183516001600160a01b038d168152602081018c9052938401929092528201527f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809060800160405180910390a1600098975050505050505050565b6060806040519050835180825260208201868152600481019050818101602087015b81831015614b8a578051835260209283019201614b72565b50855184518101600401855292509050808201602086015b81831015614bba578051835260209283019201614ba2565b50955160049201919091011594909401601f01601f1916604052949350505050565b600554604051632fe3f38f60e11b81523060048201526001600160a01b03838116602483015286811660448301528581166064830152608482018590526000928392839290911690635fc7e71e9060a401602060405180830381600087803b158015614c4757600080fd5b505af1158015614c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c7f91906158e9565b90508015614c9457613f4e6003601283612eb8565b4360095414614ca957613f4e600a6016612951565b43846001600160a01b0316636c540baf6040518163ffffffff1660e01b815260040160206040518083038186803b158015614ce357600080fd5b505afa158015614cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d1b91906158e9565b14614d2c57613f4e600a6011612951565b866001600160a01b0316866001600160a01b03161415614d5257613f4e60066017612951565b84614d6357613f4e60076015612951565b600019851415614d7957613f4e60076014612951565b600080614d8789898961361d565b90925090508115614dbc57614dae826010811115614da757614da7615c43565b6018612951565b6000945094505050506112ef565b60055460405163c488847b60e01b815260009182916001600160a01b039091169063c488847b90614df59030908c908890600401615a18565b604080518083038186803b158015614e0c57600080fd5b505afa158015614e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e449190615902565b90925090508115614e975760405162461bcd60e51b815260206004820152601d60248201527f43414c43554c4154455f414d4f554e545f5345495a455f4641494c45440000006044820152606401610be7565b6040516370a0823160e01b81526001600160a01b038b811660048301528291908a16906370a082319060240160206040518083038186803b158015614edb57600080fd5b505afa158015614eef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f1391906158e9565b1015614f615760405162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d55434800000000000000006044820152606401610be7565b60006001600160a01b038916301415614f8757614f80308d8d8561321a565b905061500c565b60405163b2a02ff160e01b81526001600160a01b038a169063b2a02ff190614fb7908f908f908790600401615a18565b602060405180830381600087803b158015614fd157600080fd5b505af1158015614fe5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061500991906158e9565b90505b80156150515760405162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b6044820152606401610be7565b604080516001600160a01b038e811682528d811660208301528183018790528b1660608201526080810184905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a160009c939b50929950505050505050505050565b6014546040516370a0823160e01b81523060048201526000916001600160a01b031690829082906370a082319060240160206040518083038186803b15801561510657600080fd5b505afa15801561511a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061513e91906158e9565b6040516323b872dd60e01b81529091506001600160a01b038316906323b872dd9061517190889030908990600401615a18565b600060405180830381600087803b15801561518b57600080fd5b505af115801561519f573d6000803e3d6000fd5b5050505060003d600081146151bb57602081146151c557600080fd5b60001991506151d1565b60206000803e60005191505b508061521f5760405162461bcd60e51b815260206004820152601860248201527f544f4b454e5f5452414e534645525f494e5f4641494c454400000000000000006044820152606401610be7565b6014546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561526357600080fd5b505afa158015615277573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061529b91906158e9565b9050828110156152ed5760405162461bcd60e51b815260206004820152601a60248201527f544f4b454e5f5452414e534645525f494e5f4f564552464c4f570000000000006044820152606401610be7565b6152f78382615b47565b979650505050505050565b60008082615316575060019050600061284e565b60006153228486615b14565b915091509250929050565b60008060008061281286866153e1565b60008060008060006153508888886146c0565b9093509150600083600381111561536957615369615c43565b1461537d5782600094509450505050612b90565b6153878883615b47565b6000999098509650505050505050565b600e54601454604051630fec7ec360e31b81523360048201526001600160a01b0391821660248201526044810185905260ff84166064820152911690637f63f61890608401610e93565b60006153f96040518060200160405280600081525090565b60008061540e670de0b6b3a764000087612fba565b9092509050600082600381111561542757615427615c43565b146154465750604080516020810190915260008152909250905061284e565b612847818660000151613891565b82805461546090615bad565b90600052602060002090601f01602090048101928261548257600085556154c8565b82601f1061549b57805160ff19168380011785556154c8565b828001600101855582156154c8579182015b828111156154c85782518255916020019190600101906154ad565b506154d492915061551e565b5090565b6040805161010081019091528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5b808211156154d4576000815560010161551f565b600082601f83011261554457600080fd5b813561555761555282615ad4565b615aa3565b81815284602083860101111561556c57600080fd5b816020850160208301376000918101602001919091529392505050565b803560ff8116811461559a57600080fd5b919050565b6000602082840312156155b157600080fd5b8135610f4d81615c85565b600080604083850312156155cf57600080fd5b82356155da81615c85565b915060208301356155ea81615c85565b809150509250929050565b60008060006060848603121561560a57600080fd5b833561561581615c85565b9250602084013561562581615c85565b929592945050506040919091013590565b600080600080600080600060e0888a03121561565157600080fd5b873561565c81615c85565b9650602088013561566c81615c85565b9550604088013561567c81615c85565b945060608801359350608088013567ffffffffffffffff808211156156a057600080fd5b6156ac8b838c01615533565b945060a08a01359150808211156156c257600080fd5b506156cf8a828b01615533565b9250506156de60c08901615589565b905092959891949750929550565b600080604083850312156156ff57600080fd5b823561570a81615c85565b946020939093013593505050565b60008060006060848603121561572d57600080fd5b833561573881615c85565b925060208401359150604084013561574f81615c85565b809150509250925092565b6000806000806080858703121561577057600080fd5b843561577b81615c85565b966020860135965060408601359560600135945092505050565b6000602082840312156157a757600080fd5b81518015158114610f4d57600080fd5b60008060008060008060c087890312156157d057600080fd5b86356157db81615c85565b955060208701356157eb81615c85565b945060408701359350606087013567ffffffffffffffff8082111561580f57600080fd5b61581b8a838b01615533565b9450608089013591508082111561583157600080fd5b5061583e89828a01615533565b92505061584d60a08801615589565b90509295509295509295565b60006020828403121561586b57600080fd5b815167ffffffffffffffff81111561588257600080fd5b8201601f8101841361589357600080fd5b80516158a161555282615ad4565b8181528560208385010111156158b657600080fd5b6158c7826020830160208601615b81565b95945050505050565b6000602082840312156158e257600080fd5b5035919050565b6000602082840312156158fb57600080fd5b5051919050565b6000806040838503121561591557600080fd5b505080516020909101519092909150565b60008060008060006080868803121561593e57600080fd5b8535945061594e60208701615589565b935060408601356001600160e01b03198116811461596b57600080fd5b9250606086013567ffffffffffffffff8082111561598857600080fd5b818801915088601f83011261599c57600080fd5b8135818111156159ab57600080fd5b8960208285010111156159bd57600080fd5b9699959850939650602001949392505050565b600081518084526159e8816020860160208601615b81565b601f01601f19169290920160200192915050565b60008251615a0e818460208701615b81565b9190910192915050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b602081526000610f4d60208301846159d0565b6020808252601690820152751858d8dc9d59481a5b9d195c995cdd0819985a5b195960521b604082015260600190565b6020808252600a90820152691c994b595b9d195c995960b21b604082015260600190565b604051601f8201601f1916810167ffffffffffffffff81118282101715615acc57615acc615c6f565b604052919050565b600067ffffffffffffffff821115615aee57615aee615c6f565b50601f01601f191660200190565b60008219821115615b0f57615b0f615c17565b500190565b600082615b2357615b23615c2d565b500490565b6000816000190483118215151615615b4257615b42615c17565b500290565b600082821015615b5957615b59615c17565b500390565b600060ff821660ff841680821015615b7857615b78615c17565b90039392505050565b60005b83811015615b9c578181015183820152602001615b84565b83811115613e865750506000910152565b600181811c90821680615bc157607f821691505b60208210811415615be257634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415615bfc57615bfc615c17565b5060010190565b600082615c1257615c12615c2d565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114615c9a57600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122026f64977c23d1b0b96e743d7a02d46ad92540ee82b8a5104f6adc2cb21bb04eb64736f6c634300080600330000000000000000000000005947bb275c521040051d82396192181b413227a300000000000000000000000043aad7d8bc661dfa70120865239529ed92faa054000000000000000000000000849a5d9aa51fa6c88c12ff080da9c6ab3f1992910000000000000000000000000000000000000000204fce5e3e2502611000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000800000000000000000000000082fccafc520a051d2b22d376858487a58ab9f862000000000000000000000000000000000000000000000000000000000000000f436861696e4c696e6b20546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000876654c494e4b2e65000000000000000000000000000000000000000000000000