Contract 0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e9 1

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xe0b9e83a99eb6a1e8352fbeee807925125ed2cb4dcba182bcb46353cc7717e35Approve57517442022-11-27 7:31:561 day 10 hrs ago0x077a304e832f423c3cceb0d489b88e88b2e21fde IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.2158916859930
0xa937bc44d60dec1fce36f29e203cf1c8466379789e41a44b9c73225661b2a40cApprove56782852022-11-22 11:37:006 days 6 hrs ago0x55b7b6d0997c44d9a4261814f24f790e2bf5940d IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.2160425112050
0xf53682d82b977ef7e4ccf61179776e4f7e367a3c936afe58a0ff18a0866e1cb4Approve56771422022-11-22 9:49:056 days 8 hrs ago0xd45cd4fa708edaad6fa414390040c1161e9be046 IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.216111397269 4,872.42181696
0xfb09b319d88093aa58a64638c1572566258f971dac4bead2ca3d44b8c3e0fc7cApprove56229222022-11-18 20:27:249 days 21 hrs ago0x0caa9197cf27042a3540e756ea143e939c3e8eda IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.2161567961210
0x1efaed589008f161fea14416305178faf263629eeb1633085799d363aaabcc6eApprove55835662022-11-16 6:28:5812 days 11 hrs ago0x1210c6597a32f68301d01ebc28682a8de0a75efe IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.216303527252 4,876.753556676
0x15d6f888b2e6bebc8a2d11eb2f46fcc4a944deb16b765f8e77fe10411b9defb5Approve55743652022-11-15 15:57:5813 days 1 hr ago0x8b4c38760b99d631bf478f73556d0182b2d7260c IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.2162555133480
0xd8312bf0abdf46b0f2cbba53127bc73cb8726d831bb8ca667a3b0058b784b612Approve55683222022-11-15 6:25:0013 days 11 hrs ago0x0f57ef1147705d5ddc3591093f086f6e027550bb IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.2162678228940
0x0bdb719a3391cbe621276985506613def56b37d0ae2ec7f20b1763ae31652de7Approve55605362022-11-14 18:04:2613 days 23 hrs ago0xa3e55a3310f80cca6673f18324682e237e04dc7f IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.2162833437010
0xa38c1928145ede5ff3e2d4fdd11aec5699fceeda901588b3b00be29a70b5cfc1Approve55519602022-11-14 4:27:3414 days 13 hrs ago0x06d092191d4884e233f24aecc86bb2d798bf93e0 IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.2163002145990
0xe08a67a288dade632d8cd68f64c559f28d47042249e841b7bcecb194cf0809bbApprove55465732022-11-13 19:52:2714 days 21 hrs ago0x23e08985532951b68261a47a232773c72f7e54c5 IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.113085225567 4,879.410837388
0x0239e7d3f8554e5d92d5e708c39dcd9cefb928a4972a1ee46e58234d7957ae5bApprove55465692022-11-13 19:52:0414 days 21 hrs ago0x23e08985532951b68261a47a232773c72f7e54c5 IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.113085229565 4,879.411009921
0x660910bcabf74709ab88f550b184489e07cdb296cb34951cf21cdd6b2fc5c1a2Approve55286822022-11-12 15:23:4916 days 2 hrs ago0x83bc66855204db0889006a4dc63f7a0f6b63ba83 IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.2163451328710
0xf188c620faa694ce486375a0604802ff761f692b830e06e31e2f601130297a46Approve55245852022-11-12 8:56:1116 days 8 hrs ago0x0b566464daf9a730f9ec9dca4d8467a55bb0d3f1 IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.216419908592 4,879.377476489
0x9350b7636d008b0170c82158083fb9fa7c958fbe00d35fa98a34802cf0d75f3cApprove55096442022-11-11 9:21:4617 days 8 hrs ago0x7916757491106582a7c97523be86300d3b207914 IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.216491153435 4,880.98375424
0x266e91c26508a167b7baeef7717d8836da47c942689473bbdfa42987b6f559cfApprove55062282022-11-11 3:58:5917 days 13 hrs ago0x972dd24bba25c2970d57628fb3596f73aa6a42c6 IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.2163906438320
0x5642fe1769b6bd7eea252af6e4547b6e6b53c3245397107feb843c04d771d283Approve54968862022-11-10 13:14:4518 days 4 hrs ago0x6c13a859b147f2ec7822b66e3266b046848280aa IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.216475960927 4,880.641225761
0xa77e666293a2cda8a6a17989f2181bda1ea3f7f945c3f070819ca6b35297f219Approve54849252022-11-09 18:17:2118 days 23 hrs ago0xdcbf60fe660ab5a06a4f95084b859d2733f14bc3 IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.1208695080030
0x40ca64fa9f9fdcb1af02cb4a9c2cd6140a798311c9ad34a4b08785ad82939865Approve54849102022-11-09 18:15:5618 days 23 hrs ago0xdcbf60fe660ab5a06a4f95084b859d2733f14bc3 IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.1130913252930
0x9d49826942f3f8cae958f45f12e4536416ee38627789b07616edd855f6aa9867Approve54606982022-11-08 3:51:4820 days 13 hrs ago0x3825b1457d5631024e4ab1095d8a393968cf6421 IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.2164810914030
0x604d2127468edcb281c802fe460518f1c87bc258c6ff2d9a15303740bad8831cApprove54437632022-11-07 1:08:3921 days 16 hrs ago0xdd589f5a8762c74202258ab8d3dc371fed9a72a2 IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.2165153852730
0xfda5c345257f03df9db8a849bda155ce7e634b388a2b32b38c9ade1600ff3393Approve54232442022-11-05 16:47:1023 days 1 hr ago0x77984dc88aab3d9c843256d7aabdc82540c94f69 IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.216623227868 4,883.961488665
0x5938ad9f5f1c1f34e5222dafef52af19171f8764c506c9e7bffd9fcc6dca278dApprove54153222022-11-05 4:18:0023 days 13 hrs ago0x5c48e355611559aca627c6f88bab6f7c6ec5a745 IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.2165727702550
0x29df3adabbbe1ba0846ea4a3756e15ba93c1c0deb44de35edb32ae1e187ec767Approve53987172022-11-04 2:07:2224 days 15 hrs ago0x9c85df48828f96661aee808d04f1742d4f17a5d1 IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.216606394050
0x1d47310815a0bd93c98a958eacbed632453967f4d412d3857e3eec9e3b0f1207Approve53979202022-11-04 0:52:1124 days 16 hrs ago0xacbeb7fa7d9d89ab09378435883e1263925c831f IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.2166080191180
0xeb74b757f62710abcf41895f5bc12a418fc3d01f0e922f69b1bd138aa776a230Transfer53934162022-11-03 17:46:3025 days 3 mins agoAnnex Finance: Deployer IN  0xbdb223806f63fa0c4e4ed4a06d8dd2bc3816c9e90 CRO0.215862864074 4,885.322592555
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x2054013bbedf3da7e7344fb6df3bed6d577c5ef4d050a8990c6f1efa61c09dbf15729352022-02-20 14:41:02281 days 3 hrs ago 0x1cc79ecb3a6f9b6d6faf7298ec6d8667e814d592  Contract Creation0 CRO
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AnnexPair

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-06-14
*/

