Contract 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3 2

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xa4e4af755f3c309adaa65d8aeed15afca3ae480c69aa358b8a48b6941f2f480fSet Fee To31584242023-03-17 12:01:2480 days 20 hrs agoEnergyfi: Deployer IN  0x7c7eaea389d958bb37a3fd08706ca884d53dc1f30 GLMR0.002447286
0xa088bdecdb24410cd7edc332932377ef9b553008958a7e2f6dc037fdeb1783fbSet Fee To Sette...31584182023-03-17 12:00:1280 days 20 hrs agoEnergyfi: Deployer IN  0x7c7eaea389d958bb37a3fd08706ca884d53dc1f30 GLMR0.002464481
0x89c2e89b2b4c62c5bd9ef8b63a7b2b156e7e7b96954cae1d0be714be629630f6Set Fee To31583852023-03-17 11:53:3080 days 20 hrs ago0x2234503465582539173398636650089386393012 IN  0x7c7eaea389d958bb37a3fd08706ca884d53dc1f30 GLMR0.009211
0x7281d003bb7f15c935625cdf429e7e1cc7d00a3df065e252807933143c17f62aSet Fee To Sette...31583802023-03-17 11:52:3080 days 20 hrs agoEnergyfi: Deployer IN  0x7c7eaea389d958bb37a3fd08706ca884d53dc1f30 GLMR0.002990875
0xf034d8a2580e40a34c719260a84eae8fd5ab86105f55bffc596084dc005ad7b6Set Fee To Sette...31583722023-03-17 11:50:5480 days 20 hrs agoEnergyfi: Deployer IN  0x7c7eaea389d958bb37a3fd08706ca884d53dc1f30 GLMR0.004759353
0xa87b00fbbb9228dcc34079f9b9f8b33595e772b0b685078695dce69b28090db0Create Pair13770842022-07-05 13:57:18335 days 18 hrs agoEnergyfi: Deployer IN  0x7c7eaea389d958bb37a3fd08706ca884d53dc1f30 GLMR0.208055556
0x6ab12eb0c3a87977d6bda76f0d6e140d9a3f4d0792ec703959c7cb8caa0fbc27Create Pair13770732022-07-05 13:55:00335 days 18 hrs agoEnergyfi: Deployer IN  0x7c7eaea389d958bb37a3fd08706ca884d53dc1f30 GLMR0.208056566
0x8b80ca05adccefdeec079117281f00273d39c3847790bf7bef9d702934f798a4Create Pair13770572022-07-05 13:51:30335 days 18 hrs agoEnergyfi: Deployer IN  0x7c7eaea389d958bb37a3fd08706ca884d53dc1f30 GLMR0.208056566
0x79a74340e2295eb5e6912166d1d590355e6a5f16367fc97d9133e4707b8a260cCreate Pair13024402022-06-24 12:47:30346 days 19 hrs agoEnergyfi: Deployer IN  0x7c7eaea389d958bb37a3fd08706ca884d53dc1f30 GLMR0.208056566
0x7983bfe79f919e203c3924d76e21dbf536765ea1624480f799c40cb65533b386Create Pair13024272022-06-24 12:44:54346 days 19 hrs agoEnergyfi: Deployer IN  0x7c7eaea389d958bb37a3fd08706ca884d53dc1f30 GLMR0.208055556
0x104a313d5220524b3c8d1e4c87ddc927ddfd6ea6119e6820f1fa14ec1dc0d43aCreate Pair13024152022-06-24 12:42:30346 days 20 hrs agoEnergyfi: Deployer IN  0x7c7eaea389d958bb37a3fd08706ca884d53dc1f30 GLMR0.208056566
0xa2752971a05ad7fffa53680b81ee1dbb9ae117c824477883af7224fe87f78361Create Pair12961462022-06-23 14:13:06347 days 18 hrs agoEnergyfi: Deployer IN  0x7c7eaea389d958bb37a3fd08706ca884d53dc1f30 GLMR0.208055556
0x587a0c5b9cac499d5a3e246f0355948200abe08c28e2207edf86d33ee4fc6c06Create Pair12961362022-06-23 14:11:00347 days 18 hrs agoEnergyfi: Deployer IN  0x7c7eaea389d958bb37a3fd08706ca884d53dc1f30 GLMR0.208055556
0xe3296810718202dfa789c24f7f01d1f16234a9a019f863f38fb6fd1adca11163Create Pair12961152022-06-23 14:06:12347 days 18 hrs agoEnergyfi: Deployer IN  0x7c7eaea389d958bb37a3fd08706ca884d53dc1f30 GLMR0.208056566
0xf3022a834ca6268e6631facef93353a059584c767a3baddcc99b5d5627061c56Create Pair12960862022-06-23 13:59:00347 days 18 hrs agoEnergyfi: Deployer IN  0x7c7eaea389d958bb37a3fd08706ca884d53dc1f30 GLMR0.208056566
0x9bd45720214a9bd401d1dc42258f124ca3e7c64a6ccdf90575068164fd20e5fcCreate Pair12960622022-06-23 13:54:12347 days 18 hrs agoEnergyfi: Deployer IN  0x7c7eaea389d958bb37a3fd08706ca884d53dc1f30 GLMR0.208056566
0xf8922cd1ce4d4b8d0a742250099b946f0ac10c91fe12b8fff638321d2935577cCreate Pair12960482022-06-23 13:51:18347 days 18 hrs agoEnergyfi: Deployer IN  0x7c7eaea389d958bb37a3fd08706ca884d53dc1f30 GLMR0.210065456
0xc30f02c198b9afbc362459411a6640a9aa90344df1e9c32f3aa7d5bb531c55420x6080604012952802022-06-23 11:07:06347 days 21 hrs agoEnergyfi: Deployer IN  Create: UniswapV2Factory0 GLMR0.2550001755
[ Download CSV Export 
Latest 24 internal transactions
Parent Txn Hash Block From To Value
0x44f215f43fb6a41756c1ee59267180f8628b1f32d6d07102beaa59eefc6bba5929764692023-02-18 16:36:12107 days 16 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0xf499b02a87e991cb3bd5967a037aa820f5b335edfffba10827b74ca12509034e23347272022-11-20 0:59:54198 days 7 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0xfe662e4163d7c8e3b008b784e54846a6f16caa9f0cd6ebef418e2ec06ea1fcb921975562022-10-31 14:26:00217 days 18 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0x97ebcffd45bf61c5251e10b0059218e3b92b3574535502f4a1c7bac98b4c4dff18191582022-09-07 18:21:54271 days 14 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0x84236a15b7e2455a16527711125ba1b58fba7f5e0daff218c08af77619fd7e1116805992022-08-18 20:23:54291 days 12 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0xd84a552e6449ed29f6040e125a3b2748c7ff5a8f0b716e36573671333d5facc116794812022-08-18 16:31:24291 days 16 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0xff553b2352a5ced7c9815cd61a63dcdc532b7f74171b5e934dbd56565b2df3eb16225622022-08-10 11:37:24299 days 21 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0x0c95f946d536e8863d2c484ed289f7723f78de2cbbc9340a00a41fb1221394aa15212212022-07-26 17:25:30314 days 15 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0x996b8e43eb9cbdf179a3d6c845bf0d4aa00a7362d709e0e37131393505e6e08f14820372022-07-20 23:28:18320 days 9 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0xa87b00fbbb9228dcc34079f9b9f8b33595e772b0b685078695dce69b28090db013770842022-07-05 13:57:18335 days 18 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0x6ab12eb0c3a87977d6bda76f0d6e140d9a3f4d0792ec703959c7cb8caa0fbc2713770732022-07-05 13:55:00335 days 18 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0x8b80ca05adccefdeec079117281f00273d39c3847790bf7bef9d702934f798a413770572022-07-05 13:51:30335 days 18 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0x68354f9729b4d4e56aa495c981527337040d6a4b280ccfb41b340f7237d4831913707092022-07-04 15:29:24336 days 17 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0x12c92bcebee31090811d07076f72c5bee482b1a2068f1b1478a5729336a6f30713702452022-07-04 13:47:18336 days 18 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0x116fe9ff16c4047e00b5a9e357185fef7873e7c4fa3df1f3f25d3c6d84131a6b13066022022-06-25 3:37:00346 days 5 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0x79a74340e2295eb5e6912166d1d590355e6a5f16367fc97d9133e4707b8a260c13024402022-06-24 12:47:30346 days 19 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0x7983bfe79f919e203c3924d76e21dbf536765ea1624480f799c40cb65533b38613024272022-06-24 12:44:54346 days 19 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0x104a313d5220524b3c8d1e4c87ddc927ddfd6ea6119e6820f1fa14ec1dc0d43a13024152022-06-24 12:42:30346 days 20 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0xa2752971a05ad7fffa53680b81ee1dbb9ae117c824477883af7224fe87f7836112961462022-06-23 14:13:06347 days 18 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0x587a0c5b9cac499d5a3e246f0355948200abe08c28e2207edf86d33ee4fc6c0612961362022-06-23 14:11:00347 days 18 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0xe3296810718202dfa789c24f7f01d1f16234a9a019f863f38fb6fd1adca1116312961152022-06-23 14:06:12347 days 18 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0xf3022a834ca6268e6631facef93353a059584c767a3baddcc99b5d5627061c5612960862022-06-23 13:59:00347 days 18 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0x9bd45720214a9bd401d1dc42258f124ca3e7c64a6ccdf90575068164fd20e5fc12960622022-06-23 13:54:12347 days 18 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
0xf8922cd1ce4d4b8d0a742250099b946f0ac10c91fe12b8fff638321d2935577c12960482022-06-23 13:51:18347 days 18 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UniswapV2Factory

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at moonbeam.moonscan.io on 2022-06-23
*/

// Sources flattened with hardhat v2.6.8 https://hardhat.org

// File contracts/uniswapv2/interfaces/IUniswapV2Factory.sol
// SPDX-License-Identifer: GPL-3.0

pragma solidity >=0.5.0;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function migrator() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
    function setMigrator(address) external;
}


