Contract 0x225170b4308ee84627ee29296d014908bab56313

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x20eefb802f58c259de2cdfda2571b49ea8d4698573303d71f82cc548d12851acApprove137250302021-12-23 11:54:4430 days 9 hrs ago0x0ee5bee9a4c9e703456e05bd88d53ef6b9b791c8 IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00022177
0x26fd8196673ab6680f52e9324f426f01b881ef48633a0efa52fc92503cb31404Approve136470712021-12-20 18:15:5133 days 3 hrs ago0x4bda86fe59e2780e98ab0c4b2e9a47abb2e4200b IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.000072425
0x15ef47e0ca780b00575f8caca48462f1cbcbc6a75844f9055a1825734f7fbb1aApprove136468922021-12-20 18:06:5433 days 3 hrs ago0x4bda86fe59e2780e98ab0c4b2e9a47abb2e4200b IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.000072425
0xc330253ee663b1b44c4e8c88402b36cb963ac0877f91fb5a4187b8791f14dbf0Approve133490942021-12-10 9:05:4243 days 12 hrs ago0x733a9a416734c238ea2049e18952000c169b787e IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00022177
0x3ff36a413012591015485c903e92b7f7c49c614b1908fd4e6dd222385abda239Approve132706232021-12-07 11:27:5346 days 10 hrs ago0xdf8bc23aa7939764f8af883dc2ee5a151920693d IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00022177
0xba1d94cf5a03ae56a27338c5cda7ba139fae021bd067c0c8ea0b5b1da0e5fb18Approve131456452021-12-03 1:11:4950 days 20 hrs ago0xbcdd5fae0b55da0ff9999d351413af98cfc96d5d IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00022177
0x4dced61432354a840e01372dec48fa0a6e0fa225e609772182475df18d088274Approve131005682021-12-01 9:51:3952 days 11 hrs ago0xc61cc3107ad698103ace17beb39b1ac139646209 IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00022177
0x34116c0f42feab9e7ad579271cf3a0494e995094e67fb06fa6c01b3ac25b6ec2Approve130909782021-12-01 1:07:1452 days 20 hrs ago0x2047ac0eff3914405954fab1befe9dced4d2754b IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.000243947
0x77ce864c1a1fb29a0c6ccc3b3fa7fefd97c8b67e46d91676032c7ab1fb64ea4dApprove130533002021-11-29 15:40:1654 days 6 hrs ago0x6951d65d17032249e1804592fd30a3b80524e9ad IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00022177
0xf5ed66dfd7a382558a38b2ca1ef560b24c046c69f8f55ee8974fb956c84b28dcApprove130198102021-11-28 9:04:2655 days 12 hrs ago0xce5b06be9edda82401c6289a4648c4591390c69a IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00012577
0x75f3ced71cceafa3e60af455e56654145aac674f86970faa34983ff3e5d653ddApprove128498832021-11-22 2:07:3261 days 19 hrs ago0xab4df4ae6176dba8df61022c555f93cd74dba398 IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00022177
0x4edea8d81304eb05f12aca7e8daf834b17b0212c1e5f9f5381ed5a7f1d4452d6Approve128344472021-11-21 12:55:0662 days 8 hrs ago0x2047ac0eff3914405954fab1befe9dced4d2754b IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00022177
0xa81ac1b6cd58380d7bf17851a18e495fe80d6db6ef9dfcd04ca11c220e98844aApprove128052142021-11-20 11:58:4063 days 9 hrs ago0xce5b06be9edda82401c6289a4648c4591390c69a IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00012577
0x68cb25a54af5c97cbfba69c1b400f6b6e70bdd759c80c2d5c5595d8beed2088aApprove128044922021-11-20 11:19:2163 days 10 hrs ago0xce5b06be9edda82401c6289a4648c4591390c69a IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00012577
0x93c391758a9192d1a2da7ec7fb3dda0afc1446325bc5fb691c52f38401337816Approve128042642021-11-20 11:06:1263 days 10 hrs ago0xce5b06be9edda82401c6289a4648c4591390c69a IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00012577
0x657e9a3fd4e34a8d6676fea4905e0cdf7d1b219d80543b0110e84f538ea1f678Approve127681732021-11-19 3:38:4864 days 18 hrs ago0xdf8bc23aa7939764f8af883dc2ee5a151920693d IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00022177
0x3f25ced84fee94dea3e8f588474849deb11c1852e6bd090814ece330c1755743Approve127265262021-11-17 15:32:1466 days 6 hrs ago0x8fbf185939c55690c9228d1b31e71729379beee2 IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00022177
0xdcc968d57da5edd37eb5412c04a1045006c3a0b973b91ac304415625931a9a3aApprove127241912021-11-17 13:20:2966 days 8 hrs ago0xcbf9f3afb1ca2d55753cf852131d40f0d3b4d0f0 IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00022177
0x5bfb0c90630713106227c4f654428a0ccefe3b2bce2a6146b29c1f039376c33dApprove127180232021-11-17 7:54:5666 days 13 hrs ago0xd5fdbfab7df6849f13a6f746f63f163f31adcb3d IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00022177
0x79847f04c9848ed1f47100fb4ee1075179a06cc1d3148c3c1ea34d5e231e3a7cApprove126871162021-11-16 4:10:1267 days 17 hrs ago0xbcdd5fae0b55da0ff9999d351413af98cfc96d5d IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00022177
0x4ece5c483f92869aaa605d3740b0a29179315d9a0edecfdac15d7354ea031fbfApprove126435262021-11-14 13:49:1269 days 8 hrs ago0xce5b06be9edda82401c6289a4648c4591390c69a IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00012577
0xe971728d5e5b3ef7ec1ff11d1b450e18091b79a61f0449715257186a9cf2156dApprove126402202021-11-14 10:57:4569 days 10 hrs ago0xce5b06be9edda82401c6289a4648c4591390c69a IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00012577
0x7332f54ed9dc7a6f43e082dd83688d78950df6b9e5d8232b801056510ad0fae6Approve126366902021-11-14 7:56:3669 days 13 hrs ago0x5898fcfd19e4642f890a30faf080fd78f80d80be IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00022177
0x964f17ffe7c7b352cab709366b6859b6dbd5eaaa6c9b5c58e8c97f22ba2de169Approve126319212021-11-14 3:55:4969 days 17 hrs ago0x2c8585b5b69e24dbe0f9ff8ffefcf5d6aab39d5a IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00022177
0x3b55e51c6c6cbdec6e0fd297c702aa3584dbc6027ae45dbe0984ab3d93ed6133Approve126156682021-11-13 14:01:3870 days 7 hrs ago0xec0f978d9ffe5ce4eb36dc0445a28b7304f8946d IN  0x225170b4308ee84627ee29296d014908bab563130 BNB0.00022177
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x5d057a8f063420b727b5a2bc7073999ab21f21a769ac074fef18b8babcda5289122721282021-11-01 8:36:5082 days 13 hrs ago 0x4dce5bdb81b8d5edb66ca1b8b2616a8e0dd5f807  Contract Creation0 BNB
[ Download CSV Export 
Loading

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

Contract Name:
LatteSwapPair

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 168 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-07-21
*/

// SPDX-License-Identifier: GPL-3.0

pragma solidity =0.6.12;

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

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

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

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


contract LatteSwapLP {
  using LatteSwapSafeMath for uint;

  string public constant name = 'LatteSwap LP Token';
  string public constant symbol = 'Latte-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, 'LatteSwapLP::permit::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, 'LatteSwapLP::permit::INVALID_SIGNATURE');
    _approve(owner, spender, value);
  }
}

