ETH Price: $3,266.74 (+5.00%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Stake With Permi...128600322021-07-19 23:35:411290 days ago1626737741IN
0x6a7F8245...baA774b36
0 ETH0.002445715
Remove Liquidity...128359782021-07-16 5:12:581294 days ago1626412378IN
0x6a7F8245...baA774b36
0 ETH0.0057825523.5
Stake With Permi...126577662021-06-18 9:58:571322 days ago1624010337IN
0x6a7F8245...baA774b36
0 ETH0.0023195313.9
Remove Liquidity...126508852021-06-17 8:28:311323 days ago1623918511IN
0x6a7F8245...baA774b36
0 ETH0.0056766620
Stake With Permi...126003642021-06-09 12:38:191331 days ago1623242299IN
0x6a7F8245...baA774b36
0 ETH0.003328719
Remove Liquidity...125509292021-06-01 21:06:311338 days ago1622581591IN
0x6a7F8245...baA774b36
0 ETH0.0104527339.6
Stake With Permi...125357452021-05-30 12:28:221341 days ago1622377702IN
0x6a7F8245...baA774b36
0 ETH0.0034539919
Stake With Permi...125351172021-05-30 10:16:101341 days ago1622369770IN
0x6a7F8245...baA774b36
0 ETH0.0032320617.002
Stake With Permi...125234332021-05-28 14:45:461343 days ago1622213146IN
0x6a7F8245...baA774b36
0 ETH0.0044214138
Remove Liquidity...125085972021-05-26 7:23:471345 days ago1622013827IN
0x6a7F8245...baA774b36
0 ETH0.0063439138
Remove Liquidity...124790482021-05-21 17:35:191349 days ago1621618519IN
0x6a7F8245...baA774b36
0 ETH0.0378299112
Remove Liquidity...124011782021-05-09 16:16:061362 days ago1620576966IN
0x6a7F8245...baA774b36
0 ETH0.0196608118
Remove Liquidity...123764892021-05-05 20:46:441365 days ago1620247604IN
0x6a7F8245...baA774b36
0 ETH0.019330275
Remove Liquidity...123764792021-05-05 20:43:301365 days ago1620247410IN
0x6a7F8245...baA774b36
0 ETH0.0016325164
Remove Liquidity...123355232021-04-29 13:10:241372 days ago1619701824IN
0x6a7F8245...baA774b36
0 ETH0.0186997100
Stake With Permi...123308062021-04-28 19:18:571372 days ago1619637537IN
0x6a7F8245...baA774b36
0 ETH0.0136474264
Remove Liquidity...123144742021-04-26 7:03:301375 days ago1619420610IN
0x6a7F8245...baA774b36
0 ETH0.0087624244
Remove Liquidity...122855732021-04-21 19:56:341379 days ago1619034994IN
0x6a7F8245...baA774b36
0 ETH0.02501935137
Remove Liquidity...122710942021-04-19 14:39:141382 days ago1618843154IN
0x6a7F8245...baA774b36
0 ETH0.04469769270
Remove Liquidity...122602252021-04-17 22:16:321383 days ago1618697792IN
0x6a7F8245...baA774b36
0 ETH0.01827313107
Remove Liquidity...122343002021-04-13 21:56:151387 days ago1618350975IN
0x6a7F8245...baA774b36
0 ETH0.0172508100
Stake122334112021-04-13 18:40:271387 days ago1618339227IN
0x6a7F8245...baA774b36
0 ETH0.02580219221
Stake With Permi...122198262021-04-11 16:49:171390 days ago1618159757IN
0x6a7F8245...baA774b36
0 ETH0.0035766178
Stake With Permi...122198252021-04-11 16:49:151390 days ago1618159755IN
0x6a7F8245...baA774b36
0 ETH0.0143007578
Remove Liquidity...122124342021-04-10 13:30:521391 days ago1618061452IN
0x6a7F8245...baA774b36
0 ETH0.0163597978
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
131170142021-08-28 23:58:421250 days ago1630195122
0x6a7F8245...baA774b36
0.18332267 ETH
131170142021-08-28 23:58:421250 days ago1630195122
0x6a7F8245...baA774b36
0.18332267 ETH
128515762021-07-18 16:05:341292 days ago1626624334
0x6a7F8245...baA774b36
0.2155235 ETH
128515762021-07-18 16:05:341292 days ago1626624334
0x6a7F8245...baA774b36
0.2155235 ETH
128515362021-07-18 15:56:551292 days ago1626623815
0x6a7F8245...baA774b36
0.00021899 ETH
128515362021-07-18 15:56:551292 days ago1626623815
0x6a7F8245...baA774b36
0.00021899 ETH
128359702021-07-16 5:11:031294 days ago1626412263
0x6a7F8245...baA774b36
0.05764 ETH
128359702021-07-16 5:11:031294 days ago1626412263
0x6a7F8245...baA774b36
0.05764 ETH
128088322021-07-11 22:52:231298 days ago1626043943
0x6a7F8245...baA774b36
0.31606384 ETH
128088322021-07-11 22:52:231298 days ago1626043943
0x6a7F8245...baA774b36
0.31606384 ETH
127835982021-07-08 0:41:461302 days ago1625704906
0x6a7F8245...baA774b36
0.48798753 ETH
127835982021-07-08 0:41:461302 days ago1625704906
0x6a7F8245...baA774b36
0.48798753 ETH
127647512021-07-05 2:18:031305 days ago1625451483
0x6a7F8245...baA774b36
0.88527166 ETH
127647512021-07-05 2:18:031305 days ago1625451483
0x6a7F8245...baA774b36
0.88527166 ETH
127629322021-07-04 19:32:271305 days ago1625427147
0x6a7F8245...baA774b36
0.26912673 ETH
127629322021-07-04 19:32:271305 days ago1625427147
0x6a7F8245...baA774b36
0.26912673 ETH
127067892021-06-26 1:46:501314 days ago1624672010
0x6a7F8245...baA774b36
0.00010715 ETH
127067892021-06-26 1:46:501314 days ago1624672010
0x6a7F8245...baA774b36
0.00010715 ETH
127066192021-06-26 1:13:541314 days ago1624670034
0x6a7F8245...baA774b36
0.05971779 ETH
127066192021-06-26 1:13:541314 days ago1624670034
0x6a7F8245...baA774b36
0.05971779 ETH
127066022021-06-26 1:09:011314 days ago1624669741
0x6a7F8245...baA774b36
0.05878497 ETH
127066022021-06-26 1:09:011314 days ago1624669741
0x6a7F8245...baA774b36
0.05878497 ETH
126594362021-06-18 16:23:031322 days ago1624033383
0x6a7F8245...baA774b36
0.01 ETH
126594362021-06-18 16:23:031322 days ago1624033383
0x6a7F8245...baA774b36
0.01 ETH
126508852021-06-17 8:28:311323 days ago1623918511
0x6a7F8245...baA774b36
0.54620359 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ValueLiquidProvider

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-01-20
*/

// SPDX-License-Identifier: SEE LICENSE IN LICENSE

pragma solidity >=0.7.6;
pragma abicoder v2;

interface IValueLiquidFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint32 tokenWeight0, uint32 swapFee, uint256);

    function feeTo() external view returns (address);

    function formula() external view returns (address);

    function protocolFee() external view returns (uint256);

    function feeToSetter() external view returns (address);

    function getPair(
        address tokenA,
        address tokenB,
        uint32 tokenWeightA,
        uint32 swapFee
    ) external view returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function isPair(address) external view returns (bool);

    function allPairsLength() external view returns (uint256);

    function createPair(
        address tokenA,
        address tokenB,
        uint32 tokenWeightA,
        uint32 swapFee
    ) external returns (address pair);

    function getWeightsAndSwapFee(address pair)
        external
        view
        returns (
            uint32 tokenWeight0,
            uint32 tokenWeight1,
            uint32 swapFee
        );

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;

    function setProtocolFee(uint256) external;
}

