0 txs
18 calls
constructor
No constructor.
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
asset
viewfunction asset() view returns (address)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
convertToAssets
viewfunction convertToAssets(uint256 shares) view returns (uint256)
convertToShares
viewfunction convertToShares(uint256 assets) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
depositCap
viewfunction depositCap() view returns (uint256)
dnUsdcDeposited
viewfunction dnUsdcDeposited() view returns (int256)
getAdminParams
viewfunction getAdminParams() view returns (address keeper, address waterVault, uint256 depositCap, address batchingManager, uint16 withdrawFeeBps, uint24 feeTierWethWbtcPool)
getCurrentBorrows
viewfunction getCurrentBorrows() view returns (uint256 currentBtcBorrow, uint256 currentEthBorrow)
getHedgeParams
viewfunction getHedgeParams() view returns (address balancerVault, address swapRouter, uint256 targetHealthFactor, address aaveRewardsController)
getMarketValue
viewfunction getMarketValue(uint256 assetAmount) view returns (uint256 marketValue)
getOptimalBorrows
viewfunction getOptimalBorrows(uint256 glpDeposited) view returns (uint256 optimalBtcBorrow, uint256 optimalEthBorrow)
getPrice
viewfunction getPrice(bool maximize) view returns (uint256)
getPriceX128
viewfunction getPriceX128() view returns (uint256)
getRebalanceParams
viewfunction getRebalanceParams() view returns (uint32 rebalanceTimeThreshold, uint16 rebalanceDeltaThresholdBps, uint16 rebalanceHfThresholdBps)
getThresholds
viewfunction getThresholds() view returns (uint16 slippageThresholdSwapBtcBps, uint16 slippageThresholdSwapEthBps, uint16 slippageThresholdGmxBps, uint128 usdcConversionThreshold, uint128 wethConversionThreshold, uint128 hedgeUsdcAmountThreshold, uint128 partialBtcHedgeUsdcAmountThreshold, uint128 partialEthHedgeUsdcAmountThreshold)
getUsdcBorrowed
viewfunction getUsdcBorrowed() view returns (uint256 usdcAmount)
getVaultMarketValue
viewfunction getVaultMarketValue() view returns (int256 vaultMarketValue)
isValidRebalance
viewfunction isValidRebalance() view returns (bool)
maxDeposit
viewfunction maxDeposit(address) view returns (uint256)
maxMint
viewfunction maxMint(address receiver) view returns (uint256)
maxRedeem
viewfunction maxRedeem(address owner) view returns (uint256)
maxWithdraw
viewfunction maxWithdraw(address owner) view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
previewDeposit
viewfunction previewDeposit(uint256 assets) view returns (uint256)
previewMint
viewfunction previewMint(uint256 shares) view returns (uint256)
previewRedeem
viewfunction previewRedeem(uint256 shares) view returns (uint256)
previewWithdraw
viewfunction previewWithdraw(uint256 assets) view returns (uint256)
symbol
viewfunction symbol() view returns (string)
totalAssets
viewfunction totalAssets() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
claimVestedGmx
nonpayablefunction claimVestedGmx()
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
deposit
nonpayablefunction deposit(uint256 amount, address to) returns (uint256 shares)
grantAllowances
nonpayablefunction grantAllowances()
harvestFees
nonpayablefunction harvestFees()
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
initialize
nonpayablefunction initialize(string _name, string _symbol, address _swapRouter, address _rewardRouter, address _mintBurnRewardRouter, tuple _tokens, address _poolAddressesProvider)
mint
nonpayablefunction mint(uint256 shares, address to) returns (uint256 amount)
pause
nonpayablefunction pause()
rebalance
nonpayablefunction rebalance()
receiveFlashLoan
nonpayablefunction receiveFlashLoan(address[] tokens, uint256[] amounts, uint256[] feeAmounts, bytes userData)
redeem
nonpayablefunction redeem(uint256 shares, address receiver, address owner) returns (uint256 assets)
renounceOwnership
nonpayablefunction renounceOwnership()
setAdminParams
nonpayablefunction setAdminParams(address newKeeper, address waterVault, uint256 newDepositCap, address batchingManager, uint16 withdrawFeeBps, uint24 feeTierWethWbtcPool)
setFeeParams
nonpayablefunction setFeeParams(uint16 _feeBps, address _feeRecipient)
setGmxParams
nonpayablefunction setGmxParams(address _glpManager)
setGmxRouter
nonpayablefunction setGmxRouter(address _rewardRouter)
setHedgeParams
nonpayablefunction setHedgeParams(address vault, address swapRouter, uint256 targetHealthFactor, address aaveRewardsController)
setRebalanceParams
nonpayablefunction setRebalanceParams(uint32 rebalanceTimeThreshold, uint16 rebalanceDeltaThresholdBps, uint16 rebalanceHfThresholdBps)
setThresholds
nonpayablefunction setThresholds(uint16 slippageThresholdSwapBtcBps, uint16 slippageThresholdSwapEthBps, uint16 slippageThresholdGmxBps, uint128 usdcConversionThreshold, uint128 wethConversionThreshold, uint128 hedgeUsdcAmountThreshold, uint128 partialBtcHedgeUsdcAmountThreshold, uint128 partialEthHedgeUsdcAmountThreshold)
stopVestAndStakeEsGmx
nonpayablefunction stopVestAndStakeEsGmx()
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
unstakeAndVestEsGmx
nonpayablefunction unstakeAndVestEsGmx()
withdraw
nonpayablefunction withdraw(uint256 assets, address receiver, address owner) returns (uint256 shares)
withdrawFees
nonpayablefunction withdrawFees()
events
AdminParamsUpdated
event AdminParamsUpdated(address newKeeper, address waterVault, uint256 newDepositCap, address batchingManager, uint16 withdrawFeeBps)
AllowancesGranted
event AllowancesGranted()
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
BatchingManagerUpdated
event BatchingManagerUpdated(address _batchingManager)
Deposit
event Deposit(address indexed caller, address indexed owner, uint256 assets, uint256 shares)
DepositCapUpdated
event DepositCapUpdated(uint256 _newDepositCap)
FeeParamsUpdated
event FeeParamsUpdated(uint256 feeBps, address _newFeeRecipient)
FeesWithdrawn
event FeesWithdrawn(uint256 feeAmount)
HedgeParamsUpdated
event HedgeParamsUpdated(address vault, address swapRouter, uint256 targetHealthFactor, address aaveRewardsController, address pool, address oracle)
Initialized
event Initialized(uint8 version)
KeeperUpdated
event KeeperUpdated(address _newKeeper)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Rebalanced
event Rebalanced()
RebalanceParamsUpdated
event RebalanceParamsUpdated(uint32 rebalanceTimeThreshold, uint16 rebalanceDeltaThresholdBps, uint16 rebalanceHfThresholdBps)
ThresholdsUpdated
event ThresholdsUpdated(uint16 slippageThresholdSwapBtcBps, uint16 slippageThresholdSwapEthBps, uint16 slippageThresholdGmxBps, uint128 usdcConversionThreshold, uint128 wethConversionThreshold, uint128 hedgeUsdcAmountThreshold, uint128 partialBtcHedgeUsdcAmountThreshold, uint128 partialEthHedgeUsdcAmountThreshold)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Unpaused
event Unpaused(address account)
WaterVaultUpdated
event WaterVaultUpdated(address _waterVault)
Withdraw
event Withdraw(address indexed caller, address indexed receiver, address indexed owner, uint256 assets, uint256 shares)
WithdrawFeeUpdated
event WithdrawFeeUpdated(uint256 _withdrawFeeBps)
errors
ArraysLengthMismatch
error ArraysLengthMismatch()
DepositCapExceeded
error DepositCapExceeded()
FlashloanNotInitiated
error FlashloanNotInitiated()
InvalidFeeBps
error InvalidFeeBps()
InvalidFeeRecipient
error InvalidFeeRecipient()
InvalidRebalance
error InvalidRebalance()
InvalidRebalanceDeltaThresholdBps
error InvalidRebalanceDeltaThresholdBps()
InvalidRebalanceHfThresholdBps
error InvalidRebalanceHfThresholdBps()
InvalidRebalanceTimeThreshold
error InvalidRebalanceTimeThreshold()
InvalidSlippageThresholdGmx
error InvalidSlippageThresholdGmx()
InvalidSlippageThresholdSwapBtc
error InvalidSlippageThresholdSwapBtc()
InvalidSlippageThresholdSwapEth
error InvalidSlippageThresholdSwapEth()
InvalidTargetHealthFactor
error InvalidTargetHealthFactor()
InvalidWithdrawFeeBps
error InvalidWithdrawFeeBps()
NotBalancerVault
error NotBalancerVault()
NotWaterVault
error NotWaterVault()
OnlyKeeperAllowed
error OnlyKeeperAllowed(address msgSender, address authorisedKeeperAddress)
creation bytecode
0x608060405234801561001057600080fd5b506156e180620000216000396000f3fe608060405234801561001057600080fd5b50600436106103c55760003560e01c80637d7c2a1c116101ff578063bf9571f11161011a578063e0120cf8116100ad578063ef2a3e1a1161007c578063ef2a3e1a14610907578063ef8b30f71461091a578063f04f27071461092d578063f2fde38b1461094057600080fd5b8063e0120cf81461087d578063e245b5af14610890578063ec279a18146108a3578063edbcc599146108ab57600080fd5b8063d627b530116100e9578063d627b53014610820578063d905777e14610828578063dbd5edc71461083b578063dd62ed3e1461084457600080fd5b8063bf9571f1146107df578063c63d75b6146107e7578063c6e6f592146107fa578063ce96cb771461080d57600080fd5b806395e2da7c11610192578063b3d7f6b911610161578063b3d7f6b91461079e578063b460af94146107b1578063ba087652146107c4578063ba7cc8d1146107d757600080fd5b806395e2da7c146106f05780639c3977b5146106f8578063a457c2d714610778578063a9059cbb1461078b57600080fd5b80638da5cb5b116101ce5780638da5cb5b146106bc57806394bf804d146106cd57806395956cc1146106e057806395d89b41146106e857600080fd5b80637d7c2a1c1461066457806382100a501461066c5780638456cb59146106ac5780638d315d7b146106b457600080fd5b80633d672a45116102ef57806359f3fe22116102825780636e553f65116102515780636e553f651461060d57806370a0823114610620578063715018a61461064957806376bbc90d1461065157600080fd5b806359f3fe22146105825780635c975abb146105e75780635c9a9b55146105f257806365eda5571461060557600080fd5b806347f24f4b116102be57806347f24f4b146105365780634cdad50614610549578063520c5fd91461055c578063554070bc1461056f57600080fd5b80633d672a451461050b5780633f4ba83a14610513578063402d267d1461051b578063476343ee1461052e57600080fd5b8063138cc18f1161036757806330af302d1161033657806330af302d146104ab578063313ce567146104be57806338d52e0f146104cd57806339509351146104f857600080fd5b8063138cc18f1461048057806318160ddd146104885780631f5edd8d1461049057806323b872dd1461049857600080fd5b8063095ea7b3116103a3578063095ea7b31461040d5780630a28a477146104305780630ee31e941461044357806311a843841461045857600080fd5b806301e1d114146103ca57806306fdde03146103e557806307a2d13a146103fa575b600080fd5b6103d2610953565b6040519081526020015b60405180910390f35b6103ed6109ce565b6040516103dc9190614afc565b6103d2610408366004614b0f565b610a60565b61042061041b366004614b3d565b610b09565b60405190151581526020016103dc565b6103d261043e366004614b0f565b610b23565b610456610451366004614bc2565b610bee565b005b61046b610466366004614b0f565b611317565b604080519283526020830191909152016103dc565b61045661139f565b6035546103d2565b610456611404565b6104206104a6366004614c97565b61156d565b6104566104b9366004614ce8565b611591565b604051601281526020016103dc565b6065546104e0906001600160a01b031681565b6040516001600160a01b0390911681526020016103dc565b610420610506366004614b3d565b6116d7565b6103d2611716565b610456611834565b6103d2610529366004614d3c565b611846565b6104566118d2565b610456610544366004614d6e565b61198d565b6103d2610557366004614b0f565b611bd5565b61045661056a366004614d3c565b611ca1565b6103d261057d366004614b0f565b611ccc565b60fc5461011c546101055461011d5461010454604080516001600160a01b0396871681529486166020860152840192909252929092166060820152600160481b820461ffff166080820152600160581b90910462ffffff1660a082015260c0016103dc565b60ca5460ff16610420565b610456610600366004614e17565b611cf0565b610456611ee0565b6103d261061b366004614e6a565b612101565b6103d261062e366004614d3c565b6001600160a01b031660009081526033602052604090205490565b61045661211d565b61045661065f366004614d3c565b61212f565b61045661215a565b61011b5461011a546101005461011354604080516001600160a01b03958616815293851660208501528301919091529190911660608201526080016103dc565b61045661248a565b6103d261249a565b6098546001600160a01b03166104e0565b6103d26106db366004614e6a565b6126e5565b610456612701565b6103ed61284f565b6103d261285e565b6101065461010754610108546040805161ffff620100008604811682526401000000008604811660208301528516918101919091526001600160801b038084166060830152600160701b90940484166080820152600160801b92839004841660a082015283821660c082015291900490911660e0820152610100016103dc565b610420610786366004614b3d565b6128f4565b610420610799366004614b3d565b612986565b6103d26107ac366004614b0f565b612994565b6103d26107bf366004614e9a565b612a2f565b6103d26107d2366004614e9a565b612a54565b61046b612a71565b610456612af1565b6103d26107f5366004614d3c565b613004565b6103d2610808366004614b0f565b613012565b6103d261081b366004614d3c565b6130a7565b6104206130c9565b6103d2610836366004614d3c565b613233565b610105546103d2565b6103d2610852366004614ed1565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b61045661088b366004614eff565b613251565b6103d261089e366004614f2b565b61333c565b60fe546103d2565b6108e06101065463ffffffff680100000000000000008204169161ffff600160601b8304811692660100000000000090041690565b6040805163ffffffff909416845261ffff92831660208501529116908201526060016103dc565b610456610915366004614f48565b61345d565b6103d2610928366004614b0f565b613573565b61045661093b366004615139565b61357e565b61045661094e366004614d3c565b613644565b604051620eaf7160ec1b815260fc6004820152600090732364cc1d66f8fda3cecbcfe16797571aa5b992b99063eaf7100090602401602060405180830381865af41580156109a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190615244565b905090565b6060603680546109dd9061525d565b80601f0160208091040260200160405190810160405280929190818152602001828054610a099061525d565b8015610a565780601f10610a2b57610100808354040283529160200191610a56565b820191906000526020600020905b815481529060010190602001808311610a3957829003601f168201915b5050505050905090565b600080610a6c60355490565b90508015610b0057604051633230d7e360e21b815260fc600482015260006024820152610afb90732364cc1d66f8fda3cecbcfe16797571aa5b992b99063c8c35f8c90604401602060405180830381865af4158015610acf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af39190615244565b8490836136ba565b610b02565b825b9392505050565b600033610b178185856136d9565b60019150505b92915050565b600080610b2f60355490565b90508015610b0057610afb610b46612710836152ae565b61010454610b6190600160481b900461ffff166127106152cd565b604051633230d7e360e21b815260fc600482015260006024820152732364cc1d66f8fda3cecbcfe16797571aa5b992b99063c8c35f8c90604401602060405180830381865af4158015610bb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdc9190615244565b610be691906152ae565b8591906137fd565b600054610100900460ff1615808015610c0e5750600054600160ff909116105b80610c285750303b158015610c28575060005460ff166001145b610c905760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015610cb3576000805461ff0019166101001790555b610cbb61382b565b610cc361385a565b610d46610cd66060850160408601614d3c565b8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c908190840183828082843760009201919091525061388992505050565b610d536020840184614d3c565b61010c80546001600160a01b0319166001600160a01b0392909216919091179055610d846040840160208501614d3c565b61010d80546001600160a01b0319166001600160a01b0392909216919091179055610db56080840160608501614d3c565b61010b80546001600160a01b03199081166001600160a01b039384161790915561011a805482168984161790556101188054821688841617905561011980548216878416179055610114805490911684831617905560655460408051633c5103f760e11b8152905191909216916378a207ee9160048281019260209291908290030181865afa158015610e4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7091906152ef565b61010a80546001600160a01b0319166001600160a01b0392831617905560408051633e9b6c6f60e21b815290519186169163fa6db1bc916004808201926020929091908290030181865afa158015610ecc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef091906152ef565b61011780546001600160a01b0319166001600160a01b039283161790556065546040805162af394d60e81b81529051919092169163af394d009160048083019260209291908290030181865afa158015610f4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7291906152ef565b61010980546001600160a01b0319166001600160a01b03928316179055610117546040805163fbfa77cf60e01b81529051919092169163fbfa77cf9160048083019260209291908290030181865afa158015610fd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff691906152ef565b61011580546001600160a01b0319166001600160a01b03928316179055610114546040805163026b1d5f60e01b81529051919092169163026b1d5f9160048083019260209291908290030181865afa158015611056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107a91906152ef565b61010e80546001600160a01b0319166001600160a01b039283161790556101145460408051631f94a27560e31b81529051919092169163fca513a89160048083019260209291908290030181865afa1580156110da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fe91906152ef565b61011280546001600160a01b0319166001600160a01b0392831617905561010e5461010b546040516335ea6a7560e01b815290831660048201529116906335ea6a75906024016101e060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615379565b610100015161010f80546001600160a01b0319166001600160a01b0392831617905561010e5461010d546040516335ea6a7560e01b815290831660048201529116906335ea6a75906024016101e060405180830381865afa1580156111ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112139190615379565b610140015161011080546001600160a01b0319166001600160a01b0392831617905561010e5461010c546040516335ea6a7560e01b815290831660048201529116906335ea6a75906024016101e060405180830381865afa15801561127c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a09190615379565b610140015161011180546001600160a01b0319166001600160a01b03909216919091179055801561130b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b604051630236dda560e31b815260fc6004820152602481018290526000908190732364cc1d66f8fda3cecbcfe16797571aa5b992b9906311b6ed28906044016040805180830381865af4158015611372573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611396919061549c565b91509150915091565b6040516346a7281360e01b815260fc6004820152732364cc1d66f8fda3cecbcfe16797571aa5b992b9906346a728139060240160006040518083038186803b1580156113ea57600080fd5b505af41580156113fe573d6000803e3d6000fd5b50505050565b61140c6138b7565b6101185460408051633671df2560e01b815290516000926001600160a01b031691633671df259160048083019260209291908290030181865afa158015611457573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147b91906152ef565b6001600160a01b0316634e71d92d6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156114ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114de9190615244565b60fd5461011854604080516331e67c7160e01b8152905193945061156a936001600160a01b0393841693869316916331e67c719160048083019260209291908290030181865afa158015611536573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155a91906152ef565b6001600160a01b03169190613911565b50565b60003361157b858285613979565b611586858585613a05565b506001949350505050565b6115996138b7565b6203f4808363ffffffff1611156115c2576040516228254960e21b815260040160405180910390fd5b6127108261ffff1611156115e95760405163fd24448b60e01b815260040160405180910390fd5b6127108161ffff16108061160357506101005461ffff8216115b156116215760405163149d3c7560e21b815260040160405180910390fd5b61010680546dffffffffffff000000000000000019166801000000000000000063ffffffff86169081026dffff000000000000000000000000191691909117600160601b61ffff8681169182029290921767ffff0000000000001916660100000000000092861692830217909355604080519283526020830193909352918101919091527f74666b2773815375e6daaf777fe5b0b6f04a4a15373485cfaf2cf48251b21d9e9060600160405180910390a1505050565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909190610b1790829086906117119087906154c0565b6136d9565b6101175460405163019c8a3b60e11b81526000600482018190529182916001600160a01b0390911690630339147690602401602060405180830381865afa158015611765573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117899190615244565b9050600060fc600e0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118079190615244565b905061182d600160801b6118258369d3c21bcecceda10000006152ae565b849190613bb0565b9250505090565b61183c6138b7565b611844613c63565b565b604051633230d7e360e21b815260fc600482015260016024820152600090732364cc1d66f8fda3cecbcfe16797571aa5b992b99063c8c35f8c90604401602060405180830381865af41580156118a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c49190615244565b61010554610b1d91906152cd565b6101018054600090915561010c5460fd5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af1158015611932573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195691906154d8565b506040518181527f9800e6f57aeb4360eaa72295a820a4293e1e66fbfcabcd8874ae141304a76deb9060200160405180910390a150565b6119956138b7565b6127108861ffff1611156119bc5760405163669169e560e01b815260040160405180910390fd5b6127108761ffff1611156119e357604051632722719960e21b815260040160405180910390fd5b6127108661ffff161115611a0a576040516378fd03f760e01b815260040160405180910390fd5b8760fc600a0160026101000a81548161ffff021916908361ffff1602179055508660fc600a0160046101000a81548161ffff021916908361ffff1602179055508560fc600a0160006101000a81548161ffff021916908361ffff1602179055508460fc600b0160006101000a8154816001600160801b0302191690836001600160801b031602179055508360fc600a01600e6101000a8154816001600160801b0302191690836001600160801b031602179055508260fc600b0160106101000a8154816001600160801b0302191690836001600160801b031602179055508160fc600c0160006101000a8154816001600160801b0302191690836001600160801b031602179055508060fc600c0160106101000a8154816001600160801b0302191690836001600160801b031602179055507f8405afe6e9767f91c282339dc75edd776ddeda3e9aad8e1bb15471db89f8d8678888888888888888604051611bc398979695949392919061ffff988916815296881660208801529490961660408601526001600160801b0392831660608601529082166080850152811660a084015292831660c083015290911660e08201526101000190565b60405180910390a15050505050505050565b600080611be160355490565b90508015610b005761010454610afb90611c0890600160481b900461ffff166127106152cd565b604051633230d7e360e21b815260fc600482015260006024820152732364cc1d66f8fda3cecbcfe16797571aa5b992b99063c8c35f8c90604401602060405180830381865af4158015611c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c839190615244565b611c8d91906152ae565b611c99612710846152ae565b8591906136ba565b611ca96138b7565b61011780546001600160a01b0319166001600160a01b0392909216919091179055565b6000610b1d611cdb600061333c565b83906c0c9f2c9cd04674edea400000006136ba565b611cf86138b7565b614e20821115611d1b5760405163361804a960e21b815260040160405180910390fd5b61011b80546001600160a01b038087166001600160a01b03199283161790925561011a805486841690831617905561010084905561011380548484169216919091179055610114546040805163026b1d5f60e01b815290519190921691600091839163026b1d5f9160048281019260209291908290030181865afa158015611da7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dcb91906152ef565b90508060fc60120160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000826001600160a01b031663fca513a86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5b91906152ef565b61011280546001600160a01b0319166001600160a01b03838116918217909255604080518b841681528a841660208201529081018990528783166060820152918516608083015260a08201529091507f04a2e4917e8cf09fc5f74a42cb8b240cb288a69c78dbf02719e5c7bf9ca1561e9060c00160405180910390a150505050505050565b611ee86138b7565b6101185460408051633671df2560e01b815290516001600160a01b0390921691633671df25916004808201926020929091908290030181865afa158015611f33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5791906152ef565b6001600160a01b0316633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611f9157600080fd5b505af1158015611fa5573d6000803e3d6000fd5b50506101185460408051630d43254f60e31b81529051600094506001600160a01b039092169250636a192a789160048083019260209291908290030181865afa158015611ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201a91906152ef565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015612060573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120849190615244565b61011854604051633be3166560e21b8152600481018390529192506001600160a01b03169063ef8c599490602401600060405180830381600087803b1580156120cc57600080fd5b505af11580156120e0573d6000803e3d6000fd5b505050508060fc60060160008282546120f991906154c0565b909155505050565b600061210b613cb5565b612113613cfb565b610b028383613ed2565b6121256138b7565b6118446000613f8d565b6121376138b7565b61011880546001600160a01b0319166001600160a01b0392909216919091179055565b60fc546001600160a01b0316331461219a5760fc546040516329b7946d60e01b81523360048201526001600160a01b039091166024820152604401610c87565b6121a26130c9565b6121bf5760405163a039e79960e01b815260040160405180910390fd5b6040516346a7281360e01b815260fc6004820152732364cc1d66f8fda3cecbcfe16797571aa5b992b9906346a728139060240160006040518083038186803b15801561220a57600080fd5b505af415801561221e573d6000803e3d6000fd5b5050604051630407b02360e41b815260fc600482015260009250829150732364cc1d66f8fda3cecbcfe16797571aa5b992b99063407b0230906024016040805180830381865af4158015612276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229a919061549c565b6040516374a715bd60e11b815260fc600482015260248101839052604481018290529193509150600090732364cc1d66f8fda3cecbcfe16797571aa5b992b99063e94e2b7a90606401602060405180830381865af4158015612300573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123249190615244565b604051634852d6c760e01b815260fc600482015260248101829052909150732364cc1d66f8fda3cecbcfe16797571aa5b992b990634852d6c79060440160006040518083038186803b15801561237957600080fd5b505af415801561238d573d6000803e3d6000fd5b50505050600060fc732364cc1d66f8fda3cecbcfe16797571aa5b992b96360c08729909186866123bb610953565b6040516001600160e01b031960e087901b16815260048101949094526024840192909252604483015260648201526001608482015260a401602060405180830381865af4158015612410573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243491906154d8565b90508061245b57610104805466ffffffffffff0019166101004265ffffffffffff16021790555b6040517fc741dbaad15a4f298fe8d80943fa8e005e7bcb2f5b0a0c8dec1fc35be457f14690600090a150505050565b6124926138b7565b611844613fdf565b604051630407b02360e41b815260fc600482015260009081908190732364cc1d66f8fda3cecbcfe16797571aa5b992b99063407b0230906024016040805180830381865af41580156124f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612514919061549c565b6040516374a715bd60e11b815260fc600482015260248101839052604481018290529193509150600090732364cc1d66f8fda3cecbcfe16797571aa5b992b99063e94e2b7a90606401602060405180830381865af415801561257a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259e9190615244565b9050600060fc60210160009054906101000a90046001600160a01b03166001600160a01b031663f9ec118f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061261c9190615244565b610109546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015612665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126899190615244565b61269391906154c0565b905061269e8261401c565b60ff546126aa9061401c565b60fe546126be6126b985611ccc565b61401c565b6126c891906154f5565b6126d291906154f5565b6126dc9190615536565b94505050505090565b60006126ef613cb5565b6126f7613cfb565b610b028383614060565b6127096138b7565b61011854610102546040516364f6446760e01b81526001600160a01b03909216916364f64467916127409160040190815260200190565b600060405180830381600087803b15801561275a57600080fd5b505af115801561276e573d6000803e3d6000fd5b50506101185460408051633671df2560e01b815290516001600160a01b039092169350633671df2592506004808201926020929091908290030181865afa1580156127bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e191906152ef565b6101025460405163b6b55f2560e01b81526001600160a01b03929092169163b6b55f25916128159160040190815260200190565b600060405180830381600087803b15801561282f57600080fd5b505af1158015612843573d6000803e3d6000fd5b50506000610102555050565b6060603780546109dd9061525d565b600061286e60fc6003015461401c565b60fe5461010f546040516370a0823160e01b81523060048201526128e0916001600160a01b0316906370a0823190602401602060405180830381865afa1580156128bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b99190615244565b6128ea9190615536565b6109c99190615536565b3360008181526034602090815260408083206001600160a01b0387168452909152812054909190838110156129795760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c87565b61158682868684036136d9565b600033610b17818585613a05565b6000806129a060355490565b90508015610b0057604051633230d7e360e21b815260fc600482015260016024820152610afb90732364cc1d66f8fda3cecbcfe16797571aa5b992b99063c8c35f8c90604401602060405180830381865af4158015612a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a279190615244565b8490836137fd565b6000612a39613cb5565b612a41613cfb565b612a4c8484846140e1565b949350505050565b6000612a5e613cb5565b612a66613cfb565b612a4c8484846141b3565b604051630407b02360e41b815260fc60048201526000908190732364cc1d66f8fda3cecbcfe16797571aa5b992b99063407b0230906024016040805180830381865af4158015612ac5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae9919061549c565b915091509091565b612af96138b7565b61010e5461011a5461010d5460405163095ea7b360e01b81526001600160a01b0393841660048201819052600019602483015293928316929091169063095ea7b3906044016020604051808303816000875af1158015612b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b8191906154d8565b5061010d5460405163095ea7b360e01b81526001600160a01b03838116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af1158015612bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfb91906154d8565b5061010c5460405163095ea7b360e01b81526001600160a01b03848116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af1158015612c51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7591906154d8565b5061010c5460405163095ea7b360e01b81526001600160a01b03838116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af1158015612ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cef91906154d8565b5061010c5461011d5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015612d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6c91906154d8565b5061010b5460405163095ea7b360e01b81526001600160a01b03848116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af1158015612dc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de691906154d8565b5061010b5460405163095ea7b360e01b81526001600160a01b03838116600483015260001960248301529091169063095ea7b3906044016020604051808303816000875af1158015612e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6091906154d8565b5061010b5461011d5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015612eb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612edd91906154d8565b5061010f5461011c5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015612f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5a91906154d8565b506065546101175460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015612fb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd691906154d8565b506040517fba5bb3f899c7a3edcc9ff9d46c4e08449c6a608b6f8254132bc5af4898645cbc90600090a15050565b6000610b1d61080883611846565b60008061301e60355490565b90508015610b0057604051633230d7e360e21b815260fc600482015260016024820152610afb908290732364cc1d66f8fda3cecbcfe16797571aa5b992b99063c8c35f8c90604401602060405180830381865af4158015613083573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c999190615244565b6001600160a01b038116600090815260336020526040812054610b1d90610a60565b604051623df7c160e41b815260fc6004820152600090732364cc1d66f8fda3cecbcfe16797571aa5b992b9906303df7c1090602401602060405180830381865af415801561311b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313f91906154d8565b806131b9575060405163ca4c307160e01b815260fc6004820152732364cc1d66f8fda3cecbcfe16797571aa5b992b99063ca4c307190602401602060405180830381865af4158015613195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b991906154d8565b806109c95750604051633eb3151360e21b815260fc6004820152732364cc1d66f8fda3cecbcfe16797571aa5b992b99063facc544c90602401602060405180830381865af415801561320f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c991906154d8565b6001600160a01b038116600090815260336020526040812054610b1d565b6132596138b7565b60fd546001600160a01b0382811691161461328e5760fd80546001600160a01b0319166001600160a01b0383161790556132a7565b604051630ed1b8b360e31b815260040160405180910390fd5b610bb88261ffff1611156132ce57604051638bff87cf60e01b815260040160405180910390fd5b610104805468ffff00000000000000191667010000000000000061ffff851690810291909117909155604080519182526001600160a01b03831660208301527feecc969cd8da3140016e16b0603215de782af59713abfc5055d917b88f4a7b91910160405180910390a15050565b6101175460405163019c8a3b60e11b8152821515600482015260009182916001600160a01b0390911690630339147690602401602060405180830381865afa15801561338c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b09190615244565b9050600060fc600e0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561340a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342e9190615244565b9050612a4c6c0c9f2c9cd04674edea400000006134558369d3c21bcecceda10000006152ae565b8491906136ba565b6134656138b7565b6127108261ffff16111561348c576040516312ee160b60e11b815260040160405180910390fd5b60fc80546001600160a01b03199081166001600160a01b0389811691821790935561010587905561010480546dffffffffff0000000000000000001916600160481b61ffff88169081026dffffff0000000000000000000000191691909117600160581b62ffffff8816021790915561011c805484168a861690811790915561011d8054909416948816948517909355604080519283526020830193909352918101879052606081019290925260808201527fe15ba51cde2870a515ffc9834f5ac1bb010e259ba47eda16968c5bc5be83cbf69060a00160405180910390a1505050505050565b6000610b1d82613012565b61011b546001600160a01b031633146135aa5760405163f4a8e62160e01b815260040160405180910390fd5b6101045460ff166135ce57604051637869c16160e11b815260040160405180910390fd5b60405163770ee8e960e11b8152732364cc1d66f8fda3cecbcfe16797571aa5b992b99063ee1dd1d29061360e9060fc9088908890889088906004016155b0565b60006040518083038186803b15801561362657600080fd5b505af415801561363a573d6000803e3d6000fd5b5050505050505050565b61364c6138b7565b6001600160a01b0381166136b15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c87565b61156a81613f8d565b8282028115158415858304851417166136d257600080fd5b0492915050565b6001600160a01b03831661373b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c87565b6001600160a01b03821661379c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c87565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b82820281151584158583048514171661381557600080fd5b6001826001830304018115150290509392505050565b600054610100900460ff166138525760405162461bcd60e51b8152600401610c8790615644565b6118446142c0565b600054610100900460ff166138815760405162461bcd60e51b8152600401610c8790615644565b6118446142f0565b6138938282614323565b5050606580546001600160a01b0319166001600160a01b0392909216919091179055565b6098546001600160a01b031633146118445760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610c87565b6040516001600160a01b03831660248201526044810182905261397490849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614358565b505050565b6001600160a01b0383811660009081526034602090815260408083209386168352929052205460001981146113fe57818110156139f85760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610c87565b6113fe84848484036136d9565b6001600160a01b038316613a695760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c87565b6001600160a01b038216613acb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c87565b6001600160a01b03831660009081526033602052604090205481811015613b435760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c87565b6001600160a01b0380851660008181526033602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613ba39086815260200190565b60405180910390a36113fe565b600080806000198587098587029250828110838203039150508060001415613bea5760008411613bdf57600080fd5b508290049050610b02565b808411613bf657600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b613c6b61442a565b60ca805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60ca5460ff16156118445760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610c87565b6040516346a7281360e01b815260fc6004820152732364cc1d66f8fda3cecbcfe16797571aa5b992b9906346a728139060240160006040518083038186803b158015613d4657600080fd5b505af4158015613d5a573d6000803e3d6000fd5b5050604051630407b02360e41b815260fc600482015260009250829150732364cc1d66f8fda3cecbcfe16797571aa5b992b99063407b0230906024016040805180830381865af4158015613db2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd6919061549c565b6040516374a715bd60e11b815260fc600482015260248101839052604481018290529193509150600090732364cc1d66f8fda3cecbcfe16797571aa5b992b99063e94e2b7a90606401602060405180830381865af4158015613e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e609190615244565b604051634852d6c760e01b815260fc600482015260248101829052909150732364cc1d66f8fda3cecbcfe16797571aa5b992b990634852d6c79060440160006040518083038186803b158015613eb557600080fd5b505af4158015613ec9573d6000803e3d6000fd5b50505050505050565b6000613edd83613573565b905080613f1a5760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f53484152455360a81b6044820152606401610c87565b606554613f32906001600160a01b031633308661447c565b613f3c82826144b4565b60408051848152602081018390526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7910160405180910390a3610b1d838284614575565b609880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b613fe7613cb5565b60ca805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613c983390565b6000600160ff1b821061405c5760405162461bcd60e51b81526020600482015260086024820152674f766572666c6f7760c01b6044820152606401610c87565b5090565b600061406b83612994565b606554909150614086906001600160a01b031633308461447c565b61409082846144b4565b60408051828152602081018590526001600160a01b0384169133917fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7910160405180910390a3610b1d818484614575565b60006140ec84610b23565b9050336001600160a01b0383161461413c576001600160a01b0382166000908152603460209081526040808320338452909152902054600019811461413a5761413a833361171185856152cd565b505b6141478482856146c4565b6141518282614772565b60408051858152602081018390526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a4606554610b02906001600160a01b03168486613911565b6000336001600160a01b03831614614203576001600160a01b0382166000908152603460209081526040808320338452909152902054600019811461420157614201833361171188856152cd565b505b61420c84611bd5565b9050806142495760405162461bcd60e51b815260206004820152600b60248201526a5a45524f5f41535345545360a81b6044820152606401610c87565b6142548185856146c4565b61425e8285614772565b60408051828152602081018690526001600160a01b03808516929086169133917ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db910160405180910390a4606554610b02906001600160a01b03168483613911565b600054610100900460ff166142e75760405162461bcd60e51b8152600401610c8790615644565b61184433613f8d565b600054610100900460ff166143175760405162461bcd60e51b8152600401610c8790615644565b60ca805460ff19169055565b600054610100900460ff1661434a5760405162461bcd60e51b8152600401610c8790615644565b61435482826148a6565b5050565b60006143ad826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166148f49092919063ffffffff16565b80519091501561397457808060200190518101906143cb91906154d8565b6139745760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610c87565b60ca5460ff166118445760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610c87565b6040516001600160a01b03808516602483015283166044820152606481018290526113fe9085906323b872dd60e01b9060840161393d565b6001600160a01b03821661450a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610c87565b806035600082825461451c91906154c0565b90915550506001600160a01b0382166000818152603360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b61010554614581610953565b11156145a0576040516324d758c360e21b815260040160405180910390fd5b604051630407b02360e41b815260fc60048201526000908190732364cc1d66f8fda3cecbcfe16797571aa5b992b99063407b0230906024016040805180830381865af41580156145f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614618919061549c565b9092509050732364cc1d66f8fda3cecbcfe16797571aa5b992b96360c0872960fc8484614643610953565b6040516001600160e01b031960e087901b16815260048101949094526024840192909252604483015260648201526000608482015260a401602060405180830381865af4158015614698573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146bc91906154d8565b505050505050565b604051630407b02360e41b815260fc60048201526000908190732364cc1d66f8fda3cecbcfe16797571aa5b992b99063407b0230906024016040805180830381865af4158015614718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061473c919061549c565b9092509050732364cc1d66f8fda3cecbcfe16797571aa5b992b96360c0872960fc848489614768610953565b61464391906152cd565b6001600160a01b0382166147d25760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c87565b6001600160a01b038216600090815260336020526040902054818110156148465760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610c87565b6001600160a01b03831660008181526033602090815260408083208686039055603580548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600054610100900460ff166148cd5760405162461bcd60e51b8152600401610c8790615644565b81516148e0906036906020850190614a14565b508051613974906037906020840190614a14565b6060612a4c848460008585600080866001600160a01b0316858760405161491b919061568f565b60006040518083038185875af1925050503d8060008114614958576040519150601f19603f3d011682016040523d82523d6000602084013e61495d565b606091505b509150915061496e87838387614979565b979650505050505050565b606083156149e55782516149de576001600160a01b0385163b6149de5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c87565b5081612a4c565b612a4c83838151156149fa5781518083602001fd5b8060405162461bcd60e51b8152600401610c879190614afc565b828054614a209061525d565b90600052602060002090601f016020900481019282614a425760008555614a88565b82601f10614a5b57805160ff1916838001178555614a88565b82800160010185558215614a88579182015b82811115614a88578251825591602001919060010190614a6d565b5061405c9291505b8082111561405c5760008155600101614a90565b60005b83811015614abf578181015183820152602001614aa7565b838111156113fe5750506000910152565b60008151808452614ae8816020860160208601614aa4565b601f01601f19169290920160200192915050565b602081526000610b026020830184614ad0565b600060208284031215614b2157600080fd5b5035919050565b6001600160a01b038116811461156a57600080fd5b60008060408385031215614b5057600080fd5b8235614b5b81614b28565b946020939093013593505050565b60008083601f840112614b7b57600080fd5b50813567ffffffffffffffff811115614b9357600080fd5b602083019150836020828501011115614bab57600080fd5b9250929050565b8035614bbd81614b28565b919050565b6000806000806000806000806000898b03610140811215614be257600080fd5b8a3567ffffffffffffffff80821115614bfa57600080fd5b614c068e838f01614b69565b909c509a5060208d0135915080821115614c1f57600080fd5b50614c2c8d828e01614b69565b90995097505060408b0135614c4081614b28565b955060608b0135614c5081614b28565b945060808b0135614c6081614b28565b93506080609f1982011215614c7457600080fd5b5060a08a019150614c886101208b01614bb2565b90509295985092959850929598565b600080600060608486031215614cac57600080fd5b8335614cb781614b28565b92506020840135614cc781614b28565b929592945050506040919091013590565b61ffff8116811461156a57600080fd5b600080600060608486031215614cfd57600080fd5b833563ffffffff81168114614d1157600080fd5b92506020840135614d2181614cd8565b91506040840135614d3181614cd8565b809150509250925092565b600060208284031215614d4e57600080fd5b8135610b0281614b28565b6001600160801b038116811461156a57600080fd5b600080600080600080600080610100898b031215614d8b57600080fd5b8835614d9681614cd8565b97506020890135614da681614cd8565b96506040890135614db681614cd8565b95506060890135614dc681614d59565b94506080890135614dd681614d59565b935060a0890135614de681614d59565b925060c0890135614df681614d59565b915060e0890135614e0681614d59565b809150509295985092959890939650565b60008060008060808587031215614e2d57600080fd5b8435614e3881614b28565b93506020850135614e4881614b28565b9250604085013591506060850135614e5f81614b28565b939692955090935050565b60008060408385031215614e7d57600080fd5b823591506020830135614e8f81614b28565b809150509250929050565b600080600060608486031215614eaf57600080fd5b833592506020840135614ec181614b28565b91506040840135614d3181614b28565b60008060408385031215614ee457600080fd5b8235614eef81614b28565b91506020830135614e8f81614b28565b60008060408385031215614f1257600080fd5b8235614eef81614cd8565b801515811461156a57600080fd5b600060208284031215614f3d57600080fd5b8135610b0281614f1d565b60008060008060008060c08789031215614f6157600080fd5b8635614f6c81614b28565b95506020870135614f7c81614b28565b9450604087013593506060870135614f9381614b28565b92506080870135614fa381614cd8565b915060a087013562ffffff81168114614fbb57600080fd5b809150509295509295509295565b634e487b7160e01b600052604160045260246000fd5b6040516101e0810167ffffffffffffffff8111828210171561500357615003614fc9565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561503257615032614fc9565b604052919050565b600067ffffffffffffffff82111561505457615054614fc9565b5060051b60200190565b600082601f83011261506f57600080fd5b8135602061508461507f8361503a565b615009565b82815260059290921b840181019181810190868411156150a357600080fd5b8286015b848110156150be57803583529183019183016150a7565b509695505050505050565b600082601f8301126150da57600080fd5b813567ffffffffffffffff8111156150f4576150f4614fc9565b615107601f8201601f1916602001615009565b81815284602083860101111561511c57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561514f57600080fd5b843567ffffffffffffffff8082111561516757600080fd5b818701915087601f83011261517b57600080fd5b8135602061518b61507f8361503a565b82815260059290921b8401810191818101908b8411156151aa57600080fd5b948201945b838610156151d15785356151c281614b28565b825294820194908201906151af565b985050880135925050808211156151e757600080fd5b6151f38883890161505e565b9450604087013591508082111561520957600080fd5b6152158883890161505e565b9350606087013591508082111561522b57600080fd5b50615238878288016150c9565b91505092959194509250565b60006020828403121561525657600080fd5b5051919050565b600181811c9082168061527157607f821691505b6020821081141561529257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156152c8576152c8615298565b500290565b6000828210156152df576152df615298565b500390565b8051614bbd81614b28565b60006020828403121561530157600080fd5b8151610b0281614b28565b60006020828403121561531e57600080fd5b6040516020810181811067ffffffffffffffff8211171561534157615341614fc9565b6040529151825250919050565b8051614bbd81614d59565b805164ffffffffff81168114614bbd57600080fd5b8051614bbd81614cd8565b60006101e0828403121561538c57600080fd5b615394614fdf565b61539e848461530c565b81526153ac6020840161534e565b60208201526153bd6040840161534e565b60408201526153ce6060840161534e565b60608201526153df6080840161534e565b60808201526153f060a0840161534e565b60a082015261540160c08401615359565b60c082015261541260e0840161536e565b60e08201526101006154258185016152e4565b908201526101206154378482016152e4565b908201526101406154498482016152e4565b9082015261016061545b8482016152e4565b9082015261018061546d84820161534e565b908201526101a061547f84820161534e565b908201526101c061549184820161534e565b908201529392505050565b600080604083850312156154af57600080fd5b505080516020909101519092909150565b600082198211156154d3576154d3615298565b500190565b6000602082840312156154ea57600080fd5b8151610b0281614f1d565b600080821280156001600160ff1b038490038513161561551757615517615298565b600160ff1b839003841281161561553057615530615298565b50500190565b60008083128015600160ff1b85018412161561555457615554615298565b6001600160ff1b038401831381161561556f5761556f615298565b50500390565b600081518084526020808501945080840160005b838110156155a557815187529582019590820190600101615589565b509495945050505050565b600060a08201878352602060a08185015281885180845260c086019150828a01935060005b818110156155fa5784516001600160a01b0316835293830193918301916001016155d5565b5050848103604086015261560e8189615575565b9250505082810360608401526156248186615575565b905082810360808401526156388185614ad0565b98975050505050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516156a1818460208701614aa4565b919091019291505056fea26469706673582212208ac096b9b38d42a7e84c26720eb20ac761f82f759e15d3f82af2e5b796d3e2dd64736f6c634300080a0033