// File contracts/uniswapv2/libraries/SafeMath.sol


pragma solidity =0.6.12;

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)

library SafeMathUniswap {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, 'ds-math-add-overflow');
    }

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

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


// File contracts/uniswapv2/UniswapV2ERC20.sol


pragma solidity =0.6.12;

contract UniswapV2ERC20 {
    using SafeMathUniswap for uint;

    string public constant name = 'EnergyFiSwap LP Token';
    string public constant symbol = 'ELP';
    uint8 public constant decimals = 18;
    uint  public totalSupply;
    mapping(address => uint) public balanceOf;
    mapping(address => mapping(address => uint)) public allowance;

    bytes32 public DOMAIN_SEPARATOR;
    // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
    mapping(address => uint) public nonces;

    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    constructor() public {
        uint chainId;
        assembly {
            chainId := chainid()
        }
        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes(name)),
                keccak256(bytes('1')),
                chainId,
                address(this)
            )
        );
    }

    function _mint(address to, uint value) internal {
        totalSupply = totalSupply.add(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(address(0), to, value);
    }

    function _burn(address from, uint value) internal {
        balanceOf[from] = balanceOf[from].sub(value);
        totalSupply = totalSupply.sub(value);
        emit Transfer(from, address(0), value);
    }

    function _approve(address owner, address spender, uint value) private {
        allowance[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _transfer(address from, address to, uint value) private {
        balanceOf[from] = balanceOf[from].sub(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(from, to, value);
    }

    function approve(address spender, uint value) external returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transfer(address to, uint value) external returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(address from, address to, uint value) external returns (bool) {
        if (allowance[from][msg.sender] != uint(-1)) {
            allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);
        }
        _transfer(from, to, value);
        return true;
    }

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
        require(deadline >= block.timestamp, 'UniswapV2: EXPIRED');
        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                DOMAIN_SEPARATOR,
                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))
            )
        );
        address recoveredAddress = ecrecover(digest, v, r, s);
        require(recoveredAddress != address(0) && recoveredAddress == owner, 'UniswapV2: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}


// File contracts/uniswapv2/libraries/Math.sol


pragma solidity =0.6.12;

// a library for performing various math operations

library Math {
    function min(uint x, uint y) internal pure returns (uint z) {
        z = x < y ? x : y;
    }

    // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
    function sqrt(uint y) internal pure returns (uint z) {
        if (y > 3) {
            z = y;
            uint x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}


// File contracts/uniswapv2/libraries/UQ112x112.sol


pragma solidity =0.6.12;

// a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))

// range: [0, 2**112 - 1]
// resolution: 1 / 2**112

library UQ112x112 {
    uint224 constant Q112 = 2**112;

    // encode a uint112 as a UQ112x112
    function encode(uint112 y) internal pure returns (uint224 z) {
        z = uint224(y) * Q112; // never overflows
    }

    // divide a UQ112x112 by a uint112, returning a UQ112x112
    function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {
        z = x / uint224(y);
    }
}


// File contracts/uniswapv2/interfaces/IERC20.sol


pragma solidity >=0.5.0;

interface IERC20Uniswap {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}


// File contracts/uniswapv2/interfaces/IUniswapV2Callee.sol


pragma solidity >=0.5.0;

interface IUniswapV2Callee {
    function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) external;
}


// File contracts/uniswapv2/UniswapV2Pair.sol


pragma solidity =0.6.12;






interface IMigrator {
    // Return the desired amount of liquidity token that the migrator wants.
    function desiredLiquidity() external view returns (uint256);
}

contract UniswapV2Pair is UniswapV2ERC20 {
    using SafeMathUniswap  for uint;
    using UQ112x112 for uint224;

    uint public constant MINIMUM_LIQUIDITY = 10**3;
    bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)')));

    address public factory;
    address public token0;
    address public token1;

    uint112 private reserve0;           // uses single storage slot, accessible via getReserves
    uint112 private reserve1;           // uses single storage slot, accessible via getReserves
    uint32  private blockTimestampLast; // uses single storage slot, accessible via getReserves

    uint public price0CumulativeLast;
    uint public price1CumulativeLast;
    uint public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event

    uint private unlocked = 1;
    modifier lock() {
        require(unlocked == 1, 'UniswapV2: LOCKED');
        unlocked = 0;
        _;
        unlocked = 1;
    }

    function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {
        _reserve0 = reserve0;
        _reserve1 = reserve1;
        _blockTimestampLast = blockTimestampLast;
    }

    function _safeTransfer(address token, address to, uint value) private {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'UniswapV2: TRANSFER_FAILED');
    }

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

    constructor() public {
        factory = msg.sender;
    }

    // called once by the factory at time of deployment
    function initialize(address _token0, address _token1) external {
        require(msg.sender == factory, 'UniswapV2: FORBIDDEN'); // sufficient check
        token0 = _token0;
        token1 = _token1;
    }

    // update reserves and, on the first call per block, price accumulators
    function _update(uint balance0, uint balance1, uint112 _reserve0, uint112 _reserve1) private {
        require(balance0 <= uint112(-1) && balance1 <= uint112(-1), 'UniswapV2: OVERFLOW');
        uint32 blockTimestamp = uint32(block.timestamp % 2**32);
        uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired
        if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {
            // * never overflows, and + overflow is desired
            price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;
            price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;
        }
        reserve0 = uint112(balance0);
        reserve1 = uint112(balance1);
        blockTimestampLast = blockTimestamp;
        emit Sync(reserve0, reserve1);
    }

    // if fee is on, mint liquidity equivalent to 1/6th of the growth in sqrt(k)
    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = IUniswapV2Factory(factory).feeTo();
        feeOn = feeTo != address(0);
        uint _kLast = kLast; // gas savings
        if (feeOn) {
            if (_kLast != 0) {
                uint rootK = Math.sqrt(uint(_reserve0).mul(_reserve1));
                uint rootKLast = Math.sqrt(_kLast);
                if (rootK > rootKLast) {
                    uint numerator = totalSupply.mul(rootK.sub(rootKLast));
                    uint denominator = rootK.mul(5).add(rootKLast);
                    uint liquidity = numerator / denominator;
                    if (liquidity > 0) _mint(feeTo, liquidity);
                }
            }
        } else if (_kLast != 0) {
            kLast = 0;
        }
    }

    // this low-level function should be called from a contract which performs important safety checks
    function mint(address to) external lock returns (uint liquidity) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        uint balance0 = IERC20Uniswap(token0).balanceOf(address(this));
        uint balance1 = IERC20Uniswap(token1).balanceOf(address(this));
        uint amount0 = balance0.sub(_reserve0);
        uint amount1 = balance1.sub(_reserve1);

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        if (_totalSupply == 0) {
            address migrator = IUniswapV2Factory(factory).migrator();
            if (msg.sender == migrator) {
                liquidity = IMigrator(migrator).desiredLiquidity();
                require(liquidity > 0 && liquidity != uint256(-1), "Bad desired liquidity");
            } else {
                require(migrator == address(0), "Must not have migrator");
                liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);
                _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens
            }
        } else {
            liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1);
        }
        require(liquidity > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED');
        _mint(to, liquidity);

        _update(balance0, balance1, _reserve0, _reserve1);
        if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date
        emit Mint(msg.sender, amount0, amount1);
    }

    // this low-level function should be called from a contract which performs important safety checks
    function burn(address to) external lock returns (uint amount0, uint amount1) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        address _token0 = token0;                                // gas savings
        address _token1 = token1;                                // gas savings
        uint balance0 = IERC20Uniswap(_token0).balanceOf(address(this));
        uint balance1 = IERC20Uniswap(_token1).balanceOf(address(this));
        uint liquidity = balanceOf[address(this)];

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        amount0 = liquidity.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution
        amount1 = liquidity.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution
        require(amount0 > 0 && amount1 > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED');
        _burn(address(this), liquidity);
        _safeTransfer(_token0, to, amount0);
        _safeTransfer(_token1, to, amount1);
        balance0 = IERC20Uniswap(_token0).balanceOf(address(this));
        balance1 = IERC20Uniswap(_token1).balanceOf(address(this));

        _update(balance0, balance1, _reserve0, _reserve1);
        if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date
        emit Burn(msg.sender, amount0, amount1, to);
    }

    // this low-level function should be called from a contract which performs important safety checks
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external lock {
        require(amount0Out > 0 || amount1Out > 0, 'UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'UniswapV2: INSUFFICIENT_LIQUIDITY');

        uint balance0;
        uint balance1;
        { // scope for _token{0,1}, avoids stack too deep errors
        address _token0 = token0;
        address _token1 = token1;
        require(to != _token0 && to != _token1, 'UniswapV2: INVALID_TO');
        if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens
        if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens
        if (data.length > 0) IUniswapV2Callee(to).uniswapV2Call(msg.sender, amount0Out, amount1Out, data);
        balance0 = IERC20Uniswap(_token0).balanceOf(address(this));
        balance1 = IERC20Uniswap(_token1).balanceOf(address(this));
        }
        uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0;
        uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0;
        require(amount0In > 0 || amount1In > 0, 'UniswapV2: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(3));
        uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'UniswapV2: K');
        }

        _update(balance0, balance1, _reserve0, _reserve1);
        emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to);
    }

    // force balances to match reserves
    function skim(address to) external lock {
        address _token0 = token0; // gas savings
        address _token1 = token1; // gas savings
        _safeTransfer(_token0, to, IERC20Uniswap(_token0).balanceOf(address(this)).sub(reserve0));
        _safeTransfer(_token1, to, IERC20Uniswap(_token1).balanceOf(address(this)).sub(reserve1));
    }

    // force reserves to match balances
    function sync() external lock {
        _update(IERC20Uniswap(token0).balanceOf(address(this)), IERC20Uniswap(token1).balanceOf(address(this)), reserve0, reserve1);
    }
}