/*
    Bancor Formula interface
*/
interface IValueLiquidFormula {
    function getReserveAndWeights(address pair, address tokenA)
        external
        view
        returns (
            address tokenB,
            uint256 reserveA,
            uint256 reserveB,
            uint32 tokenWeightA,
            uint32 tokenWeightB,
            uint32 swapFee
        );

    function getFactoryReserveAndWeights(
        address factory,
        address pair,
        address tokenA
    )
        external
        view
        returns (
            address tokenB,
            uint256 reserveA,
            uint256 reserveB,
            uint32 tokenWeightA,
            uint32 tokenWeightB,
            uint32 swapFee
        );

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut,
        uint32 tokenWeightIn,
        uint32 tokenWeightOut,
        uint32 swapFee
    ) external view returns (uint256 amountIn);

    function getPairAmountIn(
        address pair,
        address tokenIn,
        uint256 amountOut
    ) external view returns (uint256 amountIn);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut,
        uint32 tokenWeightIn,
        uint32 tokenWeightOut,
        uint32 swapFee
    ) external view returns (uint256 amountOut);

    function getPairAmountOut(
        address pair,
        address tokenIn,
        uint256 amountIn
    ) external view returns (uint256 amountOut);

    function getAmountsIn(
        address tokenIn,
        address tokenOut,
        uint256 amountOut,
        address[] calldata path
    ) external view returns (uint256[] memory amounts);

    function getFactoryAmountsIn(
        address factory,
        address tokenIn,
        address tokenOut,
        uint256 amountOut,
        address[] calldata path
    ) external view returns (uint256[] memory amounts);

    function getAmountsOut(
        address tokenIn,
        address tokenOut,
        uint256 amountIn,
        address[] calldata path
    ) external view returns (uint256[] memory amounts);

    function getFactoryAmountsOut(
        address factory,
        address tokenIn,
        address tokenOut,
        uint256 amountIn,
        address[] calldata path
    ) external view returns (uint256[] memory amounts);

    function ensureConstantValue(
        uint256 reserve0,
        uint256 reserve1,
        uint256 balance0Adjusted,
        uint256 balance1Adjusted,
        uint32 tokenWeight0
    ) external view returns (bool);

    function getReserves(
        address pair,
        address tokenA,
        address tokenB
    ) external view returns (uint256 reserveA, uint256 reserveB);

    function getOtherToken(address pair, address tokenA) external view returns (address tokenB);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function sortTokens(address tokenA, address tokenB) external pure returns (address token0, address token1);

    function mintLiquidityFee(
        uint256 totalLiquidity,
        uint112 reserve0,
        uint112 reserve1,
        uint32 tokenWeight0,
        uint32 tokenWeight1,
        uint112 collectedFee0,
        uint112 collectedFee1
    ) external view returns (uint256 amount);
}

interface IValueLiquidPair {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event PaidProtocolFee(uint112 collectedFee0, uint112 collectedFee1);
    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to);
    event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to);
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function getCollectedFees() external view returns (uint112 _collectedFee0, uint112 _collectedFee1);

    function getTokenWeights() external view returns (uint32 tokenWeight0, uint32 tokenWeight1);

    function getSwapFee() external view returns (uint32);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to) external returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(
        address,
        address,
        uint32,
        uint32
    ) external;
}

interface IStakePool {
    event Deposit(address indexed account, uint256 amount);
    event AddRewardPool(uint256 indexed poolId);
    event UpdateRewardPool(uint256 indexed poolId, uint256 endRewardBlock, uint256 rewardPerBlock);
    event PayRewardPool(
        uint256 indexed poolId,
        address indexed rewardToken,
        address indexed account,
        uint256 pendingReward,
        uint256 rebaseAmount,
        uint256 paidReward
    );
    event UpdateRewardRebaser(uint256 indexed poolId, address rewardRebaser);
    event UpdateRewardMultiplier(uint256 indexed poolId, address rewardMultiplier);
    event Withdraw(address indexed account, uint256 amount);

    function version() external returns (uint256);

    function pair() external returns (address);

    function initialize(
        address _pair,
        uint256 _unstakingFrozenTime,
        address _rewardFund,
        address _timelock
    ) external;

    function stake(uint256) external;

    function stakeFor(address _account) external;

    function withdraw(uint256) external;

    function getReward(uint8 _pid, address _account) external;

    function getAllRewards(address _account) external;

    function pendingReward(uint8 _pid, address _account) external view returns (uint256);

    function getEndRewardBlock(uint8 _pid) external view returns (address, uint256);

    function getRewardPerBlock(uint8 pid) external view returns (uint256);

    function rewardPoolInfoLength() external view returns (uint256);

    function unfrozenStakeTime(address _account) external view returns (uint256);

    function emergencyWithdraw() external;

    function updateReward() external;

    function updateReward(uint8 _pid) external;

    function updateRewardPool(
        uint8 _pid,
        uint256 _endRewardBlock,
        uint256 _rewardPerBlock
    ) external;

    function getRewardMultiplier(
        uint8 _pid,
        uint256 _from,
        uint256 _to,
        uint256 _rewardPerBlock
    ) external view returns (uint256);

    function getRewardRebase(
        uint8 _pid,
        address _rewardToken,
        uint256 _pendingReward
    ) external view returns (uint256);

    function updateRewardRebaser(uint8 _pid, address _rewardRebaser) external;

    function updateRewardMultiplier(uint8 _pid, address _rewardMultiplier) external;

    function getUserInfo(uint8 _pid, address _account)
        external
        view
        returns (
            uint256 amount,
            uint256 rewardDebt,
            uint256 accumulatedEarned,
            uint256 lockReward,
            uint256 lockRewardReleased
        );

    function addRewardPool(
        address _rewardToken,
        address _rewardRebaser,
        address _rewardMultiplier,
        uint256 _startBlock,
        uint256 _endRewardBlock,
        uint256 _rewardPerBlock,
        uint256 _lockRewardPercent,
        uint256 _startVestingBlock,
        uint256 _endVestingBlock
    ) external;

    function removeLiquidity(
        address provider,
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address provider,
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address provider,
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);
}

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: APPROVE_FAILED");
    }

    function safeTransfer(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FAILED");
    }

    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "TransferHelper: TRANSFER_FROM_FAILED");
    }

    function safeTransferETH(address to, uint256 value) internal {
        (bool success, ) = to.call{value: value}(new bytes(0));
        require(success, "TransferHelper: ETH_TRANSFER_FAILED");
    }
}

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);
}

interface IValueLiquidProvider {
    function factory() external view returns (address);

    function controller() external view returns (address);

    function formula() external view returns (address);

    function WETH() external view returns (address);

    function removeLiquidity(
        address pair,
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address pair,
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address pair,
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address pair,
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address pair,
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address pair,
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function stake(
        address stakePool,
        uint256 amount,
        uint256 deadline
    ) external;

    function stakeWithPermit(
        address stakePool,
        uint256 amount,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;
}

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)
library SafeMath {
    function add(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x + y) >= x, "ds-math-add-overflow");
    }

    function sub(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require((z = x - y) <= x, "ds-math-sub-underflow");
    }

    function mul(uint256 x, uint256 y) internal pure returns (uint256 z) {
        require(y == 0 || (z = x * y) / y == x, "ds-math-mul-overflow");
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256 c) {
        require(b > 0, "ds-math-division-by-zero");
        c = a / b;
    }
}

interface IWETH {
    function deposit() external payable;

    function transfer(address to, uint256 value) external returns (bool);

    function withdraw(uint256) external;

    function balanceOf(address account) external view returns (uint256);
}

interface IStakePoolController {
    event MasterCreated(address indexed farm, address indexed pair, uint256 version, address timelock, address stakePoolRewardFund, uint256 totalStakePool);
    event SetWhitelistStakingFor(address indexed contractAddress, bool value);
    event SetWhitelistStakePool(address indexed contractAddress, int8 value);
    event SetStakePoolCreator(address indexed contractAddress, uint256 verion);
    event SetWhitelistRewardRebaser(address indexed contractAddress, bool value);
    event SetWhitelistRewardMultiplier(address indexed contractAddress, bool value);
    event SetStakePoolVerifier(address indexed contractAddress, bool value);
    event ChangeGovernance(address indexed governance);
    event SetFeeCollector(address indexed feeCollector);
    event SetFeeToken(address indexed token);
    event SetFeeAmount(uint256 indexed amount);

