/* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ import { Signer, BigNumberish, Contract, ContractFactory, Overrides, } from "ethers"; import { Provider, TransactionRequest } from "@ethersproject/providers"; import type { CEther } from "../CEther"; export class CEther__factory extends ContractFactory { constructor(signer?: Signer) { super(_abi, _bytecode, signer); } deploy( comptroller_: string, interestRateModel_: string, initialExchangeRateMantissa_: BigNumberish, name_: string, symbol_: string, decimals_: BigNumberish, admin_: string, overrides?: Overrides & { from?: string | Promise } ): Promise { return super.deploy( comptroller_, interestRateModel_, initialExchangeRateMantissa_, name_, symbol_, decimals_, admin_, overrides || {} ) as Promise; } getDeployTransaction( comptroller_: string, interestRateModel_: string, initialExchangeRateMantissa_: BigNumberish, name_: string, symbol_: string, decimals_: BigNumberish, admin_: string, overrides?: Overrides & { from?: string | Promise } ): TransactionRequest { return super.getDeployTransaction( comptroller_, interestRateModel_, initialExchangeRateMantissa_, name_, symbol_, decimals_, admin_, overrides || {} ); } attach(address: string): CEther { return super.attach(address) as CEther; } connect(signer: Signer): CEther__factory { return super.connect(signer) as CEther__factory; } static connect(address: string, signerOrProvider: Signer | Provider): CEther { return new Contract(address, _abi, signerOrProvider) as CEther; } } const _abi = [ { 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", }, { internalType: "address payable", name: "admin_", type: "address", }, ], stateMutability: "nonpayable", type: "constructor", }, { inputs: [], name: "AcceptAdminPendingAdminCheck", type: "error", }, { inputs: [ { internalType: "uint256", name: "actualAddAmount", type: "uint256", }, ], name: "AddReservesFactorFreshCheck", type: "error", }, { inputs: [], name: "BorrowCashNotAvailable", type: "error", }, { inputs: [ { internalType: "uint256", name: "errorCode", type: "uint256", }, ], name: "BorrowComptrollerRejection", type: "error", }, { inputs: [], name: "BorrowFreshnessCheck", type: "error", }, { inputs: [ { internalType: "uint256", name: "errorCode", type: "uint256", }, ], name: "LiquidateAccrueBorrowInterestFailed", type: "error", }, { inputs: [ { internalType: "uint256", name: "errorCode", type: "uint256", }, ], name: "LiquidateAccrueCollateralInterestFailed", type: "error", }, { inputs: [], name: "LiquidateCloseAmountIsUintMax", type: "error", }, { inputs: [], name: "LiquidateCloseAmountIsZero", type: "error", }, { inputs: [], name: "LiquidateCollateralFreshnessCheck", type: "error", }, { inputs: [ { internalType: "uint256", name: "errorCode", type: "uint256", }, ], name: "LiquidateComptrollerRejection", type: "error", }, { inputs: [], name: "LiquidateFreshnessCheck", type: "error", }, { inputs: [], name: "LiquidateLiquidatorIsBorrower", type: "error", }, { inputs: [ { internalType: "uint256", name: "errorCode", type: "uint256", }, ], name: "LiquidateRepayBorrowFreshFailed", type: "error", }, { inputs: [ { internalType: "uint256", name: "errorCode", type: "uint256", }, ], name: "LiquidateSeizeComptrollerRejection", type: "error", }, { inputs: [], name: "LiquidateSeizeLiquidatorIsBorrower", type: "error", }, { inputs: [ { internalType: "uint256", name: "errorCode", type: "uint256", }, ], name: "MintComptrollerRejection", type: "error", }, { inputs: [], name: "MintFreshnessCheck", type: "error", }, { inputs: [ { internalType: "uint256", name: "errorCode", type: "uint256", }, ], name: "RedeemComptrollerRejection", type: "error", }, { inputs: [], name: "RedeemFreshnessCheck", type: "error", }, { inputs: [], name: "RedeemTransferOutNotPossible", type: "error", }, { inputs: [], name: "ReduceReservesAdminCheck", type: "error", }, { inputs: [], name: "ReduceReservesCashNotAvailable", type: "error", }, { inputs: [], name: "ReduceReservesCashValidation", type: "error", }, { inputs: [], name: "ReduceReservesFreshCheck", type: "error", }, { inputs: [ { internalType: "uint256", name: "errorCode", type: "uint256", }, ], name: "RepayBorrowComptrollerRejection", type: "error", }, { inputs: [], name: "RepayBorrowFreshnessCheck", type: "error", }, { inputs: [], name: "SetComptrollerOwnerCheck", type: "error", }, { inputs: [], name: "SetInterestRateModelFreshCheck", type: "error", }, { inputs: [], name: "SetInterestRateModelOwnerCheck", type: "error", }, { inputs: [], name: "SetPendingAdminOwnerCheck", type: "error", }, { inputs: [], name: "SetReserveFactorAdminCheck", type: "error", }, { inputs: [], name: "SetReserveFactorBoundsCheck", type: "error", }, { inputs: [], name: "SetReserveFactorFreshCheck", type: "error", }, { inputs: [ { internalType: "uint256", name: "errorCode", type: "uint256", }, ], name: "TransferComptrollerRejection", type: "error", }, { inputs: [], name: "TransferNotAllowed", type: "error", }, { inputs: [], name: "TransferNotEnough", type: "error", }, { inputs: [], name: "TransferTooMuch", type: "error", }, { 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: "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: "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: "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: "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: "NO_ERROR", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "_acceptAdmin", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "_addReserves", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "payable", 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: [], 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 payable", 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: "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: "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: [ { 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: "contract CToken", name: "cTokenCollateral", type: "address", }, ], name: "liquidateBorrow", outputs: [], stateMutability: "payable", type: "function", }, { inputs: [], name: "mint", outputs: [], stateMutability: "payable", type: "function", }, { inputs: [], name: "name", outputs: [ { internalType: "string", name: "", type: "string", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "pendingAdmin", outputs: [ { internalType: "address payable", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "protocolSeizeShareMantissa", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], 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: [], name: "repayBorrow", outputs: [], stateMutability: "payable", type: "function", }, { inputs: [ { internalType: "address", name: "borrower", type: "address", }, ], name: "repayBorrowBehalf", outputs: [], stateMutability: "payable", 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: "newAdmin", type: "address", }, ], name: "setInitialAdmin", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "supplyRatePerBlock", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", 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", }, { stateMutability: "payable", type: "receive", }, ]; const _bytecode = "0x60806040523480156200001157600080fd5b5060405162003e5a38038062003e5a833981016040819052620000349162000773565b60038054610100600160a81b03191633610100021790556200005b8787878787876200008e565b600380546001600160a01b0390921661010002610100600160a81b031990921691909117905550620008a6945050505050565b60035461010090046001600160a01b03163314620000ff5760405162461bcd60e51b8152602060048201526024808201527f6f6e6c792061646d696e206d617920696e697469616c697a6520746865206d616044820152631c9ad95d60e21b60648201526084015b60405180910390fd5b600954158015620001105750600a54155b6200016a5760405162461bcd60e51b815260206004820152602360248201527f6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6044820152626e636560e81b6064820152608401620000f6565b600784905583620001d75760405162461bcd60e51b815260206004820152603060248201527f696e697469616c2065786368616e67652072617465206d75737420626520677260448201526f32b0ba32b9103a3430b7103d32b9379760811b6064820152608401620000f6565b6000620001e48762000300565b90508015620002365760405162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c65640000000000006044820152606401620000f6565b43600955670de0b6b3a7640000600a55620002518662000458565b90508015620002ae5760405162461bcd60e51b815260206004820152602260248201527f73657474696e6720696e7465726573742072617465206d6f64656c206661696c604482015261195960f21b6064820152608401620000f6565b8351620002c3906001906020870190620005d5565b508251620002d9906002906020860190620005d5565b50506003805460ff90921660ff199283161790556000805490911660011790555050505050565b60035460009061010090046001600160a01b03163314620003345760405163d219dc1f60e01b815260040160405180910390fd5b60055460408051623f1ee960e11b815290516001600160a01b0392831692851691627e3dd29160048083019260209291908290030181865afa1580156200037f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a591906200083e565b620003f35760405162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c7365000000006044820152606401620000f6565b600580546001600160a01b0319166001600160a01b0385811691821790925560408051928416835260208301919091527f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d91015b60405180910390a150600092915050565b600354600090819061010090046001600160a01b031633146200048e5760405163407fded560e01b815260040160405180910390fd5b4360095414620004b157604051630be2a5cb60e11b815260040160405180910390fd5b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000508573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200052e91906200083e565b6200057c5760405162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c7365000000006044820152606401620000f6565b600680546001600160a01b0319166001600160a01b0385811691821790925560408051928416835260208301919091527fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f926910162000447565b828054620005e39062000869565b90600052602060002090601f01602090048101928262000607576000855562000652565b82601f106200062257805160ff191683800117855562000652565b8280016001018555821562000652579182015b828111156200065257825182559160200191906001019062000635565b506200066092915062000664565b5090565b5b8082111562000660576000815560010162000665565b6001600160a01b03811681146200069157600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620006bc57600080fd5b81516001600160401b0380821115620006d957620006d962000694565b604051601f8301601f19908116603f0116810190828211818310171562000704576200070462000694565b816040528381526020925086838588010111156200072157600080fd5b600091505b8382101562000745578582018301518183018401529082019062000726565b83821115620007575760008385830101525b9695505050505050565b80516200076e816200067b565b919050565b600080600080600080600060e0888a0312156200078f57600080fd5b87516200079c816200067b565b6020890151909750620007af816200067b565b604089015160608a015191975095506001600160401b0380821115620007d457600080fd5b620007e28b838c01620006aa565b955060808a0151915080821115620007f957600080fd5b50620008088a828b01620006aa565b93505060a088015160ff811681146200082057600080fd5b91506200083060c0890162000761565b905092959891949750929550565b6000602082840312156200085157600080fd5b815180151581146200086257600080fd5b9392505050565b600181811c908216806200087e57607f821691505b60208210811415620008a057634e487b7160e01b600052602260045260246000fd5b50919050565b6135a480620008b66000396000f3fe6080604052600436106102b25760003560e01c80638f840ddd11610175578063c37f68e2116100dc578063f2b3abbd11610095578063f8f9da281161006f578063f8f9da2814610827578063fca7820b1461083c578063fcb641471461085c578063fe9c44ae1461086457600080fd5b8063f2b3abbd146107c2578063f3fdb15a146107e2578063f851a4401461080257600080fd5b8063c37f68e2146106d4578063c5ebeaec14610714578063db006a7514610734578063dd62ed3e14610754578063e59746191461079a578063e9c714f2146107ad57600080fd5b8063aa5af0fd1161012e578063aa5af0fd14610641578063aae40a2a14610657578063ae9d70b01461066a578063b2a02ff11461067f578063b71d1a0c1461069f578063bd6d894d146106bf57600080fd5b80638f840ddd146105a157806395d89b41146105b757806395dd9193146105cc57806399d8c1b4146105ec578063a6afed951461060c578063a9059cbb1461062157600080fd5b80633b1d21a2116102195780636752e702116101d25780636752e702146104f057806369ab32501461050b5780636c540baf1461052057806370a082311461053657806373acee981461056c578063852a12e31461058157600080fd5b80633b1d21a21461045d5780634576b5db1461047257806347bd3718146104925780634e4d9fea146104a85780635fe3b567146104b0578063601a0bf1146104d057600080fd5b806318160ddd1161026b57806318160ddd1461038e578063182df0f5146103a457806323b872dd146103b957806326782247146103d9578063313ce567146104115780633af9e6691461043d57600080fd5b8063028e8b9a146102c757806306fdde03146102e7578063095ea7b3146103125780631249c58b14610342578063173b99041461034a57806317bfdfbc1461036e57600080fd5b366102c2576102c034610879565b005b600080fd5b3480156102d357600080fd5b506102c06102e236600461311e565b6108d1565b3480156102f357600080fd5b506102fc610914565b6040516103099190613188565b60405180910390f35b34801561031e57600080fd5b5061033261032d36600461319b565b6109a2565b6040519015158152602001610309565b6102c0610a10565b34801561035657600080fd5b5061036060085481565b604051908152602001610309565b34801561037a57600080fd5b5061036061038936600461311e565b610a1b565b34801561039a57600080fd5b50610360600d5481565b3480156103b057600080fd5b50610360610a6e565b3480156103c557600080fd5b506103326103d43660046131c7565b610a7d565b3480156103e557600080fd5b506004546103f9906001600160a01b031681565b6040516001600160a01b039091168152602001610309565b34801561041d57600080fd5b5060035461042b9060ff1681565b60405160ff9091168152602001610309565b34801561044957600080fd5b5061036061045836600461311e565b610acd565b34801561046957600080fd5b50610360610b13565b34801561047e57600080fd5b5061036061048d36600461311e565b610b1d565b34801561049e57600080fd5b50610360600b5481565b6102c0610c6f565b3480156104bc57600080fd5b506005546103f9906001600160a01b031681565b3480156104dc57600080fd5b506103606104eb366004613208565b610c78565b3480156104fc57600080fd5b50610360666379da05b6000081565b34801561051757600080fd5b50610360600081565b34801561052c57600080fd5b5061036060095481565b34801561054257600080fd5b5061036061055136600461311e565b6001600160a01b03166000908152600e602052604090205490565b34801561057857600080fd5b50610360610cb7565b34801561058d57600080fd5b5061036061059c366004613208565b610d01565b3480156105ad57600080fd5b50610360600c5481565b3480156105c357600080fd5b506102fc610d14565b3480156105d857600080fd5b506103606105e736600461311e565b610d21565b3480156105f857600080fd5b506102c06106073660046132c4565b610d32565b34801561061857600080fd5b50610360610f8d565b34801561062d57600080fd5b5061033261063c36600461319b565b61117b565b34801561064d57600080fd5b50610360600a5481565b6102c0610665366004613370565b6111ca565b34801561067657600080fd5b506103606111d9565b34801561068b57600080fd5b5061036061069a3660046131c7565b611271565b3480156106ab57600080fd5b506103606106ba36600461311e565b6112c0565b3480156106cb57600080fd5b5061036061134d565b3480156106e057600080fd5b506106f46106ef36600461311e565b61139d565b604080519485526020850193909352918301526060820152608001610309565b34801561072057600080fd5b5061036061072f366004613208565b6113de565b34801561074057600080fd5b5061036061074f366004613208565b6113e9565b34801561076057600080fd5b5061036061076f366004613370565b6001600160a01b039182166000908152600f6020908152604080832093909416825291909152205490565b6102c06107a836600461311e565b6113f4565b3480156107b957600080fd5b50610360611401565b3480156107ce57600080fd5b506103606107dd36600461311e565b611508565b3480156107ee57600080fd5b506006546103f9906001600160a01b031681565b34801561080e57600080fd5b506003546103f99061010090046001600160a01b031681565b34801561083357600080fd5b5061036061151c565b34801561084857600080fd5b50610360610857366004613208565b61156f565b6103606115ae565b34801561087057600080fd5b50610332600181565b60005460ff166108a45760405162461bcd60e51b815260040161089b906133a9565b60405180910390fd5b6000805460ff191690556108b6610f8d565b506108c133826115b9565b506000805460ff19166001179055565b60035461010090046001600160a01b0316156108ec57600080fd5b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60018054610921906133cd565b80601f016020809104026020016040519081016040528092919081815260200182805461094d906133cd565b801561099a5780601f1061096f5761010080835404028352916020019161099a565b820191906000526020600020905b81548152906001019060200180831161097d57829003601f168201915b505050505081565b336000818152600f602090815260408083206001600160a01b03871680855292528083208590555191929182907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109fe9087815260200190565b60405180910390a35060019392505050565b610a1934610879565b565b6000805460ff16610a3e5760405162461bcd60e51b815260040161089b906133a9565b6000805460ff19169055610a50610f8d565b50610a5a82610d21565b90506000805460ff19166001179055919050565b6000610a7861176f565b905090565b6000805460ff16610aa05760405162461bcd60e51b815260040161089b906133a9565b6000805460ff19168155610ab6338686866117d9565b1490506000805460ff191660011790559392505050565b6000806040518060200160405280610ae361134d565b90526001600160a01b0384166000908152600e6020526040902054909150610b0c908290611a07565b9392505050565b6000610a78611a27565b60035460009061010090046001600160a01b03163314610b505760405163d219dc1f60e01b815260040160405180910390fd5b60055460408051623f1ee960e11b815290516001600160a01b0392831692851691627e3dd29160048083019260209291908290030181865afa158015610b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbe9190613402565b610c0a5760405162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015260640161089b565b600580546001600160a01b0319166001600160a01b0385811691821790925560408051928416835260208301919091527f7ac369dbd14fa5ea3f473ed67cc9d598964a77501540ba6751eb0b3decf5870d91015b60405180910390a150600092915050565b610a1934611a33565b6000805460ff16610c9b5760405162461bcd60e51b815260040161089b906133a9565b6000805460ff19169055610cad610f8d565b50610a5a82611a84565b6000805460ff16610cda5760405162461bcd60e51b815260040161089b906133a9565b6000805460ff19169055610cec610f8d565b5050600b546000805460ff1916600117905590565b6000610d0c82611b9f565b506000919050565b60028054610921906133cd565b6000610d2c82611be0565b92915050565b60035461010090046001600160a01b03163314610d9d5760405162461bcd60e51b8152602060048201526024808201527f6f6e6c792061646d696e206d617920696e697469616c697a6520746865206d616044820152631c9ad95d60e21b606482015260840161089b565b600954158015610dad5750600a54155b610e055760405162461bcd60e51b815260206004820152602360248201527f6d61726b6574206d6179206f6e6c7920626520696e697469616c697a6564206f6044820152626e636560e81b606482015260840161089b565b600784905583610e705760405162461bcd60e51b815260206004820152603060248201527f696e697469616c2065786368616e67652072617465206d75737420626520677260448201526f32b0ba32b9103a3430b7103d32b9379760811b606482015260840161089b565b6000610e7b87610b1d565b90508015610ecb5760405162461bcd60e51b815260206004820152601a60248201527f73657474696e6720636f6d7074726f6c6c6572206661696c6564000000000000604482015260640161089b565b43600955670de0b6b3a7640000600a55610ee486611c2a565b90508015610f3f5760405162461bcd60e51b815260206004820152602260248201527f73657474696e6720696e7465726573742072617465206d6f64656c206661696c604482015261195960f21b606482015260840161089b565b8351610f52906001906020870190613079565b508251610f66906002906020860190613079565b50506003805460ff90921660ff199283161790556000805490911660011790555050505050565b600954600090439080821415610fa65760009250505090565b6000610fb0611a27565b600b54600c54600a546006546040516315f2405360e01b81526004810186905260248101859052604481018490529495509293919290916000916001600160a01b0316906315f2405390606401602060405180830381865afa15801561101a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103e9190613424565b905065048c273950008111156110965760405162461bcd60e51b815260206004820152601c60248201527f626f72726f772072617465206973206162737572646c79206869676800000000604482015260640161089b565b60006110a28789613453565b905060006110be60405180602001604052808581525083611d9f565b905060006110cc8288611a07565b905060006110da888361346a565b905060006110f96040518060200160405280600854815250848a611dd0565b9050600061110885898a611dd0565b60098e9055600a819055600b849055600c839055604080518d815260208101879052908101829052606081018590529091507f4dec04e750ca11537cabcd8a9eab06494de08da3735bc8871cd41250e190bc049060800160405180910390a160009d505050505050505050505050505090565b6000805460ff1661119e5760405162461bcd60e51b815260040161089b906133a9565b6000805460ff191681556111b4338086866117d9565b1490506000805460ff1916600117905592915050565b6111d5823483611df1565b5050565b6006546000906001600160a01b031663b81688166111f5611a27565b600b54600c546008546040516001600160e01b031960e087901b16815260048101949094526024840192909252604483015260648201526084015b602060405180830381865afa15801561124d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a789190613424565b6000805460ff166112945760405162461bcd60e51b815260040161089b906133a9565b6000805460ff191690556112aa33858585611ecf565b50600080805460ff191660011790559392505050565b60035460009061010090046001600160a01b031633146112f357604051635cb56c2b60e01b815260040160405180910390fd5b600480546001600160a01b038481166001600160a01b031983168117909355604080519190921680825260208201939093527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99101610c5e565b6000805460ff166113705760405162461bcd60e51b815260040161089b906133a9565b6000805460ff19169055611382610f8d565b5061138b610a6e565b90506000805460ff1916600117905590565b6001600160a01b0381166000908152600e602052604081205481908190819081906113c787611be0565b6113cf61176f565b93509350935093509193509193565b6000610d0c82612148565b6000610d0c82612187565b6113fe81346121c8565b50565b6004546000906001600160a01b03163314158061141c575033155b1561143a57604051631ba24f2960e21b815260040160405180910390fd5b60038054600480546001600160a01b03808216610100818102610100600160a81b0319871617968790556001600160a01b031990931690935560408051948390048216808652929095041660208401529290917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a1600454604080516001600160a01b03808516825290921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a9910160405180910390a160009250505090565b6000611512610f8d565b50610d2c82611c2a565b6006546000906001600160a01b03166315f24053611538611a27565b600b54600c546040516001600160e01b031960e086901b168152600481019390935260248301919091526044820152606401611230565b6000805460ff166115925760405162461bcd60e51b815260040161089b906133a9565b6000805460ff191690556115a4610f8d565b50610a5a8261221a565b6000610a78346122d6565b600554604051634ef4c3e160e01b81526000916001600160a01b031690634ef4c3e1906115ee90309087908790600401613482565b6020604051808303816000875af115801561160d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116319190613424565b90508015611655576040516349abd4fd60e01b81526004810182905260240161089b565b4360095414611677576040516338d8859760e01b815260040160405180910390fd5b6000604051806020016040528061168c61176f565b90529050600061169c858561232d565b905060006116aa82846123bf565b905080600d546116ba919061346a565b600d556001600160a01b0386166000908152600e60205260409020546116e190829061346a565b6001600160a01b0387166000908152600e60205260409081902091909155517f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f90611731908890859085906134a6565b60405180910390a16040518181526001600160a01b03871690309060008051602061354f8339815191529060200160405180910390a3505050505050565b600d546000908061178257505060075490565b600061178c611a27565b90506000600c54600b54836117a1919061346a565b6117ab9190613453565b90506000836117c2670de0b6b3a7640000846134c7565b6117cc91906134e6565b95945050505050565b5090565b6005546040516317b9b84b60e31b81523060048201526001600160a01b038581166024830152848116604483015260648201849052600092839291169063bdcdc258906084016020604051808303816000875af115801561183e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118629190613424565b905080156118865760405163089d427760e11b81526004810182905260240161089b565b836001600160a01b0316856001600160a01b031614156118b957604051638cd22d1960e01b815260040160405180910390fd5b6000856001600160a01b0316876001600160a01b031614156118de5750600019611906565b506001600160a01b038086166000908152600f60209081526040808320938a16835292905220545b60006119128583613453565b6001600160a01b0388166000908152600e60205260408120549192509061193a908790613453565b6001600160a01b0388166000908152600e60205260408120549192509061196290889061346a565b6001600160a01b03808b166000908152600e6020526040808220869055918b16815220819055905060001984146119bc576001600160a01b03808a166000908152600f60209081526040808320938e168352929052208390555b876001600160a01b0316896001600160a01b031660008051602061354f833981519152896040516119ef91815260200190565b60405180910390a35060009998505050505050505050565b600080611a148484611d9f565b9050611a1f816123dd565b949350505050565b6000610a783447613453565b60005460ff16611a555760405162461bcd60e51b815260040161089b906133a9565b6000805460ff19169055611a67610f8d565b50611a733333836123f5565b50506000805460ff19166001179055565b600354600090819061010090046001600160a01b03163314611ab957604051630f7e5e6d60e41b815260040160405180910390fd5b4360095414611adb57604051630dff50cb60e41b815260040160405180910390fd5b82611ae4611a27565b1015611b0357604051633345e99960e01b815260040160405180910390fd5b600c54831115611b26576040516378d2980560e11b815260040160405180910390fd5b82600c54611b349190613453565b600c819055600354909150611b579061010090046001600160a01b03168461259e565b7f3bad0c59cf2f06e7314077049f48a93578cd16f5ef92329f1dab1420a99c177e600360019054906101000a90046001600160a01b03168483604051610c5e939291906134a6565b60005460ff16611bc15760405162461bcd60e51b815260040161089b906133a9565b6000805460ff19169055611bd3610f8d565b506108c1336000836125d9565b6001600160a01b03811660009081526010602052604081208054611c075750600092915050565b600a548154600091611c18916134c7565b9050816001015481611a1f91906134e6565b600354600090819061010090046001600160a01b03163314611c5f5760405163407fded560e01b815260040160405180910390fd5b4360095414611c8157604051630be2a5cb60e11b815260040160405180910390fd5b600660009054906101000a90046001600160a01b03169050826001600160a01b0316632191f92a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfb9190613402565b611d475760405162461bcd60e51b815260206004820152601c60248201527f6d61726b6572206d6574686f642072657475726e65642066616c736500000000604482015260640161089b565b600680546001600160a01b0319166001600160a01b0385811691821790925560408051928416835260208301919091527fedffc32e068c7c95dfd4bdfd5c4d939a084d6b11c4199eac8436ed234d72f9269101610c5e565b6040805160208101909152600081526040518060200160405280611dc78560000151856128b6565b90529392505050565b600080611ddd8585611d9f565b90506117cc611deb826123dd565b846128c2565b60005460ff16611e135760405162461bcd60e51b815260040161089b906133a9565b6000805460ff19169055611e25610f8d565b506000816001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8c9190613424565b90508015611eb057604051633eea49b760e11b81526004810182905260240161089b565b611ebc338585856128ce565b50506000805460ff191660011790555050565b60055460405163d02f735160e01b81523060048201526001600160a01b0386811660248301528581166044830152848116606483015260848201849052600092169063d02f73519060a4016020604051808303816000875af1158015611f39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5d9190613424565b90508015611f81576040516363e00e3360e11b81526004810182905260240161089b565b836001600160a01b0316836001600160a01b03161415611fb457604051633a94626760e11b815260040160405180910390fd5b6000611fd5836040518060200160405280666379da05b60000815250612d88565b90506000611fe38285613453565b905060006040518060200160405280611ffa61176f565b90529050600061200a8285611a07565b9050600081600c5461201c919061346a565b600c819055600d54909150612032908690613453565b600d556001600160a01b0388166000908152600e6020526040902054612059908890613453565b6001600160a01b03808a166000908152600e602052604080822093909355908b168152205461208990859061346a565b6001600160a01b03808b166000818152600e602052604090819020939093559151908a169060008051602061354f833981519152906120cb9088815260200190565b60405180910390a360405185815230906001600160a01b038a169060008051602061354f8339815191529060200160405180910390a37fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5308383604051612134939291906134a6565b60405180910390a150505050505050505050565b60005460ff1661216a5760405162461bcd60e51b815260040161089b906133a9565b6000805460ff1916905561217c610f8d565b506108c13382612dab565b60005460ff166121a95760405162461bcd60e51b815260040161089b906133a9565b6000805460ff191690556121bb610f8d565b506108c1338260006125d9565b60005460ff166121ea5760405162461bcd60e51b815260040161089b906133a9565b6000805460ff191690556121fc610f8d565b506122083383836123f5565b50506000805460ff1916600117905550565b60035460009061010090046001600160a01b0316331461224d57604051631205b57b60e11b815260040160405180910390fd5b436009541461226f57604051637dfca6b760e11b815260040160405180910390fd5b670de0b6b3a76400008211156122985760405163717220f360e11b815260040160405180910390fd5b600880549083905560408051828152602081018590527faaa68312e2ea9d50e16af5068410ab56e1a1fd06037b1a35664812c30f8214609101610c5e565b6000805460ff166122f95760405162461bcd60e51b815260040161089b906133a9565b6000805460ff1916905561230b610f8d565b5061231582612f78565b5050600090506000805460ff19166001179055919050565b6000336001600160a01b038416146123795760405162461bcd60e51b815260206004820152600f60248201526e0e6cadcc8cae440dad2e6dac2e8c6d608b1b604482015260640161089b565b8134146123b95760405162461bcd60e51b815260206004820152600e60248201526d0ecc2d8eaca40dad2e6dac2e8c6d60931b604482015260640161089b565b50919050565b6000610b0c6123d684670de0b6b3a76400006128b6565b835161300c565b8051600090610d2c90670de0b6b3a7640000906134e6565b600554604051631200453160e11b81523060048201526001600160a01b03858116602483015284811660448301526064820184905260009283929116906324008a62906084016020604051808303816000875af115801561245a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247e9190613424565b905080156124a257604051638c81362d60e01b81526004810182905260240161089b565b43600954146124c45760405163c9021e2f60e01b815260040160405180910390fd5b60006124cf85611be0565b9050600060001985146124e257846124e4565b815b905060006124f2888361232d565b905060006125008285613453565b9050600082600b546125129190613453565b6001600160a01b038a8116600081815260106020908152604091829020878155600a54600190910155600b8590558151938f168452830191909152810185905260608101849052608081018290529091507f1a2a22cb034d26d1854bdc6666a5b91fe25efbbb5dcad3b0355478d6f5c362a19060a00160405180910390a1509098975050505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156125d4573d6000803e3d6000fd5b505050565b8115806125e4575080155b61264d5760405162461bcd60e51b815260206004820152603460248201527f6f6e65206f662072656465656d546f6b656e73496e206f722072656465656d416044820152736d6f756e74496e206d757374206265207a65726f60601b606482015260840161089b565b6000604051806020016040528061266261176f565b9052905060008084156126835784915061267c8386611a07565b9050612693565b61268d84846123bf565b91508390505b60055460405163eabe7d9160e01b81526000916001600160a01b03169063eabe7d91906126c89030908b908890600401613482565b6020604051808303816000875af11580156126e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270b9190613424565b9050801561272f5760405163480f424760e01b81526004810182905260240161089b565b4360095414612751576040516397b5cfcd60e01b815260040160405180910390fd5b8161275a611a27565b1015612779576040516391240a1b60e01b815260040160405180910390fd5b82600d546127879190613453565b600d556001600160a01b0387166000908152600e60205260409020546127ae908490613453565b6001600160a01b0388166000908152600e60205260409020556127d1878361259e565b60405183815230906001600160a01b0389169060008051602061354f8339815191529060200160405180910390a37fe5b754fb1abb7f01b499791d0b820ae3b6af3424ac1c59768edb53f4ec31a929878385604051612832939291906134a6565b60405180910390a16005546040516351dff98960e01b81523060048201526001600160a01b0389811660248301526044820185905260648201869052909116906351dff98990608401600060405180830381600087803b15801561289557600080fd5b505af11580156128a9573d6000803e3d6000fd5b5050505050505050505050565b6000610b0c82846134c7565b6000610b0c828461346a565b600554604051632fe3f38f60e11b81523060048201526001600160a01b03838116602483015286811660448301528581166064830152608482018590526000921690635fc7e71e9060a4016020604051808303816000875af1158015612938573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295c9190613424565b9050801561298057604051630a14d17960e11b81526004810182905260240161089b565b43600954146129a2576040516380965b1b60e01b815260040160405180910390fd5b43826001600160a01b0316636c540baf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a059190613424565b14612a2357604051631046f38d60e31b815260040160405180910390fd5b846001600160a01b0316846001600160a01b03161415612a5657604051631bd1a62160e21b815260040160405180910390fd5b82612a745760405163d29da7ef60e01b815260040160405180910390fd5b600019831415612a9757604051635982c5bb60e11b815260040160405180910390fd5b6000612aa48686866123f5565b60055460405163c488847b60e01b815291925060009182916001600160a01b03169063c488847b90612ade90309089908890600401613482565b6040805180830381865afa158015612afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1e9190613508565b9150915060008214612b8e5760405162461bcd60e51b815260206004820152603360248201527f4c49515549444154455f434f4d5054524f4c4c45525f43414c43554c4154455f604482015272105353d5539517d4d152569157d19052531151606a1b606482015260840161089b565b6040516370a0823160e01b81526001600160a01b0388811660048301528291908716906370a0823190602401602060405180830381865afa158015612bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfb9190613424565b1015612c495760405162461bcd60e51b815260206004820152601860248201527f4c49515549444154455f5345495a455f544f4f5f4d5543480000000000000000604482015260640161089b565b6001600160a01b038516301415612c6b57612c6630898984611ecf565b612d25565b60405163b2a02ff160e01b81526000906001600160a01b0387169063b2a02ff190612c9e908c908c908790600401613482565b6020604051808303816000875af1158015612cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ce19190613424565b14612d255760405162461bcd60e51b81526020600482015260146024820152731d1bdad95b881cd95a5e9d5c994819985a5b195960621b604482015260640161089b565b604080516001600160a01b038a811682528981166020830152818301869052871660608201526080810183905290517f298637f684da70674f26509b10f07ec2fbc77a335ab1e7d6215a4b2484d8bb529181900360a00190a15050505050505050565b6000670de0b6b3a7640000612da18484600001516128b6565b610b0c91906134e6565b60055460405163368f515360e21b81526000916001600160a01b03169063da3d454c90612de090309087908790600401613482565b6020604051808303816000875af1158015612dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e239190613424565b90508015612e475760405163918db40f60e01b81526004810182905260240161089b565b4360095414612e6957604051630e8d8c6160e21b815260040160405180910390fd5b81612e72611a27565b1015612e91576040516348c2588160e01b815260040160405180910390fd5b6000612e9c84611be0565b90506000612eaa848361346a565b9050600084600b54612ebc919061346a565b6001600160a01b0387166000908152601060205260409020838155600a54600190910155600b8190559050612ef1868661259e565b612f1f6040518060400160405280600c81526020016b7472616e7366657272696e6760a01b81525086613018565b604080516001600160a01b038816815260208101879052908101839052606081018290527f13ed6866d4e1ee6da46f845c46d7e54120883d75c5ea9a2dacc1c4ca8984ab809060800160405180910390a1505050505050565b60008080804360095414612fa2576040516338acf79960e01b81526004810182905260240161089b565b612fac338661232d565b905080600c54612fbc919061346a565b915081600c819055507fa91e67c5ea634cd43a12c5a482724b03de01e85ca68702a53d0c2f45cb7c1dc5338284604051612ff8939291906134a6565b60405180910390a160009590945092505050565b6000610b0c82846134e6565b6111d5828260405160240161302e92919061352c565b60408051601f198184030181529190526020810180516001600160e01b03166309710a9d60e41b17905280516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b828054613085906133cd565b90600052602060002090601f0160209004810192826130a757600085556130ed565b82601f106130c057805160ff19168380011785556130ed565b828001600101855582156130ed579182015b828111156130ed5782518255916020019190600101906130d2565b506117d59291505b808211156117d557600081556001016130f5565b6001600160a01b03811681146113fe57600080fd5b60006020828403121561313057600080fd5b8135610b0c81613109565b6000815180845260005b8181101561316157602081850181015186830182015201613145565b81811115613173576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610b0c602083018461313b565b600080604083850312156131ae57600080fd5b82356131b981613109565b946020939093013593505050565b6000806000606084860312156131dc57600080fd5b83356131e781613109565b925060208401356131f781613109565b929592945050506040919091013590565b60006020828403121561321a57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261324857600080fd5b813567ffffffffffffffff8082111561326357613263613221565b604051601f8301601f19908116603f0116810190828211818310171561328b5761328b613221565b816040528381528660208588010111156132a457600080fd5b836020870160208301376000602085830101528094505050505092915050565b60008060008060008060c087890312156132dd57600080fd5b86356132e881613109565b955060208701356132f881613109565b945060408701359350606087013567ffffffffffffffff8082111561331c57600080fd5b6133288a838b01613237565b9450608089013591508082111561333e57600080fd5b5061334b89828a01613237565b92505060a087013560ff8116811461336257600080fd5b809150509295509295509295565b6000806040838503121561338357600080fd5b823561338e81613109565b9150602083013561339e81613109565b809150509250929050565b6020808252600a90820152691c994b595b9d195c995960b21b604082015260600190565b600181811c908216806133e157607f821691505b602082108114156123b957634e487b7160e01b600052602260045260246000fd5b60006020828403121561341457600080fd5b81518015158114610b0c57600080fd5b60006020828403121561343657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156134655761346561343d565b500390565b6000821982111561347d5761347d61343d565b500190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b039390931683526020830191909152604082015260600190565b60008160001904831182151516156134e1576134e161343d565b500290565b60008261350357634e487b7160e01b600052601260045260246000fd5b500490565b6000806040838503121561351b57600080fd5b505080516020909101519092909150565b60408152600061353f604083018561313b565b9050826020830152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212201a3f426a2aeb2fa4b40cc8d5e713f07577174f203e21d0e6d90ff0836b41a6d164736f6c634300080a0033";