// File contracts/uniswapv2/UniswapV2Factory.sol


pragma solidity =0.6.12;


contract UniswapV2Factory is IUniswapV2Factory {
    address public override feeTo;
    address public override feeToSetter;
    address public override migrator;

    mapping(address => mapping(address => address)) public override getPair;
    address[] public override allPairs;

    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    constructor(address _feeToSetter) public {
        feeToSetter = _feeToSetter;
    }

    function allPairsLength() external override view returns (uint) {
        return allPairs.length;
    }

    function pairCodeHash() external pure returns (bytes32) {
        return keccak256(type(UniswapV2Pair).creationCode);
    }

    function createPair(address tokenA, address tokenB) external override returns (address pair) {
        require(tokenA != tokenB, 'UniswapV2: IDENTICAL_ADDRESSES');
        (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'UniswapV2: ZERO_ADDRESS');
        require(getPair[token0][token1] == address(0), 'UniswapV2: PAIR_EXISTS'); // single check is sufficient
        bytes memory bytecode = type(UniswapV2Pair).creationCode;
        bytes32 salt = keccak256(abi.encodePacked(token0, token1));
        assembly {
            pair := create2(0, add(bytecode, 32), mload(bytecode), salt)
        }
        UniswapV2Pair(pair).initialize(token0, token1);
        getPair[token0][token1] = pair;
        getPair[token1][token0] = pair; // populate mapping in the reverse direction
        allPairs.push(pair);
        emit PairCreated(token0, token1, pair, allPairs.length);
    }

    function setFeeTo(address _feeTo) external override {
        require(msg.sender == feeToSetter, 'UniswapV2: FORBIDDEN');
        feeTo = _feeTo;
    }

    function setMigrator(address _migrator) external override {
        require(msg.sender == feeToSetter, 'UniswapV2: FORBIDDEN');
        migrator = _migrator;
    }

    function setFeeToSetter(address _feeToSetter) external override {
        require(msg.sender == feeToSetter, 'UniswapV2: FORBIDDEN');
        feeToSetter = _feeToSetter;
    }

}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_feeToSetter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"PairCreated","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allPairsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"createPair","outputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeToSetter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"getPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"migrator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairCodeHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_feeTo","type":"address"}],"name":"setFeeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeToSetter","type":"address"}],"name":"setFeeToSetter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_migrator","type":"address"}],"name":"setMigrator","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051612c71380380612c718339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055612c0e806100636000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80637cd07e47116100715780637cd07e47146101395780639aab924814610141578063a2e74af614610149578063c9c653961461016f578063e6a439051461019d578063f46901ed146101cb576100a9565b8063017e7e58146100ae578063094b7415146100d25780631e3dd18b146100da57806323cf3118146100f7578063574f2ba31461011f575b600080fd5b6100b66101f1565b604080516001600160a01b039092168252519081900360200190f35b6100b6610200565b6100b6600480360360208110156100f057600080fd5b503561020f565b61011d6004803603602081101561010d57600080fd5b50356001600160a01b0316610236565b005b6101276102ae565b60408051918252519081900360200190f35b6100b66102b4565b6101276102c3565b61011d6004803603602081101561015f57600080fd5b50356001600160a01b03166102f5565b6100b66004803603604081101561018557600080fd5b506001600160a01b038135811691602001351661036d565b6100b6600480360360408110156101b357600080fd5b506001600160a01b0381358116916020013516610698565b61011d600480360360208110156101e157600080fd5b50356001600160a01b03166106be565b6000546001600160a01b031681565b6001546001600160a01b031681565b6004818154811061021c57fe5b6000918252602090912001546001600160a01b0316905081565b6001546001600160a01b0316331461028c576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60045490565b6002546001600160a01b031681565b6000604051806020016102d590610736565b6020820181038252601f19601f8201166040525080519060200120905090565b6001546001600160a01b0316331461034b576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000816001600160a01b0316836001600160a01b031614156103d6576040805162461bcd60e51b815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b600080836001600160a01b0316856001600160a01b0316106103f95783856103fc565b84845b90925090506001600160a01b03821661045c576040805162461bcd60e51b815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b6001600160a01b038281166000908152600360209081526040808320858516845290915290205416156104cf576040805162461bcd60e51b8152602060048201526016602482015275556e697377617056323a20504149525f45584953545360501b604482015290519081900360640190fd5b6060604051806020016104e190610736565b6020820181038252601f19601f8201166040525090506000838360405160200180836001600160a01b031660601b8152601401826001600160a01b031660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f59450846001600160a01b031663485cc95585856040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b0316815260200192505050600060405180830381600087803b1580156105ae57600080fd5b505af11580156105c2573d6000803e3d6000fd5b505050506001600160a01b0384811660008181526003602081815260408084208987168086529083528185208054978d166001600160a01b031998891681179091559383528185208686528352818520805488168517905560048054600181018255958190527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b60036020908152600092835260408084209091529082529020546001600160a01b031681565b6001546001600160a01b03163314610714576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b612495806107448339019056fe60806040526001600c5534801561001557600080fd5b50604080518082018252601581527f456e65726779466953776170204c5020546f6b656e00000000000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ffbc9636472fb50d9f458e9fd1e850503c3eb7640ec810d41db11922e60a42ca7818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b0319163317905561237a8061011b6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610acb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610afc565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b26565b604080519115158252519081900360200190f35b610339610b3d565b604080516001600160a01b039092168252519081900360200190f35b61035d610b4c565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b52565b61035d610be6565b6103b5610c0a565b6040805160ff9092168252519081900360200190f35b61035d610c0f565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c15565b61035d610c99565b61035d610c9f565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610ca5565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316611121565b61035d611133565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316611139565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b031661114b565b6040805192835260208301919091528051918290030190f35b6102446114df565b61031d600480360360408110156104e857600080fd5b506001600160a01b0381351690602001356114fe565b61035d61150b565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b0316611511565b610339611683565b610339611692565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356116a1565b61035d600480360360408110156105a357600080fd5b506001600160a01b03813581169160200135166118a3565b61023a6118c0565b600c5460011461060e576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55841515806106215750600084115b61065c5760405162461bcd60e51b815260040180806020018281038252602581526020018061228b6025913960400191505060405180910390fd5b600080610667610afc565b5091509150816001600160701b03168710801561068c5750806001600160701b031686105b6106c75760405162461bcd60e51b81526004018080602001828103825260218152602001806122d46021913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107055750806001600160a01b0316896001600160a01b031614155b61074e576040805162461bcd60e51b8152602060048201526015602482015274556e697377617056323a20494e56414c49445f544f60581b604482015290519081900360640190fd5b8a1561075f5761075f828a8d611a22565b891561077057610770818a8c611a22565b861561082257886001600160a01b03166310d1e85c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561086857600080fd5b505afa15801561087c573d6000803e3d6000fd5b505050506040513d602081101561089257600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108de57600080fd5b505afa1580156108f2573d6000803e3d6000fd5b505050506040513d602081101561090857600080fd5b5051925060009150506001600160701b0385168a9003831161092b57600061093a565b89856001600160701b03160383035b9050600089856001600160701b0316038311610957576000610966565b89856001600160701b03160383035b905060008211806109775750600081115b6109b25760405162461bcd60e51b81526004018080602001828103825260248152602001806122b06024913960400191505060405180910390fd5b60006109d46109c2846003611bbc565b6109ce876103e8611bbc565b90611c1f565b905060006109e66109c2846003611bbc565b9050610a0b620f4240610a056001600160701b038b8116908b16611bbc565b90611bbc565b610a158383611bbc565b1015610a57576040805162461bcd60e51b815260206004820152600c60248201526b556e697377617056323a204b60a01b604482015290519081900360640190fd5b5050610a6584848888611c6f565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601581526020017422b732b933bca334a9bbb0b8102628102a37b5b2b760591b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b33338484611e2e565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610bd1576001600160a01b0384166000908152600260209081526040808320338452909152902054610bac9083611c1f565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610bdc848484611e90565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610c6b576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610cf2576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c81905580610d02610afc565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d5657600080fd5b505afa158015610d6a573d6000803e3d6000fd5b505050506040513d6020811015610d8057600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610dd357600080fd5b505afa158015610de7573d6000803e3d6000fd5b505050506040513d6020811015610dfd57600080fd5b505190506000610e16836001600160701b038716611c1f565b90506000610e2d836001600160701b038716611c1f565b90506000610e3b8787611f3e565b600054909150806110125760055460408051637cd07e4760e01b815290516000926001600160a01b031691637cd07e47916004808301926020929190829003018186803b158015610e8b57600080fd5b505afa158015610e9f573d6000803e3d6000fd5b505050506040513d6020811015610eb557600080fd5b50519050336001600160a01b0382161415610f9057806001600160a01b03166340dc0e376040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0357600080fd5b505afa158015610f17573d6000803e3d6000fd5b505050506040513d6020811015610f2d57600080fd5b505199508915801590610f4257506000198a14155b610f8b576040805162461bcd60e51b81526020600482015260156024820152744261642064657369726564206c697175696469747960581b604482015290519081900360640190fd5b61100c565b6001600160a01b03811615610fe5576040805162461bcd60e51b815260206004820152601660248201527526bab9ba103737ba103430bb329036b4b3b930ba37b960511b604482015290519081900360640190fd5b610ffd6103e86109ce610ff88888611bbc565b61207e565b995061100c60006103e86120d0565b50611055565b6110526001600160701b0389166110298684611bbc565b8161103057fe5b046001600160701b0389166110458685611bbc565b8161104c57fe5b0461215a565b98505b600089116110945760405162461bcd60e51b815260040180806020018281038252602881526020018061231d6028913960400191505060405180910390fd5b61109e8a8a6120d0565b6110aa86868a8a611c6f565b81156110d4576008546110d0906001600160701b0380821691600160701b900416611bbc565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114611199576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c819055806111a9610afc565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561120557600080fd5b505afa158015611219573d6000803e3d6000fd5b505050506040513d602081101561122f57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561127d57600080fd5b505afa158015611291573d6000803e3d6000fd5b505050506040513d60208110156112a757600080fd5b5051306000908152600160205260408120549192506112c68888611f3e565b600054909150806112d78487611bbc565b816112de57fe5b049a50806112ec8486611bbc565b816112f357fe5b04995060008b118015611306575060008a115b6113415760405162461bcd60e51b81526004018080602001828103825260288152602001806122f56028913960400191505060405180910390fd5b61134b3084612172565b611356878d8d611a22565b611361868d8c611a22565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b1580156113a757600080fd5b505afa1580156113bb573d6000803e3d6000fd5b505050506040513d60208110156113d157600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561141d57600080fd5b505afa158015611431573d6000803e3d6000fd5b505050506040513d602081101561144757600080fd5b5051935061145785858b8b611c6f565b81156114815760085461147d906001600160701b0380821691600160701b900416611bbc565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b604051806040016040528060038152602001620454c560ec1b81525081565b6000610b33338484611e90565b6103e881565b600c5460011461155c576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926116059285928792611600926001600160701b03169185916370a0823191602480820192602092909190829003018186803b1580156115ce57600080fd5b505afa1580156115e2573d6000803e3d6000fd5b505050506040513d60208110156115f857600080fd5b505190611c1f565b611a22565b61167981846116006008600e9054906101000a90046001600160701b03166001600160701b0316856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156115ce57600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b428410156116eb576040805162461bcd60e51b8152602060048201526012602482015271155b9a5cddd85c158c8e881156141254915160721b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611806573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061183c5750886001600160a01b0316816001600160a01b0316145b61188d576040805162461bcd60e51b815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611898898989611e2e565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c5460011461190b576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b81523060048201529051611a1b926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561195c57600080fd5b505afa158015611970573d6000803e3d6000fd5b505050506040513d602081101561198657600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156119d357600080fd5b505afa1580156119e7573d6000803e3d6000fd5b505050506040513d60208110156119fd57600080fd5b50516008546001600160701b0380821691600160701b900416611c6f565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310611acf5780518252601f199092019160209182019101611ab0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b31576040519150601f19603f3d011682016040523d82523d6000602084013e611b36565b606091505b5091509150818015611b64575080511580611b645750808060200190516020811015611b6157600080fd5b50515b611bb5576040805162461bcd60e51b815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b6000811580611bd757505080820282828281611bd457fe5b04145b610b37576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b37576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611c8d57506001600160701b038311155b611cd4576040805162461bcd60e51b8152602060048201526013602482015272556e697377617056323a204f564552464c4f5760681b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611d0457506001600160701b03841615155b8015611d1857506001600160701b03831615155b15611d83578063ffffffff16611d4085611d3186612204565b6001600160e01b031690612216565b600980546001600160e01b03929092169290920201905563ffffffff8116611d6b84611d3187612204565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611eb39082611c1f565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611ee2908261223b565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8f57600080fd5b505afa158015611fa3573d6000803e3d6000fd5b505050506040513d6020811015611fb957600080fd5b5051600b546001600160a01b03821615801594509192509061206a578015612065576000611ff6610ff86001600160701b03888116908816611bbc565b905060006120038361207e565b90508082111561206257600061202561201c8484611c1f565b60005490611bbc565b9050600061203e83612038866005611bbc565b9061223b565b9050600081838161204b57fe5b049050801561205e5761205e87826120d0565b5050505b50505b612076565b8015612076576000600b555b505092915050565b600060038211156120c1575080600160028204015b818110156120bb578091506002818285816120aa57fe5b0401816120b357fe5b049050612093565b506120cb565b81156120cb575060015b919050565b6000546120dd908261223b565b60009081556001600160a01b038316815260016020526040902054612102908261223b565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612169578161216b565b825b9392505050565b6001600160a01b0382166000908152600160205260409020546121959082611c1f565b6001600160a01b038316600090815260016020526040812091909155546121bc9082611c1f565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161223357fe5b049392505050565b80820182811015610b37576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a264697066735822122070cad5cecc5e714c8acf70d5438c1595f47fd57057d33f81a54a065ccd9d6b9064736f6c634300060c0033a2646970667358221220ddb0495e80cb8f2d8d38f5df16e2b688600bdaf6855735a1f49aa443c6d1890d64736f6c634300060c0033000000000000000000000000b024515b98bda6550c0dadd24af1bd71b0b8a28b

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