    struct PoolRewardInfo {
        address rewardToken;
        address rewardRebaser;
        address rewardMultiplier;
        uint256 startBlock;
        uint256 endRewardBlock;
        uint256 rewardPerBlock;
        uint256 lockRewardPercent;
        uint256 startVestingBlock;
        uint256 endVestingBlock;
        uint256 unstakingFrozenTime;
        uint256 rewardFundAmount;
    }

    function allStakePools(uint256) external view returns (address stakePool);

    function isStakePool(address contractAddress) external view returns (bool);

    function isStakePoolVerifier(address contractAddress) external view returns (bool);

    function isWhitelistStakingFor(address contractAddress) external view returns (bool);

    function isWhitelistStakePool(address contractAddress) external view returns (int8);

    function setStakePoolVerifier(address contractAddress, bool state) external;

    function setWhitelistStakingFor(address contractAddress, bool state) external;

    function setWhitelistStakePool(address contractAddress, int8 state) external;

    function addStakePoolCreator(address contractAddress) external;

    function isWhitelistRewardRebaser(address contractAddress) external view returns (bool);

    function setWhitelistRewardRebaser(address contractAddress, bool state) external;

    function isWhitelistRewardMultiplier(address contractAddress) external view returns (bool);

    function setWhitelistRewardMultiplier(address contractAddress, bool state) external;

    function allStakePoolsLength() external view returns (uint256);

    function create(
        uint256 version,
        address pair,
        uint256 delayTimeLock,
        PoolRewardInfo calldata poolRewardInfo,
        uint8 flag
    ) external returns (address);

    function createPair(
        uint256 version,
        address tokenA,
        address tokenB,
        uint32 tokenWeightA,
        uint32 swapFee,
        uint256 delayTimeLock,
        PoolRewardInfo calldata poolRewardInfo,
        uint8 flag
    ) external returns (address);

    function setGovernance(address) external;

    function setFeeCollector(address _address) external;

    function setFeeToken(address _token) external;

    function setFeeAmount(uint256 _token) external;
}

