Contract 0xC79fC6ee4f4f065C32B1FFF8D4ca9A5FEEF7a6ec

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xa027769dbb38444d7e0abcc87951c3dcaf00d1831441401451cc9740d4ca3b58Approve472854722022-09-19 20:44:556 days 9 hrs ago0x47a0deaf314f1470c4f5655c6e3921f663b304ad IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.000062033599
0x4618f8dcca76eb619afe7758c84a66305c17b0a56e72d213c4fe34ad0ad4093fApprove472854522022-09-19 20:44:336 days 9 hrs ago0x47a0deaf314f1470c4f5655c6e3921f663b304ad IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.000067181189
0x3d8e36064b2d27d6a33cb204ae0eb7dbcc388172e3b34a6077426948946cb2ddApprove445796852022-08-10 1:17:2347 days 5 hrs ago0xe922399aaf629dea63987f2157b0ca7c44f4de90 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.002252706
0xc4e891768678baf04d118e42eae2d64a43aba80bbbe367a765732edf6f6ce6d7Approve411648652022-06-23 16:29:2694 days 14 hrs ago0x4209859ae2992f581d2678392b4ac80c13d5eed4 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.000110438299
0xc40106ef0fa226148705d1a6746471939a1123b250290c8a49d1393e0a2d8201Approve410118012022-06-21 14:18:1396 days 16 hrs ago0xe39919542a1802eba69e280d358b606aab53a5b7 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.001035118237
0xe3364af993cebf7f3b8849f0bc70f002a1c647d31db4d131b8b13bdc50610defApprove409770702022-06-21 2:27:2097 days 4 hrs ago0xe39919542a1802eba69e280d358b606aab53a5b7 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.000219819726
0x55c8fe91f2c2b7c17f3baa46c82b5f7647f55631b290ef70653f4aba15ac5aa5Approve402610202022-06-11 5:26:15107 days 1 hr ago0xe2a8f676a31d59a91a8ce1e86c43e8a577fde478 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.000142535568
0x3a2615410e95ac953a5ff8c1349905142e92c1e2ee0501e668f5d279ff772b7aApprove381855132022-05-14 0:05:19135 days 6 hrs ago0x88a0f4af5a012a9bb53ff7a080f8f46ba6a7e077 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.009110493644
0x33c73a56236eae682d398fb2ded5ad2d45b60cd38577161819ec4a51d276b734Approve381796722022-05-13 22:14:47135 days 8 hrs ago0xf9fb390b9f35e7e6379fc9895b496b339ad42384 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.008779265299
0x34f4ce5e16073d010d9e2c7bdca065897c2cab4cf93d32b606a148519e40c8dcApprove381795082022-05-13 22:11:54135 days 8 hrs ago0xf9fb390b9f35e7e6379fc9895b496b339ad42384 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.009288718184
0x93a2b45148358f63c7c0f1d261836dbe1d55bb8848afe0ddc7052281231ad520Approve381775492022-05-13 21:35:00135 days 8 hrs ago0x6c0dd723c097425fa56474920385cac75fe02ac7 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.011259458733
0xc34b7ed411f461cd54b97d1c9f75df6d14533a704f14a74c285e4a0863b4a080Approve377353912022-05-07 5:13:29142 days 1 hr ago0x0cfd48c5288bf711bf84aef3b30df50c644ee891 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.004100536034
0x084f6f8548386d5c20c05086d4d3cd9c8b5564f642de0d29e4a1c7b87e71505bApprove375781922022-05-05 2:55:59144 days 3 hrs ago0xeab8e50f305c3b97aa5eb818e09a59124c357b91 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.0344318
0x28495adebcdbe7f29347f5bd1e6ba7c22a332d14d6834bd842eea7cf29cf374fApprove374799022022-05-03 19:58:57145 days 10 hrs ago0x7e6be4c936f2cfdd3ef9b45262b5bc6a25c38d38 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.009852235541
0xd8a4447fd3f1c53d214e10d2109bc7cc3dd44ae2bab7564ca715e767ad68b18aApprove373168172022-05-01 7:37:13147 days 22 hrs ago0xb655a9ecee1dd4eee62dcb4c2b42a7e2fab63a51 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.0575718
0x89424f205a67c0a1846a8d5f956dc9cb536ec0e5b8fbb1c3771526c33fa7ce88Approve371753462022-04-28 23:08:08150 days 7 hrs ago0xd1e16a32e73a266d3d3e74e9e9f5301d17d4e7c0 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.015254283124
0xacce80b88f0ab45363619980fb09352e40c245f33c380e1c5a9f75801b87d2d1Approve371008492022-04-27 22:07:46151 days 8 hrs ago0xa7be44caf10d5a724d4281c7aaef2d8c483a8519 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.012206253463
0xa0084cd422d59b9bf540f5541d2af4ef8299125b16ee122c2a3d9c6fe9ecdf5aApprove370879832022-04-27 17:49:08151 days 12 hrs ago0x959bc1bec9ebb00db92049ffe15441edc09451fd IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.0575718
0x2e8b9a4fa4acc113fa715fc630400af98b406791bcfb922785223554a56819f3Approve369997062022-04-26 11:40:39152 days 18 hrs ago0xfc963a93457c5644e51d955f3b2d3012e27ab3dd IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.0575718
0xed06f1bb2b13abd4d209407b7f037b5df77c716fe289ec810f967cbb927b0e69Approve369424052022-04-25 17:15:57153 days 13 hrs ago0x2e6a27556bf03125b4db4704fcc86247d432365b IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.0575718
0x81e6c07106f3af47e8bbd3a2782ea84d8e11e4ab39658d968e9c7892fba05b51Approve369388812022-04-25 16:07:29153 days 14 hrs ago0xc36cbfdaa731885a1fabe2e90f3935879692deb0 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.0575718
0xef94268f77a8a764e21e766bde11837e7e3c06599d2040ea3a9dd8fd1eaacffeApprove369348582022-04-25 14:28:08153 days 16 hrs ago0x093280baf29e95dfab620fc1b06410badb176dc6 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.003912866515
0x5d4901df7d370a9467ac14b7e019e146fbb46f344076a19f86175c165a3c5486Approve369343982022-04-25 14:19:54153 days 16 hrs ago0xfd5ff07c22ffe7064e6c3f0ca212bbcda7f86933 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.0575718
0x8d44207d9fdafaf222226ed304f93783b8e1d17979cd6a3ba5e027cc3838bb7bApprove369341962022-04-25 14:16:06153 days 16 hrs ago0x2836545d6e07e9e96a9b622a2e5f4787ec9cc2ae IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.0575718
0xbe606dffe3dc474c50678dbd145029571e5d9bc1de8dfb63c1a1fb4d0fe23c23Approve369316082022-04-25 13:23:50153 days 17 hrs ago0x7852630cb36c61093cf958a5f3554ab654b29a56 IN  0xc79fc6ee4f4f065c32b1fff8d4ca9a5feef7a6ec0 FTM0.013991267122
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x93cca4dbb052874f8de95d624e0bfb10b1316e5a67832f3fe439eeb06740159f279578502022-01-14 18:18:45254 days 12 hrs ago SpookySwap: Factory  Contract Creation0 FTM
[ Download CSV Export 
Loading

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

Contract Name:
UniswapV2Pair

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2021-09-20
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

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

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

interface IERC20 {
    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);
}

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

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