// File: contracts/interfaces/IAnnexCallee.sol

pragma solidity >=0.5.0;

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

// File: contracts/interfaces/IAnnexFactory.sol

pragma solidity >=0.5.0;

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

// File: contracts/interfaces/IERC20.sol

pragma solidity >=0.5.0;

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

// File: contracts/libraries/UQ112x112.sol

pragma solidity =0.5.16;

// 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/libraries/Math.sol

pragma solidity =0.5.16;

// 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/libraries/SafeMath.sol

pragma solidity =0.5.16;

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

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

// File: contracts/interfaces/IAnnexERC20.sol

pragma solidity >=0.5.0;

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure 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);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

// File: contracts/AnnexERC20.sol

pragma solidity =0.5.16;



contract AnnexERC20 is IAnnexERC20 {
    using SafeMath for uint;

    string public constant name = 'Annex LPs';
    string public constant symbol = 'ANN-LP';
    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, 'Annex: 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, 'Annex: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}

// File: contracts/interfaces/IAnnexPair.sol

pragma solidity >=0.5.0;

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure 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);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

// File: contracts/AnnexPair.sol

pragma solidity =0.5.16;








contract AnnexPair is IAnnexPair, AnnexERC20 {
    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, 'Annex: 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))), 'Annex: 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, 'Annex: 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), 'Annex: 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 = IAnnexFactory(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)).mul(20);
                    uint denominator = rootK.mul(15).add(rootKLast.mul(5));
                    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, 'Annex: 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, 'Annex: 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, 'Annex: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'Annex: 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, 'Annex: 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) IAnnexCallee(to).annexCall(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, 'Annex: 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), 'Annex: 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 ABI