000000000000000000000000b024515b98bda6550c0dadd24af1bd71b0b8a28b

-----Decoded View---------------
Arg [0] : _feeToSetter (address): 0xb024515b98bda6550c0dadd24af1bd71b0b8a28b

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000b024515b98bda6550c0dadd24af1bd71b0b8a28b


Deployed ByteCode Sourcemap

18088:2226:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18142:29;;;:::i;:::-;;;;-1:-1:-1;;;;;18142:29:0;;;;;;;;;;;;;;18178:35;;;:::i;18339:34::-;;;;;;;;;;;;;;;;-1:-1:-1;18339:34:0;;:::i;19957:166::-;;;;;;;;;;;;;;;;-1:-1:-1;19957:166:0;-1:-1:-1;;;;;19957:166:0;;:::i;:::-;;18570:105;;;:::i;:::-;;;;;;;;;;;;;;;;18220:32;;;:::i;18683:125::-;;;:::i;20131:178::-;;;;;;;;;;;;;;;;-1:-1:-1;20131:178:0;-1:-1:-1;;;;;20131:178:0;;:::i;18816:971::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18816:971:0;;;;;;;;;;:::i;18261:71::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18261:71:0;;;;;;;;;;:::i;19795:154::-;;;;;;;;;;;;;;;;-1:-1:-1;19795:154:0;-1:-1:-1;;;;;19795:154:0;;:::i;18142:29::-;;;-1:-1:-1;;;;;18142:29:0;;:::o;18178:35::-;;;-1:-1:-1;;;;;18178:35:0;;:::o;18339:34::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18339:34:0;;-1:-1:-1;18339:34:0;:::o;19957:166::-;20048:11;;-1:-1:-1;;;;;20048:11:0;20034:10;:25;20026:58;;;;;-1:-1:-1;;;20026:58:0;;;;;;;;;;;;-1:-1:-1;;;20026:58:0;;;;;;;;;;;;;;;20095:8;:20;;-1:-1:-1;;;;;;20095:20:0;-1:-1:-1;;;;;20095:20:0;;;;;;;;;;19957:166::o;18570:105::-;18652:8;:15;18570:105;:::o;18220:32::-;;;-1:-1:-1;;;;;18220:32:0;;:::o;18683:125::-;18730:7;18767:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;18757:43;;;;;;18750:50;;18683:125;:::o;20131:178::-;20228:11;;-1:-1:-1;;;;;20228:11:0;20214:10;:25;20206:58;;;;;-1:-1:-1;;;20206:58:0;;;;;;;;;;;;-1:-1:-1;;;20206:58:0;;;;;;;;;;;;;;;20275:11;:26;;-1:-1:-1;;;;;;20275:26:0;-1:-1:-1;;;;;20275:26:0;;;;;;;;;;20131:178::o;18816:971::-;18895:12;18938:6;-1:-1:-1;;;;;18928:16:0;:6;-1:-1:-1;;;;;18928:16:0;;;18920:59;;;;;-1:-1:-1;;;18920:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18991:14;19007;19034:6;-1:-1:-1;;;;;19025:15:0;:6;-1:-1:-1;;;;;19025:15:0;;:53;;19063:6;19071;19025:53;;;19044:6;19052;19025:53;18990:88;;-1:-1:-1;18990:88:0;-1:-1:-1;;;;;;19097:20:0;;19089:56;;;;;-1:-1:-1;;;19089:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19164:15:0;;;19199:1;19164:15;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:37;19156:72;;;;;-1:-1:-1;;;19156:72:0;;;;;;;;;;;;-1:-1:-1;;;19156:72:0;;;;;;;;;;;;;;;19269:21;19293:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;19269:56;;19336:12;19378:6;19386;19361:32;;;;;;-1:-1:-1;;;;;19361:32:0;;;;;;;;-1:-1:-1;;;;;19361:32:0;;;;;;;;;;;;;;;;;;;;;;;19351:43;;;;;;19336:58;;19484:4;19473:8;19467:15;19462:2;19452:8;19448:17;19445:1;19437:52;19429:60;;19524:4;-1:-1:-1;;;;;19510:30:0;;19541:6;19549;19510:46;;;;;;;;;;;;;-1:-1:-1;;;;;19510:46:0;;;;;;-1:-1:-1;;;;;19510:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;19567:15:0;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:30;;;;;-1:-1:-1;;;;;;19567:30:0;;;;;;;;19608:15;;;;;;:23;;;;;;;;:30;;;;;;;;19694:8;:19;;-1:-1:-1;19694:19:0;;;;;;;;;;;;;;;;;;;;;;19763:15;;19729:50;;;;;;;;;;;;;;;;;;;;;;18816:971;;;;;;;;:::o;18261:71::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18261:71:0;;:::o;19795:154::-;19880:11;;-1:-1:-1;;;;;19880:11:0;19866:10;:25;19858:58;;;;;-1:-1:-1;;;19858:58:0;;;;;;;;;;;;-1:-1:-1;;;19858:58:0;;;;;;;;;;;;;;;19927:5;:14;;-1:-1:-1;;;;;;19927:14:0;-1:-1:-1;;;;;19927:14:0;;;;;;;;;;19795:154::o;-1:-1:-1:-;;;;;;;;:::o

Swarm Source

ipfs://ddb0495e80cb8f2d8d38f5df16e2b688600bdaf6855735a1f49aa443c6d1890d
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.