library SafeMath {
    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');
    }
}

contract UniswapV2ERC20 {
    using SafeMath for uint;

    string public constant name = 'Spooky LP';
    string public constant symbol = 'spLP';
    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);
    }
}

contract UniswapV2Pair is UniswapV2ERC20 {
    using SafeMath  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(3).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 = IERC20(token0).balanceOf(address(this));
        uint balance1 = IERC20(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) {
            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 = IERC20(_token0).balanceOf(address(this));
        uint balance1 = IERC20(_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 = IERC20(_token0).balanceOf(address(this));
        balance1 = IERC20(_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 = IERC20(_token0).balanceOf(address(this));
        balance1 = IERC20(_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(2));
        uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(2));
        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, IERC20(_token0).balanceOf(address(this)).sub(reserve0));
        _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1));
    }

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

Contract Security Audit

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"}]

60806040526001600c5534801561001557600080fd5b506040805180820182526009815268053706f6f6b79204c560bc1b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fa91fe58471fd2a6be67edb07e310245d14cf2e61eb70f1d79b9e0f5cdb6fc0cc818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612b51806101076000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d17565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d50565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da5565b604080519115158252519081900360200190f35b61036a610dbc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610dd8565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610dde565b61039b610eb7565b610400610edb565b6040805160ff9092168252519081900360200190f35b61039b610ee0565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610ee6565b61039b610fbf565b61039b610fc5565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fcb565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611361565b61039b611373565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611379565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661138b565b6040805192835260208301919091528051918290030190f35b610261611816565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561184f565b61039b61185c565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611862565b61036a611a4f565b61036a611a6b565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611a87565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611d53565b610257611d70565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a626025913960400191505060405180910390fd5b600080610767610d50565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611f56565b89156108e1576108e1818a8c611f56565b86156109ad578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561099457600080fd5b505af11580156109a8573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a1957600080fd5b505afa158015610a2d573d6000803e3d6000fd5b505050506040513d6020811015610a4357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610ab557600080fd5b505afa158015610ac9573d6000803e3d6000fd5b505050506040513d6020811015610adf57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b09576000610b1f565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b43576000610b59565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b6a5750600081115b610bbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612a876024913960400191505060405180910390fd5b6000610be1610bcf846002612163565b610bdb876103e8612163565b906121e9565b90506000610bf3610bcf846002612163565b9050610c1f620f4240610c196dffffffffffffffffffffffffffff8b8116908b16612163565b90612163565b610c298383612163565b1015610c9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ca48484888861225b565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600981526020017f53706f6f6b79204c50000000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610db2338484612511565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ea25773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610e7090836121e9565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ead848484612580565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610f6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461103e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061104e610d50565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d602081101561119557600080fd5b5051905060006111b5836dffffffffffffffffffffffffffff87166121e9565b905060006111d3836dffffffffffffffffffffffffffff87166121e9565b905060006111e18787612655565b60005490915080611218576112046103e8610bdb6111ff8787612163565b6127c3565b985061121360006103e8612815565b611269565b6112666dffffffffffffffffffffffffffff89166112368684612163565b8161123d57fe5b046dffffffffffffffffffffffffffff89166112598685612163565b8161126057fe5b046128b9565b98505b600089116112c2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612af46028913960400191505060405180910390fd5b6112cc8a8a612815565b6112d886868a8a61225b565b811561131457600854611310906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146113ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c8190558061140f610d50565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561149157600080fd5b505afa1580156114a5573d6000803e3d6000fd5b505050506040513d60208110156114bb57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561152f57600080fd5b505afa158015611543573d6000803e3d6000fd5b505050506040513d602081101561155957600080fd5b5051306000908152600160205260408120549192506115788888612655565b600054909150806115898487612163565b8161159057fe5b049a508061159e8486612163565b816115a557fe5b04995060008b1180156115b8575060008a115b61160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612acc6028913960400191505060405180910390fd5b61161730846128d1565b611622878d8d611f56565b61162d868d8c611f56565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561169957600080fd5b505afa1580156116ad573d6000803e3d6000fd5b505050506040513d60208110156116c357600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b15801561173557600080fd5b505afa158015611749573d6000803e3d6000fd5b505050506040513d602081101561175f57600080fd5b5051935061176f85858b8b61225b565b81156117ab576008546117a7906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612163565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600481526020017f73704c500000000000000000000000000000000000000000000000000000000081525081565b6000610db2338484612580565b6103e881565b600c546001146118d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff94851694909316926119a992859287926119a4926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b15801561197257600080fd5b505afa158015611986573d6000803e3d6000fd5b505050506040513d602081101561199c57600080fd5b5051906121e9565b611f56565b611a4581846119a46008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561197257600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611af657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611c57573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611cd257508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d3d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611d48898989612511565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611de157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611f4f9273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611e5857600080fd5b505afa158015611e6c573d6000803e3d6000fd5b505050506040513d6020811015611e8257600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611ef557600080fd5b505afa158015611f09573d6000803e3d6000fd5b505050506040513d6020811015611f1f57600080fd5b50516008546dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041661225b565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b6020831061205c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161201f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146120be576040519150601f19603f3d011682016040523d82523d6000602084013e6120c3565b606091505b50915091508180156120f15750805115806120f157508080602001905160208110156120ee57600080fd5b50515b61215c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b600081158061217e5750508082028282828161217b57fe5b04145b610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061228757506dffffffffffffffffffffffffffff8311155b6122f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c01000000000000000000000000000000000000000000000000000000009004811682039081161580159061234257506dffffffffffffffffffffffffffff841615155b801561235d57506dffffffffffffffffffffffffffff831615155b15612407578063ffffffff1661239a856123768661298a565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906129ae565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff81166123da846123768761298a565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546125b090826121e9565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546125ec90826129ef565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156126c057600080fd5b505afa1580156126d4573d6000803e3d6000fd5b505050506040513d60208110156126ea57600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff82161580159450919250906127af5780156127aa57600061273b6111ff6dffffffffffffffffffffffffffff888116908816612163565b90506000612748836127c3565b9050808211156127a757600061276a61276184846121e9565b60005490612163565b905060006127838361277d866003612163565b906129ef565b9050600081838161279057fe5b04905080156127a3576127a38782612815565b5050505b50505b6127bb565b80156127bb576000600b555b505092915050565b60006003821115612806575080600160028204015b81811015612800578091506002818285816127ef57fe5b0401816127f857fe5b0490506127d8565b50612810565b8115612810575060015b919050565b60005461282290826129ef565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461285490826129ef565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106128c857816128ca565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461290190826121e9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120919091555461293590826121e9565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816129e757fe5b049392505050565b80820182811015610db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220dcc02d08a0d2a855883ec246a1af8cf8f67b5238ab62de5a68f41c5b52af7d5b64736f6c634300060c0033

