Contract 0x16B33336D87687E4a8DcBc30416688c581b42F7C

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xff3efa0a1ebe097da014b5d3736eeb1bdf56cf526242dfc19ed87d3408e9722eApprove31165502023-03-10 15:15:0611 days 8 hrs ago0x7f05d26871a240b87b082fa9d6d4776c16f0d7dd IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.002452037
0x80e92fbf3c465f5332739a79680e87d6e24fc753f6cff938b9bb88d09876e3a5Approve31165492023-03-10 15:14:5411 days 8 hrs ago0x7f05d26871a240b87b082fa9d6d4776c16f0d7dd IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.002453255
0xbaef805a24e5e021e453496b7a8dba4b611861b1bbf0adcb5c2fad30dbbc1c33Approve26651042023-01-05 16:14:2475 days 8 hrs ago0x7f05d26871a240b87b082fa9d6d4776c16f0d7dd IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.004713863
0x88bb10829bf8753e3a8929b6d435aca30b2ce6c946fd8f6ce4c2514facc5ed21Approve26607682023-01-05 1:35:0675 days 22 hrs ago0xeb250569e21859a3579fcff91a9a06b6b4fa1880 IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.002453255
0x1a32e3f75ed64745aaeffb3916c5ad26cfaa28082b95f5a88f6f2c799d27baa6Approve26607682023-01-05 1:35:0675 days 22 hrs ago0xeb250569e21859a3579fcff91a9a06b6b4fa1880 IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.002452037
0x58972f55aedda92a26bfc000c8f50508bfebe69fb21e412fa1604eaf65bb3168Approve25279622022-12-17 7:49:3694 days 16 hrs ago0xb397703d6773b28b23b61bea410e74435ff40588 IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.004713863
0x2418afaf44019dd28749f6bff068a2a7b2e5fcca748c7c234fc5d9e99192b6c9Approve25279332022-12-17 7:43:4294 days 16 hrs ago0xfab23321bd4d8a1ef97e2a0354a41f00a22b43a2 IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.004713863
0xd7c6a56447e64845a4c3c721208853ab1a017cbc1dc3575827492936e0ced31cApprove25215422022-12-16 10:06:2495 days 14 hrs ago0x335b43ca5cb2635d515b6331039cd7277d0a3a6e IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.002452037
0x89a2aae61a79622ce91d0ae3755e80be5afca9e8aa8cb875a3d2bb650910dc41Approve25215272022-12-16 10:03:2495 days 14 hrs ago0x335b43ca5cb2635d515b6331039cd7277d0a3a6e IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.002453255
0xcd9c2958b421c1753be5d5b5a6331e45b6197b287c56fa41803c52d8a40ecb8dApprove24860322022-12-11 8:49:06100 days 15 hrs ago0x335b43ca5cb2635d515b6331039cd7277d0a3a6e IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.004713863
0x8d8f5491a51f607ad860616b35c72e2b7841e33d306577e332567b6fff2424ebApprove24785602022-12-10 7:36:20101 days 16 hrs ago0xfb1577a7fd217807af7528a83928e351bbe46f4f IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.004713863
0x04fc47a92262718b3aeca01c91712f562f742198f07e9efdbcd513076d5985deApprove24737522022-12-09 15:19:42102 days 8 hrs ago0x6feb12b85f28dde5447abc58756d0f592b77c623 IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.004713863
0x0eec7573e5bc709a2af69e3e3a36c029f8d7104ec7d5ccb1d84df86870f55e53Approve24576852022-12-07 9:00:42104 days 15 hrs ago0x6feb12b85f28dde5447abc58756d0f592b77c623 IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.004715081
0xbcc411d1cb169d813b107c4c6e57419be57ed5d5e519f2b047725dea522f6b55Approve24215242022-12-02 6:30:24109 days 17 hrs ago0x335b43ca5cb2635d515b6331039cd7277d0a3a6e IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.004715081
0xb39c912392bf97003c953b3ad3a926f5f344ceb048f5b9fb3f365bc31d046b83Approve24010332022-11-29 8:55:48112 days 15 hrs ago0x7f05d26871a240b87b082fa9d6d4776c16f0d7dd IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.004715081
0xea48990c92ea38c2e506dcc3716cd093d9a75f775ff7f9bbf1241571fdcec379Approve23909542022-11-27 22:52:06114 days 1 hr ago0x3ef93b6a68fcdde7c2b3dc817d54221fa829d4a7 IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.004713863
0x9b0ab5c4f284a7d35d093ffce1e65167a3069feab2ea58f2b8e1cad815d1f6cfApprove23906652022-11-27 21:53:24114 days 2 hrs ago0x3ef93b6a68fcdde7c2b3dc817d54221fa829d4a7 IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.004715081
0xb66d6de5006374418bc2822c037415ccbec8195d48ce9adbc5335a340a07159fApprove23477802022-11-21 21:00:06120 days 3 hrs ago0x00a02d774ce6047a473eb4b65d35b31a03a8fbb9 IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.004713863
0xa55c518d5b5e214b18e05ee80d43ae6211b9a1af7b28c9f575fa009f30fdbaf4Approve23445162022-11-21 9:58:54120 days 14 hrs ago0x1be64cd8101c148b003f03330f5653e0dc8c24f5 IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.004713863
0xc7171ea11d7ebd196f75d204fef0067209e962e56d595a58f706c48940242e23Approve23336372022-11-19 21:19:30122 days 2 hrs ago0x00a02d774ce6047a473eb4b65d35b31a03a8fbb9 IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.0046454
0x48b834fe74665afa8867fb5a7af46f6e0156e94c84709f1426e945910e6fd232Approve22960572022-11-14 13:56:36127 days 10 hrs ago0x4c5cadf9352e6535c26ceb5cfe77e68e1ddc8861 IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.0046454
0xb420c972ac7f7cd241a06448ea9817d3343ec466494d6d476e0eb431a295cc4dApprove22853512022-11-13 1:26:12128 days 22 hrs ago0xdffc0ca6e396e7b1576bdd608108df0e5b4a473b IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.004713863
0x69b51c3d5bc8421cdb5f7559c76191338e79dd2e1c099702be26f9b31dc3765eApprove22686972022-11-10 16:54:48131 days 7 hrs ago0x1be64cd8101c148b003f03330f5653e0dc8c24f5 IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.004715081
0x43739a502c8fa67640e5b97be12cfc8e2f8076d10d9a36661e2739e11b98a8c1Approve22680762022-11-10 14:47:00131 days 9 hrs ago0xfab23321bd4d8a1ef97e2a0354a41f00a22b43a2 IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.004715081
0x13c0c93f92ac1218707b9db0bbcbfc10920d3708ad435155e8dd908ca0e6c9b5Approve22635142022-11-09 23:07:00132 days 1 hr ago0xfb1577a7fd217807af7528a83928e351bbe46f4f IN  0x16b33336d87687e4a8dcbc30416688c581b42f7c0 GLMR0.004715081
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x587a0c5b9cac499d5a3e246f0355948200abe08c28e2207edf86d33ee4fc6c0612961362022-06-23 14:11:00271 days 10 hrs ago 0x7c7eaea389d958bb37a3fd08706ca884d53dc1f3  Contract Creation0 GLMR
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xAA35b63af90996cdF4821d0e18db4E5A1c66b11f