contract ValueLiquidProvider is IValueLiquidProvider {
    using SafeMath for uint256;
    address public immutable override factory;
    address public immutable override controller;
    address public immutable override formula;
    address public immutable override WETH;
    address private constant ETH_ADDRESS = address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE);

    modifier ensure(uint256 deadline) {
        require(deadline >= block.timestamp, "Router: EXPIRED");
        _;
    }

    constructor(
        address _factory,
        address _controller,
        address _WETH
    ) {
        factory = _factory;
        controller = _controller;
        formula = IValueLiquidFactory(_factory).formula();
        WETH = _WETH;
    }

    receive() external payable {
        assert(msg.sender == WETH);
        // only accept ETH via fallback from the WETH contract
    }

    function stake(
        address stakePool,
        uint256 amount,
        uint256 deadline
    ) external virtual override ensure(deadline) {
        require(IStakePoolController(controller).isStakePool(stakePool), "Router: Invalid stakePool");
        address pair = IStakePool(stakePool).pair();
        IValueLiquidPair(pair).transferFrom(msg.sender, stakePool, amount);
        IStakePool(stakePool).stakeFor(msg.sender);
    }

    function stakeWithPermit(
        address stakePool,
        uint256 amount,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external virtual override ensure(deadline) {
        require(IStakePoolController(controller).isStakePool(stakePool), "Router: Invalid stakePool");
        address pair = IStakePool(stakePool).pair();
        IValueLiquidPair(pair).permit(msg.sender, address(this), approveMax ? uint256(-1) : amount, deadline, v, r, s);
        IValueLiquidPair(pair).transferFrom(msg.sender, stakePool, amount);
        IStakePool(stakePool).stakeFor(msg.sender);
    }

    // **** REMOVE LIQUIDITY ****
    function _removeLiquidity(
        address pair,
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to
    ) internal returns (uint256 amountA, uint256 amountB) {
        require(IValueLiquidFactory(factory).isPair(pair), "Router: Invalid pair");
        IValueLiquidPair(pair).transferFrom(msg.sender, pair, liquidity);
        // send liquidity to pair
        (uint256 amount0, uint256 amount1) = IValueLiquidPair(pair).burn(to);
        (address token0, ) = IValueLiquidFormula(formula).sortTokens(tokenA, tokenB);
        (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);
        require(amountA >= amountAMin, "Router: INSUFFICIENT_A_AMOUNT");
        require(amountB >= amountBMin, "Router: INSUFFICIENT_B_AMOUNT");
    }

    function removeLiquidity(
        address pair,
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) public virtual override ensure(deadline) returns (uint256 amountA, uint256 amountB) {
        (amountA, amountB) = _removeLiquidity(pair, tokenA, tokenB, liquidity, amountAMin, amountBMin, to);
    }

    function removeLiquidityETH(
        address pair,
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) public virtual override ensure(deadline) returns (uint256 amountToken, uint256 amountETH) {
        (amountToken, amountETH) = _removeLiquidity(pair, token, WETH, liquidity, amountTokenMin, amountETHMin, address(this));
        TransferHelper.safeTransfer(token, to, amountToken);
        transferAll(ETH_ADDRESS, to, amountETH);
    }

    function removeLiquidityWithPermit(
        address pair,
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external virtual override ensure(deadline) returns (uint256 amountA, uint256 amountB) {
        {
            uint256 value = approveMax ? uint256(-1) : liquidity;
            IValueLiquidPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        }
        (amountA, amountB) = _removeLiquidity(pair, tokenA, tokenB, liquidity, amountAMin, amountBMin, to);
    }

    function removeLiquidityETHWithPermit(
        address pair,
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external virtual override returns (uint256 amountToken, uint256 amountETH) {
        uint256 value = approveMax ? uint256(-1) : liquidity;
        IValueLiquidPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountToken, amountETH) = removeLiquidityETH(pair, token, liquidity, amountTokenMin, amountETHMin, to, deadline);
    }

    // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address pair,
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) public virtual override ensure(deadline) returns (uint256 amountETH) {
        (, amountETH) = removeLiquidity(pair, token, WETH, liquidity, amountTokenMin, amountETHMin, address(this), deadline);
        TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));
        transferAll(ETH_ADDRESS, to, amountETH);
    }

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address pair,
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external virtual override returns (uint256 amountETH) {
        uint256 value = approveMax ? uint256(-1) : liquidity;
        IValueLiquidPair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(pair, token, liquidity, amountTokenMin, amountETHMin, to, deadline);
    }

    function transferAll(
        address token,
        address to,
        uint256 amount
    ) internal returns (bool) {
        if (amount == 0) {
            return true;
        }

        if (isETH(token)) {
            IWETH(WETH).withdraw(amount);
            TransferHelper.safeTransferETH(to, amount);
        } else {
            TransferHelper.safeTransfer(token, to, amount);
        }
        return true;
    }

    function isETH(address token) internal pure returns (bool) {
        return (token == ETH_ADDRESS);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_controller","type":"address"},{"internalType":"address","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"controller","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"formula","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETHSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"stakePool","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"stakePool","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"stakeWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6101006040523480156200001257600080fd5b5060405162001e5338038062001e5383398101604081905262000035916200012f565b6001600160601b0319606084811b821660805283901b1660a05260408051634b75f54f60e01b815290516001600160a01b03851691634b75f54f916004808301926020929190829003018186803b1580156200009057600080fd5b505afa158015620000a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cb91906200010b565b6001600160601b0319606091821b811660c05291901b1660e05250620001789050565b80516001600160a01b03811681146200010657600080fd5b919050565b6000602082840312156200011d578081fd5b6200012882620000ee565b9392505050565b60008060006060848603121562000144578182fd5b6200014f84620000ee565b92506200015f60208501620000ee565b91506200016f60408501620000ee565b90509250925092565b60805160601c60a05160601c60c05160601c60e05160601c611c72620001e16000398060e85280610c245280610c8b5280610db752806113f6525080610675528061110352508061031c528061081f5280610ec1525080610cf25280610ee85250611c726000f3fe6080604052600436106100cb5760003560e01c8063ad5c464811610074578063e1f4a7841161004e578063e1f4a78414610246578063ebb5d2e914610266578063f77c47911461028657610111565b8063ad5c4648146101fc578063b56b681d14610211578063c45a01551461023157610111565b80634c17fd7c116100a55780634c17fd7c1461018e57806365babd99146101bc578063a4aabb08146101dc57610111565b80630c51b88f146101165780630e2f024c146101365780634b75f54f1461016c57610111565b36610111573373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461010f57fe5b005b600080fd5b34801561012257600080fd5b5061010f61013136600461182d565b61029b565b34801561014257600080fd5b50610156610151366004611784565b610590565b6040516101639190611bf2565b60405180910390f35b34801561017857600080fd5b50610181610673565b604051610163919061195e565b34801561019a57600080fd5b506101ae6101a9366004611658565b610697565b604051610163929190611bfb565b3480156101c857600080fd5b5061010f6101d7366004611861565b6107a7565b3480156101e857600080fd5b506101ae6101f7366004611784565b610b39565b34801561020857600080fd5b50610181610c22565b34801561021d57600080fd5b506101ae61022c366004611713565b610c46565b34801561023d57600080fd5b50610181610cf0565b34801561025257600080fd5b506101ae6102613660046115d4565b610d14565b34801561027257600080fd5b50610156610281366004611713565b610d73565b34801561029257600080fd5b50610181610ebf565b80428110156102df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b60405180910390fd5b6040517f1047a85700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690631047a8579061035190879060040161195e565b60206040518083038186803b15801561036957600080fd5b505afa15801561037d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a191906118ce565b6103d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611b84565b60008473ffffffffffffffffffffffffffffffffffffffff1663a8aa1b316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561042157600080fd5b505af1158015610435573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610459919061157f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906323b872dd906104b2903390899089906004016119cd565b602060405180830381600087803b1580156104cc57600080fd5b505af11580156104e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050491906118ce565b506040517f4bf6920600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861690634bf692069061055790339060040161195e565b600060405180830381600087803b15801561057157600080fd5b505af1158015610585573d6000803e3d6000fd5b505050505050505050565b6000808561059e578a6105c0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8e169063d505accf90610621903390309086908d908c908c908c9060040161197f565b600060405180830381600087803b15801561063b57600080fd5b505af115801561064f573d6000803e3d6000fd5b505050506106628d8d8d8d8d8d8d610d73565b9d9c50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008086428110156106d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b6000876106e2578c610704565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b90508f73ffffffffffffffffffffffffffffffffffffffff1663d505accf3330848d8c8c8c6040518863ffffffff1660e01b815260040161074b979695949392919061197f565b600060405180830381600087803b15801561076557600080fd5b505af1158015610779573d6000803e3d6000fd5b505050505061078d8f8f8f8f8f8f8f610ee3565b8093508194505050509c509c9a5050505050505050505050565b84428110156107e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b6040517f1047a85700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690631047a85790610854908b9060040161195e565b60206040518083038186803b15801561086c57600080fd5b505afa158015610880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a491906118ce565b6108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611b84565b60008873ffffffffffffffffffffffffffffffffffffffff1663a8aa1b316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561092457600080fd5b505af1158015610938573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095c919061157f565b90508073ffffffffffffffffffffffffffffffffffffffff1663d505accf333089610987578b6109a9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b8b8a8a8a6040518863ffffffff1660e01b81526004016109cf979695949392919061197f565b600060405180830381600087803b1580156109e957600080fd5b505af11580156109fd573d6000803e3d6000fd5b50506040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841692506323b872dd9150610a579033908d908d906004016119cd565b602060405180830381600087803b158015610a7157600080fd5b505af1158015610a85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa991906118ce565b506040517f4bf6920600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a1690634bf6920690610afc90339060040161195e565b600060405180830381600087803b158015610b1657600080fd5b505af1158015610b2a573d6000803e3d6000fd5b50505050505050505050505050565b600080600086610b49578b610b6b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8f169063d505accf90610bcc903390309086908e908d908d908d9060040161197f565b600060405180830381600087803b158015610be657600080fd5b505af1158015610bfa573d6000803e3d6000fd5b50505050610c0d8e8e8e8e8e8e8e610c46565b909f909e509c50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000808242811015610c84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b610cb38a8a7f00000000000000000000000000000000000000000000000000000000000000008b8b8b30610ee3565b9093509150610cc3898685611273565b610ce273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee868461139c565b505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000808242811015610d52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b610d618b8b8b8b8b8b8b610ee3565b909c909b509950505050505050505050565b60008142811015610db0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b610de089897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a610d14565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152909350610e9391508990869073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190610e3e90309060040161195e565b60206040518083038186803b158015610e5657600080fd5b505afa158015610e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8e91906118ea565b611273565b610eb273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee858461139c565b5050979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e5e31b138a6040518263ffffffff1660e01b8152600401610f3f919061195e565b60206040518083038186803b158015610f5757600080fd5b505afa158015610f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8f91906118ce565b610fc5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611bbb565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16906323b872dd9061101b9033908d908b906004016119cd565b602060405180830381600087803b15801561103557600080fd5b505af1158015611049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106d91906118ce565b506000808a73ffffffffffffffffffffffffffffffffffffffff166389afcb44866040518263ffffffff1660e01b81526004016110aa919061195e565b6040805180830381600087803b1580156110c357600080fd5b505af11580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb9190611902565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663544caa568c8c6040518363ffffffff1660e01b815260040161115c9291906119fe565b604080518083038186803b15801561117357600080fd5b505afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab919061159b565b5090508073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16146111e85781836111eb565b82825b90955093508785101561122a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611ab9565b86841015611264576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611a82565b50505097509795505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040516024016112a5929190611a25565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516112f39190611925565b6000604051808303816000865af19150503d8060008114611330576040519150601f19603f3d011682016040523d82523d6000602084013e611335565b606091505b509150915081801561135f57508051158061135f57508080602001905181019061135f91906118ce565b611395576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611a4b565b5050505050565b6000816113ab5750600161147b565b6113b484611482565b1561146c576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d9061142b908590600401611bf2565b600060405180830381600087803b15801561144557600080fd5b505af1158015611459573d6000803e3d6000fd5b5050505061146783836114b5565b611477565b611477848484611273565b5060015b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b919050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516114ec9190611925565b60006040518083038185875af1925050503d8060008114611529576040519150601f19603f3d011682016040523d82523d6000602084013e61152e565b606091505b5050905080611569576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611b27565b505050565b803560ff811681146114b057600080fd5b600060208284031215611590578081fd5b815161147b81611c09565b600080604083850312156115ad578081fd5b82516115b881611c09565b60208401519092506115c981611c09565b809150509250929050565b600080600080600080600080610100898b0312156115f0578384fd5b88356115fb81611c09565b9750602089013561160b81611c09565b9650604089013561161b81611c09565b9550606089013594506080890135935060a0890135925060c089013561164081611c09565b8092505060e089013590509295985092959890939650565b6000806000806000806000806000806000806101808d8f03121561167a578384fd5b8c3561168581611c09565b9b5060208d013561169581611c09565b9a5060408d01356116a581611c09565b995060608d0135985060808d0135975060a08d0135965060c08d01356116ca81611c09565b955060e08d013594506101008d01356116e281611c2e565b93506116f16101208e0161156e565b92506101408d013591506101608d013590509295989b509295989b509295989b565b600080600080600080600060e0888a03121561172d578283fd5b873561173881611c09565b9650602088013561174881611c09565b955060408801359450606088013593506080880135925060a088013561176d81611c09565b8092505060c0880135905092959891949750929550565b60008060008060008060008060008060006101608c8e0312156117a5578081fd5b8b356117b081611c09565b9a5060208c01356117c081611c09565b995060408c0135985060608c0135975060808c0135965060a08c01356117e581611c09565b955060c08c0135945060e08c01356117fc81611c2e565b935061180b6101008d0161156e565b92506101208c013591506101408c013590509295989b509295989b9093969950565b600080600060608486031215611841578081fd5b833561184c81611c09565b95602085013595506040909401359392505050565b600080600080600080600060e0888a03121561187b578081fd5b873561188681611c09565b9650602088013595506040880135945060608801356118a481611c2e565b93506118b26080890161156e565b925060a0880135915060c0880135905092959891949750929550565b6000602082840312156118df578081fd5b815161147b81611c2e565b6000602082840312156118fb578081fd5b5051919050565b60008060408385031215611914578182fd5b505080516020909101519092909150565b60008251815b81811015611945576020818601810151858301520161192b565b818111156119535782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b6020808252601d908201527f526f757465723a20494e53554646494349454e545f425f414d4f554e54000000604082015260600190565b6020808252601d908201527f526f757465723a20494e53554646494349454e545f415f414d4f554e54000000604082015260600190565b6020808252600f908201527f526f757465723a20455850495245440000000000000000000000000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f526f757465723a20496e76616c6964207374616b65506f6f6c00000000000000604082015260600190565b60208082526014908201527f526f757465723a20496e76616c69642070616972000000000000000000000000604082015260600190565b90815260200190565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff81168114611c2b57600080fd5b50565b8015158114611c2b57600080fdfea2646970667358221220bfb1fc5395a2c1100f26d308a3a83e7e11293886d74b334b0906c1951a14e75864736f6c634300070600330000000000000000000000005021470fc598373fba4fe3384745940eab3e653d000000000000000000000000f0159d041db29029ccf285a1043dcaac7088030b000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

Deployed Bytecode

0x6080604052600436106100cb5760003560e01c8063ad5c464811610074578063e1f4a7841161004e578063e1f4a78414610246578063ebb5d2e914610266578063f77c47911461028657610111565b8063ad5c4648146101fc578063b56b681d14610211578063c45a01551461023157610111565b80634c17fd7c116100a55780634c17fd7c1461018e57806365babd99146101bc578063a4aabb08146101dc57610111565b80630c51b88f146101165780630e2f024c146101365780634b75f54f1461016c57610111565b36610111573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2161461010f57fe5b005b600080fd5b34801561012257600080fd5b5061010f61013136600461182d565b61029b565b34801561014257600080fd5b50610156610151366004611784565b610590565b6040516101639190611bf2565b60405180910390f35b34801561017857600080fd5b50610181610673565b604051610163919061195e565b34801561019a57600080fd5b506101ae6101a9366004611658565b610697565b604051610163929190611bfb565b3480156101c857600080fd5b5061010f6101d7366004611861565b6107a7565b3480156101e857600080fd5b506101ae6101f7366004611784565b610b39565b34801561020857600080fd5b50610181610c22565b34801561021d57600080fd5b506101ae61022c366004611713565b610c46565b34801561023d57600080fd5b50610181610cf0565b34801561025257600080fd5b506101ae6102613660046115d4565b610d14565b34801561027257600080fd5b50610156610281366004611713565b610d73565b34801561029257600080fd5b50610181610ebf565b80428110156102df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b60405180910390fd5b6040517f1047a85700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000f0159d041db29029ccf285a1043dcaac7088030b1690631047a8579061035190879060040161195e565b60206040518083038186803b15801561036957600080fd5b505afa15801561037d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a191906118ce565b6103d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611b84565b60008473ffffffffffffffffffffffffffffffffffffffff1663a8aa1b316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561042157600080fd5b505af1158015610435573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610459919061157f565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906323b872dd906104b2903390899089906004016119cd565b602060405180830381600087803b1580156104cc57600080fd5b505af11580156104e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050491906118ce565b506040517f4bf6920600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861690634bf692069061055790339060040161195e565b600060405180830381600087803b15801561057157600080fd5b505af1158015610585573d6000803e3d6000fd5b505050505050505050565b6000808561059e578a6105c0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8e169063d505accf90610621903390309086908d908c908c908c9060040161197f565b600060405180830381600087803b15801561063b57600080fd5b505af115801561064f573d6000803e3d6000fd5b505050506106628d8d8d8d8d8d8d610d73565b9d9c50505050505050505050505050565b7f000000000000000000000000d989212c51ba850a1787ce4c666eb44a170cc41581565b60008086428110156106d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b6000876106e2578c610704565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b90508f73ffffffffffffffffffffffffffffffffffffffff1663d505accf3330848d8c8c8c6040518863ffffffff1660e01b815260040161074b979695949392919061197f565b600060405180830381600087803b15801561076557600080fd5b505af1158015610779573d6000803e3d6000fd5b505050505061078d8f8f8f8f8f8f8f610ee3565b8093508194505050509c509c9a5050505050505050505050565b84428110156107e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b6040517f1047a85700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000f0159d041db29029ccf285a1043dcaac7088030b1690631047a85790610854908b9060040161195e565b60206040518083038186803b15801561086c57600080fd5b505afa158015610880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a491906118ce565b6108da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611b84565b60008873ffffffffffffffffffffffffffffffffffffffff1663a8aa1b316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561092457600080fd5b505af1158015610938573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095c919061157f565b90508073ffffffffffffffffffffffffffffffffffffffff1663d505accf333089610987578b6109a9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b8b8a8a8a6040518863ffffffff1660e01b81526004016109cf979695949392919061197f565b600060405180830381600087803b1580156109e957600080fd5b505af11580156109fd573d6000803e3d6000fd5b50506040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841692506323b872dd9150610a579033908d908d906004016119cd565b602060405180830381600087803b158015610a7157600080fd5b505af1158015610a85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa991906118ce565b506040517f4bf6920600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a1690634bf6920690610afc90339060040161195e565b600060405180830381600087803b158015610b1657600080fd5b505af1158015610b2a573d6000803e3d6000fd5b50505050505050505050505050565b600080600086610b49578b610b6b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8f169063d505accf90610bcc903390309086908e908d908d908d9060040161197f565b600060405180830381600087803b158015610be657600080fd5b505af1158015610bfa573d6000803e3d6000fd5b50505050610c0d8e8e8e8e8e8e8e610c46565b909f909e509c50505050505050505050505050565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6000808242811015610c84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b610cb38a8a7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28b8b8b30610ee3565b9093509150610cc3898685611273565b610ce273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee868461139c565b505097509795505050505050565b7f0000000000000000000000005021470fc598373fba4fe3384745940eab3e653d81565b6000808242811015610d52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b610d618b8b8b8b8b8b8b610ee3565b909c909b509950505050505050505050565b60008142811015610db0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611af0565b610de089897f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28a8a8a308a610d14565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152909350610e9391508990869073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190610e3e90309060040161195e565b60206040518083038186803b158015610e5657600080fd5b505afa158015610e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8e91906118ea565b611273565b610eb273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee858461139c565b5050979650505050505050565b7f000000000000000000000000f0159d041db29029ccf285a1043dcaac7088030b81565b6000807f0000000000000000000000005021470fc598373fba4fe3384745940eab3e653d73ffffffffffffffffffffffffffffffffffffffff1663e5e31b138a6040518263ffffffff1660e01b8152600401610f3f919061195e565b60206040518083038186803b158015610f5757600080fd5b505afa158015610f6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8f91906118ce565b610fc5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611bbb565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16906323b872dd9061101b9033908d908b906004016119cd565b602060405180830381600087803b15801561103557600080fd5b505af1158015611049573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106d91906118ce565b506000808a73ffffffffffffffffffffffffffffffffffffffff166389afcb44866040518263ffffffff1660e01b81526004016110aa919061195e565b6040805180830381600087803b1580156110c357600080fd5b505af11580156110d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fb9190611902565b9150915060007f000000000000000000000000d989212c51ba850a1787ce4c666eb44a170cc41573ffffffffffffffffffffffffffffffffffffffff1663544caa568c8c6040518363ffffffff1660e01b815260040161115c9291906119fe565b604080518083038186803b15801561117357600080fd5b505afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab919061159b565b5090508073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16146111e85781836111eb565b82825b90955093508785101561122a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611ab9565b86841015611264576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611a82565b50505097509795505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040516024016112a5929190611a25565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516112f39190611925565b6000604051808303816000865af19150503d8060008114611330576040519150601f19603f3d011682016040523d82523d6000602084013e611335565b606091505b509150915081801561135f57508051158061135f57508080602001905181019061135f91906118ce565b611395576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611a4b565b5050505050565b6000816113ab5750600161147b565b6113b484611482565b1561146c576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21690632e1a7d4d9061142b908590600401611bf2565b600060405180830381600087803b15801561144557600080fd5b505af1158015611459573d6000803e3d6000fd5b5050505061146783836114b5565b611477565b611477848484611273565b5060015b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b919050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516114ec9190611925565b60006040518083038185875af1925050503d8060008114611529576040519150601f19603f3d011682016040523d82523d6000602084013e61152e565b606091505b5050905080611569576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102d690611b27565b505050565b803560ff811681146114b057600080fd5b600060208284031215611590578081fd5b815161147b81611c09565b600080604083850312156115ad578081fd5b82516115b881611c09565b60208401519092506115c981611c09565b809150509250929050565b600080600080600080600080610100898b0312156115f0578384fd5b88356115fb81611c09565b9750602089013561160b81611c09565b9650604089013561161b81611c09565b9550606089013594506080890135935060a0890135925060c089013561164081611c09565b8092505060e089013590509295985092959890939650565b6000806000806000806000806000806000806101808d8f03121561167a578384fd5b8c3561168581611c09565b9b5060208d013561169581611c09565b9a5060408d01356116a581611c09565b995060608d0135985060808d0135975060a08d0135965060c08d01356116ca81611c09565b955060e08d013594506101008d01356116e281611c2e565b93506116f16101208e0161156e565b92506101408d013591506101608d013590509295989b509295989b509295989b565b600080600080600080600060e0888a03121561172d578283fd5b873561173881611c09565b9650602088013561174881611c09565b955060408801359450606088013593506080880135925060a088013561176d81611c09565b8092505060c0880135905092959891949750929550565b60008060008060008060008060008060006101608c8e0312156117a5578081fd5b8b356117b081611c09565b9a5060208c01356117c081611c09565b995060408c0135985060608c0135975060808c0135965060a08c01356117e581611c09565b955060c08c0135945060e08c01356117fc81611c2e565b935061180b6101008d0161156e565b92506101208c013591506101408c013590509295989b509295989b9093969950565b600080600060608486031215611841578081fd5b833561184c81611c09565b95602085013595506040909401359392505050565b600080600080600080600060e0888a03121561187b578081fd5b873561188681611c09565b9650602088013595506040880135945060608801356118a481611c2e565b93506118b26080890161156e565b925060a0880135915060c0880135905092959891949750929550565b6000602082840312156118df578081fd5b815161147b81611c2e565b6000602082840312156118fb578081fd5b5051919050565b60008060408385031215611914578182fd5b505080516020909101519092909150565b60008251815b81811015611945576020818601810151858301520161192b565b818111156119535782828501525b509190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b6020808252601d908201527f526f757465723a20494e53554646494349454e545f425f414d4f554e54000000604082015260600190565b6020808252601d908201527f526f757465723a20494e53554646494349454e545f415f414d4f554e54000000604082015260600190565b6020808252600f908201527f526f757465723a20455850495245440000000000000000000000000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f526f757465723a20496e76616c6964207374616b65506f6f6c00000000000000604082015260600190565b60208082526014908201527f526f757465723a20496e76616c69642070616972000000000000000000000000604082015260600190565b90815260200190565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff81168114611c2b57600080fd5b50565b8015158114611c2b57600080fdfea2646970667358221220bfb1fc5395a2c1100f26d308a3a83e7e11293886d74b334b0906c1951a14e75864736f6c63430007060033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000005021470fc598373fba4fe3384745940eab3e653d000000000000000000000000f0159d041db29029ccf285a1043dcaac7088030b000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

-----Decoded View---------------
Arg [0] : _factory (address): 0x5021470FC598373fBA4fE3384745940eaB3E653d
Arg [1] : _controller (address): 0xf0159d041DB29029cCF285A1043DcAAc7088030b
Arg [2] : _WETH (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000005021470fc598373fba4fe3384745940eab3e653d
Arg [1] : 000000000000000000000000f0159d041db29029ccf285a1043dcaac7088030b
Arg [2] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2


Deployed Bytecode Sourcemap

21367:7319:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22187:10;:18;22201:4;22187:18;;22180:26;;;;21367:7319;;;;;22286:441;;;;;;;;;;-1:-1:-1;22286:441:0;;;;;:::i;:::-;;:::i;27421:701::-;;;;;;;;;;-1:-1:-1;27421:701:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21559:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25331:722::-;;;;;;;;;;-1:-1:-1;25331:722:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;22735:656::-;;;;;;;;;;-1:-1:-1;22735:656:0;;;;;:::i;:::-;;:::i;26061:679::-;;;;;;;;;;-1:-1:-1;26061:679:0;;;;;:::i;:::-;;:::i;21607:38::-;;;;;;;;;;;;;:::i;24762:561::-;;;;;;;;;;-1:-1:-1;24762:561:0;;;;;:::i;:::-;;:::i;21460:41::-;;;;;;;;;;;;;:::i;24314:440::-;;;;;;;;;;-1:-1:-1;24314:440:0;;;;;:::i;:::-;;:::i;26819:594::-;;;;;;;;;;-1:-1:-1;26819:594:0;;;;;:::i;:::-;;:::i;21508:44::-;;;;;;;;;;;;;:::i;22286:441::-;22421:8;21816:15;21804:8;:27;;21796:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;22450::::1;::::0;;;;:44:::1;22471:10;22450:44;::::0;::::1;::::0;:55:::1;::::0;22495:9;;22450:55:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22442:93;;;;;;;;;;;;:::i;:::-;22546:12;22572:9;22561:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22600:66;::::0;;;;22546:43;;-1:-1:-1;22600:35:0::1;::::0;::::1;::::0;::::1;::::0;:66:::1;::::0;22636:10:::1;::::0;22648:9;;22659:6;;22600:66:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;22677:42:0::1;::::0;;;;:30:::1;::::0;::::1;::::0;::::1;::::0;:42:::1;::::0;22708:10:::1;::::0;22677:42:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21862:1;22286:441:::0;;;;:::o;27421:701::-;27801:17;27831:13;27847:10;:36;;27874:9;27847:36;;;27868:2;27847:36;27894:82;;;;;27831:52;;-1:-1:-1;27894:29:0;;;;;;:82;;27924:10;;27944:4;;27831:52;;27958:8;;27968:1;;27971;;27974;;27894:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27999:115;28047:4;28053:5;28060:9;28071:14;28087:12;28101:2;28105:8;27999:47;:115::i;:::-;27987:127;27421:701;-1:-1:-1;;;;;;;;;;;;;27421:701:0:o;21559:41::-;;;:::o;25331:722::-;25716:15;25733;25697:8;21816:15;21804:8;:27;;21796:55;;;;;;;;;;;;:::i;:::-;25776:13:::1;25792:10;:36;;25819:9;25792:36;;;25813:2;25792:36;25776:52;;25860:4;25843:29;;;25873:10;25893:4;25900:5;25907:8;25917:1;25920;25923;25843:82;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21862:1;25968:77;25985:4;25991:6;25999;26007:9;26018:10;26030;26042:2;25968:16;:77::i;:::-;25947:98;;;;;;;;25331:722:::0;;;;;;;;;;;;;;;;:::o;22735:656::-;22964:8;21816:15;21804:8;:27;;21796:55;;;;;;;;;;;;:::i;:::-;22993::::1;::::0;;;;:44:::1;23014:10;22993:44;::::0;::::1;::::0;:55:::1;::::0;23038:9;;22993:55:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22985:93;;;;;;;;;;;;:::i;:::-;23089:12;23115:9;23104:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23089:43;;23160:4;23143:29;;;23173:10;23193:4;23200:10;:33;;23227:6;23200:33;;;23221:2;23200:33;23235:8;23245:1;23248;23251;23143:110;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;23264:66:0::1;::::0;;;;:35:::1;::::0;::::1;::::0;-1:-1:-1;23264:35:0::1;::::0;-1:-1:-1;23264:66:0::1;::::0;23300:10:::1;::::0;23312:9;;23323:6;;23264:66:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;23341:42:0::1;::::0;;;;:30:::1;::::0;::::1;::::0;::::1;::::0;:42:::1;::::0;23372:10:::1;::::0;23341:42:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21862:1;22735:656:::0;;;;;;;;:::o;26061:679::-;26412:19;26433:17;26463:13;26479:10;:36;;26506:9;26479:36;;;26500:2;26479:36;26526:82;;;;;26463:52;;-1:-1:-1;26526:29:0;;;;;;:82;;26556:10;;26576:4;;26463:52;;26590:8;;26600:1;;26603;;26606;;26526:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26646:86;26665:4;26671:5;26678:9;26689:14;26705:12;26719:2;26723:8;26646:18;:86::i;:::-;26619:113;;;;-1:-1:-1;26061:679:0;-1:-1:-1;;;;;;;;;;;;;26061:679:0:o;21607:38::-;;;:::o;24762:561::-;25034:19;25055:17;25015:8;21816:15;21804:8;:27;;21796:55;;;;;;;;;;;;:::i;:::-;25112:91:::1;25129:4;25135:5;25142:4;25148:9;25159:14;25175:12;25197:4;25112:16;:91::i;:::-;25085:118:::0;;-1:-1:-1;25085:118:0;-1:-1:-1;25214:51:0::1;25242:5:::0;25249:2;25085:118;25214:27:::1;:51::i;:::-;25276:39;21699:42;25301:2;25305:9;25276:11;:39::i;:::-;;24762:561:::0;;;;;;;;;;;:::o;21460:41::-;;;:::o;24314:440::-;24603:15;24620;24584:8;21816:15;21804:8;:27;;21796:55;;;;;;;;;;;;:::i;:::-;24669:77:::1;24686:4;24692:6;24700;24708:9;24719:10;24731;24743:2;24669:16;:77::i;:::-;24648:98:::0;;;;-1:-1:-1;24314:440:0;-1:-1:-1;;;;;;;;;;24314:440:0:o;26819:594::-;27120:17;27101:8;21816:15;21804:8;:27;;21796:55;;;;;;;;;;;;:::i;:::-;27166:100:::1;27182:4;27188:5;27195:4;27201:9;27212:14;27228:12;27250:4;27257:8;27166:15;:100::i;:::-;27316:38;::::0;;;;27150:116;;-1:-1:-1;27277:78:0::1;::::0;-1:-1:-1;27305:5:0;;27312:2;;27316:23:::1;::::0;::::1;::::0;::::1;::::0;:38:::1;::::0;27348:4:::1;::::0;27316:38:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27277:27;:78::i;:::-;27366:39;21699:42;27391:2;27395:9;27366:11;:39::i;:::-;;26819:594:::0;;;;;;;;;;:::o;21508:44::-;;;:::o;23434:872::-;23665:15;23682;23738:7;23718:35;;;23754:4;23718:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23710:74;;;;;;;;;;;;:::i;:::-;23795:64;;;;;:35;;;;;;:64;;23831:10;;23812:4;;23849:9;;23795:64;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23906:15;23923;23959:4;23942:27;;;23970:2;23942:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23905:68;;;;23985:14;24025:7;24005:39;;;24045:6;24053;24005:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23984:76;;;24102:6;24092:16;;:6;:16;;;:58;;24133:7;24142;24092:58;;;24112:7;24121;24092:58;24071:79;;-1:-1:-1;24071:79:0;-1:-1:-1;24169:21:0;;;;24161:63;;;;;;;;;;;;:::i;:::-;24254:10;24243:7;:21;;24235:63;;;;;;;;;;;;:::i;:::-;23434:872;;;;;;;;;;;;;:::o;12519:398::-;12705:12;12719:17;12740:5;:10;;12774;12786:2;12790:5;12751:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12740:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12704:93;;;;12816:7;:57;;;;-1:-1:-1;12828:11:0;;:16;;:44;;;12859:4;12848:24;;;;;;;;;;;;:::i;:::-;12808:101;;;;;;;;;;;;:::i;:::-;12519:398;;;;;:::o;28130:438::-;28246:4;28267:11;28263:55;;-1:-1:-1;28302:4:0;28295:11;;28263:55;28334:12;28340:5;28334;:12::i;:::-;28330:209;;;28363:28;;;;;:20;28369:4;28363:20;;;;:28;;28384:6;;28363:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28406:42;28437:2;28441:6;28406:30;:42::i;:::-;28330:209;;;28481:46;28509:5;28516:2;28520:6;28481:27;:46::i;:::-;-1:-1:-1;28556:4:0;28130:438;;;;;;:::o;28576:107::-;28654:20;;;21699:42;28654:20;28576:107;;;;:::o;13381:200::-;13494:12;;;13454;13494;;;;;;;;;13472:7;;;;13487:5;;13472:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13453:54;;;13526:7;13518:55;;;;;;;;;;;;:::i;:::-;13381:200;;;:::o;14:158:1:-;82:20;;142:4;131:16;;121:27;;111:2;;162:1;159;152:12;177:263;;300:2;288:9;279:7;275:23;271:32;268:2;;;321:6;313;306:22;268:2;358:9;352:16;377:33;404:5;377:33;:::i;445:399::-;;;585:2;573:9;564:7;560:23;556:32;553:2;;;606:6;598;591:22;553:2;643:9;637:16;662:33;689:5;662:33;:::i;:::-;764:2;749:18;;743:25;714:5;;-1:-1:-1;777:35:1;743:25;777:35;:::i;:::-;831:7;821:17;;;543:301;;;;;:::o;849:965::-;;;;;;;;;1080:3;1068:9;1059:7;1055:23;1051:33;1048:2;;;1102:6;1094;1087:22;1048:2;1146:9;1133:23;1165:33;1192:5;1165:33;:::i;:::-;1217:5;-1:-1:-1;1274:2:1;1259:18;;1246:32;1287:35;1246:32;1287:35;:::i;:::-;1341:7;-1:-1:-1;1400:2:1;1385:18;;1372:32;1413:35;1372:32;1413:35;:::i;:::-;1467:7;-1:-1:-1;1521:2:1;1506:18;;1493:32;;-1:-1:-1;1572:3:1;1557:19;;1544:33;;-1:-1:-1;1624:3:1;1609:19;;1596:33;;-1:-1:-1;1681:3:1;1666:19;;1653:33;1695:35;1653:33;1695:35;:::i;:::-;1749:7;1739:17;;;1803:3;1792:9;1788:19;1775:33;1765:43;;1038:776;;;;;;;;;;;:::o;1819:1318::-;;;;;;;;;;;;;2115:3;2103:9;2094:7;2090:23;2086:33;2083:2;;;2137:6;2129;2122:22;2083:2;2181:9;2168:23;2200:33;2227:5;2200:33;:::i;:::-;2252:5;-1:-1:-1;2309:2:1;2294:18;;2281:32;2322:35;2281:32;2322:35;:::i;:::-;2376:7;-1:-1:-1;2435:2:1;2420:18;;2407:32;2448:35;2407:32;2448:35;:::i;:::-;2502:7;-1:-1:-1;2556:2:1;2541:18;;2528:32;;-1:-1:-1;2607:3:1;2592:19;;2579:33;;-1:-1:-1;2659:3:1;2644:19;;2631:33;;-1:-1:-1;2716:3:1;2701:19;;2688:33;2730:35;2688:33;2730:35;:::i;:::-;2784:7;-1:-1:-1;2838:3:1;2823:19;;2810:33;;-1:-1:-1;2895:3:1;2880:19;;2867:33;2909:32;2867:33;2909:32;:::i;:::-;2960:7;-1:-1:-1;2986:39:1;3020:3;3005:19;;2986:39;:::i;:::-;2976:49;;3073:3;3062:9;3058:19;3045:33;3034:44;;3126:3;3115:9;3111:19;3098:33;3087:44;;2073:1064;;;;;;;;;;;;;;:::o;3142:821::-;;;;;;;;3356:3;3344:9;3335:7;3331:23;3327:33;3324:2;;;3378:6;3370;3363:22;3324:2;3422:9;3409:23;3441:33;3468:5;3441:33;:::i;:::-;3493:5;-1:-1:-1;3550:2:1;3535:18;;3522:32;3563:35;3522:32;3563:35;:::i;:::-;3617:7;-1:-1:-1;3671:2:1;3656:18;;3643:32;;-1:-1:-1;3722:2:1;3707:18;;3694:32;;-1:-1:-1;3773:3:1;3758:19;;3745:33;;-1:-1:-1;3830:3:1;3815:19;;3802:33;3844:35;3802:33;3844:35;:::i;:::-;3898:7;3888:17;;;3952:3;3941:9;3937:19;3924:33;3914:43;;3314:649;;;;;;;;;;:::o;3968:1174::-;;;;;;;;;;;;4246:3;4234:9;4225:7;4221:23;4217:33;4214:2;;;4269:7;4260;4253:24;4214:2;4314:9;4301:23;4333:33;4360:5;4333:33;:::i;:::-;4385:5;-1:-1:-1;4442:2:1;4427:18;;4414:32;4455:35;4414:32;4455:35;:::i;:::-;4509:7;-1:-1:-1;4563:2:1;4548:18;;4535:32;;-1:-1:-1;4614:2:1;4599:18;;4586:32;;-1:-1:-1;4665:3:1;4650:19;;4637:33;;-1:-1:-1;4722:3:1;4707:19;;4694:33;4736:35;4694:33;4736:35;:::i;:::-;4790:7;-1:-1:-1;4844:3:1;4829:19;;4816:33;;-1:-1:-1;4901:3:1;4886:19;;4873:33;4915:32;4873:33;4915:32;:::i;:::-;4966:7;-1:-1:-1;4992:39:1;5026:3;5011:19;;4992:39;:::i;:::-;4982:49;;5078:3;5067:9;5063:19;5050:33;5040:43;;5131:3;5120:9;5116:19;5103:33;5092:44;;4204:938;;;;;;;;;;;;;;:::o;5147:395::-;;;;5293:2;5281:9;5272:7;5268:23;5264:32;5261:2;;;5314:6;5306;5299:22;5261:2;5358:9;5345:23;5377:33;5404:5;5377:33;:::i;:::-;5429:5;5481:2;5466:18;;5453:32;;-1:-1:-1;5532:2:1;5517:18;;;5504:32;;5251:291;-1:-1:-1;;;5251:291:1:o;5547:744::-;;;;;;;;5756:3;5744:9;5735:7;5731:23;5727:33;5724:2;;;5778:6;5770;5763:22;5724:2;5822:9;5809:23;5841:33;5868:5;5841:33;:::i;:::-;5893:5;-1:-1:-1;5945:2:1;5930:18;;5917:32;;-1:-1:-1;5996:2:1;5981:18;;5968:32;;-1:-1:-1;6052:2:1;6037:18;;6024:32;6065;6024;6065;:::i;:::-;6116:7;-1:-1:-1;6142:39:1;6176:3;6161:19;;6142:39;:::i;:::-;6132:49;;6228:3;6217:9;6213:19;6200:33;6190:43;;6280:3;6269:9;6265:19;6252:33;6242:43;;5714:577;;;;;;;;;;:::o;6296:257::-;;6416:2;6404:9;6395:7;6391:23;6387:32;6384:2;;;6437:6;6429;6422:22;6384:2;6474:9;6468:16;6493:30;6517:5;6493:30;:::i;6558:194::-;;6681:2;6669:9;6660:7;6656:23;6652:32;6649:2;;;6702:6;6694;6687:22;6649:2;-1:-1:-1;6730:16:1;;6639:113;-1:-1:-1;6639:113:1:o;6757:255::-;;;6897:2;6885:9;6876:7;6872:23;6868:32;6865:2;;;6918:6;6910;6903:22;6865:2;-1:-1:-1;;6946:16:1;;7002:2;6987:18;;;6981:25;6946:16;;6981:25;;-1:-1:-1;6855:157:1:o;7017:430::-;;7184:6;7178:13;7209:3;7221:129;7235:6;7232:1;7229:13;7221:129;;;7333:4;7317:14;;;7313:25;;7307:32;7294:11;;;7287:53;7250:12;7221:129;;;7368:6;7365:1;7362:13;7359:2;;;7403:3;7394:6;7389:3;7385:16;7378:29;7359:2;-1:-1:-1;7425:16:1;;;;;7154:293;-1:-1:-1;;7154:293:1:o;7452:226::-;7628:42;7616:55;;;;7598:74;;7586:2;7571:18;;7553:125::o;7922:709::-;8259:42;8328:15;;;8310:34;;8380:15;;;;8375:2;8360:18;;8353:43;8427:2;8412:18;;8405:34;;;;8470:2;8455:18;;8448:34;;;;8531:4;8519:17;8513:3;8498:19;;8491:46;8568:3;8553:19;;8546:35;8612:3;8597:19;;8590:35;;;;8236:3;8221:19;;8203:428::o;8636:406::-;8856:42;8925:15;;;8907:34;;8977:15;;;;8972:2;8957:18;;8950:43;9024:2;9009:18;;9002:34;;;;8834:2;8819:18;;8801:241::o;9047:327::-;9231:42;9300:15;;;9282:34;;9352:15;;9347:2;9332:18;;9325:43;9209:2;9194:18;;9176:198::o;9379:297::-;9583:42;9571:55;;;;9553:74;;9658:2;9643:18;;9636:34;9541:2;9526:18;;9508:168::o;9681:355::-;9883:2;9865:21;;;9922:2;9902:18;;;9895:30;9961:33;9956:2;9941:18;;9934:61;10027:2;10012:18;;9855:181::o;10041:353::-;10243:2;10225:21;;;10282:2;10262:18;;;10255:30;10321:31;10316:2;10301:18;;10294:59;10385:2;10370:18;;10215:179::o;10399:353::-;10601:2;10583:21;;;10640:2;10620:18;;;10613:30;10679:31;10674:2;10659:18;;10652:59;10743:2;10728:18;;10573:179::o;10757:339::-;10959:2;10941:21;;;10998:2;10978:18;;;10971:30;11037:17;11032:2;11017:18;;11010:45;11087:2;11072:18;;10931:165::o;11101:399::-;11303:2;11285:21;;;11342:2;11322:18;;;11315:30;11381:34;11376:2;11361:18;;11354:62;11452:5;11447:2;11432:18;;11425:33;11490:3;11475:19;;11275:225::o;11505:349::-;11707:2;11689:21;;;11746:2;11726:18;;;11719:30;11785:27;11780:2;11765:18;;11758:55;11845:2;11830:18;;11679:175::o;11859:344::-;12061:2;12043:21;;;12100:2;12080:18;;;12073:30;12139:22;12134:2;12119:18;;12112:50;12194:2;12179:18;;12033:170::o;12208:177::-;12354:25;;;12342:2;12327:18;;12309:76::o;12390:248::-;12564:25;;;12620:2;12605:18;;12598:34;12552:2;12537:18;;12519:119::o;12643:156::-;12731:42;12724:5;12720:54;12713:5;12710:65;12700:2;;12789:1;12786;12779:12;12700:2;12690:109;:::o;12804:120::-;12892:5;12885:13;12878:21;12871:5;12868:32;12858:2;;12914:1;12911;12904:12

Swarm Source

ipfs://bfb1fc5395a2c1100f26d308a3a83e7e11293886d74b334b0906c1951a14e758

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.