// a library for performing various math operations
library LatteSwapMath {
  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)
  // reference: https://github.com/abdk-consulting/abdk-libraries-solidity/blob/master/ABDKMath64x64.sol#L687
  function sqrt(uint x) internal pure returns (uint z) {
    if (x == 0) return 0;
    uint xx = x;
    uint r = 1;

    if (xx >= 0x100000000000000000000000000000000) {
      xx >>= 128;
      r <<= 64;
    }

    if (xx >= 0x10000000000000000) {
      xx >>= 64;
      r <<= 32;
    }
    if (xx >= 0x100000000) {
      xx >>= 32;
      r <<= 16;
    }
    if (xx >= 0x10000) {
      xx >>= 16;
      r <<= 8;
    }
    if (xx >= 0x100) {
      xx >>= 8;
      r <<= 4;
    }
    if (xx >= 0x10) {
      xx >>= 4;
      r <<= 2;
    }
    if (xx >= 0x8) {
      r <<= 1;
    }

    r = (r + x / r) >> 1;
    r = (r + x / r) >> 1;
    r = (r + x / r) >> 1;
    r = (r + x / r) >> 1;
    r = (r + x / r) >> 1;
    r = (r + x / r) >> 1;
    r = (r + x / r) >> 1; // Seven iterations should be enough
    uint r1 = x / r;
    return (r < r1 ? r : r1);
  }
}

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

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


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