Contract Name:
UniswapV2Pair

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-28
*/

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

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

// SPDX-License-Identifier: GPL-3.0

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/IUniswapV2Factory.sol



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/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);
    }
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040526001600c5534801561001557600080fd5b50604080518082018252601581527f456e65726779466953776170204c5020546f6b656e00000000000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ffbc9636472fb50d9f458e9fd1e850503c3eb7640ec810d41db11922e60a42ca7818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b0319163317905561237a8061011b6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610acb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610afc565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b26565b604080519115158252519081900360200190f35b610339610b3d565b604080516001600160a01b039092168252519081900360200190f35b61035d610b4c565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b52565b61035d610be6565b6103b5610c0a565b6040805160ff9092168252519081900360200190f35b61035d610c0f565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c15565b61035d610c99565b61035d610c9f565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610ca5565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316611121565b61035d611133565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316611139565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b031661114b565b6040805192835260208301919091528051918290030190f35b6102446114df565b61031d600480360360408110156104e857600080fd5b506001600160a01b0381351690602001356114fe565b61035d61150b565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b0316611511565b610339611683565b610339611692565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356116a1565b61035d600480360360408110156105a357600080fd5b506001600160a01b03813581169160200135166118a3565b61023a6118c0565b600c5460011461060e576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55841515806106215750600084115b61065c5760405162461bcd60e51b815260040180806020018281038252602581526020018061228b6025913960400191505060405180910390fd5b600080610667610afc565b5091509150816001600160701b03168710801561068c5750806001600160701b031686105b6106c75760405162461bcd60e51b81526004018080602001828103825260218152602001806122d46021913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107055750806001600160a01b0316896001600160a01b031614155b61074e576040805162461bcd60e51b8152602060048201526015602482015274556e697377617056323a20494e56414c49445f544f60581b604482015290519081900360640190fd5b8a1561075f5761075f828a8d611a22565b891561077057610770818a8c611a22565b861561082257886001600160a01b03166310d1e85c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561086857600080fd5b505afa15801561087c573d6000803e3d6000fd5b505050506040513d602081101561089257600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108de57600080fd5b505afa1580156108f2573d6000803e3d6000fd5b505050506040513d602081101561090857600080fd5b5051925060009150506001600160701b0385168a9003831161092b57600061093a565b89856001600160701b03160383035b9050600089856001600160701b0316038311610957576000610966565b89856001600160701b03160383035b905060008211806109775750600081115b6109b25760405162461bcd60e51b81526004018080602001828103825260248152602001806122b06024913960400191505060405180910390fd5b60006109d46109c2846003611bbc565b6109ce876103e8611bbc565b90611c1f565b905060006109e66109c2846003611bbc565b9050610a0b620f4240610a056001600160701b038b8116908b16611bbc565b90611bbc565b610a158383611bbc565b1015610a57576040805162461bcd60e51b815260206004820152600c60248201526b556e697377617056323a204b60a01b604482015290519081900360640190fd5b5050610a6584848888611c6f565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280601581526020017422b732b933bca334a9bbb0b8102628102a37b5b2b760591b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b33338484611e2e565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610bd1576001600160a01b0384166000908152600260209081526040808320338452909152902054610bac9083611c1f565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610bdc848484611e90565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610c6b576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610cf2576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c81905580610d02610afc565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d5657600080fd5b505afa158015610d6a573d6000803e3d6000fd5b505050506040513d6020811015610d8057600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610dd357600080fd5b505afa158015610de7573d6000803e3d6000fd5b505050506040513d6020811015610dfd57600080fd5b505190506000610e16836001600160701b038716611c1f565b90506000610e2d836001600160701b038716611c1f565b90506000610e3b8787611f3e565b600054909150806110125760055460408051637cd07e4760e01b815290516000926001600160a01b031691637cd07e47916004808301926020929190829003018186803b158015610e8b57600080fd5b505afa158015610e9f573d6000803e3d6000fd5b505050506040513d6020811015610eb557600080fd5b50519050336001600160a01b0382161415610f9057806001600160a01b03166340dc0e376040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0357600080fd5b505afa158015610f17573d6000803e3d6000fd5b505050506040513d6020811015610f2d57600080fd5b505199508915801590610f4257506000198a14155b610f8b576040805162461bcd60e51b81526020600482015260156024820152744261642064657369726564206c697175696469747960581b604482015290519081900360640190fd5b61100c565b6001600160a01b03811615610fe5576040805162461bcd60e51b815260206004820152601660248201527526bab9ba103737ba103430bb329036b4b3b930ba37b960511b604482015290519081900360640190fd5b610ffd6103e86109ce610ff88888611bbc565b61207e565b995061100c60006103e86120d0565b50611055565b6110526001600160701b0389166110298684611bbc565b8161103057fe5b046001600160701b0389166110458685611bbc565b8161104c57fe5b0461215a565b98505b600089116110945760405162461bcd60e51b815260040180806020018281038252602881526020018061231d6028913960400191505060405180910390fd5b61109e8a8a6120d0565b6110aa86868a8a611c6f565b81156110d4576008546110d0906001600160701b0380821691600160701b900416611bbc565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114611199576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c819055806111a9610afc565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561120557600080fd5b505afa158015611219573d6000803e3d6000fd5b505050506040513d602081101561122f57600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561127d57600080fd5b505afa158015611291573d6000803e3d6000fd5b505050506040513d60208110156112a757600080fd5b5051306000908152600160205260408120549192506112c68888611f3e565b600054909150806112d78487611bbc565b816112de57fe5b049a50806112ec8486611bbc565b816112f357fe5b04995060008b118015611306575060008a115b6113415760405162461bcd60e51b81526004018080602001828103825260288152602001806122f56028913960400191505060405180910390fd5b61134b3084612172565b611356878d8d611a22565b611361868d8c611a22565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b1580156113a757600080fd5b505afa1580156113bb573d6000803e3d6000fd5b505050506040513d60208110156113d157600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561141d57600080fd5b505afa158015611431573d6000803e3d6000fd5b505050506040513d602081101561144757600080fd5b5051935061145785858b8b611c6f565b81156114815760085461147d906001600160701b0380821691600160701b900416611bbc565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b604051806040016040528060038152602001620454c560ec1b81525081565b6000610b33338484611e90565b6103e881565b600c5460011461155c576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926116059285928792611600926001600160701b03169185916370a0823191602480820192602092909190829003018186803b1580156115ce57600080fd5b505afa1580156115e2573d6000803e3d6000fd5b505050506040513d60208110156115f857600080fd5b505190611c1f565b611a22565b61167981846116006008600e9054906101000a90046001600160701b03166001600160701b0316856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156115ce57600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b428410156116eb576040805162461bcd60e51b8152602060048201526012602482015271155b9a5cddd85c158c8e881156141254915160721b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611806573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061183c5750886001600160a01b0316816001600160a01b0316145b61188d576040805162461bcd60e51b815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611898898989611e2e565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c5460011461190b576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b81523060048201529051611a1b926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561195c57600080fd5b505afa158015611970573d6000803e3d6000fd5b505050506040513d602081101561198657600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156119d357600080fd5b505afa1580156119e7573d6000803e3d6000fd5b505050506040513d60208110156119fd57600080fd5b50516008546001600160701b0380821691600160701b900416611c6f565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310611acf5780518252601f199092019160209182019101611ab0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b31576040519150601f19603f3d011682016040523d82523d6000602084013e611b36565b606091505b5091509150818015611b64575080511580611b645750808060200190516020811015611b6157600080fd5b50515b611bb5576040805162461bcd60e51b815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b6000811580611bd757505080820282828281611bd457fe5b04145b610b37576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b37576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611c8d57506001600160701b038311155b611cd4576040805162461bcd60e51b8152602060048201526013602482015272556e697377617056323a204f564552464c4f5760681b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611d0457506001600160701b03841615155b8015611d1857506001600160701b03831615155b15611d83578063ffffffff16611d4085611d3186612204565b6001600160e01b031690612216565b600980546001600160e01b03929092169290920201905563ffffffff8116611d6b84611d3187612204565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611eb39082611c1f565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611ee2908261223b565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8f57600080fd5b505afa158015611fa3573d6000803e3d6000fd5b505050506040513d6020811015611fb957600080fd5b5051600b546001600160a01b03821615801594509192509061206a578015612065576000611ff6610ff86001600160701b03888116908816611bbc565b905060006120038361207e565b90508082111561206257600061202561201c8484611c1f565b60005490611bbc565b9050600061203e83612038866005611bbc565b9061223b565b9050600081838161204b57fe5b049050801561205e5761205e87826120d0565b5050505b50505b612076565b8015612076576000600b555b505092915050565b600060038211156120c1575080600160028204015b818110156120bb578091506002818285816120aa57fe5b0401816120b357fe5b049050612093565b506120cb565b81156120cb575060015b919050565b6000546120dd908261223b565b60009081556001600160a01b038316815260016020526040902054612102908261223b565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612169578161216b565b825b9392505050565b6001600160a01b0382166000908152600160205260409020546121959082611c1f565b6001600160a01b038316600090815260016020526040812091909155546121bc9082611c1f565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161223357fe5b049392505050565b80820182811015610b37576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a264697066735822122070cad5cecc5e714c8acf70d5438c1595f47fd57057d33f81a54a065ccd9d6b9064736f6c634300060c0033