Deployed ByteCode Sourcemap

6465:9671:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13654:1889;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13654:1889:0;;-1:-1:-1;13654:1889:0;-1:-1:-1;13654:1889:0;:::i;:::-;;3127:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7470:231;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5173:147;;;;;;;;;;;;;;;;-1:-1:-1;5173:147:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;6759:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3262:24;;;:::i;:::-;;;;;;;;;;;;;;;;5475:301;;;;;;;;;;;;;;;;-1:-1:-1;5475:301:0;;;;;;;;;;;;;;;;;;:::i;3554:108::-;;;:::i;3220:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3411:31;;;:::i;8530:210::-;;;;;;;;;;;;;;;;-1:-1:-1;8530:210:0;;;;;;;;;;;:::i;7110:32::-;;;:::i;7149:::-;;;:::i;10724:1240::-;;;;;;;;;;;;;;;;-1:-1:-1;10724:1240:0;;;;:::i;3293:41::-;;;;;;;;;;;;;;;;-1:-1:-1;3293:41:0;;;;:::i;7188:17::-;;;:::i;3669:38::-;;;;;;;;;;;;;;;;-1:-1:-1;3669:38:0;;;;:::i;12076:1466::-;;;;;;;;;;;;;;;;-1:-1:-1;12076:1466:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3175:38;;;:::i;5328:139::-;;;;;;;;;;;;;;;;-1:-1:-1;5328:139:0;;;;;;;;;:::i;6580:46::-;;;:::i;15592:334::-;;;;;;;;;;;;;;;;-1:-1:-1;15592:334:0;;;;:::i;6730:22::-;;;:::i;6787:21::-;;;:::i;5784:674::-;;;;;;;;;;;;;;;;-1:-1:-1;5784:674:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3341:61::-;;;;;;;;;;;;;;;;-1:-1:-1;3341:61:0;;;;;;;;;;;:::i;15975:158::-;;;:::i;13654:1889::-;7361:8;;7373:1;7361:13;7353:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7418:1;7407:8;:12;13768:14;;;;:32:::1;;;13799:1;13786:10;:14;13768:32;13760:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13854:17;13873::::0;13895:13:::1;:11;:13::i;:::-;13853:55;;;;;13955:9;13942:22;;:10;:22;:48;;;;;13981:9;13968:22;;:10;:22;13942:48;13934:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14173:6;::::0;14208::::1;::::0;14041:13:::1;::::0;;;14173:6:::1;::::0;;::::1;::::0;14208;;::::1;::::0;14233:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;14256:7;14250:13;;:2;:13;;;;14233:30;14225:64;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;14304:14:::0;;14300:58:::1;;14320:38;14334:7;14343:2;14347:10;14320:13;:38::i;:::-;14407:14:::0;;14403:58:::1;;14423:38;14437:7;14446:2;14450:10;14423:13;:38::i;:::-;14510:15:::0;;14506:97:::1;;14544:2;14527:34;;;14562:10;14574;14586;14598:4;;14527:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14506:97;14625:40;::::0;;;;;14659:4:::1;14625:40;::::0;::::1;::::0;;;:25:::1;::::0;::::1;::::0;::::1;::::0;:40;;;;;::::1;::::0;;;;;;;;:25;:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14625:40:0;14687::::1;::::0;;;;;14721:4:::1;14687:40;::::0;::::1;::::0;;;14625;;-1:-1:-1;14687:25:0::1;::::0;::::1;::::0;::::1;::::0;:40;;;;;14625::::1;::::0;14687;;;;;;;;:25;:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14687:40:0;;-1:-1:-1;14749:14:0::1;::::0;-1:-1:-1;;14777:22:0::1;::::0;::::1;::::0;;::::1;14766:33:::0;::::1;:75;;14840:1;14766:75;;;14826:10;14814:9;:22;;;14802:8;:35;14766:75;14749:92;;14852:14;14892:10;14880:9;:22;;;14869:8;:33;:75;;14943:1;14869:75;;;14929:10;14917:9;:22;;;14905:8;:35;14869:75;14852:92;;14975:1;14963:9;:13;:30;;;;14992:1;14980:9;:13;14963:30;14955:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15120:21;15144:40;15167:16;:9:::0;15181:1:::1;15167:13;:16::i;:::-;15144:18;:8:::0;15157:4:::1;15144:12;:18::i;:::-;:22:::0;::::1;:40::i;:::-;15120:64:::0;-1:-1:-1;15195:21:0::1;15219:40;15242:16;:9:::0;15256:1:::1;15242:13;:16::i;15219:40::-;15195:64:::0;-1:-1:-1;15320:43:0::1;15355:7;15320:30;;:15:::0;;::::1;::::0;:30;::::1;:19;:30::i;:::-;:34:::0;::::1;:43::i;:::-;15278:38;:16:::0;15299;15278:20:::1;:38::i;:::-;:85;;15270:110;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;7430:1;;15404:49;15412:8;15422;15432:9;15443;15404:7;:49::i;:::-;15469:66;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;::::1;::::0;::::1;::::0;15474:10:::1;::::0;15469:66:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;7453:1:0;7442:8;:12;-1:-1:-1;;;;;;;;;13654:1889:0:o;3127:41::-;;;;;;;;;;;;;;;;;;;:::o;7470:231::-;7603:8;;;;;;;7634;;;;;;;7675:18;;;;;;7470:231::o;5173:147::-;5237:4;5254:36;5263:10;5275:7;5284:5;5254:8;:36::i;:::-;-1:-1:-1;5308:4:0;5173:147;;;;;:::o;6759:21::-;;;;;;:::o;3262:24::-;;;;:::o;5475:301::-;5574:15;;;5553:4;5574:15;;;:9;:15;;;;;;;;5590:10;5574:27;;;;;;;;5610:2;5574:39;5570:140;;5660:15;;;;;;;:9;:15;;;;;;;;5676:10;5660:27;;;;;;;;:38;;5692:5;5660:31;:38::i;:::-;5630:15;;;;;;;:9;:15;;;;;;;;5646:10;5630:27;;;;;;;:68;5570:140;5720:26;5730:4;5736:2;5740:5;5720:9;:26::i;:::-;-1:-1:-1;5764:4:0;5475:301;;;;;:::o;3554:108::-;3596:66;3554:108;:::o;3220:35::-;3253:2;3220:35;:::o;3411:31::-;;;;:::o;8530:210::-;8626:7;;;;8612:10;:21;8604:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8689:6;:16;;;;;;;;;;;;;;8716:6;:16;;;;;;;;;;;8530:210::o;7110:32::-;;;;:::o;7149:::-;;;;:::o;10724:1240::-;10773:14;7361:8;;7373:1;7361:13;7353:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7418:1;7407:8;:12;;;7418:1;10842:13:::1;:11;:13::i;:::-;-1:-1:-1::0;10904:6:0::1;::::0;10897:39:::1;::::0;;;;;10930:4:::1;10897:39;::::0;::::1;::::0;;;10800:55;;-1:-1:-1;10800:55:0;;-1:-1:-1;10881:13:0::1;::::0;10904:6:::1;::::0;;::::1;::::0;10897:24:::1;::::0;:39;;;;;::::1;::::0;;;;;;;;10904:6;10897:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;10897:39:0;10970:6:::1;::::0;10963:39:::1;::::0;;;;;10996:4:::1;10963:39;::::0;::::1;::::0;;;10897;;-1:-1:-1;10947:13:0::1;::::0;10970:6:::1;::::0;;::::1;::::0;10963:24:::1;::::0;:39;;;;;10897::::1;::::0;10963;;;;;;;;10970:6;10963:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;10963:39:0;;-1:-1:-1;11013:12:0::1;11028:23;:8:::0;:23:::1;::::0;::::1;:12;:23::i;:::-;11013:38:::0;-1:-1:-1;11062:12:0::1;11077:23;:8:::0;:23:::1;::::0;::::1;:12;:23::i;:::-;11062:38;;11113:10;11126:30;11135:9;11146;11126:8;:30::i;:::-;11167:17;11187:11:::0;11113:43;;-1:-1:-1;11291:17:0;11287:352:::1;;11337:54;6621:5;11337:31;11347:20;:7:::0;11359;11347:11:::1;:20::i;:::-;11337:9;:31::i;:54::-;11325:66;;11405:36;11419:1;6621:5;11405;:36::i;:::-;11287:352;;;11541:86;11550:37;::::0;::::1;:25;:7:::0;11562:12;11550:11:::1;:25::i;:::-;:37;;;;;;11589;::::0;::::1;:25;:7:::0;11601:12;11589:11:::1;:25::i;:::-;:37;;;;;;11541:8;:86::i;:::-;11529:98;;11287:352;11669:1;11657:9;:13;11649:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11726:20;11732:2;11736:9;11726:5;:20::i;:::-;11759:49;11767:8;11777;11787:9;11798;11759:7;:49::i;:::-;11823:5;11819:47;;;11857:8;::::0;11838:28:::1;::::0;11857:8:::1;11843::::0;;::::1;::::0;11857;;::::1;;11838:18;:28::i;:::-;11830:5;:36:::0;11819:47:::1;11922:34;::::0;;;;;::::1;::::0;::::1;::::0;;;;;11927:10:::1;::::0;11922:34:::1;::::0;;;;;;::::1;-1:-1:-1::0;;7453:1:0;7442:8;:12;-1:-1:-1;10724:1240:0;;;-1:-1:-1;;;;;;10724:1240:0:o;3293:41::-;;;;;;;;;;;;;:::o;7188:17::-;;;;:::o;3669:38::-;;;;;;;;;;;;;:::o;12076:1466::-;12125:12;12139;7361:8;;7373:1;7361:13;7353:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7418:1;7407:8;:12;;;7418:1;12206:13:::1;:11;:13::i;:::-;-1:-1:-1::0;12263:6:0::1;::::0;12344::::1;::::0;12423:40:::1;::::0;;;;;12457:4:::1;12423:40;::::0;::::1;::::0;;;12164:55;;-1:-1:-1;12164:55:0;;-1:-1:-1;12263:6:0::1;::::0;;::::1;::::0;12344;::::1;::::0;12245:15:::1;::::0;12263:6;;12423:25:::1;::::0;:40;;;;;::::1;::::0;;;;;;;;12263:6;12423:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12423:40:0;12490::::1;::::0;;;;;12524:4:::1;12490:40;::::0;::::1;::::0;;;12423;;-1:-1:-1;12474:13:0::1;::::0;12490:25:::1;::::0;::::1;::::0;::::1;::::0;:40;;;;;12423::::1;::::0;12490;;;;;;;:25;:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12490:40:0;12576:4:::1;12541:14;12558:24:::0;;;:9:::1;12490:40;12558:24:::0;;;;;12490:40;;-1:-1:-1;12608:30:0::1;12617:9:::0;12628;12608:8:::1;:30::i;:::-;12649:17;12669:11:::0;12595:43;;-1:-1:-1;12669:11:0;12779:23:::1;:9:::0;12793:8;12779:13:::1;:23::i;:::-;:38;;;;;;::::0;-1:-1:-1;12912:12:0;12886:23:::1;:9:::0;12900:8;12886:13:::1;:23::i;:::-;:38;;;;;;12876:48;;13001:1;12991:7;:11;:26;;;;;13016:1;13006:7;:11;12991:26;12983:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13073:31;13087:4;13094:9;13073:5;:31::i;:::-;13115:35;13129:7;13138:2;13142:7;13115:13;:35::i;:::-;13161;13175:7;13184:2;13188:7;13161:13;:35::i;:::-;13218:40;::::0;;;;;13252:4:::1;13218:40;::::0;::::1;::::0;;;:25:::1;::::0;::::1;::::0;::::1;::::0;:40;;;;;::::1;::::0;;;;;;;;:25;:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;13218:40:0;13280::::1;::::0;;;;;13314:4:::1;13280:40;::::0;::::1;::::0;;;13218;;-1:-1:-1;13280:25:0::1;::::0;::::1;::::0;::::1;::::0;:40;;;;;13218::::1;::::0;13280;;;;;;;;:25;:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;13280:40:0;;-1:-1:-1;13333:49:0::1;13341:8:::0;13280:40;13361:9;13372;13333:7:::1;:49::i;:::-;13397:5;13393:47;;;13431:8;::::0;13412:28:::1;::::0;13431:8:::1;13417::::0;;::::1;::::0;13431;;::::1;;13412:18;:28::i;:::-;13404:5;:36:::0;13393:47:::1;13496:38;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;13501:10:::1;::::0;13496:38:::1;::::0;;;;;;;;;::::1;7430:1;;;;;;;;;7453::::0;7442:8;:12;;;;12076:1466;;;:::o;3175:38::-;;;;;;;;;;;;;;;;;;;:::o;5328:139::-;5388:4;5405:32;5415:10;5427:2;5431:5;5405:9;:32::i;6580:46::-;6621:5;6580:46;:::o;15592:334::-;7361:8;;7373:1;7361:13;7353:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7418:1;7407:8;:12;15661:6:::1;::::0;15711::::1;::::0;15815:8:::1;::::0;15770:40:::1;::::0;;;;;15804:4:::1;15770:40;::::0;::::1;::::0;;;15661:6:::1;::::0;;::::1;::::0;15711;;::::1;::::0;15743:82:::1;::::0;15661:6;;15766:2;;15770:54:::1;::::0;15815:8:::1;;::::0;15661:6;;15770:25:::1;::::0;:40;;;;;::::1;::::0;;;;;;;;;15661:6;15770:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15770:40:0;;:44:::1;:54::i;:::-;15743:13;:82::i;:::-;15836;15850:7;15859:2;15863:54;15908:8;;;;;;;;;;;15863:54;;15870:7;15863:25;;;15897:4;15863:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;15836:82;-1:-1:-1::0;;7453:1:0;7442:8;:12;-1:-1:-1;15592:334:0:o;6730:22::-;;;;;;:::o;6787:21::-;;;;;;:::o;5784:674::-;5930:15;5918:8;:27;;5910:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6084:16;;6180:13;;;;5979:14;6180:13;;;:6;:13;;;;;;;;:15;;;;;;;;;6129:77;;3596:66;6129:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6119:88;;;;;;6020:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5996:237;;;;;;;;;6271:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5979:14;;6180:15;6271:26;;;;;-1:-1:-1;6271:26:0;;;;;;;;;;6180:15;6271:26;;;;;;;;;;;;;;;-1:-1:-1;;6271:26:0;;;;;;-1:-1:-1;;6316:30:0;;;;;;;:59;;;6370:5;6350:25;;:16;:25;;;6316:59;6308:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6419:31;6428:5;6435:7;6444:5;6419:8;:31::i;:::-;5784:674;;;;;;;;;:::o;3341:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;15975:158::-;7361:8;;7373:1;7361:13;7353:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7418:1;7407:8;:12;16031:6:::1;::::0;16024:39:::1;::::0;;;;;16057:4:::1;16024:39;::::0;::::1;::::0;;;16016:109:::1;::::0;16031:6:::1;;::::0;16024:24:::1;::::0;:39;;;;;::::1;::::0;;;;;;;;16031:6;16024:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16024:39:0;16072:6:::1;::::0;16065:39:::1;::::0;;;;;16098:4:::1;16065:39;::::0;::::1;::::0;;;16072:6:::1;::::0;;::::1;::::0;16065:24:::1;::::0;:39;;;;;16024::::1;::::0;16065;;;;;;;;16072:6;16065:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16065:39:0;16106:8:::1;::::0;::::1;::::0;;::::1;::::0;16116;;::::1;;16016:7;:109::i;:::-;7453:1:::0;7442:8;:12;15975:158::o;7709:287::-;6685:34;;;;;;;;;;;;;;;;;7837:43;;7826:10;7837:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7826:55;;;;7791:12;;7805:17;;7826:10;;;7837:43;7826:55;;;7837:43;7826:55;;7837:43;7826:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7790:91;;;;7900:7;:57;;;;-1:-1:-1;7912:11:0;;:16;;:44;;;7943:4;7932:24;;;;;;;;;;;;;;;-1:-1:-1;7932:24:0;7912:44;7892:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7709:287;;;;;:::o;2915:142::-;2967:6;2994;;;:30;;-1:-1:-1;;3009:5:0;;;3023:1;3018;3009:5;3018:1;3004:15;;;;;:20;2994:30;2986:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2778:129;2862:5;;;2857:16;;;;2849:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8825:860;8937:23;;;;;;:50;;-1:-1:-1;8964:23:0;;;;8937:50;8929:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9126:18;;9053:23;:15;:23;;;9126:18;;;;;9109:35;;;9182:15;;;;;;:33;;-1:-1:-1;9201:14:0;;;;;9182:33;:51;;;;-1:-1:-1;9219:14:0;;;;;9182:51;9178:336;;;9388:11;9335:64;;9340:44;9374:9;9340:27;9357:9;9340:16;:27::i;:::-;:33;;;;:44::i;:::-;9311:20;:88;;9335:50;;;;;:64;;;;9311:88;;;9438:64;;;9443:44;9477:9;9443:27;9460:9;9443:16;:27::i;:44::-;9414:20;:88;;9438:50;;;;;:64;;;;9414:88;;;9178:336;9524:8;:28;;;;;;;;;;;;9563;;;;;;;;;;;;9602:35;;;;;;;;;;;;9653:24;;;9658:8;;;9653:24;;9668:8;;;;;;;9653:24;;;;;;;;;;;;;;;;;8825:860;;;;;;:::o;4768:169::-;4849:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;4898:31;;;;;;;;;;;;;;;;;4768:169;;;:::o;4945:220::-;5039:15;;;;;;;:9;:15;;;;;;:26;;5059:5;5039:19;:26::i;:::-;5021:15;;;;;;;;:9;:15;;;;;;:44;;;;5092:13;;;;;;;:24;;5110:5;5092:17;:24::i;:::-;5076:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;5132:25;;;;;;;5076:13;;5132:25;;;;;;;;;;;;;4945:220;;;:::o;9775:837::-;9848:10;9871:13;9905:7;;;;;;;;;;;9887:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9887:34:0;9984:5;;9940:19;;;;;;;-1:-1:-1;9887:34:0;;-1:-1:-1;9984:5:0;10015:590;;10045:11;;10041:494;;10077:10;10090:41;10100:30;;:15;;;;:30;;:19;:30::i;10090:41::-;10077:54;;10150:14;10167:17;10177:6;10167:9;:17::i;:::-;10150:34;;10215:9;10207:5;:17;10203:317;;;10249:14;10266:37;10282:20;:5;10292:9;10282;:20::i;:::-;10266:11;;;:15;:37::i;:::-;10249:54;-1:-1:-1;10326:16:0;10345:27;10362:9;10345:12;:5;10355:1;10345:9;:12::i;:::-;:16;;:27::i;:::-;10326:46;;10395:14;10424:11;10412:9;:23;;;;;;;-1:-1:-1;10462:13:0;;10458:42;;10477:23;10483:5;10490:9;10477:5;:23::i;:::-;10203:317;;;;10041:494;;;10015:590;;;10556:11;;10552:53;;10592:1;10584:5;:9;10552:53;9775:837;;;;;;:::o;294:303::-;339:6;366:1;362;:5;358:232;;;-1:-1:-1;388:1:0;421;417;413:5;;:9;437:92;448:1;444;:5;437:92;;;474:1;470:5;;512:1;507;503;499;:5;;;;;;:9;498:15;;;;;;494:19;;437:92;;;358:232;;;;550:6;;546:44;;-1:-1:-1;577:1:0;546:44;294:303;;;:::o;4342:201::-;4415:11;;:22;;4431:5;4415:15;:22::i;:::-;4401:11;:36;;;4464:13;;;;;:9;:13;;;;;;:24;;4482:5;4464:17;:24::i;:::-;4448:13;;;;;;;:9;:13;;;;;;;;:40;;;;4504:31;;;;;;;4448:13;;;;4504:31;;;;;;;;;;4342:201;;:::o;80:96::-;132:6;159:1;155;:5;:13;;167:1;155:13;;;163:1;155:13;151:17;80:96;-1:-1:-1;;;80:96:0:o;4551:209::-;4630:15;;;;;;;:9;:15;;;;;;:26;;4650:5;4630:19;:26::i;:::-;4612:15;;;;;;;:9;:15;;;;;:44;;;;4681:11;:22;;4697:5;4681:15;:22::i;:::-;4667:11;:36;;;4719:33;;;;;;;;;;;;;;;;;;;;;;4551:209;;:::o;2312:120::-;2388:10;;2257:6;2388:17;;2312:120::o;2503:108::-;2563:9;2593:10;;;2589:14;;;2593:10;2589:14;;;;;;2503:108;-1:-1:-1;;;2503:108:0:o;2642:128::-;2726:5;;;2721:16;;;;2713:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

ipfs://dcc02d08a0d2a855883ec246a1af8cf8f67b5238ab62de5a68f41c5b52af7d5b
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.