MON Price: $0.021614 (-2.49%)

Contract

0x06Ea375f90f2f7C020B12701498c4446D92B26DC
Transaction Hash
Method
Block
From
To
Transfer377283442025-11-24 17:11:2064 days ago1764004280IN
0x06Ea375f...6D92B26DC
0 MON0.00954617148.5
Approve377239472025-11-24 16:41:0964 days ago1764002469IN
0x06Ea375f...6D92B26DC
0 MON0.0159981150

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
377129082025-11-24 15:26:2164 days ago1763997981  Contract Creation0 MON
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x74e31fec...275BD9184
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
IonaraswapPair

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at monadscan.com on 2025-11-24
*/

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.6.12;

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

pragma solidity =0.6.12;

// a library for performing various math operations
library IonaraswapMath {
  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);
  }
}

pragma solidity =0.6.12;

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

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

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

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

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

pragma solidity =0.6.12;

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

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

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

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

pragma solidity >=0.5.0;

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

pragma solidity =0.6.12;

contract IonaraswapLP {
  using IonaraswapSafeMath for uint;

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

pragma solidity =0.6.12;

contract IonaraswapPair is IonaraswapLP {
  using IonaraswapSafeMath  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, 'IonaraswapPair::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))), 'IonaraswapPair::_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, 'IonaraswapPair::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), 'IonaraswapPair::_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 = IIonaraswapFactory(factory).feeTo();
    feeOn = feeTo != address(0);
    uint _kLast = kLast; // gas savings
    if (feeOn) {
      if (_kLast != 0) {
        uint rootK = IonaraswapMath.sqrt(uint(_reserve0).mul(_reserve1));
        uint rootKLast = IonaraswapMath.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 = IIonaraswapERC20(token0).balanceOf(address(this));
    uint balance1 = IIonaraswapERC20(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 = IonaraswapMath.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);
      _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens
    } else {
      liquidity = IonaraswapMath.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1);
    }
    require(liquidity > 0, 'IonaraswapPair::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 = IIonaraswapERC20(_token0).balanceOf(address(this));
    uint balance1 = IIonaraswapERC20(_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, 'IonaraswapPair::burn::INSUFFICIENT_LIQUIDITY_BURNED');
    _burn(address(this), liquidity);
    _safeTransfer(_token0, to, amount0);
    _safeTransfer(_token1, to, amount1);
    balance0 = IIonaraswapERC20(_token0).balanceOf(address(this));
    balance1 = IIonaraswapERC20(_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, 'IonaraswapPair::swap::INSUFFICIENT_OUTPUT_AMOUNT');
      (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
      require(amount0Out < _reserve0 && amount1Out < _reserve1, 'IonaraswapPair::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, 'IonaraswapPair::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) IIonaraswapCallee(to).IonaraswapCall(msg.sender, amount0Out, amount1Out, data);
      balance0 = IIonaraswapERC20(_token0).balanceOf(address(this));
      balance1 = IIonaraswapERC20(_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, 'IonaraswapPair::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), 'IonaraswapPair::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, IIonaraswapERC20(_token0).balanceOf(address(this)).sub(reserve0));
      _safeTransfer(_token1, to, IIonaraswapERC20(_token1).balanceOf(address(this)).sub(reserve1));
  }

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

pragma solidity >=0.6.12;

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

pragma solidity 0.6.12;

contract IonaraSwapFactory is IIonaraswapFactory {
  address public override feeTo;
  address public override feeToSetter;

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

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

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

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

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

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

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

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

Contract Security Audit

Contract ABI

API
[{"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"}]

0x60806040526001600c5534801561001557600080fd5b5060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280601381526020017f496f6e61726173776170204c5020546f6b656e00000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001206003819055505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613a48806101676000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610869578063d505accf1461089d578063dd62ed3e14610936578063fff6cae9146109ae576101a9565b8063ba9a7a56146107d3578063bc25cf77146107f1578063c45a015514610835576101a9565b80637ecebe00116100d35780637ecebe001461063557806389afcb441461068d57806395d89b41146106ec578063a9059cbb1461076f576101a9565b80636a6278421461056757806370a08231146105bf5780637464fc3d14610617576101a9565b806323b872dd116101665780633644e515116101405780633644e515146104a9578063485cc955146104c75780635909c0d51461052b5780635a3d549314610549576101a9565b806323b872dd146103e657806330adf81f1461046a578063313ce56714610488576101a9565b8063022c0d9f146101ae57806306fdde031461025b5780630902f1ac146102de578063095ea7b3146103305780630dfe16811461039457806318160ddd146103c8575b600080fd5b610259600480360360808110156101c457600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561021557600080fd5b82018360208201111561022757600080fd5b8035906020019184600183028401116401000000008311171561024957600080fd5b90919293919293905050506109b8565b005b610263611164565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a3578082015181840152602081019050610288565b50505050905090810190601f1680156102d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e661119d565b60405180846dffffffffffffffffffffffffffff168152602001836dffffffffffffffffffffffffffff1681526020018263ffffffff168152602001935050505060405180910390f35b61037c6004803603604081101561034657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111fa565b60405180821515815260200191505060405180910390f35b61039c611211565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103d0611237565b6040518082815260200191505060405180910390f35b610452600480360360608110156103fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061123d565b60405180821515815260200191505060405180910390f35b610472611408565b6040518082815260200191505060405180910390f35b61049061142f565b604051808260ff16815260200191505060405180910390f35b6104b1611434565b6040518082815260200191505060405180910390f35b610529600480360360408110156104dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061143a565b005b610533611566565b6040518082815260200191505060405180910390f35b61055161156c565b6040518082815260200191505060405180910390f35b6105a96004803603602081101561057d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611572565b6040518082815260200191505060405180910390f35b610601600480360360208110156105d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119f7565b6040518082815260200191505060405180910390f35b61061f611a0f565b6040518082815260200191505060405180910390f35b6106776004803603602081101561064b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a15565b6040518082815260200191505060405180910390f35b6106cf600480360360208110156106a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a2d565b604051808381526020018281526020019250505060405180910390f35b6106f4611fc2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610734578082015181840152602081019050610719565b50505050905090810190601f1680156107615780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107bb6004803603604081101561078557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ffb565b60405180821515815260200191505060405180910390f35b6107db612012565b6040518082815260200191505060405180910390f35b6108336004803603602081101561080757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612018565b005b61083d6122c7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108716122ed565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610934600480360360e08110156108b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050612313565b005b6109986004803603604081101561094c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061260b565b6040518082815260200191505060405180910390f35b6109b6612630565b005b6001600c5414610a30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496f6e61726173776170506169723a3a6c6f636b3a3a4c4f434b45440000000081525060200191505060405180910390fd5b6000600c819055506000851180610a475750600084115b610a9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806139e36030913960400191505060405180910390fd5b600080610aa761119d565b5091509150816dffffffffffffffffffffffffffff1687108015610ada5750806dffffffffffffffffffffffffffff1686105b610b2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806138b0602c913960400191505060405180910390fd5b6000806000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614158015610be857508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610c5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f496f6e61726173776170506169723a3a737761703a3a494e56414c49445f544f81525060200191505060405180910390fd5b60008b1115610c6f57610c6e828a8d612884565b5b60008a1115610c8457610c83818a8c612884565b5b6000888890501115610d56578873ffffffffffffffffffffffffffffffffffffffff166349352e8f338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610d3d57600080fd5b505af1158015610d51573d6000803e3d6000fd5b505050505b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610dbd57600080fd5b505afa158015610dd1573d6000803e3d6000fd5b505050506040513d6020811015610de757600080fd5b810190808051906020019092919050505093508073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e6157600080fd5b505afa158015610e75573d6000803e3d6000fd5b505050506040513d6020811015610e8b57600080fd5b810190808051906020019092919050505092505050600089856dffffffffffffffffffffffffffff16038311610ec2576000610ed8565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610efc576000610f12565b89856dffffffffffffffffffffffffffff160383035b90506000821180610f235750600081115b610f78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613881602f913960400191505060405180910390fd5b6000610fb4610f91601985612a9e90919063ffffffff16565b610fa661271088612a9e90919063ffffffff16565b612b1690919063ffffffff16565b90506000610ff2610fcf601985612a9e90919063ffffffff16565b610fe461271088612a9e90919063ffffffff16565b612b1690919063ffffffff16565b905061103d6305f5e10061102f896dffffffffffffffffffffffffffff168b6dffffffffffffffffffffffffffff16612a9e90919063ffffffff16565b612a9e90919063ffffffff16565b6110508284612a9e90919063ffffffff16565b10156110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496f6e61726173776170506169723a3a737761703a3a4b00000000000000000081525060200191505060405180910390fd5b50506110d284848888612b7c565b8873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82284848f8f6040518085815260200184815260200183815260200182815260200194505050505060405180910390a35050505050506001600c819055505050505050565b6040518060400160405280601381526020017f496f6e61726173776170204c5020546f6b656e0000000000000000000000000081525081565b6000806000600860009054906101000a90046dffffffffffffffffffffffffffff1692506008600e9054906101000a90046dffffffffffffffffffffffffffff1691506008601c9054906101000a900463ffffffff169050909192565b6000611207338484612ebd565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113f25761137182600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6113fd848484612fa8565b600190509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b81565b601281565b60035481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806138dc6025913960400191505060405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60095481565b600a5481565b60006001600c54146115ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496f6e61726173776170506169723a3a6c6f636b3a3a4c4f434b45440000000081525060200191505060405180910390fd5b6000600c819055506000806115ff61119d565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561168f57600080fd5b505afa1580156116a3573d6000803e3d6000fd5b505050506040513d60208110156116b957600080fd5b810190808051906020019092919050505090506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561175757600080fd5b505afa15801561176b573d6000803e3d6000fd5b505050506040513d602081101561178157600080fd5b8101908080519060200190929190505050905060006117b9856dffffffffffffffffffffffffffff1684612b1690919063ffffffff16565b905060006117e0856dffffffffffffffffffffffffffff1684612b1690919063ffffffff16565b905060006117ee878761313c565b905060008054905060008114156118425761182e6103e861182061181b8688612a9e90919063ffffffff16565b613343565b612b1690919063ffffffff16565b985061183d60006103e86134c0565b6118a5565b6118a2886dffffffffffffffffffffffffffff166118698387612a9e90919063ffffffff16565b8161187057fe5b04886dffffffffffffffffffffffffffff166118958487612a9e90919063ffffffff16565b8161189c57fe5b046135da565b98505b600089116118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806137ff6033913960400191505060405180910390fd5b6119088a8a6134c0565b61191486868a8a612b7c565b811561198c576119856008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612a9e90919063ffffffff16565b600b819055505b3373ffffffffffffffffffffffffffffffffffffffff167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f8585604051808381526020018281526020019250505060405180910390a250505050505050506001600c81905550919050565b60016020528060005260406000206000915090505481565b600b5481565b60046020528060005260406000206000915090505481565b6000806001600c5414611aa8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496f6e61726173776170506169723a3a6c6f636b3a3a4c4f434b45440000000081525060200191505060405180910390fd5b6000600c81905550600080611abb61119d565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611b7757600080fd5b505afa158015611b8b573d6000803e3d6000fd5b505050506040513d6020811015611ba157600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611c1d57600080fd5b505afa158015611c31573d6000803e3d6000fd5b505050506040513d6020811015611c4757600080fd5b810190808051906020019092919050505090506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000611caa888861313c565b905060008054905080611cc68685612a9e90919063ffffffff16565b81611ccd57fe5b049a5080611ce48585612a9e90919063ffffffff16565b81611ceb57fe5b04995060008b118015611cfe575060008a115b611d53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806139016033913960400191505060405180910390fd5b611d5d30846135f3565b611d68878d8d612884565b611d73868d8c612884565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611dda57600080fd5b505afa158015611dee573d6000803e3d6000fd5b505050506040513d6020811015611e0457600080fd5b810190808051906020019092919050505094508573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e7e57600080fd5b505afa158015611e92573d6000803e3d6000fd5b505050506040513d6020811015611ea857600080fd5b81019080805190602001909291905050509350611ec785858b8b612b7c565b8115611f3f57611f386008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612a9e90919063ffffffff16565b600b819055505b8b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968d8d604051808381526020018281526020019250505060405180910390a35050505050505050506001600c81905550915091565b6040518060400160405280600981526020017f496f6e6172612d4c50000000000000000000000000000000000000000000000081525081565b6000612008338484612fa8565b6001905092915050565b6103e881565b6001600c5414612090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496f6e61726173776170506169723a3a6c6f636b3a3a4c4f434b45440000000081525060200191505060405180910390fd5b6000600c819055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506121d082846121cb600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561218257600080fd5b505afa158015612196573d6000803e3d6000fd5b505050506040513d60208110156121ac57600080fd5b8101908080519060200190929190505050612b1690919063ffffffff16565b612884565b6122ba81846122b56008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561226c57600080fd5b505afa158015612280573d6000803e3d6000fd5b505050506040513d602081101561229657600080fd5b8101908080519060200190929190505050612b1690919063ffffffff16565b612884565b50506001600c8190555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b42841015612389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496f6e617261737761704c503a3a7065726d69743a3a4558504952454400000081525060200191505060405180910390fd5b60006003547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b898989600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558a604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561252c573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156125a057508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6125f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806139626027913960400191505060405180910390fd5b612600898989612ebd565b505050505050505050565b6002602052816000526040600020602052806000526040600020600091509150505481565b6001600c54146126a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496f6e61726173776170506169723a3a6c6f636b3a3a4c4f434b45440000000081525060200191505060405180910390fd5b6000600c8190555061287a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561273c57600080fd5b505afa158015612750573d6000803e3d6000fd5b505050506040513d602081101561276657600080fd5b8101908080519060200190929190505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561280057600080fd5b505afa158015612814573d6000803e3d6000fd5b505050506040513d602081101561282a57600080fd5b8101908080519060200190929190505050600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff16612b7c565b6001600c81905550565b600060608473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061299b5780518252602082019150602081019050602083039250612978565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146129fd576040519150601f19603f3d011682016040523d82523d6000602084013e612a02565b606091505b5091509150818015612a425750600081511480612a415750808060200190516020811015612a2f57600080fd5b81019080805190602001909291905050505b5b612a97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613853602e913960400191505060405180910390fd5b5050505050565b600080821480612abb5750828283850292508281612ab857fe5b04145b612b10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613989602d913960400191505060405180910390fd5b92915050565b6000828284039150811115612b76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613934602e913960400191505060405180910390fd5b92915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff168411158015612bec57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff168311155b612c41576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806138326021913960400191505060405180910390fd5b60006401000000004281612c5157fe5b06905060006008601c9054906101000a900463ffffffff168203905060008163ffffffff16118015612c9457506000846dffffffffffffffffffffffffffff1614155b8015612cb157506000836dffffffffffffffffffffffffffff1614155b15612d93578063ffffffff16612cf685612cca8661370d565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661373890919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16026009600082825401925050819055508063ffffffff16612d6484612d388761370d565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661373890919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602600a600082825401925050819055505b85600860006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550846008600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550816008601c6101000a81548163ffffffff021916908363ffffffff1602179055507f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff1660405180836dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050505050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b612ffa81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061308f81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379890919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156131a757600080fd5b505afa1580156131bb573d6000803e3d6000fd5b505050506040513d60208110156131d157600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141591506000600b54905082156133295760008114613324576000613269613264866dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff16612a9e90919063ffffffff16565b613343565b9050600061327683613343565b9050808211156133215760006132bc60086132ae61329d8587612b1690919063ffffffff16565b600054612a9e90919063ffffffff16565b612a9e90919063ffffffff16565b905060006132f96132d7600885612a9e90919063ffffffff16565b6132eb601187612a9e90919063ffffffff16565b61379890919063ffffffff16565b9050600081838161330657fe5b049050600081111561331d5761331c87826134c0565b5b5050505b50505b61333b565b6000811461333a576000600b819055505b5b505092915050565b60008082141561335657600090506134bb565b6000829050600060019050700100000000000000000000000000000000821061338857608082901c9150604081901b90505b6801000000000000000082106133a757604082901c9150602081901b90505b64010000000082106133c257602082901c9150601081901b90505b6201000082106133db57601082901c9150600881901b90505b61010082106133f357600882901c9150600481901b90505b6010821061340a57600482901c9150600281901b90505b6008821061341a57600181901b90505b600181858161342557fe5b048201901c9050600181858161343757fe5b048201901c9050600181858161344957fe5b048201901c9050600181858161345b57fe5b048201901c9050600181858161346d57fe5b048201901c9050600181858161347f57fe5b048201901c9050600181858161349157fe5b048201901c905060008185816134a357fe5b0490508082106134b357806134b5565b815b93505050505b919050565b6134d58160005461379890919063ffffffff16565b60008190555061352d81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379890919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008183106135e957816135eb565b825b905092915050565b61364581600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061369d81600054612b1690919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006e010000000000000000000000000000826dffffffffffffffffffffffffffff16029050919050565b6000816dffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168161378f57fe5b04905092915050565b60008282840191508110156137f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806139b6602d913960400191505060405180910390fd5b9291505056fe496f6e61726173776170506169723a3a6d696e743a3a494e53554646494349454e545f4c49515549444954595f4d494e544544496f6e61726173776170506169723a3a5f7570646174653a3a4f564552464c4f57496f6e61726173776170506169723a3a5f736166655472616e736665723a3a5452414e534645525f4641494c4544496f6e61726173776170506169723a3a737761703a3a494e53554646494349454e545f494e5055545f414d4f554e54496f6e61726173776170506169723a3a737761703a3a494e53554646494349454e545f4c4951554944495459496f6e61726173776170506169723a3a696e697469616c697a653a3a464f5242494444454e496f6e61726173776170506169723a3a6275726e3a3a494e53554646494349454e545f4c49515549444954595f4255524e4544496f6e61726173776170536166654d6174683a3a7375623a3a64732d6d6174682d7375622d756e646572666c6f77496f6e617261737761704c503a3a7065726d69743a3a494e56414c49445f5349474e4154555245496f6e61726173776170536166654d6174683a3a6d756c3a3a64732d6d6174682d6d756c2d6f766572666c6f77496f6e61726173776170536166654d6174683a3a6164643a3a64732d6d6174682d6164642d6f766572666c6f77496f6e61726173776170506169723a3a737761703a3a494e53554646494349454e545f4f55545055545f414d4f554e54a26469706673582212207857671c4c27675bee71324499b7a0d3727a7b80d80f00ae7db9f2b32282754264736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610869578063d505accf1461089d578063dd62ed3e14610936578063fff6cae9146109ae576101a9565b8063ba9a7a56146107d3578063bc25cf77146107f1578063c45a015514610835576101a9565b80637ecebe00116100d35780637ecebe001461063557806389afcb441461068d57806395d89b41146106ec578063a9059cbb1461076f576101a9565b80636a6278421461056757806370a08231146105bf5780637464fc3d14610617576101a9565b806323b872dd116101665780633644e515116101405780633644e515146104a9578063485cc955146104c75780635909c0d51461052b5780635a3d549314610549576101a9565b806323b872dd146103e657806330adf81f1461046a578063313ce56714610488576101a9565b8063022c0d9f146101ae57806306fdde031461025b5780630902f1ac146102de578063095ea7b3146103305780630dfe16811461039457806318160ddd146103c8575b600080fd5b610259600480360360808110156101c457600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561021557600080fd5b82018360208201111561022757600080fd5b8035906020019184600183028401116401000000008311171561024957600080fd5b90919293919293905050506109b8565b005b610263611164565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a3578082015181840152602081019050610288565b50505050905090810190601f1680156102d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e661119d565b60405180846dffffffffffffffffffffffffffff168152602001836dffffffffffffffffffffffffffff1681526020018263ffffffff168152602001935050505060405180910390f35b61037c6004803603604081101561034657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111fa565b60405180821515815260200191505060405180910390f35b61039c611211565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103d0611237565b6040518082815260200191505060405180910390f35b610452600480360360608110156103fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061123d565b60405180821515815260200191505060405180910390f35b610472611408565b6040518082815260200191505060405180910390f35b61049061142f565b604051808260ff16815260200191505060405180910390f35b6104b1611434565b6040518082815260200191505060405180910390f35b610529600480360360408110156104dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061143a565b005b610533611566565b6040518082815260200191505060405180910390f35b61055161156c565b6040518082815260200191505060405180910390f35b6105a96004803603602081101561057d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611572565b6040518082815260200191505060405180910390f35b610601600480360360208110156105d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119f7565b6040518082815260200191505060405180910390f35b61061f611a0f565b6040518082815260200191505060405180910390f35b6106776004803603602081101561064b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a15565b6040518082815260200191505060405180910390f35b6106cf600480360360208110156106a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a2d565b604051808381526020018281526020019250505060405180910390f35b6106f4611fc2565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610734578082015181840152602081019050610719565b50505050905090810190601f1680156107615780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107bb6004803603604081101561078557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611ffb565b60405180821515815260200191505060405180910390f35b6107db612012565b6040518082815260200191505060405180910390f35b6108336004803603602081101561080757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612018565b005b61083d6122c7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6108716122ed565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610934600480360360e08110156108b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050612313565b005b6109986004803603604081101561094c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061260b565b6040518082815260200191505060405180910390f35b6109b6612630565b005b6001600c5414610a30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496f6e61726173776170506169723a3a6c6f636b3a3a4c4f434b45440000000081525060200191505060405180910390fd5b6000600c819055506000851180610a475750600084115b610a9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806139e36030913960400191505060405180910390fd5b600080610aa761119d565b5091509150816dffffffffffffffffffffffffffff1687108015610ada5750806dffffffffffffffffffffffffffff1686105b610b2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806138b0602c913960400191505060405180910390fd5b6000806000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614158015610be857508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610c5a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f496f6e61726173776170506169723a3a737761703a3a494e56414c49445f544f81525060200191505060405180910390fd5b60008b1115610c6f57610c6e828a8d612884565b5b60008a1115610c8457610c83818a8c612884565b5b6000888890501115610d56578873ffffffffffffffffffffffffffffffffffffffff166349352e8f338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610d3d57600080fd5b505af1158015610d51573d6000803e3d6000fd5b505050505b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610dbd57600080fd5b505afa158015610dd1573d6000803e3d6000fd5b505050506040513d6020811015610de757600080fd5b810190808051906020019092919050505093508073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e6157600080fd5b505afa158015610e75573d6000803e3d6000fd5b505050506040513d6020811015610e8b57600080fd5b810190808051906020019092919050505092505050600089856dffffffffffffffffffffffffffff16038311610ec2576000610ed8565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610efc576000610f12565b89856dffffffffffffffffffffffffffff160383035b90506000821180610f235750600081115b610f78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613881602f913960400191505060405180910390fd5b6000610fb4610f91601985612a9e90919063ffffffff16565b610fa661271088612a9e90919063ffffffff16565b612b1690919063ffffffff16565b90506000610ff2610fcf601985612a9e90919063ffffffff16565b610fe461271088612a9e90919063ffffffff16565b612b1690919063ffffffff16565b905061103d6305f5e10061102f896dffffffffffffffffffffffffffff168b6dffffffffffffffffffffffffffff16612a9e90919063ffffffff16565b612a9e90919063ffffffff16565b6110508284612a9e90919063ffffffff16565b10156110c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496f6e61726173776170506169723a3a737761703a3a4b00000000000000000081525060200191505060405180910390fd5b50506110d284848888612b7c565b8873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82284848f8f6040518085815260200184815260200183815260200182815260200194505050505060405180910390a35050505050506001600c819055505050505050565b6040518060400160405280601381526020017f496f6e61726173776170204c5020546f6b656e0000000000000000000000000081525081565b6000806000600860009054906101000a90046dffffffffffffffffffffffffffff1692506008600e9054906101000a90046dffffffffffffffffffffffffffff1691506008601c9054906101000a900463ffffffff169050909192565b6000611207338484612ebd565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113f25761137182600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6113fd848484612fa8565b600190509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b81565b601281565b60035481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806138dc6025913960400191505060405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60095481565b600a5481565b60006001600c54146115ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496f6e61726173776170506169723a3a6c6f636b3a3a4c4f434b45440000000081525060200191505060405180910390fd5b6000600c819055506000806115ff61119d565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561168f57600080fd5b505afa1580156116a3573d6000803e3d6000fd5b505050506040513d60208110156116b957600080fd5b810190808051906020019092919050505090506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561175757600080fd5b505afa15801561176b573d6000803e3d6000fd5b505050506040513d602081101561178157600080fd5b8101908080519060200190929190505050905060006117b9856dffffffffffffffffffffffffffff1684612b1690919063ffffffff16565b905060006117e0856dffffffffffffffffffffffffffff1684612b1690919063ffffffff16565b905060006117ee878761313c565b905060008054905060008114156118425761182e6103e861182061181b8688612a9e90919063ffffffff16565b613343565b612b1690919063ffffffff16565b985061183d60006103e86134c0565b6118a5565b6118a2886dffffffffffffffffffffffffffff166118698387612a9e90919063ffffffff16565b8161187057fe5b04886dffffffffffffffffffffffffffff166118958487612a9e90919063ffffffff16565b8161189c57fe5b046135da565b98505b600089116118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806137ff6033913960400191505060405180910390fd5b6119088a8a6134c0565b61191486868a8a612b7c565b811561198c576119856008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612a9e90919063ffffffff16565b600b819055505b3373ffffffffffffffffffffffffffffffffffffffff167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f8585604051808381526020018281526020019250505060405180910390a250505050505050506001600c81905550919050565b60016020528060005260406000206000915090505481565b600b5481565b60046020528060005260406000206000915090505481565b6000806001600c5414611aa8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496f6e61726173776170506169723a3a6c6f636b3a3a4c4f434b45440000000081525060200191505060405180910390fd5b6000600c81905550600080611abb61119d565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611b7757600080fd5b505afa158015611b8b573d6000803e3d6000fd5b505050506040513d6020811015611ba157600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611c1d57600080fd5b505afa158015611c31573d6000803e3d6000fd5b505050506040513d6020811015611c4757600080fd5b810190808051906020019092919050505090506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000611caa888861313c565b905060008054905080611cc68685612a9e90919063ffffffff16565b81611ccd57fe5b049a5080611ce48585612a9e90919063ffffffff16565b81611ceb57fe5b04995060008b118015611cfe575060008a115b611d53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806139016033913960400191505060405180910390fd5b611d5d30846135f3565b611d68878d8d612884565b611d73868d8c612884565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611dda57600080fd5b505afa158015611dee573d6000803e3d6000fd5b505050506040513d6020811015611e0457600080fd5b810190808051906020019092919050505094508573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611e7e57600080fd5b505afa158015611e92573d6000803e3d6000fd5b505050506040513d6020811015611ea857600080fd5b81019080805190602001909291905050509350611ec785858b8b612b7c565b8115611f3f57611f386008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612a9e90919063ffffffff16565b600b819055505b8b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968d8d604051808381526020018281526020019250505060405180910390a35050505050505050506001600c81905550915091565b6040518060400160405280600981526020017f496f6e6172612d4c50000000000000000000000000000000000000000000000081525081565b6000612008338484612fa8565b6001905092915050565b6103e881565b6001600c5414612090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496f6e61726173776170506169723a3a6c6f636b3a3a4c4f434b45440000000081525060200191505060405180910390fd5b6000600c819055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506121d082846121cb600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561218257600080fd5b505afa158015612196573d6000803e3d6000fd5b505050506040513d60208110156121ac57600080fd5b8101908080519060200190929190505050612b1690919063ffffffff16565b612884565b6122ba81846122b56008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561226c57600080fd5b505afa158015612280573d6000803e3d6000fd5b505050506040513d602081101561229657600080fd5b8101908080519060200190929190505050612b1690919063ffffffff16565b612884565b50506001600c8190555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b42841015612389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f496f6e617261737761704c503a3a7065726d69743a3a4558504952454400000081525060200191505060405180910390fd5b60006003547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b898989600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558a604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561252c573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156125a057508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6125f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806139626027913960400191505060405180910390fd5b612600898989612ebd565b505050505050505050565b6002602052816000526040600020602052806000526040600020600091509150505481565b6001600c54146126a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496f6e61726173776170506169723a3a6c6f636b3a3a4c4f434b45440000000081525060200191505060405180910390fd5b6000600c8190555061287a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561273c57600080fd5b505afa158015612750573d6000803e3d6000fd5b505050506040513d602081101561276657600080fd5b8101908080519060200190929190505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561280057600080fd5b505afa158015612814573d6000803e3d6000fd5b505050506040513d602081101561282a57600080fd5b8101908080519060200190929190505050600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff16612b7c565b6001600c81905550565b600060608473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061299b5780518252602082019150602081019050602083039250612978565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146129fd576040519150601f19603f3d011682016040523d82523d6000602084013e612a02565b606091505b5091509150818015612a425750600081511480612a415750808060200190516020811015612a2f57600080fd5b81019080805190602001909291905050505b5b612a97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613853602e913960400191505060405180910390fd5b5050505050565b600080821480612abb5750828283850292508281612ab857fe5b04145b612b10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613989602d913960400191505060405180910390fd5b92915050565b6000828284039150811115612b76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613934602e913960400191505060405180910390fd5b92915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff168411158015612bec57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff168311155b612c41576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806138326021913960400191505060405180910390fd5b60006401000000004281612c5157fe5b06905060006008601c9054906101000a900463ffffffff168203905060008163ffffffff16118015612c9457506000846dffffffffffffffffffffffffffff1614155b8015612cb157506000836dffffffffffffffffffffffffffff1614155b15612d93578063ffffffff16612cf685612cca8661370d565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661373890919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16026009600082825401925050819055508063ffffffff16612d6484612d388761370d565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1661373890919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602600a600082825401925050819055505b85600860006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550846008600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550816008601c6101000a81548163ffffffff021916908363ffffffff1602179055507f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff1660405180836dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050505050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b612ffa81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061308f81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379890919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156131a757600080fd5b505afa1580156131bb573d6000803e3d6000fd5b505050506040513d60208110156131d157600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141591506000600b54905082156133295760008114613324576000613269613264866dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff16612a9e90919063ffffffff16565b613343565b9050600061327683613343565b9050808211156133215760006132bc60086132ae61329d8587612b1690919063ffffffff16565b600054612a9e90919063ffffffff16565b612a9e90919063ffffffff16565b905060006132f96132d7600885612a9e90919063ffffffff16565b6132eb601187612a9e90919063ffffffff16565b61379890919063ffffffff16565b9050600081838161330657fe5b049050600081111561331d5761331c87826134c0565b5b5050505b50505b61333b565b6000811461333a576000600b819055505b5b505092915050565b60008082141561335657600090506134bb565b6000829050600060019050700100000000000000000000000000000000821061338857608082901c9150604081901b90505b6801000000000000000082106133a757604082901c9150602081901b90505b64010000000082106133c257602082901c9150601081901b90505b6201000082106133db57601082901c9150600881901b90505b61010082106133f357600882901c9150600481901b90505b6010821061340a57600482901c9150600281901b90505b6008821061341a57600181901b90505b600181858161342557fe5b048201901c9050600181858161343757fe5b048201901c9050600181858161344957fe5b048201901c9050600181858161345b57fe5b048201901c9050600181858161346d57fe5b048201901c9050600181858161347f57fe5b048201901c9050600181858161349157fe5b048201901c905060008185816134a357fe5b0490508082106134b357806134b5565b815b93505050505b919050565b6134d58160005461379890919063ffffffff16565b60008190555061352d81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461379890919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008183106135e957816135eb565b825b905092915050565b61364581600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061369d81600054612b1690919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006e010000000000000000000000000000826dffffffffffffffffffffffffffff16029050919050565b6000816dffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168161378f57fe5b04905092915050565b60008282840191508110156137f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d8152602001806139b6602d913960400191505060405180910390fd5b9291505056fe496f6e61726173776170506169723a3a6d696e743a3a494e53554646494349454e545f4c49515549444954595f4d494e544544496f6e61726173776170506169723a3a5f7570646174653a3a4f564552464c4f57496f6e61726173776170506169723a3a5f736166655472616e736665723a3a5452414e534645525f4641494c4544496f6e61726173776170506169723a3a737761703a3a494e53554646494349454e545f494e5055545f414d4f554e54496f6e61726173776170506169723a3a737761703a3a494e53554646494349454e545f4c4951554944495459496f6e61726173776170506169723a3a696e697469616c697a653a3a464f5242494444454e496f6e61726173776170506169723a3a6275726e3a3a494e53554646494349454e545f4c49515549444954595f4255524e4544496f6e61726173776170536166654d6174683a3a7375623a3a64732d6d6174682d7375622d756e646572666c6f77496f6e617261737761704c503a3a7065726d69743a3a494e56414c49445f5349474e4154555245496f6e61726173776170536166654d6174683a3a6d756c3a3a64732d6d6174682d6d756c2d6f766572666c6f77496f6e61726173776170536166654d6174683a3a6164643a3a64732d6d6174682d6164642d6f766572666c6f77496f6e61726173776170506169723a3a737761703a3a494e53554646494349454e545f4f55545055545f414d4f554e54a26469706673582212207857671c4c27675bee71324499b7a0d3727a7b80d80f00ae7db9f2b32282754264736f6c634300060c0033

Deployed Bytecode Sourcemap

6802:9444:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13716:1919;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3677:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7779:217;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5572:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7093:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3821:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5850:277;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4103:108;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3781:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3964:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8787:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7434:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7471;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10849:1212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3850:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7508:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4216:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12169:1439;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3733:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5715:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6920:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15680:344;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7066:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7119:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6133:634;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3896:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16069:174;;;:::i;:::-;;13716:1919;7687:1;7675:8;;:13;7667:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7739:1;7728:8;:12;;;;13841:1:::1;13828:10;:14;:32;;;;13859:1;13846:10;:14;13828:32;13820:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13923:17;13942::::0;13964:13:::1;:11;:13::i;:::-;13922:55;;;;;14022:9;14009:22;;:10;:22;:48;;;;;14048:9;14035:22;;:10;:22;14009:48;14001:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14117:13;14139::::0;14225:15:::1;14243:6;;;;;;;;;;;14225:24;;14258:15;14276:6;;;;;;;;;;;14258:24;;14305:7;14299:13;;:2;:13;;;;:30;;;;;14322:7;14316:13;;:2;:13;;;;14299:30;14291:75;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;14392:1;14379:10;:14;14375:58;;;14395:38;14409:7;14418:2;14422:10;14395:13;:38::i;:::-;14375:58;14493:1;14480:10;:14;14476:58;;;14496:38;14510:7;14519:2;14523:10;14496:13;:38::i;:::-;14476:58;14595:1;14581:4;;:11;;:15;14577:99;;;14616:2;14598:36;;;14635:10;14647;14659;14671:4;;14598:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14577:99;14713:7;14696:35;;;14740:4;14696:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;14685:61;;14783:7;14766:35;;;14810:4;14766:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;14755:61;;7747:1;;14834:14;14874:10;14862:9;:22;;;14851:8;:33;:75;;14925:1;14851:75;;;14911:10;14899:9;:22;;;14887:8;:35;14851:75;14834:92;;14935:14;14975:10;14963:9;:22;;;14952:8;:33;:75;;15026:1;14952:75;;;15012:10;15000:9;:22;;;14988:8;:35;14952:75;14935:92;;15056:1;15044:9;:13;:30;;;;15073:1;15061:9;:13;15044:30;15036:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15208:21;15232:42;15256:17;15270:2;15256:9;:13;;:17;;;;:::i;:::-;15232:19;15245:5;15232:8;:12;;:19;;;;:::i;:::-;:23;;:42;;;;:::i;:::-;15208:66;;15283:21;15307:42;15331:17;15345:2;15331:9;:13;;:17;;;;:::i;:::-;15307:19;15320:5;15307:8;:12;;:19;;;;:::i;:::-;:23;;:42;;;;:::i;:::-;15283:66;;15408:44;15443:8;15408:30;15428:9;15408:30;;15413:9;15408:15;;:19;;:30;;;;:::i;:::-;:34;;:44;;;;:::i;:::-;15366:38;15387:16;15366;:20;;:38;;;;:::i;:::-;:86;;15358:122;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;7747:1;;15500:49;15508:8;15518;15528:9;15539;15500:7;:49::i;:::-;15626:2;15563:66;;15568:10;15563:66;;;15580:9;15591;15602:10;15614;15563:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7747:1;;;;;;7766::::0;7755:8;:12;;;;13716:1919;;;;;:::o;3677:51::-;;;;;;;;;;;;;;;;;;;:::o;7779:217::-;7823:17;7842;7861:26;7908:8;;;;;;;;;;;7896:20;;7935:8;;;;;;;;;;;7923:20;;7972:18;;;;;;;;;;;7950:40;;7779:217;;;:::o;5572:137::-;5636:4;5649:36;5658:10;5670:7;5679:5;5649:8;:36::i;:::-;5699:4;5692:11;;5572:137;;;;:::o;7093:21::-;;;;;;;;;;;;;:::o;3821:24::-;;;;:::o;5850:277::-;5928:4;5981:2;5945:9;:15;5955:4;5945:15;;;;;;;;;;;;;;;:27;5961:10;5945:27;;;;;;;;;;;;;;;;:39;5941:130;;6025:38;6057:5;6025:9;:15;6035:4;6025:15;;;;;;;;;;;;;;;:27;6041:10;6025:27;;;;;;;;;;;;;;;;:31;;:38;;;;:::i;:::-;5995:9;:15;6005:4;5995:15;;;;;;;;;;;;;;;:27;6011:10;5995:27;;;;;;;;;;;;;;;:68;;;;5941:130;6077:26;6087:4;6093:2;6097:5;6077:9;:26::i;:::-;6117:4;6110:11;;5850:277;;;;;:::o;4103:108::-;4145:66;4103:108;;;:::o;3781:35::-;3814:2;3781:35;:::o;3964:31::-;;;;:::o;8787:213::-;8879:7;;;;;;;;;;;8865:21;;:10;:21;;;8857:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8964:7;8955:6;;:16;;;;;;;;;;;;;;;;;;8987:7;8978:6;;:16;;;;;;;;;;;;;;;;;;8787:213;;:::o;7434:32::-;;;;:::o;7471:::-;;;;:::o;10849:1212::-;10898:14;7687:1;7675:8;;:13;7667:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7739:1;7728:8;:12;;;;10922:17:::1;10941::::0;10963:13:::1;:11;:13::i;:::-;10921:55;;;;;10998:13;11031:6;;;;;;;;;;;11014:34;;;11057:4;11014:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;10998:65;;11070:13;11103:6;;;;;;;;;;;11086:34;;;11129:4;11086:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;11070:65;;11142:12;11157:23;11170:9;11157:23;;:8;:12;;:23;;;;:::i;:::-;11142:38;;11187:12;11202:23;11215:9;11202:23;;:8;:12;;:23;;;;:::i;:::-;11187:38;;11234:10;11247:30;11256:9;11267;11247:8;:30::i;:::-;11234:43;;11284:17;11304:11:::0;::::1;11284:31;;11420:1;11404:12;:17;11400:347;;;11444:64;6961:5;11444:41;11464:20;11476:7;11464;:11;;:20;;;;:::i;:::-;11444:19;:41::i;:::-;:45;;:64;;;;:::i;:::-;11432:76;;11517:36;11531:1;6961:5;11517;:36::i;:::-;11400:347;;;11643:96;11690:9;11662:37;;:25;11674:12;11662:7;:11;;:25;;;;:::i;:::-;:37;;;;;;11729:9;11701:37;;:25;11713:12;11701:7;:11;;:25;;;;:::i;:::-;:37;;;;;;11643:18;:96::i;:::-;11631:108;;11400:347;11773:1;11761:9;:13;11753:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11837:20;11843:2;11847:9;11837:5;:20::i;:::-;11866:49;11874:8;11884;11894:9;11905;11866:7;:49::i;:::-;11926:5;11922:47;;;11941:28;11960:8;;;;;;;;;;;11941:28;;11946:8;;;;;;;;;;;11941:14;;:18;;:28;;;;:::i;:::-;11933:5;:36;;;;11922:47;12026:10;12021:34;;;12038:7;12047;12021:34;;;;;;;;;;;;;;;;;;;;;;;;7747:1;;;;;;;;7766::::0;7755:8;:12;;;;10849:1212;;;:::o;3850:41::-;;;;;;;;;;;;;;;;;:::o;7508:17::-;;;;:::o;4216:38::-;;;;;;;;;;;;;;;;;:::o;12169:1439::-;12218:12;12232;7687:1;7675:8;;:13;7667:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7739:1;7728:8;:12;;;;12254:17:::1;12273::::0;12295:13:::1;:11;:13::i;:::-;12253:55;;;;;12330:15;12348:6;;;;;;;;;;;12330:24;;12407:15;12425:6;;;;;;;;;;;12407:24;;12484:13;12517:7;12500:35;;;12544:4;12500:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;12484:66;;12557:13;12590:7;12573:35;;;12617:4;12573:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;12557:66;;12630:14;12647:9;:24;12665:4;12647:24;;;;;;;;;;;;;;;;12630:41;;12680:10;12693:30;12702:9;12713;12693:8;:30::i;:::-;12680:43;;12730:17;12750:11:::0;::::1;12730:31;;12882:12;12856:23;12870:8;12856:9;:13;;:23;;;;:::i;:::-;:38;;;;;;12846:48;;12985:12;12959:23;12973:8;12959:9;:13;;:23;;;;:::i;:::-;:38;;;;;;12949:48;;13070:1;13060:7;:11;:26;;;;;13085:1;13075:7;:11;13060:26;13052:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13149:31;13163:4;13170:9;13149:5;:31::i;:::-;13187:35;13201:7;13210:2;13214:7;13187:13;:35::i;:::-;13229;13243:7;13252:2;13256:7;13229:13;:35::i;:::-;13299:7;13282:35;;;13326:4;13282:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;13271:61;;13367:7;13350:35;;;13394:4;13350:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;13339:61;;13409:49;13417:8;13427;13437:9;13448;13409:7;:49::i;:::-;13469:5;13465:47;;;13484:28;13503:8;;;;;;;;;;;13484:28;;13489:8;;;;;;;;;;;13484:14;;:18;;:28;;;;:::i;:::-;13476:5;:36;;;;13465:47;13599:2;13564:38;;13569:10;13564:38;;;13581:7;13590;13564:38;;;;;;;;;;;;;;;;;;;;;;;;7747:1;;;;;;;;;7766::::0;7755:8;:12;;;;12169:1439;;;:::o;3733:43::-;;;;;;;;;;;;;;;;;;;:::o;5715:129::-;5775:4;5788:32;5798:10;5810:2;5814:5;5788:9;:32::i;:::-;5834:4;5827:11;;5715:129;;;;:::o;6920:46::-;6961:5;6920:46;:::o;15680:344::-;7687:1;7675:8;;:13;7667:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7739:1;7728:8;:12;;;;15729:15:::1;15747:6;;;;;;;;;;;15729:24;;15777:15;15795:6;;;;;;;;;;;15777:24;;15825:92;15839:7;15848:2;15852:64;15907:8;;;;;;;;;;;15852:64;;15869:7;15852:35;;;15896:4;15852:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;:54;;:64;;;;:::i;:::-;15825:13;:92::i;:::-;15926;15940:7;15949:2;15953:64;16008:8;;;;;;;;;;;15953:64;;15970:7;15953:35;;;15997:4;15953:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;:54;;:64;;;;:::i;:::-;15926:13;:92::i;:::-;7747:1;;7766::::0;7755:8;:12;;;;15680:344;:::o;7066:22::-;;;;;;;;;;;;;:::o;7119:21::-;;;;;;;;;;;;;:::o;6133:634::-;6275:15;6263:8;:27;;6255:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6331:14;6414:16;;4145:66;6462:15;;6479:5;6486:7;6495:5;6502:6;:13;6509:5;6502:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;6519:8;6451:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6441:88;;;;;;6366:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6348:197;;;;;;6331:214;;6552:24;6579:26;6589:6;6597:1;6600;6603;6579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6552:53;;6648:1;6620:30;;:16;:30;;;;:59;;;;;6674:5;6654:25;;:16;:25;;;6620:59;6612:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6730:31;6739:5;6746:7;6755:5;6730:8;:31::i;:::-;6133:634;;;;;;;;;:::o;3896:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16069:174::-;7687:1;7675:8;;:13;7667:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7739:1;7728:8;:12;;;;16108:129:::1;16133:6;;;;;;;;;;;16116:34;;;16159:4;16116:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;16184:6;;;;;;;;;;;16167:34;;;16210:4;16167:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;16218:8;;;;;;;;;;;16228;;;;;;;;;;;16108:7;:129::i;:::-;7766:1:::0;7755:8;:12;;;;16069:174::o;8002:297::-;8080:12;8094:17;8115:5;:10;;7023:34;;;;;;;;;;;;;;;;;7013:45;;;;;;8159:2;8163:5;8126:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8115:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8079:91;;;;8185:7;:57;;;;;8212:1;8197:4;:11;:16;:44;;;;8228:4;8217:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8197:44;8185:57;8177:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8002:297;;;;;:::o;3248:161::-;3300:6;3328:1;3323;:6;:30;;;;3352:1;3347;3342;3338;:5;3334:9;;;3333:15;;;;;;:20;3323:30;3315:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3248:161;;;;:::o;3094:148::-;3146:6;3184:1;3178;3174;:5;3170:9;;;3169:16;;3161:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3094:148;;;;:::o;9081:818::-;9209:2;9189:23;;:8;:23;;:50;;;;;9236:2;9216:23;;:8;:23;;9189:50;9181:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9284:21;9333:5;9315:15;:23;;;;;;9284:55;;9346:18;9384;;;;;;;;;;;9367:14;:35;9346:56;;9450:1;9436:11;:15;;;:33;;;;;9468:1;9455:9;:14;;;;9436:33;:51;;;;;9486:1;9473:9;:14;;;;9436:51;9432:314;;;9630:11;9577:64;;9582:44;9616:9;9582:27;9599:9;9582:16;:27::i;:::-;:33;;;;:44;;;;:::i;:::-;9577:50;;:64;9553:20;;:88;;;;;;;;;;;9727:11;9674:64;;9679:44;9713:9;9679:27;9696:9;9679:16;:27::i;:::-;:33;;;;:44;;;;:::i;:::-;9674:50;;:64;9650:20;;:88;;;;;;;;;;;9432:314;9771:8;9752;;:28;;;;;;;;;;;;;;;;;;9806:8;9787;;:28;;;;;;;;;;;;;;;;;;9843:14;9822:18;;:35;;;;;;;;;;;;;;;;;;9869:24;9874:8;;;;;;;;;;;9884;;;;;;;;;;;9869:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;9081:818;;;;;;:::o;5195:159::-;5300:5;5272:9;:16;5282:5;5272:16;;;;;;;;;;;;;;;:25;5289:7;5272:25;;;;;;;;;;;;;;;:33;;;;5333:7;5317:31;;5326:5;5317:31;;;5342:5;5317:31;;;;;;;;;;;;;;;;;;5195:159;;;:::o;5360:206::-;5450:26;5470:5;5450:9;:15;5460:4;5450:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;5432:9;:15;5442:4;5432:15;;;;;;;;;;;;;;;:44;;;;5499:24;5517:5;5499:9;:13;5509:2;5499:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;5483:9;:13;5493:2;5483:13;;;;;;;;;;;;;;;:40;;;;5550:2;5535:25;;5544:4;5535:25;;;5554:5;5535:25;;;;;;;;;;;;;;;;;;5360:206;;;:::o;9984:757::-;10057:10;10076:13;10111:7;;;;;;;;;;;10092:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10076:51;;10159:1;10142:19;;:5;:19;;;;10134:27;;10168:11;10182:5;;10168:19;;10213:5;10209:527;;;10243:1;10233:6;:11;10229:451;;10257:10;10270:51;10290:30;10310:9;10290:30;;10295:9;10290:15;;:19;;:30;;;;:::i;:::-;10270:19;:51::i;:::-;10257:64;;10332:14;10349:27;10369:6;10349:19;:27::i;:::-;10332:44;;10399:9;10391:5;:17;10387:284;;;10423:14;10440:44;10482:1;10440:37;10456:20;10466:9;10456:5;:9;;:20;;;;:::i;:::-;10440:11;;:15;;:37;;;;:::i;:::-;:41;;:44;;;;:::i;:::-;10423:61;;10497:16;10516:35;10534:16;10548:1;10534:9;:13;;:16;;;;:::i;:::-;10516:13;10526:2;10516:5;:9;;:13;;;;:::i;:::-;:17;;:35;;;;:::i;:::-;10497:54;;10564:14;10593:11;10581:9;:23;;;;;;10564:40;;10633:1;10621:9;:13;10617:42;;;10636:23;10642:5;10649:9;10636:5;:23::i;:::-;10617:42;10387:284;;;;10229:451;;;10209:527;;;10707:1;10697:6;:11;10693:43;;10727:1;10719:5;:9;;;;10693:43;10209:527;9984:757;;;;;;:::o;1294:894::-;1339:6;1363:1;1358;:6;1354:20;;;1373:1;1366:8;;;;1354:20;1381:7;1391:1;1381:11;;1399:6;1408:1;1399:10;;1428:35;1422:2;:41;1418:91;;1481:3;1474:10;;;;;1499:2;1493:8;;;;;1418:91;1527:19;1521:2;:25;1517:74;;1564:2;1557:9;;;;;1581:2;1575:8;;;;;1517:74;1607:11;1601:2;:17;1597:66;;1636:2;1629:9;;;;;1653:2;1647:8;;;;;1597:66;1679:7;1673:2;:13;1669:61;;1704:2;1697:9;;;;;1721:1;1715:7;;;;;1669:61;1746:5;1740:2;:11;1736:58;;1769:1;1762:8;;;;;1785:1;1779:7;;;;;1736:58;1810:4;1804:2;:10;1800:57;;1832:1;1825:8;;;;;1848:1;1842:7;;;;;1800:57;1873:3;1867:2;:9;1863:39;;1893:1;1887:7;;;;;1863:39;1929:1;1923;1919;:5;;;;;;1915:1;:9;1914:16;;1910:20;;1956:1;1950;1946;:5;;;;;;1942:1;:9;1941:16;;1937:20;;1983:1;1977;1973;:5;;;;;;1969:1;:9;1968:16;;1964:20;;2010:1;2004;2000;:5;;;;;;1996:1;:9;1995:16;;1991:20;;2037:1;2031;2027;:5;;;;;;2023:1;:9;2022:16;;2018:20;;2064:1;2058;2054;:5;;;;;;2050:1;:9;2049:16;;2045:20;;2091:1;2085;2081;:5;;;;;;2077:1;:9;2076:16;;2072:20;;2136:7;2150:1;2146;:5;;;;;;2136:15;;2170:2;2166:1;:6;:15;;2179:2;2166:15;;;2175:1;2166:15;2158:24;;;;;1294:894;;;;:::o;4801:187::-;4870:22;4886:5;4870:11;;:15;;:22;;;;:::i;:::-;4856:11;:36;;;;4915:24;4933:5;4915:9;:13;4925:2;4915:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;4899:9;:13;4909:2;4899:13;;;;;;;;;;;;;;;:40;;;;4972:2;4951:31;;4968:1;4951:31;;;4976:5;4951:31;;;;;;;;;;;;;;;;;;4801:187;;:::o;979:90::-;1031:6;1054:1;1050;:5;:13;;1062:1;1050:13;;;1058:1;1050:13;1046:17;;979:90;;;;:::o;4994:195::-;5069:26;5089:5;5069:9;:15;5079:4;5069:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;5051:9;:15;5061:4;5051:15;;;;;;;;;;;;;;;:44;;;;5116:22;5132:5;5116:11;;:15;;:22;;;;:::i;:::-;5102:11;:36;;;;5173:1;5150:33;;5159:4;5150:33;;;5177:5;5150:33;;;;;;;;;;;;;;;;;;4994:195;;:::o;2483:114::-;2533:9;2432:6;2563:1;2555:10;;:17;2551:21;;2483:114;;;:::o;2664:102::-;2724:9;2758:1;2750:10;;2746:14;;:1;:14;;;;;;;;2742:18;;2664:102;;;;:::o;2941:147::-;2993:6;3031:1;3025;3021;:5;3017:9;;;3016:16;;3008:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2941:147;;;;:::o

Swarm Source

ipfs://7857671c4c27675bee71324499b7a0d3727a7b80d80f00ae7db9f2b322827542

Block Transaction Gas Used Reward
view all blocks produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.