Deployed ByteCode Sourcemap

7854:10161:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15491:1903;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15491:1903:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15491:1903:0;;-1:-1:-1;15491:1903:0;-1:-1:-1;15491:1903:0;:::i;:::-;;900:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8866:231;;;:::i;:::-;;;;-1:-1:-1;;;;;8866:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2957:147;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2957:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8155:21;;;:::i;:::-;;;;-1:-1:-1;;;;;8155:21:0;;;;;;;;;;;;;;1046:24;;;:::i;:::-;;;;;;;;;;;;;;;;3259:301;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3259:301:0;;;;;;;;;;;;;;;;;:::i;1338:108::-;;;:::i;1004:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1195:31;;;:::i;9926:210::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9926:210:0;;;;;;;;;;:::i;8506:32::-;;;:::i;8545:::-;;;:::i;12120:1653::-;;;;;;;;;;;;;;;;-1:-1:-1;12120:1653:0;-1:-1:-1;;;;;12120:1653:0;;:::i;1077:41::-;;;;;;;;;;;;;;;;-1:-1:-1;1077:41:0;-1:-1:-1;;;;;1077:41:0;;:::i;8584:17::-;;;:::i;1453:38::-;;;;;;;;;;;;;;;;-1:-1:-1;1453:38:0;-1:-1:-1;;;;;1453:38:0;;:::i;13885:1494::-;;;;;;;;;;;;;;;;-1:-1:-1;13885:1494:0;-1:-1:-1;;;;;13885:1494:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;960:37;;;:::i;3112:139::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3112:139:0;;;;;;;;:::i;7976:46::-;;;:::i;17443:348::-;;;;;;;;;;;;;;;;-1:-1:-1;17443:348:0;-1:-1:-1;;;;;17443:348:0;;:::i;8126:22::-;;;:::i;8183:21::-;;;:::i;3568:674::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3568:674:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1125:61::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1125:61:0;;;;;;;;;;:::i;17840:172::-;;;:::i;15491:1903::-;8757:8;;8769:1;8757:13;8749:43;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;;;;8814:1;8803:8;:12;15605:14;;;;:32:::1;;;15636:1;15623:10;:14;15605:32;15597:82;;;;-1:-1:-1::0;;;15597:82:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15691:17;15710::::0;15732:13:::1;:11;:13::i;:::-;15690:55;;;;;15792:9;-1:-1:-1::0;;;;;15779:22:0::1;:10;:22;:48;;;;;15818:9;-1:-1:-1::0;;;;;15805:22:0::1;:10;:22;15779:48;15771:94;;;;-1:-1:-1::0;;;15771:94:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16010:6;::::0;16045::::1;::::0;15878:13:::1;::::0;;;-1:-1:-1;;;;;16010:6:0;;::::1;::::0;16045;;::::1;::::0;16070:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;16093:7;-1:-1:-1::0;;;;;16087:13:0::1;:2;-1:-1:-1::0;;;;;16087:13:0::1;;;16070:30;16062:64;;;::::0;;-1:-1:-1;;;16062:64:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;16062:64:0;;;;;;;;;;;;;::::1;;16141:14:::0;;16137:58:::1;;16157:38;16171:7;16180:2;16184:10;16157:13;:38::i;:::-;16244:14:::0;;16240:58:::1;;16260:38;16274:7;16283:2;16287:10;16260:13;:38::i;:::-;16347:15:::0;;16343:97:::1;;16381:2;-1:-1:-1::0;;;;;16364:34:0::1;;16399:10;16411;16423;16435:4;;16364:76;;;;;;;;;;;;;-1:-1:-1::0;;;;;16364:76:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16343:97;16462:47;::::0;;-1:-1:-1;;;16462:47:0;;16503:4:::1;16462:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;16462:32:0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16462:47:0;16531::::1;::::0;;-1:-1:-1;;;16531:47:0;;16572:4:::1;16531:47;::::0;::::1;::::0;;;16462;;-1:-1:-1;;;;;;16531:32:0;::::1;::::0;::::1;::::0;:47;;;;;16462::::1;::::0;16531;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16531:47:0;;-1:-1:-1;16600:14:0::1;::::0;-1:-1:-1;;;;;;;16628:22:0;::::1;::::0;;::::1;16617:33:::0;::::1;:75;;16691:1;16617:75;;;16677:10;16665:9;-1:-1:-1::0;;;;;16665:22:0::1;;16653:8;:35;16617:75;16600:92;;16703:14;16743:10;16731:9;-1:-1:-1::0;;;;;16731:22:0::1;;16720:8;:33;:75;;16794:1;16720:75;;;16780:10;16768:9;-1:-1:-1::0;;;;;16768:22:0::1;;16756:8;:35;16720:75;16703:92;;16826:1;16814:9;:13;:30;;;;16843:1;16831:9;:13;16814:30;16806:79;;;;-1:-1:-1::0;;;16806:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16971:21;16995:40;17018:16;:9:::0;17032:1:::1;17018:13;:16::i;:::-;16995:18;:8:::0;17008:4:::1;16995:12;:18::i;:::-;:22:::0;::::1;:40::i;:::-;16971:64:::0;-1:-1:-1;17046:21:0::1;17070:40;17093:16;:9:::0;17107:1:::1;17093:13;:16::i;17070:40::-;17046:64:::0;-1:-1:-1;17171:43:0::1;17206:7;17171:30;-1:-1:-1::0;;;;;17171:15:0;;::::1;::::0;:30;::::1;:19;:30::i;:::-;:34:::0;::::1;:43::i;:::-;17129:38;:16:::0;17150;17129:20:::1;:38::i;:::-;:85;;17121:110;;;::::0;;-1:-1:-1;;;17121:110:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17121:110:0;;;;;;;;;;;;;::::1;;8826:1;;17255:49;17263:8;17273;17283:9;17294;17255:7;:49::i;:::-;17320:66;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17320:66:0;::::1;::::0;17325:10:::1;::::0;17320:66:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;8849:1:0;8838:8;:12;-1:-1:-1;;;;;;;;;15491:1903:0:o;900:53::-;;;;;;;;;;;;;;-1:-1:-1;;;900:53:0;;;;:::o;8866:231::-;8999:8;;-1:-1:-1;;;;;8999:8:0;;;;-1:-1:-1;;;9030:8:0;;;;;;-1:-1:-1;;;9071:18:0;;;;;8866:231::o;2957:147::-;3021:4;3038:36;3047:10;3059:7;3068:5;3038:8;:36::i;:::-;-1:-1:-1;3092:4:0;2957:147;;;;;:::o;8155:21::-;;;-1:-1:-1;;;;;8155:21:0;;:::o;1046:24::-;;;;:::o;3259:301::-;-1:-1:-1;;;;;3358:15:0;;3337:4;3358:15;;;:9;:15;;;;;;;;3374:10;3358:27;;;;;;;;-1:-1:-1;;3358:39:0;3354:140;;-1:-1:-1;;;;;3444:15:0;;;;;;:9;:15;;;;;;;;3460:10;3444:27;;;;;;;;:38;;3476:5;3444:31;:38::i;:::-;-1:-1:-1;;;;;3414:15:0;;;;;;:9;:15;;;;;;;;3430:10;3414:27;;;;;;;:68;3354:140;3504:26;3514:4;3520:2;3524:5;3504:9;:26::i;:::-;-1:-1:-1;3548:4:0;3259:301;;;;;:::o;1338:108::-;1380:66;1338:108;:::o;1004:35::-;1037:2;1004:35;:::o;1195:31::-;;;;:::o;9926:210::-;10022:7;;-1:-1:-1;;;;;10022:7:0;10008:10;:21;10000:54;;;;;-1:-1:-1;;;10000:54:0;;;;;;;;;;;;-1:-1:-1;;;10000:54:0;;;;;;;;;;;;;;;10085:6;:16;;-1:-1:-1;;;;;10085:16:0;;;-1:-1:-1;;;;;;10085:16:0;;;;;;;10112:6;:16;;;;;;;;;;;9926:210::o;8506:32::-;;;;:::o;8545:::-;;;;:::o;12120:1653::-;12169:14;8757:8;;8769:1;8757:13;8749:43;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;;;;8814:1;8803:8;:12;;;8814:1;12238:13:::1;:11;:13::i;:::-;-1:-1:-1::0;12307:6:0::1;::::0;12293:46:::1;::::0;;-1:-1:-1;;;12293:46:0;;12333:4:::1;12293:46;::::0;::::1;::::0;;;12196:55;;-1:-1:-1;12196:55:0;;-1:-1:-1;12277:13:0::1;::::0;-1:-1:-1;;;;;12307:6:0;;::::1;::::0;12293:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;12307:6;12293:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12293:46:0;12380:6:::1;::::0;12366:46:::1;::::0;;-1:-1:-1;;;12366:46:0;;12406:4:::1;12366:46;::::0;::::1;::::0;;;12293;;-1:-1:-1;12350:13:0::1;::::0;-1:-1:-1;;;;;12380:6:0;;::::1;::::0;12366:31:::1;::::0;:46;;;;;12293::::1;::::0;12366;;;;;;;;12380:6;12366:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12366:46:0;;-1:-1:-1;12423:12:0::1;12438:23;:8:::0;-1:-1:-1;;;;;12438:23:0;::::1;:12;:23::i;:::-;12423:38:::0;-1:-1:-1;12472:12:0::1;12487:23;:8:::0;-1:-1:-1;;;;;12487:23:0;::::1;:12;:23::i;:::-;12472:38;;12523:10;12536:30;12545:9;12556;12536:8;:30::i;:::-;12577:17;12597:11:::0;12523:43;;-1:-1:-1;12701:17:0;12697:751:::1;;12772:7;::::0;12754:37:::1;::::0;;-1:-1:-1;;;12754:37:0;;;;12735:16:::1;::::0;-1:-1:-1;;;;;12772:7:0::1;::::0;12754:35:::1;::::0;:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;12772:7;12754:37;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12754:37:0;;-1:-1:-1;12810:10:0::1;-1:-1:-1::0;;;;;12810:22:0;::::1;;12806:500;;;12875:8;-1:-1:-1::0;;;;;12865:36:0::1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12865:38:0;;-1:-1:-1;12930:13:0;;;;;:41:::1;;;-1:-1:-1::0;;12947:9:0::1;:24;;12930:41;12922:75;;;::::0;;-1:-1:-1;;;12922:75:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;12922:75:0;;;;;;;;;;;;;::::1;;12806:500;;;-1:-1:-1::0;;;;;13046:22:0;::::1;::::0;13038:57:::1;;;::::0;;-1:-1:-1;;;13038:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;13038:57:0;;;;;;;;;;;;;::::1;;13126:54;8017:5;13126:31;13136:20;:7:::0;13148;13136:11:::1;:20::i;:::-;13126:9;:31::i;:54::-;13114:66;;13199:36;13213:1;8017:5;13199;:36::i;:::-;12697:751;;;;13350:86;-1:-1:-1::0;;;;;13359:37:0;::::1;:25;:7:::0;13371:12;13359:11:::1;:25::i;:::-;:37;;;;;;-1:-1:-1::0;;;;;13398:37:0;::::1;:25;:7:::0;13410:12;13398:11:::1;:25::i;:::-;:37;;;;;;13350:8;:86::i;:::-;13338:98;;12697:751;13478:1;13466:9;:13;13458:66;;;;-1:-1:-1::0;;;13458:66:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13535:20;13541:2;13545:9;13535:5;:20::i;:::-;13568:49;13576:8;13586;13596:9;13607;13568:7;:49::i;:::-;13632:5;13628:47;;;13666:8;::::0;13647:28:::1;::::0;-1:-1:-1;;;;;13652:8:0;;::::1;::::0;-1:-1:-1;;;13666:8:0;::::1;;13647:18;:28::i;:::-;13639:5;:36:::0;13628:47:::1;13731:34;::::0;;;;;::::1;::::0;::::1;::::0;;;;;13736:10:::1;::::0;13731:34:::1;::::0;;;;;;::::1;-1:-1:-1::0;;8849:1:0;8838:8;:12;-1:-1:-1;12120:1653:0;;;-1:-1:-1;;;;;;12120:1653:0:o;1077:41::-;;;;;;;;;;;;;:::o;8584:17::-;;;;:::o;1453:38::-;;;;;;;;;;;;;:::o;13885:1494::-;13934:12;13948;8757:8;;8769:1;8757:13;8749:43;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;;;;8814:1;8803:8;:12;;;8814:1;14015:13:::1;:11;:13::i;:::-;-1:-1:-1::0;14072:6:0::1;::::0;14153::::1;::::0;14232:47:::1;::::0;;-1:-1:-1;;;14232:47:0;;14273:4:::1;14232:47;::::0;::::1;::::0;;;13973:55;;-1:-1:-1;13973:55:0;;-1:-1:-1;;;;;;14072:6:0;;::::1;::::0;14153;::::1;::::0;14054:15:::1;::::0;14072:6;;14232:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;14072:6;14232:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14232:47:0;14306::::1;::::0;;-1:-1:-1;;;14306:47:0;;14347:4:::1;14306:47;::::0;::::1;::::0;;;14232;;-1:-1:-1;14290:13:0::1;::::0;-1:-1:-1;;;;;14306:32:0;::::1;::::0;::::1;::::0;:47;;;;;14232::::1;::::0;14306;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14306:47:0;14399:4:::1;14364:14;14381:24:::0;;;:9:::1;14306:47;14381:24:::0;;;;;14306:47;;-1:-1:-1;14431:30:0::1;14440:9:::0;14451;14431:8:::1;:30::i;:::-;14472:17;14492:11:::0;14418:43;;-1:-1:-1;14492:11:0;14602:23:::1;:9:::0;14616:8;14602:13:::1;:23::i;:::-;:38;;;;;;::::0;-1:-1:-1;14735:12:0;14709:23:::1;:9:::0;14723:8;14709:13:::1;:23::i;:::-;:38;;;;;;14699:48;;14824:1;14814:7;:11;:26;;;;;14839:1;14829:7;:11;14814:26;14806:79;;;;-1:-1:-1::0;;;14806:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14896:31;14910:4;14917:9;14896:5;:31::i;:::-;14938:35;14952:7;14961:2;14965:7;14938:13;:35::i;:::-;14984;14998:7;15007:2;15011:7;14984:13;:35::i;:::-;15041:47;::::0;;-1:-1:-1;;;15041:47:0;;15082:4:::1;15041:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;15041:32:0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15041:47:0;15110::::1;::::0;;-1:-1:-1;;;15110:47:0;;15151:4:::1;15110:47;::::0;::::1;::::0;;;15041;;-1:-1:-1;;;;;;15110:32:0;::::1;::::0;::::1;::::0;:47;;;;;15041::::1;::::0;15110;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15110:47:0;;-1:-1:-1;15170:49:0::1;15178:8:::0;15110:47;15198:9;15209;15170:7:::1;:49::i;:::-;15234:5;15230:47;;;15268:8;::::0;15249:28:::1;::::0;-1:-1:-1;;;;;15254:8:0;;::::1;::::0;-1:-1:-1;;;15268:8:0;::::1;;15249:18;:28::i;:::-;15241:5;:36:::0;15230:47:::1;15333:38;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;15333:38:0;::::1;::::0;15338:10:::1;::::0;15333:38:::1;::::0;;;;;;;;;::::1;8826:1;;;;;;;;;8849::::0;8838:8;:12;;;;13885:1494;;;:::o;960:37::-;;;;;;;;;;;;;;-1:-1:-1;;;960:37:0;;;;:::o;3112:139::-;3172:4;3189:32;3199:10;3211:2;3215:5;3189:9;:32::i;7976:46::-;8017:5;7976:46;:::o;17443:348::-;8757:8;;8769:1;8757:13;8749:43;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;;;;8814:1;8803:8;:12;17512:6:::1;::::0;17562::::1;::::0;17673:8:::1;::::0;17621:47:::1;::::0;;-1:-1:-1;;;17621:47:0;;17662:4:::1;17621:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;17512:6:0;;::::1;::::0;17562;;::::1;::::0;17594:89:::1;::::0;17512:6;;17617:2;;17621:61:::1;::::0;-1:-1:-1;;;;;17673:8:0::1;::::0;17512:6;;17621:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;;17512:6;17621:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17621:47:0;;:51:::1;:61::i;:::-;17594:13;:89::i;:::-;17694;17708:7;17717:2;17721:61;17773:8;;;;;;;;;-1:-1:-1::0;;;;;17773:8:0::1;-1:-1:-1::0;;;;;17721:61:0::1;17735:7;-1:-1:-1::0;;;;;17721:32:0::1;;17762:4;17721:47;;;;;;;;;;;;;-1:-1:-1::0;;;;;17721:47:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;17694:89;-1:-1:-1::0;;8849:1:0;8838:8;:12;-1:-1:-1;17443:348:0:o;8126:22::-;;;-1:-1:-1;;;;;8126:22:0;;:::o;8183:21::-;;;-1:-1:-1;;;;;8183:21:0;;:::o;3568:674::-;3714:15;3702:8;:27;;3694:58;;;;;-1:-1:-1;;;3694:58:0;;;;;;;;;;;;-1:-1:-1;;;3694:58:0;;;;;;;;;;;;;;;3868:16;;-1:-1:-1;;;;;3964:13:0;;;3763:14;3964:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3913:77;;1380:66;3913:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3903:88;;;;;;-1:-1:-1;;;3804:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3780:237;;;;;;;;;4055:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3763:14;;3964:15;4055:26;;;;;-1:-1:-1;;4055:26:0;;;;;;;;;;3964:15;4055:26;;;;;;;;;;;;;;;-1:-1:-1;;4055:26:0;;-1:-1:-1;;4055:26:0;;;-1:-1:-1;;;;;;;4100:30:0;;;;;;:59;;;4154:5;-1:-1:-1;;;;;4134:25:0;:16;-1:-1:-1;;;;;4134:25:0;;4100:59;4092:100;;;;;-1:-1:-1;;;4092:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4203:31;4212:5;4219:7;4228:5;4203:8;:31::i;:::-;3568:674;;;;;;;;;:::o;1125:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;17840:172::-;8757:8;;8769:1;8757:13;8749:43;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;-1:-1:-1;;;8749:43:0;;;;;;;;;;;;;;;8814:1;8803:8;:12;17903:6:::1;::::0;17889:46:::1;::::0;;-1:-1:-1;;;17889:46:0;;17929:4:::1;17889:46;::::0;::::1;::::0;;;17881:123:::1;::::0;-1:-1:-1;;;;;17903:6:0::1;::::0;17889:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;17903:6;17889:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17889:46:0;17951:6:::1;::::0;17937:46:::1;::::0;;-1:-1:-1;;;17937:46:0;;17977:4:::1;17937:46;::::0;::::1;::::0;;;-1:-1:-1;;;;;17951:6:0;;::::1;::::0;17937:31:::1;::::0;:46;;;;;17889::::1;::::0;17937;;;;;;;;17951:6;17937:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17937:46:0;17985:8:::1;::::0;-1:-1:-1;;;;;17985:8:0;;::::1;::::0;-1:-1:-1;;;17995:8:0;::::1;;17881:7;:123::i;:::-;8849:1:::0;8838:8;:12;17840:172::o;9105:287::-;8081:34;;;;;;;;;;;;;;;;;9233:43;;-1:-1:-1;;;;;9233:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9233:43:0;-1:-1:-1;;;9233:43:0;;;9222:55;;;;9187:12;;9201:17;;9222:10;;;9233:43;9222:55;;;9233:43;9222:55;;9233:43;9222:55;;;;;;;;;;-1:-1:-1;;9222:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9186:91;;;;9296:7;:57;;;;-1:-1:-1;9308:11:0;;:16;;:44;;;9339:4;9328:24;;;;;;;;;;;;;;;-1:-1:-1;9328:24:0;9308:44;9288:96;;;;;-1:-1:-1;;;9288:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9105:287;;;;;:::o;597:142::-;649:6;676;;;:30;;-1:-1:-1;;691:5:0;;;705:1;700;691:5;700:1;686:15;;;;;:20;676:30;668:63;;;;;-1:-1:-1;;;668:63:0;;;;;;;;;;;;-1:-1:-1;;;668:63:0;;;;;;;;;;;;;;460:129;544:5;;;539:16;;;;531:50;;;;;-1:-1:-1;;;531:50:0;;;;;;;;;;;;-1:-1:-1;;;531:50:0;;;;;;;;;;;;;;10221:860;-1:-1:-1;;;;;10333:23:0;;;;;:50;;-1:-1:-1;;;;;;10360:23:0;;;10333:50;10325:82;;;;;-1:-1:-1;;;10325:82:0;;;;;;;;;;;;-1:-1:-1;;;10325:82:0;;;;;;;;;;;;;;;10522:18;;10449:23;:15;:23;;;-1:-1:-1;;;10522:18:0;;;;10505:35;;;10578:15;;;;;;:33;;-1:-1:-1;;;;;;10597:14:0;;;;10578:33;:51;;;;-1:-1:-1;;;;;;10615:14:0;;;;10578:51;10574:336;;;10784:11;10731:64;;10736:44;10770:9;10736:27;10753:9;10736:16;:27::i;:::-;-1:-1:-1;;;;;10736:33:0;;;:44::i;:::-;10707:20;:88;;-1:-1:-1;;;;;10731:50:0;;;;:64;;;;10707:88;;;10834:64;;;10839:44;10873:9;10839:27;10856:9;10839:16;:27::i;:44::-;10810:20;:88;;-1:-1:-1;;;;;10834:50:0;;;;:64;;;;10810:88;;;10574:336;10920:8;:28;;-1:-1:-1;;10920:28:0;-1:-1:-1;;;;;10920:28:0;;;;;;;-1:-1:-1;;;;10959:28:0;-1:-1:-1;;;10959:28:0;;;;;;;;;-1:-1:-1;;;;;10998:35:0;-1:-1:-1;;;10998:35:0;;;;;;;;;11049:24;;;11054:8;;;11049:24;;11064:8;;;;;;;11049:24;;;;;;;;;;;;;;;;;10221:860;;;;;;:::o;2552:169::-;-1:-1:-1;;;;;2633:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2682:31;;;;;;;;;;;;;;;;;2552:169;;;:::o;2729:220::-;-1:-1:-1;;;;;2823:15:0;;;;;;:9;:15;;;;;;:26;;2843:5;2823:19;:26::i;:::-;-1:-1:-1;;;;;2805:15:0;;;;;;;:9;:15;;;;;;:44;;;;2876:13;;;;;;;:24;;2894:5;2876:17;:24::i;:::-;-1:-1:-1;;;;;2860:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;2916:25;;;;;;;2860:13;;2916:25;;;;;;;;;;;;;2729:220;;;:::o;11171:837::-;11244:10;11267:13;11301:7;;;;;;;;;-1:-1:-1;;;;;11301:7:0;-1:-1:-1;;;;;11283:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11283:34:0;11380:5;;-1:-1:-1;;;;;11336:19:0;;;;;;-1:-1:-1;11283:34:0;;-1:-1:-1;11380:5:0;11411:590;;11441:11;;11437:494;;11473:10;11486:41;11496:30;-1:-1:-1;;;;;11496:15:0;;;;:30;;:19;:30::i;11486:41::-;11473:54;;11546:14;11563:17;11573:6;11563:9;:17::i;:::-;11546:34;;11611:9;11603:5;:17;11599:317;;;11645:14;11662:37;11678:20;:5;11688:9;11678;:20::i;:::-;11662:11;;;:15;:37::i;:::-;11645:54;-1:-1:-1;11722:16:0;11741:27;11758:9;11741:12;:5;11751:1;11741:9;:12::i;:::-;:16;;:27::i;:::-;11722:46;;11791:14;11820:11;11808:9;:23;;;;;;;-1:-1:-1;11858:13:0;;11854:42;;11873:23;11879:5;11886:9;11873:5;:23::i;:::-;11599:317;;;;11437:494;;;11411:590;;;11952:11;;11948:53;;11988:1;11980:5;:9;11948:53;11171:837;;;;;;:::o;4622:303::-;4667:6;4694:1;4690;:5;4686:232;;;-1:-1:-1;4716:1:0;4749;4745;4741:5;;:9;4765:92;4776:1;4772;:5;4765:92;;;4802:1;4798:5;;4840:1;4835;4831;4827;:5;;;;;;:9;4826:15;;;;;;4822:19;;4765:92;;;4686:232;;;;4878:6;;4874:44;;-1:-1:-1;4905:1:0;4874:44;4622:303;;;:::o;2126:201::-;2199:11;;:22;;2215:5;2199:15;:22::i;:::-;2185:11;:36;;;-1:-1:-1;;;;;2248:13:0;;;;:9;:13;;;;;;:24;;2266:5;2248:17;:24::i;:::-;-1:-1:-1;;;;;2232:13:0;;;;;;:9;:13;;;;;;;;:40;;;;2288:31;;;;;;;2232:13;;;;2288:31;;;;;;;;;;2126:201;;:::o;4408:96::-;4460:6;4487:1;4483;:5;:13;;4495:1;4483:13;;;4491:1;4483:13;4479:17;4408:96;-1:-1:-1;;;4408:96:0:o;2335:209::-;-1:-1:-1;;;;;2414:15:0;;;;;;:9;:15;;;;;;:26;;2434:5;2414:19;:26::i;:::-;-1:-1:-1;;;;;2396:15:0;;;;;;:9;:15;;;;;:44;;;;2465:11;:22;;2481:5;2465:15;:22::i;:::-;2451:11;:36;;;2503:33;;;;;;;;-1:-1:-1;;;;;2503:33:0;;;;;;;;;;;;;2335:209;;:::o;5287:120::-;-1:-1:-1;;;;;5363:10:0;-1:-1:-1;;;5363:17:0;;5287:120::o;5478:108::-;5538:9;-1:-1:-1;;;;;5568:10:0;;-1:-1:-1;;;;;5564:14:0;;5568:10;5564:14;;;;;;5478:108;-1:-1:-1;;;5478:108:0:o;324:128::-;408:5;;;403:16;;;;395:49;;;;;-1:-1:-1;;;395:49:0;;;;;;;;;;;;-1:-1:-1;;;395:49:0;;;;;;;;;;;;;

Swarm Source

ipfs://70cad5cecc5e714c8acf70d5438c1595f47fd57057d33f81a54a065ccd9d6b90
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.