[{"inputs":[],"payable":false,"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"},{"constant":true,"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"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":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sync","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526001600c5534801561001557600080fd5b50604051469080605261234582396040805191829003605201822082820182526009835268416e6e6578204c507360b81b6020938401528151808301835260018152603160f81b908401528151808401919091527f16f22dc51254adb8883d681bf6571c7c7a474cea58a1872106ea1e9d028c0863818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612241806101046000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610b1e565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610b43565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b6d565b604080519115158252519081900360200190f35b610339610b84565b604080516001600160a01b039092168252519081900360200190f35b61035d610b93565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b99565b61035d610c33565b6103b5610c57565b6040805160ff9092168252519081900360200190f35b61035d610c5c565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c62565b61035d610ce2565b61035d610ce8565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610cee565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316610fea565b61035d610ffc565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316611002565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b0316611014565b6040805192835260208301919091528051918290030190f35b6102446113b6565b61031d600480360360408110156104e857600080fd5b506001600160a01b0381351690602001356113d8565b61035d6113e5565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b03166113eb565b610339611552565b610339611561565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611570565b61035d600480360360408110156105a357600080fd5b506001600160a01b038135811691602001351661176e565b61023a61178b565b600c5460011461060a576040805162461bcd60e51b815260206004820152600d60248201526c105b9b995e0e881313d0d2d151609a1b604482015290519081900360640190fd5b6000600c558415158061061d5750600084115b6106585760405162461bcd60e51b81526004018080602001828103825260218152602001806121c86021913960400191505060405180910390fd5b600080610663610b43565b5091509150816001600160701b0316871080156106885750806001600160701b031686105b6106d9576040805162461bcd60e51b815260206004820152601d60248201527f416e6e65783a20494e53554646494349454e545f4c4951554944495459000000604482015290519081900360640190fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107175750806001600160a01b0316896001600160a01b031614155b61075c576040805162461bcd60e51b8152602060048201526011602482015270416e6e65783a20494e56414c49445f544f60781b604482015290519081900360640190fd5b8a1561076d5761076d828a8d6118e9565b891561077e5761077e818a8c6118e9565b861561083957886001600160a01b03166340c77747338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03166001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561082057600080fd5b505af1158015610834573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561087f57600080fd5b505afa158015610893573d6000803e3d6000fd5b505050506040513d60208110156108a957600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108f557600080fd5b505afa158015610909573d6000803e3d6000fd5b505050506040513d602081101561091f57600080fd5b5051925060009150506001600160701b0385168a90038311610942576000610951565b89856001600160701b03160383035b9050600089856001600160701b031603831161096e57600061097d565b89856001600160701b03160383035b9050600082118061098e5750600081115b6109df576040805162461bcd60e51b815260206004820181905260248201527f416e6e65783a20494e53554646494349454e545f494e5055545f414d4f554e54604482015290519081900360640190fd5b6000610a136109f584600263ffffffff611a7c16565b610a07876103e863ffffffff611a7c16565b9063ffffffff611adf16565b90506000610a2b6109f584600263ffffffff611a7c16565b9050610a5c620f4240610a506001600160701b038b8116908b1663ffffffff611a7c16565b9063ffffffff611a7c16565b610a6c838363ffffffff611a7c16565b1015610aaa576040805162461bcd60e51b8152602060048201526008602482015267416e6e65783a204b60c01b604482015290519081900360640190fd5b5050610ab884848888611b2f565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b60405180604001604052806009815260200168416e6e6578204c507360b81b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b7a338484611cf0565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610c1e576001600160a01b0384166000908152600260209081526040808320338452909152902054610bf9908363ffffffff611adf16565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c29848484611d52565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610cb4576040805162461bcd60e51b815260206004820152601060248201526f20b73732bc1d102327a92124a22222a760811b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610d37576040805162461bcd60e51b815260206004820152600d60248201526c105b9b995e0e881313d0d2d151609a1b604482015290519081900360640190fd5b6000600c81905580610d47610b43565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d9b57600080fd5b505afa158015610daf573d6000803e3d6000fd5b505050506040513d6020811015610dc557600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e1857600080fd5b505afa158015610e2c573d6000803e3d6000fd5b505050506040513d6020811015610e4257600080fd5b505190506000610e61836001600160701b03871663ffffffff611adf16565b90506000610e7e836001600160701b03871663ffffffff611adf16565b90506000610e8c8787611e0c565b60005490915080610ec957610eb56103e8610a07610eb0878763ffffffff611a7c16565b611f7f565b9850610ec460006103e8611fd1565b610f18565b610f156001600160701b038916610ee6868463ffffffff611a7c16565b81610eed57fe5b046001600160701b038916610f08868563ffffffff611a7c16565b81610f0f57fe5b04612067565b98505b60008911610f575760405162461bcd60e51b81526004018080602001828103825260248152602001806121e96024913960400191505060405180910390fd5b610f618a8a611fd1565b610f6d86868a8a611b2f565b8115610f9d57600854610f99906001600160701b0380821691600160701b90041663ffffffff611a7c16565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461105e576040805162461bcd60e51b815260206004820152600d60248201526c105b9b995e0e881313d0d2d151609a1b604482015290519081900360640190fd5b6000600c8190558061106e610b43565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b1580156110ca57600080fd5b505afa1580156110de573d6000803e3d6000fd5b505050506040513d60208110156110f457600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561114257600080fd5b505afa158015611156573d6000803e3d6000fd5b505050506040513d602081101561116c57600080fd5b50513060009081526001602052604081205491925061118b8888611e0c565b600054909150806111a2848763ffffffff611a7c16565b816111a957fe5b049a50806111bd848663ffffffff611a7c16565b816111c457fe5b04995060008b1180156111d7575060008a115b6112125760405162461bcd60e51b81526004018080602001828103825260248152602001806121a46024913960400191505060405180910390fd5b61121c308461207f565b611227878d8d6118e9565b611232868d8c6118e9565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561127857600080fd5b505afa15801561128c573d6000803e3d6000fd5b505050506040513d60208110156112a257600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b1580156112ee57600080fd5b505afa158015611302573d6000803e3d6000fd5b505050506040513d602081101561131857600080fd5b5051935061132885858b8b611b2f565b811561135857600854611354906001600160701b0380821691600160701b90041663ffffffff611a7c16565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b604051806040016040528060068152602001650414e4e2d4c560d41b81525081565b6000610b7a338484611d52565b6103e881565b600c54600114611432576040805162461bcd60e51b815260206004820152600d60248201526c105b9b995e0e881313d0d2d151609a1b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926114e192859287926114dc926001600160701b03169185916370a0823191602480820192602092909190829003018186803b1580156114a457600080fd5b505afa1580156114b8573d6000803e3d6000fd5b505050506040513d60208110156114ce57600080fd5b50519063ffffffff611adf16565b6118e9565b600854604080516370a0823160e01b8152306004820152905161154892849287926114dc92600160701b90046001600160701b0316916001600160a01b038616916370a0823191602480820192602092909190829003018186803b1580156114a457600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b428410156115b6576040805162461bcd60e51b815260206004820152600e60248201526d105b9b995e0e881156141254915160921b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156116d1573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906117075750886001600160a01b0316816001600160a01b0316145b611758576040805162461bcd60e51b815260206004820152601860248201527f416e6e65783a20494e56414c49445f5349474e41545552450000000000000000604482015290519081900360640190fd5b611763898989611cf0565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c546001146117d2576040805162461bcd60e51b815260206004820152600d60248201526c105b9b995e0e881313d0d2d151609a1b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b815230600482015290516118e2926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561182357600080fd5b505afa158015611837573d6000803e3d6000fd5b505050506040513d602081101561184d57600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561189a57600080fd5b505afa1580156118ae573d6000803e3d6000fd5b505050506040513d60208110156118c457600080fd5b50516008546001600160701b0380821691600160701b900416611b2f565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b602083106119965780518252601f199092019160209182019101611977565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146119f8576040519150601f19603f3d011682016040523d82523d6000602084013e6119fd565b606091505b5091509150818015611a2b575080511580611a2b5750808060200190516020811015611a2857600080fd5b50515b611a75576040805162461bcd60e51b8152602060048201526016602482015275105b9b995e0e881514905394d1915497d1905253115160521b604482015290519081900360640190fd5b5050505050565b6000811580611a9757505080820282828281611a9457fe5b04145b610b7e576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b7e576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611b4d57506001600160701b038311155b611b90576040805162461bcd60e51b815260206004820152600f60248201526e416e6e65783a204f564552464c4f5760881b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611bc057506001600160701b03841615155b8015611bd457506001600160701b03831615155b15611c45578063ffffffff16611c0285611bed8661211d565b6001600160e01b03169063ffffffff61212f16565b600980546001600160e01b03929092169290920201905563ffffffff8116611c2d84611bed8761211d565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611d7b908263ffffffff611adf16565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611db0908263ffffffff61215416565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611e5d57600080fd5b505afa158015611e71573d6000803e3d6000fd5b505050506040513d6020811015611e8757600080fd5b5051600b546001600160a01b038216158015945091925090611f6b578015611f66576000611eca610eb06001600160701b0388811690881663ffffffff611a7c16565b90506000611ed783611f7f565b905080821115611f63576000611f0a6014610a50611efb868663ffffffff611adf16565b6000549063ffffffff611a7c16565b90506000611f3f611f2284600563ffffffff611a7c16565b611f3386600f63ffffffff611a7c16565b9063ffffffff61215416565b90506000818381611f4c57fe5b0490508015611f5f57611f5f8782611fd1565b5050505b50505b611f77565b8015611f77576000600b555b505092915050565b60006003821115611fc2575080600160028204015b81811015611fbc57809150600281828581611fab57fe5b040181611fb457fe5b049050611f94565b50611fcc565b8115611fcc575060015b919050565b600054611fe4908263ffffffff61215416565b60009081556001600160a01b03831681526001602052604090205461200f908263ffffffff61215416565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106120765781612078565b825b9392505050565b6001600160a01b0382166000908152600160205260409020546120a8908263ffffffff611adf16565b6001600160a01b038316600090815260016020526040812091909155546120d5908263ffffffff611adf16565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161214c57fe5b049392505050565b80820182811015610b7e576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe416e6e65783a20494e53554646494349454e545f4c49515549444954595f4255524e4544416e6e65783a20494e53554646494349454e545f4f55545055545f414d4f554e54416e6e65783a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a72315820a01529bbd2528788bc0e89bc268a6fab5c8c65b2449bab7fce531ee8c7fa9a2664736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429

Deployed ByteCode Sourcemap

11053:9635:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11053:9635:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18234:1861;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;18234:1861:0;;;;;;;;-1:-1:-1;;;;;18234:1861:0;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;18234:1861:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18234:1861:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;18234:1861:0;;-1:-1:-1;18234:1861:0;-1:-1:-1;18234:1861:0;:::i;:::-;;5123:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5123:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12058:231;;;:::i;:::-;;;;-1:-1:-1;;;;;12058:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7169:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7169:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;11351:21;;;:::i;:::-;;;;-1:-1:-1;;;;;11351:21:0;;;;;;;;;;;;;;5260:24;;;:::i;:::-;;;;;;;;;;;;;;;;7471:301;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7471:301:0;;;;;;;;;;;;;;;;;:::i;5552:108::-;;;:::i;5218:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5409:31;;;:::i;13114:206::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;13114:206:0;;;;;;;;;;:::i;11702:32::-;;;:::i;11741:::-;;;:::i;15312:1236::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15312:1236:0;-1:-1:-1;;;;;15312:1236:0;;:::i;5291:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5291:41:0;-1:-1:-1;;;;;5291:41:0;;:::i;11780:17::-;;;:::i;5667:38::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5667:38:0;-1:-1:-1;;;;;5667:38:0;;:::i;16660:1462::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16660:1462:0;-1:-1:-1;;;;;16660:1462:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5171:40;;;:::i;7324:139::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7324:139:0;;;;;;;;:::i;11172:46::-;;;:::i;20144:334::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20144:334:0;-1:-1:-1;;;;;20144:334:0;;:::i;11322:22::-;;;:::i;11379:21::-;;;:::i;7780:666::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;7780:666:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5339:61::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5339:61:0;;;;;;;;;;:::i;20527:158::-;;;:::i;18234:1861::-;11953:8;;11965:1;11953:13;11945:39;;;;;-1:-1:-1;;;11945:39:0;;;;;;;;;;;;-1:-1:-1;;;11945:39:0;;;;;;;;;;;;;;;12006:1;11995:8;:12;18348:14;;;;:32;;;18379:1;18366:10;:14;18348:32;18340:78;;;;-1:-1:-1;;;18340:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18430:17;18449;18471:13;:11;:13::i;:::-;18429:55;;;;;18531:9;-1:-1:-1;;;;;18518:22:0;:10;:22;:48;;;;;18557:9;-1:-1:-1;;;;;18544:22:0;:10;:22;18518:48;18510:90;;;;;-1:-1:-1;;;18510:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18745:6;;18780;;18613:13;;;;-1:-1:-1;;;;;18745:6:0;;;;18780;;;;18805:13;;;;;;;:30;;;18828:7;-1:-1:-1;;;;;18822:13:0;:2;-1:-1:-1;;;;;18822:13:0;;;18805:30;18797:60;;;;;-1:-1:-1;;;18797:60:0;;;;;;;;;;;;-1:-1:-1;;;18797:60:0;;;;;;;;;;;;;;;18872:14;;18868:58;;18888:38;18902:7;18911:2;18915:10;18888:13;:38::i;:::-;18975:14;;18971:58;;18991:38;19005:7;19014:2;19018:10;18991:13;:38::i;:::-;19078:15;;19074:89;;19108:2;-1:-1:-1;;;;;19095:26:0;;19122:10;19134;19146;19158:4;;19095:68;;;;;;;;;;;;;-1:-1:-1;;;;;19095:68:0;-1:-1:-1;;;;;19095:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;19095:68:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19095:68:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19095:68:0;;;;19074:89;19185:40;;;-1:-1:-1;;;19185:40:0;;19219:4;19185:40;;;;;;-1:-1:-1;;;;;19185:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19185:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19185:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19185:40:0;19247;;;-1:-1:-1;;;19247:40:0;;19281:4;19247:40;;;;;;19185;;-1:-1:-1;;;;;;19247:25:0;;;;;:40;;;;;19185;;19247;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19247:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19247:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19247:40:0;;-1:-1:-1;19309:14:0;;-1:-1:-1;;;;;;;19337:22:0;;;;;19326:33;;:75;;19400:1;19326:75;;;19386:10;19374:9;-1:-1:-1;;;;;19374:22:0;;19362:8;:35;19326:75;19309:92;;19412:14;19452:10;19440:9;-1:-1:-1;;;;;19440:22:0;;19429:8;:33;:75;;19503:1;19429:75;;;19489:10;19477:9;-1:-1:-1;;;;;19477:22:0;;19465:8;:35;19429:75;19412:92;;19535:1;19523:9;:13;:30;;;;19552:1;19540:9;:13;19523:30;19515:75;;;;;-1:-1:-1;;;19515:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19676:21;19700:40;19723:16;:9;19737:1;19723:16;:13;:16;:::i;:::-;19700:18;:8;19713:4;19700:18;:12;:18;:::i;:::-;:22;:40;:22;:40;:::i;:::-;19676:64;-1:-1:-1;19751:21:0;19775:40;19798:16;:9;19812:1;19798:16;:13;:16;:::i;19775:40::-;19751:64;-1:-1:-1;19876:43:0;19911:7;19876:30;-1:-1:-1;;;;;19876:15:0;;;;:30;;;:19;:30;:::i;:::-;:34;:43;:34;:43;:::i;:::-;19834:38;:16;19855;19834:38;:20;:38;:::i;:::-;:85;;19826:106;;;;;-1:-1:-1;;;19826:106:0;;;;;;;;;;;;-1:-1:-1;;;19826:106:0;;;;;;;;;;;;;;;12018:1;;19956:49;19964:8;19974;19984:9;19995;19956:7;:49::i;:::-;20021:66;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20021:66:0;;;20026:10;;20021:66;;;;;;;;;-1:-1:-1;;12041:1:0;12030:8;:12;-1:-1:-1;;;;;;;;;18234:1861:0:o;5123:41::-;;;;;;;;;;;;;;-1:-1:-1;;;5123:41:0;;;;:::o;12058:231::-;12191:8;;-1:-1:-1;;;;;12191:8:0;;;;-1:-1:-1;;;12222:8:0;;;;;;-1:-1:-1;;;12263:18:0;;;;;12058:231::o;7169:147::-;7233:4;7250:36;7259:10;7271:7;7280:5;7250:8;:36::i;:::-;-1:-1:-1;7304:4:0;7169:147;;;;;:::o;11351:21::-;;;-1:-1:-1;;;;;11351:21:0;;:::o;5260:24::-;;;;:::o;7471:301::-;-1:-1:-1;;;;;7570:15:0;;7549:4;7570:15;;;:9;:15;;;;;;;;7586:10;7570:27;;;;;;;;-1:-1:-1;;7570:39:0;7566:140;;-1:-1:-1;;;;;7656:15:0;;;;;;:9;:15;;;;;;;;7672:10;7656:27;;;;;;;;:38;;7688:5;7656:38;:31;:38;:::i;:::-;-1:-1:-1;;;;;7626:15:0;;;;;;:9;:15;;;;;;;;7642:10;7626:27;;;;;;;:68;7566:140;7716:26;7726:4;7732:2;7736:5;7716:9;:26::i;:::-;-1:-1:-1;7760:4:0;7471:301;;;;;:::o;5552:108::-;5594:66;5552:108;:::o;5218:35::-;5251:2;5218:35;:::o;5409:31::-;;;;:::o;13114:206::-;13210:7;;-1:-1:-1;;;;;13210:7:0;13196:10;:21;13188:50;;;;;-1:-1:-1;;;13188:50:0;;;;;;;;;;;;-1:-1:-1;;;13188:50:0;;;;;;;;;;;;;;;13269:6;:16;;-1:-1:-1;;;;;13269:16:0;;;-1:-1:-1;;;;;;13269:16:0;;;;;;;13296:6;:16;;;;;;;;;;;13114:206::o;11702:32::-;;;;:::o;11741:::-;;;;:::o;15312:1236::-;15361:14;11953:8;;11965:1;11953:13;11945:39;;;;;-1:-1:-1;;;11945:39:0;;;;;;;;;;;;-1:-1:-1;;;11945:39:0;;;;;;;;;;;;;;;12006:1;11995:8;:12;;;12006:1;15430:13;:11;:13::i;:::-;-1:-1:-1;15492:6:0;;15485:39;;;-1:-1:-1;;;15485:39:0;;15518:4;15485:39;;;;;;15388:55;;-1:-1:-1;15388:55:0;;-1:-1:-1;15469:13:0;;-1:-1:-1;;;;;15492:6:0;;;;15485:24;;:39;;;;;;;;;;;;;;15492:6;15485:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15485:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15485:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15485:39:0;15558:6;;15551:39;;;-1:-1:-1;;;15551:39:0;;15584:4;15551:39;;;;;;15485;;-1:-1:-1;15535:13:0;;-1:-1:-1;;;;;15558:6:0;;;;15551:24;;:39;;;;;15485;;15551;;;;;;;;15558:6;15551:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15551:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15551:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15551:39:0;;-1:-1:-1;15601:12:0;15616:23;:8;-1:-1:-1;;;;;15616:23:0;;;:12;:23;:::i;:::-;15601:38;-1:-1:-1;15650:12:0;15665:23;:8;-1:-1:-1;;;;;15665:23:0;;;:12;:23;:::i;:::-;15650:38;;15701:10;15714:30;15723:9;15734;15714:8;:30::i;:::-;15755:17;15775:11;15701:43;;-1:-1:-1;15879:17:0;15875:352;;15925:54;11213:5;15925:31;15935:20;:7;15947;15935:20;:11;:20;:::i;:::-;15925:9;:31::i;:54::-;15913:66;;15993:36;16007:1;11213:5;15993;:36::i;:::-;15875:352;;;16129:86;-1:-1:-1;;;;;16138:37:0;;:25;:7;16150:12;16138:25;:11;:25;:::i;:::-;:37;;;;;;-1:-1:-1;;;;;16177:37:0;;:25;:7;16189:12;16177:25;:11;:25;:::i;:::-;:37;;;;;;16129:8;:86::i;:::-;16117:98;;15875:352;16257:1;16245:9;:13;16237:62;;;;-1:-1:-1;;;16237:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16310:20;16316:2;16320:9;16310:5;:20::i;:::-;16343:49;16351:8;16361;16371:9;16382;16343:7;:49::i;:::-;16407:5;16403:47;;;16441:8;;16422:28;;-1:-1:-1;;;;;16427:8:0;;;;-1:-1:-1;;;16441:8:0;;;16422:28;:18;:28;:::i;:::-;16414:5;:36;16403:47;16506:34;;;;;;;;;;;;;;16511:10;;16506:34;;;;;;;;-1:-1:-1;;12041:1:0;12030:8;:12;-1:-1:-1;15312:1236:0;;;-1:-1:-1;;;;;;15312:1236:0:o;5291:41::-;;;;;;;;;;;;;:::o;11780:17::-;;;;:::o;5667:38::-;;;;;;;;;;;;;:::o;16660:1462::-;16709:12;16723;11953:8;;11965:1;11953:13;11945:39;;;;;-1:-1:-1;;;11945:39:0;;;;;;;;;;;;-1:-1:-1;;;11945:39:0;;;;;;;;;;;;;;;12006:1;11995:8;:12;;;12006:1;16790:13;:11;:13::i;:::-;-1:-1:-1;16847:6:0;;16928;;17007:40;;;-1:-1:-1;;;17007:40:0;;17041:4;17007:40;;;;;;16748:55;;-1:-1:-1;16748:55:0;;-1:-1:-1;;;;;;16847:6:0;;;;16928;;;16829:15;;16847:6;;17007:25;;:40;;;;;;;;;;;;;;16847:6;17007:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17007:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17007:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17007:40:0;17074;;;-1:-1:-1;;;17074:40:0;;17108:4;17074:40;;;;;;17007;;-1:-1:-1;17058:13:0;;-1:-1:-1;;;;;17074:25:0;;;;;:40;;;;;17007;;17074;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17074:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17074:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17074:40:0;17160:4;17125:14;17142:24;;;:9;17074:40;17142:24;;;;;17074:40;;-1:-1:-1;17192:30:0;17201:9;17212;17192:8;:30::i;:::-;17233:17;17253:11;17179:43;;-1:-1:-1;17253:11:0;17363:23;:9;17377:8;17363:23;:13;:23;:::i;:::-;:38;;;;;;;-1:-1:-1;17496:12:0;17470:23;:9;17484:8;17470:23;:13;:23;:::i;:::-;:38;;;;;;17460:48;;17585:1;17575:7;:11;:26;;;;;17600:1;17590:7;:11;17575:26;17567:75;;;;-1:-1:-1;;;17567:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17653:31;17667:4;17674:9;17653:5;:31::i;:::-;17695:35;17709:7;17718:2;17722:7;17695:13;:35::i;:::-;17741;17755:7;17764:2;17768:7;17741:13;:35::i;:::-;17798:40;;;-1:-1:-1;;;17798:40:0;;17832:4;17798:40;;;;;;-1:-1:-1;;;;;17798:25:0;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17798:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17798:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17798:40:0;17860;;;-1:-1:-1;;;17860:40:0;;17894:4;17860:40;;;;;;17798;;-1:-1:-1;;;;;;17860:25:0;;;;;:40;;;;;17798;;17860;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17860:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17860:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17860:40:0;;-1:-1:-1;17913:49:0;17921:8;17860:40;17941:9;17952;17913:7;:49::i;:::-;17977:5;17973:47;;;18011:8;;17992:28;;-1:-1:-1;;;;;17997:8:0;;;;-1:-1:-1;;;18011:8:0;;;17992:28;:18;:28;:::i;:::-;17984:5;:36;17973:47;18076:38;;;;;;;;;;;;;;-1:-1:-1;;;;;18076:38:0;;;18081:10;;18076:38;;;;;;;;;;;12018:1;;;;;;;;;12041;12030:8;:12;;;;16660:1462;;;:::o;5171:40::-;;;;;;;;;;;;;;-1:-1:-1;;;5171:40:0;;;;:::o;7324:139::-;7384:4;7401:32;7411:10;7423:2;7427:5;7401:9;:32::i;11172:46::-;11213:5;11172:46;:::o;20144:334::-;11953:8;;11965:1;11953:13;11945:39;;;;;-1:-1:-1;;;11945:39:0;;;;;;;;;;;;-1:-1:-1;;;11945:39:0;;;;;;;;;;;;;;;12006:1;11995:8;:12;20213:6;;20263;;20367:8;;20322:40;;;-1:-1:-1;;;20322:40:0;;20356:4;20322:40;;;;;;-1:-1:-1;;;;;20213:6:0;;;;20263;;;;20295:82;;20213:6;;20318:2;;20322:54;;-1:-1:-1;;;;;20367:8:0;;20213:6;;20322:25;;:40;;;;;;;;;;;;;;;20213:6;20322:40;;;5:2:-1;;;;30:1;27;20:12;5:2;20322:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20322:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20322:40:0;;:54;:44;:54;:::i;:::-;20295:13;:82::i;:::-;20460:8;;20415:40;;;-1:-1:-1;;;20415:40:0;;20449:4;20415:40;;;;;;20388:82;;20402:7;;20411:2;;20415:54;;-1:-1:-1;;;20460:8:0;;-1:-1:-1;;;;;20460:8:0;;-1:-1:-1;;;;;20415:25:0;;;;;:40;;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;20388:82:0;-1:-1:-1;;12041:1:0;12030:8;:12;-1:-1:-1;20144:334:0:o;11322:22::-;;;-1:-1:-1;;;;;11322:22:0;;:::o;11379:21::-;;;-1:-1:-1;;;;;11379:21:0;;:::o;7780:666::-;7926:15;7914:8;:27;;7906:54;;;;;-1:-1:-1;;;7906:54:0;;;;;;;;;;;;-1:-1:-1;;;7906:54:0;;;;;;;;;;;;;;;8076:16;;-1:-1:-1;;;;;8172:13:0;;;7971:14;8172:13;;;:6;:13;;;;;;;;:15;;;;;;;;;8121:77;;5594:66;8121:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8121:77:0;;;;;8111:88;;;;;;-1:-1:-1;;;8012:202:0;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;8012:202:0;;;;;;7988:237;;;;;;;;;8263:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7971:14;;8172:15;8263:26;;;;;-1:-1:-1;;8263:26:0;;;;;;;;;;8172:15;8263:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8263:26:0;;-1:-1:-1;;8263:26:0;;;-1:-1:-1;;;;;;;8308:30:0;;;;;;:59;;;8362:5;-1:-1:-1;;;;;8342:25:0;:16;-1:-1:-1;;;;;8342:25:0;;8308:59;8300:96;;;;;-1:-1:-1;;;8300:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8407:31;8416:5;8423:7;8432:5;8407:8;:31::i;:::-;7780:666;;;;;;;;;:::o;5339:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;20527:158::-;11953:8;;11965:1;11953:13;11945:39;;;;;-1:-1:-1;;;11945:39:0;;;;;;;;;;;;-1:-1:-1;;;11945:39:0;;;;;;;;;;;;;;;12006:1;11995:8;:12;20583:6;;20576:39;;;-1:-1:-1;;;20576:39:0;;20609:4;20576:39;;;;;;20568:109;;-1:-1:-1;;;;;20583:6:0;;20576:24;;:39;;;;;;;;;;;;;;20583:6;20576:39;;;5:2:-1;;;;30:1;27;20:12;5:2;20576:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20576:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20576:39:0;20624:6;;20617:39;;;-1:-1:-1;;;20617:39:0;;20650:4;20617:39;;;;;;-1:-1:-1;;;;;20624:6:0;;;;20617:24;;:39;;;;;20576;;20617;;;;;;;;20624:6;20617:39;;;5:2:-1;;;;30:1;27;20:12;5:2;20617:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20617:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20617:39:0;20658:8;;-1:-1:-1;;;;;20658:8:0;;;;-1:-1:-1;;;20668:8:0;;;20568:7;:109::i;:::-;12041:1;12030:8;:12;20527:158::o;12297:283::-;11277:34;;;;;;;;;;;;;;;;;12425:43;;-1:-1:-1;;;;;12425:43:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;12425:43:0;;;;;;25:18:-1;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;12414:55:0;;;;12379:12;;12393:17;;12414:10;;;12425:43;12414:55;;;25:18:-1;12414:55:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;12414:55:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;12378:91:0;;;;12488:7;:57;;;;-1:-1:-1;12500:11:0;;:16;;:44;;;12531:4;12520:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12520:24:0;12500:44;12480:92;;;;;-1:-1:-1;;;12480:92:0;;;;;;;;;;;;-1:-1:-1;;;12480:92:0;;;;;;;;;;;;;;;12297:283;;;;;:::o;3613:142::-;3665:6;3692;;;:30;;-1:-1:-1;;3707:5:0;;;3721:1;3716;3707:5;3716:1;3702:15;;;;;:20;3692:30;3684:63;;;;;-1:-1:-1;;;3684:63:0;;;;;;;;;;;;-1:-1:-1;;;3684:63:0;;;;;;;;;;;;;;3476:129;3560:5;;;3555:16;;;;3547:50;;;;;-1:-1:-1;;;3547:50:0;;;;;;;;;;;;-1:-1:-1;;;3547:50:0;;;;;;;;;;;;;;13405:856;-1:-1:-1;;;;;13517:23:0;;;;;:50;;-1:-1:-1;;;;;;13544:23:0;;;13517:50;13509:78;;;;;-1:-1:-1;;;13509:78:0;;;;;;;;;;;;-1:-1:-1;;;13509:78:0;;;;;;;;;;;;;;;13702:18;;13629:23;:15;:23;;;-1:-1:-1;;;13702:18:0;;;;13685:35;;;13758:15;;;;;;:33;;-1:-1:-1;;;;;;13777:14:0;;;;13758:33;:51;;;;-1:-1:-1;;;;;;13795:14:0;;;;13758:51;13754:336;;;13964:11;13911:64;;13916:44;13950:9;13916:27;13933:9;13916:16;:27::i;:::-;-1:-1:-1;;;;;13916:33:0;;:44;:33;:44;:::i;:::-;13887:20;:88;;-1:-1:-1;;;;;13911:50:0;;;;:64;;;;13887:88;;;14014:64;;;14019:44;14053:9;14019:27;14036:9;14019:16;:27::i;:44::-;13990:20;:88;;-1:-1:-1;;;;;14014:50:0;;;;:64;;;;13990:88;;;13754:336;14100:8;:28;;-1:-1:-1;;14100:28:0;-1:-1:-1;;;;;14100:28:0;;;;;;;-1:-1:-1;;;;14139:28:0;-1:-1:-1;;;14139:28:0;;;;;;;;;-1:-1:-1;;;;;14178:35:0;-1:-1:-1;;;14178:35:0;;;;;;;;;14229:24;;;14234:8;;;14229:24;;14244:8;;;;;;;14229:24;;;;;;;;;;;;;;;;;13405:856;;;;;;:::o;6764:169::-;-1:-1:-1;;;;;6845:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;6894:31;;;;;;;;;;;;;;;;;6764:169;;;:::o;6941:220::-;-1:-1:-1;;;;;7035:15:0;;;;;;:9;:15;;;;;;:26;;7055:5;7035:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;7017:15:0;;;;;;;:9;:15;;;;;;:44;;;;7088:13;;;;;;;:24;;7106:5;7088:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;7072:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;7128:25;;;;;;;7072:13;;7128:25;;;;;;;;;;;;;6941:220;;;:::o;14351:849::-;14424:10;14447:13;14477:7;;;;;;;;;-1:-1:-1;;;;;14477:7:0;-1:-1:-1;;;;;14463:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14463:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14463:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14463:30:0;14556:5;;-1:-1:-1;;;;;14512:19:0;;;;;;-1:-1:-1;14463:30:0;;-1:-1:-1;14556:5:0;14587:606;;14617:11;;14613:510;;14649:10;14662:41;14672:30;-1:-1:-1;;;;;14672:15:0;;;;:30;;;:19;:30;:::i;14662:41::-;14649:54;;14722:14;14739:17;14749:6;14739:9;:17::i;:::-;14722:34;;14787:9;14779:5;:17;14775:333;;;14821:14;14838:45;14880:2;14838:37;14854:20;:5;14864:9;14854:20;:9;:20;:::i;:::-;14838:11;;;:37;:15;:37;:::i;:45::-;14821:62;-1:-1:-1;14906:16:0;14925:35;14943:16;:9;14957:1;14943:16;:13;:16;:::i;:::-;14925:13;:5;14935:2;14925:13;:9;:13;:::i;:::-;:17;:35;:17;:35;:::i;:::-;14906:54;;14983:14;15012:11;15000:9;:23;;;;;;;-1:-1:-1;15050:13:0;;15046:42;;15065:23;15071:5;15078:9;15065:5;:23::i;:::-;14775:333;;;;14613:510;;;14587:606;;;15144:11;;15140:53;;15180:1;15172:5;:9;15140:53;14351:849;;;;;;:::o;2825:303::-;2870:6;2897:1;2893;:5;2889:232;;;-1:-1:-1;2919:1:0;2952;2948;2944:5;;:9;2968:92;2979:1;2975;:5;2968:92;;;3005:1;3001:5;;3043:1;3038;3034;3030;:5;;;;;;:9;3029:15;;;;;;3025:19;;2968:92;;;2889:232;;;;3081:6;;3077:44;;-1:-1:-1;3108:1:0;3077:44;2825:303;;;:::o;6338:201::-;6411:11;;:22;;6427:5;6411:22;:15;:22;:::i;:::-;6397:11;:36;;;-1:-1:-1;;;;;6460:13:0;;;;:9;:13;;;;;;:24;;6478:5;6460:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;6444:13:0;;;;;;:9;:13;;;;;;;;:40;;;;6500:31;;;;;;;6444:13;;;;6500:31;;;;;;;;;;6338:201;;:::o;2611:96::-;2663:6;2690:1;2686;:5;:13;;2698:1;2686:13;;;2694:1;2686:13;2682:17;2611:96;-1:-1:-1;;;2611:96:0:o;6547:209::-;-1:-1:-1;;;;;6626:15:0;;;;;;:9;:15;;;;;;:26;;6646:5;6626:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;6608:15:0;;;;;;:9;:15;;;;;:44;;;;6677:11;:22;;6693:5;6677:22;:15;:22;:::i;:::-;6663:11;:36;;;6715:33;;;;;;;;-1:-1:-1;;;;;6715:33:0;;;;;;;;;;;;;6547:209;;:::o;2161:120::-;-1:-1:-1;;;;;2237:10:0;-1:-1:-1;;;2237:17:0;;2161:120::o;2352:108::-;2412:9;-1:-1:-1;;;;;2442:10:0;;-1:-1:-1;;;;;2438:14:0;;2442:10;2438:14;;;;;;2352:108;-1:-1:-1;;;2352:108:0:o;3340:128::-;3424:5;;;3419:16;;;;3411:49;;;;;-1:-1:-1;;;3411:49:0;;;;;;;;;;;;-1:-1:-1;;;3411:49:0;;;;;;;;;;;;;

Swarm Source

bzzr://a01529bbd2528788bc0e89bc268a6fab5c8c65b2449bab7fce531ee8c7fa9a26
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.