contract LatteSwapPair is LatteSwapLP {
  using LatteSwapSafeMath  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, 'LatteSwapPair::lock::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))), 'LatteSwapPair::_safeTransfer::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, 'LatteSwapPair::initialize::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), 'LatteSwapPair::_update::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 8/25 of the growth in sqrt(k)
  function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
    address feeTo = ILatteSwapFactory(factory).feeTo();
    feeOn = feeTo != address(0);
    uint _kLast = kLast; // gas savings
    if (feeOn) {
      if (_kLast != 0) {
        uint rootK = LatteSwapMath.sqrt(uint(_reserve0).mul(_reserve1));
        uint rootKLast = LatteSwapMath.sqrt(_kLast);
        if (rootK > rootKLast) {
          uint numerator = totalSupply.mul(rootK.sub(rootKLast)).mul(8);
          uint denominator = rootK.mul(17).add(rootKLast.mul(8));
          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 = ILatteSwapBEP20(token0).balanceOf(address(this));
    uint balance1 = ILatteSwapBEP20(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 = LatteSwapMath.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);
      _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens
    } else {
      liquidity = LatteSwapMath.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1);
    }
    require(liquidity > 0, 'LatteSwapPair::mint::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 = ILatteSwapBEP20(_token0).balanceOf(address(this));
    uint balance1 = ILatteSwapBEP20(_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, 'LatteSwapPair::burn::INSUFFICIENT_LIQUIDITY_BURNED');
    _burn(address(this), liquidity);
    _safeTransfer(_token0, to, amount0);
    _safeTransfer(_token1, to, amount1);
    balance0 = ILatteSwapBEP20(_token0).balanceOf(address(this));
    balance1 = ILatteSwapBEP20(_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, 'LatteSwapPair::swap::INSUFFICIENT_OUTPUT_AMOUNT');
      (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
      require(amount0Out < _reserve0 && amount1Out < _reserve1, 'LatteSwapPair::swap::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, 'LatteSwapPair::swap::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) ILatteSwapCallee(to).latteSwapCall(msg.sender, amount0Out, amount1Out, data);
      balance0 = ILatteSwapBEP20(_token0).balanceOf(address(this));
      balance1 = ILatteSwapBEP20(_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, 'LatteSwapPair::swap::INSUFFICIENT_INPUT_AMOUNT');
      { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
      uint balance0Adjusted = balance0.mul(10000).sub(amount0In.mul(25));
      uint balance1Adjusted = balance1.mul(10000).sub(amount1In.mul(25));
      require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(10000**2), 'LatteSwapPair::swap::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, ILatteSwapBEP20(_token0).balanceOf(address(this)).sub(reserve0));
      _safeTransfer(_token1, to, ILatteSwapBEP20(_token1).balanceOf(address(this)).sub(reserve1));
  }

  // force reserves to match balances
  function sync() external lock {
      _update(ILatteSwapBEP20(token0).balanceOf(address(this)), ILatteSwapBEP20(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"}]

60806040526001600c5534801561001557600080fd5b5060408051808201825260128152712630ba3a32a9bbb0b8102628102a37b5b2b760711b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fceb9083f8ba0e560adf97334e916703c988a591d6c62fb1911abe4ff9cf64e9d818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b031916331790556123a8806101106000396000f3fe608060405234801561001057600080fd5b50600436106101795760003560e01c80636a627842116100d9578063ba9a7a5611610087578063ba9a7a56146104ce578063bc25cf77146104d6578063c45a0155146104fc578063d21220a714610504578063d505accf1461050c578063dd62ed3e1461055d578063fff6cae91461058b57610179565b80636a627842146103e157806370a08231146104075780637464fc3d1461042d5780637ecebe001461043557806389afcb441461045b57806395d89b411461049a578063a9059cbb146104a257610179565b806323b872dd1161013657806323b872dd1461033f57806330adf81f14610375578063313ce5671461037d5780633644e5151461039b578063485cc955146103a35780635909c0d5146103d15780635a3d5493146103d957610179565b8063022c0d9f1461017e57806306fdde031461020c5780630902f1ac14610289578063095ea7b3146102c15780630dfe16811461030157806318160ddd14610325575b600080fd5b61020a6004803603608081101561019457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101cb57600080fd5b8201836020820111156101dd57600080fd5b803590602001918460018302840111640100000000831117156101ff57600080fd5b509092509050610593565b005b610214610aa8565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561024e578181015183820152602001610236565b50505050905090810190601f16801561027b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610291610ad6565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b6102ed600480360360408110156102d757600080fd5b506001600160a01b038135169060200135610b00565b604080519115158252519081900360200190f35b610309610b17565b604080516001600160a01b039092168252519081900360200190f35b61032d610b26565b60408051918252519081900360200190f35b6102ed6004803603606081101561035557600080fd5b506001600160a01b03813581169160208101359091169060400135610b2c565b61032d610bc0565b610385610be4565b6040805160ff9092168252519081900360200190f35b61032d610be9565b61020a600480360360408110156103b957600080fd5b506001600160a01b0381358116916020013516610bef565b61032d610c66565b61032d610c6c565b61032d600480360360208110156103f757600080fd5b50356001600160a01b0316610c72565b61032d6004803603602081101561041d57600080fd5b50356001600160a01b0316610f48565b61032d610f5a565b61032d6004803603602081101561044b57600080fd5b50356001600160a01b0316610f60565b6104816004803603602081101561047157600080fd5b50356001600160a01b0316610f72565b6040805192835260208301919091528051918290030190f35b610214611300565b6102ed600480360360408110156104b857600080fd5b506001600160a01b038135169060200135611324565b61032d611331565b61020a600480360360208110156104ec57600080fd5b50356001600160a01b0316611337565b6103096114a3565b6103096114b2565b61020a600480360360e081101561052257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356114c1565b61032d6004803603604081101561057357600080fd5b506001600160a01b03813581169160200135166116b8565b61020a6116d5565b600c546001146105d8576040805162461bcd60e51b815260206004820152601b6024820152600080516020612278833981519152604482015290519081900360640190fd5b6000600c55841515806105eb5750600084115b6106265760405162461bcd60e51b815260040180806020018281038252602f8152602001806121f2602f913960400191505060405180910390fd5b600080610631610ad6565b5091509150816001600160701b0316871080156106565750806001600160701b031686105b6106915760405162461bcd60e51b815260040180806020018281038252602b81526020018061224d602b913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906106cf5750806001600160a01b0316896001600160a01b031614155b610720576040805162461bcd60e51b815260206004820152601f60248201527f4c6174746553776170506169723a3a737761703a3a494e56414c49445f544f00604482015290519081900360640190fd5b8a1561073157610731828a8d611831565b891561074257610742818a8c611831565b86156107f457886001600160a01b0316631b4dd2e9338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156107db57600080fd5b505af11580156107ef573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561083a57600080fd5b505afa15801561084e573d6000803e3d6000fd5b505050506040513d602081101561086457600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108b057600080fd5b505afa1580156108c4573d6000803e3d6000fd5b505050506040513d60208110156108da57600080fd5b5051925060009150506001600160701b0385168a900383116108fd57600061090c565b89856001600160701b03160383035b9050600089856001600160701b0316038311610929576000610938565b89856001600160701b03160383035b905060008211806109495750600081115b6109845760405162461bcd60e51b815260040180806020018281038252602e81526020018061216b602e913960400191505060405180910390fd5b60006109a66109948460196119b5565b6109a0876127106119b5565b90611a0b565b905060006109b86109948460196119b5565b90506109de6305f5e1006109d86001600160701b038b8116908b166119b5565b906119b5565b6109e883836119b5565b1015610a34576040805162461bcd60e51b81526020600482015260166024820152754c6174746553776170506169723a3a737761703a3a4b60501b604482015290519081900360640190fd5b5050610a4284848888611a4d565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b604051806040016040528060128152602001712630ba3a32a9bbb0b8102628102a37b5b2b760711b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b0d338484611c16565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610bab576001600160a01b0384166000908152600260209081526040808320338452909152902054610b869083611a0b565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610bb6848484611c78565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610c385760405162461bcd60e51b81526004018080602001828103825260248152602001806122be6024913960400191505060405180910390fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610cb9576040805162461bcd60e51b815260206004820152601b6024820152600080516020612278833981519152604482015290519081900360640190fd5b6000600c81905580610cc9610ad6565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d1d57600080fd5b505afa158015610d31573d6000803e3d6000fd5b505050506040513d6020811015610d4757600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610d9a57600080fd5b505afa158015610dae573d6000803e3d6000fd5b505050506040513d6020811015610dc457600080fd5b505190506000610ddd836001600160701b038716611a0b565b90506000610df4836001600160701b038716611a0b565b90506000610e028787611d26565b60005490915080610e3957610e256103e86109a0610e2087876119b5565b611e75565b9850610e3460006103e8611fbd565b610e7c565b610e796001600160701b038916610e5086846119b5565b81610e5757fe5b046001600160701b038916610e6c86856119b5565b81610e7357fe5b04612047565b98505b60008911610ebb5760405162461bcd60e51b81526004018080602001828103825260328152602001806123416032913960400191505060405180910390fd5b610ec58a8a611fbd565b610ed186868a8a611a4d565b8115610efb57600854610ef7906001600160701b0380821691600160701b9004166119b5565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114610fba576040805162461bcd60e51b815260206004820152601b6024820152600080516020612278833981519152604482015290519081900360640190fd5b6000600c81905580610fca610ad6565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561102657600080fd5b505afa15801561103a573d6000803e3d6000fd5b505050506040513d602081101561105057600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561109e57600080fd5b505afa1580156110b2573d6000803e3d6000fd5b505050506040513d60208110156110c857600080fd5b5051306000908152600160205260408120549192506110e78888611d26565b600054909150806110f884876119b5565b816110ff57fe5b049a508061110d84866119b5565b8161111457fe5b04995060008b118015611127575060008a115b6111625760405162461bcd60e51b81526004018080602001828103825260328152602001806122e26032913960400191505060405180910390fd5b61116c308461205f565b611177878d8d611831565b611182868d8c611831565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b1580156111c857600080fd5b505afa1580156111dc573d6000803e3d6000fd5b505050506040513d60208110156111f257600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561123e57600080fd5b505afa158015611252573d6000803e3d6000fd5b505050506040513d602081101561126857600080fd5b5051935061127885858b8b611a4d565b81156112a25760085461129e906001600160701b0380821691600160701b9004166119b5565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600881526020016704c617474652d4c560c41b81525081565b6000610b0d338484611c78565b6103e881565b600c5460011461137c576040805162461bcd60e51b815260206004820152601b6024820152600080516020612278833981519152604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b0394851694909316926114259285928792611420926001600160701b03169185916370a0823191602480820192602092909190829003018186803b1580156113ee57600080fd5b505afa158015611402573d6000803e3d6000fd5b505050506040513d602081101561141857600080fd5b505190611a0b565b611831565b61149981846114206008600e9054906101000a90046001600160701b03166001600160701b0316856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156113ee57600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b42841015611516576040805162461bcd60e51b815260206004820152601c60248201527f4c61747465537761704c503a3a7065726d69743a3a4558504952454400000000604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611631573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906116675750886001600160a01b0316816001600160a01b0316145b6116a25760405162461bcd60e51b81526004018080602001828103825260268152602001806122986026913960400191505060405180910390fd5b6116ad898989611c16565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c5460011461171a576040805162461bcd60e51b815260206004820152601b6024820152600080516020612278833981519152604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b8152306004820152905161182a926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561176b57600080fd5b505afa15801561177f573d6000803e3d6000fd5b505050506040513d602081101561179557600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156117e257600080fd5b505afa1580156117f6573d6000803e3d6000fd5b505050506040513d602081101561180c57600080fd5b50516008546001600160701b0380821691600160701b900416611a4d565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b602083106118de5780518252601f1990920191602091820191016118bf565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611940576040519150601f19603f3d011682016040523d82523d6000602084013e611945565b606091505b5091509150818015611973575080511580611973575080806020019051602081101561197057600080fd5b50515b6119ae5760405162461bcd60e51b815260040180806020018281038252602d8152602001806121c5602d913960400191505060405180910390fd5b5050505050565b60008115806119d0575050808202828282816119cd57fe5b04145b610b115760405162461bcd60e51b815260040180806020018281038252602c815260200180612221602c913960400191505060405180910390fd5b80820382811115610b115760405162461bcd60e51b815260040180806020018281038252602d815260200180612314602d913960400191505060405180910390fd5b6001600160701b038411801590611a6b57506001600160701b038311155b611abc576040805162461bcd60e51b815260206004820181905260248201527f4c6174746553776170506169723a3a5f7570646174653a3a4f564552464c4f57604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611aec57506001600160701b03841615155b8015611b0057506001600160701b03831615155b15611b6b578063ffffffff16611b2885611b19866120f1565b6001600160e01b031690612103565b600980546001600160e01b03929092169290920201905563ffffffff8116611b5384611b19876120f1565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611c9b9082611a0b565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611cca9082612128565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611d7757600080fd5b505afa158015611d8b573d6000803e3d6000fd5b505050506040513d6020811015611da157600080fd5b5051600b546001600160a01b038216158015945091925090611e61578015611e5c576000611dde610e206001600160701b038881169088166119b5565b90506000611deb83611e75565b905080821115611e59576000611e1260086109d8611e098686611a0b565b600054906119b5565b90506000611e35611e248460086119b5565b611e2f8660116119b5565b90612128565b90506000818381611e4257fe5b0490508015611e5557611e558782611fbd565b5050505b50505b611e6d565b8015611e6d576000600b555b505092915050565b600081611e8457506000611fb8565b816001600160801b8210611e9d5760809190911c9060401b5b680100000000000000008210611eb85760409190911c9060201b5b6401000000008210611ecf5760209190911c9060101b5b620100008210611ee45760109190911c9060081b5b6101008210611ef85760089190911c9060041b5b60108210611f0b5760049190911c9060021b5b60088210611f175760011b5b6001818581611f2257fe5b048201901c90506001818581611f3457fe5b048201901c90506001818581611f4657fe5b048201901c90506001818581611f5857fe5b048201901c90506001818581611f6a57fe5b048201901c90506001818581611f7c57fe5b048201901c90506001818581611f8e57fe5b048201901c90506000818581611fa057fe5b049050808210611fb05780611fb2565b815b93505050505b919050565b600054611fca9082612128565b60009081556001600160a01b038316815260016020526040902054611fef9082612128565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106120565781612058565b825b9392505050565b6001600160a01b0382166000908152600160205260409020546120829082611a0b565b6001600160a01b038316600090815260016020526040812091909155546120a99082611a0b565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161212057fe5b049392505050565b80820182811015610b115760405162461bcd60e51b815260040180806020018281038252602c815260200180612199602c913960400191505060405180910390fdfe4c6174746553776170506169723a3a737761703a3a494e53554646494349454e545f494e5055545f414d4f554e544c6174746553776170536166654d6174683a3a6164643a3a64732d6d6174682d6164642d6f766572666c6f774c6174746553776170506169723a3a5f736166655472616e736665723a3a5452414e534645525f4641494c45444c6174746553776170506169723a3a737761703a3a494e53554646494349454e545f4f55545055545f414d4f554e544c6174746553776170536166654d6174683a3a6d756c3a3a64732d6d6174682d6d756c2d6f766572666c6f774c6174746553776170506169723a3a737761703a3a494e53554646494349454e545f4c49515549444954594c6174746553776170506169723a3a6c6f636b3a3a4c4f434b454400000000004c61747465537761704c503a3a7065726d69743a3a494e56414c49445f5349474e41545552454c6174746553776170506169723a3a696e697469616c697a653a3a464f5242494444454e4c6174746553776170506169723a3a6275726e3a3a494e53554646494349454e545f4c49515549444954595f4255524e45444c6174746553776170536166654d6174683a3a7375623a3a64732d6d6174682d7375622d756e646572666c6f774c6174746553776170506169723a3a6d696e743a3a494e53554646494349454e545f4c49515549444954595f4d494e544544a26469706673582212201b153acee8c6101f78c9cc587918e247344a886b8836d800c36c076d527b37b864736f6c634300060c0033

Deployed ByteCode Sourcemap

7259:9411:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14153:1910;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14153:1910:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14153:1910:0;;-1:-1:-1;14153:1910:0;-1:-1:-1;14153:1910:0;:::i;:::-;;745:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8232:217;;;:::i;:::-;;;;-1:-1:-1;;;;;8232:217:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2638:137;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2638:137:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;7547:21;;;:::i;:::-;;;;-1:-1:-1;;;;;7547:21:0;;;;;;;;;;;;;;887:24;;;:::i;:::-;;;;;;;;;;;;;;;;2916:277;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2916:277:0;;;;;;;;;;;;;;;;;:::i;1169:108::-;;;:::i;847:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1030:31;;;:::i;9239:212::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9239:212:0;;;;;;;;;;:::i;7888:32::-;;;:::i;7925:::-;;;:::i;11296:1207::-;;;;;;;;;;;;;;;;-1:-1:-1;11296:1207:0;-1:-1:-1;;;;;11296:1207:0;;:::i;916:41::-;;;;;;;;;;;;;;;;-1:-1:-1;916:41:0;-1:-1:-1;;;;;916:41:0;;:::i;7962:17::-;;;:::i;1282:38::-;;;;;;;;;;;;;;;;-1:-1:-1;1282:38:0;-1:-1:-1;;;;;1282:38:0;;:::i;12611:1434::-;;;;;;;;;;;;;;;;-1:-1:-1;12611:1434:0;-1:-1:-1;;;;;12611:1434:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;800:42;;;:::i;2781:129::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2781:129:0;;;;;;;;:::i;7374:46::-;;;:::i;16108:342::-;;;;;;;;;;;;;;;;-1:-1:-1;16108:342:0;-1:-1:-1;;;;;16108:342:0;;:::i;7520:22::-;;;:::i;7573:21::-;;;:::i;3199:632::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3199:632:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;962:61::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;962:61:0;;;;;;;;;;:::i;16495:172::-;;;:::i;14153:1910::-;8129:8;;8141:1;8129:13;8121:53;;;;;-1:-1:-1;;;8121:53:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8121:53:0;;;;;;;;;;;;;;;8192:1;8181:8;:12;14265:14;;;;:32:::1;;;14296:1;14283:10;:14;14265:32;14257:92;;;;-1:-1:-1::0;;;14257:92:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14359:17;14378::::0;14400:13:::1;:11;:13::i;:::-;14358:55;;;;;14458:9;-1:-1:-1::0;;;;;14445:22:0::1;:10;:22;:48;;;;;14484:9;-1:-1:-1::0;;;;;14471:22:0::1;:10;:22;14445:48;14437:104;;;;-1:-1:-1::0;;;14437:104:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14678:6;::::0;14711::::1;::::0;14552:13:::1;::::0;;;-1:-1:-1;;;;;14678:6:0;;::::1;::::0;14711;;::::1;::::0;14734:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;14757:7;-1:-1:-1::0;;;;;14751:13:0::1;:2;-1:-1:-1::0;;;;;14751:13:0::1;;;14734:30;14726:74;;;::::0;;-1:-1:-1;;;14726:74:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;14813:14:::0;;14809:58:::1;;14829:38;14843:7;14852:2;14856:10;14829:13;:38::i;:::-;14914:14:::0;;14910:58:::1;;14930:38;14944:7;14953:2;14957:10;14930:13;:38::i;:::-;15015:15:::0;;15011:97:::1;;15049:2;-1:-1:-1::0;;;;;15032:34:0::1;;15067:10;15079;15091;15103:4;;15032:76;;;;;;;;;;;;;-1:-1:-1::0;;;;;15032:76:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15011:97;15128:49;::::0;;-1:-1:-1;;;15128:49:0;;15171:4:::1;15128:49;::::0;::::1;::::0;;;-1:-1:-1;;;;;15128:34:0;::::1;::::0;::::1;::::0;:49;;;;;::::1;::::0;;;;;;;;:34;:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15128:49:0;15197::::1;::::0;;-1:-1:-1;;;15197:49:0;;15240:4:::1;15197:49;::::0;::::1;::::0;;;15128;;-1:-1:-1;;;;;;15197:34:0;::::1;::::0;::::1;::::0;:49;;;;;15128::::1;::::0;15197;;;;;;;;:34;:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15197:49:0;;-1:-1:-1;15264:14:0::1;::::0;-1:-1:-1;;;;;;;15292:22:0;::::1;::::0;;::::1;15281:33:::0;::::1;:75;;15355:1;15281:75;;;15341:10;15329:9;-1:-1:-1::0;;;;;15329:22:0::1;;15317:8;:35;15281:75;15264:92;;15365:14;15405:10;15393:9;-1:-1:-1::0;;;;;15393:22:0::1;;15382:8;:33;:75;;15456:1;15382:75;;;15442:10;15430:9;-1:-1:-1::0;;;;;15430:22:0::1;;15418:8;:35;15382:75;15365:92;;15486:1;15474:9;:13;:30;;;;15503:1;15491:9;:13;15474:30;15466:89;;;;-1:-1:-1::0;;;15466:89:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15637:21;15661:42;15685:17;:9:::0;15699:2:::1;15685:13;:17::i;:::-;15661:19;:8:::0;15674:5:::1;15661:12;:19::i;:::-;:23:::0;::::1;:42::i;:::-;15637:66:::0;-1:-1:-1;15712:21:0::1;15736:42;15760:17;:9:::0;15774:2:::1;15760:13;:17::i;15736:42::-;15712:66:::0;-1:-1:-1;15837:44:0::1;15872:8;15837:30;-1:-1:-1::0;;;;;15837:15:0;;::::1;::::0;:30;::::1;:19;:30::i;:::-;:34:::0;::::1;:44::i;:::-;15795:38;:16:::0;15816;15795:20:::1;:38::i;:::-;:86;;15787:121;;;::::0;;-1:-1:-1;;;15787:121:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;15787:121:0;;;;;;;;;;;;;::::1;;8200:1;;15928:49;15936:8;15946;15956:9;15967;15928:7;:49::i;:::-;15991:66;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15991:66:0;::::1;::::0;15996:10:::1;::::0;15991:66:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;8219:1:0;8208:8;:12;-1:-1:-1;;;;;;;;;14153:1910:0:o;745:50::-;;;;;;;;;;;;;;-1:-1:-1;;;745:50:0;;;;:::o;8232:217::-;8361:8;;-1:-1:-1;;;;;8361:8:0;;;;-1:-1:-1;;;8388:8:0;;;;;;-1:-1:-1;;;8425:18:0;;;;;8232:217::o;2638:137::-;2702:4;2715:36;2724:10;2736:7;2745:5;2715:8;:36::i;:::-;-1:-1:-1;2765:4:0;2638:137;;;;;:::o;7547:21::-;;;-1:-1:-1;;;;;7547:21:0;;:::o;887:24::-;;;;:::o;2916:277::-;-1:-1:-1;;;;;3011:15:0;;2994:4;3011:15;;;:9;:15;;;;;;;;3027:10;3011:27;;;;;;;;-1:-1:-1;;3011:39:0;3007:130;;-1:-1:-1;;;;;3091:15:0;;;;;;:9;:15;;;;;;;;3107:10;3091:27;;;;;;;;:38;;3123:5;3091:31;:38::i;:::-;-1:-1:-1;;;;;3061:15:0;;;;;;:9;:15;;;;;;;;3077:10;3061:27;;;;;;;:68;3007:130;3143:26;3153:4;3159:2;3163:5;3143:9;:26::i;:::-;-1:-1:-1;3183:4:0;2916:277;;;;;:::o;1169:108::-;1211:66;1169:108;:::o;847:35::-;880:2;847:35;:::o;1030:31::-;;;;:::o;9239:212::-;9331:7;;-1:-1:-1;;;;;9331:7:0;9317:10;:21;9309:70;;;;-1:-1:-1;;;9309:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9406:6;:16;;-1:-1:-1;;;;;9406:16:0;;;-1:-1:-1;;;;;;9406:16:0;;;;;;;9429:6;:16;;;;;;;;;;;9239:212::o;7888:32::-;;;;:::o;7925:::-;;;;:::o;11296:1207::-;11345:14;8129:8;;8141:1;8129:13;8121:53;;;;;-1:-1:-1;;;8121:53:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8121:53:0;;;;;;;;;;;;;;;8192:1;8181:8;:12;;;8192:1;11410:13:::1;:11;:13::i;:::-;-1:-1:-1::0;11477:6:0::1;::::0;11461:48:::1;::::0;;-1:-1:-1;;;11461:48:0;;11503:4:::1;11461:48;::::0;::::1;::::0;;;11368:55;;-1:-1:-1;11368:55:0;;-1:-1:-1;11445:13:0::1;::::0;-1:-1:-1;;;;;11477:6:0;;::::1;::::0;11461:33:::1;::::0;:48;;;;;::::1;::::0;;;;;;;;11477:6;11461:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;11461:48:0;11548:6:::1;::::0;11532:48:::1;::::0;;-1:-1:-1;;;11532:48:0;;11574:4:::1;11532:48;::::0;::::1;::::0;;;11461;;-1:-1:-1;11516:13:0::1;::::0;-1:-1:-1;;;;;11548:6:0;;::::1;::::0;11532:33:::1;::::0;:48;;;;;11461::::1;::::0;11532;;;;;;;;11548:6;11532:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;11532:48:0;;-1:-1:-1;11587:12:0::1;11602:23;:8:::0;-1:-1:-1;;;;;11602:23:0;::::1;:12;:23::i;:::-;11587:38:::0;-1:-1:-1;11632:12:0::1;11647:23;:8:::0;-1:-1:-1;;;;;11647:23:0;::::1;:12;:23::i;:::-;11632:38;;11679:10;11692:30;11701:9;11712;11692:8;:30::i;:::-;11729:17;11749:11:::0;11679:43;;-1:-1:-1;11849:17:0;11845:345:::1;;11889:63;7415:5;11889:40;11908:20;:7:::0;11920;11908:11:::1;:20::i;:::-;11889:18;:40::i;:63::-;11877:75;;11961:36;11975:1;7415:5;11961;:36::i;:::-;11845:345;;;12087:95;-1:-1:-1::0;;;;;12105:37:0;::::1;:25;:7:::0;12117:12;12105:11:::1;:25::i;:::-;:37;;;;;;-1:-1:-1::0;;;;;12144:37:0;::::1;:25;:7:::0;12156:12;12144:11:::1;:25::i;:::-;:37;;;;;;12087:17;:95::i;:::-;12075:107;;11845:345;12216:1;12204:9;:13;12196:76;;;;-1:-1:-1::0;;;12196:76:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12279:20;12285:2;12289:9;12279:5;:20::i;:::-;12308:49;12316:8;12326;12336:9;12347;12308:7;:49::i;:::-;12368:5;12364:47;;;12402:8;::::0;12383:28:::1;::::0;-1:-1:-1;;;;;12388:8:0;;::::1;::::0;-1:-1:-1;;;12402:8:0;::::1;;12383:18;:28::i;:::-;12375:5;:36:::0;12364:47:::1;12463:34;::::0;;;;;::::1;::::0;::::1;::::0;;;;;12468:10:::1;::::0;12463:34:::1;::::0;;;;;;::::1;-1:-1:-1::0;;8219:1:0;8208:8;:12;-1:-1:-1;11296:1207:0;;;-1:-1:-1;;;;;;11296:1207:0:o;916:41::-;;;;;;;;;;;;;:::o;7962:17::-;;;;:::o;1282:38::-;;;;;;;;;;;;;:::o;12611:1434::-;12660:12;12674;8129:8;;8141:1;8129:13;8121:53;;;;;-1:-1:-1;;;8121:53:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8121:53:0;;;;;;;;;;;;;;;8192:1;8181:8;:12;;;8192:1;12737:13:::1;:11;:13::i;:::-;-1:-1:-1::0;12790:6:0::1;::::0;12867::::1;::::0;12942:49:::1;::::0;;-1:-1:-1;;;12942:49:0;;12985:4:::1;12942:49;::::0;::::1;::::0;;;12695:55;;-1:-1:-1;12695:55:0;;-1:-1:-1;;;;;;12790:6:0;;::::1;::::0;12867;::::1;::::0;12772:15:::1;::::0;12790:6;;12942:34:::1;::::0;:49;;;;;::::1;::::0;;;;;;;;12790:6;12942:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12942:49:0;13014::::1;::::0;;-1:-1:-1;;;13014:49:0;;13057:4:::1;13014:49;::::0;::::1;::::0;;;12942;;-1:-1:-1;12998:13:0::1;::::0;-1:-1:-1;;;;;13014:34:0;::::1;::::0;::::1;::::0;:49;;;;;12942::::1;::::0;13014;;;;;;;:34;:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;13014:49:0;13105:4:::1;13070:14;13087:24:::0;;;:9:::1;13014:49;13087:24:::0;;;;;13014:49;;-1:-1:-1;13133:30:0::1;13142:9:::0;13153;13133:8:::1;:30::i;:::-;13170:17;13190:11:::0;13120:43;;-1:-1:-1;13190:11:0;13296:23:::1;:9:::0;13310:8;13296:13:::1;:23::i;:::-;:38;;;;;;::::0;-1:-1:-1;13425:12:0;13399:23:::1;:9:::0;13413:8;13399:13:::1;:23::i;:::-;:38;;;;;;13389:48;;13510:1;13500:7;:11;:26;;;;;13525:1;13515:7;:11;13500:26;13492:89;;;;-1:-1:-1::0;;;13492:89:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13588:31;13602:4;13609:9;13588:5;:31::i;:::-;13626:35;13640:7;13649:2;13653:7;13626:13;:35::i;:::-;13668;13682:7;13691:2;13695:7;13668:13;:35::i;:::-;13721:49;::::0;;-1:-1:-1;;;13721:49:0;;13764:4:::1;13721:49;::::0;::::1;::::0;;;-1:-1:-1;;;;;13721:34:0;::::1;::::0;::::1;::::0;:49;;;;;::::1;::::0;;;;;;;;:34;:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;13721:49:0;13788::::1;::::0;;-1:-1:-1;;;13788:49:0;;13831:4:::1;13788:49;::::0;::::1;::::0;;;13721;;-1:-1:-1;;;;;;13788:34:0;::::1;::::0;::::1;::::0;:49;;;;;13721::::1;::::0;13788;;;;;;;;:34;:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;13788:49:0;;-1:-1:-1;13846:49:0::1;13854:8:::0;13788:49;13874:9;13885;13846:7:::1;:49::i;:::-;13906:5;13902:47;;;13940:8;::::0;13921:28:::1;::::0;-1:-1:-1;;;;;13926:8:0;;::::1;::::0;-1:-1:-1;;;13940:8:0;::::1;;13921:18;:28::i;:::-;13913:5;:36:::0;13902:47:::1;14001:38;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;14001:38:0;::::1;::::0;14006:10:::1;::::0;14001:38:::1;::::0;;;;;;;;;::::1;8200:1;;;;;;;;;8219::::0;8208:8;:12;;;;12611:1434;;;:::o;800:42::-;;;;;;;;;;;;;;-1:-1:-1;;;800:42:0;;;;:::o;2781:129::-;2841:4;2854:32;2864:10;2876:2;2880:5;2854:9;:32::i;7374:46::-;7415:5;7374:46;:::o;16108:342::-;8129:8;;8141:1;8129:13;8121:53;;;;;-1:-1:-1;;;8121:53:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8121:53:0;;;;;;;;;;;;;;;8192:1;8181:8;:12;16175:6:::1;::::0;16223::::1;::::0;16334:8:::1;::::0;16280:49:::1;::::0;;-1:-1:-1;;;16280:49:0;;16323:4:::1;16280:49;::::0;::::1;::::0;;;-1:-1:-1;;;;;16175:6:0;;::::1;::::0;16223;;::::1;::::0;16253:91:::1;::::0;16175:6;;16276:2;;16280:63:::1;::::0;-1:-1:-1;;;;;16334:8:0::1;::::0;16175:6;;16280:34:::1;::::0;:49;;;;;::::1;::::0;;;;;;;;;16175:6;16280:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16280:49:0;;:53:::1;:63::i;:::-;16253:13;:91::i;:::-;16353;16367:7;16376:2;16380:63;16434:8;;;;;;;;;-1:-1:-1::0;;;;;16434:8:0::1;-1:-1:-1::0;;;;;16380:63:0::1;16396:7;-1:-1:-1::0;;;;;16380:34:0::1;;16423:4;16380:49;;;;;;;;;;;;;-1:-1:-1::0;;;;;16380:49:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;16353:91;-1:-1:-1::0;;8219:1:0;8208:8;:12;-1:-1:-1;16108:342:0:o;7520:22::-;;;-1:-1:-1;;;;;7520:22:0;;:::o;7573:21::-;;;-1:-1:-1;;;;;7573:21:0;;:::o;3199:632::-;3341:15;3329:8;:27;;3321:68;;;;;-1:-1:-1;;;3321:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3479:16;;-1:-1:-1;;;;;3567:13:0;;;3396:14;3567:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3516:77;;1211:66;3516:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3506:88;;;;;;-1:-1:-1;;;3431:172:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3413:197;;;;;;;;;3644:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3396:14;;3567:15;3644:26;;;;;-1:-1:-1;;3644:26:0;;;;;;;;;;3567:15;3644:26;;;;;;;;;;;;;;;-1:-1:-1;;3644:26:0;;-1:-1:-1;;3644:26:0;;;-1:-1:-1;;;;;;;3685:30:0;;;;;;:59;;;3739:5;-1:-1:-1;;;;;3719:25:0;:16;-1:-1:-1;;;;;3719:25:0;;3685:59;3677:110;;;;-1:-1:-1;;;3677:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3794:31;3803:5;3810:7;3819:5;3794:8;:31::i;:::-;3199:632;;;;;;;;;:::o;962:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;16495:172::-;8129:8;;8141:1;8129:13;8121:53;;;;;-1:-1:-1;;;8121:53:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;8121:53:0;;;;;;;;;;;;;;;8192:1;8181:8;:12;16558:6:::1;::::0;16542:48:::1;::::0;;-1:-1:-1;;;16542:48:0;;16584:4:::1;16542:48;::::0;::::1;::::0;;;16534:127:::1;::::0;-1:-1:-1;;;;;16558:6:0::1;::::0;16542:33:::1;::::0;:48;;;;;::::1;::::0;;;;;;;;16558:6;16542:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16542:48:0;16608:6:::1;::::0;16592:48:::1;::::0;;-1:-1:-1;;;16592:48:0;;16634:4:::1;16592:48;::::0;::::1;::::0;;;-1:-1:-1;;;;;16608:6:0;;::::1;::::0;16592:33:::1;::::0;:48;;;;;16542::::1;::::0;16592;;;;;;;;16608:6;16592:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16592:48:0;16642:8:::1;::::0;-1:-1:-1;;;;;16642:8:0;;::::1;::::0;-1:-1:-1;;;16652:8:0;::::1;;16534:7;:127::i;:::-;8219:1:::0;8208:8;:12;16495:172::o;8455:296::-;7477:34;;;;;;;;;;;;;;;;;8579:43;;-1:-1:-1;;;;;8579:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8579:43:0;-1:-1:-1;;;8579:43:0;;;8568:55;;;;8533:12;;8547:17;;8568:10;;;8579:43;8568:55;;;8579:43;8568:55;;8579:43;8568:55;;;;;;;;;;-1:-1:-1;;8568:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8532:91;;;;8638:7;:57;;;;-1:-1:-1;8650:11:0;;:16;;:44;;;8681:4;8670:24;;;;;;;;;;;;;;;-1:-1:-1;8670:24:0;8650:44;8630:115;;;;-1:-1:-1;;;8630:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8455:296;;;;;:::o;511:160::-;563:6;586;;;:30;;-1:-1:-1;;601:5:0;;;615:1;610;601:5;610:1;596:15;;;;;:20;586:30;578:87;;;;-1:-1:-1;;;578:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;358:147;438:5;;;433:16;;;;425:74;;;;-1:-1:-1;;;425:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9532:817;-1:-1:-1;;;;;9640:23:0;;;;;:50;;-1:-1:-1;;;;;;9667:23:0;;;9640:50;9632:95;;;;;-1:-1:-1;;;9632:95:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9834:18;;9765:23;:15;:23;;;-1:-1:-1;;;9834:18:0;;;;9817:35;;;9886:15;;;;;;:33;;-1:-1:-1;;;;;;9905:14:0;;;;9886:33;:51;;;;-1:-1:-1;;;;;;9923:14:0;;;;9886:51;9882:314;;;10080:11;10027:64;;10032:44;10066:9;10032:27;10049:9;10032:16;:27::i;:::-;-1:-1:-1;;;;;10032:33:0;;;:44::i;:::-;10003:20;:88;;-1:-1:-1;;;;;10027:50:0;;;;:64;;;;10003:88;;;10124:64;;;10129:44;10163:9;10129:27;10146:9;10129:16;:27::i;:44::-;10100:20;:88;;-1:-1:-1;;;;;10124:50:0;;;;:64;;;;10100:88;;;9882:314;10202:8;:28;;-1:-1:-1;;10202:28:0;-1:-1:-1;;;;;10202:28:0;;;;;;;-1:-1:-1;;;;10237:28:0;-1:-1:-1;;;10237:28:0;;;;;;;;;-1:-1:-1;;;;;10272:35:0;-1:-1:-1;;;10272:35:0;;;;;;;;;10319:24;;;10324:8;;;10319:24;;10334:8;;;;;;;10319:24;;;;;;;;;;;;;;;;;9532:817;;;;;;:::o;2261:159::-;-1:-1:-1;;;;;2338:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2383:31;;;;;;;;;;;;;;;;;2261:159;;;:::o;2426:206::-;-1:-1:-1;;;;;2516:15:0;;;;;;:9;:15;;;;;;:26;;2536:5;2516:19;:26::i;:::-;-1:-1:-1;;;;;2498:15:0;;;;;;;:9;:15;;;;;;:44;;;;2565:13;;;;;;;:24;;2583:5;2565:17;:24::i;:::-;-1:-1:-1;;;;;2549:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;2601:25;;;;;;;2549:13;;2601:25;;;;;;;;;;;;;2426:206;;;:::o;10434:754::-;10507:10;10526:13;10560:7;;;;;;;;;-1:-1:-1;;;;;10560:7:0;-1:-1:-1;;;;;10542:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10542:34:0;10631:5;;-1:-1:-1;;;;;10591:19:0;;;;;;-1:-1:-1;10542:34:0;;-1:-1:-1;10631:5:0;10658:525;;10682:11;;10678:449;;10706:10;10719:50;10738:30;-1:-1:-1;;;;;10738:15:0;;;;:30;;:19;:30::i;10719:50::-;10706:63;;10780:14;10797:26;10816:6;10797:18;:26::i;:::-;10780:43;;10846:9;10838:5;:17;10834:284;;;10870:14;10887:44;10929:1;10887:37;10903:20;:5;10913:9;10903;:20::i;:::-;10887:11;;;:15;:37::i;:44::-;10870:61;-1:-1:-1;10944:16:0;10963:35;10981:16;:9;10995:1;10981:13;:16::i;:::-;10963:13;:5;10973:2;10963:9;:13::i;:::-;:17;;:35::i;:::-;10944:54;;11011:14;11040:11;11028:9;:23;;;;;;;-1:-1:-1;11068:13:0;;11064:42;;11083:23;11089:5;11096:9;11083:5;:23::i;:::-;10834:284;;;;10678:449;;;10658:525;;;11144:11;;11140:43;;11174:1;11166:5;:9;11140:43;10434:754;;;;;;:::o;4233:894::-;4278:6;4297;4293:20;;-1:-1:-1;4312:1:0;4305:8;;4293:20;4330:1;4347;-1:-1:-1;;;4361:41:0;;4357:91;;4420:3;4413:10;;;;;4438:2;4432:8;4357:91;4466:19;4460:2;:25;4456:74;;4503:2;4496:9;;;;;4520:2;4514:8;4456:74;4546:11;4540:2;:17;4536:66;;4575:2;4568:9;;;;;4592:2;4586:8;4536:66;4618:7;4612:2;:13;4608:61;;4643:2;4636:9;;;;;4660:1;4654:7;4608:61;4685:5;4679:2;:11;4675:58;;4708:1;4701:8;;;;;4724:1;4718:7;4675:58;4749:4;4743:2;:10;4739:57;;4771:1;4764:8;;;;;4787:1;4781:7;4739:57;4812:3;4806:2;:9;4802:39;;4832:1;4826:7;4802:39;4868:1;4862;4858;:5;;;;;;4854:1;:9;4853:16;;4849:20;;4895:1;4889;4885;:5;;;;;;4881:1;:9;4880:16;;4876:20;;4922:1;4916;4912;:5;;;;;;4908:1;:9;4907:16;;4903:20;;4949:1;4943;4939;:5;;;;;;4935:1;:9;4934:16;;4930:20;;4976:1;4970;4966;:5;;;;;;4962:1;:9;4961:16;;4957:20;;5003:1;4997;4993;:5;;;;;;4989:1;:9;4988:16;;4984:20;;5030:1;5024;5020;:5;;;;;;5016:1;:9;5015:16;;5011:20;;5075:7;5089:1;5085;:5;;;;;;5075:15;;5109:2;5105:1;:6;:15;;5118:2;5105:15;;;5114:1;5105:15;5097:24;;;;;4233:894;;;;:::o;1867:187::-;1936:11;;:22;;1952:5;1936:15;:22::i;:::-;1922:11;:36;;;-1:-1:-1;;;;;1981:13:0;;;;:9;:13;;;;;;:24;;1999:5;1981:17;:24::i;:::-;-1:-1:-1;;;;;1965:13:0;;;;;;:9;:13;;;;;;;;:40;;;;2017:31;;;;;;;1965:13;;;;2017:31;;;;;;;;;;1867:187;;:::o;3918:90::-;3970:6;3993:1;3989;:5;:13;;4001:1;3989:13;;;3997:1;3989:13;3985:17;3918:90;-1:-1:-1;;;3918:90:0:o;2060:195::-;-1:-1:-1;;;;;2135:15:0;;;;;;:9;:15;;;;;;:26;;2155:5;2135:19;:26::i;:::-;-1:-1:-1;;;;;2117:15:0;;;;;;:9;:15;;;;;:44;;;;2182:11;:22;;2198:5;2182:15;:22::i;:::-;2168:11;:36;;;2216:33;;;;;;;;-1:-1:-1;;;;;2216:33:0;;;;;;;;;;;;;2060:195;;:::o;5394:114::-;-1:-1:-1;;;;;5466:10:0;-1:-1:-1;;;5466:17:0;;5394:114::o;5575:102::-;5635:9;-1:-1:-1;;;;;5661:10:0;;-1:-1:-1;;;;;5657:14:0;;5661:10;5657:14;;;;;;5575:102;-1:-1:-1;;;5575:102:0:o;206:146::-;286:5;;;281:16;;;;273:73;;;;-1:-1:-1;;;273:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

ipfs://1b153acee8c6101f78c9cc587918e247344a886b8836d800c36c076d527b37b8
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
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.