From f1743a5eac594d7c95da32d6ae5fa86199b45b3e Mon Sep 17 00:00:00 2001 From: The3D Date: Wed, 8 Jul 2020 17:26:50 +0200 Subject: [PATCH] Fixed liquidation tests --- contracts/lendingpool/LendingPool.sol | 2 + .../LendingPoolLiquidationManager.sol | 18 +- contracts/libraries/GenericLogic.sol | 8 +- contracts/libraries/UniversalERC20.sol | 8 +- contracts/misc/AaveProtocolTestHelpers.sol | 2 +- contracts/misc/WalletBalanceProvider.sol | 2 +- package-lock.json | 6 + package.json | 1 + test/__setup.spec.ts | 4 +- test/atoken-transfer.spec.ts | 2 +- test/helpers/utils/calculations.ts | 10 +- test/liquidation-atoken.spec.ts | 103 ++++----- test/liquidation-underlying.spec.ts | 195 +++++++++--------- test/scenario.spec.ts | 2 +- types/ATokenFactory.ts | 2 +- types/AaveProtocolTestHelpersFactory.ts | 2 +- types/GenericLogicFactory.ts | 2 +- types/LendingPool.d.ts | 12 +- types/LendingPoolConfiguratorFactory.ts | 2 +- types/LendingPoolFactory.ts | 7 +- types/LendingPoolLiquidationManager.d.ts | 30 --- types/LendingPoolLiquidationManagerFactory.ts | 59 +----- types/ReserveLogicFactory.ts | 2 +- types/StableDebtTokenFactory.ts | 2 +- types/VariableDebtTokenFactory.ts | 2 +- types/WalletBalanceProviderFactory.ts | 2 +- 26 files changed, 221 insertions(+), 266 deletions(-) diff --git a/contracts/lendingpool/LendingPool.sol b/contracts/lendingpool/LendingPool.sol index 898a5384..c5cbc52a 100644 --- a/contracts/lendingpool/LendingPool.sol +++ b/contracts/lendingpool/LendingPool.sol @@ -731,6 +731,7 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable { external view returns ( + uint256 decimals, uint256 ltv, uint256 liquidationThreshold, uint256 liquidationBonus, @@ -746,6 +747,7 @@ contract LendingPool is ReentrancyGuard, VersionedInitializable { CoreLibrary.ReserveData storage reserve = reserves[_reserve]; return ( + reserve.decimals, reserve.baseLTVasCollateral, reserve.liquidationThreshold, reserve.liquidationBonus, diff --git a/contracts/lendingpool/LendingPoolLiquidationManager.sol b/contracts/lendingpool/LendingPoolLiquidationManager.sol index d0468c53..bf9d9d79 100644 --- a/contracts/lendingpool/LendingPoolLiquidationManager.sol +++ b/contracts/lendingpool/LendingPoolLiquidationManager.sol @@ -10,10 +10,11 @@ import "../libraries/openzeppelin-upgradeability/VersionedInitializable.sol"; import "../configuration/LendingPoolAddressesProvider.sol"; import "../tokenization/AToken.sol"; +import "../tokenization/interfaces/IStableDebtToken.sol"; +import "../tokenization/interfaces/IVariableDebtToken.sol"; import "../libraries/CoreLibrary.sol"; import "../libraries/WadRayMath.sol"; import "../interfaces/IPriceOracleGetter.sol"; -import {IFeeProvider} from "../interfaces/IFeeProvider.sol"; import "../libraries/EthAddressLib.sol"; import "../libraries/GenericLogic.sol"; import "../libraries/UserLogic.sol"; @@ -120,13 +121,12 @@ contract LendingPoolLiquidationManager is ReentrancyGuard, VersionedInitializabl ) external payable returns (uint256, string memory) { CoreLibrary.ReserveData storage principalReserve = reserves[_reserve]; CoreLibrary.ReserveData storage collateralReserve = reserves[_collateral]; - CoreLibrary.UserReserveData storage userCollateral = usersReserveData[msg - .sender][_collateral]; + CoreLibrary.UserReserveData storage userCollateral = usersReserveData[_user][_collateral]; LiquidationCallLocalVars memory vars; (, , , , , vars.healthFactor) = GenericLogic.calculateUserAccountData( - msg.sender, + _user, reserves, usersReserveData, reservesList, @@ -140,7 +140,7 @@ contract LendingPoolLiquidationManager is ReentrancyGuard, VersionedInitializabl ); } - vars.userCollateralBalance = IERC20(_collateral).balanceOf(_user); + vars.userCollateralBalance = IERC20(collateralReserve.aTokenAddress).balanceOf(_user); //if _user hasn't deposited this specific collateral, nothing can be liquidated if (vars.userCollateralBalance == 0) { @@ -213,6 +213,8 @@ contract LendingPoolLiquidationManager is ReentrancyGuard, VersionedInitializabl } } + console.log("Balance before liquidation is %s", IERC20(principalReserve.stableDebtTokenAddress).balanceOf(_user)); + //TODO Burn debt tokens if(vars.userVariableDebt >= vars.actualAmountToLiquidate){ IVariableDebtToken(principalReserve.variableDebtTokenAddress).burn(_user, vars.actualAmountToLiquidate); @@ -222,6 +224,8 @@ contract LendingPoolLiquidationManager is ReentrancyGuard, VersionedInitializabl IStableDebtToken(principalReserve.stableDebtTokenAddress).burn(_user, vars.actualAmountToLiquidate.sub(vars.userVariableDebt)); } + console.log("Balance after liquidation is %s", IERC20(principalReserve.stableDebtTokenAddress).balanceOf(_user)); + vars.collateralAtoken = AToken(collateralReserve.aTokenAddress); //if liquidator reclaims the aToken, he receives the equivalent atoken amount @@ -235,9 +239,13 @@ contract LendingPoolLiquidationManager is ReentrancyGuard, VersionedInitializabl //otherwise receives the underlying asset //burn the equivalent amount of atoken vars.collateralAtoken.burnOnLiquidation(_user, vars.maxCollateralToLiquidate); + console.log("Burned %s collateral tokens, collateral %s",vars.maxCollateralToLiquidate, _collateral); + IERC20(_collateral).universalTransfer(msg.sender, vars.maxCollateralToLiquidate); } + console.log("Transferring principal, amount %s",vars.actualAmountToLiquidate); + //transfers the principal currency to the pool IERC20(_reserve).universalTransferFromSenderToThis(vars.actualAmountToLiquidate, true); diff --git a/contracts/libraries/GenericLogic.sol b/contracts/libraries/GenericLogic.sol index 72fcf99f..995d94e6 100644 --- a/contracts/libraries/GenericLogic.sol +++ b/contracts/libraries/GenericLogic.sol @@ -11,6 +11,7 @@ import {WadRayMath} from "./WadRayMath.sol"; import "../interfaces/IPriceOracleGetter.sol"; import {IFeeProvider} from "../interfaces/IFeeProvider.sol"; +import '@nomiclabs/buidler/console.sol'; /** * @title GenericLogic library @@ -150,7 +151,7 @@ library GenericLogic { CalculateUserAccountDataVars memory vars; for (vars.i = 0; vars.i < _reserves.length; vars.i++) { - + vars.currentReserveAddress = _reserves[vars.i]; CoreLibrary.ReserveData storage currentReserve = _reservesData[vars @@ -236,7 +237,10 @@ library GenericLogic { uint256 borrowBalanceETH, uint256 totalFeesETH, uint256 liquidationThreshold - ) internal pure returns (uint256) { + ) internal view returns (uint256) { + + console.log("Borrow balance ETH is %s", borrowBalanceETH); + if (borrowBalanceETH == 0) return uint256(-1); return diff --git a/contracts/libraries/UniversalERC20.sol b/contracts/libraries/UniversalERC20.sol index e8470429..4a7259cb 100644 --- a/contracts/libraries/UniversalERC20.sol +++ b/contracts/libraries/UniversalERC20.sol @@ -4,6 +4,7 @@ pragma solidity ^0.6.8; import '@openzeppelin/contracts/math/SafeMath.sol'; import '@openzeppelin/contracts/token/ERC20/IERC20.sol'; import '@openzeppelin/contracts/token/ERC20/SafeERC20.sol'; +import '@nomiclabs/buidler/console.sol'; /** * @title UniversalERC20 library @@ -37,8 +38,13 @@ library UniversalERC20 { } if (isETH(token)) { + console.log("transfer of ETH, value %s", amount); + console.log("Balance is %s", address(this).balance); + (bool result, ) = payable(to).call{value: amount, gas: DEFAULT_TRANSFER_GAS}(''); + console.log("Transfer done, result %s", result); require(result, 'ETH_TRANSFER_FAILED'); + } else { token.safeTransfer(to, amount); } @@ -166,6 +172,6 @@ library UniversalERC20 { * @return boolean **/ function isETH(IERC20 token) internal pure returns (bool) { - return (address(token) == address(ZERO_ADDRESS) || address(token) == address(ETH_ADDRESS)); + return (address(token) == address(ETH_ADDRESS)); } } diff --git a/contracts/misc/AaveProtocolTestHelpers.sol b/contracts/misc/AaveProtocolTestHelpers.sol index a16c8039..ac8ae814 100644 --- a/contracts/misc/AaveProtocolTestHelpers.sol +++ b/contracts/misc/AaveProtocolTestHelpers.sol @@ -36,7 +36,7 @@ contract AaveProtocolTestHelpers { address[] memory reserves = pool.getReserves(); TokenData[] memory aTokens = new TokenData[](reserves.length); for (uint256 i = 0; i < reserves.length; i++) { - (,,,,address aTokenAddress,,,,,) = pool.getReserveConfigurationData(reserves[i]); + (,,,,,address aTokenAddress,,,,,) = pool.getReserveConfigurationData(reserves[i]); aTokens[i] = TokenData({ symbol: AToken(aTokenAddress).symbol(), tokenAddress: aTokenAddress diff --git a/contracts/misc/WalletBalanceProvider.sol b/contracts/misc/WalletBalanceProvider.sol index f22927f7..b4934a57 100644 --- a/contracts/misc/WalletBalanceProvider.sol +++ b/contracts/misc/WalletBalanceProvider.sol @@ -92,7 +92,7 @@ contract WalletBalanceProvider { uint256[] memory balances = new uint256[](reserves.length); for (uint256 j = 0; j < reserves.length; j++) { - (, , , , , , , , bool isActive,) = pool.getReserveConfigurationData(reserves[j]); + (, , , , , , , , , bool isActive,) = pool.getReserveConfigurationData(reserves[j]); if (!isActive) { balances[j] = 0; diff --git a/package-lock.json b/package-lock.json index 2bb88293..dd2871a1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2162,6 +2162,12 @@ "integrity": "sha512-SubOtaSI2AILWTWe2j0c6i2yFT/f9J6UBjeVGDuwDiPLkF/U5+/eTWUE3sbCZ1KgcPF6UJsDVYbIxaYA097MQA==", "dev": true }, + "chai-bn": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/chai-bn/-/chai-bn-0.2.1.tgz", + "integrity": "sha512-01jt2gSXAw7UYFPT5K8d7HYjdXj2vyeIuE+0T/34FWzlNcVbs1JkPxRu7rYMfQnJhrHT8Nr6qjSf5ZwwLU2EYg==", + "dev": true + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", diff --git a/package.json b/package.json index 495caa3e..0411560f 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "buidler-typechain": "0.1.1", "chai": "4.2.0", "chai-bignumber": "3.0.0", + "chai-bn": "^0.2.1", "ethereum-waffle": "2.5.1", "ethers": "4.0.47", "husky": "^4.2.5", diff --git a/test/__setup.spec.ts b/test/__setup.spec.ts index 0bb8586e..6df5a85f 100644 --- a/test/__setup.spec.ts +++ b/test/__setup.spec.ts @@ -270,8 +270,6 @@ const initReserves = async ( ] ) - console.log(`Debt tokens for ${assetSymbol}: stable ${stableDebtToken.address} variable ${variableDebtToken.address}`) - if (process.env.POOL === AavePools.secondary) { if (assetSymbol.search("UNI") === -1) { assetSymbol = `Uni${assetSymbol}`; @@ -525,7 +523,7 @@ const buildTestEnv = async (deployer: Signer, secondaryWallet: Signer) => { fallbackOracle.address, ]); await waitForTx( - await addressesProvider.setPriceOracle(chainlinkProxyPriceProvider.address) + await addressesProvider.setPriceOracle(fallbackOracle.address) ); const lendingRateOracle = await deployLendingRateOracle(); diff --git a/test/atoken-transfer.spec.ts b/test/atoken-transfer.spec.ts index ab9b20bf..e57e282b 100644 --- a/test/atoken-transfer.spec.ts +++ b/test/atoken-transfer.spec.ts @@ -175,7 +175,7 @@ makeSuite("AToken: Transfer", (testEnv: TestEnv) => { const {users, pool, aDai, dai} = testEnv; await pool .connect(users[1].signer) - .repay(MOCK_ETH_ADDRESS, MAX_UINT_AMOUNT, users[1].address, users[1].address, { + .repay(MOCK_ETH_ADDRESS, MAX_UINT_AMOUNT, RateMode.Stable, users[1].address, { value: ethers.utils.parseEther("1"), }); diff --git a/test/helpers/utils/calculations.ts b/test/helpers/utils/calculations.ts index 244a8568..c2b2f68e 100644 --- a/test/helpers/utils/calculations.ts +++ b/test/helpers/utils/calculations.ts @@ -326,8 +326,6 @@ export const calcExpectedReserveDataAfterBorrow = ( ): ReserveData => { const expectedReserveData = {}; - console.log('Computing borrow, amountBorrowed: ', amountBorrowed, ' Rate mode: ', borrowRateMode); - expectedReserveData.address = reserveDataBeforeAction.address; const amountBorrowedBN = new BigNumber(amountBorrowed); @@ -419,8 +417,7 @@ export const calcExpectedReserveDataAfterRepay = ( txTimestamp: BigNumber, currentTimestamp: BigNumber ): ReserveData => { - console.log('Computing repay, amount repaid: ', amountRepaid, ' Rate mode: ', borrowRateMode); - + const expectedReserveData: ReserveData = {}; expectedReserveData.address = reserveDataBeforeAction.address; @@ -766,7 +763,6 @@ export const calcExpectedReserveDataAfterSwapRateMode = ( rateMode: string, txTimestamp: BigNumber ): ReserveData => { - console.log('Computing swap, Rate mode: ', rateMode); const expectedReserveData: ReserveData = {}; @@ -1246,7 +1242,7 @@ const calcExpectedVariableDebtUserIndex = ( return calcExpectedReserveNormalizedDebt(reserveDataBeforeAction, currentTimestamp); }; -const calcExpectedVariableDebtTokenBalance = ( +export const calcExpectedVariableDebtTokenBalance = ( reserveDataBeforeAction: ReserveData, userDataBeforeAction: UserReserveData, currentTimestamp: BigNumber @@ -1266,7 +1262,7 @@ const calcExpectedVariableDebtTokenBalance = ( .rayToWad(); }; -const calcExpectedStableDebtTokenBalance = ( +export const calcExpectedStableDebtTokenBalance = ( userDataBeforeAction: UserReserveData, currentTimestamp: BigNumber ) => { diff --git a/test/liquidation-atoken.spec.ts b/test/liquidation-atoken.spec.ts index 0b6d4e4c..8692ef37 100644 --- a/test/liquidation-atoken.spec.ts +++ b/test/liquidation-atoken.spec.ts @@ -5,8 +5,12 @@ import {APPROVAL_AMOUNT_LENDING_POOL, MOCK_ETH_ADDRESS, oneEther} from '../helpe import {convertToCurrencyDecimals} from '../helpers/contracts-helpers'; import {makeSuite} from './helpers/make-suite'; import {ProtocolErrors, RateMode} from '../helpers/types'; +import { calcExpectedVariableDebtTokenBalance } from './helpers/utils/calculations'; +import { getUserData, getReserveData } from './helpers/utils/helpers'; -const {expect} = require('chai'); +const chai = require('chai'); +chai.use(require('chai-bignumber')()); +const {expect} = chai; makeSuite('LendingPool liquidation - liquidator receiving aToken', (testEnv) => { const { @@ -42,7 +46,6 @@ makeSuite('LendingPool liquidation - liquidator receiving aToken', (testEnv) => }); //user 2 borrows - const userGlobalData = await pool.getUserAccountData(borrower.address); const daiPrice = await oracle.getAssetPrice(dai.address); @@ -59,7 +62,6 @@ makeSuite('LendingPool liquidation - liquidator receiving aToken', (testEnv) => .borrow(dai.address, amountDAIToBorrow, RateMode.Variable, '0'); const userGlobalDataAfter = await pool.getUserAccountData(borrower.address); - console.log('userGlobalDataAfter.healthFactor', userGlobalDataAfter.healthFactor.toString()); expect(userGlobalDataAfter.currentLiquidationThreshold).to.be.bignumber.equal( '80', @@ -78,18 +80,14 @@ makeSuite('LendingPool liquidation - liquidator receiving aToken', (testEnv) => const daiPrice = await oracle.getAssetPrice(dai.address); - //halving the price of ETH - means doubling the DAIETH exchange rate - console.log('DAI price before', daiPrice.toString()); - await oracle.setAssetPrice( dai.address, new BigNumber(daiPrice.toString()).multipliedBy(1.15).toFixed(0) ); - console.log('DAI price after', (await oracle.getAssetPrice(dai.address)).toString()); const userGlobalData = await pool.getUserAccountData(borrower.address); - expect(userGlobalData.healthFactor).to.be.bignumber.lt(oneEther.toFixed(0), INVALID_HF); + expect(userGlobalData.healthFactor.toString()).to.be.bignumber.lt(oneEther, INVALID_HF); }); it('LIQUIDATION - Tries to liquidate a different currency than the loan principal', async () => { @@ -107,20 +105,17 @@ makeSuite('LendingPool liquidation - liquidator receiving aToken', (testEnv) => ).revertedWith(USER_DID_NOT_BORROW_SPECIFIED); }); - it( - 'LIQUIDATION - Tries to liquidate a different ' + 'collateral than the borrower collateral', - async () => { - const {pool, dai, users} = testEnv; - const borrower = users[1]; + it('LIQUIDATION - Tries to liquidate a different collateral than the borrower collateral', async () => { + const {pool, dai, users} = testEnv; + const borrower = users[1]; - await expect( - pool.liquidationCall(dai.address, dai.address, borrower.address, oneEther.toString(), true) - ).revertedWith(INVALID_COLLATERAL_TO_LIQUIDATE); - } - ); + await expect( + pool.liquidationCall(dai.address, dai.address, borrower.address, oneEther.toString(), true) + ).revertedWith(INVALID_COLLATERAL_TO_LIQUIDATE); + }); it('LIQUIDATION - Liquidates the borrow', async () => { - const {pool, dai, users, addressesProvider, oracle} = testEnv; + const {pool, dai, users, oracle} = testEnv; const borrower = users[1]; //mints dai to the caller @@ -130,17 +125,16 @@ makeSuite('LendingPool liquidation - liquidator receiving aToken', (testEnv) => //approve protocol to access depositor wallet await dai.approve(pool.address, APPROVAL_AMOUNT_LENDING_POOL); - const userReserveDataBefore = await pool.getUserReserveData(dai.address, borrower.address); - - const daiReserveDataBefore = await pool.getReserveData(dai.address); + const daiReserveDataBefore = await getReserveData(pool, dai.address); const ethReserveDataBefore = await pool.getReserveData(MOCK_ETH_ADDRESS); - const amountToLiquidate = new BigNumber(userReserveDataBefore.currentStableDebt.toString()) - .plus(userReserveDataBefore.currentVariableDebt.toString()) + const userReserveDataBefore = await getUserData(pool, dai.address, borrower.address); + + const amountToLiquidate = new BigNumber(userReserveDataBefore.currentVariableDebt.toString()) .div(2) .toFixed(0); - await pool.liquidationCall( + const tx = await pool.liquidationCall( MOCK_ETH_ADDRESS, dai.address, borrower.address, @@ -155,15 +149,15 @@ makeSuite('LendingPool liquidation - liquidator receiving aToken', (testEnv) => const daiReserveDataAfter = await pool.getReserveData(dai.address); const ethReserveDataAfter = await pool.getReserveData(MOCK_ETH_ADDRESS); - const feeAddress = await addressesProvider.getTokenDistributor(); - - const feeAddressBalance = await BRE.ethers.provider.getBalance(feeAddress); - const collateralPrice = (await oracle.getAssetPrice(MOCK_ETH_ADDRESS)).toString(); const principalPrice = (await oracle.getAssetPrice(dai.address)).toString(); - const collateralDecimals = (await pool.getReserveDecimals(MOCK_ETH_ADDRESS)).toString(); - const principalDecimals = (await pool.getReserveDecimals(dai.address)).toString(); + const collateralDecimals = ( + await pool.getReserveConfigurationData(MOCK_ETH_ADDRESS) + ).decimals.toString(); + const principalDecimals = ( + await pool.getReserveConfigurationData(dai.address) + ).decimals.toString(); const expectedCollateralLiquidated = new BigNumber(principalPrice) .times(new BigNumber(amountToLiquidate).times(105)) @@ -171,15 +165,26 @@ makeSuite('LendingPool liquidation - liquidator receiving aToken', (testEnv) => .div(new BigNumber(collateralPrice).times(new BigNumber(10).pow(principalDecimals))) .decimalPlaces(0, BigNumber.ROUND_DOWN); - expect(userGlobalDataAfter.healthFactor).to.be.bignumber.gt( + if(!tx.blockNumber){ + expect(false, "Invalid block number"); + return; + } + + const txTimestamp = new BigNumber((await BRE.ethers.provider.getBlock(tx.blockNumber)).timestamp); + + const variableDebtBeforeTx = calcExpectedVariableDebtTokenBalance( + daiReserveDataBefore, + userReserveDataBefore, + txTimestamp + ); + + expect(userGlobalDataAfter.healthFactor.toString()).to.be.bignumber.gt( oneEther.toFixed(0), 'Invalid health factor' ); - expect(feeAddressBalance).to.be.bignumber.gt('0'); - expect(userReserveDataAfter.currentVariableDebt).to.be.bignumber.almostEqual( - new BigNumber(userReserveDataBefore.currentVariableDebt.toString()) + new BigNumber(variableDebtBeforeTx) .minus(amountToLiquidate) .toFixed(0), 'Invalid user borrow balance after liquidation' @@ -199,8 +204,7 @@ makeSuite('LendingPool liquidation - liquidator receiving aToken', (testEnv) => }); it( - 'User 3 deposits 1000 USDC, user 4 1 ETH,' + - ' user 4 borrows - drops HF, liquidates the borrow', + 'User 3 deposits 1000 USDC, user 4 1 ETH, user 4 borrows - drops HF, liquidates the borrow', async () => { const {users, pool, usdc, oracle, addressesProvider} = testEnv; const depositor = users[3]; @@ -262,7 +266,6 @@ makeSuite('LendingPool liquidation - liquidator receiving aToken', (testEnv) => const ethReserveDataBefore = await pool.getReserveData(MOCK_ETH_ADDRESS); const amountToLiquidate = new BigNumber(userReserveDataBefore.currentStableDebt.toString()) - .plus(userReserveDataBefore.currentStableDebt.toString()) .div(2) .toFixed(0); @@ -281,15 +284,15 @@ makeSuite('LendingPool liquidation - liquidator receiving aToken', (testEnv) => const usdcReserveDataAfter = await pool.getReserveData(usdc.address); const ethReserveDataAfter = await pool.getReserveData(MOCK_ETH_ADDRESS); - const feeAddress = await addressesProvider.getTokenDistributor(); - - const feeAddressBalance = await BRE.ethers.provider.getBalance(feeAddress); - const collateralPrice = (await oracle.getAssetPrice(MOCK_ETH_ADDRESS)).toString(); const principalPrice = (await oracle.getAssetPrice(usdc.address)).toString(); - const collateralDecimals = (await pool.getReserveDecimals(MOCK_ETH_ADDRESS)).toString(); - const principalDecimals = (await pool.getReserveDecimals(usdc.address)).toString(); + const collateralDecimals = ( + await pool.getReserveConfigurationData(MOCK_ETH_ADDRESS) + ).decimals.toString(); + const principalDecimals = ( + await pool.getReserveConfigurationData(usdc.address) + ).decimals.toString(); const expectedCollateralLiquidated = new BigNumber(principalPrice) .times(new BigNumber(amountToLiquidate).times(105)) @@ -297,21 +300,19 @@ makeSuite('LendingPool liquidation - liquidator receiving aToken', (testEnv) => .div(new BigNumber(collateralPrice).times(new BigNumber(10).pow(principalDecimals))) .decimalPlaces(0, BigNumber.ROUND_DOWN); - expect(userGlobalDataAfter.healthFactor).to.be.bignumber.gt( + expect(userGlobalDataAfter.healthFactor.toString()).to.be.bignumber.gt( oneEther.toFixed(0), 'Invalid health factor' ); - expect(feeAddressBalance).to.be.bignumber.gt('0'); - - expect(userReserveDataAfter.principalBorrowBalance).to.be.bignumber.almostEqual( - new BigNumber(userReserveDataBefore.currentBorrowBalance.toString()) + expect(userReserveDataAfter.currentStableDebt.toString()).to.be.bignumber.almostEqual( + new BigNumber(userReserveDataBefore.currentStableDebt.toString()) .minus(amountToLiquidate) .toFixed(0), 'Invalid user borrow balance after liquidation' ); - - expect(usdcReserveDataAfter.availableLiquidity).to.be.bignumber.almostEqual( + + expect(usdcReserveDataAfter.availableLiquidity.toString()).to.be.bignumber.almostEqual( new BigNumber(usdcReserveDataBefore.availableLiquidity.toString()) .plus(amountToLiquidate) .toFixed(0), diff --git a/test/liquidation-underlying.spec.ts b/test/liquidation-underlying.spec.ts index 820e1329..d7137992 100644 --- a/test/liquidation-underlying.spec.ts +++ b/test/liquidation-underlying.spec.ts @@ -6,6 +6,8 @@ import {convertToCurrencyDecimals} from '../helpers/contracts-helpers'; import {makeSuite} from './helpers/make-suite'; import {ProtocolErrors, RateMode} from '../helpers/types'; import {borrow} from './helpers/actions'; +import {calcExpectedStableDebtTokenBalance} from './helpers/utils/calculations'; +import { getUserData } from './helpers/utils/helpers'; const chai = require('chai'); chai.use(require('chai-bignumber')()); @@ -115,34 +117,31 @@ makeSuite('LendingPool liquidation - liquidator receiving the underlying asset', }); it('LIQUIDATION - Liquidates the borrow', async () => { - const {dai, users, pool, oracle, addressesProvider} = testEnv; + const {dai, users, pool, oracle} = testEnv; const liquidator = users[3]; const borrower = users[1]; - //mints dai to the caller - await dai.mint(await convertToCurrencyDecimals(dai.address, '1000')); + //mints dai to the liquidator + await dai.connect(liquidator.signer).mint(await convertToCurrencyDecimals(dai.address, '1000')); - //approve protocol to access depositor wallet + //approve protocol to access the liquidator wallet await dai.connect(liquidator.signer).approve(pool.address, APPROVAL_AMOUNT_LENDING_POOL); - const userReserveDataBefore: any = await pool.getUserReserveData(dai.address, borrower.address); const daiReserveDataBefore: any = await pool.getReserveData(dai.address); const ethReserveDataBefore: any = await pool.getReserveData(MOCK_ETH_ADDRESS); - const amountToLiquidate = new BigNumber(userReserveDataBefore.currentBorrowBalance) + const userReserveDataBefore: any = await getUserData(pool, dai.address, borrower.address); + + const amountToLiquidate = new BigNumber(userReserveDataBefore.currentStableDebt) .div(2) .toFixed(0); - await pool.liquidationCall( - MOCK_ETH_ADDRESS, - dai.address, - borrower.address, - amountToLiquidate, - false - ); + const tx = await pool + .connect(liquidator.signer) + .liquidationCall(MOCK_ETH_ADDRESS, dai.address, borrower.address, amountToLiquidate, false); - const userReserveDataAfter: any = await pool.getUserReserveData(dai.address, borrower.address); + const userReserveDataAfter: any = await getUserData(pool, dai.address, borrower.address); const daiReserveDataAfter: any = await pool.getReserveData(dai.address); const ethReserveDataAfter: any = await pool.getReserveData(MOCK_ETH_ADDRESS); @@ -150,8 +149,12 @@ makeSuite('LendingPool liquidation - liquidator receiving the underlying asset', const collateralPrice = await oracle.getAssetPrice(MOCK_ETH_ADDRESS); const principalPrice = await oracle.getAssetPrice(dai.address); - const collateralDecimals = await pool.getReserveDecimals(MOCK_ETH_ADDRESS); - const principalDecimals = await pool.getReserveDecimals(dai.address); + const collateralDecimals = ( + await pool.getReserveConfigurationData(MOCK_ETH_ADDRESS) + ).decimals.toString(); + const principalDecimals = ( + await pool.getReserveConfigurationData(dai.address) + ).decimals.toString(); const expectedCollateralLiquidated = new BigNumber(principalPrice.toString()) .times(new BigNumber(amountToLiquidate).times(105)) @@ -162,29 +165,24 @@ makeSuite('LendingPool liquidation - liquidator receiving the underlying asset', .div(100) .decimalPlaces(0, BigNumber.ROUND_DOWN); - const expectedFeeLiquidated = new BigNumber(principalPrice.toString()) - .times(new BigNumber(userReserveDataBefore.originationFee).times(105)) - .times(new BigNumber(10).pow(collateralDecimals)) - .div( - new BigNumber(collateralPrice.toString()).times(new BigNumber(10).pow(principalDecimals)) - ) - .div(100) - .decimalPlaces(0, BigNumber.ROUND_DOWN); - - const feeAddress = await addressesProvider.getTokenDistributor(); - - const feeAddressBalance = await BRE.ethers.provider.getBalance(feeAddress); - - expect(userReserveDataAfter.originationFee.toString()).to.be.bignumber.eq( - '0', - 'Origination fee should be repaid' + if (!tx.blockNumber) { + expect(false, 'Invalid block number'); + return; + } + const txTimestamp = new BigNumber( + (await BRE.ethers.provider.getBlock(tx.blockNumber)).timestamp ); - expect(feeAddressBalance).to.be.bignumber.gt('0'); + const stableDebtBeforeTx = calcExpectedStableDebtTokenBalance( + userReserveDataBefore, + txTimestamp.plus(2) + ); - expect(userReserveDataAfter.principalBorrowBalance.toString()).to.be.bignumber.almostEqual( - new BigNumber(userReserveDataBefore.currentBorrowBalance).minus(amountToLiquidate).toFixed(0), - 'Invalid user borrow balance after liquidation' + console.log("debt: ", stableDebtBeforeTx.toFixed(), userReserveDataBefore.currentStableDebt.toFixed(), userReserveDataAfter.currentStableDebt.toString()) + + expect(userReserveDataAfter.currentStableDebt.toString()).to.be.bignumber.almostEqual( + new BigNumber(stableDebtBeforeTx).minus(amountToLiquidate).toFixed(0), + 'Invalid user debt after liquidation' ); expect(daiReserveDataAfter.availableLiquidity.toString()).to.be.bignumber.almostEqual( @@ -192,9 +190,10 @@ makeSuite('LendingPool liquidation - liquidator receiving the underlying asset', 'Invalid principal available liquidity' ); + console.log('eth liquidity: ', daiReserveDataAfter.availableLiquidity.toString()); + expect(ethReserveDataAfter.availableLiquidity.toString()).to.be.bignumber.almostEqual( new BigNumber(ethReserveDataBefore.availableLiquidity) - .minus(expectedFeeLiquidated) .minus(expectedCollateralLiquidated) .toFixed(0), 'Invalid collateral available liquidity' @@ -208,7 +207,6 @@ makeSuite('LendingPool liquidation - liquidator receiving the underlying asset', const borrower = users[4]; const liquidator = users[5]; - //mints USDC to depositor await usdc .connect(depositor.signer) @@ -236,32 +234,47 @@ makeSuite('LendingPool liquidation - liquidator receiving the underlying asset', const amountUSDCToBorrow = await convertToCurrencyDecimals( usdc.address, - new BigNumber(userGlobalData.availableBorrowsETH).div(usdcPrice.toString()).multipliedBy(0.95).toFixed(0) + new BigNumber(userGlobalData.availableBorrowsETH) + .div(usdcPrice.toString()) + .multipliedBy(0.95) + .toFixed(0) ); - await pool.connect(borrower.signer).borrow(usdc.address, amountUSDCToBorrow, RateMode.Stable, '0'); + await pool + .connect(borrower.signer) + .borrow(usdc.address, amountUSDCToBorrow, RateMode.Stable, '0'); //drops HF below 1 - await oracle.setAssetPrice(usdc.address, new BigNumber(usdcPrice.toString()).multipliedBy(1.2).toFixed(0)); + await oracle.setAssetPrice( + usdc.address, + new BigNumber(usdcPrice.toString()).multipliedBy(1.2).toFixed(0) + ); //mints dai to the liquidator - await usdc.connect(liquidator.signer).mint(await convertToCurrencyDecimals(usdc.address, '1000')); + await usdc + .connect(liquidator.signer) + .mint(await convertToCurrencyDecimals(usdc.address, '1000')); //approve protocol to access depositor wallet - await usdc.approve(pool.address, APPROVAL_AMOUNT_LENDING_POOL); + await usdc.connect(liquidator.signer).approve(pool.address, APPROVAL_AMOUNT_LENDING_POOL); - const userReserveDataBefore: any = await pool.getUserReserveData(usdc.address, borrower.address); + const userReserveDataBefore: any = await pool.getUserReserveData( + usdc.address, + borrower.address + ); const usdcReserveDataBefore: any = await pool.getReserveData(usdc.address); const ethReserveDataBefore: any = await pool.getReserveData(MOCK_ETH_ADDRESS); - const amountToLiquidate = new BigNumber(userReserveDataBefore.currentBorrowBalance) + const amountToLiquidate = new BigNumber(userReserveDataBefore.currentStableDebt) .div(2) .decimalPlaces(0, BigNumber.ROUND_DOWN) .toFixed(0); - await pool.connect(liquidator.signer).liquidationCall(MOCK_ETH_ADDRESS, usdc.address, borrower.address, amountToLiquidate, false); + await pool + .connect(liquidator.signer) + .liquidationCall(MOCK_ETH_ADDRESS, usdc.address, borrower.address, amountToLiquidate, false); const userReserveDataAfter: any = await pool.getUserReserveData(usdc.address, borrower.address); @@ -270,27 +283,18 @@ makeSuite('LendingPool liquidation - liquidator receiving the underlying asset', const usdcReserveDataAfter: any = await pool.getReserveData(usdc.address); const ethReserveDataAfter: any = await pool.getReserveData(MOCK_ETH_ADDRESS); - const feeAddress = await addressesProvider.getTokenDistributor(); - - const feeAddressBalance = await BRE.ethers.provider.getBalance(feeAddress); - const collateralPrice = await oracle.getAssetPrice(MOCK_ETH_ADDRESS); const principalPrice = await oracle.getAssetPrice(usdc.address); - const collateralDecimals = await pool.getReserveDecimals(MOCK_ETH_ADDRESS); - const principalDecimals = await pool.getReserveDecimals(usdc.address); + const collateralDecimals = (await pool.getReserveConfigurationData(MOCK_ETH_ADDRESS)).decimals.toString(); + const principalDecimals = (await pool.getReserveConfigurationData(usdc.address)).decimals.toString(); const expectedCollateralLiquidated = new BigNumber(principalPrice.toString()) .times(new BigNumber(amountToLiquidate).times(105)) .times(new BigNumber(10).pow(collateralDecimals)) - .div(new BigNumber(collateralPrice.toString()).times(new BigNumber(10).pow(principalDecimals))) - .div(100) - .decimalPlaces(0, BigNumber.ROUND_DOWN); - - const expectedFeeLiquidated = new BigNumber(principalPrice.toString()) - .times(new BigNumber(userReserveDataBefore.originationFee).times(105)) - .times(new BigNumber(10).pow(collateralDecimals)) - .div(new BigNumber(collateralPrice.toString()).times(new BigNumber(10).pow(principalDecimals))) + .div( + new BigNumber(collateralPrice.toString()).times(new BigNumber(10).pow(principalDecimals)) + ) .div(100) .decimalPlaces(0, BigNumber.ROUND_DOWN); @@ -299,15 +303,16 @@ makeSuite('LendingPool liquidation - liquidator receiving the underlying asset', 'Invalid health factor' ); - expect(userReserveDataAfter.originationFee.toString()).to.be.bignumber.eq( - '0', - 'Origination fee should be repaid' + console.log( + 'Debt: ', + userReserveDataAfter.currentStableDebt.toString(), + new BigNumber(userReserveDataBefore.currentStableDebt.toString()) + .minus(amountToLiquidate) + .toFixed(0) ); - expect(feeAddressBalance.toString()).to.be.bignumber.gt('0'); - - expect(userReserveDataAfter.principalBorrowBalance.toString()).to.be.bignumber.almostEqual( - new BigNumber(userReserveDataBefore.currentBorrowBalance.toString()) + expect(userReserveDataAfter.currentStableDebt.toString()).to.be.bignumber.almostEqual( + new BigNumber(userReserveDataBefore.currentStableDebt.toString()) .minus(amountToLiquidate) .toFixed(0), 'Invalid user borrow balance after liquidation' @@ -318,9 +323,16 @@ makeSuite('LendingPool liquidation - liquidator receiving the underlying asset', 'Invalid principal available liquidity' ); + console.log( + 'Debt: ', + usdcReserveDataAfter.availableLiquidity.toString(), + new BigNumber(usdcReserveDataBefore.availableLiquidity.toString()) + .plus(amountToLiquidate) + .toFixed(0) + ); + expect(ethReserveDataAfter.availableLiquidity.toString()).to.be.bignumber.almostEqual( new BigNumber(ethReserveDataBefore.availableLiquidity) - .minus(expectedFeeLiquidated) .minus(expectedCollateralLiquidated) .toFixed(0), 'Invalid collateral available liquidity' @@ -328,7 +340,7 @@ makeSuite('LendingPool liquidation - liquidator receiving the underlying asset', }); it('User 4 deposits 1000 LEND - drops HF, liquidates the LEND, which results on a lower amount being liquidated', async () => { - const {lend, usdc, users, pool, oracle, addressesProvider} = testEnv; + const {lend, usdc, users, pool, oracle} = testEnv; const depositor = users[3]; const borrower = users[4]; @@ -347,20 +359,26 @@ makeSuite('LendingPool liquidation - liquidator receiving the underlying asset', const usdcPrice = await oracle.getAssetPrice(usdc.address); //drops HF below 1 - await oracle.setAssetPrice(usdc.address, new BigNumber(usdcPrice.toString()).multipliedBy(1.1).toFixed(0)); + await oracle.setAssetPrice( + usdc.address, + new BigNumber(usdcPrice.toString()).multipliedBy(1.12).toFixed(0) + ); //mints usdc to the liquidator - await usdc.mint(await convertToCurrencyDecimals(usdc.address, '1000')); + await usdc.connect(liquidator.signer).mint(await convertToCurrencyDecimals(usdc.address, '1000')); //approve protocol to access depositor wallet - await usdc.approve(pool.address, APPROVAL_AMOUNT_LENDING_POOL); + await usdc.connect(liquidator.signer).approve(pool.address, APPROVAL_AMOUNT_LENDING_POOL); - const userReserveDataBefore: any = await pool.getUserReserveData(usdc.address, borrower.address); + const userReserveDataBefore: any = await pool.getUserReserveData( + usdc.address, + borrower.address + ); const usdcReserveDataBefore: any = await pool.getReserveData(usdc.address); const lendReserveDataBefore: any = await pool.getReserveData(lend.address); - const amountToLiquidate = new BigNumber(userReserveDataBefore.currentBorrowBalance) + const amountToLiquidate = new BigNumber(userReserveDataBefore.currentStableDebt) .div(2) .decimalPlaces(0, BigNumber.ROUND_DOWN) .toFixed(0); @@ -368,13 +386,9 @@ makeSuite('LendingPool liquidation - liquidator receiving the underlying asset', const collateralPrice = await oracle.getAssetPrice(lend.address); const principalPrice = await oracle.getAssetPrice(usdc.address); - await pool.connect(liquidator.signer).liquidationCall( - lend.address, - usdc.address, - borrower.address, - amountToLiquidate, - false - ); + await pool + .connect(liquidator.signer) + .liquidationCall(lend.address, usdc.address, borrower.address, amountToLiquidate, false); const userReserveDataAfter: any = await pool.getUserReserveData(usdc.address, borrower.address); @@ -383,17 +397,19 @@ makeSuite('LendingPool liquidation - liquidator receiving the underlying asset', const usdcReserveDataAfter: any = await pool.getReserveData(usdc.address); const lendReserveDataAfter: any = await pool.getReserveData(lend.address); - const collateralDecimals = await pool.getReserveDecimals(lend.address); - const principalDecimals = await pool.getReserveDecimals(usdc.address); + const collateralDecimals = (await pool.getReserveConfigurationData(lend.address)).decimals.toString(); + const principalDecimals = (await pool.getReserveConfigurationData(usdc.address)).decimals.toString(); const expectedCollateralLiquidated = oneEther.multipliedBy('1000'); - const liquidationBonus = await pool.getReserveLiquidationBonus(lend.address); + const liquidationBonus = (await pool.getReserveConfigurationData(lend.address)).liquidationBonus.toString(); const expectedPrincipal = new BigNumber(collateralPrice.toString()) .times(expectedCollateralLiquidated) .times(new BigNumber(10).pow(principalDecimals)) - .div(new BigNumber(principalPrice.toString()).times(new BigNumber(10).pow(collateralDecimals))) + .div( + new BigNumber(principalPrice.toString()).times(new BigNumber(10).pow(collateralDecimals)) + ) .times(100) .div(liquidationBonus.toString()) .decimalPlaces(0, BigNumber.ROUND_DOWN); @@ -403,13 +419,8 @@ makeSuite('LendingPool liquidation - liquidator receiving the underlying asset', 'Invalid health factor' ); - expect(userReserveDataAfter.originationFee.toString()).to.be.bignumber.eq( - '0', - 'Origination fee should be repaid' - ); - - expect(userReserveDataAfter.principalBorrowBalance.toString()).to.be.bignumber.almostEqual( - new BigNumber(userReserveDataBefore.currentBorrowBalance).minus(expectedPrincipal).toFixed(0), + expect(userReserveDataAfter.currentStableDebt.toString()).to.be.bignumber.almostEqual( + new BigNumber(userReserveDataBefore.currentStableDebt).minus(expectedPrincipal).toFixed(0), 'Invalid user borrow balance after liquidation' ); diff --git a/test/scenario.spec.ts b/test/scenario.spec.ts index 10db45fb..21150450 100644 --- a/test/scenario.spec.ts +++ b/test/scenario.spec.ts @@ -12,7 +12,7 @@ BigNumber.config({DECIMAL_PLACES: 0, ROUNDING_MODE: BigNumber.ROUND_DOWN}); const scenarioFolder = './test/helpers/scenarios/'; -const selectedScenarios: string[] = []; +const selectedScenarios: string[] = ['borrow-repay-variable.json']; fs.readdirSync(scenarioFolder).forEach((file) => { if (selectedScenarios.length > 0 && !selectedScenarios.includes(file)) return; diff --git a/types/ATokenFactory.ts b/types/ATokenFactory.ts index 0940e483..4735336e 100644 --- a/types/ATokenFactory.ts +++ b/types/ATokenFactory.ts @@ -841,4 +841,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040516200255a3803806200255a833981810160405260a08110156200003757600080fd5b8151602083015160408085015160608601805192519496939591949391820192846401000000008211156200006b57600080fd5b9083019060208201858111156200008157600080fd5b82516401000000008111828201881017156200009c57600080fd5b82525081516020918201929091019080838360005b83811015620000cb578181015183820152602001620000b1565b50505050905090810190601f168015620000f95780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011d57600080fd5b9083019060208201858111156200013357600080fd5b82516401000000008111828201881017156200014e57600080fd5b82525081516020918201929091019080838360005b838110156200017d57818101518382015260200162000163565b50505050905090810190601f168015620001ab5780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001cb906003906020850190620002eb565b508051620001e1906004906020840190620002eb565b50506005805460ff191660121790555062000205836001600160e01b03620002d516565b600a80546001600160a01b0319166001600160a01b03878116919091179182905560408051630261bf8b60e01b815290519290911691630261bf8b91600480820192602092909190829003018186803b1580156200026257600080fd5b505afa15801562000277573d6000803e3d6000fd5b505050506040513d60208110156200028e57600080fd5b5051600b80546001600160a01b0319166001600160a01b0392831617905560058054610100600160a81b031916610100969092169590950217909355506200039092505050565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200032e57805160ff19168380011785556200035e565b828001600101855582156200035e579182015b828111156200035e57825182559160200191906001019062000341565b506200036c92915062000370565b5090565b6200038d91905b808211156200036c576000815560010162000377565b90565b6121ba80620003a06000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80635eae177c116100de578063a9059cbb11610097578063db006a7511610071578063db006a75146104f3578063dd62ed3e14610510578063ee9907a41461053e578063f866c3191461056457610173565b8063a9059cbb14610499578063c634dfaa146104c5578063d0fc81d2146104eb57610173565b80635eae177c146103df57806370a082311461040b57806389d1a0fc1461043157806394362e8b1461043957806395d89b4114610465578063a457c2d71461046d57610173565b806323b872dd1161013057806323b872dd146102c3578063313ce567146102f9578063325a9b131461031757806339509351146103455780633edb7cb814610371578063445e80101461039d57610173565b806306fdde0314610178578063095ea7b3146101f55780630e49072d1461023557806312c87c2d1461025d57806318160ddd146102835780631d51e7cf1461029d575b600080fd5b61018061059a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ba5781810151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102216004803603604081101561020b57600080fd5b506001600160a01b038135169060200135610631565b604080519115158252519081900360200190f35b61025b6004803603602081101561024b57600080fd5b50356001600160a01b031661064f565b005b61025b6004803603602081101561027357600080fd5b50356001600160a01b031661065c565b61028b6106fb565b60408051918252519081900360200190f35b61028b600480360360208110156102b357600080fd5b50356001600160a01b03166107bd565b610221600480360360608110156102d957600080fd5b506001600160a01b038135811691602081013590911690604001356107dc565b610301610869565b6040805160ff9092168252519081900360200190f35b61025b6004803603604081101561032d57600080fd5b506001600160a01b0381358116916020013516610872565b6102216004803603604081101561035b57600080fd5b506001600160a01b0381351690602001356108d8565b61025b6004803603604081101561038757600080fd5b506001600160a01b03813516906020013561092c565b6103c3600480360360208110156103b357600080fd5b50356001600160a01b0316610a21565b604080516001600160a01b039092168252519081900360200190f35b610221600480360360408110156103f557600080fd5b506001600160a01b038135169060200135610a3f565b61028b6004803603602081101561042157600080fd5b50356001600160a01b0316610ada565b6103c3610b8d565b61025b6004803603604081101561044f57600080fd5b506001600160a01b038135169060200135610ba1565b610180610c76565b6102216004803603604081101561048357600080fd5b506001600160a01b038135169060200135610cd7565b610221600480360360408110156104af57600080fd5b506001600160a01b038135169060200135610d45565b61028b600480360360208110156104db57600080fd5b50356001600160a01b0316610d59565b61028b610d64565b61025b6004803603602081101561050957600080fd5b5035610d6a565b61028b6004803603604081101561052657600080fd5b506001600160a01b0381358116916020013516610fa4565b61028b6004803603602081101561055457600080fd5b50356001600160a01b0316610fcf565b61025b6004803603606081101561057a57600080fd5b506001600160a01b03813581169160208101359091169060400135610fea565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b820191906000526020600020905b81548152906001019060200180831161060957829003601f168201915b505050505090505b90565b600061064561063e611043565b8484611047565b5060015b92915050565b6106593382611133565b50565b6001600160a01b0381163314156106a45760405162461bcd60e51b8152600401808060200182810382526025815260200180611f806025913960400191505060405180910390fd5b3360008181526009602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b91a350565b600080610706611322565b90508061071757600091505061062e565b600b546005546040805163d15e005360e01b81526001600160a01b036101009093048316600482015290516107b7936107b293169163d15e0053916024808301926020929190829003018186803b15801561077157600080fd5b505afa158015610785573d6000803e3d6000fd5b505050506040513d602081101561079b57600080fd5b50516107a684611328565b9063ffffffff61133e16565b611389565b91505090565b6001600160a01b0381166000908152600860205260409020545b919050565b60006107e98484846113a2565b61085f846107f5611043565b61085a85604051806060016040528060288152602001611fc6602891396001600160a01b038a16600090815260016020526040812090610833611043565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61141116565b611047565b5060019392505050565b60055460ff1690565b6001600160a01b038281166000908152600960205260409020541633146108ca5760405162461bcd60e51b815260040180806020018281038252603a81526020018061214b603a913960400191505060405180910390fd5b6108d48282611133565b5050565b60006106456108e5611043565b8461085a85600160006108f6611043565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6114a816565b600b546001600160a01b031633146109755760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080600061098385611502565b935093509350506109958583866115f3565b61099f858561172a565b60006109b1848663ffffffff61183216565b6109c1576109be86611874565b90505b856001600160a01b03167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db8685846109f957856109fc565b60005b60408051938452602084019290925282820152519081900360600190a2505050505050565b6001600160a01b039081166000908152600760205260409020541690565b600b54600554604080516376e9d61560e01b81526101009092046001600160a01b039081166004840152858116602484015260448301859052905160009391909116916376e9d615916064808301926020929190829003018186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d6020811015610ad157600080fd5b50519392505050565b600080610ae683611926565b6001600160a01b03841660009081526008602052604090205490915081158015610b0e575080155b15610b1e576000925050506107d7565b6001600160a01b0384811660009081526007602052604090205416610b6f57610b6681610b5a86610b55868463ffffffff6114a816565b611941565b9063ffffffff61183216565b925050506107d7565b610b66610b8082610b5a8785611941565b839063ffffffff6114a816565b60055461010090046001600160a01b031681565b600b546001600160a01b03163314610bea5760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080610bf684611502565b935093505050610c1a84610c1385856114a890919063ffffffff16565b60006115f3565b610c2484846119f6565b604080518481526020810184905280820183905290516001600160a01b038616917fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a919081900360600190a250505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b6000610645610ce4611043565b8461085a856040518060600160405280602581526020016121266025913960016000610d0e611043565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61141116565b6000610645610d52611043565b84846113a2565b600061064982611926565b60001981565b60008111610dbf576040805162461bcd60e51b815260206004820181905260248201527f416d6f756e7420746f2072656465656d206e6565647320746f206265203e2030604482015290519081900360640190fd5b6000806000610dcd33611502565b91955093509150849050600019811415610de45750825b83811115610e235760405162461bcd60e51b8152600401808060200182810382526032815260200180611f066032913960400191505060405180910390fd5b610e2d3382610a3f565b610e7e576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b610e893384836115f3565b610e93338261172a565b6000610ea5858363ffffffff61183216565b610eb557610eb233611874565b90505b600b546005546001600160a01b0391821691639895e3d8916101009004163385610ee58a8263ffffffff61183216565b6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001838152602001828152602001945050505050600060405180830381600087803b158015610f5457600080fd5b505af1158015610f68573d6000803e3d6000fd5b50505050336001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a76468386846109f957866109fc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b031660009081526006602052604090205490565b600b546001600160a01b031633146110335760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b61103e838383611af2565b505050565b3390565b6001600160a01b03831661108c5760405162461bcd60e51b81526004018080602001828103825260248152602001806120d06024913960400191505060405180910390fd5b6001600160a01b0382166110d15760405162461bcd60e51b8152600401808060200182810382526022815260200180611f386022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0380831660009081526007602052604090205481169082168114156111905760405162461bcd60e51b815260040180806020018281038252602a815260200180611fee602a913960400191505060405180910390fd5b60008060008061119f87611502565b9350935093509350600083116111e65760405162461bcd60e51b81526004018080602001828103825260428152602001806120186042913960600191505060405180910390fd5b6001600160a01b0385161561120157611201876000866115f3565b866001600160a01b0316866001600160a01b0316141561128d576001600160a01b038716600081815260076020908152604080832080546001600160a01b03191690558051878152918201869052818101859052519192917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050506108d4565b6001600160a01b03878116600090815260076020526040812080546001600160a01b031916928916929092179091556112c990889085906115f3565b604080518481526020810184905280820183905290516001600160a01b0380891692908a16917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050505050565b60025490565b600061064982633b9aca0063ffffffff611c2116565b60006113826b033b2e3c9fd0803ce8000000611376611363868663ffffffff611c2116565b6b019d971e4fe8401e74000000906114a8565b9063ffffffff611c7a16565b9392505050565b6000631dcd6500611382633b9aca0061137683866114a8565b82816113ae8282610a3f565b6113ff576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b61140a858585611af2565b5050505050565b600081848411156114a05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561146557818101518382015260200161144d565b50505050905090810190601f1680156114925780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611382576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600061151386611926565b9050600061152482610b5a89610ada565b905061153087826119f6565b600b546005546040805163d15e005360e01b81526101009092046001600160a01b0390811660048401529051600093919091169163d15e0053916024808301926020929190829003018186803b15801561158957600080fd5b505afa15801561159d573d6000803e3d6000fd5b505050506040513d60208110156115b357600080fd5b50516001600160a01b03891660009081526006602052604090208190559050826115e3818463ffffffff6114a816565b9099909850919650945092505050565b6001600160a01b038084166000908152600760205260409020541680611619575061103e565b60008061162583611502565b6001600160a01b038716600090815260086020526040902054919550935061165b9250869150610b5a908863ffffffff6114a816565b6001600160a01b038085166000908152600860209081526040808320949094556007905291909120541680156116ce576001600160a01b0381166000908152600860205260409020546116b4908463ffffffff6114a816565b6001600160a01b0382166000908152600860205260409020555b60408051848152602081018490528082018890526060810187905290516001600160a01b038616917f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f919081900360800190a250505050505050565b6001600160a01b03821661176f5760405162461bcd60e51b815260040180806020018281038252602181526020018061208a6021913960400191505060405180910390fd5b61177b8260008361103e565b6117be81604051806060016040528060228152602001611ee4602291396001600160a01b038516600090815260208190526040902054919063ffffffff61141116565b6001600160a01b0383166000908152602081905260409020556002546117ea908263ffffffff61183216565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061138283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611411565b6001600160a01b038116600081815260076020908152604080832080546001600160a01b03191690558051838152918201839052818101839052519192839290917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594919081900360600190a36001600160a01b03821660009081526008602052604090205461191e57506001600160a01b03811660009081526006602052604081205560016107d7565b5060006107d7565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b03808316600090815260066020908152604080832054600b54600554835163d15e005360e01b81526101009091048716600482015292519495611382956107b29593946119ea94939092169263d15e00539260248082019391829003018186803b1580156119b557600080fd5b505afa1580156119c9573d6000803e3d6000fd5b505050506040513d60208110156119df57600080fd5b50516107a687611328565b9063ffffffff611cbc16565b6001600160a01b038216611a51576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611a5d6000838361103e565b600254611a70908263ffffffff6114a816565b6002556001600160a01b038216600090815260208190526040902054611a9c908263ffffffff6114a816565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008111611b315760405162461bcd60e51b815260040180806020018281038252603081526020018061205a6030913960400191505060405180910390fd5b6000806000611b3f86611502565b93509350935050600080611b5287611502565b935093505050611b638885886115f3565b611b7787610c13848963ffffffff6114a816565b611b82888888611cf4565b6000611b94868863ffffffff61183216565b611ba457611ba189611874565b90505b876001600160a01b0316896001600160a01b03167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde889888786611be75789611bea565b60005b60408051948552602085019390935283830191909152606083015260808201879052519081900360a00190a3505050505050505050565b600082611c3057506000610649565b82820282848281611c3d57fe5b04146113825760405162461bcd60e51b8152600401808060200182810382526021815260200180611fa56021913960400191505060405180910390fd5b600061138283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e5b565b600060028204611cec83611376611cdf876b033b2e3c9fd0803ce8000000611c21565b849063ffffffff6114a816565b949350505050565b6001600160a01b038316611d395760405162461bcd60e51b81526004018080602001828103825260258152602001806120ab6025913960400191505060405180910390fd5b6001600160a01b038216611d7e5760405162461bcd60e51b8152600401808060200182810382526023815260200180611ec16023913960400191505060405180910390fd5b611d8983838361103e565b611dcc81604051806060016040528060268152602001611f5a602691396001600160a01b038616600090815260208190526040902054919063ffffffff61141116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e01908263ffffffff6114a816565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008183611eaa5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561146557818101518382015260200161144d565b506000838581611eb657fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a2646970667358221220715e21f1cc4da6188a98142c6f8f7e59edec3b15b061e414ee149a903c8b308364736f6c63430006080033"; + "0x60806040523480156200001157600080fd5b506040516200255a3803806200255a833981810160405260a08110156200003757600080fd5b8151602083015160408085015160608601805192519496939591949391820192846401000000008211156200006b57600080fd5b9083019060208201858111156200008157600080fd5b82516401000000008111828201881017156200009c57600080fd5b82525081516020918201929091019080838360005b83811015620000cb578181015183820152602001620000b1565b50505050905090810190601f168015620000f95780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011d57600080fd5b9083019060208201858111156200013357600080fd5b82516401000000008111828201881017156200014e57600080fd5b82525081516020918201929091019080838360005b838110156200017d57818101518382015260200162000163565b50505050905090810190601f168015620001ab5780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001cb906003906020850190620002eb565b508051620001e1906004906020840190620002eb565b50506005805460ff191660121790555062000205836001600160e01b03620002d516565b600a80546001600160a01b0319166001600160a01b03878116919091179182905560408051630261bf8b60e01b815290519290911691630261bf8b91600480820192602092909190829003018186803b1580156200026257600080fd5b505afa15801562000277573d6000803e3d6000fd5b505050506040513d60208110156200028e57600080fd5b5051600b80546001600160a01b0319166001600160a01b0392831617905560058054610100600160a81b031916610100969092169590950217909355506200039092505050565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200032e57805160ff19168380011785556200035e565b828001600101855582156200035e579182015b828111156200035e57825182559160200191906001019062000341565b506200036c92915062000370565b5090565b6200038d91905b808211156200036c576000815560010162000377565b90565b6121ba80620003a06000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80635eae177c116100de578063a9059cbb11610097578063db006a7511610071578063db006a75146104f3578063dd62ed3e14610510578063ee9907a41461053e578063f866c3191461056457610173565b8063a9059cbb14610499578063c634dfaa146104c5578063d0fc81d2146104eb57610173565b80635eae177c146103df57806370a082311461040b57806389d1a0fc1461043157806394362e8b1461043957806395d89b4114610465578063a457c2d71461046d57610173565b806323b872dd1161013057806323b872dd146102c3578063313ce567146102f9578063325a9b131461031757806339509351146103455780633edb7cb814610371578063445e80101461039d57610173565b806306fdde0314610178578063095ea7b3146101f55780630e49072d1461023557806312c87c2d1461025d57806318160ddd146102835780631d51e7cf1461029d575b600080fd5b61018061059a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ba5781810151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102216004803603604081101561020b57600080fd5b506001600160a01b038135169060200135610631565b604080519115158252519081900360200190f35b61025b6004803603602081101561024b57600080fd5b50356001600160a01b031661064f565b005b61025b6004803603602081101561027357600080fd5b50356001600160a01b031661065c565b61028b6106fb565b60408051918252519081900360200190f35b61028b600480360360208110156102b357600080fd5b50356001600160a01b03166107bd565b610221600480360360608110156102d957600080fd5b506001600160a01b038135811691602081013590911690604001356107dc565b610301610869565b6040805160ff9092168252519081900360200190f35b61025b6004803603604081101561032d57600080fd5b506001600160a01b0381358116916020013516610872565b6102216004803603604081101561035b57600080fd5b506001600160a01b0381351690602001356108d8565b61025b6004803603604081101561038757600080fd5b506001600160a01b03813516906020013561092c565b6103c3600480360360208110156103b357600080fd5b50356001600160a01b0316610a21565b604080516001600160a01b039092168252519081900360200190f35b610221600480360360408110156103f557600080fd5b506001600160a01b038135169060200135610a3f565b61028b6004803603602081101561042157600080fd5b50356001600160a01b0316610ada565b6103c3610b8d565b61025b6004803603604081101561044f57600080fd5b506001600160a01b038135169060200135610ba1565b610180610c76565b6102216004803603604081101561048357600080fd5b506001600160a01b038135169060200135610cd7565b610221600480360360408110156104af57600080fd5b506001600160a01b038135169060200135610d45565b61028b600480360360208110156104db57600080fd5b50356001600160a01b0316610d59565b61028b610d64565b61025b6004803603602081101561050957600080fd5b5035610d6a565b61028b6004803603604081101561052657600080fd5b506001600160a01b0381358116916020013516610fa4565b61028b6004803603602081101561055457600080fd5b50356001600160a01b0316610fcf565b61025b6004803603606081101561057a57600080fd5b506001600160a01b03813581169160208101359091169060400135610fea565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b820191906000526020600020905b81548152906001019060200180831161060957829003601f168201915b505050505090505b90565b600061064561063e611043565b8484611047565b5060015b92915050565b6106593382611133565b50565b6001600160a01b0381163314156106a45760405162461bcd60e51b8152600401808060200182810382526025815260200180611f806025913960400191505060405180910390fd5b3360008181526009602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b91a350565b600080610706611322565b90508061071757600091505061062e565b600b546005546040805163d15e005360e01b81526001600160a01b036101009093048316600482015290516107b7936107b293169163d15e0053916024808301926020929190829003018186803b15801561077157600080fd5b505afa158015610785573d6000803e3d6000fd5b505050506040513d602081101561079b57600080fd5b50516107a684611328565b9063ffffffff61133e16565b611389565b91505090565b6001600160a01b0381166000908152600860205260409020545b919050565b60006107e98484846113a2565b61085f846107f5611043565b61085a85604051806060016040528060288152602001611fc6602891396001600160a01b038a16600090815260016020526040812090610833611043565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61141116565b611047565b5060019392505050565b60055460ff1690565b6001600160a01b038281166000908152600960205260409020541633146108ca5760405162461bcd60e51b815260040180806020018281038252603a81526020018061214b603a913960400191505060405180910390fd5b6108d48282611133565b5050565b60006106456108e5611043565b8461085a85600160006108f6611043565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6114a816565b600b546001600160a01b031633146109755760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080600061098385611502565b935093509350506109958583866115f3565b61099f858561172a565b60006109b1848663ffffffff61183216565b6109c1576109be86611874565b90505b856001600160a01b03167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db8685846109f957856109fc565b60005b60408051938452602084019290925282820152519081900360600190a2505050505050565b6001600160a01b039081166000908152600760205260409020541690565b600b54600554604080516376e9d61560e01b81526101009092046001600160a01b039081166004840152858116602484015260448301859052905160009391909116916376e9d615916064808301926020929190829003018186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d6020811015610ad157600080fd5b50519392505050565b600080610ae683611926565b6001600160a01b03841660009081526008602052604090205490915081158015610b0e575080155b15610b1e576000925050506107d7565b6001600160a01b0384811660009081526007602052604090205416610b6f57610b6681610b5a86610b55868463ffffffff6114a816565b611941565b9063ffffffff61183216565b925050506107d7565b610b66610b8082610b5a8785611941565b839063ffffffff6114a816565b60055461010090046001600160a01b031681565b600b546001600160a01b03163314610bea5760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080610bf684611502565b935093505050610c1a84610c1385856114a890919063ffffffff16565b60006115f3565b610c2484846119f6565b604080518481526020810184905280820183905290516001600160a01b038616917fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a919081900360600190a250505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b6000610645610ce4611043565b8461085a856040518060600160405280602581526020016121266025913960016000610d0e611043565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61141116565b6000610645610d52611043565b84846113a2565b600061064982611926565b60001981565b60008111610dbf576040805162461bcd60e51b815260206004820181905260248201527f416d6f756e7420746f2072656465656d206e6565647320746f206265203e2030604482015290519081900360640190fd5b6000806000610dcd33611502565b91955093509150849050600019811415610de45750825b83811115610e235760405162461bcd60e51b8152600401808060200182810382526032815260200180611f066032913960400191505060405180910390fd5b610e2d3382610a3f565b610e7e576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b610e893384836115f3565b610e93338261172a565b6000610ea5858363ffffffff61183216565b610eb557610eb233611874565b90505b600b546005546001600160a01b0391821691639895e3d8916101009004163385610ee58a8263ffffffff61183216565b6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001838152602001828152602001945050505050600060405180830381600087803b158015610f5457600080fd5b505af1158015610f68573d6000803e3d6000fd5b50505050336001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a76468386846109f957866109fc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b031660009081526006602052604090205490565b600b546001600160a01b031633146110335760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b61103e838383611af2565b505050565b3390565b6001600160a01b03831661108c5760405162461bcd60e51b81526004018080602001828103825260248152602001806120d06024913960400191505060405180910390fd5b6001600160a01b0382166110d15760405162461bcd60e51b8152600401808060200182810382526022815260200180611f386022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0380831660009081526007602052604090205481169082168114156111905760405162461bcd60e51b815260040180806020018281038252602a815260200180611fee602a913960400191505060405180910390fd5b60008060008061119f87611502565b9350935093509350600083116111e65760405162461bcd60e51b81526004018080602001828103825260428152602001806120186042913960600191505060405180910390fd5b6001600160a01b0385161561120157611201876000866115f3565b866001600160a01b0316866001600160a01b0316141561128d576001600160a01b038716600081815260076020908152604080832080546001600160a01b03191690558051878152918201869052818101859052519192917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050506108d4565b6001600160a01b03878116600090815260076020526040812080546001600160a01b031916928916929092179091556112c990889085906115f3565b604080518481526020810184905280820183905290516001600160a01b0380891692908a16917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050505050565b60025490565b600061064982633b9aca0063ffffffff611c2116565b60006113826b033b2e3c9fd0803ce8000000611376611363868663ffffffff611c2116565b6b019d971e4fe8401e74000000906114a8565b9063ffffffff611c7a16565b9392505050565b6000631dcd6500611382633b9aca0061137683866114a8565b82816113ae8282610a3f565b6113ff576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b61140a858585611af2565b5050505050565b600081848411156114a05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561146557818101518382015260200161144d565b50505050905090810190601f1680156114925780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611382576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600061151386611926565b9050600061152482610b5a89610ada565b905061153087826119f6565b600b546005546040805163d15e005360e01b81526101009092046001600160a01b0390811660048401529051600093919091169163d15e0053916024808301926020929190829003018186803b15801561158957600080fd5b505afa15801561159d573d6000803e3d6000fd5b505050506040513d60208110156115b357600080fd5b50516001600160a01b03891660009081526006602052604090208190559050826115e3818463ffffffff6114a816565b9099909850919650945092505050565b6001600160a01b038084166000908152600760205260409020541680611619575061103e565b60008061162583611502565b6001600160a01b038716600090815260086020526040902054919550935061165b9250869150610b5a908863ffffffff6114a816565b6001600160a01b038085166000908152600860209081526040808320949094556007905291909120541680156116ce576001600160a01b0381166000908152600860205260409020546116b4908463ffffffff6114a816565b6001600160a01b0382166000908152600860205260409020555b60408051848152602081018490528082018890526060810187905290516001600160a01b038616917f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f919081900360800190a250505050505050565b6001600160a01b03821661176f5760405162461bcd60e51b815260040180806020018281038252602181526020018061208a6021913960400191505060405180910390fd5b61177b8260008361103e565b6117be81604051806060016040528060228152602001611ee4602291396001600160a01b038516600090815260208190526040902054919063ffffffff61141116565b6001600160a01b0383166000908152602081905260409020556002546117ea908263ffffffff61183216565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061138283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611411565b6001600160a01b038116600081815260076020908152604080832080546001600160a01b03191690558051838152918201839052818101839052519192839290917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594919081900360600190a36001600160a01b03821660009081526008602052604090205461191e57506001600160a01b03811660009081526006602052604081205560016107d7565b5060006107d7565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b03808316600090815260066020908152604080832054600b54600554835163d15e005360e01b81526101009091048716600482015292519495611382956107b29593946119ea94939092169263d15e00539260248082019391829003018186803b1580156119b557600080fd5b505afa1580156119c9573d6000803e3d6000fd5b505050506040513d60208110156119df57600080fd5b50516107a687611328565b9063ffffffff611cbc16565b6001600160a01b038216611a51576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611a5d6000838361103e565b600254611a70908263ffffffff6114a816565b6002556001600160a01b038216600090815260208190526040902054611a9c908263ffffffff6114a816565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008111611b315760405162461bcd60e51b815260040180806020018281038252603081526020018061205a6030913960400191505060405180910390fd5b6000806000611b3f86611502565b93509350935050600080611b5287611502565b935093505050611b638885886115f3565b611b7787610c13848963ffffffff6114a816565b611b82888888611cf4565b6000611b94868863ffffffff61183216565b611ba457611ba189611874565b90505b876001600160a01b0316896001600160a01b03167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde889888786611be75789611bea565b60005b60408051948552602085019390935283830191909152606083015260808201879052519081900360a00190a3505050505050505050565b600082611c3057506000610649565b82820282848281611c3d57fe5b04146113825760405162461bcd60e51b8152600401808060200182810382526021815260200180611fa56021913960400191505060405180910390fd5b600061138283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e5b565b600060028204611cec83611376611cdf876b033b2e3c9fd0803ce8000000611c21565b849063ffffffff6114a816565b949350505050565b6001600160a01b038316611d395760405162461bcd60e51b81526004018080602001828103825260258152602001806120ab6025913960400191505060405180910390fd5b6001600160a01b038216611d7e5760405162461bcd60e51b8152600401808060200182810382526023815260200180611ec16023913960400191505060405180910390fd5b611d8983838361103e565b611dcc81604051806060016040528060268152602001611f5a602691396001600160a01b038616600090815260208190526040902054919063ffffffff61141116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e01908263ffffffff6114a816565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008183611eaa5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561146557818101518382015260200161144d565b506000838581611eb657fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a26469706673582212202d2df2b93993c5cb5fa2b9f5d98346729bc1056636a0754860769165524ca37664736f6c63430006080033"; diff --git a/types/AaveProtocolTestHelpersFactory.ts b/types/AaveProtocolTestHelpersFactory.ts index 6b44fed2..0c598068 100644 --- a/types/AaveProtocolTestHelpersFactory.ts +++ b/types/AaveProtocolTestHelpersFactory.ts @@ -123,4 +123,4 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b50604051610a38380380610a3883398101604081905261002f91610044565b60601b6001600160601b031916608052610072565b600060208284031215610055578081fd5b81516001600160a01b038116811461006b578182fd5b9392505050565b60805160601c6109a1610097600039806083528060ab528061035f52506109a16000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630542975c14610046578063b316ff8914610064578063f561ae4114610079575b600080fd5b61004e610081565b60405161005b919061085f565b60405180910390f35b61006c6100a5565b60405161005b9190610873565b61006c610359565b7f000000000000000000000000000000000000000000000000000000000000000081565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561010257600080fd5b505afa158015610116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013a9190610650565b90506060816001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160006040518083038186803b15801561017757600080fd5b505afa15801561018b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101b39190810190610672565b90506060815167ffffffffffffffff811180156101cf57600080fd5b5060405190808252806020026020018201604052801561020957816020015b6101f661061b565b8152602001906001900390816101ee5790505b50905060005b825181101561035157604051806040016040528084838151811061022f57fe5b60200260200101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316146102f05784838151811061026f57fe5b60200260200101516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156102af57600080fd5b505afa1580156102c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102eb919081019061071d565b61030d565b6040518060400160405280600381526020016208aa8960eb1b8152505b815260200184838151811061031e57fe5b60200260200101516001600160a01b031681525082828151811061033e57fe5b602090810291909101015260010161020f565b509250505090565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b657600080fd5b505afa1580156103ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ee9190610650565b90506060816001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160006040518083038186803b15801561042b57600080fd5b505afa15801561043f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104679190810190610672565b90506060815167ffffffffffffffff8111801561048357600080fd5b506040519080825280602002602001820160405280156104bd57816020015b6104aa61061b565b8152602001906001900390816104a25790505b50905060005b8251811015610351576000846001600160a01b0316633e1501418584815181106104e957fe5b60200260200101516040518263ffffffff1660e01b815260040161050d919061085f565b6101406040518083038186803b15801561052657600080fd5b505afa15801561053a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055e91906107a9565b50505050509450505050506040518060400160405280826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156105ad57600080fd5b505afa1580156105c1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105e9919081019061071d565b8152602001826001600160a01b031681525083838151811061060757fe5b6020908102919091010152506001016104c3565b60408051808201909152606081526000602082015290565b80516001600160a01b038116811461064a57600080fd5b92915050565b600060208284031215610661578081fd5b61066b8383610633565b9392505050565b60006020808385031215610684578182fd5b825167ffffffffffffffff8082111561069b578384fd5b81850186601f8201126106ac578485fd5b80519250818311156106bc578485fd5b83830291506106cc848301610903565b8381528481019082860184840187018a10156106e6578788fd5b8794505b85851015610710576106fc8a82610633565b8352600194909401939186019186016106ea565b5098975050505050505050565b60006020828403121561072e578081fd5b815167ffffffffffffffff80821115610745578283fd5b81840185601f820112610756578384fd5b8051925081831115610766578384fd5b610779601f8401601f1916602001610903565b915082825285602084830101111561078f578384fd5b6107a083602084016020840161092a565b50949350505050565b6000806000806000806000806000806101408b8d0312156107c8578586fd5b8a51995060208b0151985060408b015197506107e78c60608d01610633565b96506107f68c60808d01610633565b955060a08b01516108068161095a565b60c08c01519095506108178161095a565b60e08c01519094506108288161095a565b6101008c015190935061083a8161095a565b6101208c015190925061084c8161095a565b809150509295989b9194979a5092959850565b6001600160a01b0391909116815260200190565b60208082528251828201819052600091906040908185019080840286018301878501865b838110156108f557603f19898403018552815180518785528051808987015260606108c7828289018d860161092a565b928a01516001600160a01b0316868b015296890196601f01601f191690940101925090860190600101610897565b509098975050505050505050565b60405181810167ffffffffffffffff8111828210171561092257600080fd5b604052919050565b60005b8381101561094557818101518382015260200161092d565b83811115610954576000848401525b50505050565b801515811461096857600080fd5b5056fea26469706673582212202ae87134413bfec30c3479b12be41342f1714703aa97432447282e26ddf84a0c64736f6c63430006080033"; + "0x60a060405234801561001057600080fd5b50604051610a58380380610a5883398101604081905261002f91610044565b60601b6001600160601b031916608052610072565b600060208284031215610055578081fd5b81516001600160a01b038116811461006b578182fd5b9392505050565b60805160601c6109c1610097600039806083528060ab528061035f52506109c16000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630542975c14610046578063b316ff8914610064578063f561ae4114610079575b600080fd5b61004e610081565b60405161005b9190610888565b60405180910390f35b61006c6100a5565b60405161005b919061089c565b61006c610359565b7f000000000000000000000000000000000000000000000000000000000000000081565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561010257600080fd5b505afa158015610116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013a9190610661565b90506060816001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160006040518083038186803b15801561017757600080fd5b505afa15801561018b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101b39190810190610683565b90506060815167ffffffffffffffff811180156101cf57600080fd5b5060405190808252806020026020018201604052801561020957816020015b6101f661061c565b8152602001906001900390816101ee5790505b50905060005b825181101561035157604051806040016040528084838151811061022f57fe5b60200260200101516001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316146102f05784838151811061026f57fe5b60200260200101516001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156102af57600080fd5b505afa1580156102c3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102eb919081019061072e565b61030d565b6040518060400160405280600381526020016208aa8960eb1b8152505b815260200184838151811061031e57fe5b60200260200101516001600160a01b031681525082828151811061033e57fe5b602090810291909101015260010161020f565b509250505090565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b657600080fd5b505afa1580156103ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ee9190610661565b90506060816001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160006040518083038186803b15801561042b57600080fd5b505afa15801561043f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104679190810190610683565b90506060815167ffffffffffffffff8111801561048357600080fd5b506040519080825280602002602001820160405280156104bd57816020015b6104aa61061c565b8152602001906001900390816104a25790505b50905060005b8251811015610351576000846001600160a01b0316633e1501418584815181106104e957fe5b60200260200101516040518263ffffffff1660e01b815260040161050d9190610888565b6101606040518083038186803b15801561052657600080fd5b505afa15801561053a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055e91906107ba565b5050505050955050505050506040518060400160405280826001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b1580156105ae57600080fd5b505afa1580156105c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105ea919081019061072e565b8152602001826001600160a01b031681525083838151811061060857fe5b6020908102919091010152506001016104c3565b60408051808201909152606081526000602082015290565b80516001600160a01b038116811461064b57600080fd5b92915050565b8051801515811461064b57600080fd5b600060208284031215610672578081fd5b61067c8383610634565b9392505050565b60006020808385031215610695578182fd5b825167ffffffffffffffff808211156106ac578384fd5b81850186601f8201126106bd578485fd5b80519250818311156106cd578485fd5b83830291506106dd848301610934565b8381528481019082860184840187018a10156106f7578788fd5b8794505b858510156107215761070d8a82610634565b8352600194909401939186019186016106fb565b5098975050505050505050565b60006020828403121561073f578081fd5b815167ffffffffffffffff80821115610756578283fd5b81840185601f820112610767578384fd5b8051925081831115610777578384fd5b61078a601f8401601f1916602001610934565b91508282528560208483010111156107a0578384fd5b6107b183602084016020840161095b565b50949350505050565b60008060008060008060008060008060006101608c8e0312156107db578687fd5b8b519a5060208c0151995060408c0151985060608c0151975060808c015160018060a01b038116811461080c578788fd5b965061081b8d60a08e01610634565b955061082a8d60c08e01610651565b94506108398d60e08e01610651565b93506108498d6101008e01610651565b92506108598d6101208e01610651565b91506108698d6101408e01610651565b90509295989b509295989b9093969950565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b60208082528251828201819052600091906040908185019080840286018301878501865b8381101561092657603f19898403018552815180518785528051808987015260606108f0828289018d860161095b565b8a84015192506109028b88018461087b565b978a0197601f91909101601f191695909501909401935050908601906001016108c0565b509098975050505050505050565b60405181810167ffffffffffffffff8111828210171561095357600080fd5b604052919050565b60005b8381101561097657818101518382015260200161095e565b83811115610985576000848401525b5050505056fea2646970667358221220cfe05fd5fcac764f01a1b35a203c8a82b47abcd253b10d3d22372d46ddb0501264736f6c63430006080033"; diff --git a/types/GenericLogicFactory.ts b/types/GenericLogicFactory.ts index 0f0b66d5..013883cf 100644 --- a/types/GenericLogicFactory.ts +++ b/types/GenericLogicFactory.ts @@ -89,4 +89,4 @@ const _abi = [ ]; const _bytecode = - "0x610fc8610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80634d9afd5e1461005b578063901d711414610114578063ab8bb39314610211578063c3525c2814610261575b600080fd5b610100600480360360e081101561007157600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a08201356401000000008111156100b857600080fd5b8201836020820111156100ca57600080fd5b803590602001918460208302840111640100000000831117156100ec57600080fd5b9193509150356001600160a01b0316610269565b604080519115158252519081900360200190f35b6101de600480360360a081101561012a57600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561016157600080fd5b82018360208201111561017357600080fd5b8035906020019184602083028401116401000000008311171561019557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550505090356001600160a01b031691506104ca9050565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61024f600480360360a081101561022757600080fd5b50803590602081013590604081013590606081013590608001356001600160a01b0316610ac6565b60408051918252519081900360200190f35b61024f610bb1565b6000610273610e74565b6001600160a01b038a166000908152602088905260409020600c0154600160d01b900460ff1615806102c957506001600160a01b03808a16600090815260208881526040808320938e168352929052205460ff16155b156102d85760019150506104be565b6103198988888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a92506104ca915050565b5060808601525060608401526040830181905260208301919091526103425760019150506104be565b61040e8760008c6001600160a01b03166001600160a01b0316815260200190815260200160002060080154600a0a6104028a866001600160a01b031663b3596f078f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156103ca57600080fd5b505afa1580156103de573d6000803e3d6000fd5b505050506040513d60208110156103f457600080fd5b50519063ffffffff610bbd16565b9063ffffffff610c1f16565b60c0820181905260208201516104299163ffffffff610c6116565b60e0820181905261043e5760009150506104be565b6104898160e001516104026104648460a001518560c00151610bbd90919063ffffffff16565b6080850151602086015161047d9163ffffffff610bbd16565b9063ffffffff610c6116565b610100820181905260e0820151604083015160608401516000936104af93929190610ca3565b670de0b6b3a764000010925050505b98975050505050505050565b6000806000806000806104db610ed0565b60006101008201525b885181610100015110156109fe57888161010001518151811061050357fe5b60200260200101518161020001906001600160a01b031690816001600160a01b03168152505060008b60008361020001516001600160a01b03166001600160a01b0316815260200190815260200160002090508060090160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156105c357600080fd5b505afa1580156105d7573d6000803e3d6000fd5b505050506040513d60208110156105ed57600080fd5b810190808051906020019092919050505082604001818152505080600a0160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561067457600080fd5b505afa158015610688573d6000803e3d6000fd5b505050506040513d602081101561069e57600080fd5b810190808051906020019092919050505082606001818152505061076581600b0160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561072857600080fd5b505afa15801561073c573d6000803e3d6000fd5b505050506040513d602081101561075257600080fd5b505160608401519063ffffffff610cf216565b6060830152604082015115801561077e57506060820151155b1561078957506109ed565b8060080154600a0a826020018181525050886001600160a01b031663b3596f078b846101000151815181106107ba57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d602081101561083257600080fd5b50518252604082015115610965576000610865836020015161040285604001518660000151610bbd90919063ffffffff16565b600c830154909150600160d01b900460ff1680156108dd57508b60008f6001600160a01b03166001600160a01b0316815260200190815260200160002060008c856101000151815181106108b557fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff165b15610963576101408301516108f8908263ffffffff610cf216565b610140840152600582015461092a9061091890839063ffffffff610bbd16565b6101a08501519063ffffffff610cf216565b6101a0840152600682015461095c9061094a90839063ffffffff610bbd16565b6101c08501519063ffffffff610cf216565b6101c08401525b505b6060820151156109eb576109a7610995836020015161040285606001518660000151610bbd90919063ffffffff16565b6101608401519063ffffffff610cf216565b6101608301526020820151825160e08401516109e4926109d29290916104029163ffffffff610bbd16565b6101808401519063ffffffff610cf216565b6101808301525b505b6101008101805160010190526104e4565b600081610140015111610a12576000610a2d565b6101408101516101a0820151610a2d9163ffffffff610c1f16565b6101a0820152610140810151610a44576000610a5f565b6101408101516101c0820151610a5f9163ffffffff610c1f16565b6101c08201819052610140820151610160830151610180840151610a8293610ca3565b61012082018190526101408201516101608301516101808401516101a08501516101c090950151929a50909850965091945090925090509550955095509550955095565b600080610ade6064610402898763ffffffff610bbd16565b905085811015610af2576000915050610ba8565b610b12610b05878763ffffffff610cf216565b829063ffffffff610c6116565b60408051630e563a7d60e41b81523360048201526024810183905290519192506000916001600160a01b0386169163e563a7d0916044808301926020929190829003018186803b158015610b6557600080fd5b505afa158015610b79573d6000803e3d6000fd5b505050506040513d6020811015610b8f57600080fd5b50519050610ba3828263ffffffff610c6116565b925050505b95945050505050565b670de0b6b3a764000081565b600082610bcc57506000610c19565b82820282848281610bd957fe5b0414610c165760405162461bcd60e51b8152600401808060200182810382526021815260200180610f726021913960400191505060405180910390fd5b90505b92915050565b6000610c1683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d4c565b6000610c1683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dee565b600083610cb35750600019610cea565b610ce7610cc6858563ffffffff610cf216565b610cdb6064610402898763ffffffff610bbd16565b9063ffffffff610e4816565b90505b949350505050565b600082820183811015610c16576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183610dd85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d9d578181015183820152602001610d85565b50505050905090810190601f168015610dca5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610de457fe5b0495945050505050565b60008184841115610e405760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610d9d578181015183820152602001610d85565b505050900390565b600060028204610cea83610402610e6787670de0b6b3a7640000610bbd565b849063ffffffff610cf216565b604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b60405180610260016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b03168152602001600015158152602001600015158152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212201c973b917f0fc6de82eae8ca5977f0d1fb7c4741784ed546ad03526b9867994c64736f6c63430006080033"; + "0x61115c610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80634d9afd5e1461005b578063901d711414610114578063ab8bb39314610211578063c3525c2814610261575b600080fd5b610100600480360360e081101561007157600080fd5b6001600160a01b0382358116926020810135909116916040820135916060810135916080820135919081019060c0810160a08201356401000000008111156100b857600080fd5b8201836020820111156100ca57600080fd5b803590602001918460208302840111640100000000831117156100ec57600080fd5b9193509150356001600160a01b0316610269565b604080519115158252519081900360200190f35b6101de600480360360a081101561012a57600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561016157600080fd5b82018360208201111561017357600080fd5b8035906020019184602083028401116401000000008311171561019557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550505090356001600160a01b031691506104ca9050565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b61024f600480360360a081101561022757600080fd5b50803590602081013590604081013590606081013590608001356001600160a01b0316610ac6565b60408051918252519081900360200190f35b61024f610bb1565b6000610273611008565b6001600160a01b038a166000908152602088905260409020600c0154600160d01b900460ff1615806102c957506001600160a01b03808a16600090815260208881526040808320938e168352929052205460ff16155b156102d85760019150506104be565b6103198988888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a92506104ca915050565b5060808601525060608401526040830181905260208301919091526103425760019150506104be565b61040e8760008c6001600160a01b03166001600160a01b0316815260200190815260200160002060080154600a0a6104028a866001600160a01b031663b3596f078f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156103ca57600080fd5b505afa1580156103de573d6000803e3d6000fd5b505050506040513d60208110156103f457600080fd5b50519063ffffffff610bbd16565b9063ffffffff610c1f16565b60c0820181905260208201516104299163ffffffff610c6116565b60e0820181905261043e5760009150506104be565b6104898160e001516104026104648460a001518560c00151610bbd90919063ffffffff16565b6080850151602086015161047d9163ffffffff610bbd16565b9063ffffffff610c6116565b610100820181905260e0820151604083015160608401516000936104af93929190610ca3565b670de0b6b3a764000010925050505b98975050505050505050565b6000806000806000806104db611064565b60006101008201525b885181610100015110156109fe57888161010001518151811061050357fe5b60200260200101518161020001906001600160a01b031690816001600160a01b03168152505060008b60008361020001516001600160a01b03166001600160a01b0316815260200190815260200160002090508060090160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156105c357600080fd5b505afa1580156105d7573d6000803e3d6000fd5b505050506040513d60208110156105ed57600080fd5b810190808051906020019092919050505082604001818152505080600a0160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561067457600080fd5b505afa158015610688573d6000803e3d6000fd5b505050506040513d602081101561069e57600080fd5b810190808051906020019092919050505082606001818152505061076581600b0160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561072857600080fd5b505afa15801561073c573d6000803e3d6000fd5b505050506040513d602081101561075257600080fd5b505160608401519063ffffffff610d3116565b6060830152604082015115801561077e57506060820151155b1561078957506109ed565b8060080154600a0a826020018181525050886001600160a01b031663b3596f078b846101000151815181106107ba57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561080857600080fd5b505afa15801561081c573d6000803e3d6000fd5b505050506040513d602081101561083257600080fd5b50518252604082015115610965576000610865836020015161040285604001518660000151610bbd90919063ffffffff16565b600c830154909150600160d01b900460ff1680156108dd57508b60008f6001600160a01b03166001600160a01b0316815260200190815260200160002060008c856101000151815181106108b557fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff165b15610963576101408301516108f8908263ffffffff610d3116565b610140840152600582015461092a9061091890839063ffffffff610bbd16565b6101a08501519063ffffffff610d3116565b6101a0840152600682015461095c9061094a90839063ffffffff610bbd16565b6101c08501519063ffffffff610d3116565b6101c08401525b505b6060820151156109eb576109a7610995836020015161040285606001518660000151610bbd90919063ffffffff16565b6101608401519063ffffffff610d3116565b6101608301526020820151825160e08401516109e4926109d29290916104029163ffffffff610bbd16565b6101808401519063ffffffff610d3116565b6101808301525b505b6101008101805160010190526104e4565b600081610140015111610a12576000610a2d565b6101408101516101a0820151610a2d9163ffffffff610c1f16565b6101a0820152610140810151610a44576000610a5f565b6101408101516101c0820151610a5f9163ffffffff610c1f16565b6101c08201819052610140820151610160830151610180840151610a8293610ca3565b61012082018190526101408201516101608301516101808401516101a08501516101c090950151929a50909850965091945090925090509550955095509550955095565b600080610ade6064610402898763ffffffff610bbd16565b905085811015610af2576000915050610ba8565b610b12610b05878763ffffffff610d3116565b829063ffffffff610c6116565b60408051630e563a7d60e41b81523360048201526024810183905290519192506000916001600160a01b0386169163e563a7d0916044808301926020929190829003018186803b158015610b6557600080fd5b505afa158015610b79573d6000803e3d6000fd5b505050506040513d6020811015610b8f57600080fd5b50519050610ba3828263ffffffff610c6116565b925050505b95945050505050565b670de0b6b3a764000081565b600082610bcc57506000610c19565b82820282848281610bd957fe5b0414610c165760405162461bcd60e51b81526004018080602001828103825260218152602001806111066021913960400191505060405180910390fd5b90505b92915050565b6000610c1683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610d8b565b6000610c1683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e2d565b6000610ce46040518060400160405280601881526020017f426f72726f772062616c616e636520455448206973202573000000000000000081525085610e87565b83610cf25750600019610d29565b610d26610d05858563ffffffff610d3116565b610d1a6064610402898763ffffffff610bbd16565b9063ffffffff610fdc16565b90505b949350505050565b600082820183811015610c16576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183610e175760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610ddc578181015183820152602001610dc4565b50505050905090810190601f168015610e095780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610e2357fe5b0495945050505050565b60008184841115610e7f5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610ddc578181015183820152602001610dc4565b505050900390565b60006a636f6e736f6c652e6c6f676001600160a01b031683836040516024018080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015610ee6578181015183820152602001610ece565b50505050905090810190601f168015610f135780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166309710a9d60e41b17815290518251929650945084935091508083835b60208310610f6f5780518252601f199092019160209182019101610f50565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610fcf576040519150601f19603f3d011682016040523d82523d6000602084013e610fd4565b606091505b505050505050565b600060028204610d2983610402610ffb87670de0b6b3a7640000610bbd565b849063ffffffff610d3116565b604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b60405180610260016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b03168152602001600015158152602001600015158152509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212209b7bfe88e5f8d8053619604ab485d0ade349cacf051d0d8868bc9eb0427d246364736f6c63430006080033"; diff --git a/types/LendingPool.d.ts b/types/LendingPool.d.ts index 290fe4af..ee67a77b 100644 --- a/types/LendingPool.d.ts +++ b/types/LendingPool.d.ts @@ -385,6 +385,7 @@ export class LendingPool extends Contract { getReserveConfigurationData( _reserve: string ): Promise<{ + decimals: BigNumber; ltv: BigNumber; liquidationThreshold: BigNumber; liquidationBonus: BigNumber; @@ -398,13 +399,14 @@ export class LendingPool extends Contract { 0: BigNumber; 1: BigNumber; 2: BigNumber; - 3: string; + 3: BigNumber; 4: string; - 5: boolean; + 5: string; 6: boolean; 7: boolean; 8: boolean; 9: boolean; + 10: boolean; }>; getReserveData( @@ -650,6 +652,7 @@ export class LendingPool extends Contract { getReserveConfigurationData( _reserve: string ): Promise<{ + decimals: BigNumber; ltv: BigNumber; liquidationThreshold: BigNumber; liquidationBonus: BigNumber; @@ -663,13 +666,14 @@ export class LendingPool extends Contract { 0: BigNumber; 1: BigNumber; 2: BigNumber; - 3: string; + 3: BigNumber; 4: string; - 5: boolean; + 5: string; 6: boolean; 7: boolean; 8: boolean; 9: boolean; + 10: boolean; }>; getReserveData( diff --git a/types/LendingPoolConfiguratorFactory.ts b/types/LendingPoolConfiguratorFactory.ts index f28f52f9..3696b29b 100644 --- a/types/LendingPoolConfiguratorFactory.ts +++ b/types/LendingPoolConfiguratorFactory.ts @@ -670,4 +670,4 @@ const _abi = [ ]; const _bytecode = - "0x60806040526000805534801561001457600080fd5b50615192806100246000396000f3fe60806040523480156200001157600080fd5b5060043610620001485760003560e01c8063a5bc826c11620000bd578063d466016f116200007b578063d466016f1462000530578063e8ae2f5b146200055f578063eede87c11462000588578063ef1f937314620005b9578063f53a251514620005e25762000148565b8063a5bc826c1462000451578063a8dc0f45146200048c578063b75d6f3414620004b5578063bf34418314620004de578063c4d66de814620005075762000148565b806366bbd928116200010b57806366bbd928146200038857806370fb84f414620003b75780637aca76eb14620003e65780637af635a6146200040f57806380e17d87146200042b5762000148565b80631133c0f7146200014d5780631d2118f914620002b35780633443a14b14620002e45780633e72a45414620003135780635dd9a189146200033c575b600080fd5b620002b1600480360360e08110156200016557600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156200019057600080fd5b820183602082011115620001a357600080fd5b803590602001918460018302840111600160201b83111715620001c557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200021857600080fd5b8201836020820111156200022b57600080fd5b803590602001918460018302840111600160201b831117156200024d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550506001600160a01b03833581169450602084013581169360ff6040820135169350606001351690506200060b565b005b620002b160048036036040811015620002cb57600080fd5b506001600160a01b038135811691602001351662000965565b620002b160048036036040811015620002fc57600080fd5b506001600160a01b03813516906020013562000b4d565b620002b1600480360360208110156200032b57600080fd5b50356001600160a01b031662000d33565b620002b1600480360360a08110156200035457600080fd5b506001600160a01b03813581169160ff60208201351691604082013581169160608101358216916080909101351662000ff3565b620002b160048036036040811015620003a057600080fd5b506001600160a01b03813516906020013562001426565b620002b160048036036040811015620003cf57600080fd5b506001600160a01b0381351690602001356200160c565b620002b160048036036020811015620003fe57600080fd5b50356001600160a01b0316620017f2565b62000419620019c7565b60408051918252519081900360200190f35b62000435620019cc565b604080516001600160a01b039092168252519081900360200190f35b620002b1600480360360808110156200046957600080fd5b506001600160a01b038135169060208101359060408101359060600135620019db565b620002b160048036036020811015620004a457600080fd5b50356001600160a01b031662001bd9565b620002b160048036036020811015620004cd57600080fd5b50356001600160a01b031662001db3565b620002b160048036036020811015620004f657600080fd5b50356001600160a01b031662001f88565b620002b1600480360360208110156200051f57600080fd5b50356001600160a01b03166200215d565b620002b1600480360360408110156200054857600080fd5b506001600160a01b0381351690602001356200221f565b620002b1600480360360208110156200057757600080fd5b50356001600160a01b031662002405565b620002b160048036036040811015620005a057600080fd5b506001600160a01b0381351690602001351515620025d3565b620002b160048036036020811015620005d157600080fd5b50356001600160a01b0316620027c2565b620002b160048036036020811015620005fa57600080fd5b50356001600160a01b031662002995565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200065057600080fd5b505afa15801562000665573d6000803e3d6000fd5b505050506040513d60208110156200067c57600080fd5b50516001600160a01b031614620006c55760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b6034546040516000916001600160a01b031690899085908a908a90620006eb9062002b73565b6001600160a01b038087168252851660208083019190915260ff8516604083015260a06060830181815285519184019190915284519091608084019160c085019187019080838360005b838110156200074f57818101518382015260200162000735565b50505050905090810190601f1680156200077d5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015620007b257818101518382015260200162000798565b50505050905090810190601f168015620007e05780820380516001836020036101000a031916815260200191505b50975050505050505050604051809103906000f08015801562000807573d6000803e3d6000fd5b509050603460009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200085957600080fd5b505afa1580156200086e573d6000803e3d6000fd5b505050506040513d60208110156200088557600080fd5b5051604080516309eab60f60e01b81526001600160a01b038b8116600483015284811660248301528881166044830152878116606483015260ff8716608483015285811660a4830152915191909216916309eab60f9160c480830192600092919082900301818387803b158015620008fc57600080fd5b505af115801562000911573d6000803e3d6000fd5b5050604080516001600160a01b03868116825291518286169450918c1692507f1d9fcd0dc935b4778d5af97f55c4d7b2553257382f1ef25c412114c8eeebd88e919081900360200190a35050505050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b158015620009aa57600080fd5b505afa158015620009bf573d6000803e3d6000fd5b505050506040513d6020811015620009d657600080fd5b50516001600160a01b03161462000a1f5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562000a6557600080fd5b505afa15801562000a7a573d6000803e3d6000fd5b505050506040513d602081101562000a9157600080fd5b505160408051631d2118f960e01b81526001600160a01b0386811660048301528581166024830152915192935090831691631d2118f99160448082019260009290919082900301818387803b15801562000aea57600080fd5b505af115801562000aff573d6000803e3d6000fd5b5050604080516001600160a01b0380881682528616602082015281517f5644b64ebb0ce18c4032248ca52f58355469092ff072866c3dcd8640e817d6a59450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562000b9257600080fd5b505afa15801562000ba7573d6000803e3d6000fd5b505050506040513d602081101562000bbe57600080fd5b50516001600160a01b03161462000c075760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562000c4d57600080fd5b505afa15801562000c62573d6000803e3d6000fd5b505050506040513d602081101562000c7957600080fd5b505160408051633443a14b60e01b81526001600160a01b03868116600483015260248201869052915192935090831691633443a14b9160448082019260009290919082900301818387803b15801562000cd157600080fd5b505af115801562000ce6573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517f437dd3b61b7c7eee7fc70515c8846482dfca92e2e1e02af5d638c5d4878d67149450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562000d7857600080fd5b505afa15801562000d8d573d6000803e3d6000fd5b505050506040513d602081101562000da457600080fd5b50516001600160a01b03161462000ded5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562000e3357600080fd5b505afa15801562000e48573d6000803e3d6000fd5b505050506040513d602081101562000e5f57600080fd5b5051604080516335ea6a7560e01b81526001600160a01b038581166004830152915192935060009283928392908616916335ea6a759160248082019261014092909190829003018186803b15801562000eb757600080fd5b505afa15801562000ecc573d6000803e3d6000fd5b505050506040513d61014081101562000ee457600080fd5b508051602082015160409092015190945090925090508215801562000f07575081155b801562000f12575080155b62000f4f5760405162461bcd60e51b815260040180806020018281038252602a81526020018062005133602a913960400191505060405180910390fd5b6040805163b736aaeb60e01b81526001600160a01b03878116600483015260006024830181905292519087169263b736aaeb926044808201939182900301818387803b15801562000f9f57600080fd5b505af115801562000fb4573d6000803e3d6000fd5b50506040516001600160a01b03881692507f6f60cf8bd0f218cabe1ea3150bd07b0b758c35c4cfdf7138017a283e65564d5e9150600090a25050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200103857600080fd5b505afa1580156200104d573d6000803e3d6000fd5b505050506040513d60208110156200106457600080fd5b50516001600160a01b031614620010ad5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b6060856001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015620010e957600080fd5b505afa158015620010fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156200112857600080fd5b8101908080516040519392919084600160201b8211156200114857600080fd5b9083019060208201858111156200115e57600080fd5b8251600160201b8111828201881017156200117857600080fd5b82525081516020918201929091019080838360005b83811015620011a75781810151838201526020016200118d565b50505050905090810190601f168015620011d55780820380516001836020036101000a031916815260200191505b50604052505050604051602001808075020b0bb329024b73a32b932b9ba103132b0b934b733960551b81525060160182805190602001908083835b60208310620012315780518252601f19909201916020918201910162001210565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405290506060866001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015620012a357600080fd5b505afa158015620012b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015620012e257600080fd5b8101908080516040519392919084600160201b8211156200130257600080fd5b9083019060208201858111156200131857600080fd5b8251600160201b8111828201881017156200133257600080fd5b82525081516020918201929091019080838360005b838110156200136157818101518382015260200162001347565b50505050905090810190601f1680156200138f5780820380516001836020036101000a031916815260200191505b506040525050506040516020018080606160f81b81525060010182805190602001908083835b60208310620013d65780518252601f199092019160209182019101620013b5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405290506200141d87838387878b8b6200060b565b50505050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200146b57600080fd5b505afa15801562001480573d6000803e3d6000fd5b505050506040513d60208110156200149757600080fd5b50516001600160a01b031614620014e05760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200152657600080fd5b505afa1580156200153b573d6000803e3d6000fd5b505050506040513d60208110156200155257600080fd5b505160408051630cd77b2560e31b81526001600160a01b038681166004830152602482018690529151929350908316916366bbd9289160448082019260009290919082900301818387803b158015620015aa57600080fd5b505af1158015620015bf573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517f2e73b7f1df792712003e6859f940c1e8711c3f1329474771fee71d2ec11631299450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200165157600080fd5b505afa15801562001666573d6000803e3d6000fd5b505050506040513d60208110156200167d57600080fd5b50516001600160a01b031614620016c65760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200170c57600080fd5b505afa15801562001721573d6000803e3d6000fd5b505050506040513d60208110156200173857600080fd5b505160408051631c3ee13d60e21b81526001600160a01b038681166004830152602482018690529151929350908316916370fb84f49160448082019260009290919082900301818387803b1580156200179057600080fd5b505af1158015620017a5573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517fe3ba662f7011e701056a43e8cf832242322eeff01453e7a72d01ec2af36d9aec9450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200183757600080fd5b505afa1580156200184c573d6000803e3d6000fd5b505050506040513d60208110156200186357600080fd5b50516001600160a01b031614620018ac5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b158015620018f257600080fd5b505afa15801562001907573d6000803e3d6000fd5b505050506040513d60208110156200191e57600080fd5b5051604080516325ba55f160e21b81526001600160a01b038581166004830152600160248301529151929350908316916396e957c49160448082019260009290919082900301818387803b1580156200197657600080fd5b505af11580156200198b573d6000803e3d6000fd5b50506040516001600160a01b03851692507fda5cdb66c77023db6abe5226a4d4a40c3b8e768012f4ff4e446f62f60127fc569150600090a25050565b600381565b6034546001600160a01b031681565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001a2057600080fd5b505afa15801562001a35573d6000803e3d6000fd5b505050506040513d602081101562001a4c57600080fd5b50516001600160a01b03161462001a955760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562001adb57600080fd5b505afa15801562001af0573d6000803e3d6000fd5b505050506040513d602081101562001b0757600080fd5b50516040805163296f209b60e21b81526001600160a01b03888116600483015260248201889052604482018790526064820186905291519293509083169163a5bc826c9160848082019260009290919082900301818387803b15801562001b6d57600080fd5b505af115801562001b82573d6000803e3d6000fd5b5050604080518781526020810187905280820186905290516001600160a01b03891693507fdfe62f53e7707d64f99bca15d2bdf3facc4074bc047e7dec2ea130300e99274492509081900360600190a25050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001c1e57600080fd5b505afa15801562001c33573d6000803e3d6000fd5b505050506040513d602081101562001c4a57600080fd5b50516001600160a01b03161462001c935760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562001cd957600080fd5b505afa15801562001cee573d6000803e3d6000fd5b505050506040513d602081101562001d0557600080fd5b505160408051636ee365f960e01b81526001600160a01b038581166004830152600060248301819052604483018190529251939450841692636ee365f99260648084019391929182900301818387803b15801562001d6257600080fd5b505af115801562001d77573d6000803e3d6000fd5b50506040516001600160a01b03851692507fe9a7e5fd4fc8ea18e602350324bf48e8f05d12434af0ce0be05743e6a5fdcb9e9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001df857600080fd5b505afa15801562001e0d573d6000803e3d6000fd5b505050506040513d602081101562001e2457600080fd5b50516001600160a01b03161462001e6d5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562001eb357600080fd5b505afa15801562001ec8573d6000803e3d6000fd5b505050506040513d602081101562001edf57600080fd5b50516040805163b736aaeb60e01b81526001600160a01b0385811660048301526001602483015291519293509083169163b736aaeb9160448082019260009290919082900301818387803b15801562001f3757600080fd5b505af115801562001f4c573d6000803e3d6000fd5b50506040516001600160a01b03851692507f35b80cd8ea3440e9a8454f116fa658b858da1b64c86c48451f4559cefcdfb56c9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001fcd57600080fd5b505afa15801562001fe2573d6000803e3d6000fd5b505050506040513d602081101562001ff957600080fd5b50516001600160a01b031614620020425760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200208857600080fd5b505afa1580156200209d573d6000803e3d6000fd5b505050506040513d6020811015620020b457600080fd5b5051604080516339d9797960e11b81526001600160a01b038581166004830152600160248301529151929350908316916373b2f2f29160448082019260009290919082900301818387803b1580156200210c57600080fd5b505af115801562002121573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8dee2b2f3e98319ae6347eda521788f73f4086c9be9a594942b370b137fb8cb19150600090a25050565b60006200216962002b68565b60015490915060ff16806200218357506200218362002b6d565b8062002190575060005481115b620021cd5760405162461bcd60e51b815260040180806020018281038252602e81526020018062005105602e913960400191505060405180910390fd5b60015460ff16158015620021ed576001805460ff19168117905560008290555b603480546001600160a01b0319166001600160a01b03851617905580156200221a576001805460ff191690555b505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200226457600080fd5b505afa15801562002279573d6000803e3d6000fd5b505050506040513d60208110156200229057600080fd5b50516001600160a01b031614620022d95760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200231f57600080fd5b505afa15801562002334573d6000803e3d6000fd5b505050506040513d60208110156200234b57600080fd5b50516040805163d466016f60e01b81526001600160a01b0386811660048301526024820186905291519293509083169163d466016f9160448082019260009290919082900301818387803b158015620023a357600080fd5b505af1158015620023b8573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517fda47540c7f7fd5a68c3285f3bb708f322424f948f41df6f51622fa24b39686649450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200244a57600080fd5b505afa1580156200245f573d6000803e3d6000fd5b505050506040513d60208110156200247657600080fd5b50516001600160a01b031614620024bf5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200250557600080fd5b505afa1580156200251a573d6000803e3d6000fd5b505050506040513d60208110156200253157600080fd5b50516040805163e8ae2f5b60e01b81526001600160a01b03858116600483015291519293509083169163e8ae2f5b9160248082019260009290919082900301818387803b1580156200258257600080fd5b505af115801562002597573d6000803e3d6000fd5b50506040516001600160a01b03851692507f9cc75e4cafc9a556a369bc53468649075680eb554d225d5918f199453824796d9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200261857600080fd5b505afa1580156200262d573d6000803e3d6000fd5b505050506040513d60208110156200264457600080fd5b50516001600160a01b0316146200268d5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b158015620026d357600080fd5b505afa158015620026e8573d6000803e3d6000fd5b505050506040513d6020811015620026ff57600080fd5b505160408051636ee365f960e01b81526001600160a01b038681166004830152851515602483015260016044830152915192935090831691636ee365f99160648082019260009290919082900301818387803b1580156200275f57600080fd5b505af115801562002774573d6000803e3d6000fd5b5050604080516001600160a01b0387168152851515602082015281517fab2f7f9e5ca2772fafa94f355c1842a80ae6b9e41f83083098d81f67d7a0b5089450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200280757600080fd5b505afa1580156200281c573d6000803e3d6000fd5b505050506040513d60208110156200283357600080fd5b50516001600160a01b0316146200287c5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b158015620028c257600080fd5b505afa158015620028d7573d6000803e3d6000fd5b505050506040513d6020811015620028ee57600080fd5b5051604080516325ba55f160e21b81526001600160a01b03858116600483015260006024830181905292519394508416926396e957c49260448084019391929182900301818387803b1580156200294457600080fd5b505af115801562002959573d6000803e3d6000fd5b50506040516001600160a01b03851692507f995959c2ceab6ce20e8cd89c904e449fd3e21918a0f420c9ec9340595585526b9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b158015620029da57600080fd5b505afa158015620029ef573d6000803e3d6000fd5b505050506040513d602081101562002a0657600080fd5b50516001600160a01b03161462002a4f5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562002a9557600080fd5b505afa15801562002aaa573d6000803e3d6000fd5b505050506040513d602081101562002ac157600080fd5b5051604080516339d9797960e11b81526001600160a01b03858116600483015260006024830181905292519394508416926373b2f2f29260448084019391929182900301818387803b15801562002b1757600080fd5b505af115801562002b2c573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8bbf35441ac2c607ddecadd3d8ee58636d32f217fad201fb2655581502dd84e39150600090a25050565b600390565b303b1590565b61255a8062002b828339019056fe60806040523480156200001157600080fd5b506040516200255a3803806200255a833981810160405260a08110156200003757600080fd5b8151602083015160408085015160608601805192519496939591949391820192846401000000008211156200006b57600080fd5b9083019060208201858111156200008157600080fd5b82516401000000008111828201881017156200009c57600080fd5b82525081516020918201929091019080838360005b83811015620000cb578181015183820152602001620000b1565b50505050905090810190601f168015620000f95780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011d57600080fd5b9083019060208201858111156200013357600080fd5b82516401000000008111828201881017156200014e57600080fd5b82525081516020918201929091019080838360005b838110156200017d57818101518382015260200162000163565b50505050905090810190601f168015620001ab5780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001cb906003906020850190620002eb565b508051620001e1906004906020840190620002eb565b50506005805460ff191660121790555062000205836001600160e01b03620002d516565b600a80546001600160a01b0319166001600160a01b03878116919091179182905560408051630261bf8b60e01b815290519290911691630261bf8b91600480820192602092909190829003018186803b1580156200026257600080fd5b505afa15801562000277573d6000803e3d6000fd5b505050506040513d60208110156200028e57600080fd5b5051600b80546001600160a01b0319166001600160a01b0392831617905560058054610100600160a81b031916610100969092169590950217909355506200039092505050565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200032e57805160ff19168380011785556200035e565b828001600101855582156200035e579182015b828111156200035e57825182559160200191906001019062000341565b506200036c92915062000370565b5090565b6200038d91905b808211156200036c576000815560010162000377565b90565b6121ba80620003a06000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80635eae177c116100de578063a9059cbb11610097578063db006a7511610071578063db006a75146104f3578063dd62ed3e14610510578063ee9907a41461053e578063f866c3191461056457610173565b8063a9059cbb14610499578063c634dfaa146104c5578063d0fc81d2146104eb57610173565b80635eae177c146103df57806370a082311461040b57806389d1a0fc1461043157806394362e8b1461043957806395d89b4114610465578063a457c2d71461046d57610173565b806323b872dd1161013057806323b872dd146102c3578063313ce567146102f9578063325a9b131461031757806339509351146103455780633edb7cb814610371578063445e80101461039d57610173565b806306fdde0314610178578063095ea7b3146101f55780630e49072d1461023557806312c87c2d1461025d57806318160ddd146102835780631d51e7cf1461029d575b600080fd5b61018061059a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ba5781810151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102216004803603604081101561020b57600080fd5b506001600160a01b038135169060200135610631565b604080519115158252519081900360200190f35b61025b6004803603602081101561024b57600080fd5b50356001600160a01b031661064f565b005b61025b6004803603602081101561027357600080fd5b50356001600160a01b031661065c565b61028b6106fb565b60408051918252519081900360200190f35b61028b600480360360208110156102b357600080fd5b50356001600160a01b03166107bd565b610221600480360360608110156102d957600080fd5b506001600160a01b038135811691602081013590911690604001356107dc565b610301610869565b6040805160ff9092168252519081900360200190f35b61025b6004803603604081101561032d57600080fd5b506001600160a01b0381358116916020013516610872565b6102216004803603604081101561035b57600080fd5b506001600160a01b0381351690602001356108d8565b61025b6004803603604081101561038757600080fd5b506001600160a01b03813516906020013561092c565b6103c3600480360360208110156103b357600080fd5b50356001600160a01b0316610a21565b604080516001600160a01b039092168252519081900360200190f35b610221600480360360408110156103f557600080fd5b506001600160a01b038135169060200135610a3f565b61028b6004803603602081101561042157600080fd5b50356001600160a01b0316610ada565b6103c3610b8d565b61025b6004803603604081101561044f57600080fd5b506001600160a01b038135169060200135610ba1565b610180610c76565b6102216004803603604081101561048357600080fd5b506001600160a01b038135169060200135610cd7565b610221600480360360408110156104af57600080fd5b506001600160a01b038135169060200135610d45565b61028b600480360360208110156104db57600080fd5b50356001600160a01b0316610d59565b61028b610d64565b61025b6004803603602081101561050957600080fd5b5035610d6a565b61028b6004803603604081101561052657600080fd5b506001600160a01b0381358116916020013516610fa4565b61028b6004803603602081101561055457600080fd5b50356001600160a01b0316610fcf565b61025b6004803603606081101561057a57600080fd5b506001600160a01b03813581169160208101359091169060400135610fea565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b820191906000526020600020905b81548152906001019060200180831161060957829003601f168201915b505050505090505b90565b600061064561063e611043565b8484611047565b5060015b92915050565b6106593382611133565b50565b6001600160a01b0381163314156106a45760405162461bcd60e51b8152600401808060200182810382526025815260200180611f806025913960400191505060405180910390fd5b3360008181526009602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b91a350565b600080610706611322565b90508061071757600091505061062e565b600b546005546040805163d15e005360e01b81526001600160a01b036101009093048316600482015290516107b7936107b293169163d15e0053916024808301926020929190829003018186803b15801561077157600080fd5b505afa158015610785573d6000803e3d6000fd5b505050506040513d602081101561079b57600080fd5b50516107a684611328565b9063ffffffff61133e16565b611389565b91505090565b6001600160a01b0381166000908152600860205260409020545b919050565b60006107e98484846113a2565b61085f846107f5611043565b61085a85604051806060016040528060288152602001611fc6602891396001600160a01b038a16600090815260016020526040812090610833611043565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61141116565b611047565b5060019392505050565b60055460ff1690565b6001600160a01b038281166000908152600960205260409020541633146108ca5760405162461bcd60e51b815260040180806020018281038252603a81526020018061214b603a913960400191505060405180910390fd5b6108d48282611133565b5050565b60006106456108e5611043565b8461085a85600160006108f6611043565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6114a816565b600b546001600160a01b031633146109755760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080600061098385611502565b935093509350506109958583866115f3565b61099f858561172a565b60006109b1848663ffffffff61183216565b6109c1576109be86611874565b90505b856001600160a01b03167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db8685846109f957856109fc565b60005b60408051938452602084019290925282820152519081900360600190a2505050505050565b6001600160a01b039081166000908152600760205260409020541690565b600b54600554604080516376e9d61560e01b81526101009092046001600160a01b039081166004840152858116602484015260448301859052905160009391909116916376e9d615916064808301926020929190829003018186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d6020811015610ad157600080fd5b50519392505050565b600080610ae683611926565b6001600160a01b03841660009081526008602052604090205490915081158015610b0e575080155b15610b1e576000925050506107d7565b6001600160a01b0384811660009081526007602052604090205416610b6f57610b6681610b5a86610b55868463ffffffff6114a816565b611941565b9063ffffffff61183216565b925050506107d7565b610b66610b8082610b5a8785611941565b839063ffffffff6114a816565b60055461010090046001600160a01b031681565b600b546001600160a01b03163314610bea5760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080610bf684611502565b935093505050610c1a84610c1385856114a890919063ffffffff16565b60006115f3565b610c2484846119f6565b604080518481526020810184905280820183905290516001600160a01b038616917fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a919081900360600190a250505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b6000610645610ce4611043565b8461085a856040518060600160405280602581526020016121266025913960016000610d0e611043565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61141116565b6000610645610d52611043565b84846113a2565b600061064982611926565b60001981565b60008111610dbf576040805162461bcd60e51b815260206004820181905260248201527f416d6f756e7420746f2072656465656d206e6565647320746f206265203e2030604482015290519081900360640190fd5b6000806000610dcd33611502565b91955093509150849050600019811415610de45750825b83811115610e235760405162461bcd60e51b8152600401808060200182810382526032815260200180611f066032913960400191505060405180910390fd5b610e2d3382610a3f565b610e7e576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b610e893384836115f3565b610e93338261172a565b6000610ea5858363ffffffff61183216565b610eb557610eb233611874565b90505b600b546005546001600160a01b0391821691639895e3d8916101009004163385610ee58a8263ffffffff61183216565b6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001838152602001828152602001945050505050600060405180830381600087803b158015610f5457600080fd5b505af1158015610f68573d6000803e3d6000fd5b50505050336001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a76468386846109f957866109fc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b031660009081526006602052604090205490565b600b546001600160a01b031633146110335760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b61103e838383611af2565b505050565b3390565b6001600160a01b03831661108c5760405162461bcd60e51b81526004018080602001828103825260248152602001806120d06024913960400191505060405180910390fd5b6001600160a01b0382166110d15760405162461bcd60e51b8152600401808060200182810382526022815260200180611f386022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0380831660009081526007602052604090205481169082168114156111905760405162461bcd60e51b815260040180806020018281038252602a815260200180611fee602a913960400191505060405180910390fd5b60008060008061119f87611502565b9350935093509350600083116111e65760405162461bcd60e51b81526004018080602001828103825260428152602001806120186042913960600191505060405180910390fd5b6001600160a01b0385161561120157611201876000866115f3565b866001600160a01b0316866001600160a01b0316141561128d576001600160a01b038716600081815260076020908152604080832080546001600160a01b03191690558051878152918201869052818101859052519192917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050506108d4565b6001600160a01b03878116600090815260076020526040812080546001600160a01b031916928916929092179091556112c990889085906115f3565b604080518481526020810184905280820183905290516001600160a01b0380891692908a16917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050505050565b60025490565b600061064982633b9aca0063ffffffff611c2116565b60006113826b033b2e3c9fd0803ce8000000611376611363868663ffffffff611c2116565b6b019d971e4fe8401e74000000906114a8565b9063ffffffff611c7a16565b9392505050565b6000631dcd6500611382633b9aca0061137683866114a8565b82816113ae8282610a3f565b6113ff576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b61140a858585611af2565b5050505050565b600081848411156114a05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561146557818101518382015260200161144d565b50505050905090810190601f1680156114925780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611382576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600061151386611926565b9050600061152482610b5a89610ada565b905061153087826119f6565b600b546005546040805163d15e005360e01b81526101009092046001600160a01b0390811660048401529051600093919091169163d15e0053916024808301926020929190829003018186803b15801561158957600080fd5b505afa15801561159d573d6000803e3d6000fd5b505050506040513d60208110156115b357600080fd5b50516001600160a01b03891660009081526006602052604090208190559050826115e3818463ffffffff6114a816565b9099909850919650945092505050565b6001600160a01b038084166000908152600760205260409020541680611619575061103e565b60008061162583611502565b6001600160a01b038716600090815260086020526040902054919550935061165b9250869150610b5a908863ffffffff6114a816565b6001600160a01b038085166000908152600860209081526040808320949094556007905291909120541680156116ce576001600160a01b0381166000908152600860205260409020546116b4908463ffffffff6114a816565b6001600160a01b0382166000908152600860205260409020555b60408051848152602081018490528082018890526060810187905290516001600160a01b038616917f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f919081900360800190a250505050505050565b6001600160a01b03821661176f5760405162461bcd60e51b815260040180806020018281038252602181526020018061208a6021913960400191505060405180910390fd5b61177b8260008361103e565b6117be81604051806060016040528060228152602001611ee4602291396001600160a01b038516600090815260208190526040902054919063ffffffff61141116565b6001600160a01b0383166000908152602081905260409020556002546117ea908263ffffffff61183216565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061138283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611411565b6001600160a01b038116600081815260076020908152604080832080546001600160a01b03191690558051838152918201839052818101839052519192839290917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594919081900360600190a36001600160a01b03821660009081526008602052604090205461191e57506001600160a01b03811660009081526006602052604081205560016107d7565b5060006107d7565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b03808316600090815260066020908152604080832054600b54600554835163d15e005360e01b81526101009091048716600482015292519495611382956107b29593946119ea94939092169263d15e00539260248082019391829003018186803b1580156119b557600080fd5b505afa1580156119c9573d6000803e3d6000fd5b505050506040513d60208110156119df57600080fd5b50516107a687611328565b9063ffffffff611cbc16565b6001600160a01b038216611a51576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611a5d6000838361103e565b600254611a70908263ffffffff6114a816565b6002556001600160a01b038216600090815260208190526040902054611a9c908263ffffffff6114a816565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008111611b315760405162461bcd60e51b815260040180806020018281038252603081526020018061205a6030913960400191505060405180910390fd5b6000806000611b3f86611502565b93509350935050600080611b5287611502565b935093505050611b638885886115f3565b611b7787610c13848963ffffffff6114a816565b611b82888888611cf4565b6000611b94868863ffffffff61183216565b611ba457611ba189611874565b90505b876001600160a01b0316896001600160a01b03167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde889888786611be75789611bea565b60005b60408051948552602085019390935283830191909152606083015260808201879052519081900360a00190a3505050505050505050565b600082611c3057506000610649565b82820282848281611c3d57fe5b04146113825760405162461bcd60e51b8152600401808060200182810382526021815260200180611fa56021913960400191505060405180910390fd5b600061138283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e5b565b600060028204611cec83611376611cdf876b033b2e3c9fd0803ce8000000611c21565b849063ffffffff6114a816565b949350505050565b6001600160a01b038316611d395760405162461bcd60e51b81526004018080602001828103825260258152602001806120ab6025913960400191505060405180910390fd5b6001600160a01b038216611d7e5760405162461bcd60e51b8152600401808060200182810382526023815260200180611ec16023913960400191505060405180910390fd5b611d8983838361103e565b611dcc81604051806060016040528060268152602001611f5a602691396001600160a01b038616600090815260208190526040902054919063ffffffff61141116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e01908263ffffffff6114a816565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008183611eaa5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561146557818101518382015260200161144d565b506000838581611eb657fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a2646970667358221220715e21f1cc4da6188a98142c6f8f7e59edec3b15b061e414ee149a903c8b308364736f6c634300060800335468652063616c6c6572206d7573742062652061206c656e64696e6720706f6f6c206d616e61676572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564546865206c6971756964697479206f66207468652072657365727665206e6565647320746f2062652030a2646970667358221220be5281b4038c76e55cef8c24f1c4cd0a7706e2518a928068937630e0b43787d764736f6c63430006080033"; + "0x60806040526000805534801561001457600080fd5b50615192806100246000396000f3fe60806040523480156200001157600080fd5b5060043610620001485760003560e01c8063a5bc826c11620000bd578063d466016f116200007b578063d466016f1462000530578063e8ae2f5b146200055f578063eede87c11462000588578063ef1f937314620005b9578063f53a251514620005e25762000148565b8063a5bc826c1462000451578063a8dc0f45146200048c578063b75d6f3414620004b5578063bf34418314620004de578063c4d66de814620005075762000148565b806366bbd928116200010b57806366bbd928146200038857806370fb84f414620003b75780637aca76eb14620003e65780637af635a6146200040f57806380e17d87146200042b5762000148565b80631133c0f7146200014d5780631d2118f914620002b35780633443a14b14620002e45780633e72a45414620003135780635dd9a189146200033c575b600080fd5b620002b1600480360360e08110156200016557600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156200019057600080fd5b820183602082011115620001a357600080fd5b803590602001918460018302840111600160201b83111715620001c557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200021857600080fd5b8201836020820111156200022b57600080fd5b803590602001918460018302840111600160201b831117156200024d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550506001600160a01b03833581169450602084013581169360ff6040820135169350606001351690506200060b565b005b620002b160048036036040811015620002cb57600080fd5b506001600160a01b038135811691602001351662000965565b620002b160048036036040811015620002fc57600080fd5b506001600160a01b03813516906020013562000b4d565b620002b1600480360360208110156200032b57600080fd5b50356001600160a01b031662000d33565b620002b1600480360360a08110156200035457600080fd5b506001600160a01b03813581169160ff60208201351691604082013581169160608101358216916080909101351662000ff3565b620002b160048036036040811015620003a057600080fd5b506001600160a01b03813516906020013562001426565b620002b160048036036040811015620003cf57600080fd5b506001600160a01b0381351690602001356200160c565b620002b160048036036020811015620003fe57600080fd5b50356001600160a01b0316620017f2565b62000419620019c7565b60408051918252519081900360200190f35b62000435620019cc565b604080516001600160a01b039092168252519081900360200190f35b620002b1600480360360808110156200046957600080fd5b506001600160a01b038135169060208101359060408101359060600135620019db565b620002b160048036036020811015620004a457600080fd5b50356001600160a01b031662001bd9565b620002b160048036036020811015620004cd57600080fd5b50356001600160a01b031662001db3565b620002b160048036036020811015620004f657600080fd5b50356001600160a01b031662001f88565b620002b1600480360360208110156200051f57600080fd5b50356001600160a01b03166200215d565b620002b1600480360360408110156200054857600080fd5b506001600160a01b0381351690602001356200221f565b620002b1600480360360208110156200057757600080fd5b50356001600160a01b031662002405565b620002b160048036036040811015620005a057600080fd5b506001600160a01b0381351690602001351515620025d3565b620002b160048036036020811015620005d157600080fd5b50356001600160a01b0316620027c2565b620002b160048036036020811015620005fa57600080fd5b50356001600160a01b031662002995565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200065057600080fd5b505afa15801562000665573d6000803e3d6000fd5b505050506040513d60208110156200067c57600080fd5b50516001600160a01b031614620006c55760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b6034546040516000916001600160a01b031690899085908a908a90620006eb9062002b73565b6001600160a01b038087168252851660208083019190915260ff8516604083015260a06060830181815285519184019190915284519091608084019160c085019187019080838360005b838110156200074f57818101518382015260200162000735565b50505050905090810190601f1680156200077d5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015620007b257818101518382015260200162000798565b50505050905090810190601f168015620007e05780820380516001836020036101000a031916815260200191505b50975050505050505050604051809103906000f08015801562000807573d6000803e3d6000fd5b509050603460009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200085957600080fd5b505afa1580156200086e573d6000803e3d6000fd5b505050506040513d60208110156200088557600080fd5b5051604080516309eab60f60e01b81526001600160a01b038b8116600483015284811660248301528881166044830152878116606483015260ff8716608483015285811660a4830152915191909216916309eab60f9160c480830192600092919082900301818387803b158015620008fc57600080fd5b505af115801562000911573d6000803e3d6000fd5b5050604080516001600160a01b03868116825291518286169450918c1692507f1d9fcd0dc935b4778d5af97f55c4d7b2553257382f1ef25c412114c8eeebd88e919081900360200190a35050505050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b158015620009aa57600080fd5b505afa158015620009bf573d6000803e3d6000fd5b505050506040513d6020811015620009d657600080fd5b50516001600160a01b03161462000a1f5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562000a6557600080fd5b505afa15801562000a7a573d6000803e3d6000fd5b505050506040513d602081101562000a9157600080fd5b505160408051631d2118f960e01b81526001600160a01b0386811660048301528581166024830152915192935090831691631d2118f99160448082019260009290919082900301818387803b15801562000aea57600080fd5b505af115801562000aff573d6000803e3d6000fd5b5050604080516001600160a01b0380881682528616602082015281517f5644b64ebb0ce18c4032248ca52f58355469092ff072866c3dcd8640e817d6a59450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562000b9257600080fd5b505afa15801562000ba7573d6000803e3d6000fd5b505050506040513d602081101562000bbe57600080fd5b50516001600160a01b03161462000c075760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562000c4d57600080fd5b505afa15801562000c62573d6000803e3d6000fd5b505050506040513d602081101562000c7957600080fd5b505160408051633443a14b60e01b81526001600160a01b03868116600483015260248201869052915192935090831691633443a14b9160448082019260009290919082900301818387803b15801562000cd157600080fd5b505af115801562000ce6573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517f437dd3b61b7c7eee7fc70515c8846482dfca92e2e1e02af5d638c5d4878d67149450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562000d7857600080fd5b505afa15801562000d8d573d6000803e3d6000fd5b505050506040513d602081101562000da457600080fd5b50516001600160a01b03161462000ded5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562000e3357600080fd5b505afa15801562000e48573d6000803e3d6000fd5b505050506040513d602081101562000e5f57600080fd5b5051604080516335ea6a7560e01b81526001600160a01b038581166004830152915192935060009283928392908616916335ea6a759160248082019261014092909190829003018186803b15801562000eb757600080fd5b505afa15801562000ecc573d6000803e3d6000fd5b505050506040513d61014081101562000ee457600080fd5b508051602082015160409092015190945090925090508215801562000f07575081155b801562000f12575080155b62000f4f5760405162461bcd60e51b815260040180806020018281038252602a81526020018062005133602a913960400191505060405180910390fd5b6040805163b736aaeb60e01b81526001600160a01b03878116600483015260006024830181905292519087169263b736aaeb926044808201939182900301818387803b15801562000f9f57600080fd5b505af115801562000fb4573d6000803e3d6000fd5b50506040516001600160a01b03881692507f6f60cf8bd0f218cabe1ea3150bd07b0b758c35c4cfdf7138017a283e65564d5e9150600090a25050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200103857600080fd5b505afa1580156200104d573d6000803e3d6000fd5b505050506040513d60208110156200106457600080fd5b50516001600160a01b031614620010ad5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b6060856001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015620010e957600080fd5b505afa158015620010fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156200112857600080fd5b8101908080516040519392919084600160201b8211156200114857600080fd5b9083019060208201858111156200115e57600080fd5b8251600160201b8111828201881017156200117857600080fd5b82525081516020918201929091019080838360005b83811015620011a75781810151838201526020016200118d565b50505050905090810190601f168015620011d55780820380516001836020036101000a031916815260200191505b50604052505050604051602001808075020b0bb329024b73a32b932b9ba103132b0b934b733960551b81525060160182805190602001908083835b60208310620012315780518252601f19909201916020918201910162001210565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405290506060866001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015620012a357600080fd5b505afa158015620012b8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015620012e257600080fd5b8101908080516040519392919084600160201b8211156200130257600080fd5b9083019060208201858111156200131857600080fd5b8251600160201b8111828201881017156200133257600080fd5b82525081516020918201929091019080838360005b838110156200136157818101518382015260200162001347565b50505050905090810190601f1680156200138f5780820380516001836020036101000a031916815260200191505b506040525050506040516020018080606160f81b81525060010182805190602001908083835b60208310620013d65780518252601f199092019160209182019101620013b5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405290506200141d87838387878b8b6200060b565b50505050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200146b57600080fd5b505afa15801562001480573d6000803e3d6000fd5b505050506040513d60208110156200149757600080fd5b50516001600160a01b031614620014e05760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200152657600080fd5b505afa1580156200153b573d6000803e3d6000fd5b505050506040513d60208110156200155257600080fd5b505160408051630cd77b2560e31b81526001600160a01b038681166004830152602482018690529151929350908316916366bbd9289160448082019260009290919082900301818387803b158015620015aa57600080fd5b505af1158015620015bf573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517f2e73b7f1df792712003e6859f940c1e8711c3f1329474771fee71d2ec11631299450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200165157600080fd5b505afa15801562001666573d6000803e3d6000fd5b505050506040513d60208110156200167d57600080fd5b50516001600160a01b031614620016c65760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200170c57600080fd5b505afa15801562001721573d6000803e3d6000fd5b505050506040513d60208110156200173857600080fd5b505160408051631c3ee13d60e21b81526001600160a01b038681166004830152602482018690529151929350908316916370fb84f49160448082019260009290919082900301818387803b1580156200179057600080fd5b505af1158015620017a5573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517fe3ba662f7011e701056a43e8cf832242322eeff01453e7a72d01ec2af36d9aec9450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200183757600080fd5b505afa1580156200184c573d6000803e3d6000fd5b505050506040513d60208110156200186357600080fd5b50516001600160a01b031614620018ac5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b158015620018f257600080fd5b505afa15801562001907573d6000803e3d6000fd5b505050506040513d60208110156200191e57600080fd5b5051604080516325ba55f160e21b81526001600160a01b038581166004830152600160248301529151929350908316916396e957c49160448082019260009290919082900301818387803b1580156200197657600080fd5b505af11580156200198b573d6000803e3d6000fd5b50506040516001600160a01b03851692507fda5cdb66c77023db6abe5226a4d4a40c3b8e768012f4ff4e446f62f60127fc569150600090a25050565b600381565b6034546001600160a01b031681565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001a2057600080fd5b505afa15801562001a35573d6000803e3d6000fd5b505050506040513d602081101562001a4c57600080fd5b50516001600160a01b03161462001a955760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562001adb57600080fd5b505afa15801562001af0573d6000803e3d6000fd5b505050506040513d602081101562001b0757600080fd5b50516040805163296f209b60e21b81526001600160a01b03888116600483015260248201889052604482018790526064820186905291519293509083169163a5bc826c9160848082019260009290919082900301818387803b15801562001b6d57600080fd5b505af115801562001b82573d6000803e3d6000fd5b5050604080518781526020810187905280820186905290516001600160a01b03891693507fdfe62f53e7707d64f99bca15d2bdf3facc4074bc047e7dec2ea130300e99274492509081900360600190a25050505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001c1e57600080fd5b505afa15801562001c33573d6000803e3d6000fd5b505050506040513d602081101562001c4a57600080fd5b50516001600160a01b03161462001c935760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562001cd957600080fd5b505afa15801562001cee573d6000803e3d6000fd5b505050506040513d602081101562001d0557600080fd5b505160408051636ee365f960e01b81526001600160a01b038581166004830152600060248301819052604483018190529251939450841692636ee365f99260648084019391929182900301818387803b15801562001d6257600080fd5b505af115801562001d77573d6000803e3d6000fd5b50506040516001600160a01b03851692507fe9a7e5fd4fc8ea18e602350324bf48e8f05d12434af0ce0be05743e6a5fdcb9e9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001df857600080fd5b505afa15801562001e0d573d6000803e3d6000fd5b505050506040513d602081101562001e2457600080fd5b50516001600160a01b03161462001e6d5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562001eb357600080fd5b505afa15801562001ec8573d6000803e3d6000fd5b505050506040513d602081101562001edf57600080fd5b50516040805163b736aaeb60e01b81526001600160a01b0385811660048301526001602483015291519293509083169163b736aaeb9160448082019260009290919082900301818387803b15801562001f3757600080fd5b505af115801562001f4c573d6000803e3d6000fd5b50506040516001600160a01b03851692507f35b80cd8ea3440e9a8454f116fa658b858da1b64c86c48451f4559cefcdfb56c9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b15801562001fcd57600080fd5b505afa15801562001fe2573d6000803e3d6000fd5b505050506040513d602081101562001ff957600080fd5b50516001600160a01b031614620020425760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200208857600080fd5b505afa1580156200209d573d6000803e3d6000fd5b505050506040513d6020811015620020b457600080fd5b5051604080516339d9797960e11b81526001600160a01b038581166004830152600160248301529151929350908316916373b2f2f29160448082019260009290919082900301818387803b1580156200210c57600080fd5b505af115801562002121573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8dee2b2f3e98319ae6347eda521788f73f4086c9be9a594942b370b137fb8cb19150600090a25050565b60006200216962002b68565b60015490915060ff16806200218357506200218362002b6d565b8062002190575060005481115b620021cd5760405162461bcd60e51b815260040180806020018281038252602e81526020018062005105602e913960400191505060405180910390fd5b60015460ff16158015620021ed576001805460ff19168117905560008290555b603480546001600160a01b0319166001600160a01b03851617905580156200221a576001805460ff191690555b505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200226457600080fd5b505afa15801562002279573d6000803e3d6000fd5b505050506040513d60208110156200229057600080fd5b50516001600160a01b031614620022d95760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200231f57600080fd5b505afa15801562002334573d6000803e3d6000fd5b505050506040513d60208110156200234b57600080fd5b50516040805163d466016f60e01b81526001600160a01b0386811660048301526024820186905291519293509083169163d466016f9160448082019260009290919082900301818387803b158015620023a357600080fd5b505af1158015620023b8573d6000803e3d6000fd5b5050604080516001600160a01b03871681526020810186905281517fda47540c7f7fd5a68c3285f3bb708f322424f948f41df6f51622fa24b39686649450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200244a57600080fd5b505afa1580156200245f573d6000803e3d6000fd5b505050506040513d60208110156200247657600080fd5b50516001600160a01b031614620024bf5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b1580156200250557600080fd5b505afa1580156200251a573d6000803e3d6000fd5b505050506040513d60208110156200253157600080fd5b50516040805163e8ae2f5b60e01b81526001600160a01b03858116600483015291519293509083169163e8ae2f5b9160248082019260009290919082900301818387803b1580156200258257600080fd5b505af115801562002597573d6000803e3d6000fd5b50506040516001600160a01b03851692507f9cc75e4cafc9a556a369bc53468649075680eb554d225d5918f199453824796d9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200261857600080fd5b505afa1580156200262d573d6000803e3d6000fd5b505050506040513d60208110156200264457600080fd5b50516001600160a01b0316146200268d5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b158015620026d357600080fd5b505afa158015620026e8573d6000803e3d6000fd5b505050506040513d6020811015620026ff57600080fd5b505160408051636ee365f960e01b81526001600160a01b038681166004830152851515602483015260016044830152915192935090831691636ee365f99160648082019260009290919082900301818387803b1580156200275f57600080fd5b505af115801562002774573d6000803e3d6000fd5b5050604080516001600160a01b0387168152851515602082015281517fab2f7f9e5ca2772fafa94f355c1842a80ae6b9e41f83083098d81f67d7a0b5089450908190039091019150a1505050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b1580156200280757600080fd5b505afa1580156200281c573d6000803e3d6000fd5b505050506040513d60208110156200283357600080fd5b50516001600160a01b0316146200287c5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b158015620028c257600080fd5b505afa158015620028d7573d6000803e3d6000fd5b505050506040513d6020811015620028ee57600080fd5b5051604080516325ba55f160e21b81526001600160a01b03858116600483015260006024830181905292519394508416926396e957c49260448084019391929182900301818387803b1580156200294457600080fd5b505af115801562002959573d6000803e3d6000fd5b50506040516001600160a01b03851692507f995959c2ceab6ce20e8cd89c904e449fd3e21918a0f420c9ec9340595585526b9150600090a25050565b603454604080516333128d5960e01b8152905133926001600160a01b0316916333128d59916004808301926020929190829003018186803b158015620029da57600080fd5b505afa158015620029ef573d6000803e3d6000fd5b505050506040513d602081101562002a0657600080fd5b50516001600160a01b03161462002a4f5760405162461bcd60e51b8152600401808060200182810382526029815260200180620050dc6029913960400191505060405180910390fd5b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b916004808301926020929190829003018186803b15801562002a9557600080fd5b505afa15801562002aaa573d6000803e3d6000fd5b505050506040513d602081101562002ac157600080fd5b5051604080516339d9797960e11b81526001600160a01b03858116600483015260006024830181905292519394508416926373b2f2f29260448084019391929182900301818387803b15801562002b1757600080fd5b505af115801562002b2c573d6000803e3d6000fd5b50506040516001600160a01b03851692507f8bbf35441ac2c607ddecadd3d8ee58636d32f217fad201fb2655581502dd84e39150600090a25050565b600390565b303b1590565b61255a8062002b828339019056fe60806040523480156200001157600080fd5b506040516200255a3803806200255a833981810160405260a08110156200003757600080fd5b8151602083015160408085015160608601805192519496939591949391820192846401000000008211156200006b57600080fd5b9083019060208201858111156200008157600080fd5b82516401000000008111828201881017156200009c57600080fd5b82525081516020918201929091019080838360005b83811015620000cb578181015183820152602001620000b1565b50505050905090810190601f168015620000f95780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011d57600080fd5b9083019060208201858111156200013357600080fd5b82516401000000008111828201881017156200014e57600080fd5b82525081516020918201929091019080838360005b838110156200017d57818101518382015260200162000163565b50505050905090810190601f168015620001ab5780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001cb906003906020850190620002eb565b508051620001e1906004906020840190620002eb565b50506005805460ff191660121790555062000205836001600160e01b03620002d516565b600a80546001600160a01b0319166001600160a01b03878116919091179182905560408051630261bf8b60e01b815290519290911691630261bf8b91600480820192602092909190829003018186803b1580156200026257600080fd5b505afa15801562000277573d6000803e3d6000fd5b505050506040513d60208110156200028e57600080fd5b5051600b80546001600160a01b0319166001600160a01b0392831617905560058054610100600160a81b031916610100969092169590950217909355506200039092505050565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200032e57805160ff19168380011785556200035e565b828001600101855582156200035e579182015b828111156200035e57825182559160200191906001019062000341565b506200036c92915062000370565b5090565b6200038d91905b808211156200036c576000815560010162000377565b90565b6121ba80620003a06000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80635eae177c116100de578063a9059cbb11610097578063db006a7511610071578063db006a75146104f3578063dd62ed3e14610510578063ee9907a41461053e578063f866c3191461056457610173565b8063a9059cbb14610499578063c634dfaa146104c5578063d0fc81d2146104eb57610173565b80635eae177c146103df57806370a082311461040b57806389d1a0fc1461043157806394362e8b1461043957806395d89b4114610465578063a457c2d71461046d57610173565b806323b872dd1161013057806323b872dd146102c3578063313ce567146102f9578063325a9b131461031757806339509351146103455780633edb7cb814610371578063445e80101461039d57610173565b806306fdde0314610178578063095ea7b3146101f55780630e49072d1461023557806312c87c2d1461025d57806318160ddd146102835780631d51e7cf1461029d575b600080fd5b61018061059a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ba5781810151838201526020016101a2565b50505050905090810190601f1680156101e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102216004803603604081101561020b57600080fd5b506001600160a01b038135169060200135610631565b604080519115158252519081900360200190f35b61025b6004803603602081101561024b57600080fd5b50356001600160a01b031661064f565b005b61025b6004803603602081101561027357600080fd5b50356001600160a01b031661065c565b61028b6106fb565b60408051918252519081900360200190f35b61028b600480360360208110156102b357600080fd5b50356001600160a01b03166107bd565b610221600480360360608110156102d957600080fd5b506001600160a01b038135811691602081013590911690604001356107dc565b610301610869565b6040805160ff9092168252519081900360200190f35b61025b6004803603604081101561032d57600080fd5b506001600160a01b0381358116916020013516610872565b6102216004803603604081101561035b57600080fd5b506001600160a01b0381351690602001356108d8565b61025b6004803603604081101561038757600080fd5b506001600160a01b03813516906020013561092c565b6103c3600480360360208110156103b357600080fd5b50356001600160a01b0316610a21565b604080516001600160a01b039092168252519081900360200190f35b610221600480360360408110156103f557600080fd5b506001600160a01b038135169060200135610a3f565b61028b6004803603602081101561042157600080fd5b50356001600160a01b0316610ada565b6103c3610b8d565b61025b6004803603604081101561044f57600080fd5b506001600160a01b038135169060200135610ba1565b610180610c76565b6102216004803603604081101561048357600080fd5b506001600160a01b038135169060200135610cd7565b610221600480360360408110156104af57600080fd5b506001600160a01b038135169060200135610d45565b61028b600480360360208110156104db57600080fd5b50356001600160a01b0316610d59565b61028b610d64565b61025b6004803603602081101561050957600080fd5b5035610d6a565b61028b6004803603604081101561052657600080fd5b506001600160a01b0381358116916020013516610fa4565b61028b6004803603602081101561055457600080fd5b50356001600160a01b0316610fcf565b61025b6004803603606081101561057a57600080fd5b506001600160a01b03813581169160208101359091169060400135610fea565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b820191906000526020600020905b81548152906001019060200180831161060957829003601f168201915b505050505090505b90565b600061064561063e611043565b8484611047565b5060015b92915050565b6106593382611133565b50565b6001600160a01b0381163314156106a45760405162461bcd60e51b8152600401808060200182810382526025815260200180611f806025913960400191505060405180910390fd5b3360008181526009602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519092917fc2d6a42a9d5273283f73009a07aacfb043f2f91173a8d9d33b504afe898db08b91a350565b600080610706611322565b90508061071757600091505061062e565b600b546005546040805163d15e005360e01b81526001600160a01b036101009093048316600482015290516107b7936107b293169163d15e0053916024808301926020929190829003018186803b15801561077157600080fd5b505afa158015610785573d6000803e3d6000fd5b505050506040513d602081101561079b57600080fd5b50516107a684611328565b9063ffffffff61133e16565b611389565b91505090565b6001600160a01b0381166000908152600860205260409020545b919050565b60006107e98484846113a2565b61085f846107f5611043565b61085a85604051806060016040528060288152602001611fc6602891396001600160a01b038a16600090815260016020526040812090610833611043565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61141116565b611047565b5060019392505050565b60055460ff1690565b6001600160a01b038281166000908152600960205260409020541633146108ca5760405162461bcd60e51b815260040180806020018281038252603a81526020018061214b603a913960400191505060405180910390fd5b6108d48282611133565b5050565b60006106456108e5611043565b8461085a85600160006108f6611043565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6114a816565b600b546001600160a01b031633146109755760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080600061098385611502565b935093509350506109958583866115f3565b61099f858561172a565b60006109b1848663ffffffff61183216565b6109c1576109be86611874565b90505b856001600160a01b03167f90e5d3d68ec162d9c7de393037a3ede04dd44f68e051bf2ace4a73c299dbc4db8685846109f957856109fc565b60005b60408051938452602084019290925282820152519081900360600190a2505050505050565b6001600160a01b039081166000908152600760205260409020541690565b600b54600554604080516376e9d61560e01b81526101009092046001600160a01b039081166004840152858116602484015260448301859052905160009391909116916376e9d615916064808301926020929190829003018186803b158015610aa757600080fd5b505afa158015610abb573d6000803e3d6000fd5b505050506040513d6020811015610ad157600080fd5b50519392505050565b600080610ae683611926565b6001600160a01b03841660009081526008602052604090205490915081158015610b0e575080155b15610b1e576000925050506107d7565b6001600160a01b0384811660009081526007602052604090205416610b6f57610b6681610b5a86610b55868463ffffffff6114a816565b611941565b9063ffffffff61183216565b925050506107d7565b610b66610b8082610b5a8785611941565b839063ffffffff6114a816565b60055461010090046001600160a01b031681565b600b546001600160a01b03163314610bea5760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b600080610bf684611502565b935093505050610c1a84610c1385856114a890919063ffffffff16565b60006115f3565b610c2484846119f6565b604080518481526020810184905280820183905290516001600160a01b038616917fbe7799898ca2d813ff902b487c1b434ab45b47edd8f38b77ad5e99aae8341b7a919081900360600190a250505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106265780601f106105fb57610100808354040283529160200191610626565b6000610645610ce4611043565b8461085a856040518060600160405280602581526020016121266025913960016000610d0e611043565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61141116565b6000610645610d52611043565b84846113a2565b600061064982611926565b60001981565b60008111610dbf576040805162461bcd60e51b815260206004820181905260248201527f416d6f756e7420746f2072656465656d206e6565647320746f206265203e2030604482015290519081900360640190fd5b6000806000610dcd33611502565b91955093509150849050600019811415610de45750825b83811115610e235760405162461bcd60e51b8152600401808060200182810382526032815260200180611f066032913960400191505060405180910390fd5b610e2d3382610a3f565b610e7e576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b610e893384836115f3565b610e93338261172a565b6000610ea5858363ffffffff61183216565b610eb557610eb233611874565b90505b600b546005546001600160a01b0391821691639895e3d8916101009004163385610ee58a8263ffffffff61183216565b6040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b03168152602001838152602001828152602001945050505050600060405180830381600087803b158015610f5457600080fd5b505af1158015610f68573d6000803e3d6000fd5b50505050336001600160a01b03167fbd5034ffbd47e4e72a94baa2cdb74c6fad73cb3bcdc13036b72ec8306f5a76468386846109f957866109fc565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b031660009081526006602052604090205490565b600b546001600160a01b031633146110335760405162461bcd60e51b81526004018080602001828103825260328152602001806120f46032913960400191505060405180910390fd5b61103e838383611af2565b505050565b3390565b6001600160a01b03831661108c5760405162461bcd60e51b81526004018080602001828103825260248152602001806120d06024913960400191505060405180910390fd5b6001600160a01b0382166110d15760405162461bcd60e51b8152600401808060200182810382526022815260200180611f386022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0380831660009081526007602052604090205481169082168114156111905760405162461bcd60e51b815260040180806020018281038252602a815260200180611fee602a913960400191505060405180910390fd5b60008060008061119f87611502565b9350935093509350600083116111e65760405162461bcd60e51b81526004018080602001828103825260428152602001806120186042913960600191505060405180910390fd5b6001600160a01b0385161561120157611201876000866115f3565b866001600160a01b0316866001600160a01b0316141561128d576001600160a01b038716600081815260076020908152604080832080546001600160a01b03191690558051878152918201869052818101859052519192917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050506108d4565b6001600160a01b03878116600090815260076020526040812080546001600160a01b031916928916929092179091556112c990889085906115f3565b604080518481526020810184905280820183905290516001600160a01b0380891692908a16917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a73487355949181900360600190a350505050505050565b60025490565b600061064982633b9aca0063ffffffff611c2116565b60006113826b033b2e3c9fd0803ce8000000611376611363868663ffffffff611c2116565b6b019d971e4fe8401e74000000906114a8565b9063ffffffff611c7a16565b9392505050565b6000631dcd6500611382633b9aca0061137683866114a8565b82816113ae8282610a3f565b6113ff576040805162461bcd60e51b815260206004820152601b60248201527f5472616e736665722063616e6e6f7420626520616c6c6f7765642e0000000000604482015290519081900360640190fd5b61140a858585611af2565b5050505050565b600081848411156114a05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561146557818101518382015260200161144d565b50505050905090810190601f1680156114925780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015611382576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080600080600061151386611926565b9050600061152482610b5a89610ada565b905061153087826119f6565b600b546005546040805163d15e005360e01b81526101009092046001600160a01b0390811660048401529051600093919091169163d15e0053916024808301926020929190829003018186803b15801561158957600080fd5b505afa15801561159d573d6000803e3d6000fd5b505050506040513d60208110156115b357600080fd5b50516001600160a01b03891660009081526006602052604090208190559050826115e3818463ffffffff6114a816565b9099909850919650945092505050565b6001600160a01b038084166000908152600760205260409020541680611619575061103e565b60008061162583611502565b6001600160a01b038716600090815260086020526040902054919550935061165b9250869150610b5a908863ffffffff6114a816565b6001600160a01b038085166000908152600860209081526040808320949094556007905291909120541680156116ce576001600160a01b0381166000908152600860205260409020546116b4908463ffffffff6114a816565b6001600160a01b0382166000908152600860205260409020555b60408051848152602081018490528082018890526060810187905290516001600160a01b038616917f70ff8cf632603e2bfd1afb7e4061acce53d95356b1be9726b99fa22ba733b01f919081900360800190a250505050505050565b6001600160a01b03821661176f5760405162461bcd60e51b815260040180806020018281038252602181526020018061208a6021913960400191505060405180910390fd5b61177b8260008361103e565b6117be81604051806060016040528060228152602001611ee4602291396001600160a01b038516600090815260208190526040902054919063ffffffff61141116565b6001600160a01b0383166000908152602081905260409020556002546117ea908263ffffffff61183216565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061138283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611411565b6001600160a01b038116600081815260076020908152604080832080546001600160a01b03191690558051838152918201839052818101839052519192839290917f5e3cad45b1fe24159d1cb39788d82d0f69cc15770aa96fba1d3d1a7348735594919081900360600190a36001600160a01b03821660009081526008602052604090205461191e57506001600160a01b03811660009081526006602052604081205560016107d7565b5060006107d7565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b03808316600090815260066020908152604080832054600b54600554835163d15e005360e01b81526101009091048716600482015292519495611382956107b29593946119ea94939092169263d15e00539260248082019391829003018186803b1580156119b557600080fd5b505afa1580156119c9573d6000803e3d6000fd5b505050506040513d60208110156119df57600080fd5b50516107a687611328565b9063ffffffff611cbc16565b6001600160a01b038216611a51576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611a5d6000838361103e565b600254611a70908263ffffffff6114a816565b6002556001600160a01b038216600090815260208190526040902054611a9c908263ffffffff6114a816565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008111611b315760405162461bcd60e51b815260040180806020018281038252603081526020018061205a6030913960400191505060405180910390fd5b6000806000611b3f86611502565b93509350935050600080611b5287611502565b935093505050611b638885886115f3565b611b7787610c13848963ffffffff6114a816565b611b82888888611cf4565b6000611b94868863ffffffff61183216565b611ba457611ba189611874565b90505b876001600160a01b0316896001600160a01b03167f89a178eaa27e0cd201bd795ca8ff716ac0df9618494510ca79771cfc66ffcde889888786611be75789611bea565b60005b60408051948552602085019390935283830191909152606083015260808201879052519081900360a00190a3505050505050505050565b600082611c3057506000610649565b82820282848281611c3d57fe5b04146113825760405162461bcd60e51b8152600401808060200182810382526021815260200180611fa56021913960400191505060405180910390fd5b600061138283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e5b565b600060028204611cec83611376611cdf876b033b2e3c9fd0803ce8000000611c21565b849063ffffffff6114a816565b949350505050565b6001600160a01b038316611d395760405162461bcd60e51b81526004018080602001828103825260258152602001806120ab6025913960400191505060405180910390fd5b6001600160a01b038216611d7e5760405162461bcd60e51b8152600401808060200182810382526023815260200180611ec16023913960400191505060405180910390fd5b611d8983838361103e565b611dcc81604051806060016040528060268152602001611f5a602691396001600160a01b038616600090815260208190526040902054919063ffffffff61141116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611e01908263ffffffff6114a816565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008183611eaa5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561146557818101518382015260200161144d565b506000838581611eb657fe5b049594505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f742072656465656d206d6f7265207468616e2074686520617661696c61626c652062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365557365722063616e6e6f74206769766520616c6c6f77616e636520746f2068696d73656c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365496e74657265737420697320616c7265616479207265646972656374656420746f207468652075736572496e7465726573742073747265616d2063616e206f6e6c79206265207265646972656374656420696620746865726520697320612076616c69642062616c616e63655472616e7366657272656420616d6f756e74206e6565647320746f2062652067726561746572207468616e207a65726f45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f43616c6c6572206973206e6f7420616c6c6f77656420746f2072656469726563742074686520696e746572657374206f66207468652075736572a26469706673582212202d2df2b93993c5cb5fa2b9f5d98346729bc1056636a0754860769165524ca37664736f6c634300060800335468652063616c6c6572206d7573742062652061206c656e64696e6720706f6f6c206d616e61676572436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564546865206c6971756964697479206f66207468652072657365727665206e6565647320746f2062652030a2646970667358221220fca25e71f5286b31b3c409c316527d0c0e2d9a515b8df44fced6020e48a2b77d64736f6c63430006080033"; diff --git a/types/LendingPoolFactory.ts b/types/LendingPoolFactory.ts index 6ce55895..289cad31 100644 --- a/types/LendingPoolFactory.ts +++ b/types/LendingPoolFactory.ts @@ -660,6 +660,11 @@ const _abi = [ ], name: "getReserveConfigurationData", outputs: [ + { + internalType: "uint256", + name: "decimals", + type: "uint256" + }, { internalType: "uint256", name: "ltv", @@ -1334,7 +1339,7 @@ const _abi = [ ]; const _bytecode = - "0x6080604052600060015534801561001557600080fd5b5060016000556158e2806200002b6000396000f3fe6080604052600436106101fc5760003560e01c806376e9d6151161010d578063c4d66de8116100a0578063d0fc81d21161006f578063d0fc81d214610b13578063d15e005314610b28578063d2d0e06614610b5b578063d466016f14610b91578063e8ae2f5b14610bca57610242565b8063c4d66de814610a47578063c72c4d1014610a7a578063c858f5f914610a8f578063cd11238214610ad857610242565b80639895e3d8116100dc5780639895e3d814610913578063a5bc826c1461095c578063b736aaeb146109a1578063bf92857c146109dc57610242565b806376e9d615146108335780638afaff021461088a57806394ba89a21461089f57806396e957c4146108d857610242565b80633e150141116101905780635cffe9de1161015f5780635cffe9de1461067057806366bbd928146107435780636ee365f91461077c57806370fb84f4146107bf57806373b2f2f2146107f857610242565b80633e150141146105205780634fe7a6e5146105b5578063573ade81146105fb5780635a3b74b91461063557610242565b806328dd2d01116101cc57806328dd2d01146103845780633443a14b1461041857806335ea6a7514610451578063386497fd146104db57610242565b8062a718a9146102475780630902f1ac1461028b57806309eab60f146102f05780631d2118f91461034957610242565b366102425761020a33610bfd565b610240576040805162461bcd60e51b8152602060048201526002602482015261191960f11b604482015290519081900360640190fd5b005b600080fd5b610240600480360360a081101561025d57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515610c39565b34801561029757600080fd5b506102a0611000565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102dc5781810151838201526020016102c4565b505050509050019250505060405180910390f35b3480156102fc57600080fd5b50610240600480360360c081101561031357600080fd5b506001600160a01b03813581169160208101358216916040820135811691606081013582169160808201359160a0013516611062565b34801561035557600080fd5b506102406004803603604081101561036c57600080fd5b506001600160a01b03813581169160200135166111c9565b34801561039057600080fd5b506103bf600480360360408110156103a757600080fd5b506001600160a01b03813581169160200135166112aa565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015264ffffffffff16610100840152151561012083015251908190036101400190f35b34801561042457600080fd5b506102406004803603604081101561043b57600080fd5b506001600160a01b0381351690602001356115d1565b34801561045d57600080fd5b506104846004803603602081101561047457600080fd5b50356001600160a01b03166116a0565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015264ffffffffff1661012083015251908190036101400190f35b3480156104e757600080fd5b5061050e600480360360208110156104fe57600080fd5b50356001600160a01b031661198c565b60408051918252519081900360200190f35b34801561052c57600080fd5b506105536004803603602081101561054357600080fd5b50356001600160a01b03166119b3565b604080519a8b5260208b0199909952898901979097526001600160a01b0395861660608a015293909416608088015290151560a0870152151560c086015290151560e08501521515610100840152151561012083015251908190036101400190f35b3480156105c157600080fd5b506105df600480360360208110156105d857600080fd5b5035611a29565b604080516001600160a01b039092168252519081900360200190f35b6102406004803603608081101561061157600080fd5b506001600160a01b0381358116916020810135916040820135916060013516611a50565b34801561064157600080fd5b506102406004803603604081101561065857600080fd5b506001600160a01b0381351690602001351515611e1a565b34801561067c57600080fd5b506102406004803603608081101561069357600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156106ce57600080fd5b8201836020820111156106e057600080fd5b8035906020019184600183028401116401000000008311171561070257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612080945050505050565b34801561074f57600080fd5b506102406004803603604081101561076657600080fd5b506001600160a01b038135169060200135612529565b34801561078857600080fd5b506102406004803603606081101561079f57600080fd5b506001600160a01b038135169060208101351515906040013515156125f8565b3480156107cb57600080fd5b50610240600480360360408110156107e257600080fd5b506001600160a01b0381351690602001356127bd565b34801561080457600080fd5b506102406004803603604081101561081b57600080fd5b506001600160a01b038135169060200135151561288c565b34801561083f57600080fd5b506108766004803603606081101561085657600080fd5b506001600160a01b03813581169160208101359091169060400135612974565b604080519115158252519081900360200190f35b34801561089657600080fd5b5061050e612b04565b3480156108ab57600080fd5b50610240600480360360408110156108c257600080fd5b506001600160a01b038135169060200135612b09565b3480156108e457600080fd5b50610240600480360360408110156108fb57600080fd5b506001600160a01b0381351690602001351515612e7e565b34801561091f57600080fd5b506102406004803603608081101561093657600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135612f66565b34801561096857600080fd5b506102406004803603608081101561097f57600080fd5b506001600160a01b038135169060208101359060408101359060600135613102565b3480156109ad57600080fd5b50610240600480360360408110156109c457600080fd5b506001600160a01b038135169060200135151561324b565b3480156109e857600080fd5b50610a0f600480360360208110156109ff57600080fd5b50356001600160a01b0316613395565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b348015610a5357600080fd5b5061024060048036036020811015610a6a57600080fd5b50356001600160a01b03166135f6565b348015610a8657600080fd5b506105df61373b565b348015610a9b57600080fd5b5061024060048036036080811015610ab257600080fd5b5080356001600160a01b0316906020810135906040810135906060013561ffff1661374a565b348015610ae457600080fd5b5061024060048036036040811015610afb57600080fd5b506001600160a01b0381358116916020013516613ce3565b348015610b1f57600080fd5b5061050e614079565b348015610b3457600080fd5b5061050e60048036036020811015610b4b57600080fd5b50356001600160a01b031661407f565b61024060048036036060811015610b7157600080fd5b5080356001600160a01b0316906020810135906040013561ffff166140a0565b348015610b9d57600080fd5b5061024060048036036040811015610bb457600080fd5b506001600160a01b03813516906020013561430f565b348015610bd657600080fd5b5061024060048036036020811015610bed57600080fd5b50356001600160a01b03166143de565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610c3157508115155b949350505050565b60026000541415610c7f576040805162461bcd60e51b815260206004820152601f60248201526000805160206156bf833981519152604482015290519081900360640190fd5b6002600090815560355460408051632c1a75cd60e11b815290516001600160a01b0390921691635834eb9a91600480820192602092909190829003018186803b158015610ccb57600080fd5b505afa158015610cdf573d6000803e3d6000fd5b505050506040513d6020811015610cf557600080fd5b5051604080516001600160a01b038981166024830152888116604483015287811660648301526084820187905285151560a4808401919091528351808403909101815260c490920183526020820180516001600160e01b031662a718a960e01b17815292518251949550600094606094928716939282918083835b60208310610d8f5780518252601f199092019160209182019101610d70565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610def576040519150601f19603f3d011682016040523d82523d6000602084013e610df4565b606091505b509150915081610e30576040805162461bcd60e51b81526020600482015260026024820152610c8d60f21b604482015290519081900360640190fd5b60006060828060200190516040811015610e4957600080fd5b815160208301805160405192949293830192919084640100000000821115610e7057600080fd5b908301906020820185811115610e8557600080fd5b8251640100000000811182820188101715610e9f57600080fd5b82525081516020918201929091019080838360005b83811015610ecc578181015183820152602001610eb4565b50505050905090810190601f168015610ef95780820380516001836020036101000a031916815260200191505b506040525050509150915081600014610fef57806040516020018082805190602001908083835b60208310610f3f5780518252601f199092019160209182019101610f20565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183529384905262461bcd60e51b84526004840181815282516024860152825192965094508493604401925085019080838360005b83811015610fb4578181015183820152602001610f9c565b50505050905090810190601f168015610fe15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505060016000555050505050505050565b6060603980548060200260200160405190810160405280929190818152602001828054801561105857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161103a575b5050505050905090565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156110a657600080fd5b505afa1580156110ba573d6000803e3d6000fd5b505050506040513d60208110156110d057600080fd5b50516001600160a01b031614611112576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b038087166000908152603760205260408082208151630b25f31560e01b815260048101919091528884166024820152878416604482015286841660648201526084810186905292841660a48401525173__$2ec35834968386f54fa313129cf94664e4$__92630b25f3159260c4808301939192829003018186803b1580156111a057600080fd5b505af41580156111b4573d6000803e3d6000fd5b505050506111c18661450f565b505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561120d57600080fd5b505afa158015611221573d6000803e3d6000fd5b505050506040513d602081101561123757600080fd5b50516001600160a01b031614611279576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b039182166000908152603760205260409020600c0180546001600160a01b03191691909216179055565b6001600160a01b038083166000908152603760209081526040808320600981015482516370a0823160e01b815287871660048201529251949586958695869586958695869586958695869593909216926370a08231926024808301939192829003018186803b15801561131c57600080fd5b505afa158015611330573d6000803e3d6000fd5b505050506040513d602081101561134657600080fd5b50519a506113548c826145b2565b909a5098506113638c826146b5565b80985081995050508060010154945080600a0160009054906101000a90046001600160a01b03166001600160a01b031663e78c9b3b8d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156113df57600080fd5b505afa1580156113f3573d6000803e3d6000fd5b505050506040513d602081101561140957600080fd5b8101908080519060200190929190505050955080600a0160009054906101000a90046001600160a01b03166001600160a01b03166379ce6b8c8d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561148957600080fd5b505afa15801561149d573d6000803e3d6000fd5b505050506040513d60208110156114b357600080fd5b81019080805190602001909291905050509250603860008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060000160009054906101000a900460ff16915080600b0160009054906101000a90046001600160a01b03166001600160a01b031663ee9907a48d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561158e57600080fd5b505afa1580156115a2573d6000803e3d6000fd5b505050506040513d60208110156115b857600080fd5b50519a9d999c50979a5095989497939650919491929050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561161557600080fd5b505afa158015611629573d6000803e3d6000fd5b505050506040513d602081101561163f57600080fd5b50516001600160a01b031614611681576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060060155565b6000806000806000806000806000806116b76155b6565b506001600160a01b03808c16600081815260376020908152604091829020825161026081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e0820152600882015461010082015260098201548416610120820152600a8201548416610140820152600b8201548416610160820152600c9091015492831661018082015264ffffffffff600160a01b8404166101a082015260ff600160c81b8404811615156101c0830152600160d01b8404811615156101e0830152600160d81b840481161515610200830152600160e01b840481161515610220830152600160e81b90930490921615156102408301526117ea903063ffffffff61478116565b8161014001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561182857600080fd5b505afa15801561183c573d6000803e3d6000fd5b505050506040513d602081101561185257600080fd5b5051610160830151604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b15801561189c57600080fd5b505afa1580156118b0573d6000803e3d6000fd5b505050506040513d60208110156118c657600080fd5b50516020848101516040808701516060880151610140890151835163487b7e7960e11b815293519495929491936001600160a01b03909116926390f6fcf292600480840193829003018186803b15801561191f57600080fd5b505afa158015611933573d6000803e3d6000fd5b505050506040513d602081101561194957600080fd5b810190808051906020019092919050505087600001518860800151896101a001519a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b6001600160a01b03811660009081526037602052604081206119ad9061482b565b92915050565b6001600160a01b039081166000908152603760205260409020600581015460068201546007830154600c840154600990940154929591949093808216939091169160ff600160d01b8304811692600160c81b8104821692600160d81b8204831692600160e01b8304811692600160e81b90041690565b60398181548110611a3657fe5b6000918252602090912001546001600160a01b0316905081565b60026000541415611a96576040805162461bcd60e51b815260206004820152601f60248201526000805160206156bf833981519152604482015290519081900360640190fd5b6002600055611aa3615652565b6001600160a01b03808616600081815260376020908152604080832094871683526038825280832093835292905220611adc84836145b2565b602085015283526000856002811115611af157fe5b90506001816002811115611b0157fe5b14611b10578360200151611b13565b83515b60608501526000198714801590611b2d5750836060015187105b15611b3a57606084018790525b73__$69254465eb8f179ea24caa73cf68b23524$__63d454c1cc848a8a858a8a600001518b602001518c60600151346040518a63ffffffff1660e01b8152600401808a8152602001896001600160a01b03166001600160a01b03168152602001888152602001876002811115611bac57fe5b60ff168152602001866001600160a01b03166001600160a01b03168152602001858152602001848152602001838152602001828152602001995050505050505050505060006040518083038186803b158015611c0757600080fd5b505af4158015611c1b573d6000803e3d6000fd5b50505050611c288361486c565b6001816002811115611c3657fe5b1415611cb657600a830154606085015160408051632770a7eb60e21b81526001600160a01b038981166004830152602482019390935290519190921691639dc29fac91604480830192600092919082900301818387803b158015611c9957600080fd5b505af1158015611cad573d6000803e3d6000fd5b50505050611d2c565b600b830154606085015160408051632770a7eb60e21b81526001600160a01b038981166004830152602482019390935290519190921691639dc29fac91604480830192600092919082900301818387803b158015611d1357600080fd5b505af1158015611d27573d6000803e3d6000fd5b505050505b6060840151611d469084908a90600063ffffffff61492416565b6060840151611d67906001600160a01b038a1690600063ffffffff614c3016565b611d79886001600160a01b0316614d55565b15611dbb576000611d97856060015134614d8b90919063ffffffff16565b90508015611db957611db96001600160a01b038a16338363ffffffff614dcd16565b505b606084015160408051918252426020830152805133926001600160a01b0389811693908d16927f81cfb79463601de705d4cf6b8d69112983d76a685120e5e4d3581f30871b87fc9281900390910190a450506001600055505050505050565b60026000541415611e60576040805162461bcd60e51b815260206004820152601f60248201526000805160206156bf833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038084168083526037602081815260408086203387526038808452828820958852948352958190206035548251631f94a27560e31b81529251919673__$69254465eb8f179ea24caa73cf68b23524$__9663d73dac72968a968d9691959294603994169263fca513a8926004808201939291829003018186803b158015611ef457600080fd5b505afa158015611f08573d6000803e3d6000fd5b505050506040513d6020811015611f1e57600080fd5b50516040516001600160e01b031960e089901b168152600481018781526001600160a01b0380881660248401526044830187905260648301869052831660a483015260c060848301908152845460c484018190529192909160e49091019085908015611fb357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f95575b505097505050505050505060006040518083038186803b158015611fd657600080fd5b505af4158015611fea573d6000803e3d6000fd5b5050825460ff191685158015919091178455915061203e90505760405133906001600160a01b038616907e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f290600090a3612075565b60405133906001600160a01b038616907f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd90600090a35b505060016000555050565b600260005414156120c6576040805162461bcd60e51b815260206004820152601f60248201526000805160206156bf833981519152604482015290519081900360640190fd5b60026000556120d361568f565b6001600160a01b0384166000818152603760205260409020906120fc903063ffffffff61478116565b825261212161271061211586600963ffffffff614e4f16565b9063ffffffff614ea816565b60608301819052612142906127109061211590610bb863ffffffff614e4f16565b608083015281518411156121875760405162461bcd60e51b81526004018080602001828103825260318152602001806156df6031913960400191505060405180910390fd5b6000826060015111801561219f575060008260800151115b6121da5760405162461bcd60e51b81526004018080602001828103825260328152602001806158516032913960400191505060405180910390fd5b85806121f66001600160a01b038816828863ffffffff614dcd16565b816001600160a01b031663ee87255888888760600151896040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561227d578181015183820152602001612265565b50505050905090810190601f1680156122aa5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156122cc57600080fd5b505af11580156122e0573d6000803e3d6000fd5b50600092506123019150506001600160a01b0389163063ffffffff61478116565b6060860151865191925061231b919063ffffffff614eea16565b81146123585760405162461bcd60e51b81526004018080602001828103825260328152602001806157746032913960400191505060405180910390fd5b8373__$5e6137a1b5a0a366e2874209b5abf71c10$__63a023726490918a88600001516123968a608001518b60600151614d8b90919063ffffffff16565b8a608001516040518663ffffffff1660e01b815260040180868152602001856001600160a01b03166001600160a01b031681526020018481526020018381526020018281526020019550505050505060006040518083038186803b1580156123fd57600080fd5b505af4158015612411573d6000803e3d6000fd5b505050506124ae603560009054906101000a90046001600160a01b03166001600160a01b031663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b15801561246657600080fd5b505afa15801561247a573d6000803e3d6000fd5b505050506040513d602081101561249057600080fd5b505160808701516001600160a01b038b16919063ffffffff614dcd16565b876001600160a01b0316896001600160a01b03167f5b8f46461c1dd69fb968f1a003acee221ea3e19540e350233b612ddb43433b558988606001518960800151426040518085815260200184815260200183815260200182815260200194505050505060405180910390a35050600160005550505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561256d57600080fd5b505afa158015612581573d6000803e3d6000fd5b505050506040513d602081101561259757600080fd5b50516001600160a01b0316146125d9576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060080155565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561263c57600080fd5b505afa158015612650573d6000803e3d6000fd5b505050506040513d602081101561266657600080fd5b50516001600160a01b0316146126a8576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b8115612739576001600160a01b0383166000908152603760205260408082208151637b1dd5df60e11b815260048101919091528315156024820152905173__$2ec35834968386f54fa313129cf94664e4$__9263f63babbe9260448082019391829003018186803b15801561271c57600080fd5b505af4158015612730573d6000803e3d6000fd5b505050506127b8565b6001600160a01b03831660009081526037602052604080822081516372efab5360e11b81526004810191909152905173__$2ec35834968386f54fa313129cf94664e4$__9263e5df56a69260248082019391829003018186803b15801561279f57600080fd5b505af41580156127b3573d6000803e3d6000fd5b505050505b505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561280157600080fd5b505afa158015612815573d6000803e3d6000fd5b505050506040513d602081101561282b57600080fd5b50516001600160a01b03161461286d576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060070155565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156128d057600080fd5b505afa1580156128e4573d6000803e3d6000fd5b505050506040513d60208110156128fa57600080fd5b50516001600160a01b03161461293c576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b039091166000908152603760205260409020600c018054911515600160d81b0260ff60d81b19909216919091179055565b600073__$7347ff53b2b46c21e26a37164ae7f6739f$__634d9afd5e858585603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b1580156129e757600080fd5b505afa1580156129fb573d6000803e3d6000fd5b505050506040513d6020811015612a1157600080fd5b505160405160e089811b6001600160e01b03191682526001600160a01b0389811660048401908152898216602485015260448401899052606484018890526084840187905290841660c484015260a48301918252845460e484018190529092610104019085908015612aac57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612a8e575b50509850505050505050505060206040518083038186803b158015612ad057600080fd5b505af4158015612ae4573d6000803e3d6000fd5b505050506040513d6020811015612afa57600080fd5b5051949350505050565b600281565b60026000541415612b4f576040805162461bcd60e51b815260206004820152601f60248201526000805160206156bf833981519152604482015290519081900360640190fd5b600260009081556001600160a01b0383168082526037602090815260408084203380865260388452828620948652939092528320909290918190612b9390856145b2565b915091506000856002811115612ba557fe5b905073__$69254465eb8f179ea24caa73cf68b23524$__63d4cadffc86868686866040518663ffffffff1660e01b815260040180868152602001858152602001848152602001838152602001826002811115612bfd57fe5b60ff1681526020019550505050505060006040518083038186803b158015612c2457600080fd5b505af4158015612c38573d6000803e3d6000fd5b50505050612c458561486c565b6001816002811115612c5357fe5b1415612d3757600a85015460408051632770a7eb60e21b81523360048201526024810186905290516001600160a01b0390921691639dc29fac9160448082019260009290919082900301818387803b158015612cae57600080fd5b505af1158015612cc2573d6000803e3d6000fd5b505050600b860154604080516340c10f1960e01b81523360048201526024810187905290516001600160a01b0390921692506340c10f1991604480830192600092919082900301818387803b158015612d1a57600080fd5b505af1158015612d2e573d6000803e3d6000fd5b50505050612e1d565b600b85015460408051632770a7eb60e21b81523360048201526024810185905290516001600160a01b0390921691639dc29fac9160448082019260009290919082900301818387803b158015612d8c57600080fd5b505af1158015612da0573d6000803e3d6000fd5b505050600a860154600387015460408051630ab714fb60e11b8152336004820152602481018790526044810192909252516001600160a01b03909216925063156e29f691606480830192600092919082900301818387803b158015612e0457600080fd5b505af1158015612e18573d6000803e3d6000fd5b505050505b612e30858860008063ffffffff61492416565b60408051428152905133916001600160a01b038a16917fea368a40e9570069bb8e6511d668293ad2e1f03b0d982431fd223de9f3b70ca69181900360200190a3505060016000555050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015612ec257600080fd5b505afa158015612ed6573d6000803e3d6000fd5b505050506040513d6020811015612eec57600080fd5b50516001600160a01b031614612f2e576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b039091166000908152603760205260409020600c018054911515600160e81b0260ff60e81b19909216919091179055565b60026000541415612fac576040805162461bcd60e51b815260206004820152601f60248201526000805160206156bf833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038086168083526037602090815260408085209388168552603882528085208386529091528084208151630d9e1f7160e11b81526004810185905260248101939093526044830187905290519293909273__$69254465eb8f179ea24caa73cf68b23524$__92631b3c3ee2926064808301939192829003018186803b15801561304257600080fd5b505af4158015613056573d6000803e3d6000fd5b50505050826000141561306c57805460ff191681555b6130758261486c565b613088828760008763ffffffff61492416565b6130a26001600160a01b038716868663ffffffff614dcd16565b846001600160a01b0316866001600160a01b03167f9c4ed599cd8555b9c1e8cd7643240d7d71eb76b792948c49fcb4d411f7b6b3c68642604051808381526020018281526020019250505060405180910390a35050600160005550505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561314657600080fd5b505afa15801561315a573d6000803e3d6000fd5b505050506040513d602081101561317057600080fd5b50516001600160a01b0316146131b2576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b038416600090815260376020526040808220815163126ee27360e11b81526004810191909152602481018690526044810185905260648101849052905173__$2ec35834968386f54fa313129cf94664e4$__926324ddc4e69260848082019391829003018186803b15801561322d57600080fd5b505af4158015613241573d6000803e3d6000fd5b5050505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561328f57600080fd5b505afa1580156132a3573d6000803e3d6000fd5b505050506040513d60208110156132b957600080fd5b50516001600160a01b0316146132fb576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03821660009081526037602052604090208161332c57600c8101805460ff60e01b191690556127b8565b805415801590613340575060008160040154115b61337b5760405162461bcd60e51b81526004018080602001828103825260248152602001806157a66024913960400191505060405180910390fd5b600c8101805460ff60e01b1916600160e01b179055505050565b600080600080600080600073__$7347ff53b2b46c21e26a37164ae7f6739f$__63901d711489603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561340f57600080fd5b505afa158015613423573d6000803e3d6000fd5b505050506040513d602081101561343957600080fd5b50516040516001600160e01b031960e088901b1681526001600160a01b03808716600483019081526024830187905260448301869052908316608483015260a060648301908152845460a484018190529192909160c490910190859080156134ca57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116134ac575b5050965050505050505060c06040518083038186803b1580156134ec57600080fd5b505af4158015613500573d6000803e3d6000fd5b505050506040513d60c081101561351657600080fd5b5080516020808301516040808501516060860151608087015160a090970151603654845163ab8bb39360e01b8152600481018990526024810187905260448101859052606481018490526001600160a01b0390911660848201529351969e50939c50909a50949750939550935073__$7347ff53b2b46c21e26a37164ae7f6739f$__9263ab8bb3939260a48083019392829003018186803b1580156135ba57600080fd5b505af41580156135ce573d6000803e3d6000fd5b505050506040513d60208110156135e457600080fd5b50519698959750939594919390925090565b6000613600614f44565b60025490915060ff16806136175750613617614f49565b80613623575060015481115b61365e5760405162461bcd60e51b815260040180806020018281038252602e815260200180615823602e913960400191505060405180910390fd5b60025460ff1615801561367f576002805460ff191660019081179091558290555b603580546001600160a01b0319166001600160a01b03858116919091179182905560408051633efbbf0f60e21b81529051929091169163fbeefc3c91600480820192602092909190829003018186803b1580156136db57600080fd5b505afa1580156136ef573d6000803e3d6000fd5b505050506040513d602081101561370557600080fd5b5051603680546001600160a01b0319166001600160a01b0390921691909117905580156127b8576002805460ff19169055505050565b6035546001600160a01b031681565b60026000541415613790576040805162461bcd60e51b815260206004820152601f60248201526000805160206156bf833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038086168083526037602090815260408085203386526038835281862093865292825280852060088401546035548351631f94a27560e31b815293519597929692956138c295600a9390930a94612115948d9493169263fca513a892600480840193829003018186803b15801561381457600080fd5b505afa158015613828573d6000803e3d6000fd5b505050506040513d602081101561383e57600080fd5b50516040805163b3596f0760e01b81526001600160a01b038e811660048301529151919092169163b3596f07916024808301926020929190829003018186803b15801561388a57600080fd5b505afa15801561389e573d6000803e3d6000fd5b505050506040513d60208110156138b457600080fd5b50519063ffffffff614e4f16565b905073__$69254465eb8f179ea24caa73cf68b23524$__6305011d4884848a8a868b6019603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561393a57600080fd5b505afa15801561394e573d6000803e3d6000fd5b505050506040513d602081101561396457600080fd5b50516040516001600160e01b031960e08e901b168152600481018c8152602482018c90526001600160a01b03808c166044840152606483018b9052608483018a905260a4830189905260c4830188905260e4830187905261010483018690528316610144830152610160610124830190815284546101648401819052919290916101849091019085908015613a2257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613a04575b50509c5050505050505050505050505060006040518083038186803b158015613a4a57600080fd5b505af4158015613a5e573d6000803e3d6000fd5b50505050613a6b8361486c565b600c8301805464ffffffffff60a01b1916600160a01b4264ffffffffff160217905560038301546001866002811115613aa057fe5b6002811115613aab57fe5b1415613ba557600a84015460408051630ab714fb60e11b8152336004820152602481018a90526044810184905290516001600160a01b039092169163156e29f69160648082019260009290919082900301818387803b158015613b0d57600080fd5b505af1158015613b21573d6000803e3d6000fd5b50505050600a84015460408051631e739ae360e21b815233600482015290516000926001600160a01b0316916379ce6b8c916024808301926020929190829003018186803b158015613b7257600080fd5b505afa158015613b86573d6000803e3d6000fd5b505050506040513d6020811015613b9c57600080fd5b50613c13915050565b600b840154604080516340c10f1960e01b8152336004820152602481018a905290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b158015613bfa57600080fd5b505af1158015613c0e573d6000803e3d6000fd5b505050505b613c26848960008a63ffffffff61492416565b613c406001600160a01b038916338963ffffffff614dcd16565b600080613c4d33876145b2565b909250905061ffff8716336001600160a01b038c167fe002884724be85e729c98360169e709585b299ace6fbe12aa791d2fee6f652808c8c60018e6002811115613c9357fe5b6002811115613c9e57fe5b14613cad578b60020154613caf565b885b60408051938452602084019290925282820152426060830152519081900360800190a4505060016000555050505050505050565b60026000541415613d29576040805162461bcd60e51b815260206004820152601f60248201526000805160206156bf833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038084168252603760209081526040808420600a81015482516370a0823160e01b81528786166004820152925191959416939284926370a082319260248083019392829003018186803b158015613d8d57600080fd5b505afa158015613da1573d6000803e3d6000fd5b505050506040513d6020811015613db757600080fd5b5051905080613df75760405162461bcd60e51b81526004018080602001828103825260388152602001806157eb6038913960400191505060405180910390fd5b6000613e30613e1f6aa56fa5b99019a5c8000000613e13614f4f565b9063ffffffff614eea16565b60038601549063ffffffff614f5f16565b90506000836001600160a01b031663e78c9b3b876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015613e8a57600080fd5b505afa158015613e9e573d6000803e3d6000fd5b505050506040513d6020811015613eb457600080fd5b50516001860154909150811080613eca57508181115b613f055760405162461bcd60e51b815260040180806020018281038252602f815260200180615745602f913960400191505060405180910390fd5b613f0e8561486c565b836001600160a01b0316639dc29fac87856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015613f6e57600080fd5b505af1158015613f82573d6000803e3d6000fd5b50505050836001600160a01b031663156e29f6878588600301546040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015613ff257600080fd5b505af1158015614006573d6000803e3d6000fd5b50614020925087915089905060008063ffffffff61492416565b856001600160a01b0316876001600160a01b03167f443060d15ff6dac05881a7c07a46ef8085d8af4399e436be6c25250df40c5f18426040518082815260200191505060405180910390a3505050505050506001600055565b60001981565b6001600160a01b03811660009081526037602052604081206119ad90614f97565b600260005414156140e6576040805162461bcd60e51b815260206004820152601f60248201526000805160206156bf833981519152604482015290519081900360640190fd5b600260009081556001600160a01b0384168082526037602090815260408084203385526038835281852093855292909152808320815163664f158360e01b8152600481018490526024810187905291519293909273__$69254465eb8f179ea24caa73cf68b23524$__9263664f1583926044808301939192829003018186803b15801561417257600080fd5b505af4158015614186573d6000803e3d6000fd5b5050506009830154604080516370a0823160e01b815233600482015290516001600160a01b03909216925060009183916370a08231916024808301926020929190829003018186803b1580156141db57600080fd5b505afa1580156141ef573d6000803e3d6000fd5b505050506040513d602081101561420557600080fd5b50511590506142138461486c565b614226848888600063ffffffff61492416565b801561423857825460ff191660011783555b604080516394362e8b60e01b81523360048201526024810188905290516001600160a01b038416916394362e8b91604480830192600092919082900301818387803b15801561428657600080fd5b505af115801561429a573d6000803e3d6000fd5b506142b4925050506001600160a01b038816876001614c30565b60408051878152426020820152815161ffff88169233926001600160a01b038c16927fc12c57b1c73a2c3a2ea4613e9476abb3d8d146857aab7329e24243fb59710c82929181900390910190a4505060016000555050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561435357600080fd5b505afa158015614367573d6000803e3d6000fd5b505050506040513d602081101561437d57600080fd5b50516001600160a01b0316146143bf576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060050155565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561442257600080fd5b505afa158015614436573d6000803e3d6000fd5b505050506040513d602081101561444c57600080fd5b50516001600160a01b03161461448e576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b038116600090815260376020526040808220815163041e0b2d60e51b81526004810191909152905173__$2ec35834968386f54fa313129cf94664e4$__926383c165a09260248082019391829003018186803b1580156144f457600080fd5b505af4158015614508573d6000803e3d6000fd5b5050505050565b6000805b60395481101561455c57826001600160a01b03166039828154811061453457fe5b6000918252602090912001546001600160a01b0316141561455457600191505b600101614513565b50806145ae57603980546001810182556000919091527fdc16fef70f8d5ddbc01ee3d903d1e69c18a3c7be080eb86a81e0578814ee58d30180546001600160a01b0319166001600160a01b0384161790555b5050565b600a810154604080516370a0823160e01b81526001600160a01b0385811660048301529151600093849316916370a08231916024808301926020929190829003018186803b15801561460357600080fd5b505afa158015614617573d6000803e3d6000fd5b505050506040513d602081101561462d57600080fd5b5051600b840154604080516370a0823160e01b81526001600160a01b038881166004830152915191909216916370a08231916024808301926020929190829003018186803b15801561467e57600080fd5b505afa158015614692573d6000803e3d6000fd5b505050506040513d60208110156146a857600080fd5b5051909590945092505050565b600a8101546040805163631a6fd560e11b81526001600160a01b03858116600483015291516000938493169163c634dfaa916024808301926020929190829003018186803b15801561470657600080fd5b505afa15801561471a573d6000803e3d6000fd5b505050506040513d602081101561473057600080fd5b5051600b8401546040805163631a6fd560e11b81526001600160a01b0388811660048301529151919092169163c634dfaa916024808301926020929190829003018186803b15801561467e57600080fd5b600061478c83614d55565b156147a257506001600160a01b038116316119ad565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156147f857600080fd5b505afa15801561480c573d6000803e3d6000fd5b505050506040513d602081101561482257600080fd5b50519392505050565b6000806148658360040154614859856002015486600c0160149054906101000a900464ffffffffff16614fc5565b9063ffffffff614f5f16565b9392505050565b60006148778261502a565b90508015614900576001820154600c8301546000916148a391600160a01b900464ffffffffff1661512a565b83549091506148b990829063ffffffff614f5f16565b83556002830154600c8401546000916148df91600160a01b900464ffffffffff16614fc5565b90506148f8846004015482614f5f90919063ffffffff16565b600485015550505b50600c01805464ffffffffff60a01b1916600160a01b4264ffffffffff1602179055565b600a8401546040805163487b7e7960e11b815290516000926001600160a01b0316916390f6fcf2916004808301926020929190829003018186803b15801561496b57600080fd5b505afa15801561497f573d6000803e3d6000fd5b505050506040513d602081101561499557600080fd5b5051905060006149b46001600160a01b0386163063ffffffff61478116565b90506149c8856001600160a01b0316614d55565b156149e0576149dd813463ffffffff614d8b16565b90505b600c860154600090819081906001600160a01b03166357e37af089614a1b89614a0f898d63ffffffff614eea16565b9063ffffffff614d8b16565b8c600a0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015614a6b57600080fd5b505afa158015614a7f573d6000803e3d6000fd5b505050506040513d6020811015614a9557600080fd5b5051600b8e0154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b158015614ade57600080fd5b505afa158015614af2573d6000803e3d6000fd5b505050506040513d6020811015614b0857600080fd5b5051604080516001600160e01b031960e088901b1681526001600160a01b039095166004860152602485019390935260448401919091526064830152608482018990525160a4808301926060929190829003018186803b158015614b6b57600080fd5b505afa158015614b7f573d6000803e3d6000fd5b505050506040513d6060811015614b9557600080fd5b50805160208083015160409384015160018e0184905560038e0182905560028e018190558d5460048f015486518681529485018490528487018c905260608501839052608085019190915260a0840152935192965094509192506001600160a01b038a16917f131cf1f61e39fd78f61f07d78533f5b6c13629c80ef6965983e92c72efbaa4a4919081900360c00190a2505050505050505050565b81614c3a576127b8565b614c4383614d55565b15614d3a5781341015614c875760405162461bcd60e51b81526004018080602001828103825260358152602001806157106035913960400191505060405180910390fd5b8015614d3557600033614ca0348563ffffffff614d8b16565b60405161c35091906000818181858888f193505050503d8060008114614ce2576040519150601f19603f3d011682016040523d82523d6000602084013e614ce7565b606091505b5050905080614d33576040805162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b505b6127b8565b6127b86001600160a01b03841633308563ffffffff61518a16565b60006001600160a01b03821615806119ad5750506001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b600061486583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506151ea565b80614dd7576127b8565b614de083614d55565b15614e35576040516000906001600160a01b0384169061c35090849084818181858888f193505050503d8060008114614ce2576040519150601f19603f3d011682016040523d82523d6000602084013e614ce7565b6127b86001600160a01b038416838363ffffffff61524416565b600082614e5e575060006119ad565b82820282848281614e6b57fe5b04146148655760405162461bcd60e51b81526004018080602001828103825260218152602001806157ca6021913960400191505060405180910390fd5b600061486583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615296565b600082820183811015614865576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600290565b303b1590565b6b033b2e3c9fd0803ce800000090565b60006148656b033b2e3c9fd0803ce8000000612115614f84868663ffffffff614e4f16565b6b019d971e4fe8401e7400000090614eea565b6000806148658360000154614859856001015486600c0160149054906101000a900464ffffffffff1661512a565b600080614fdf4264ffffffffff851663ffffffff614d8b16565b90506000614ff7856301e1338063ffffffff614ea816565b905061502182615015615008614f4f565b849063ffffffff614eea16565b9063ffffffff6152fb16565b95945050505050565b60006119ad82600b0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561507f57600080fd5b505afa158015615093573d6000803e3d6000fd5b505050506040513d60208110156150a957600080fd5b5051600a840154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b1580156150f257600080fd5b505afa158015615106573d6000803e3d6000fd5b505050506040513d602081101561511c57600080fd5b50519063ffffffff614eea16565b6000806151444264ffffffffff851663ffffffff614d8b16565b9050600061516d6151586301e13380615355565b61516184615355565b9063ffffffff61536b16565b905061502161517a614f4f565b613e13878463ffffffff614f5f16565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526151e490859061538e565b50505050565b6000818484111561523c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610fb4578181015183820152602001610f9c565b505050900390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526127b890849061538e565b600081836152e55760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610fb4578181015183820152602001610f9c565b5060008385816152f157fe5b0495945050505050565b600060028206615317576b033b2e3c9fd0803ce8000000615319565b825b90506002820491505b81156119ad576153328384614f5f565b9250600282061561534a576153478184614f5f565b90505b600282049150615322565b60006119ad82633b9aca0063ffffffff614e4f16565b600060028204610c3183612115615008876b033b2e3c9fd0803ce8000000614e4f565b60606153e3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661543f9092919063ffffffff16565b8051909150156127b85780806020019051602081101561540257600080fd5b50516127b85760405162461bcd60e51b815260040180806020018281038252602a815260200180615883602a913960400191505060405180910390fd5b6060610c318484600085606061545485610bfd565b6154a5576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106154e45780518252601f1990920191602091820191016154c5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114615546576040519150601f19603f3d011682016040523d82523d6000602084013e61554b565b606091505b5091509150811561555f579150610c319050565b80511561556f5780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315610fb4578181015183820152602001610f9c565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fe5265656e7472616e637947756172643a207265656e7472616e742063616c6c005468657265206973206e6f7420656e6f756768206c697175696469747920617661696c61626c6520746f20626f72726f7754686520616d6f756e7420616e64207468652076616c75652073656e7420746f206465706f73697420646f206e6f74206d61746368496e746572657374207261746520726562616c616e636520636f6e646974696f6e732077657265206e6f74206d65745468652061637475616c2062616c616e6365206f66207468652070726f746f636f6c20697320696e636f6e73697374656e745265736572766520686173206e6f74206265656e20696e697469616c697a656420796574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775573657220646f6573206e6f74206861766520616e7920737461626c652072617465206c6f616e20666f7220746869732072657365727665436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65645468652072657175657374656420616d6f756e7420697320746f6f20736d616c6c20666f72206120466c6173684c6f616e2e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220f8776e275076212a6480058df7cf96cfd14cd653fa5278843e8d3e3db9019c6964736f6c63430006080033"; + "0x6080604052600060015534801561001557600080fd5b5060016000556158d4806200002b6000396000f3fe6080604052600436106101fc5760003560e01c806376e9d6151161010d578063c4d66de8116100a0578063d0fc81d21161006f578063d0fc81d214610b1b578063d15e005314610b30578063d2d0e06614610b63578063d466016f14610b99578063e8ae2f5b14610bd257610242565b8063c4d66de814610a4f578063c72c4d1014610a82578063c858f5f914610a97578063cd11238214610ae057610242565b80639895e3d8116100dc5780639895e3d81461091b578063a5bc826c14610964578063b736aaeb146109a9578063bf92857c146109e457610242565b806376e9d6151461083b5780638afaff021461089257806394ba89a2146108a757806396e957c4146108e057610242565b80633e150141116101905780635cffe9de1161015f5780635cffe9de1461067857806366bbd9281461074b5780636ee365f91461078457806370fb84f4146107c757806373b2f2f21461080057610242565b80633e150141146105205780634fe7a6e5146105bd578063573ade81146106035780635a3b74b91461063d57610242565b806328dd2d01116101cc57806328dd2d01146103845780633443a14b1461041857806335ea6a7514610451578063386497fd146104db57610242565b8062a718a9146102475780630902f1ac1461028b57806309eab60f146102f05780631d2118f91461034957610242565b366102425761020a33610c05565b610240576040805162461bcd60e51b8152602060048201526002602482015261191960f11b604482015290519081900360640190fd5b005b600080fd5b610240600480360360a081101561025d57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515610c41565b34801561029757600080fd5b506102a0611008565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102dc5781810151838201526020016102c4565b505050509050019250505060405180910390f35b3480156102fc57600080fd5b50610240600480360360c081101561031357600080fd5b506001600160a01b03813581169160208101358216916040820135811691606081013582169160808201359160a001351661106a565b34801561035557600080fd5b506102406004803603604081101561036c57600080fd5b506001600160a01b03813581169160200135166111d1565b34801561039057600080fd5b506103bf600480360360408110156103a757600080fd5b506001600160a01b03813581169160200135166112b2565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015264ffffffffff16610100840152151561012083015251908190036101400190f35b34801561042457600080fd5b506102406004803603604081101561043b57600080fd5b506001600160a01b0381351690602001356115d9565b34801561045d57600080fd5b506104846004803603602081101561047457600080fd5b50356001600160a01b03166116a8565b604080519a8b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015264ffffffffff1661012083015251908190036101400190f35b3480156104e757600080fd5b5061050e600480360360208110156104fe57600080fd5b50356001600160a01b0316611994565b60408051918252519081900360200190f35b34801561052c57600080fd5b506105536004803603602081101561054357600080fd5b50356001600160a01b03166119bb565b604080519b8c5260208c019a909a528a8a019890985260608a01969096526001600160a01b0394851660808a01529290931660a0880152151560c087015290151560e086015215156101008501521515610120840152151561014083015251908190036101600190f35b3480156105c957600080fd5b506105e7600480360360208110156105e057600080fd5b5035611a37565b604080516001600160a01b039092168252519081900360200190f35b6102406004803603608081101561061957600080fd5b506001600160a01b0381358116916020810135916040820135916060013516611a5e565b34801561064957600080fd5b506102406004803603604081101561066057600080fd5b506001600160a01b0381351690602001351515611e35565b34801561068457600080fd5b506102406004803603608081101561069b57600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156106d657600080fd5b8201836020820111156106e857600080fd5b8035906020019184600183028401116401000000008311171561070a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061209b945050505050565b34801561075757600080fd5b506102406004803603604081101561076e57600080fd5b506001600160a01b038135169060200135612544565b34801561079057600080fd5b50610240600480360360608110156107a757600080fd5b506001600160a01b03813516906020810135151590604001351515612613565b3480156107d357600080fd5b50610240600480360360408110156107ea57600080fd5b506001600160a01b0381351690602001356127d8565b34801561080c57600080fd5b506102406004803603604081101561082357600080fd5b506001600160a01b03813516906020013515156128a7565b34801561084757600080fd5b5061087e6004803603606081101561085e57600080fd5b506001600160a01b0381358116916020810135909116906040013561298f565b604080519115158252519081900360200190f35b34801561089e57600080fd5b5061050e612b1f565b3480156108b357600080fd5b50610240600480360360408110156108ca57600080fd5b506001600160a01b038135169060200135612b24565b3480156108ec57600080fd5b506102406004803603604081101561090357600080fd5b506001600160a01b0381351690602001351515612e99565b34801561092757600080fd5b506102406004803603608081101561093e57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135612f81565b34801561097057600080fd5b506102406004803603608081101561098757600080fd5b506001600160a01b03813516906020810135906040810135906060013561311d565b3480156109b557600080fd5b50610240600480360360408110156109cc57600080fd5b506001600160a01b0381351690602001351515613266565b3480156109f057600080fd5b50610a1760048036036020811015610a0757600080fd5b50356001600160a01b03166133b0565b604080519788526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b348015610a5b57600080fd5b5061024060048036036020811015610a7257600080fd5b50356001600160a01b0316613611565b348015610a8e57600080fd5b506105e7613756565b348015610aa357600080fd5b5061024060048036036080811015610aba57600080fd5b5080356001600160a01b0316906020810135906040810135906060013561ffff16613765565b348015610aec57600080fd5b5061024060048036036040811015610b0357600080fd5b506001600160a01b0381358116916020013516613cea565b348015610b2757600080fd5b5061050e614080565b348015610b3c57600080fd5b5061050e60048036036020811015610b5357600080fd5b50356001600160a01b0316614086565b61024060048036036060811015610b7957600080fd5b5080356001600160a01b0316906020810135906040013561ffff166140a7565b348015610ba557600080fd5b5061024060048036036040811015610bbc57600080fd5b506001600160a01b038135169060200135614316565b348015610bde57600080fd5b5061024060048036036020811015610bf557600080fd5b50356001600160a01b03166143e5565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610c3957508115155b949350505050565b60026000541415610c87576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b6002600090815560355460408051632c1a75cd60e11b815290516001600160a01b0390921691635834eb9a91600480820192602092909190829003018186803b158015610cd357600080fd5b505afa158015610ce7573d6000803e3d6000fd5b505050506040513d6020811015610cfd57600080fd5b5051604080516001600160a01b038981166024830152888116604483015287811660648301526084820187905285151560a4808401919091528351808403909101815260c490920183526020820180516001600160e01b031662a718a960e01b17815292518251949550600094606094928716939282918083835b60208310610d975780518252601f199092019160209182019101610d78565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610df7576040519150601f19603f3d011682016040523d82523d6000602084013e610dfc565b606091505b509150915081610e38576040805162461bcd60e51b81526020600482015260026024820152610c8d60f21b604482015290519081900360640190fd5b60006060828060200190516040811015610e5157600080fd5b815160208301805160405192949293830192919084640100000000821115610e7857600080fd5b908301906020820185811115610e8d57600080fd5b8251640100000000811182820188101715610ea757600080fd5b82525081516020918201929091019080838360005b83811015610ed4578181015183820152602001610ebc565b50505050905090810190601f168015610f015780820380516001836020036101000a031916815260200191505b506040525050509150915081600014610ff757806040516020018082805190602001908083835b60208310610f475780518252601f199092019160209182019101610f28565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183529384905262461bcd60e51b84526004840181815282516024860152825192965094508493604401925085019080838360005b83811015610fbc578181015183820152602001610fa4565b50505050905090810190601f168015610fe95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505060016000555050505050505050565b6060603980548060200260200160405190810160405280929190818152602001828054801561106057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611042575b5050505050905090565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156110ae57600080fd5b505afa1580156110c2573d6000803e3d6000fd5b505050506040513d60208110156110d857600080fd5b50516001600160a01b03161461111a576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b038087166000908152603760205260408082208151630b25f31560e01b815260048101919091528884166024820152878416604482015286841660648201526084810186905292841660a48401525173__$2ec35834968386f54fa313129cf94664e4$__92630b25f3159260c4808301939192829003018186803b1580156111a857600080fd5b505af41580156111bc573d6000803e3d6000fd5b505050506111c986614516565b505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561121557600080fd5b505afa158015611229573d6000803e3d6000fd5b505050506040513d602081101561123f57600080fd5b50516001600160a01b031614611281576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b039182166000908152603760205260409020600c0180546001600160a01b03191691909216179055565b6001600160a01b038083166000908152603760209081526040808320600981015482516370a0823160e01b815287871660048201529251949586958695869586958695869586958695869593909216926370a08231926024808301939192829003018186803b15801561132457600080fd5b505afa158015611338573d6000803e3d6000fd5b505050506040513d602081101561134e57600080fd5b50519a5061135c8c826145b9565b909a50985061136b8c826146bc565b80985081995050508060010154945080600a0160009054906101000a90046001600160a01b03166001600160a01b031663e78c9b3b8d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156113e757600080fd5b505afa1580156113fb573d6000803e3d6000fd5b505050506040513d602081101561141157600080fd5b8101908080519060200190929190505050955080600a0160009054906101000a90046001600160a01b03166001600160a01b03166379ce6b8c8d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b81019080805190602001909291905050509250603860008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060000160009054906101000a900460ff16915080600b0160009054906101000a90046001600160a01b03166001600160a01b031663ee9907a48d6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561159657600080fd5b505afa1580156115aa573d6000803e3d6000fd5b505050506040513d60208110156115c057600080fd5b50519a9d999c50979a5095989497939650919491929050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561161d57600080fd5b505afa158015611631573d6000803e3d6000fd5b505050506040513d602081101561164757600080fd5b50516001600160a01b031614611689576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060060155565b6000806000806000806000806000806116bf6155bd565b506001600160a01b03808c16600081815260376020908152604091829020825161026081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a0820152600682015460c0820152600782015460e0820152600882015461010082015260098201548416610120820152600a8201548416610140820152600b8201548416610160820152600c9091015492831661018082015264ffffffffff600160a01b8404166101a082015260ff600160c81b8404811615156101c0830152600160d01b8404811615156101e0830152600160d81b840481161515610200830152600160e01b840481161515610220830152600160e81b90930490921615156102408301526117f2903063ffffffff61478816565b8161014001516001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561183057600080fd5b505afa158015611844573d6000803e3d6000fd5b505050506040513d602081101561185a57600080fd5b5051610160830151604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b1580156118a457600080fd5b505afa1580156118b8573d6000803e3d6000fd5b505050506040513d60208110156118ce57600080fd5b50516020848101516040808701516060880151610140890151835163487b7e7960e11b815293519495929491936001600160a01b03909116926390f6fcf292600480840193829003018186803b15801561192757600080fd5b505afa15801561193b573d6000803e3d6000fd5b505050506040513d602081101561195157600080fd5b810190808051906020019092919050505087600001518860800151896101a001519a509a509a509a509a509a509a509a509a509a50509193959799509193959799565b6001600160a01b03811660009081526037602052604081206119b590614832565b92915050565b6001600160a01b0390811660009081526037602052604090206008810154600582015460068301546007840154600c85015460099095015493969295919490938183169392169160ff600160d01b8304811692600160c81b8104821692600160d81b8204831692600160e01b8304811692600160e81b90041690565b60398181548110611a4457fe5b6000918252602090912001546001600160a01b0316905081565b60026000541415611aa4576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b6002600055611ab1615659565b6001600160a01b03808616600081815260376020908152604080832094871683526038825280832093835292905220611aea84836145b9565b602085015283526000856002811115611aff57fe5b90506001816002811115611b0f57fe5b14611b1e578360200151611b21565b83515b60408501526000198714801590611b3b5750836040015187105b15611b4857604084018790525b73__$69254465eb8f179ea24caa73cf68b23524$__63d454c1cc848a8a858a8a600001518b602001518c60400151346040518a63ffffffff1660e01b8152600401808a8152602001896001600160a01b03166001600160a01b03168152602001888152602001876002811115611bba57fe5b60ff168152602001866001600160a01b03166001600160a01b03168152602001858152602001848152602001838152602001828152602001995050505050505050505060006040518083038186803b158015611c1557600080fd5b505af4158015611c29573d6000803e3d6000fd5b50505050611c3683614873565b6001816002811115611c4457fe5b1415611cc257600a8301546040808601518151632770a7eb60e21b81526001600160a01b03898116600483015260248201929092529151921691639dc29fac9160448082019260009290919082900301818387803b158015611ca557600080fd5b505af1158015611cb9573d6000803e3d6000fd5b50505050611d36565b600b8301546040808601518151632770a7eb60e21b81526001600160a01b03898116600483015260248201929092529151921691639dc29fac9160448082019260009290919082900301818387803b158015611d1d57600080fd5b505af1158015611d31573d6000803e3d6000fd5b505050505b6040840151611d509084908a90600063ffffffff61492b16565b6040840151611d71906001600160a01b038a1690600063ffffffff614c3716565b611d83886001600160a01b0316614d5c565b15611dc5576000611da1856040015134614d9290919063ffffffff16565b90508015611dc357611dc36001600160a01b038a16338363ffffffff614dd416565b505b336001600160a01b0316856001600160a01b0316896001600160a01b03167f81cfb79463601de705d4cf6b8d69112983d76a685120e5e4d3581f30871b87fc876040015142604051808381526020018281526020019250505060405180910390a450506001600055505050505050565b60026000541415611e7b576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038084168083526037602081815260408086203387526038808452828820958852948352958190206035548251631f94a27560e31b81529251919673__$69254465eb8f179ea24caa73cf68b23524$__9663d73dac72968a968d9691959294603994169263fca513a8926004808201939291829003018186803b158015611f0f57600080fd5b505afa158015611f23573d6000803e3d6000fd5b505050506040513d6020811015611f3957600080fd5b50516040516001600160e01b031960e089901b168152600481018781526001600160a01b0380881660248401526044830187905260648301869052831660a483015260c060848301908152845460c484018190529192909160e49091019085908015611fce57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611fb0575b505097505050505050505060006040518083038186803b158015611ff157600080fd5b505af4158015612005573d6000803e3d6000fd5b5050825460ff191685158015919091178455915061205990505760405133906001600160a01b038616907e058a56ea94653cdf4f152d227ace22d4c00ad99e2a43f58cb7d9e3feb295f290600090a3612090565b60405133906001600160a01b038616907f44c58d81365b66dd4b1a7f36c25aa97b8c71c361ee4937adc1a00000227db5dd90600090a35b505060016000555050565b600260005414156120e1576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b60026000556120ee615681565b6001600160a01b038416600081815260376020526040902090612117903063ffffffff61478816565b825261213c61271061213086600963ffffffff614e5616565b9063ffffffff614eaf16565b6060830181905261215d906127109061213090610bb863ffffffff614e5616565b608083015281518411156121a25760405162461bcd60e51b81526004018080602001828103825260318152602001806156d16031913960400191505060405180910390fd5b600082606001511180156121ba575060008260800151115b6121f55760405162461bcd60e51b81526004018080602001828103825260328152602001806158436032913960400191505060405180910390fd5b85806122116001600160a01b038816828863ffffffff614dd416565b816001600160a01b031663ee87255888888760600151896040518563ffffffff1660e01b815260040180856001600160a01b03166001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612298578181015183820152602001612280565b50505050905090810190601f1680156122c55780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156122e757600080fd5b505af11580156122fb573d6000803e3d6000fd5b506000925061231c9150506001600160a01b0389163063ffffffff61478816565b60608601518651919250612336919063ffffffff614ef116565b81146123735760405162461bcd60e51b81526004018080602001828103825260328152602001806157666032913960400191505060405180910390fd5b8373__$5e6137a1b5a0a366e2874209b5abf71c10$__63a023726490918a88600001516123b18a608001518b60600151614d9290919063ffffffff16565b8a608001516040518663ffffffff1660e01b815260040180868152602001856001600160a01b03166001600160a01b031681526020018481526020018381526020018281526020019550505050505060006040518083038186803b15801561241857600080fd5b505af415801561242c573d6000803e3d6000fd5b505050506124c9603560009054906101000a90046001600160a01b03166001600160a01b031663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b15801561248157600080fd5b505afa158015612495573d6000803e3d6000fd5b505050506040513d60208110156124ab57600080fd5b505160808701516001600160a01b038b16919063ffffffff614dd416565b876001600160a01b0316896001600160a01b03167f5b8f46461c1dd69fb968f1a003acee221ea3e19540e350233b612ddb43433b558988606001518960800151426040518085815260200184815260200183815260200182815260200194505050505060405180910390a35050600160005550505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561258857600080fd5b505afa15801561259c573d6000803e3d6000fd5b505050506040513d60208110156125b257600080fd5b50516001600160a01b0316146125f4576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060080155565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561265757600080fd5b505afa15801561266b573d6000803e3d6000fd5b505050506040513d602081101561268157600080fd5b50516001600160a01b0316146126c3576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b8115612754576001600160a01b0383166000908152603760205260408082208151637b1dd5df60e11b815260048101919091528315156024820152905173__$2ec35834968386f54fa313129cf94664e4$__9263f63babbe9260448082019391829003018186803b15801561273757600080fd5b505af415801561274b573d6000803e3d6000fd5b505050506127d3565b6001600160a01b03831660009081526037602052604080822081516372efab5360e11b81526004810191909152905173__$2ec35834968386f54fa313129cf94664e4$__9263e5df56a69260248082019391829003018186803b1580156127ba57600080fd5b505af41580156127ce573d6000803e3d6000fd5b505050505b505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561281c57600080fd5b505afa158015612830573d6000803e3d6000fd5b505050506040513d602081101561284657600080fd5b50516001600160a01b031614612888576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060070155565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156128eb57600080fd5b505afa1580156128ff573d6000803e3d6000fd5b505050506040513d602081101561291557600080fd5b50516001600160a01b031614612957576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b039091166000908152603760205260409020600c018054911515600160d81b0260ff60d81b19909216919091179055565b600073__$7347ff53b2b46c21e26a37164ae7f6739f$__634d9afd5e858585603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b158015612a0257600080fd5b505afa158015612a16573d6000803e3d6000fd5b505050506040513d6020811015612a2c57600080fd5b505160405160e089811b6001600160e01b03191682526001600160a01b0389811660048401908152898216602485015260448401899052606484018890526084840187905290841660c484015260a48301918252845460e484018190529092610104019085908015612ac757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612aa9575b50509850505050505050505060206040518083038186803b158015612aeb57600080fd5b505af4158015612aff573d6000803e3d6000fd5b505050506040513d6020811015612b1557600080fd5b5051949350505050565b600281565b60026000541415612b6a576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b600260009081556001600160a01b0383168082526037602090815260408084203380865260388452828620948652939092528320909290918190612bae90856145b9565b915091506000856002811115612bc057fe5b905073__$69254465eb8f179ea24caa73cf68b23524$__63d4cadffc86868686866040518663ffffffff1660e01b815260040180868152602001858152602001848152602001838152602001826002811115612c1857fe5b60ff1681526020019550505050505060006040518083038186803b158015612c3f57600080fd5b505af4158015612c53573d6000803e3d6000fd5b50505050612c6085614873565b6001816002811115612c6e57fe5b1415612d5257600a85015460408051632770a7eb60e21b81523360048201526024810186905290516001600160a01b0390921691639dc29fac9160448082019260009290919082900301818387803b158015612cc957600080fd5b505af1158015612cdd573d6000803e3d6000fd5b505050600b860154604080516340c10f1960e01b81523360048201526024810187905290516001600160a01b0390921692506340c10f1991604480830192600092919082900301818387803b158015612d3557600080fd5b505af1158015612d49573d6000803e3d6000fd5b50505050612e38565b600b85015460408051632770a7eb60e21b81523360048201526024810185905290516001600160a01b0390921691639dc29fac9160448082019260009290919082900301818387803b158015612da757600080fd5b505af1158015612dbb573d6000803e3d6000fd5b505050600a860154600387015460408051630ab714fb60e11b8152336004820152602481018790526044810192909252516001600160a01b03909216925063156e29f691606480830192600092919082900301818387803b158015612e1f57600080fd5b505af1158015612e33573d6000803e3d6000fd5b505050505b612e4b858860008063ffffffff61492b16565b60408051428152905133916001600160a01b038a16917fea368a40e9570069bb8e6511d668293ad2e1f03b0d982431fd223de9f3b70ca69181900360200190a3505060016000555050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b158015612edd57600080fd5b505afa158015612ef1573d6000803e3d6000fd5b505050506040513d6020811015612f0757600080fd5b50516001600160a01b031614612f49576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b039091166000908152603760205260409020600c018054911515600160e81b0260ff60e81b19909216919091179055565b60026000541415612fc7576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038086168083526037602090815260408085209388168552603882528085208386529091528084208151630d9e1f7160e11b81526004810185905260248101939093526044830187905290519293909273__$69254465eb8f179ea24caa73cf68b23524$__92631b3c3ee2926064808301939192829003018186803b15801561305d57600080fd5b505af4158015613071573d6000803e3d6000fd5b50505050826000141561308757805460ff191681555b61309082614873565b6130a3828760008763ffffffff61492b16565b6130bd6001600160a01b038716868663ffffffff614dd416565b846001600160a01b0316866001600160a01b03167f9c4ed599cd8555b9c1e8cd7643240d7d71eb76b792948c49fcb4d411f7b6b3c68642604051808381526020018281526020019250505060405180910390a35050600160005550505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561316157600080fd5b505afa158015613175573d6000803e3d6000fd5b505050506040513d602081101561318b57600080fd5b50516001600160a01b0316146131cd576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b038416600090815260376020526040808220815163126ee27360e11b81526004810191909152602481018690526044810185905260648101849052905173__$2ec35834968386f54fa313129cf94664e4$__926324ddc4e69260848082019391829003018186803b15801561324857600080fd5b505af415801561325c573d6000803e3d6000fd5b5050505050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b1580156132aa57600080fd5b505afa1580156132be573d6000803e3d6000fd5b505050506040513d60208110156132d457600080fd5b50516001600160a01b031614613316576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03821660009081526037602052604090208161334757600c8101805460ff60e01b191690556127d3565b80541580159061335b575060008160040154115b6133965760405162461bcd60e51b81526004018080602001828103825260248152602001806157986024913960400191505060405180910390fd5b600c8101805460ff60e01b1916600160e01b179055505050565b600080600080600080600073__$7347ff53b2b46c21e26a37164ae7f6739f$__63901d711489603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561342a57600080fd5b505afa15801561343e573d6000803e3d6000fd5b505050506040513d602081101561345457600080fd5b50516040516001600160e01b031960e088901b1681526001600160a01b03808716600483019081526024830187905260448301869052908316608483015260a060648301908152845460a484018190529192909160c490910190859080156134e557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116134c7575b5050965050505050505060c06040518083038186803b15801561350757600080fd5b505af415801561351b573d6000803e3d6000fd5b505050506040513d60c081101561353157600080fd5b5080516020808301516040808501516060860151608087015160a090970151603654845163ab8bb39360e01b8152600481018990526024810187905260448101859052606481018490526001600160a01b0390911660848201529351969e50939c50909a50949750939550935073__$7347ff53b2b46c21e26a37164ae7f6739f$__9263ab8bb3939260a48083019392829003018186803b1580156135d557600080fd5b505af41580156135e9573d6000803e3d6000fd5b505050506040513d60208110156135ff57600080fd5b50519698959750939594919390925090565b600061361b614f4b565b60025490915060ff16806136325750613632614f50565b8061363e575060015481115b6136795760405162461bcd60e51b815260040180806020018281038252602e815260200180615815602e913960400191505060405180910390fd5b60025460ff1615801561369a576002805460ff191660019081179091558290555b603580546001600160a01b0319166001600160a01b03858116919091179182905560408051633efbbf0f60e21b81529051929091169163fbeefc3c91600480820192602092909190829003018186803b1580156136f657600080fd5b505afa15801561370a573d6000803e3d6000fd5b505050506040513d602081101561372057600080fd5b5051603680546001600160a01b0319166001600160a01b0390921691909117905580156127d3576002805460ff19169055505050565b6035546001600160a01b031681565b600260005414156137ab576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038086168083526037602090815260408085203386526038835281862093865292825280852060088401546035548351631f94a27560e31b815293519597929692956138dd95600a9390930a94612130948d9493169263fca513a892600480840193829003018186803b15801561382f57600080fd5b505afa158015613843573d6000803e3d6000fd5b505050506040513d602081101561385957600080fd5b50516040805163b3596f0760e01b81526001600160a01b038e811660048301529151919092169163b3596f07916024808301926020929190829003018186803b1580156138a557600080fd5b505afa1580156138b9573d6000803e3d6000fd5b505050506040513d60208110156138cf57600080fd5b50519063ffffffff614e5616565b905073__$69254465eb8f179ea24caa73cf68b23524$__6305011d4884848a8a868b6019603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561395557600080fd5b505afa158015613969573d6000803e3d6000fd5b505050506040513d602081101561397f57600080fd5b50516040516001600160e01b031960e08e901b168152600481018c8152602482018c90526001600160a01b03808c166044840152606483018b9052608483018a905260a4830189905260c4830188905260e4830187905261010483018690528316610144830152610160610124830190815284546101648401819052919290916101849091019085908015613a3d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613a1f575b50509c5050505050505050505050505060006040518083038186803b158015613a6557600080fd5b505af4158015613a79573d6000803e3d6000fd5b50505050613a8683614873565b600c8301805464ffffffffff60a01b1916600160a01b4264ffffffffff160217905560038301546001866002811115613abb57fe5b6002811115613ac657fe5b1415613bc057600a84015460408051630ab714fb60e11b8152336004820152602481018a90526044810184905290516001600160a01b039092169163156e29f69160648082019260009290919082900301818387803b158015613b2857600080fd5b505af1158015613b3c573d6000803e3d6000fd5b50505050600a84015460408051631e739ae360e21b815233600482015290516000926001600160a01b0316916379ce6b8c916024808301926020929190829003018186803b158015613b8d57600080fd5b505afa158015613ba1573d6000803e3d6000fd5b505050506040513d6020811015613bb757600080fd5b50613c2e915050565b600b840154604080516340c10f1960e01b8152336004820152602481018a905290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b158015613c1557600080fd5b505af1158015613c29573d6000803e3d6000fd5b505050505b613c41848960008a63ffffffff61492b16565b613c5b6001600160a01b038916338963ffffffff614dd416565b61ffff8516336001600160a01b038a167fe002884724be85e729c98360169e709585b299ace6fbe12aa791d2fee6f652808a8a60018c6002811115613c9c57fe5b6002811115613ca757fe5b14613cb6578960020154613cb8565b865b60408051938452602084019290925282820152426060830152519081900360800190a450506001600055505050505050565b60026000541415613d30576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b600260009081556001600160a01b038084168252603760209081526040808420600a81015482516370a0823160e01b81528786166004820152925191959416939284926370a082319260248083019392829003018186803b158015613d9457600080fd5b505afa158015613da8573d6000803e3d6000fd5b505050506040513d6020811015613dbe57600080fd5b5051905080613dfe5760405162461bcd60e51b81526004018080602001828103825260388152602001806157dd6038913960400191505060405180910390fd5b6000613e37613e266aa56fa5b99019a5c8000000613e1a614f56565b9063ffffffff614ef116565b60038601549063ffffffff614f6616565b90506000836001600160a01b031663e78c9b3b876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015613e9157600080fd5b505afa158015613ea5573d6000803e3d6000fd5b505050506040513d6020811015613ebb57600080fd5b50516001860154909150811080613ed157508181115b613f0c5760405162461bcd60e51b815260040180806020018281038252602f815260200180615737602f913960400191505060405180910390fd5b613f1585614873565b836001600160a01b0316639dc29fac87856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015613f7557600080fd5b505af1158015613f89573d6000803e3d6000fd5b50505050836001600160a01b031663156e29f6878588600301546040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015613ff957600080fd5b505af115801561400d573d6000803e3d6000fd5b50614027925087915089905060008063ffffffff61492b16565b856001600160a01b0316876001600160a01b03167f443060d15ff6dac05881a7c07a46ef8085d8af4399e436be6c25250df40c5f18426040518082815260200191505060405180910390a3505050505050506001600055565b60001981565b6001600160a01b03811660009081526037602052604081206119b590614f9e565b600260005414156140ed576040805162461bcd60e51b815260206004820152601f60248201526000805160206156b1833981519152604482015290519081900360640190fd5b600260009081556001600160a01b0384168082526037602090815260408084203385526038835281852093855292909152808320815163664f158360e01b8152600481018490526024810187905291519293909273__$69254465eb8f179ea24caa73cf68b23524$__9263664f1583926044808301939192829003018186803b15801561417957600080fd5b505af415801561418d573d6000803e3d6000fd5b5050506009830154604080516370a0823160e01b815233600482015290516001600160a01b03909216925060009183916370a08231916024808301926020929190829003018186803b1580156141e257600080fd5b505afa1580156141f6573d6000803e3d6000fd5b505050506040513d602081101561420c57600080fd5b505115905061421a84614873565b61422d848888600063ffffffff61492b16565b801561423f57825460ff191660011783555b604080516394362e8b60e01b81523360048201526024810188905290516001600160a01b038416916394362e8b91604480830192600092919082900301818387803b15801561428d57600080fd5b505af11580156142a1573d6000803e3d6000fd5b506142bb925050506001600160a01b038816876001614c37565b60408051878152426020820152815161ffff88169233926001600160a01b038c16927fc12c57b1c73a2c3a2ea4613e9476abb3d8d146857aab7329e24243fb59710c82929181900390910190a4505060016000555050505050565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561435a57600080fd5b505afa15801561436e573d6000803e3d6000fd5b505050506040513d602081101561438457600080fd5b50516001600160a01b0316146143c6576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b03909116600090815260376020526040902060050155565b603554604080516385c858b160e01b8152905133926001600160a01b0316916385c858b1916004808301926020929190829003018186803b15801561442957600080fd5b505afa15801561443d573d6000803e3d6000fd5b505050506040513d602081101561445357600080fd5b50516001600160a01b031614614495576040805162461bcd60e51b8152602060048201526002602482015261033360f41b604482015290519081900360640190fd5b6001600160a01b038116600090815260376020526040808220815163041e0b2d60e51b81526004810191909152905173__$2ec35834968386f54fa313129cf94664e4$__926383c165a09260248082019391829003018186803b1580156144fb57600080fd5b505af415801561450f573d6000803e3d6000fd5b5050505050565b6000805b60395481101561456357826001600160a01b03166039828154811061453b57fe5b6000918252602090912001546001600160a01b0316141561455b57600191505b60010161451a565b50806145b557603980546001810182556000919091527fdc16fef70f8d5ddbc01ee3d903d1e69c18a3c7be080eb86a81e0578814ee58d30180546001600160a01b0319166001600160a01b0384161790555b5050565b600a810154604080516370a0823160e01b81526001600160a01b0385811660048301529151600093849316916370a08231916024808301926020929190829003018186803b15801561460a57600080fd5b505afa15801561461e573d6000803e3d6000fd5b505050506040513d602081101561463457600080fd5b5051600b840154604080516370a0823160e01b81526001600160a01b038881166004830152915191909216916370a08231916024808301926020929190829003018186803b15801561468557600080fd5b505afa158015614699573d6000803e3d6000fd5b505050506040513d60208110156146af57600080fd5b5051909590945092505050565b600a8101546040805163631a6fd560e11b81526001600160a01b03858116600483015291516000938493169163c634dfaa916024808301926020929190829003018186803b15801561470d57600080fd5b505afa158015614721573d6000803e3d6000fd5b505050506040513d602081101561473757600080fd5b5051600b8401546040805163631a6fd560e11b81526001600160a01b0388811660048301529151919092169163c634dfaa916024808301926020929190829003018186803b15801561468557600080fd5b600061479383614d5c565b156147a957506001600160a01b038116316119b5565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156147ff57600080fd5b505afa158015614813573d6000803e3d6000fd5b505050506040513d602081101561482957600080fd5b50519392505050565b60008061486c8360040154614860856002015486600c0160149054906101000a900464ffffffffff16614fcc565b9063ffffffff614f6616565b9392505050565b600061487e82615031565b90508015614907576001820154600c8301546000916148aa91600160a01b900464ffffffffff16615131565b83549091506148c090829063ffffffff614f6616565b83556002830154600c8401546000916148e691600160a01b900464ffffffffff16614fcc565b90506148ff846004015482614f6690919063ffffffff16565b600485015550505b50600c01805464ffffffffff60a01b1916600160a01b4264ffffffffff1602179055565b600a8401546040805163487b7e7960e11b815290516000926001600160a01b0316916390f6fcf2916004808301926020929190829003018186803b15801561497257600080fd5b505afa158015614986573d6000803e3d6000fd5b505050506040513d602081101561499c57600080fd5b5051905060006149bb6001600160a01b0386163063ffffffff61478816565b90506149cf856001600160a01b0316614d5c565b156149e7576149e4813463ffffffff614d9216565b90505b600c860154600090819081906001600160a01b03166357e37af089614a2289614a16898d63ffffffff614ef116565b9063ffffffff614d9216565b8c600a0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015614a7257600080fd5b505afa158015614a86573d6000803e3d6000fd5b505050506040513d6020811015614a9c57600080fd5b5051600b8e0154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b158015614ae557600080fd5b505afa158015614af9573d6000803e3d6000fd5b505050506040513d6020811015614b0f57600080fd5b5051604080516001600160e01b031960e088901b1681526001600160a01b039095166004860152602485019390935260448401919091526064830152608482018990525160a4808301926060929190829003018186803b158015614b7257600080fd5b505afa158015614b86573d6000803e3d6000fd5b505050506040513d6060811015614b9c57600080fd5b50805160208083015160409384015160018e0184905560038e0182905560028e018190558d5460048f015486518681529485018490528487018c905260608501839052608085019190915260a0840152935192965094509192506001600160a01b038a16917f131cf1f61e39fd78f61f07d78533f5b6c13629c80ef6965983e92c72efbaa4a4919081900360c00190a2505050505050505050565b81614c41576127d3565b614c4a83614d5c565b15614d415781341015614c8e5760405162461bcd60e51b81526004018080602001828103825260358152602001806157026035913960400191505060405180910390fd5b8015614d3c57600033614ca7348563ffffffff614d9216565b60405161c35091906000818181858888f193505050503d8060008114614ce9576040519150601f19603f3d011682016040523d82523d6000602084013e614cee565b606091505b5050905080614d3a576040805162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b505b6127d3565b6127d36001600160a01b03841633308563ffffffff61519116565b60006001600160a01b03821615806119b55750506001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b600061486c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506151f1565b80614dde576127d3565b614de783614d5c565b15614e3c576040516000906001600160a01b0384169061c35090849084818181858888f193505050503d8060008114614ce9576040519150601f19603f3d011682016040523d82523d6000602084013e614cee565b6127d36001600160a01b038416838363ffffffff61524b16565b600082614e65575060006119b5565b82820282848281614e7257fe5b041461486c5760405162461bcd60e51b81526004018080602001828103825260218152602001806157bc6021913960400191505060405180910390fd5b600061486c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061529d565b60008282018381101561486c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600290565b303b1590565b6b033b2e3c9fd0803ce800000090565b600061486c6b033b2e3c9fd0803ce8000000612130614f8b868663ffffffff614e5616565b6b019d971e4fe8401e7400000090614ef1565b60008061486c8360000154614860856001015486600c0160149054906101000a900464ffffffffff16615131565b600080614fe64264ffffffffff851663ffffffff614d9216565b90506000614ffe856301e1338063ffffffff614eaf16565b90506150288261501c61500f614f56565b849063ffffffff614ef116565b9063ffffffff61530216565b95945050505050565b60006119b582600b0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561508657600080fd5b505afa15801561509a573d6000803e3d6000fd5b505050506040513d60208110156150b057600080fd5b5051600a840154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b1580156150f957600080fd5b505afa15801561510d573d6000803e3d6000fd5b505050506040513d602081101561512357600080fd5b50519063ffffffff614ef116565b60008061514b4264ffffffffff851663ffffffff614d9216565b9050600061517461515f6301e1338061535c565b6151688461535c565b9063ffffffff61537216565b9050615028615181614f56565b613e1a878463ffffffff614f6616565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526151eb908590615395565b50505050565b600081848411156152435760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610fbc578181015183820152602001610fa4565b505050900390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526127d3908490615395565b600081836152ec5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610fbc578181015183820152602001610fa4565b5060008385816152f857fe5b0495945050505050565b60006002820661531e576b033b2e3c9fd0803ce8000000615320565b825b90506002820491505b81156119b5576153398384614f66565b925060028206156153515761534e8184614f66565b90505b600282049150615329565b60006119b582633b9aca0063ffffffff614e5616565b600060028204610c398361213061500f876b033b2e3c9fd0803ce8000000614e56565b60606153ea826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166154469092919063ffffffff16565b8051909150156127d35780806020019051602081101561540957600080fd5b50516127d35760405162461bcd60e51b815260040180806020018281038252602a815260200180615875602a913960400191505060405180910390fd5b6060610c398484600085606061545b85610c05565b6154ac576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106154eb5780518252601f1990920191602091820191016154cc565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461554d576040519150601f19603f3d011682016040523d82523d6000602084013e615552565b606091505b50915091508115615566579150610c399050565b8051156155765780518082602001fd5b60405162461bcd60e51b8152602060048201818152865160248401528651879391928392604401919085019080838360008315610fbc578181015183820152602001610fa4565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fe5265656e7472616e637947756172643a207265656e7472616e742063616c6c005468657265206973206e6f7420656e6f756768206c697175696469747920617661696c61626c6520746f20626f72726f7754686520616d6f756e7420616e64207468652076616c75652073656e7420746f206465706f73697420646f206e6f74206d61746368496e746572657374207261746520726562616c616e636520636f6e646974696f6e732077657265206e6f74206d65745468652061637475616c2062616c616e6365206f66207468652070726f746f636f6c20697320696e636f6e73697374656e745265736572766520686173206e6f74206265656e20696e697469616c697a656420796574536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775573657220646f6573206e6f74206861766520616e7920737461626c652072617465206c6f616e20666f7220746869732072657365727665436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65645468652072657175657374656420616d6f756e7420697320746f6f20736d616c6c20666f72206120466c6173684c6f616e2e5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a264697066735822122045a878c5d6533b4d3092ade9f71d5305fd57b4a0361e2152d0b73703e898ace464736f6c63430006080033"; export interface LendingPoolLibraryAddresses { ["__$2ec35834968386f54fa313129cf94664e4$__"]: string; diff --git a/types/LendingPoolLiquidationManager.d.ts b/types/LendingPoolLiquidationManager.d.ts index e23e812a..97f98cd2 100644 --- a/types/LendingPoolLiquidationManager.d.ts +++ b/types/LendingPoolLiquidationManager.d.ts @@ -37,7 +37,6 @@ interface LendingPoolLiquidationManagerInterface extends Interface { _user, _purchaseAmount, _liquidatedCollateralAmount, - _accruedBorrowInterest, _liquidator, _receiveAToken, _timestamp @@ -49,25 +48,6 @@ interface LendingPoolLiquidationManagerInterface extends Interface { null, null, null, - null, - null - ]): string[]; - }>; - - OriginationFeeLiquidated: TypedEventDescription<{ - encodeTopics([ - _collateral, - _reserve, - _user, - _feeLiquidated, - _liquidatedCollateralForFee, - _timestamp - ]: [ - string | null, - string | null, - string | null, - null, - null, null ]): string[]; }>; @@ -138,20 +118,10 @@ export class LendingPoolLiquidationManager extends Contract { _user: string | null, _purchaseAmount: null, _liquidatedCollateralAmount: null, - _accruedBorrowInterest: null, _liquidator: null, _receiveAToken: null, _timestamp: null ): EventFilter; - - OriginationFeeLiquidated( - _collateral: string | null, - _reserve: string | null, - _user: string | null, - _feeLiquidated: null, - _liquidatedCollateralForFee: null, - _timestamp: null - ): EventFilter; }; estimate: { diff --git a/types/LendingPoolLiquidationManagerFactory.ts b/types/LendingPoolLiquidationManagerFactory.ts index 2ba2ab96..02aa0a2c 100644 --- a/types/LendingPoolLiquidationManagerFactory.ts +++ b/types/LendingPoolLiquidationManagerFactory.ts @@ -32,13 +32,6 @@ export class LendingPoolLiquidationManagerFactory extends ContractFactory { .toLowerCase() ); - linkedBytecode = linkedBytecode.replace( - new RegExp("__\\$5e6137a1b5a0a366e2874209b5abf71c10\\$__", "g"), - linkLibraryAddresses["__$5e6137a1b5a0a366e2874209b5abf71c10$__"] - .replace(/^0x/, "") - .toLowerCase() - ); - return linkedBytecode; } @@ -102,12 +95,6 @@ const _abi = [ name: "_liquidatedCollateralAmount", type: "uint256" }, - { - indexed: false, - internalType: "uint256", - name: "_accruedBorrowInterest", - type: "uint256" - }, { indexed: false, internalType: "address", @@ -130,49 +117,6 @@ const _abi = [ name: "LiquidationCall", type: "event" }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "_collateral", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "_reserve", - type: "address" - }, - { - indexed: true, - internalType: "address", - name: "_user", - type: "address" - }, - { - indexed: false, - internalType: "uint256", - name: "_feeLiquidated", - type: "uint256" - }, - { - indexed: false, - internalType: "uint256", - name: "_liquidatedCollateralForFee", - type: "uint256" - }, - { - indexed: false, - internalType: "uint256", - name: "_timestamp", - type: "uint256" - } - ], - name: "OriginationFeeLiquidated", - type: "event" - }, { inputs: [], name: "addressesProvider", @@ -252,9 +196,8 @@ const _abi = [ ]; const _bytecode = - "0x6080604052600060015534801561001557600080fd5b50600160005561178d8061002a6000396000f3fe6080604052600436106100335760003560e01c8062a718a9146100385780634fe7a6e5146100fb578063c72c4d1014610141575b600080fd5b61007c600480360360a081101561004e57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515610156565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156100bf5781810151838201526020016100a7565b50505050905090810190601f1680156100ec5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561010757600080fd5b506101256004803603602081101561011e57600080fd5b5035610a06565b604080516001600160a01b039092168252519081900360200190f35b34801561014d57600080fd5b50610125610a2d565b6001600160a01b038481166000818152603760209081526040808320948a1680845281842033855260388452828520958552949092528083209183528220919360609390929091906101a6611551565b73__$7347ff53b2b46c21e26a37164ae7f6739f$__63901d711433603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561021557600080fd5b505afa158015610229573d6000803e3d6000fd5b505050506040513d602081101561023f57600080fd5b50516040516001600160e01b031960e088901b1681526001600160a01b03808716600483019081526024830187905260448301869052908316608483015260a060648301908152845460a484018190529192909160c490910190859080156102d057602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102b2575b5050965050505050505060c06040518083038186803b1580156102f257600080fd5b505af4158015610306573d6000803e3d6000fd5b505050506040513d60c081101561031c57600080fd5b5060a001516101c08201819052670de0b6b3a764000011610360576004604051806060016040528060288152602001611706602891399650965050505050506109fc565b8b6001600160a01b03166370a082318b6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156103b657600080fd5b505afa1580156103ca573d6000803e3d6000fd5b505050506040513d60208110156103e057600080fd5b505180825261042f5760016040518060400160405280601f81526020017f496e76616c696420636f6c6c61746572616c20746f206c6971756964617465008152509650965050505050506109fc565b600c840154600160d01b900460ff16801561044b5750815460ff165b151561020082018190526104825760026040518060600160405280602a81526020016116b2602a91399650965050505050506109fc565b61048c8a86610a3c565b60208301819052151590506104c45760036040518060600160405280602a815260200161172e602a91399650965050505050506109fc565b6104ed60646104e160328460200151610b3f90919063ffffffff16565b9063ffffffff610ba116565b6060820181905289116105005788610506565b80606001515b81608001818152505061052584868e8e85608001518660000151610be3565b6101a083018190526101808301919091526080820151111561054d576101a081015160808201525b876105a857600061056d6001600160a01b038e163063ffffffff610e6016565b90508161018001518110156105a657600560405180606001604052806033815260200161167f60339139975097505050505050506109fc565b505b6101808101516040805163f15e3b2160e01b8152600481018790526001600160a01b038f166024820152604481019290925289151560648301525173__$5e6137a1b5a0a366e2874209b5abf71c10$__9163f15e3b21916084808301926000929190829003018186803b15801561061e57600080fd5b505af4158015610632573d6000803e3d6000fd5b50505060098501546001600160a01b03166101e08301525087156106d2576101e08101516101808201516040805163f866c31960e01b81526001600160a01b038e8116600483015233602483015260448201939093529051919092169163f866c31991606480830192600092919082900301818387803b1580156106b557600080fd5b505af11580156106c9573d6000803e3d6000fd5b50505050610776565b806101e001516001600160a01b0316633edb7cb88b8361018001516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561073c57600080fd5b505af1158015610750573d6000803e3d6000fd5b50505061018082015161077691506001600160a01b038e1690339063ffffffff610f0a16565b6080810151610797906001600160a01b038d1690600163ffffffff610fe816565b6101008101511561092e57806101e001516001600160a01b0316633edb7cb88b8361012001516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561080c57600080fd5b505af1158015610820573d6000803e3d6000fd5b505050506108be603560009054906101000a90046001600160a01b03166001600160a01b031663ee8912966040518163ffffffff1660e01b815260040160206040518083038186803b15801561087557600080fd5b505afa158015610889573d6000803e3d6000fd5b505050506040513d602081101561089f57600080fd5b50516101208301516001600160a01b038f16919063ffffffff610f0a16565b896001600160a01b03168b6001600160a01b03168d6001600160a01b03167f36ca8b16d61dc13b1062adff83e3778ab92d14f9e35bfe9fd1283e02b13fb0a18461010001518561012001514260405180848152602001838152602001828152602001935050505060405180910390a45b896001600160a01b03168b6001600160a01b03168d6001600160a01b03167f56864757fd5b1fc9f38f5f3a981cd8ae512ce41b902cf73fc506ee369c6bc23784608001518561018001518660400151338f4260405180878152602001868152602001858152602001846001600160a01b03166001600160a01b0316815260200183151515158152602001828152602001965050505050505060405180910390a46000604051806040016040528060098152602001684e6f206572726f727360b81b8152509650965050505050505b9550959350505050565b60398181548110610a1357fe5b6000918252602090912001546001600160a01b0316905081565b6035546001600160a01b031681565b600a810154604080516370a0823160e01b81526001600160a01b0385811660048301529151600093849316916370a08231916024808301926020929190829003018186803b158015610a8d57600080fd5b505afa158015610aa1573d6000803e3d6000fd5b505050506040513d6020811015610ab757600080fd5b5051600b840154604080516370a0823160e01b81526001600160a01b038881166004830152915191909216916370a08231916024808301926020929190829003018186803b158015610b0857600080fd5b505afa158015610b1c573d6000803e3d6000fd5b505050506040513d6020811015610b3257600080fd5b5051909590945092505050565b600082610b4e57506000610b9b565b82820282848281610b5b57fe5b0414610b985760405162461bcd60e51b815260040180806020018281038252602181526020018061165e6021913960400191505060405180910390fd5b90505b92915050565b6000610b9883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506110ba565b60355460408051631f94a27560e31b81529051600092839283926001600160a01b039092169163fca513a891600480820192602092909190829003018186803b158015610c2f57600080fd5b505afa158015610c43573d6000803e3d6000fd5b505050506040513d6020811015610c5957600080fd5b50519050610c656115eb565b816001600160a01b031663b3596f07896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610cbb57600080fd5b505afa158015610ccf573d6000803e3d6000fd5b505050506040513d6020811015610ce557600080fd5b5051604080830191909152805163b3596f0760e01b81526001600160a01b03898116600483015291519184169163b3596f0791602480820192602092909190829003018186803b158015610d3857600080fd5b505afa158015610d4c573d6000803e3d6000fd5b505050506040513d6020811015610d6257600080fd5b5051606082015260078a0154602082018190526008808b015460a08401819052908c015460c08401526040830151610de0926064926104e192610dd491610db29190600a0a63ffffffff610b3f16565b6104e18760c00151600a0a610dd48e8a60600151610b3f90919063ffffffff16565b9063ffffffff610b3f16565b60808201819052851015610e4857849350610e4181602001516104e16064610dd4610e1f8660c00151600a0a8760600151610b3f90919063ffffffff16565b6104e18760a00151600a0a610dd48c8a60400151610b3f90919063ffffffff16565b9250610e53565b806080015193508592505b5050965096945050505050565b6000610e6b8361115c565b15610e8157506001600160a01b03811631610b9b565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610ed757600080fd5b505afa158015610eeb573d6000803e3d6000fd5b505050506040513d6020811015610f0157600080fd5b50519050610b9b565b80610f1457610fe3565b610f1d8361115c565b15610fc9576040516000906001600160a01b0384169061c35090849084818181858888f193505050503d8060008114610f72576040519150601f19603f3d011682016040523d82523d6000602084013e610f77565b606091505b5050905080610fc3576040805162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b50610fe3565b610fe36001600160a01b038416838363ffffffff61119516565b505050565b81610ff257610fe3565b610ffb8361115c565b1561109f578134101561103f5760405162461bcd60e51b81526004018080602001828103825260358152602001806116296035913960400191505060405180910390fd5b801561109a57600033611058348563ffffffff6111e716565b60405161c35091906000818181858888f193505050503d8060008114610f72576040519150601f19603f3d011682016040523d82523d6000602084013e610f77565b610fe3565b610fe36001600160a01b03841633308563ffffffff61122916565b600081836111465760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561110b5781810151838201526020016110f3565b50505050905090810190601f1680156111385780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161115257fe5b0495945050505050565b60006001600160a01b0382161580610b9b57506001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1492915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610fe3908490611289565b6000610b9883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061133a565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611283908590611289565b50505050565b60606112de826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113949092919063ffffffff16565b805190915015610fe3578080602001905160208110156112fd57600080fd5b5051610fe35760405162461bcd60e51b815260040180806020018281038252602a8152602001806116dc602a913960400191505060405180910390fd5b6000818484111561138c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561110b5781810151838201526020016110f3565b505050900390565b60606113a384846000856113ab565b949350505050565b60606113b685611518565b611407576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106114465780518252601f199092019160209182019101611427565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146114a8576040519150601f19603f3d011682016040523d82523d6000602084013e6114ad565b606091505b509150915081156114c15791506113a39050565b8051156114d15780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561110b5781810151838201526020016110f3565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906113a3575050151592915050565b60405180610220016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060028111156115b057fe5b81526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681526020016000151581525090565b6040518060e0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152509056fe54686520616d6f756e7420616e64207468652076616c75652073656e7420746f206465706f73697420646f206e6f74206d61746368536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7754686572652069736e277420656e6f756768206c697175696469747920617661696c61626c6520746f206c697175696461746554686520636f6c6c61746572616c2063686f73656e2063616e6e6f74206265206c6971756964617465645361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565644865616c746820666163746f72206973206e6f742062656c6f7720746865207468726573686f6c645573657220646964206e6f7420626f72726f7720746865207370656369666965642063757272656e6379a26469706673582212206a4d01be68dcdbaeb081c52bafe340daaac346db0351c07895c18d70ddcd07db64736f6c63430006080033"; + "0x6080604052600060015534801561001557600080fd5b506001600055611bc28061002a6000396000f3fe6080604052600436106100335760003560e01c8062a718a9146100385780634fe7a6e5146100fb578063c72c4d1014610141575b600080fd5b61007c600480360360a081101561004e57600080fd5b506001600160a01b038135811691602081013582169160408201351690606081013590608001351515610156565b6040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156100bf5781810151838201526020016100a7565b50505050905090810190601f1680156100ec5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34801561010757600080fd5b506101256004803603602081101561011e57600080fd5b5035610a4e565b604080516001600160a01b039092168252519081900360200190f35b34801561014d57600080fd5b50610125610a75565b6001600160a01b0380851660009081526037602090815260408083208985168085528285209589168552603884528285209085529092528220919260609261019c611986565b73__$7347ff53b2b46c21e26a37164ae7f6739f$__63901d71148a603760386039603560009054906101000a90046001600160a01b03166001600160a01b031663fca513a86040518163ffffffff1660e01b815260040160206040518083038186803b15801561020b57600080fd5b505afa15801561021f573d6000803e3d6000fd5b505050506040513d602081101561023557600080fd5b50516040516001600160e01b031960e088901b1681526001600160a01b03808716600483019081526024830187905260448301869052908316608483015260a060648301908152845460a484018190529192909160c490910190859080156102c657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102a8575b5050965050505050505060c06040518083038186803b1580156102e857600080fd5b505af41580156102fc573d6000803e3d6000fd5b505050506040513d60c081101561031257600080fd5b5060a001516101c082019081526040805180820190915260138152724865616c746820666163746f7220697320257360681b602082015290516103559190610a84565b670de0b6b3a7640000816101c0015110610391576004604051806060016040528060288152602001611b3b602891399550955050505050610a44565b6009830154604080516370a0823160e01b81526001600160a01b038c81166004830152915191909216916370a08231916024808301926020929190829003018186803b1580156103e057600080fd5b505afa1580156103f4573d6000803e3d6000fd5b505050506040513d602081101561040a57600080fd5b5051815260408051808201909152601881527f636f6c6c61746572616c2062616c616e636520697320257300000000000000006020820152815161044e9190610a84565b80516104995760016040518060400160405280601f81526020017f496e76616c696420636f6c6c61746572616c20746f206c6971756964617465008152509550955050505050610a44565b600c830154600160d01b900460ff1680156104b55750815460ff165b151561020082018190526104eb5760026040518060600160405280602a8152602001611ae7602a91399550955050505050610a44565b61052f6040518060400160405280601981526020017f436f6c6c61746572616c20697320656e61626c65643a20257300000000000000815250826102000151610bd9565b6105398985610cc4565b604080840191825260208085019384528151808301909252601682527543757272656e7420646562742069733a20257320257360501b9082015291519051610582929190610dc7565b602081015115801561059657506040810151155b156105c35760036040518060600160405280602a8152602001611b63602a91399550955050505050610a44565b61060060646105f460326105e885604001518660200151610f2690919063ffffffff16565b9063ffffffff610f8916565b9063ffffffff610fe216565b6060820181905288116106135787610619565b80606001515b60808201819052815161063491859187918f918f9190611024565b6101a083018190526101808301919091526080820151111561065c576101a081015160808201525b866106b657600061067c6001600160a01b038d163063ffffffff61129516565b90508161018001518110156106b4576005604051806060016040528060338152602001611ab460339139965096505050505050610a44565b505b806080015181604001511061073f57600b840154608082015160408051632770a7eb60e21b81526001600160a01b038d81166004830152602482019390935290519190921691639dc29fac91604480830192600092919082900301818387803b15801561072257600080fd5b505af1158015610736573d6000803e3d6000fd5b50505050610846565b600b8401546040808301518151632770a7eb60e21b81526001600160a01b038d8116600483015260248201929092529151921691639dc29fac9160448082019260009290919082900301818387803b15801561079a57600080fd5b505af11580156107ae573d6000803e3d6000fd5b50505050600a840154604082015160808301516001600160a01b0390921691639dc29fac918c916107de9161133f565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561082d57600080fd5b505af1158015610841573d6000803e3d6000fd5b505050505b60098301546001600160a01b03166101e082015286156108e2576101e08101516101808201516040805163f866c31960e01b81526001600160a01b038d8116600483015233602483015260448201939093529051919092169163f866c31991606480830192600092919082900301818387803b1580156108c557600080fd5b505af11580156108d9573d6000803e3d6000fd5b50505050610986565b806101e001516001600160a01b0316633edb7cb88a8361018001516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b50505061018082015161098691506001600160a01b038d1690339063ffffffff61138116565b60808101516109a7906001600160a01b038c1690600163ffffffff61145f16565b60808082015161018083015160408051928352602083019190915233828201528915156060830152429282019290925290516001600160a01b03808c16928d821692918f16917f54343dd5791108d018f6fb8def2c14d746f777c51e9924962237813a527528709181900360a00190a46000604051806040016040528060098152602001684e6f206572726f727360b81b81525095509550505050505b9550959350505050565b60398181548110610a5b57fe5b6000918252602090912001546001600160a01b0316905081565b6035546001600160a01b031681565b60006a636f6e736f6c652e6c6f676001600160a01b031683836040516024018080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015610ae3578181015183820152602001610acb565b50505050905090810190601f168015610b105780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166309710a9d60e41b17815290518251929650945084935091508083835b60208310610b6c5780518252601f199092019160209182019101610b4d565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610bcc576040519150601f19603f3d011682016040523d82523d6000602084013e610bd1565b606091505b505050505050565b60006a636f6e736f6c652e6c6f676001600160a01b03168383604051602401808060200183151515158152602001828103825284818151815260200191508051906020019080838360005b83811015610c3c578181015183820152602001610c24565b50505050905090810190601f168015610c695780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b031663c3b5563560e01b178152905182519296509450849350915080838360208310610b6c5780518252601f199092019160209182019101610b4d565b600a810154604080516370a0823160e01b81526001600160a01b0385811660048301529151600093849316916370a08231916024808301926020929190829003018186803b158015610d1557600080fd5b505afa158015610d29573d6000803e3d6000fd5b505050506040513d6020811015610d3f57600080fd5b5051600b840154604080516370a0823160e01b81526001600160a01b038881166004830152915191909216916370a08231916024808301926020929190829003018186803b158015610d9057600080fd5b505afa158015610da4573d6000803e3d6000fd5b505050506040513d6020811015610dba57600080fd5b5051909590945092505050565b60006a636f6e736f6c652e6c6f676001600160a01b03168484846040516024018080602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b83811015610e2d578181015183820152602001610e15565b50505050905090810190601f168015610e5a5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b031663969cdd0360e01b178152905182519297509550859450925090508083835b60208310610eb85780518252601f199092019160209182019101610e99565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610f18576040519150601f19603f3d011682016040523d82523d6000602084013e610f1d565b606091505b50505050505050565b600082820183811015610f80576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b600082610f9857506000610f83565b82820282848281610fa557fe5b0414610f805760405162461bcd60e51b8152600401808060200182810382526021815260200180611a936021913960400191505060405180910390fd5b6000610f8083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611531565b60355460408051631f94a27560e31b81529051600092839283926001600160a01b039092169163fca513a891600480820192602092909190829003018186803b15801561107057600080fd5b505afa158015611084573d6000803e3d6000fd5b505050506040513d602081101561109a57600080fd5b505190506110a6611a20565b816001600160a01b031663b3596f07896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156110fc57600080fd5b505afa158015611110573d6000803e3d6000fd5b505050506040513d602081101561112657600080fd5b5051604080830191909152805163b3596f0760e01b81526001600160a01b03898116600483015291519184169163b3596f0791602480820192602092909190829003018186803b15801561117957600080fd5b505afa15801561118d573d6000803e3d6000fd5b505050506040513d60208110156111a357600080fd5b5051606082015260078a0154602082018190526008808b015460a08401819052908c015460c08401526040830151611215926064926105f4926105e8916111f39190600a0a63ffffffff610f8916565b6105f48760c00151600a0a6105e88e8a60600151610f8990919063ffffffff16565b6080820181905285101561127d5784935061127681602001516105f460646105e86112548660c00151600a0a8760600151610f8990919063ffffffff16565b6105f48760a00151600a0a6105e88c8a60400151610f8990919063ffffffff16565b9250611288565b806080015193508592505b5050965096945050505050565b60006112a0836115d3565b156112b657506001600160a01b03811631610f83565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561130c57600080fd5b505afa158015611320573d6000803e3d6000fd5b505050506040513d602081101561133657600080fd5b50519050610f83565b6000610f8083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061160c565b8061138b5761145a565b611394836115d3565b15611440576040516000906001600160a01b0384169061c35090849084818181858888f193505050503d80600081146113e9576040519150601f19603f3d011682016040523d82523d6000602084013e6113ee565b606091505b505090508061143a576040805162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b604482015290519081900360640190fd5b5061145a565b61145a6001600160a01b038416838363ffffffff61166616565b505050565b816114695761145a565b611472836115d3565b1561151657813410156114b65760405162461bcd60e51b8152600401808060200182810382526035815260200180611a5e6035913960400191505060405180910390fd5b8015611511576000336114cf348563ffffffff61133f16565b60405161c35091906000818181858888f193505050503d80600081146113e9576040519150601f19603f3d011682016040523d82523d6000602084013e6113ee565b61145a565b61145a6001600160a01b03841633308563ffffffff6116b816565b600081836115bd5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561158257818101518382015260200161156a565b50505050905090810190601f1680156115af5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816115c957fe5b0495945050505050565b60006001600160a01b0382161580610f8357506001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1492915050565b6000818484111561165e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561158257818101518382015260200161156a565b505050900390565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261145a908490611718565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611712908590611718565b50505050565b606061176d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166117c99092919063ffffffff16565b80519091501561145a5780806020019051602081101561178c57600080fd5b505161145a5760405162461bcd60e51b815260040180806020018281038252602a815260200180611b11602a913960400191505060405180910390fd5b60606117d884846000856117e0565b949350505050565b60606117eb8561194d565b61183c576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061187b5780518252601f19909201916020918201910161185c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146118dd576040519150601f19603f3d011682016040523d82523d6000602084013e6118e2565b606091505b509150915081156118f65791506117d89050565b8051156119065780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561158257818101518382015260200161156a565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906117d8575050151592915050565b60405180610220016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600060028111156119e557fe5b81526020016000815260200160008152602001600081526020016000815260200160006001600160a01b031681526020016000151581525090565b6040518060e0016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152509056fe54686520616d6f756e7420616e64207468652076616c75652073656e7420746f206465706f73697420646f206e6f74206d61746368536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7754686572652069736e277420656e6f756768206c697175696469747920617661696c61626c6520746f206c697175696461746554686520636f6c6c61746572616c2063686f73656e2063616e6e6f74206265206c6971756964617465645361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565644865616c746820666163746f72206973206e6f742062656c6f7720746865207468726573686f6c645573657220646964206e6f7420626f72726f7720746865207370656369666965642063757272656e6379a26469706673582212205fe88dc60bf161f569462d0f63596028209259208a5c4202a2a250f82b478ce164736f6c63430006080033"; export interface LendingPoolLiquidationManagerLibraryAddresses { ["__$7347ff53b2b46c21e26a37164ae7f6739f$__"]: string; - ["__$5e6137a1b5a0a366e2874209b5abf71c10$__"]: string; } diff --git a/types/ReserveLogicFactory.ts b/types/ReserveLogicFactory.ts index a36b9e2a..f7e0288a 100644 --- a/types/ReserveLogicFactory.ts +++ b/types/ReserveLogicFactory.ts @@ -86,4 +86,4 @@ const _abi = [ ]; const _bytecode = - "0x610d99610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061006c5760003560e01c80639ada2ceb14610071578063a0237264146100af578063d9c477cc146100fc578063e1219abf14610119578063f15e3b2114610145578063f77efa6e1461018c575b600080fd5b61009d6004803603604081101561008757600080fd5b50803590602001356001600160a01b03166101af565b60408051918252519081900360200190f35b8180156100bb57600080fd5b506100fa600480360360a08110156100d257600080fd5b508035906001600160a01b036020820135169060408101359060608101359060800135610214565b005b61009d6004803603602081101561011257600080fd5b5035610260565b61009d6004803603604081101561012f57600080fd5b50803590602001356001600160a01b03166102fe565b81801561015157600080fd5b506100fa6004803603608081101561016857600080fd5b508035906001600160a01b0360208201351690604081013590606001351515610338565b61009d600480360360408110156101a257600080fd5b5080359060200135610359565b6000806101bb84610377565b9050806101cc57600091505061020e565b60006101e76001600160a01b0385163063ffffffff61047716565b90506102096101fc828463ffffffff61052116565b839063ffffffff61057b16565b925050505b92915050565b61021d856105bf565b600061023861022b87610377565b859063ffffffff61052116565b905061024b86828563ffffffff61067716565b61025886868560006106d5565b505050505050565b60008160020154600014156102f25781600c0160009054906101000a90046001600160a01b03166001600160a01b03166334762ca56040518163ffffffff1660e01b815260040160206040518083038186803b1580156102bf57600080fd5b505afa1580156102d3573d6000803e3d6000fd5b505050506040513d60208110156102e957600080fd5b505190506102f9565b5060028101545b919050565b600061033161030c84610377565b6103256001600160a01b0385163063ffffffff61047716565b9063ffffffff61052116565b9392505050565b610341846105bf565b806103535761035384846000856106d5565b50505050565b60008260030154600014610371578260030154610331565b50919050565b600061020e82600b0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103cc57600080fd5b505afa1580156103e0573d6000803e3d6000fd5b505050506040513d60208110156103f657600080fd5b5051600a840154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b15801561043f57600080fd5b505afa158015610453573d6000803e3d6000fd5b505050506040513d602081101561046957600080fd5b50519063ffffffff61052116565b6000610482836109e1565b1561049857506001600160a01b0381163161020e565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156104ee57600080fd5b505afa158015610502573d6000803e3d6000fd5b505050506040513d602081101561051857600080fd5b5051905061020e565b600082820183811015610331576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000600282046105b7836105ab61059e876b033b2e3c9fd0803ce8000000610a17565b849063ffffffff61052116565b9063ffffffff610a7016565b949350505050565b60006105ca82610377565b90508015610653576001820154600c8301546000916105f691600160a01b900464ffffffffff16610ab2565b835490915061060c90829063ffffffff610afd16565b83556002830154600c84015460009161063291600160a01b900464ffffffffff16610b35565b905061064b846004015482610afd90919063ffffffff16565b600485015550505b50600c01805464ffffffffff60a01b1916600160a01b4264ffffffffff1602179055565b600061069a61068584610b84565b61068e84610b84565b9063ffffffff61057b16565b905060006106b66106a9610b9a565b839063ffffffff61052116565b85549091506106cc90829063ffffffff610afd16565b90945550505050565b600a8401546040805163487b7e7960e11b815290516000926001600160a01b0316916390f6fcf2916004808301926020929190829003018186803b15801561071c57600080fd5b505afa158015610730573d6000803e3d6000fd5b505050506040513d602081101561074657600080fd5b5051905060006107656001600160a01b0386163063ffffffff61047716565b9050610779856001600160a01b03166109e1565b156107915761078e813463ffffffff610baa16565b90505b600c860154600090819081906001600160a01b03166357e37af0896107cc896107c0898d63ffffffff61052116565b9063ffffffff610baa16565b8c600a0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561081c57600080fd5b505afa158015610830573d6000803e3d6000fd5b505050506040513d602081101561084657600080fd5b5051600b8e0154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b15801561088f57600080fd5b505afa1580156108a3573d6000803e3d6000fd5b505050506040513d60208110156108b957600080fd5b5051604080516001600160e01b031960e088901b1681526001600160a01b039095166004860152602485019390935260448401919091526064830152608482018990525160a4808301926060929190829003018186803b15801561091c57600080fd5b505afa158015610930573d6000803e3d6000fd5b505050506040513d606081101561094657600080fd5b50805160208083015160409384015160018e0184905560038e0182905560028e018190558d5460048f015486518681529485018490528487018c905260608501839052608085019190915260a0840152935192965094509192506001600160a01b038a16917f131cf1f61e39fd78f61f07d78533f5b6c13629c80ef6965983e92c72efbaa4a4919081900360c00190a2505050505050505050565b60006001600160a01b038216158061020e5750506001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b600082610a265750600061020e565b82820282848281610a3357fe5b04146103315760405162461bcd60e51b8152600401808060200182810382526021815260200180610d436021913960400191505060405180910390fd5b600061033183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610bec565b600080610acc4264ffffffffff851663ffffffff610baa16565b90506000610ae06106856301e13380610b84565b9050610209610aed610b9a565b610325878463ffffffff610afd16565b60006103316b033b2e3c9fd0803ce80000006105ab610b22868663ffffffff610a1716565b6b019d971e4fe8401e7400000090610521565b600080610b4f4264ffffffffff851663ffffffff610baa16565b90506000610b67856301e1338063ffffffff610a7016565b905061020982610b7861059e610b9a565b9063ffffffff610c8e16565b600061020e82633b9aca0063ffffffff610a1716565b6b033b2e3c9fd0803ce800000090565b600061033183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ce8565b60008183610c785760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c3d578181015183820152602001610c25565b50505050905090810190601f168015610c6a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610c8457fe5b0495945050505050565b600060028206610caa576b033b2e3c9fd0803ce8000000610cac565b825b90506002820491505b811561020e57610cc58384610afd565b92506002820615610cdd57610cda8184610afd565b90505b600282049150610cb5565b60008184841115610d3a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610c3d578181015183820152602001610c25565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207355130940fe0cd0edfb1571498ed928821958d7954c5618bcacce4e0cd2572964736f6c63430006080033"; + "0x610d99610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061006c5760003560e01c80639ada2ceb14610071578063a0237264146100af578063d9c477cc146100fc578063e1219abf14610119578063f15e3b2114610145578063f77efa6e1461018c575b600080fd5b61009d6004803603604081101561008757600080fd5b50803590602001356001600160a01b03166101af565b60408051918252519081900360200190f35b8180156100bb57600080fd5b506100fa600480360360a08110156100d257600080fd5b508035906001600160a01b036020820135169060408101359060608101359060800135610214565b005b61009d6004803603602081101561011257600080fd5b5035610260565b61009d6004803603604081101561012f57600080fd5b50803590602001356001600160a01b03166102fe565b81801561015157600080fd5b506100fa6004803603608081101561016857600080fd5b508035906001600160a01b0360208201351690604081013590606001351515610338565b61009d600480360360408110156101a257600080fd5b5080359060200135610359565b6000806101bb84610377565b9050806101cc57600091505061020e565b60006101e76001600160a01b0385163063ffffffff61047716565b90506102096101fc828463ffffffff61052116565b839063ffffffff61057b16565b925050505b92915050565b61021d856105bf565b600061023861022b87610377565b859063ffffffff61052116565b905061024b86828563ffffffff61067716565b61025886868560006106d5565b505050505050565b60008160020154600014156102f25781600c0160009054906101000a90046001600160a01b03166001600160a01b03166334762ca56040518163ffffffff1660e01b815260040160206040518083038186803b1580156102bf57600080fd5b505afa1580156102d3573d6000803e3d6000fd5b505050506040513d60208110156102e957600080fd5b505190506102f9565b5060028101545b919050565b600061033161030c84610377565b6103256001600160a01b0385163063ffffffff61047716565b9063ffffffff61052116565b9392505050565b610341846105bf565b806103535761035384846000856106d5565b50505050565b60008260030154600014610371578260030154610331565b50919050565b600061020e82600b0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103cc57600080fd5b505afa1580156103e0573d6000803e3d6000fd5b505050506040513d60208110156103f657600080fd5b5051600a840154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b15801561043f57600080fd5b505afa158015610453573d6000803e3d6000fd5b505050506040513d602081101561046957600080fd5b50519063ffffffff61052116565b6000610482836109e1565b1561049857506001600160a01b0381163161020e565b826001600160a01b03166370a08231836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156104ee57600080fd5b505afa158015610502573d6000803e3d6000fd5b505050506040513d602081101561051857600080fd5b5051905061020e565b600082820183811015610331576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000600282046105b7836105ab61059e876b033b2e3c9fd0803ce8000000610a17565b849063ffffffff61052116565b9063ffffffff610a7016565b949350505050565b60006105ca82610377565b90508015610653576001820154600c8301546000916105f691600160a01b900464ffffffffff16610ab2565b835490915061060c90829063ffffffff610afd16565b83556002830154600c84015460009161063291600160a01b900464ffffffffff16610b35565b905061064b846004015482610afd90919063ffffffff16565b600485015550505b50600c01805464ffffffffff60a01b1916600160a01b4264ffffffffff1602179055565b600061069a61068584610b84565b61068e84610b84565b9063ffffffff61057b16565b905060006106b66106a9610b9a565b839063ffffffff61052116565b85549091506106cc90829063ffffffff610afd16565b90945550505050565b600a8401546040805163487b7e7960e11b815290516000926001600160a01b0316916390f6fcf2916004808301926020929190829003018186803b15801561071c57600080fd5b505afa158015610730573d6000803e3d6000fd5b505050506040513d602081101561074657600080fd5b5051905060006107656001600160a01b0386163063ffffffff61047716565b9050610779856001600160a01b03166109e1565b156107915761078e813463ffffffff610baa16565b90505b600c860154600090819081906001600160a01b03166357e37af0896107cc896107c0898d63ffffffff61052116565b9063ffffffff610baa16565b8c600a0160009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561081c57600080fd5b505afa158015610830573d6000803e3d6000fd5b505050506040513d602081101561084657600080fd5b5051600b8e0154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b15801561088f57600080fd5b505afa1580156108a3573d6000803e3d6000fd5b505050506040513d60208110156108b957600080fd5b5051604080516001600160e01b031960e088901b1681526001600160a01b039095166004860152602485019390935260448401919091526064830152608482018990525160a4808301926060929190829003018186803b15801561091c57600080fd5b505afa158015610930573d6000803e3d6000fd5b505050506040513d606081101561094657600080fd5b50805160208083015160409384015160018e0184905560038e0182905560028e018190558d5460048f015486518681529485018490528487018c905260608501839052608085019190915260a0840152935192965094509192506001600160a01b038a16917f131cf1f61e39fd78f61f07d78533f5b6c13629c80ef6965983e92c72efbaa4a4919081900360c00190a2505050505050505050565b60006001600160a01b038216158061020e5750506001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b600082610a265750600061020e565b82820282848281610a3357fe5b04146103315760405162461bcd60e51b8152600401808060200182810382526021815260200180610d436021913960400191505060405180910390fd5b600061033183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610bec565b600080610acc4264ffffffffff851663ffffffff610baa16565b90506000610ae06106856301e13380610b84565b9050610209610aed610b9a565b610325878463ffffffff610afd16565b60006103316b033b2e3c9fd0803ce80000006105ab610b22868663ffffffff610a1716565b6b019d971e4fe8401e7400000090610521565b600080610b4f4264ffffffffff851663ffffffff610baa16565b90506000610b67856301e1338063ffffffff610a7016565b905061020982610b7861059e610b9a565b9063ffffffff610c8e16565b600061020e82633b9aca0063ffffffff610a1716565b6b033b2e3c9fd0803ce800000090565b600061033183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ce8565b60008183610c785760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c3d578181015183820152602001610c25565b50505050905090810190601f168015610c6a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610c8457fe5b0495945050505050565b600060028206610caa576b033b2e3c9fd0803ce8000000610cac565b825b90506002820491505b811561020e57610cc58384610afd565b92506002820615610cdd57610cda8184610afd565b90505b600282049150610cb5565b60008184841115610d3a5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610c3d578181015183820152602001610c25565b50505090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212203bddd8009167d970b6952edc1eb9a50af749d2b0918dd654c883927bb09b483464736f6c63430006080033"; diff --git a/types/StableDebtTokenFactory.ts b/types/StableDebtTokenFactory.ts index b2909427..969cd711 100644 --- a/types/StableDebtTokenFactory.ts +++ b/types/StableDebtTokenFactory.ts @@ -544,4 +544,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506112bc806100206000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806381e75277116100ad578063a457c2d711610071578063a457c2d714610285578063a9059cbb146104be578063c634dfaa146104ea578063dd62ed3e14610510578063e78c9b3b1461053e57610121565b806381e752771461031757806389d1a0fc1461045e57806390f6fcf21461048257806395d89b411461048a5780639dc29fac1461049257610121565b806323b872dd116100f457806323b872dd14610231578063313ce56714610267578063395093511461028557806370a08231146102b157806379ce6b8c146102d757610121565b806306fdde0314610126578063095ea7b3146101a3578063156e29f6146101e357806318160ddd14610217575b600080fd5b61012e610564565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cf600480360360408110156101b957600080fd5b506001600160a01b0381351690602001356105f1565b604080519115158252519081900360200190f35b610215600480360360608110156101f957600080fd5b506001600160a01b038135169060208101359060400135610639565b005b61021f610837565b60408051918252519081900360200190f35b6101cf6004803603606081101561024757600080fd5b506001600160a01b0381358116916020810135909116906040013561083d565b61026f610885565b6040805160ff9092168252519081900360200190f35b6101cf6004803603604081101561029b57600080fd5b506001600160a01b03813516906020013561088e565b61021f600480360360208110156102c757600080fd5b50356001600160a01b03166108dd565b6102fd600480360360208110156102ed57600080fd5b50356001600160a01b0316610987565b6040805164ffffffffff9092168252519081900360200190f35b610215600480360360a081101561032d57600080fd5b81019060208101813564010000000081111561034857600080fd5b82018360208201111561035a57600080fd5b8035906020019184600183028401116401000000008311171561037c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156103cf57600080fd5b8201836020820111156103e157600080fd5b8035906020019184600183028401116401000000008311171561040357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff8335169350506001600160a01b036020830135811692604001351690506109ac565b610466610a91565b604080516001600160a01b039092168252519081900360200190f35b61021f610aa5565b61012e610aac565b610215600480360360408110156104a857600080fd5b506001600160a01b038135169060200135610b04565b6101cf600480360360408110156104d457600080fd5b506001600160a01b03813516906020013561083d565b61021f6004803603602081101561050057600080fd5b50356001600160a01b0316610c8a565b61021f6004803603604081101561052657600080fd5b506001600160a01b038135811691602001351661088e565b61021f6004803603602081101561055457600080fd5b50356001600160a01b0316610ca5565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b505050505081565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b6004546001600160a01b031633146106825760405162461bcd60e51b81526004018080602001828103825260328152602001806112556032913960400191505060405180910390fd5b61068a61117a565b600080600061069887610cc0565b9250925092506106b386600054610d2e90919063ffffffff16565b84526106be86610d91565b60208501526107406106de6106d9848963ffffffff610d2e16565b610d91565b6020860151610734906106f7908963ffffffff610da716565b61072861070387610d91565b6001600160a01b038d166000908152600760205260409020549063ffffffff610da716565b9063ffffffff610d2e16565b9063ffffffff610deb16565b60408581018290526001600160a01b0389166000908152600760205220908155600101805464ffffffffff19164264ffffffffff1617905583516107be9061078790610d91565b6107346107a1876020015189610da790919063ffffffff16565b6107286107af600054610d91565b6006549063ffffffff610da716565b6006556107cb8787610e23565b60408085015181516001600160a01b038a16815260208101899052808301869052606081018590526080810184905260a081019190915290517f94ba3ac5ed6fee7b49ed817c5ee964eed9bd5da6860344f95fc56997e920381d9181900360c00190a150505050505050565b60005481565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60035460ff1681565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b03811660009081526005602052604081205461090257506000610982565b6001600160a01b038216600090815260076020526040812080546001820154919291610935919064ffffffffff16610e81565b905061097d6109788261096c60056000896001600160a01b03166001600160a01b0316815260200190815260200160002054610d91565b9063ffffffff610da716565b610ed9565b925050505b919050565b6001600160a01b031660009081526007602052604090206001015464ffffffffff1690565b84516109bf90600190602088019061119b565b5083516109d390600290602087019061119b565b506003805460ff191660ff851617610100600160a81b0319166101006001600160a01b03858116919091029190911790915560408051630261bf8b60e01b8152905191831691630261bf8b91600480820192602092909190829003018186803b158015610a3f57600080fd5b505afa158015610a53573d6000803e3d6000fd5b505050506040513d6020811015610a6957600080fd5b5051600480546001600160a01b0319166001600160a01b039092169190911790555050505050565b60035461010090046001600160a01b031681565b6006545b90565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156105e95780601f106105be576101008083540402835291602001916105e9565b6004546001600160a01b03163314610b4d5760405162461bcd60e51b81526004018080602001828103825260328152602001806112556032913960400191505060405180910390fd5b6000806000610b5b85610cc0565b9250925092506000610b7885600054610ef990919063ffffffff16565b90506000610b8586610d91565b905081610b96576000600655610bed565b610be9610ba283610d91565b6001600160a01b03891660009081526007602052604090205461073490610bcf908563ffffffff610da716565b610bdd6107af600054610d91565b9063ffffffff610ef916565b6006555b83861415610c20576001600160a01b0387166000908152600760205260408120908155600101805464ffffffffff191690555b610c2a8787610f3b565b604080516001600160a01b038916815260208101889052808201879052606081018690526080810185905290517fecde08620c30706a4d7ba53e9163327f2e12a6cea2709dd6a9226fed28c2bb729181900360a00190a150505050505050565b6001600160a01b031660009081526005602052604090205490565b6001600160a01b031660009081526007602052604090205490565b6001600160a01b0381166000908152600560205260408120548190819080610cf2575060009250829150819050610d27565b6000610d0182610bdd886108dd565b9050610d0d8682610e23565b81610d1e818363ffffffff610d2e16565b90955093509150505b9193909250565b600082820183811015610d88576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000610d8b82633b9aca0063ffffffff610f7916565b6000610d886b033b2e3c9fd0803ce8000000610ddf610dcc868663ffffffff610f7916565b6b019d971e4fe8401e7400000090610d2e565b9063ffffffff610fd216565b600060028204610e1b83610ddf610e0e876b033b2e3c9fd0803ce8000000610f79565b849063ffffffff610d2e16565b949350505050565b600054610e36908263ffffffff610d2e16565b60009081556001600160a01b038316815260056020526040902054610e61908263ffffffff610d2e16565b6001600160a01b0390921660009081526005602052604090209190915550565b600080610e9b4264ffffffffff851663ffffffff610ef916565b90506000610eb3856301e1338063ffffffff610fd216565b9050610ed082610ec4610e0e611014565b9063ffffffff61102416565b95945050505050565b6000631dcd6500610ef2633b9aca00610ddf8386610d2e565b9392505050565b6000610d8883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061107e565b600054610f4e908263ffffffff610ef916565b60009081556001600160a01b038316815260056020526040902054610e61908263ffffffff610ef916565b600082610f8857506000610d8b565b82820282848281610f9557fe5b0414610d885760405162461bcd60e51b81526004018080602001828103825260218152602001806112346021913960400191505060405180910390fd5b6000610d8883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611115565b6b033b2e3c9fd0803ce800000090565b600060028206611040576b033b2e3c9fd0803ce8000000611042565b825b90506002820491505b8115610d8b5761105b8384610da7565b92506002820615611073576110708184610da7565b90505b60028204915061104b565b6000818484111561110d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110d25781810151838201526020016110ba565b50505050905090810190601f1680156110ff5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836111645760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156110d25781810151838201526020016110ba565b50600083858161117057fe5b0495945050505050565b60405180606001604052806000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106111dc57805160ff1916838001178555611209565b82800160010185558215611209579182015b828111156112095782518255916020019190600101906111ee565b50611215929150611219565b5090565b610aa991905b80821115611215576000815560010161121f56fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6ca2646970667358221220c462b56c7701dad055da2d604b505693ca3882d1b3c63d34ca3fea2e04fa03ad64736f6c63430006080033"; + "0x608060405234801561001057600080fd5b506112bc806100206000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806381e75277116100ad578063a457c2d711610071578063a457c2d714610285578063a9059cbb146104be578063c634dfaa146104ea578063dd62ed3e14610510578063e78c9b3b1461053e57610121565b806381e752771461031757806389d1a0fc1461045e57806390f6fcf21461048257806395d89b411461048a5780639dc29fac1461049257610121565b806323b872dd116100f457806323b872dd14610231578063313ce56714610267578063395093511461028557806370a08231146102b157806379ce6b8c146102d757610121565b806306fdde0314610126578063095ea7b3146101a3578063156e29f6146101e357806318160ddd14610217575b600080fd5b61012e610564565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610168578181015183820152602001610150565b50505050905090810190601f1680156101955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cf600480360360408110156101b957600080fd5b506001600160a01b0381351690602001356105f1565b604080519115158252519081900360200190f35b610215600480360360608110156101f957600080fd5b506001600160a01b038135169060208101359060400135610639565b005b61021f610837565b60408051918252519081900360200190f35b6101cf6004803603606081101561024757600080fd5b506001600160a01b0381358116916020810135909116906040013561083d565b61026f610885565b6040805160ff9092168252519081900360200190f35b6101cf6004803603604081101561029b57600080fd5b506001600160a01b03813516906020013561088e565b61021f600480360360208110156102c757600080fd5b50356001600160a01b03166108dd565b6102fd600480360360208110156102ed57600080fd5b50356001600160a01b0316610987565b6040805164ffffffffff9092168252519081900360200190f35b610215600480360360a081101561032d57600080fd5b81019060208101813564010000000081111561034857600080fd5b82018360208201111561035a57600080fd5b8035906020019184600183028401116401000000008311171561037c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156103cf57600080fd5b8201836020820111156103e157600080fd5b8035906020019184600183028401116401000000008311171561040357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff8335169350506001600160a01b036020830135811692604001351690506109ac565b610466610a91565b604080516001600160a01b039092168252519081900360200190f35b61021f610aa5565b61012e610aac565b610215600480360360408110156104a857600080fd5b506001600160a01b038135169060200135610b04565b6101cf600480360360408110156104d457600080fd5b506001600160a01b03813516906020013561083d565b61021f6004803603602081101561050057600080fd5b50356001600160a01b0316610c8a565b61021f6004803603604081101561052657600080fd5b506001600160a01b038135811691602001351661088e565b61021f6004803603602081101561055457600080fd5b50356001600160a01b0316610ca5565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b505050505081565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b6004546001600160a01b031633146106825760405162461bcd60e51b81526004018080602001828103825260328152602001806112556032913960400191505060405180910390fd5b61068a61117a565b600080600061069887610cc0565b9250925092506106b386600054610d2e90919063ffffffff16565b84526106be86610d91565b60208501526107406106de6106d9848963ffffffff610d2e16565b610d91565b6020860151610734906106f7908963ffffffff610da716565b61072861070387610d91565b6001600160a01b038d166000908152600760205260409020549063ffffffff610da716565b9063ffffffff610d2e16565b9063ffffffff610deb16565b60408581018290526001600160a01b0389166000908152600760205220908155600101805464ffffffffff19164264ffffffffff1617905583516107be9061078790610d91565b6107346107a1876020015189610da790919063ffffffff16565b6107286107af600054610d91565b6006549063ffffffff610da716565b6006556107cb8787610e23565b60408085015181516001600160a01b038a16815260208101899052808301869052606081018590526080810184905260a081019190915290517f94ba3ac5ed6fee7b49ed817c5ee964eed9bd5da6860344f95fc56997e920381d9181900360c00190a150505050505050565b60005481565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60035460ff1681565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6001600160a01b03811660009081526005602052604081205461090257506000610982565b6001600160a01b038216600090815260076020526040812080546001820154919291610935919064ffffffffff16610e81565b905061097d6109788261096c60056000896001600160a01b03166001600160a01b0316815260200190815260200160002054610d91565b9063ffffffff610da716565b610ed9565b925050505b919050565b6001600160a01b031660009081526007602052604090206001015464ffffffffff1690565b84516109bf90600190602088019061119b565b5083516109d390600290602087019061119b565b506003805460ff191660ff851617610100600160a81b0319166101006001600160a01b03858116919091029190911790915560408051630261bf8b60e01b8152905191831691630261bf8b91600480820192602092909190829003018186803b158015610a3f57600080fd5b505afa158015610a53573d6000803e3d6000fd5b505050506040513d6020811015610a6957600080fd5b5051600480546001600160a01b0319166001600160a01b039092169190911790555050505050565b60035461010090046001600160a01b031681565b6006545b90565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156105e95780601f106105be576101008083540402835291602001916105e9565b6004546001600160a01b03163314610b4d5760405162461bcd60e51b81526004018080602001828103825260328152602001806112556032913960400191505060405180910390fd5b6000806000610b5b85610cc0565b9250925092506000610b7885600054610ef990919063ffffffff16565b90506000610b8586610d91565b905081610b96576000600655610bed565b610be9610ba283610d91565b6001600160a01b03891660009081526007602052604090205461073490610bcf908563ffffffff610da716565b610bdd6107af600054610d91565b9063ffffffff610ef916565b6006555b83861415610c20576001600160a01b0387166000908152600760205260408120908155600101805464ffffffffff191690555b610c2a8787610f3b565b604080516001600160a01b038916815260208101889052808201879052606081018690526080810185905290517fecde08620c30706a4d7ba53e9163327f2e12a6cea2709dd6a9226fed28c2bb729181900360a00190a150505050505050565b6001600160a01b031660009081526005602052604090205490565b6001600160a01b031660009081526007602052604090205490565b6001600160a01b0381166000908152600560205260408120548190819080610cf2575060009250829150819050610d27565b6000610d0182610bdd886108dd565b9050610d0d8682610e23565b81610d1e818363ffffffff610d2e16565b90955093509150505b9193909250565b600082820183811015610d88576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b6000610d8b82633b9aca0063ffffffff610f7916565b6000610d886b033b2e3c9fd0803ce8000000610ddf610dcc868663ffffffff610f7916565b6b019d971e4fe8401e7400000090610d2e565b9063ffffffff610fd216565b600060028204610e1b83610ddf610e0e876b033b2e3c9fd0803ce8000000610f79565b849063ffffffff610d2e16565b949350505050565b600054610e36908263ffffffff610d2e16565b60009081556001600160a01b038316815260056020526040902054610e61908263ffffffff610d2e16565b6001600160a01b0390921660009081526005602052604090209190915550565b600080610e9b4264ffffffffff851663ffffffff610ef916565b90506000610eb3856301e1338063ffffffff610fd216565b9050610ed082610ec4610e0e611014565b9063ffffffff61102416565b95945050505050565b6000631dcd6500610ef2633b9aca00610ddf8386610d2e565b9392505050565b6000610d8883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061107e565b600054610f4e908263ffffffff610ef916565b60009081556001600160a01b038316815260056020526040902054610e61908263ffffffff610ef916565b600082610f8857506000610d8b565b82820282848281610f9557fe5b0414610d885760405162461bcd60e51b81526004018080602001828103825260218152602001806112346021913960400191505060405180910390fd5b6000610d8883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611115565b6b033b2e3c9fd0803ce800000090565b600060028206611040576b033b2e3c9fd0803ce8000000611042565b825b90506002820491505b8115610d8b5761105b8384610da7565b92506002820615611073576110708184610da7565b90505b60028204915061104b565b6000818484111561110d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110d25781810151838201526020016110ba565b50505050905090810190601f1680156110ff5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836111645760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156110d25781810151838201526020016110ba565b50600083858161117057fe5b0495945050505050565b60405180606001604052806000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106111dc57805160ff1916838001178555611209565b82800160010185558215611209579182015b828111156112095782518255916020019190600101906111ee565b50611215929150611219565b5090565b610aa991905b80821115611215576000815560010161121f56fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6ca2646970667358221220cd9569abceb96bd56d70bd8803044292a632ae9d40176445e3607c428df84c0d64736f6c63430006080033"; diff --git a/types/VariableDebtTokenFactory.ts b/types/VariableDebtTokenFactory.ts index 8e0c28d0..5012986b 100644 --- a/types/VariableDebtTokenFactory.ts +++ b/types/VariableDebtTokenFactory.ts @@ -513,4 +513,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50611132806100206000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806381e75277116100a2578063a457c2d711610071578063a457c2d71461023b578063a9059cbb1461045a578063c634dfaa14610486578063dd62ed3e146104ac578063ee9907a4146104da5761010b565b806381e75277146102bb57806389d1a0fc1461040257806395d89b41146104265780639dc29fac1461042e5761010b565b8063313ce567116100de578063313ce5671461021d578063395093511461023b57806340c10f191461026757806370a08231146102955761010b565b806306fdde0314610110578063095ea7b31461018d57806318160ddd146101cd57806323b872dd146101e7575b600080fd5b610118610500565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015257818101518382015260200161013a565b50505050905090810190601f16801561017f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b9600480360360408110156101a357600080fd5b506001600160a01b03813516906020013561058d565b604080519115158252519081900360200190f35b6101d56105d5565b60408051918252519081900360200190f35b6101b9600480360360608110156101fd57600080fd5b506001600160a01b038135811691602081013590911690604001356105db565b610225610623565b6040805160ff9092168252519081900360200190f35b6101b96004803603604081101561025157600080fd5b506001600160a01b03813516906020013561062c565b6102936004803603604081101561027d57600080fd5b506001600160a01b03813516906020013561067b565b005b6101d5600480360360208110156102ab57600080fd5b50356001600160a01b03166107db565b610293600480360360a08110156102d157600080fd5b8101906020810181356401000000008111156102ec57600080fd5b8201836020820111156102fe57600080fd5b8035906020019184600183028401116401000000008311171561032057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561037357600080fd5b82018360208201111561038557600080fd5b803590602001918460018302840111640100000000831117156103a757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff8335169350506001600160a01b036020830135811692604001351690506108e8565b61040a6109cd565b604080516001600160a01b039092168252519081900360200190f35b6101186109e1565b6102936004803603604081101561044457600080fd5b506001600160a01b038135169060200135610a39565b6101b96004803603604081101561047057600080fd5b506001600160a01b0381351690602001356105db565b6101d56004803603602081101561049c57600080fd5b50356001600160a01b0316610bd4565b6101d5600480360360408110156104c257600080fd5b506001600160a01b038135811691602001351661062c565b6101d5600480360360208110156104f057600080fd5b50356001600160a01b0316610bef565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105855780601f1061055a57610100808354040283529160200191610585565b820191906000526020600020905b81548152906001019060200180831161056857829003601f168201915b505050505081565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60005481565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60035460ff1681565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6004546001600160a01b031633146106c45760405162461bcd60e51b81526004018080602001828103825260328152602001806110cb6032913960400191505060405180910390fd5b60008060006106d285610c0a565b9250925092506106e28585610c84565b600480546003546040805163386497fd60e01b81526001600160a01b036101009093048316948101949094525191169163386497fd916024808301926020929190829003018186803b15801561073757600080fd5b505afa15801561074b573d6000803e3d6000fd5b505050506040513d602081101561076157600080fd5b50516001600160a01b03861660008181526006602090815260409182902084905581519283528201879052818101869052606082018590526080820184905260a082019290925290517f94ba3ac5ed6fee7b49ed817c5ee964eed9bd5da6860344f95fc56997e920381d9181900360c00190a15050505050565b6001600160a01b038116600090815260056020526040812054610800575060006108e3565b6001600160a01b038083166000908152600660209081526040918290205460048054600354855163386497fd60e01b815261010090910487169281019290925293516108e0956108db9593946108cf949091169263386497fd9260248083019392829003018186803b15801561087557600080fd5b505afa158015610889573d6000803e3d6000fd5b505050506040513d602081101561089f57600080fd5b50516001600160a01b0387166000908152600560205260409020546108c390610ce2565b9063ffffffff610cf816565b9063ffffffff610d4516565b610d7d565b90505b919050565b84516108fb90600190602088019061100e565b50835161090f90600290602087019061100e565b506003805460ff191660ff851617610100600160a81b0319166101006001600160a01b03858116919091029190911790915560408051630261bf8b60e01b8152905191831691630261bf8b91600480820192602092909190829003018186803b15801561097b57600080fd5b505afa15801561098f573d6000803e3d6000fd5b505050506040513d60208110156109a557600080fd5b5051600480546001600160a01b0319166001600160a01b039092169190911790555050505050565b60035461010090046001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156105855780601f1061055a57610100808354040283529160200191610585565b6004546001600160a01b03163314610a825760405162461bcd60e51b81526004018080602001828103825260328152602001806110cb6032913960400191505060405180910390fd5b6000806000610a9085610c0a565b925092509250610aa08585610d9d565b83821415610ac6576001600160a01b038516600090815260066020526040812055610b61565b600480546003546040805163386497fd60e01b81526001600160a01b036101009093048316948101949094525191169163386497fd916024808301926020929190829003018186803b158015610b1b57600080fd5b505afa158015610b2f573d6000803e3d6000fd5b505050506040513d6020811015610b4557600080fd5b50516001600160a01b0386166000908152600660205260409020555b6001600160a01b038516600081815260066020908152604091829020548251938452908301879052828201869052606083018590526080830184905260a0830152517fc57f977ee00c44453a91f798753002bf12fca5f5ca2ee8db560720f51d4b0f629181900360c00190a15050505050565b6001600160a01b031660009081526005602052604090205490565b6001600160a01b031660009081526006602052604090205490565b6001600160a01b0381166000908152600560205260408120548190819080610c3c575060009250829150819050610c7d565b6000610c5782610c4b886107db565b9063ffffffff610ddb16565b9050610c638682610c84565b81610c74818363ffffffff610e1d16565b90955093509150505b9193909250565b600054610c97908263ffffffff610e1d16565b60009081556001600160a01b038316815260056020526040902054610cc2908263ffffffff610e1d16565b6001600160a01b0390921660009081526005602052604090209190915550565b60006108e082633b9aca0063ffffffff610e7716565b6000610d3c6b033b2e3c9fd0803ce8000000610d30610d1d868663ffffffff610e7716565b6b019d971e4fe8401e7400000090610e1d565b9063ffffffff610ed016565b90505b92915050565b600060028204610d7583610d30610d68876b033b2e3c9fd0803ce8000000610e77565b849063ffffffff610e1d16565b949350505050565b6000631dcd6500610d96633b9aca00610d308386610e1d565b9392505050565b600054610db0908263ffffffff610ddb16565b60009081556001600160a01b038316815260056020526040902054610cc2908263ffffffff610ddb16565b6000610d3c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f12565b600082820183811015610d3c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600082610e8657506000610d3f565b82820282848281610e9357fe5b0414610d3c5760405162461bcd60e51b81526004018080602001828103825260218152602001806110aa6021913960400191505060405180910390fd5b6000610d3c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610fa9565b60008184841115610fa15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f66578181015183820152602001610f4e565b50505050905090810190601f168015610f935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610ff85760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610f66578181015183820152602001610f4e565b50600083858161100457fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061104f57805160ff191683800117855561107c565b8280016001018555821561107c579182015b8281111561107c578251825591602001919060010190611061565b5061108892915061108c565b5090565b6110a691905b808211156110885760008155600101611092565b9056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6ca2646970667358221220aaf14d816540aebbc9531df68654752f674c5c5030a4b6da5cb25290a9abbb4464736f6c63430006080033"; + "0x608060405234801561001057600080fd5b50611132806100206000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806381e75277116100a2578063a457c2d711610071578063a457c2d71461023b578063a9059cbb1461045a578063c634dfaa14610486578063dd62ed3e146104ac578063ee9907a4146104da5761010b565b806381e75277146102bb57806389d1a0fc1461040257806395d89b41146104265780639dc29fac1461042e5761010b565b8063313ce567116100de578063313ce5671461021d578063395093511461023b57806340c10f191461026757806370a08231146102955761010b565b806306fdde0314610110578063095ea7b31461018d57806318160ddd146101cd57806323b872dd146101e7575b600080fd5b610118610500565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015257818101518382015260200161013a565b50505050905090810190601f16801561017f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101b9600480360360408110156101a357600080fd5b506001600160a01b03813516906020013561058d565b604080519115158252519081900360200190f35b6101d56105d5565b60408051918252519081900360200190f35b6101b9600480360360608110156101fd57600080fd5b506001600160a01b038135811691602081013590911690604001356105db565b610225610623565b6040805160ff9092168252519081900360200190f35b6101b96004803603604081101561025157600080fd5b506001600160a01b03813516906020013561062c565b6102936004803603604081101561027d57600080fd5b506001600160a01b03813516906020013561067b565b005b6101d5600480360360208110156102ab57600080fd5b50356001600160a01b03166107db565b610293600480360360a08110156102d157600080fd5b8101906020810181356401000000008111156102ec57600080fd5b8201836020820111156102fe57600080fd5b8035906020019184600183028401116401000000008311171561032057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561037357600080fd5b82018360208201111561038557600080fd5b803590602001918460018302840111640100000000831117156103a757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505060ff8335169350506001600160a01b036020830135811692604001351690506108e8565b61040a6109cd565b604080516001600160a01b039092168252519081900360200190f35b6101186109e1565b6102936004803603604081101561044457600080fd5b506001600160a01b038135169060200135610a39565b6101b96004803603604081101561047057600080fd5b506001600160a01b0381351690602001356105db565b6101d56004803603602081101561049c57600080fd5b50356001600160a01b0316610bd4565b6101d5600480360360408110156104c257600080fd5b506001600160a01b038135811691602001351661062c565b6101d5600480360360208110156104f057600080fd5b50356001600160a01b0316610bef565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156105855780601f1061055a57610100808354040283529160200191610585565b820191906000526020600020905b81548152906001019060200180831161056857829003601f168201915b505050505081565b6040805162461bcd60e51b81526020600482015260166024820152751054141493d5905317d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60005481565b6040805162461bcd60e51b81526020600482015260166024820152751514905394d1915497d393d517d4d5541413d495115160521b6044820152905160009181900360640190fd5b60035460ff1681565b6040805162461bcd60e51b815260206004820152601760248201527f414c4c4f57414e43455f4e4f545f535550504f525445440000000000000000006044820152905160009181900360640190fd5b6004546001600160a01b031633146106c45760405162461bcd60e51b81526004018080602001828103825260328152602001806110cb6032913960400191505060405180910390fd5b60008060006106d285610c0a565b9250925092506106e28585610c84565b600480546003546040805163386497fd60e01b81526001600160a01b036101009093048316948101949094525191169163386497fd916024808301926020929190829003018186803b15801561073757600080fd5b505afa15801561074b573d6000803e3d6000fd5b505050506040513d602081101561076157600080fd5b50516001600160a01b03861660008181526006602090815260409182902084905581519283528201879052818101869052606082018590526080820184905260a082019290925290517f94ba3ac5ed6fee7b49ed817c5ee964eed9bd5da6860344f95fc56997e920381d9181900360c00190a15050505050565b6001600160a01b038116600090815260056020526040812054610800575060006108e3565b6001600160a01b038083166000908152600660209081526040918290205460048054600354855163386497fd60e01b815261010090910487169281019290925293516108e0956108db9593946108cf949091169263386497fd9260248083019392829003018186803b15801561087557600080fd5b505afa158015610889573d6000803e3d6000fd5b505050506040513d602081101561089f57600080fd5b50516001600160a01b0387166000908152600560205260409020546108c390610ce2565b9063ffffffff610cf816565b9063ffffffff610d4516565b610d7d565b90505b919050565b84516108fb90600190602088019061100e565b50835161090f90600290602087019061100e565b506003805460ff191660ff851617610100600160a81b0319166101006001600160a01b03858116919091029190911790915560408051630261bf8b60e01b8152905191831691630261bf8b91600480820192602092909190829003018186803b15801561097b57600080fd5b505afa15801561098f573d6000803e3d6000fd5b505050506040513d60208110156109a557600080fd5b5051600480546001600160a01b0319166001600160a01b039092169190911790555050505050565b60035461010090046001600160a01b031681565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156105855780601f1061055a57610100808354040283529160200191610585565b6004546001600160a01b03163314610a825760405162461bcd60e51b81526004018080602001828103825260328152602001806110cb6032913960400191505060405180910390fd5b6000806000610a9085610c0a565b925092509250610aa08585610d9d565b83821415610ac6576001600160a01b038516600090815260066020526040812055610b61565b600480546003546040805163386497fd60e01b81526001600160a01b036101009093048316948101949094525191169163386497fd916024808301926020929190829003018186803b158015610b1b57600080fd5b505afa158015610b2f573d6000803e3d6000fd5b505050506040513d6020811015610b4557600080fd5b50516001600160a01b0386166000908152600660205260409020555b6001600160a01b038516600081815260066020908152604091829020548251938452908301879052828201869052606083018590526080830184905260a0830152517fc57f977ee00c44453a91f798753002bf12fca5f5ca2ee8db560720f51d4b0f629181900360c00190a15050505050565b6001600160a01b031660009081526005602052604090205490565b6001600160a01b031660009081526006602052604090205490565b6001600160a01b0381166000908152600560205260408120548190819080610c3c575060009250829150819050610c7d565b6000610c5782610c4b886107db565b9063ffffffff610ddb16565b9050610c638682610c84565b81610c74818363ffffffff610e1d16565b90955093509150505b9193909250565b600054610c97908263ffffffff610e1d16565b60009081556001600160a01b038316815260056020526040902054610cc2908263ffffffff610e1d16565b6001600160a01b0390921660009081526005602052604090209190915550565b60006108e082633b9aca0063ffffffff610e7716565b6000610d3c6b033b2e3c9fd0803ce8000000610d30610d1d868663ffffffff610e7716565b6b019d971e4fe8401e7400000090610e1d565b9063ffffffff610ed016565b90505b92915050565b600060028204610d7583610d30610d68876b033b2e3c9fd0803ce8000000610e77565b849063ffffffff610e1d16565b949350505050565b6000631dcd6500610d96633b9aca00610d308386610e1d565b9392505050565b600054610db0908263ffffffff610ddb16565b60009081556001600160a01b038316815260056020526040902054610cc2908263ffffffff610ddb16565b6000610d3c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f12565b600082820183811015610d3c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600082610e8657506000610d3f565b82820282848281610e9357fe5b0414610d3c5760405162461bcd60e51b81526004018080602001828103825260218152602001806110aa6021913960400191505060405180910390fd5b6000610d3c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610fa9565b60008184841115610fa15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f66578181015183820152602001610f4e565b50505050905090810190601f168015610f935780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610ff85760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610f66578181015183820152602001610f4e565b50600083858161100457fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061104f57805160ff191683800117855561107c565b8280016001018555821561107c579182015b8281111561107c578251825591602001919060010190611061565b5061108892915061108c565b5090565b6110a691905b808211156110885760008155600101611092565b9056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775468652063616c6c6572206f6620746869732066756e6374696f6e206d7573742062652061206c656e64696e6720706f6f6ca2646970667358221220ff0c7f441f983e8d44d93bc8ce4cb10987963fbd8cf6f16c66687780111829ee64736f6c63430006080033"; diff --git a/types/WalletBalanceProviderFactory.ts b/types/WalletBalanceProviderFactory.ts index 714c5d53..5ebeefcc 100644 --- a/types/WalletBalanceProviderFactory.ts +++ b/types/WalletBalanceProviderFactory.ts @@ -134,4 +134,4 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060405161099e38038061099e8339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610939806100656000396000f3fe6080604052600436106100385760003560e01c80639e3c930914610083578063b59b28ef1461014f578063f7888aec146102d35761007e565b3661007e5761004633610320565b61007c576040805162461bcd60e51b8152602060048201526002602482015261191960f11b604482015290519081900360640190fd5b005b600080fd5b34801561008f57600080fd5b506100b6600480360360208110156100a657600080fd5b50356001600160a01b031661035c565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100fa5781810151838201526020016100e2565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610139578181015183820152602001610121565b5050505090500194505050505060405180910390f35b34801561015b57600080fd5b506102836004803603604081101561017257600080fd5b81019060208101813564010000000081111561018d57600080fd5b82018360208201111561019f57600080fd5b803590602001918460208302840111640100000000831117156101c157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561021157600080fd5b82018360208201111561022357600080fd5b8035906020019184602083028401116401000000008311171561024557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506106a9945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102bf5781810151838201526020016102a7565b505050509050019250505060405180910390f35b3480156102df57600080fd5b5061030e600480360360408110156102f657600080fd5b506001600160a01b0381358116916020013516610841565b60408051918252519081900360200190f35b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061035457508115155b949350505050565b60608060008060009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ae57600080fd5b505afa1580156103c2573d6000803e3d6000fd5b505050506040513d60208110156103d857600080fd5b505160408051630240bc6b60e21b815290519192506060916001600160a01b03841691630902f1ac916004808301926000929190829003018186803b15801561042057600080fd5b505afa158015610434573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561045d57600080fd5b810190808051604051939291908464010000000082111561047d57600080fd5b90830190602082018581111561049257600080fd5b82518660208202830111640100000000821117156104af57600080fd5b82525081516020918201928201910280838360005b838110156104dc5781810151838201526020016104c4565b5050505090500160405250505090506060815167ffffffffffffffff8111801561050557600080fd5b5060405190808252806020026020018201604052801561052f578160200160208202803683370190505b50905060005b825181101561069d576000846001600160a01b0316633e15014185848151811061055b57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506101406040518083038186803b1580156105aa57600080fd5b505afa1580156105be573d6000803e3d6000fd5b505050506040513d6101408110156105d557600080fd5b5061010001519050806106025760008383815181106105f057fe5b60200260200101818152505050610695565b61060a6108eb565b6001600160a01b031684838151811061061f57fe5b60200260200101516001600160a01b03161461066f576106528885848151811061064557fe5b6020026020010151610841565b83838151811061065e57fe5b602002602001018181525050610693565b876001600160a01b03163183838151811061068657fe5b6020026020010181815250505b505b600101610535565b50909350915050915091565b606080825184510267ffffffffffffffff811180156106c757600080fd5b506040519080825280602002602001820160405280156106f1578160200160208202803683370190505b50905060005b84518110156108375760005b845181101561082e57845182026107186108eb565b6001600160a01b031686838151811061072d57fe5b60200260200101516001600160a01b031614156107815786838151811061075057fe5b60200260200101516001600160a01b031631848383018151811061077057fe5b602002602001018181525050610825565b6107a686838151811061079057fe5b60200260200101516001600160a01b0316610320565b6107e7576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015290519081900360640190fd5b61080a8784815181106107f657fe5b602002602001015187848151811061064557fe5b848383018151811061081857fe5b6020026020010181815250505b50600101610703565b506001016106f7565b5090505b92915050565b6000610855826001600160a01b0316610320565b156108e357816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156108b057600080fd5b505afa1580156108c4573d6000803e3d6000fd5b505050506040513d60208110156108da57600080fd5b5051905061083b565b50600061083b565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9056fea2646970667358221220690f7ecb9ab912f052e8d44a9a4f27007b3b6f0119cdc6270033c06dbc83a4e664736f6c63430006080033"; + "0x608060405234801561001057600080fd5b5060405161099e38038061099e8339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b0319909216919091179055610939806100656000396000f3fe6080604052600436106100385760003560e01c80639e3c930914610083578063b59b28ef1461014f578063f7888aec146102d35761007e565b3661007e5761004633610320565b61007c576040805162461bcd60e51b8152602060048201526002602482015261191960f11b604482015290519081900360640190fd5b005b600080fd5b34801561008f57600080fd5b506100b6600480360360208110156100a657600080fd5b50356001600160a01b031661035c565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156100fa5781810151838201526020016100e2565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610139578181015183820152602001610121565b5050505090500194505050505060405180910390f35b34801561015b57600080fd5b506102836004803603604081101561017257600080fd5b81019060208101813564010000000081111561018d57600080fd5b82018360208201111561019f57600080fd5b803590602001918460208302840111640100000000831117156101c157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561021157600080fd5b82018360208201111561022357600080fd5b8035906020019184602083028401116401000000008311171561024557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506106a9945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102bf5781810151838201526020016102a7565b505050509050019250505060405180910390f35b3480156102df57600080fd5b5061030e600480360360408110156102f657600080fd5b506001600160a01b0381358116916020013516610841565b60408051918252519081900360200190f35b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061035457508115155b949350505050565b60608060008060009054906101000a90046001600160a01b03166001600160a01b0316630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156103ae57600080fd5b505afa1580156103c2573d6000803e3d6000fd5b505050506040513d60208110156103d857600080fd5b505160408051630240bc6b60e21b815290519192506060916001600160a01b03841691630902f1ac916004808301926000929190829003018186803b15801561042057600080fd5b505afa158015610434573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561045d57600080fd5b810190808051604051939291908464010000000082111561047d57600080fd5b90830190602082018581111561049257600080fd5b82518660208202830111640100000000821117156104af57600080fd5b82525081516020918201928201910280838360005b838110156104dc5781810151838201526020016104c4565b5050505090500160405250505090506060815167ffffffffffffffff8111801561050557600080fd5b5060405190808252806020026020018201604052801561052f578160200160208202803683370190505b50905060005b825181101561069d576000846001600160a01b0316633e15014185848151811061055b57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b031681526020019150506101606040518083038186803b1580156105aa57600080fd5b505afa1580156105be573d6000803e3d6000fd5b505050506040513d6101608110156105d557600080fd5b5061012001519050806106025760008383815181106105f057fe5b60200260200101818152505050610695565b61060a6108eb565b6001600160a01b031684838151811061061f57fe5b60200260200101516001600160a01b03161461066f576106528885848151811061064557fe5b6020026020010151610841565b83838151811061065e57fe5b602002602001018181525050610693565b876001600160a01b03163183838151811061068657fe5b6020026020010181815250505b505b600101610535565b50909350915050915091565b606080825184510267ffffffffffffffff811180156106c757600080fd5b506040519080825280602002602001820160405280156106f1578160200160208202803683370190505b50905060005b84518110156108375760005b845181101561082e57845182026107186108eb565b6001600160a01b031686838151811061072d57fe5b60200260200101516001600160a01b031614156107815786838151811061075057fe5b60200260200101516001600160a01b031631848383018151811061077057fe5b602002602001018181525050610825565b6107a686838151811061079057fe5b60200260200101516001600160a01b0316610320565b6107e7576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015290519081900360640190fd5b61080a8784815181106107f657fe5b602002602001015187848151811061064557fe5b848383018151811061081857fe5b6020026020010181815250505b50600101610703565b506001016106f7565b5090505b92915050565b6000610855826001600160a01b0316610320565b156108e357816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156108b057600080fd5b505afa1580156108c4573d6000803e3d6000fd5b505050506040513d60208110156108da57600080fd5b5051905061083b565b50600061083b565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9056fea2646970667358221220fa706074cbd7cd86464474ec2c51c52dff3f0f34b17906e75605b4357a7d4dbe64736f6c63430006080033";