0 txs
0 calls
constructor
constructor(address _addressProvider, address _underlyingToken)
functions
addressProvider
viewfunction addressProvider() view returns (address)
allowanceForAccountTransfers
viewfunction allowanceForAccountTransfers(address from, address to) view returns (bool)
allowedAdapters
viewfunction allowedAdapters(address) view returns (bool)
allowedContracts
viewfunction allowedContracts(uint256 i) view returns (address)
allowedContractsCount
viewfunction allowedContractsCount() view returns (uint256)
allowedPlugins
viewfunction allowedPlugins(address) view returns (bool)
allowedTokens
viewfunction allowedTokens(uint256) view returns (address)
allowedTokensCount
viewfunction allowedTokensCount() view returns (uint256)
calcCreditAccountAccruedInterest
viewfunction calcCreditAccountAccruedInterest(address creditAccount) view returns (uint256)
calcCreditAccountHealthFactor
viewfunction calcCreditAccountHealthFactor(address creditAccount) view returns (uint256)
calcMaxPossibleDrop
purefunction calcMaxPossibleDrop(uint256 percentage, uint256 times) pure returns (uint256 value)
calcThresholdWeightedValue
viewfunction calcThresholdWeightedValue(address creditAccount) view returns (uint256 total)
calcTotalValue
viewfunction calcTotalValue(address creditAccount) view returns (uint256 total)
chiThreshold
viewfunction chiThreshold() view returns (uint256)
contractToAdapter
viewfunction contractToAdapter(address) view returns (address)
creditManager
viewfunction creditManager() view returns (address)
enabledTokens
viewfunction enabledTokens(address) view returns (uint256)
fastCheckCounter
viewfunction fastCheckCounter(address) view returns (uint256)
getCreditAccountTokenById
viewfunction getCreditAccountTokenById(address creditAccount, uint256 id) view returns (address token, uint256 balance, uint256 tv, uint256 tvw)
hfCheckInterval
viewfunction hfCheckInterval() view returns (uint256)
isTokenAllowed
viewfunction isTokenAllowed(address) view returns (bool)
liquidationThresholds
viewfunction liquidationThresholds(address) view returns (uint256)
paused
viewfunction paused() view returns (bool)
poolService
viewfunction poolService() view returns (address)
priceOracle
viewfunction priceOracle() view returns (address)
revertIfAccountTransferIsNotAllowed
viewfunction revertIfAccountTransferIsNotAllowed(address owner, address newOwner) view
revertIfCantIncreaseBorrowing
viewfunction revertIfCantIncreaseBorrowing(address creditAccount, uint256 minHealthFactor) view
revertIfTokenNotAllowed
viewfunction revertIfTokenNotAllowed(address token) view
tokenMasksMap
viewfunction tokenMasksMap(address) view returns (uint256)
underlyingToken
viewfunction underlyingToken() view returns (address)
version
viewfunction version() view returns (uint256)
wethAddress
viewfunction wethAddress() view returns (address)
allowContract
nonpayablefunction allowContract(address targetContract, address adapter)
allowPlugin
nonpayablefunction allowPlugin(address plugin, bool state)
allowToken
nonpayablefunction allowToken(address token, uint256 liquidationThreshold)
approveAccountTransfers
nonpayablefunction approveAccountTransfers(address from, bool state)
checkAndEnableToken
nonpayablefunction checkAndEnableToken(address creditAccount, address token)
checkCollateralChange
nonpayablefunction checkCollateralChange(address creditAccount, address tokenIn, address tokenOut, uint256 amountIn, uint256 amountOut)
checkMultiTokenCollateral
nonpayablefunction checkMultiTokenCollateral(address creditAccount, uint256[] amountIn, uint256[] amountOut, address[] tokenIn, address[] tokenOut)
connectCreditManager
nonpayablefunction connectCreditManager(address _creditManager)
forbidContract
nonpayablefunction forbidContract(address targetContract)
forbidToken
nonpayablefunction forbidToken(address token)
initEnabledTokens
nonpayablefunction initEnabledTokens(address creditAccount)
pause
nonpayablefunction pause()
setFastCheckParameters
nonpayablefunction setFastCheckParameters(uint256 _chiThreshold, uint256 _hfCheckInterval)
unpause
nonpayablefunction unpause()
updateUnderlyingTokenLiquidationThreshold
nonpayablefunction updateUnderlyingTokenLiquidationThreshold()
upgradePriceOracle
nonpayablefunction upgradePriceOracle()
events
ContractAllowed
event ContractAllowed(address indexed protocol, address indexed adapter)
ContractForbidden
event ContractForbidden(address indexed protocol)
NewFastCheckParameters
event NewFastCheckParameters(uint256 chiThreshold, uint256 fastCheckDelay)
Paused
event Paused(address account)
PriceOracleUpdated
event PriceOracleUpdated(address indexed newPriceOracle)
TokenAllowed
event TokenAllowed(address indexed token, uint256 liquidityThreshold)
TokenForbidden
event TokenForbidden(address indexed token)
TransferAccountAllowed
event TransferAccountAllowed(address indexed from, address indexed to, bool state)
TransferPluginAllowed
event TransferPluginAllowed(address indexed pugin, bool state)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506040516200721138038062007211833981810160405281019062000037919062001213565b8160008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a300000000000000000000000000000000000000000000000000000000000008152509062000163576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620001275780820151818401526020810190506200010a565b50505050905090810190601f168015620001555780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff1663087376956040518163ffffffff1660e01b815260040160206040518083038186803b158015620001ab57600080fd5b505afa158015620001c0573d6000803e3d6000fd5b505050506040513d6020811015620001d757600080fd5b8101908080519060200190929190505050600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015620002945750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6040518060400160405280600281526020017f5a30000000000000000000000000000000000000000000000000000000000000815250906200030e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200030591906200132d565b60405180910390fd5b5081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b957600080fd5b505afa158015620003ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f49190620011e7565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634c252f916040518163ffffffff1660e01b815260040160206040518083038186803b1580156200049d57600080fd5b505afa158015620004b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d89190620011e7565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c861251c0360056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620005fd600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660c861251c036200071560201b60201c565b620006126126de600462000d6160201b60201c565b600160146000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166377532ed96040518163ffffffff1660e01b815260040160206040518083038186803b1580156200068157600080fd5b505afa15801562000696573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006bc9190620011e7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062001470565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090620007c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007b791906200132d565b60405180910390fd5b5060008111801562000833575060056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111155b6040518060400160405280600381526020017f434631000000000000000000000000000000000000000000000000000000000081525090620008ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a491906200132d565b60405180910390fd5b506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180620009035750610100600480549050105b6040518060400160405280600381526020017f4346360000000000000000000000000000000000000000000000000000000000815250906200097d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200097491906200132d565b60405180910390fd5b5060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401620009bb9190620012e3565b60206040518083038186803b158015620009d457600080fd5b505afa158015620009e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a0f919062001254565b101562000a1b57600080fd5b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743b908684600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b815260040162000a9e92919062001300565b60206040518083038186803b15801562000ab757600080fd5b505afa15801562000acc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000af2919062001254565b116040518060400160405280600381526020017f43464500000000000000000000000000000000000000000000000000000000008152509062000b6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b6491906200132d565b60405180910390fd5b50600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1662000cc9576001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506004805490506001901b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167fa52fb6bfa514a4ddcb31de40a5f6c20d767db1f921a8b7747973d93dc5da7a028260405162000d55919062001351565b60405180910390a25050565b816011819055508060128190555062000d7f62000dbe60201b60201c565b7f727652fff0946c19c233fd3eab5fc03db9e9fdd907e902d9136c2a9cac47101c828260405162000db29291906200136e565b60405180910390a15050565b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000f6d57600062000e4862000e3160115460125462000f6f60201b60201c565b6127106200101f60201b620043661790919060201c565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633915ffaa6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000eb357600080fd5b505afa15801562000ec8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000eee919062001254565b81106040518060400160405280600381526020017f43464200000000000000000000000000000000000000000000000000000000008152509062000f6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f6191906200132d565b60405180910390fd5b50505b565b600062000f8d83612710620010a360201b620043e91790919060201c565b905060005b62000fad6001846200101f60201b620043661790919060201c565b81101562000ffa5762000fea61271062000fd68685620010a360201b620043e91790919060201c565b6200112e60201b6200446f1790919060201c565b9150808060010191505062000f92565b5062001017612710826200112e60201b6200446f1790919060201c565b905092915050565b60008282111562001098576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b600080831415620010b8576000905062001128565b6000828402905082848281620010ca57fe5b041462001123576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180620071f06021913960400191505060405180910390fd5b809150505b92915050565b6000808211620011a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b818381620011b057fe5b04905092915050565b600081519050620011ca816200143c565b92915050565b600081519050620011e18162001456565b92915050565b600060208284031215620011fa57600080fd5b60006200120a84828501620011b9565b91505092915050565b600080604083850312156200122757600080fd5b60006200123785828601620011b9565b92505060206200124a85828601620011b9565b9150509250929050565b6000602082840312156200126757600080fd5b60006200127784828501620011d0565b91505092915050565b6200128b81620013b7565b82525050565b60006200129e826200139b565b620012aa8185620013a6565b9350620012bc818560208601620013f5565b620012c7816200142b565b840191505092915050565b620012dd81620013eb565b82525050565b6000602082019050620012fa600083018462001280565b92915050565b600060408201905062001317600083018562001280565b62001326602083018462001280565b9392505050565b6000602082019050818103600083015262001349818462001291565b905092915050565b6000602082019050620013686000830184620012d2565b92915050565b6000604082019050620013856000830185620012d2565b620013946020830184620012d2565b9392505050565b600081519050919050565b600082825260208201905092915050565b6000620013c482620013cb565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562001415578082015181840152602081019050620013f8565b8381111562001425576000848401525b50505050565b6000601f19601f8301169050919050565b6200144781620013b7565b81146200145357600080fd5b50565b6200146181620013eb565b81146200146d57600080fd5b50565b615d7080620014806000396000f3fe608060405234801561001057600080fd5b50600436106102a05760003560e01c80635f598edd11610167578063b451cecc116100ce578063e54fe9c811610087578063e54fe9c814610838578063e6dee2cc14610854578063f0527ac614610872578063f67c5bd01461087c578063f9eaee0d146108ac578063fdd57645146108dc576102a0565b8063b451cecc14610752578063c12c21c014610782578063c7de38a6146107a0578063cf33d955146107d0578063dfd59465146107ec578063e1c8ef0d1461081c576102a0565b80638456cb59116101205780638456cb591461067d57806390b1300a14610687578063a147c6c6146106b7578063a5757517146106d3578063af0a6502146106ef578063b3c6194314610722576102a0565b80635f598edd146105ad57806362061c6d146105dd57806378327438146105f95780637bccacee146106295780637dd0ba82146106455780637e4a686314610661576102a0565b80634cba294a1161020b57806354fd4d50116101c457806354fd4d50146104d7578063570a7af2146104f55780635a29be45146105135780635c975abb146105435780635e5f2e26146105615780635f27212a14610591576102a0565b80634cba294a146104035780634f0e0ef3146104335780635094cb4f1461045157806350e036ff1461048157806351e3f1601461049f57806352438e54146104bb576102a0565b80633192195c1161025d5780633192195c146103555780633b00ae70146103855780633bdfe4f5146103a15780633f4ba83a146103d157806340631828146103db57806347dedfc9146103e5576102a0565b806320a05ff7146102a557806324147708146102c35780632495a599146102df5780632630c12f146102fd5780632954018c1461031b5780632e2986dd14610339575b600080fd5b6102ad61090c565b6040516102ba9190615ae0565b60405180910390f35b6102dd60048036038101906102d891906156a8565b610919565b005b6102e7610b58565b6040516102f491906159ff565b60405180910390f35b610305610b7e565b60405161031291906159ff565b60405180910390f35b610323610ba4565b6040516103309190615aa3565b60405180910390f35b610353600480360381019061034e9190615884565b610bca565b005b61036f600480360381019061036a91906156a8565b610e14565b60405161037c9190615ae0565b60405180910390f35b61039f600480360381019061039a91906156fa565b610fdb565b005b6103bb60048036038101906103b691906156a8565b611189565b6040516103c89190615a88565b60405180910390f35b6103d96111a9565b005b6103e3611354565b005b6103ed611ae2565b6040516103fa9190615ae0565b60405180910390f35b61041d600480360381019061041891906156a8565b611ae8565b60405161042a9190615ae0565b60405180910390f35b61043b611b00565b60405161044891906159ff565b60405180910390f35b61046b600480360381019061046691906158fc565b611b26565b60405161047891906159ff565b60405180910390f35b610489611b43565b6040516104969190615ae0565b60405180910390f35b6104b960048036038101906104b491906156fa565b611b54565b005b6104d560048036038101906104d091906156a8565b611c2b565b005b6104df61207d565b6040516104ec9190615ae0565b60405180910390f35b6104fd612082565b60405161050a91906159ff565b60405180910390f35b61052d600480360381019061052891906156fa565b6120a8565b60405161053a9190615a88565b60405180910390f35b61054b61213c565b6040516105589190615a88565b60405180910390f35b61057b600480360381019061057691906158fc565b612152565b60405161058891906159ff565b60405180910390f35b6105ab60048036038101906105a69190615884565b612191565b005b6105c760048036038101906105c291906156a8565b61228e565b6040516105d49190615a88565b60405180910390f35b6105f760048036038101906105f2919061594e565b6122ae565b005b610613600480360381019061060e91906156a8565b61245d565b6040516106209190615ae0565b60405180910390f35b610643600480360381019061063e91906156fa565b612475565b005b61065f600480360381019061065a91906156a8565b6129c4565b005b61067b600480360381019061067691906157ad565b612a8c565b005b610685612e59565b005b6106a1600480360381019061069c91906156a8565b613004565b6040516106ae9190615ae0565b60405180910390f35b6106d160048036038101906106cc91906158c0565b6130c1565b005b6106ed60048036038101906106e891906158c0565b613270565b005b610709600480360381019061070491906158c0565b6132f8565b6040516107199493929190615a43565b60405180910390f35b61073c6004803603810190610737919061594e565b6134fd565b6040516107499190615ae0565b60405180910390f35b61076c600480360381019061076791906156a8565b613588565b6040516107799190615ae0565b60405180910390f35b61078a6135a0565b60405161079791906159ff565b60405180910390f35b6107ba60048036038101906107b591906156a8565b6135c6565b6040516107c79190615ae0565b60405180910390f35b6107ea60048036038101906107e591906156a8565b61366c565b005b610806600480360381019061080191906156a8565b613bea565b6040516108139190615ae0565b60405180910390f35b61083660048036038101906108319190615736565b613c2a565b005b610852600480360381019061084d91906156a8565b613eb7565b005b61085c61400d565b6040516108699190615ae0565b60405180910390f35b61087a614013565b005b610896600480360381019061089191906156a8565b6142fb565b6040516108a39190615ae0565b60405180910390f35b6108c660048036038101906108c191906156a8565b614313565b6040516108d39190615a88565b60405180910390f35b6108f660048036038101906108f191906156a8565b614333565b60405161090391906159ff565b60405180910390f35b6000600480549050905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156109a257600080fd5b505afa1580156109b6573d6000803e3d6000fd5b505050506040513d60208110156109cc57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090610ab9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a7e578082015181840152602081019050610a63565b50505050905090810190601f168015610aab5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167ff17b849746e74d7186170c9553d4bbf60b4f8bb1ed81fe50c099b934fb078f0560405160405180910390a250565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c5357600080fd5b505afa158015610c67573d6000803e3d6000fd5b505050506040513d6020811015610c7d57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090610d6a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d2f578082015181840152602081019050610d14565b50505050905090810190601f168015610d5c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5080601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fc7d2592986c53f858769b011e8ce6298936f8609789988e9f5ad4f0a2079889782604051610e089190615a88565b60405180910390a25050565b6000610fd48273ffffffffffffffffffffffffffffffffffffffff166317d11a156040518163ffffffff1660e01b815260040160206040518083038186803b158015610e5f57600080fd5b505afa158015610e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e979190615925565b610fc6600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630fce70fb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0257600080fd5b505afa158015610f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3a9190615925565b8573ffffffffffffffffffffffffffffffffffffffff16631afbb7a46040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8057600080fd5b505afa158015610f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb89190615925565b6143e990919063ffffffff16565b61446f90919063ffffffff16565b9050919050565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158061107d5750601460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561118557601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166040518060400160405280600381526020017f434646000000000000000000000000000000000000000000000000000000000081525090611183576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117a9190615abe565b60405180910390fd5b505b5050565b600b6020528060005260406000206000915054906101000a900460ff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d4eb5db0336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561123257600080fd5b505afa158015611246573d6000803e3d6000fd5b505050506040513d602081101561125c57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c310000000000000000000000000000000000000000000000000000000081525090611349576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561130e5780820151818401526020810190506112f3565b50505050905090810190601f16801561133b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506113526144f8565b565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f43463300000000000000000000000000000000000000000000000000000000008152509061141c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114139190615abe565b60405180910390fd5b50612710600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635e0b63d36040518163ffffffff1660e01b815260040160206040518083038186803b15801561148857600080fd5b505afa15801561149c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c09190615925565b10801561156d5750612710600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633915ffaa6040518163ffffffff1660e01b815260040160206040518083038186803b15801561153357600080fd5b505afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190615925565b105b80156116195750612710600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638053fcbe6040518163ffffffff1660e01b815260040160206040518083038186803b1580156115df57600080fd5b505afa1580156115f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116179190615925565b105b6040518060400160405280600381526020017f434d38000000000000000000000000000000000000000000000000000000000081525090611690576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116879190615abe565b60405180910390fd5b50612710600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e1b4264c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116fc57600080fd5b505afa158015611710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117349190615925565b116040518060400160405280600381526020017f434d390000000000000000000000000000000000000000000000000000000000815250906117ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a39190615abe565b60405180910390fd5b506118fe600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633915ffaa6040518163ffffffff1660e01b815260040160206040518083038186803b15801561181857600080fd5b505afa15801561182c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118509190615925565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638053fcbe6040518163ffffffff1660e01b815260040160206040518083038186803b1580156118b857600080fd5b505afa1580156118cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f09190615925565b61436690919063ffffffff16565b60056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600190505b600480549050811015611ad75760056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460056000600484815481106119ea57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156040518060400160405280600381526020017f434643000000000000000000000000000000000000000000000000000000000081525090611ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac09190615abe565b60405180910390fd5b50808060010191505061196a565b50611ae06145e2565b565b60115481565b60086020528060005260406000206000915090505481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611b3c82600961477c90919063ffffffff16565b9050919050565b6000611b4f6009614796565b905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f434633000000000000000000000000000000000000000000000000000000000081525090611c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c139190615abe565b60405180910390fd5b50611c2782826147ab565b5050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cb457600080fd5b505afa158015611cc8573d6000803e3d6000fd5b505050506040513d6020811015611cde57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090611dcb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d90578082015181840152602081019050611d75565b50505050905090810190601f168015611dbd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090611e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6b9190615abe565b60405180910390fd5b50611e8981600961490690919063ffffffff16565b6040518060400160405280600381526020017f434641000000000000000000000000000000000000000000000000000000000081525090611f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef79190615abe565b60405180910390fd5b506000600b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fab9f405bf0c19b97f65a7031634db41569cd2f0e0376a610a1e977f9ab22b58f60405160405180910390a250565b600181565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008060009054906101000a900460ff16905090565b6004818154811061216257600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f9b3258bc4904fd6426b99843e206c6c7cdb1fd0f040121c25b71dafbb3851ee0836040516122829190615a88565b60405180910390a35050565b60146020528060005260406000206000915054906101000a900460ff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561233757600080fd5b505afa15801561234b573d6000803e3d6000fd5b505050506040513d602081101561236157600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c32000000000000000000000000000000000000000000000000000000008152509061244e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124135780820151818401526020810190506123f8565b50505050905090810190601f1680156124405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506124598282614936565b5050565b60056020528060005260406000206000915090505481565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156124fe57600080fd5b505afa158015612512573d6000803e3d6000fd5b505050506040513d602081101561252857600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090612615576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125da5780820151818401526020810190506125bf565b50505050905090810190601f1680156126075780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156126805750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b6040518060400160405280600281526020017f5a30000000000000000000000000000000000000000000000000000000000000815250906126f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ee9190615abe565b60405180910390fd5b5060001515600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146040518060400160405280600381526020017f4346440000000000000000000000000000000000000000000000000000000000815250906127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba9190615abe565b60405180910390fd5b506000600b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506128e782600961498990919063ffffffff16565b5080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4bcbefaef68b99503d502f5a6abe7bca2b183ab8ac55457013c77d084ebd130560405160405180910390a35050565b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166040518060400160405280600381526020017f434632000000000000000000000000000000000000000000000000000000000081525090612a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7f9190615abe565b60405180910390fd5b5050565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166040518060400160405280600381526020017f434634000000000000000000000000000000000000000000000000000000000081525090612b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b479190615abe565b60405180910390fd5b5060008083518651148015612b66575082518551145b6040518060400160405280600281526020017f435200000000000000000000000000000000000000000000000000000000000081525090612bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd49190615abe565b60405180910390fd5b5060005b8651811015612d0257612cf3600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b66102df898481518110612c3757fe5b6020026020010151888581518110612c4b57fe5b6020026020010151601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401612c9493929190615afb565b60206040518083038186803b158015612cac57600080fd5b505afa158015612cc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ce49190615925565b846149b990919063ffffffff16565b92508080600101915050612be1565b5060005b8551811015612e4457612d2c88858381518110612d1f57fe5b60200260200101516147ab565b612e35600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b66102df888481518110612d7957fe5b6020026020010151878581518110612d8d57fe5b6020026020010151601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401612dd693929190615afb565b60206040518083038186803b158015612dee57600080fd5b505afa158015612e02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e269190615925565b836149b990919063ffffffff16565b91508080600101915050612d06565b50612e50878383614a41565b50505050505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a41ec64336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612ee257600080fd5b505afa158015612ef6573d6000803e3d6000fd5b505050506040513d6020811015612f0c57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c310000000000000000000000000000000000000000000000000000000081525090612ff9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612fbe578082015181840152602081019050612fa3565b50505050905090810190601f168015612feb5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50613002614be3565b565b6000806000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b6004805490508110156130a257806001901b92506000838316111561309557600061307986836132f8565b935050505061309181866149b990919063ffffffff16565b9450505b808060010191505061304e565b506130b86127108461446f90919063ffffffff16565b92505050919050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561314a57600080fd5b505afa15801561315e573d6000803e3d6000fd5b505050506040513d602081101561317457600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c320000000000000000000000000000000000000000000000000000000081525090613261576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561322657808201518184015260208101905061320b565b50505050905090810190601f1680156132535780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5061326c8282614cce565b5050565b8061327a83613bea565b10156040518060400160405280600381526020017f434d350000000000000000000000000000000000000000000000000000000000815250906132f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ea9190615abe565b60405180910390fd5b505050565b6000806000806004858154811061330b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1693508373ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b815260040161337191906159ff565b60206040518083038186803b15801561338957600080fd5b505afa15801561339d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c19190615925565b925060018311156134f457600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b66102df8486600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b815260040161344d93929190615afb565b60206040518083038186803b15801561346557600080fd5b505afa158015613479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349d9190615925565b91506134f1600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836143e990919063ffffffff16565b90505b92959194509250565b6000613514836127106143e990919063ffffffff16565b905060005b61352d60018461436690919063ffffffff16565b81101561356a5761355b61271061354d86856143e990919063ffffffff16565b61446f90919063ffffffff16565b91508080600101915050613519565b506135806127108261446f90919063ffffffff16565b905092915050565b60076020528060005260406000206000915090505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b60048054905081101561366457806001901b92506000838316111561365757600061363b86836132f8565b509250505061365381866149b990919063ffffffff16565b9450505b8080600101915050613610565b505050919050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156136f557600080fd5b505afa158015613709573d6000803e3d6000fd5b505050506040513d602081101561371f57600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c32000000000000000000000000000000000000000000000000000000008152509061380c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156137d15780820151818401526020810190506137b6565b50505050905090810190601f1680156137fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a30000000000000000000000000000000000000000000000000000000000000815250906138b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138ac9190615abe565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f43464700000000000000000000000000000000000000000000000000000000008152509061397f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139769190615abe565b60405180910390fd5b5080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663570a7af26040518163ffffffff1660e01b815260040160206040518083038186803b158015613a0757600080fd5b505afa158015613a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3f91906156d1565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632495a5996040518163ffffffff1660e01b815260040160206040518083038186803b158015613b2057600080fd5b505afa158015613b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b5891906156d1565b73ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f434630000000000000000000000000000000000000000000000000000000000081525090613be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bdd9190615abe565b60405180910390fd5b5050565b6000613c23613bf883610e14565b613c15612710613c0786613004565b6143e990919063ffffffff16565b61446f90919063ffffffff16565b9050919050565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166040518060400160405280600381526020017f434634000000000000000000000000000000000000000000000000000000000081525090613cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ce59190615abe565b60405180910390fd5b50613cf985846147ab565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b66102df8487601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401613d7c93929190615afb565b60206040518083038186803b158015613d9457600080fd5b505afa158015613da8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dcc9190615925565b90506000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b66102df8487601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401613e5193929190615afb565b60206040518083038186803b158015613e6957600080fd5b505afa158015613e7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ea19190615925565b9050613eae878383614a41565b50505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146040518060400160405280600381526020017f434633000000000000000000000000000000000000000000000000000000000081525090613f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f769190615abe565b60405180910390fd5b506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60125481565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f259aba336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561409c57600080fd5b505afa1580156140b0573d6000803e3d6000fd5b505050506040513d60208110156140c657600080fd5b81019080805190602001909291905050506040518060400160405280600481526020017f41434c3200000000000000000000000000000000000000000000000000000000815250906141b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561417857808201518184015260208101905061415d565b50505050905090810190601f1680156141a55780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561421c57600080fd5b505afa158015614230573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061425491906156d1565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fefe8ab924ca486283a79dc604baa67add51afb82af1db8ac386ebbba643cdffd60405160405180910390a2565b60066020528060005260406000206000915090505481565b60036020528060005260406000206000915054906101000a900460ff1681565b600c6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000828211156143de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b6000808314156143fc5760009050614469565b600082840290508284828161440d57fe5b0414614464576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615d1a6021913960400191505060405180910390fd5b809150505b92915050565b60008082116144e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b8183816144ef57fe5b04905092915050565b61450061213c565b614572576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5061757361626c653a206e6f742070617573656400000000000000000000000081525060200191505060405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6145b56152fc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461477a57600061465c61464b6011546012546134fd565b61271061436690919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633915ffaa6040518163ffffffff1660e01b815260040160206040518083038186803b1580156146c657600080fd5b505afa1580156146da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146fe9190615925565b81106040518060400160405280600381526020017f434642000000000000000000000000000000000000000000000000000000000081525090614777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161476e9190615abe565b60405180910390fd5b50505b565b600061478b8360000183615304565b60001c905092915050565b60006147a482600001615387565b9050919050565b6147b4816129c4565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205416141561490257600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205417600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b600061492e836000018373ffffffffffffffffffffffffffffffffffffffff1660001b615398565b905092915050565b816011819055508060128190555061494c6145e2565b7f727652fff0946c19c233fd3eab5fc03db9e9fdd907e902d9136c2a9cac47101c828260405161497d929190615b32565b60405180910390a15050565b60006149b1836000018373ffffffffffffffffffffffffffffffffffffffff1660001b615480565b905092915050565b600080828401905083811015614a37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b614a56601154836143e990919063ffffffff16565b614a6b612710836143e990919063ffffffff16565b118015614ab95750601254600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411155b15614b1257600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550614bde565b612710614b1e84613bea565b10156040518060400160405280600381526020017f434635000000000000000000000000000000000000000000000000000000000081525090614b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614b8e9190615abe565b60405180910390fd5b506001600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614beb61213c565b15614c5e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5061757361626c653a207061757365640000000000000000000000000000000081525060200191505060405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614ca16152fc565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156040518060400160405280600281526020017f5a3000000000000000000000000000000000000000000000000000000000000081525090614d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614d6d9190615abe565b60405180910390fd5b50600081118015614de8575060056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548111155b6040518060400160405280600381526020017f434631000000000000000000000000000000000000000000000000000000000081525090614e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614e569190615abe565b60405180910390fd5b506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180614eb45750610100600480549050105b6040518060400160405280600381526020017f434636000000000000000000000000000000000000000000000000000000000081525090614f2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614f229190615abe565b60405180910390fd5b5060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401614f6791906159ff565b60206040518083038186803b158015614f7f57600080fd5b505afa158015614f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fb79190615925565b1015614fc257600080fd5b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663743b908684600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401615043929190615a1a565b60206040518083038186803b15801561505b57600080fd5b505afa15801561506f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150939190615925565b116040518060400160405280600381526020017f43464500000000000000000000000000000000000000000000000000000000008152509061510b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016151029190615abe565b60405180910390fd5b50600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16615266576001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506004805490506001901b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167fa52fb6bfa514a4ddcb31de40a5f6c20d767db1f921a8b7747973d93dc5da7a02826040516152f09190615ae0565b60405180910390a25050565b600033905090565b600081836000018054905011615365576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180615cf86022913960400191505060405180910390fd5b82600001828154811061537457fe5b9060005260206000200154905092915050565b600081600001805490509050919050565b6000808360010160008481526020019081526020016000205490506000811461547457600060018203905060006001866000018054905003905060008660000182815481106153e357fe5b906000526020600020015490508087600001848154811061540057fe5b906000526020600020018190555060018301876001016000838152602001908152602001600020819055508660000180548061543857fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061547a565b60009150505b92915050565b600061548c83836154f0565b6154e55782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506154ea565b600090505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b600061552661552184615b8c565b615b5b565b9050808382526020820190508285602086028201111561554557600080fd5b60005b85811015615575578161555b88826155eb565b845260208401935060208301925050600181019050615548565b5050509392505050565b600061559261558d84615bb8565b615b5b565b905080838252602082019050828560208602820111156155b157600080fd5b60005b858110156155e157816155c7888261567e565b8452602084019350602083019250506001810190506155b4565b5050509392505050565b6000813590506155fa81615cb2565b92915050565b60008151905061560f81615cb2565b92915050565b600082601f83011261562657600080fd5b8135615636848260208601615513565b91505092915050565b600082601f83011261565057600080fd5b813561566084826020860161557f565b91505092915050565b60008135905061567881615cc9565b92915050565b60008135905061568d81615ce0565b92915050565b6000815190506156a281615ce0565b92915050565b6000602082840312156156ba57600080fd5b60006156c8848285016155eb565b91505092915050565b6000602082840312156156e357600080fd5b60006156f184828501615600565b91505092915050565b6000806040838503121561570d57600080fd5b600061571b858286016155eb565b925050602061572c858286016155eb565b9150509250929050565b600080600080600060a0868803121561574e57600080fd5b600061575c888289016155eb565b955050602061576d888289016155eb565b945050604061577e888289016155eb565b935050606061578f8882890161567e565b92505060806157a08882890161567e565b9150509295509295909350565b600080600080600060a086880312156157c557600080fd5b60006157d3888289016155eb565b955050602086013567ffffffffffffffff8111156157f057600080fd5b6157fc8882890161563f565b945050604086013567ffffffffffffffff81111561581957600080fd5b6158258882890161563f565b935050606086013567ffffffffffffffff81111561584257600080fd5b61584e88828901615615565b925050608086013567ffffffffffffffff81111561586b57600080fd5b61587788828901615615565b9150509295509295909350565b6000806040838503121561589757600080fd5b60006158a5858286016155eb565b92505060206158b685828601615669565b9150509250929050565b600080604083850312156158d357600080fd5b60006158e1858286016155eb565b92505060206158f28582860161567e565b9150509250929050565b60006020828403121561590e57600080fd5b600061591c8482850161567e565b91505092915050565b60006020828403121561593757600080fd5b600061594584828501615693565b91505092915050565b6000806040838503121561596157600080fd5b600061596f8582860161567e565b92505060206159808582860161567e565b9150509250929050565b61599381615c00565b82525050565b6159a281615c12565b82525050565b6159b181615c48565b82525050565b60006159c282615be4565b6159cc8185615bef565b93506159dc818560208601615c6c565b6159e581615ca1565b840191505092915050565b6159f981615c3e565b82525050565b6000602082019050615a14600083018461598a565b92915050565b6000604082019050615a2f600083018561598a565b615a3c602083018461598a565b9392505050565b6000608082019050615a58600083018761598a565b615a6560208301866159f0565b615a7260408301856159f0565b615a7f60608301846159f0565b95945050505050565b6000602082019050615a9d6000830184615999565b92915050565b6000602082019050615ab860008301846159a8565b92915050565b60006020820190508181036000830152615ad881846159b7565b905092915050565b6000602082019050615af560008301846159f0565b92915050565b6000606082019050615b1060008301866159f0565b615b1d602083018561598a565b615b2a604083018461598a565b949350505050565b6000604082019050615b4760008301856159f0565b615b5460208301846159f0565b9392505050565b6000604051905081810181811067ffffffffffffffff82111715615b8257615b81615c9f565b5b8060405250919050565b600067ffffffffffffffff821115615ba757615ba6615c9f565b5b602082029050602081019050919050565b600067ffffffffffffffff821115615bd357615bd2615c9f565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000615c0b82615c1e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000615c5382615c5a565b9050919050565b6000615c6582615c1e565b9050919050565b60005b83811015615c8a578082015181840152602081019050615c6f565b83811115615c99576000848401525b50505050565bfe5b6000601f19601f8301169050919050565b615cbb81615c00565b8114615cc657600080fd5b50565b615cd281615c12565b8114615cdd57600080fd5b50565b615ce981615c3e565b8114615cf457600080fd5b5056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220028a4f708f68c0c3408d97335159caf12fa6f6717c381978b6354c913bc0e4c464736f6c63430007060033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77000000000000000000000000cf64698aff7e5f27a11dff868af228653ba53be0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48