ETH Price: $2,272.52 (-6.14%)

Token

Nimbus LP (NBU_LP)
 

Overview

Max Total Supply

275.679514448496176497 NBU_LP

Holders

8

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

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

Contract Name:
NimbusPair

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-03-04
*/

pragma solidity =0.8.0;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function nimbusReferralProgram() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

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

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

interface INimbusPair is INimbusERC20 {
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

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

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

    function initialize(address, address) external;
}

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

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

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

contract NimbusERC20 is INimbusERC20 {
    using SafeMath for uint;

    string public constant override name = 'Nimbus LP';
    string public constant override symbol = 'NBU_LP';
    uint8 public constant override decimals = 18;
    uint  public override totalSupply;
    mapping(address => uint) public override balanceOf;
    mapping(address => mapping(address => uint)) public override allowance;

    bytes32 public override DOMAIN_SEPARATOR;
    // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant override PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
    mapping(address => uint) public override nonces;

    constructor() {
        uint chainId = block.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 override returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transfer(address to, uint value) external override returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(address from, address to, uint value) external override returns (bool) {
        if (allowance[from][msg.sender] != (2**256-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 override {
        require(deadline >= block.timestamp, 'Nimbus: 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, 'Nimbus: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}

library Math {
    function min(uint x, uint y) internal pure returns (uint z) {
        z = x < y ? x : y;
    }

    // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
    function sqrt(uint y) internal pure returns (uint z) {
        if (y > 3) {
            z = y;
            uint x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}

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

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

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

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

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}

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

interface INimbusReferralProgram {
    function recordFee(address token, address recipient, uint amount) external;
}

contract NimbusPair is INimbusPair, NimbusERC20 {
    using SafeMath  for uint;
    using UQ112x112 for uint224;

    uint public constant override MINIMUM_LIQUIDITY = 10**3;
    bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)')));

    address public override factory;
    address public override token0;
    address public override 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 override price0CumulativeLast;
    uint public override price1CumulativeLast;
    uint public override kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event

    uint private unlocked = 1;
    modifier lock() {
        require(unlocked == 1, 'Nimbus: LOCKED');
        unlocked = 0;
        _;
        unlocked = 1;
    }

    function getReserves() public view override 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))), 'Nimbus: TRANSFER_FAILED');
    }

    constructor() {
        factory = msg.sender;
    }

    // called once by the factory at time of deployment
    function initialize(address _token0, address _token1) external override {
        require(msg.sender == factory, 'Nimbus: 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 <= (2**112 - 1) && balance1 <= (2**112 - 1), 'Nimbus: OVERFLOW'); // uint112(-1) = 2 ** 112 - 1
        uint32 blockTimestamp = uint32(block.timestamp % 2**32);
        uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired
        if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {
            // * never overflows, and + overflow is desired
            price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;
            price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;
        }
        reserve0 = uint112(balance0);
        reserve1 = uint112(balance1);
        blockTimestampLast = blockTimestamp;
        emit Sync(reserve0, reserve1);
    }

    // if fee is on, mint liquidity equivalent to 1/6th of the growth in sqrt(k)
    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = INimbusFactory(factory).feeTo();
        feeOn = feeTo != address(0);
        uint _kLast = kLast; // gas savings
        if (feeOn) {
            if (_kLast != 0) {
                uint rootK = Math.sqrt(uint(_reserve0).mul(_reserve1));
                uint rootKLast = Math.sqrt(_kLast);
                if (rootK > rootKLast) {
                    uint numerator = totalSupply.mul(rootK.sub(rootKLast));
                    uint denominator = rootK.mul(5).add(rootKLast);
                    uint liquidity = numerator / denominator;
                    if (liquidity > 0) _mint(feeTo, liquidity);
                }
            }
        } else if (_kLast != 0) {
            kLast = 0;
        }
    }

    // this low-level function should be called from a contract which performs important safety checks
    function mint(address to) external override lock returns (uint liquidity) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        uint balance0 = IERC20(token0).balanceOf(address(this));
        uint balance1 = IERC20(token1).balanceOf(address(this));
        uint amount0 = balance0.sub(_reserve0);
        uint amount1 = balance1.sub(_reserve1);

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        if (_totalSupply == 0) {
            liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);
           _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens
        } else {
            liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1);
        }
        require(liquidity > 0, 'Nimbus: 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 override lock returns (uint amount0, uint amount1) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        address _token0 = token0;                                // gas savings
        address _token1 = token1;                                // gas savings
        uint balance0 = IERC20(_token0).balanceOf(address(this));
        uint balance1 = IERC20(_token1).balanceOf(address(this));
        uint liquidity = balanceOf[address(this)];

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        amount0 = liquidity.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution
        amount1 = liquidity.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution
        require(amount0 > 0 && amount1 > 0, 'Nimbus: INSUFFICIENT_LIQUIDITY_BURNED');
        _burn(address(this), liquidity);
        _safeTransfer(_token0, to, amount0);
        _safeTransfer(_token1, to, amount1);
        balance0 = IERC20(_token0).balanceOf(address(this));
        balance1 = IERC20(_token1).balanceOf(address(this));

        _update(balance0, balance1, _reserve0, _reserve1);
        if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date
        emit Burn(msg.sender, amount0, amount1, to);
    }

    // this low-level function should be called from a contract which performs important safety checks
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external override lock {
        require(amount0Out > 0 || amount1Out > 0, 'Nimbus: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'Nimbus: 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, 'Nimbus: 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) INimbusCallee(to).NimbusCall(msg.sender, amount0Out, amount1Out, data);
        balance0 = IERC20(_token0).balanceOf(address(this));
        balance1 = IERC20(_token1).balanceOf(address(this));
        }
        uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0;
        uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0;
        require(amount0In > 0 || amount1In > 0, 'Nimbus: INSUFFICIENT_INPUT_AMOUNT');

        {
        address referralProgram = INimbusFactory(factory).nimbusReferralProgram();
        if (amount0In > 0) {
            address _token0 = token0;
            uint refFee = amount0In.mul(3)/ 2000;
            _safeTransfer(_token0, referralProgram, refFee);
            INimbusReferralProgram(referralProgram).recordFee(_token0, to, refFee);
            balance0 = balance0.sub(refFee);
        } 
        if (amount1In > 0) {
            uint refFee = amount1In.mul(3) / 2000;
            address _token1 = token1;
            _safeTransfer(_token1, referralProgram, refFee);
            INimbusReferralProgram(referralProgram).recordFee(_token1, to, refFee);
            balance1 = balance1.sub(refFee);
        }
        }
        
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint balance0Adjusted = balance0.mul(10000).sub(amount0In.mul(15));
        uint balance1Adjusted = balance1.mul(10000).sub(amount1In.mul(15));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(10000**2), 'Nimbus: 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 override lock {
        address _token0 = token0; // gas savings
        address _token1 = token1; // gas savings
        _safeTransfer(_token0, to, IERC20(_token0).balanceOf(address(this)).sub(reserve0));
        _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1));
    }

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

Contract Security Audit

Contract ABI

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

60806040526001600c5534801561001557600080fd5b50604080518082018252600981526804e696d627573204c560bc1b6020918201528151808301835260018152603160f81b90820152905146916100c2917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f917f85626d1f7b78a85e3b6be064e099e5ed42ac2b0db650b057dc5769285b395ffc917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69186913091016100f5565b60408051601f19818403018152919052805160209091012060035550600580546001600160a01b03191633179055610121565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b61312780620001316000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a71461034d578063d505accf14610355578063dd62ed3e14610368578063fff6cae91461037b576101b9565b8063ba9a7a561461032a578063bc25cf7714610332578063c45a015514610345576101b9565b80637ecebe00116100d35780637ecebe00146102db57806389afcb44146102ee57806395d89b411461030f578063a9059cbb14610317576101b9565b80636a627842146102ad57806370a08231146102c05780637464fc3d146102d3576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610282578063485cc9551461028a5780635909c0d51461029d5780635a3d5493146102a5576101b9565b806323b872dd1461025257806330adf81f14610265578063313ce5671461026d576101b9565b8063095ea7b311610197578063095ea7b3146102085780630dfe16811461022857806318160ddd1461023d576101b9565b8063022c0d9f146101be57806306fdde03146101d35780630902f1ac146101f1575b600080fd5b6101d16101cc3660046127a6565b610383565b005b6101db610b74565b6040516101e891906129ec565b60405180910390f35b6101f9610bad565b6040516101e893929190612e66565b61021b610216366004612743565b610c02565b6040516101e89190612979565b610230610c19565b6040516101e89190612889565b610245610c35565b6040516101e89190612984565b61021b61026036600461268e565b610c3b565b610245610d14565b610275610d38565b6040516101e89190612ebf565b610245610d3d565b6101d1610298366004612656565b610d43565b610245610de7565b610245610ded565b6102456102bb36600461261e565b610df3565b6102456102ce36600461261e565b611162565b610245611174565b6102456102e936600461261e565b61117a565b6103016102fc36600461261e565b61118c565b6040516101e8929190612e96565b6101db6115e5565b61021b610325366004612743565b61161e565b61024561162b565b6101d161034036600461261e565b611631565b6102306117c0565b6102306117dc565b6101d16103633660046126ce565b6117f8565b610245610376366004612656565b6119f9565b6101d1611a16565b600c546001146103c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612d43565b60405180910390fd5b6000600c55841515806103db5750600084115b610411576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612db1565b60008061041c610bad565b5091509150816dffffffffffffffffffffffffffff168710801561044f5750806dffffffffffffffffffffffffffff1686105b610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612c1b565b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff9182169190811690891682148015906104ea57508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610520576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612b50565b8a1561053157610531828a8d611bda565b891561054257610542818a8c611bda565b86156105d5576040517f806693a300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a169063806693a3906105a29033908f908f908e908e90600401612901565b600060405180830381600087803b1580156105bc57600080fd5b505af11580156105d0573d6000803e3d6000fd5b505050505b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190610627903090600401612889565b60206040518083038186803b15801561063f57600080fd5b505afa158015610653573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610677919061278e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290945073ffffffffffffffffffffffffffffffffffffffff8216906370a08231906106cc903090600401612889565b60206040518083038186803b1580156106e457600080fd5b505afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c919061278e565b92505050600089856dffffffffffffffffffffffffffff1661073e9190612fb5565b831161074b57600061076f565b6107658a6dffffffffffffffffffffffffffff8716612fb5565b61076f9084612fb5565b9050600061078d8a6dffffffffffffffffffffffffffff8716612fb5565b831161079a5760006107be565b6107b48a6dffffffffffffffffffffffffffff8716612fb5565b6107be9084612fb5565b905060008211806107cf5750600081115b610805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612c52565b600554604080517f6e81aa63000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691636e81aa63916004808301926020929190829003018186803b15801561087057600080fd5b505afa158015610884573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a8919061263a565b905082156109775760065473ffffffffffffffffffffffffffffffffffffffff1660006107d06108d9866003611d90565b6108e39190612f20565b90506108f0828483611bda565b8273ffffffffffffffffffffffffffffffffffffffff16632a355f7c838e846040518463ffffffff1660e01b815260040161092d939291906128aa565b600060405180830381600087803b15801561094757600080fd5b505af115801561095b573d6000803e3d6000fd5b505050506109728188611dea90919063ffffffff16565b965050505b8115610a455760006107d061098d846003611d90565b6109979190612f20565b60075490915073ffffffffffffffffffffffffffffffffffffffff166109be818484611bda565b8273ffffffffffffffffffffffffffffffffffffffff16632a355f7c828e856040518463ffffffff1660e01b81526004016109fb939291906128aa565b600060405180830381600087803b158015610a1557600080fd5b505af1158015610a29573d6000803e3d6000fd5b50505050610a408287611dea90919063ffffffff16565b955050505b506000610a68610a5684600f611d90565b610a6287612710611d90565b90611dea565b90506000610a7a610a5684600f611d90565b9050610aa76305f5e100610aa16dffffffffffffffffffffffffffff8b8116908b16611d90565b90611d90565b610ab18383611d90565b1015610ae9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612b19565b5050610af784848888611e32565b8873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82284848f8f604051610b5a9493929190612ea4565b60405180910390a350506001600c55505050505050505050565b6040518060400160405280600981526020017f4e696d627573204c50000000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610c0f3384846120f5565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610cff5773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610ccd9083611dea565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610d0a84848461216a565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610d94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612e0e565b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610e31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612d43565b6000600c81905580610e41610bad565b506006546040517f70a0823100000000000000000000000000000000000000000000000000000000815292945090925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190610ea1903090600401612889565b60206040518083038186803b158015610eb957600080fd5b505afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef1919061278e565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190610f4d903090600401612889565b60206040518083038186803b158015610f6557600080fd5b505afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d919061278e565b90506000610fbb836dffffffffffffffffffffffffffff8716611dea565b90506000610fd9836dffffffffffffffffffffffffffff8716611dea565b90506000610fe78787612235565b6000549091508061101e5761100a6103e8610a626110058787611d90565b6123af565b985061101960006103e861241f565b611073565b6110706dffffffffffffffffffffffffffff891661103c8684611d90565b6110469190612f20565b6dffffffffffffffffffffffffffff89166110618685611d90565b61106b9190612f20565b6124c6565b98505b600089116110ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612ce6565b6110b78a8a61241f565b6110c386868a8a611e32565b81156110ff576008546110fb906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611d90565b600b555b3373ffffffffffffffffffffffffffffffffffffffff167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f8585604051611147929190612e96565b60405180910390a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612d43565b6000600c819055806111db610bad565b506006546007546040517f70a0823100000000000000000000000000000000000000000000000000000000815293955091935073ffffffffffffffffffffffffffffffffffffffff9081169291169060009083906370a0823190611243903090600401612889565b60206040518083038186803b15801561125b57600080fd5b505afa15801561126f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611293919061278e565b905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112d09190612889565b60206040518083038186803b1580156112e857600080fd5b505afa1580156112fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611320919061278e565b3060009081526001602052604081205491925061133d8888612235565b6000549091508061134e8487611d90565b6113589190612f20565b9a50806113658486611d90565b61136f9190612f20565b995060008b118015611381575060008a115b6113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612bbe565b6113c130846124de565b6113cc878d8d611bda565b6113d7868d8c611bda565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8816906370a0823190611429903090600401612889565b60206040518083038186803b15801561144157600080fd5b505afa158015611455573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611479919061278e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290955073ffffffffffffffffffffffffffffffffffffffff8716906370a08231906114ce903090600401612889565b60206040518083038186803b1580156114e657600080fd5b505afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e919061278e565b935061152c85858b8b611e32565b811561156857600854611564906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611d90565b600b555b8b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968d8d6040516115c7929190612e96565b60405180910390a35050505050505050506001600c81905550915091565b6040518060400160405280600681526020017f4e42555f4c50000000000000000000000000000000000000000000000000000081525081565b6000610c0f33848461216a565b6103e881565b600c5460011461166d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612d43565b6000600c556006546007546008546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841693909216916117489184918691611743916dffffffffffffffffffffffffffff9091169084906370a08231906116f3903090600401612889565b60206040518083038186803b15801561170b57600080fd5b505afa15801561171f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a62919061278e565b611bda565b6117b681846117436008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116f39190612889565b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611832576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612aab565b60035473ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761189283613021565b919050558a6040516020016118ac9695949392919061298d565b604051602081830303815290604052805190602001206040516020016118d3929190612853565b60405160208183030381529060405280519060200120905060006001828686866040516000815260200160405260405161191094939291906129ce565b6020604051602081039080840390855afa158015611932573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906119ad57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612d7a565b6119ee8989896120f5565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611a52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612d43565b6000600c556006546040517f70a08231000000000000000000000000000000000000000000000000000000008152611bd39173ffffffffffffffffffffffffffffffffffffffff16906370a0823190611aaf903090600401612889565b60206040518083038186803b158015611ac757600080fd5b505afa158015611adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aff919061278e565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190611b55903090600401612889565b60206040518083038186803b158015611b6d57600080fd5b505afa158015611b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba5919061278e565b6008546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611e32565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209091015251600090819073ffffffffffffffffffffffffffffffffffffffff8616907fa9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b90611c5e90879087906024016128db565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611ce79190612837565b6000604051808303816000865af19150503d8060008114611d24576040519150601f19603f3d011682016040523d82523d6000602084013e611d29565b606091505b5091509150818015611d53575080511580611d53575080806020019051810190611d53919061276e565b611d89576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612caf565b5050505050565b6000811580611db457508282611da68183612f78565b9250611db29083612f20565b145b610c13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612a74565b600082611df78382612fb5565b9150811115610c13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612a3d565b6dffffffffffffffffffffffffffff8411158015611e5e57506dffffffffffffffffffffffffffff8311155b611e94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612b87565b6000611ea56401000000004261305a565b600854909150600090611ede907c0100000000000000000000000000000000000000000000000000000000900463ffffffff1683612fcc565b905060008163ffffffff16118015611f0557506dffffffffffffffffffffffffffff841615155b8015611f2057506dffffffffffffffffffffffffffff831615155b15611fee578063ffffffff16611f5d85611f398661258f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906125ba565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611f859190612f78565b60096000828254611f969190612ecd565b909155505063ffffffff8116611faf84611f398761258f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611fd79190612f78565b600a6000828254611fe89190612ecd565b90915550505b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff87160217928390556040517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1936120e593818116939091041690612e45565b60405180910390a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061215d908590612984565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461219a9082611dea565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546121d690826125d6565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061215d908590612984565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156122a057600080fd5b505afa1580156122b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d8919061263a565b600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061239b5780156123965760006123276110056dffffffffffffffffffffffffffff888116908816611d90565b90506000612334836123af565b90508082111561239357600061235661234d8484611dea565b60005490611d90565b9050600061236f83612369866005611d90565b906125d6565b9050600061237d8284612f20565b9050801561238f5761238f878261241f565b5050505b50505b6123a7565b80156123a7576000600b555b505092915050565b6000600382111561241057508060006123c9600283612f20565b6123d4906001612ecd565b90505b8181101561240a579050806002816123ef8186612f20565b6123f99190612ecd565b6124039190612f20565b90506123d7565b5061241a565b811561241a575060015b919050565b60005461242c90826125d6565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461245e90826125d6565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124ba908590612984565b60405180910390a35050565b60008183106124d557816124d7565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461250e9082611dea565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040812091909155546125429082611dea565b600090815560405173ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124ba908590612984565b6000610c136e0100000000000000000000000000006dffffffffffffffffffffffffffff8416612f34565b60006124d76dffffffffffffffffffffffffffff831684612ee5565b6000826125e38382612ecd565b9150811015610c13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612ae2565b60006020828403121561262f578081fd5b81356124d7816130cc565b60006020828403121561264b578081fd5b81516124d7816130cc565b60008060408385031215612668578081fd5b8235612673816130cc565b91506020830135612683816130cc565b809150509250929050565b6000806000606084860312156126a2578081fd5b83356126ad816130cc565b925060208401356126bd816130cc565b929592945050506040919091013590565b600080600080600080600060e0888a0312156126e8578283fd5b87356126f3816130cc565b96506020880135612703816130cc565b95506040880135945060608801359350608088013560ff81168114612726578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215612755578182fd5b8235612760816130cc565b946020939093013593505050565b60006020828403121561277f578081fd5b815180151581146124d7578182fd5b60006020828403121561279f578081fd5b5051919050565b6000806000806000608086880312156127bd578081fd5b853594506020860135935060408601356127d6816130cc565b9250606086013567ffffffffffffffff808211156127f2578283fd5b818801915088601f830112612805578283fd5b813581811115612813578384fd5b896020828501011115612824578384fd5b9699959850939650602001949392505050565b60008251612849818460208701612ff1565b9190910192915050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff8716825285602083015284604083015260806060830152826080830152828460a084013781830160a090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101949350505050565b901515815260200190565b90815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082528251806020840152612a0b816040850160208701612ff1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252600f908201527f4e696d6275733a20455850495245440000000000000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526009908201527f4e696d6275733a204b0000000000000000000000000000000000000000000000604082015260600190565b60208082526012908201527f4e696d6275733a20494e56414c49445f544f0000000000000000000000000000604082015260600190565b60208082526010908201527f4e696d6275733a204f564552464c4f5700000000000000000000000000000000604082015260600190565b60208082526025908201527f4e696d6275733a20494e53554646494349454e545f4c49515549444954595f4260408201527f55524e4544000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601e908201527f4e696d6275733a20494e53554646494349454e545f4c49515549444954590000604082015260600190565b60208082526021908201527f4e696d6275733a20494e53554646494349454e545f494e5055545f414d4f554e60408201527f5400000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526017908201527f4e696d6275733a205452414e534645525f4641494c4544000000000000000000604082015260600190565b60208082526025908201527f4e696d6275733a20494e53554646494349454e545f4c49515549444954595f4d60408201527f494e544544000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252600e908201527f4e696d6275733a204c4f434b4544000000000000000000000000000000000000604082015260600190565b60208082526019908201527f4e696d6275733a20494e56414c49445f5349474e415455524500000000000000604082015260600190565b60208082526022908201527f4e696d6275733a20494e53554646494349454e545f4f55545055545f414d4f5560408201527f4e54000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526011908201527f4e696d6275733a20464f5242494444454e000000000000000000000000000000604082015260600190565b6dffffffffffffffffffffffffffff92831681529116602082015260400190565b6dffffffffffffffffffffffffffff938416815291909216602082015263ffffffff909116604082015260600190565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b60ff91909116815260200190565b60008219821115612ee057612ee061306e565b500190565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80841680612f1457612f1461309d565b92169190910492915050565b600082612f2f57612f2f61309d565b500490565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851681830481118215151615612f6f57612f6f61306e565b02949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612fb057612fb061306e565b500290565b600082821015612fc757612fc761306e565b500390565b600063ffffffff83811690831681811015612fe957612fe961306e565b039392505050565b60005b8381101561300c578181015183820152602001612ff4565b8381111561301b576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130535761305361306e565b5060010190565b6000826130695761306961309d565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146130ee57600080fd5b5056fea264697066735822122009efbdfdcf59ab0458bca530ac4494d67402d03a2b29e6e342b085575633b97664736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a71461034d578063d505accf14610355578063dd62ed3e14610368578063fff6cae91461037b576101b9565b8063ba9a7a561461032a578063bc25cf7714610332578063c45a015514610345576101b9565b80637ecebe00116100d35780637ecebe00146102db57806389afcb44146102ee57806395d89b411461030f578063a9059cbb14610317576101b9565b80636a627842146102ad57806370a08231146102c05780637464fc3d146102d3576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610282578063485cc9551461028a5780635909c0d51461029d5780635a3d5493146102a5576101b9565b806323b872dd1461025257806330adf81f14610265578063313ce5671461026d576101b9565b8063095ea7b311610197578063095ea7b3146102085780630dfe16811461022857806318160ddd1461023d576101b9565b8063022c0d9f146101be57806306fdde03146101d35780630902f1ac146101f1575b600080fd5b6101d16101cc3660046127a6565b610383565b005b6101db610b74565b6040516101e891906129ec565b60405180910390f35b6101f9610bad565b6040516101e893929190612e66565b61021b610216366004612743565b610c02565b6040516101e89190612979565b610230610c19565b6040516101e89190612889565b610245610c35565b6040516101e89190612984565b61021b61026036600461268e565b610c3b565b610245610d14565b610275610d38565b6040516101e89190612ebf565b610245610d3d565b6101d1610298366004612656565b610d43565b610245610de7565b610245610ded565b6102456102bb36600461261e565b610df3565b6102456102ce36600461261e565b611162565b610245611174565b6102456102e936600461261e565b61117a565b6103016102fc36600461261e565b61118c565b6040516101e8929190612e96565b6101db6115e5565b61021b610325366004612743565b61161e565b61024561162b565b6101d161034036600461261e565b611631565b6102306117c0565b6102306117dc565b6101d16103633660046126ce565b6117f8565b610245610376366004612656565b6119f9565b6101d1611a16565b600c546001146103c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612d43565b60405180910390fd5b6000600c55841515806103db5750600084115b610411576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612db1565b60008061041c610bad565b5091509150816dffffffffffffffffffffffffffff168710801561044f5750806dffffffffffffffffffffffffffff1686105b610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612c1b565b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff9182169190811690891682148015906104ea57508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610520576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612b50565b8a1561053157610531828a8d611bda565b891561054257610542818a8c611bda565b86156105d5576040517f806693a300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a169063806693a3906105a29033908f908f908e908e90600401612901565b600060405180830381600087803b1580156105bc57600080fd5b505af11580156105d0573d6000803e3d6000fd5b505050505b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190610627903090600401612889565b60206040518083038186803b15801561063f57600080fd5b505afa158015610653573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610677919061278e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290945073ffffffffffffffffffffffffffffffffffffffff8216906370a08231906106cc903090600401612889565b60206040518083038186803b1580156106e457600080fd5b505afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c919061278e565b92505050600089856dffffffffffffffffffffffffffff1661073e9190612fb5565b831161074b57600061076f565b6107658a6dffffffffffffffffffffffffffff8716612fb5565b61076f9084612fb5565b9050600061078d8a6dffffffffffffffffffffffffffff8716612fb5565b831161079a5760006107be565b6107b48a6dffffffffffffffffffffffffffff8716612fb5565b6107be9084612fb5565b905060008211806107cf5750600081115b610805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612c52565b600554604080517f6e81aa63000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691636e81aa63916004808301926020929190829003018186803b15801561087057600080fd5b505afa158015610884573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a8919061263a565b905082156109775760065473ffffffffffffffffffffffffffffffffffffffff1660006107d06108d9866003611d90565b6108e39190612f20565b90506108f0828483611bda565b8273ffffffffffffffffffffffffffffffffffffffff16632a355f7c838e846040518463ffffffff1660e01b815260040161092d939291906128aa565b600060405180830381600087803b15801561094757600080fd5b505af115801561095b573d6000803e3d6000fd5b505050506109728188611dea90919063ffffffff16565b965050505b8115610a455760006107d061098d846003611d90565b6109979190612f20565b60075490915073ffffffffffffffffffffffffffffffffffffffff166109be818484611bda565b8273ffffffffffffffffffffffffffffffffffffffff16632a355f7c828e856040518463ffffffff1660e01b81526004016109fb939291906128aa565b600060405180830381600087803b158015610a1557600080fd5b505af1158015610a29573d6000803e3d6000fd5b50505050610a408287611dea90919063ffffffff16565b955050505b506000610a68610a5684600f611d90565b610a6287612710611d90565b90611dea565b90506000610a7a610a5684600f611d90565b9050610aa76305f5e100610aa16dffffffffffffffffffffffffffff8b8116908b16611d90565b90611d90565b610ab18383611d90565b1015610ae9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612b19565b5050610af784848888611e32565b8873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82284848f8f604051610b5a9493929190612ea4565b60405180910390a350506001600c55505050505050505050565b6040518060400160405280600981526020017f4e696d627573204c50000000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610c0f3384846120f5565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610cff5773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610ccd9083611dea565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610d0a84848461216a565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610d94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612e0e565b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610e31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612d43565b6000600c81905580610e41610bad565b506006546040517f70a0823100000000000000000000000000000000000000000000000000000000815292945090925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190610ea1903090600401612889565b60206040518083038186803b158015610eb957600080fd5b505afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef1919061278e565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190610f4d903090600401612889565b60206040518083038186803b158015610f6557600080fd5b505afa158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d919061278e565b90506000610fbb836dffffffffffffffffffffffffffff8716611dea565b90506000610fd9836dffffffffffffffffffffffffffff8716611dea565b90506000610fe78787612235565b6000549091508061101e5761100a6103e8610a626110058787611d90565b6123af565b985061101960006103e861241f565b611073565b6110706dffffffffffffffffffffffffffff891661103c8684611d90565b6110469190612f20565b6dffffffffffffffffffffffffffff89166110618685611d90565b61106b9190612f20565b6124c6565b98505b600089116110ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612ce6565b6110b78a8a61241f565b6110c386868a8a611e32565b81156110ff576008546110fb906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611d90565b600b555b3373ffffffffffffffffffffffffffffffffffffffff167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f8585604051611147929190612e96565b60405180910390a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c546001146111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612d43565b6000600c819055806111db610bad565b506006546007546040517f70a0823100000000000000000000000000000000000000000000000000000000815293955091935073ffffffffffffffffffffffffffffffffffffffff9081169291169060009083906370a0823190611243903090600401612889565b60206040518083038186803b15801561125b57600080fd5b505afa15801561126f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611293919061278e565b905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112d09190612889565b60206040518083038186803b1580156112e857600080fd5b505afa1580156112fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611320919061278e565b3060009081526001602052604081205491925061133d8888612235565b6000549091508061134e8487611d90565b6113589190612f20565b9a50806113658486611d90565b61136f9190612f20565b995060008b118015611381575060008a115b6113b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612bbe565b6113c130846124de565b6113cc878d8d611bda565b6113d7868d8c611bda565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8816906370a0823190611429903090600401612889565b60206040518083038186803b15801561144157600080fd5b505afa158015611455573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611479919061278e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290955073ffffffffffffffffffffffffffffffffffffffff8716906370a08231906114ce903090600401612889565b60206040518083038186803b1580156114e657600080fd5b505afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e919061278e565b935061152c85858b8b611e32565b811561156857600854611564906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611d90565b600b555b8b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968d8d6040516115c7929190612e96565b60405180910390a35050505050505050506001600c81905550915091565b6040518060400160405280600681526020017f4e42555f4c50000000000000000000000000000000000000000000000000000081525081565b6000610c0f33848461216a565b6103e881565b600c5460011461166d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612d43565b6000600c556006546007546008546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841693909216916117489184918691611743916dffffffffffffffffffffffffffff9091169084906370a08231906116f3903090600401612889565b60206040518083038186803b15801561170b57600080fd5b505afa15801561171f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a62919061278e565b611bda565b6117b681846117436008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116f39190612889565b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611832576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612aab565b60035473ffffffffffffffffffffffffffffffffffffffff8816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b91908761189283613021565b919050558a6040516020016118ac9695949392919061298d565b604051602081830303815290604052805190602001206040516020016118d3929190612853565b60405160208183030381529060405280519060200120905060006001828686866040516000815260200160405260405161191094939291906129ce565b6020604051602081039080840390855afa158015611932573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906119ad57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6119e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612d7a565b6119ee8989896120f5565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611a52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612d43565b6000600c556006546040517f70a08231000000000000000000000000000000000000000000000000000000008152611bd39173ffffffffffffffffffffffffffffffffffffffff16906370a0823190611aaf903090600401612889565b60206040518083038186803b158015611ac757600080fd5b505afa158015611adb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aff919061278e565b6007546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190611b55903090600401612889565b60206040518083038186803b158015611b6d57600080fd5b505afa158015611b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba5919061278e565b6008546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611e32565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209091015251600090819073ffffffffffffffffffffffffffffffffffffffff8616907fa9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b90611c5e90879087906024016128db565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611ce79190612837565b6000604051808303816000865af19150503d8060008114611d24576040519150601f19603f3d011682016040523d82523d6000602084013e611d29565b606091505b5091509150818015611d53575080511580611d53575080806020019051810190611d53919061276e565b611d89576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612caf565b5050505050565b6000811580611db457508282611da68183612f78565b9250611db29083612f20565b145b610c13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612a74565b600082611df78382612fb5565b9150811115610c13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612a3d565b6dffffffffffffffffffffffffffff8411158015611e5e57506dffffffffffffffffffffffffffff8311155b611e94576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612b87565b6000611ea56401000000004261305a565b600854909150600090611ede907c0100000000000000000000000000000000000000000000000000000000900463ffffffff1683612fcc565b905060008163ffffffff16118015611f0557506dffffffffffffffffffffffffffff841615155b8015611f2057506dffffffffffffffffffffffffffff831615155b15611fee578063ffffffff16611f5d85611f398661258f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906125ba565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611f859190612f78565b60096000828254611f969190612ecd565b909155505063ffffffff8116611faf84611f398761258f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16611fd79190612f78565b600a6000828254611fe89190612ecd565b90915550505b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff87160217928390556040517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1936120e593818116939091041690612e45565b60405180910390a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061215d908590612984565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461219a9082611dea565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546121d690826125d6565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061215d908590612984565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156122a057600080fd5b505afa1580156122b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d8919061263a565b600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061239b5780156123965760006123276110056dffffffffffffffffffffffffffff888116908816611d90565b90506000612334836123af565b90508082111561239357600061235661234d8484611dea565b60005490611d90565b9050600061236f83612369866005611d90565b906125d6565b9050600061237d8284612f20565b9050801561238f5761238f878261241f565b5050505b50505b6123a7565b80156123a7576000600b555b505092915050565b6000600382111561241057508060006123c9600283612f20565b6123d4906001612ecd565b90505b8181101561240a579050806002816123ef8186612f20565b6123f99190612ecd565b6124039190612f20565b90506123d7565b5061241a565b811561241a575060015b919050565b60005461242c90826125d6565b600090815573ffffffffffffffffffffffffffffffffffffffff831681526001602052604090205461245e90826125d6565b73ffffffffffffffffffffffffffffffffffffffff83166000818152600160205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124ba908590612984565b60405180910390a35050565b60008183106124d557816124d7565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205461250e9082611dea565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040812091909155546125429082611dea565b600090815560405173ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124ba908590612984565b6000610c136e0100000000000000000000000000006dffffffffffffffffffffffffffff8416612f34565b60006124d76dffffffffffffffffffffffffffff831684612ee5565b6000826125e38382612ecd565b9150811015610c13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103bf90612ae2565b60006020828403121561262f578081fd5b81356124d7816130cc565b60006020828403121561264b578081fd5b81516124d7816130cc565b60008060408385031215612668578081fd5b8235612673816130cc565b91506020830135612683816130cc565b809150509250929050565b6000806000606084860312156126a2578081fd5b83356126ad816130cc565b925060208401356126bd816130cc565b929592945050506040919091013590565b600080600080600080600060e0888a0312156126e8578283fd5b87356126f3816130cc565b96506020880135612703816130cc565b95506040880135945060608801359350608088013560ff81168114612726578384fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215612755578182fd5b8235612760816130cc565b946020939093013593505050565b60006020828403121561277f578081fd5b815180151581146124d7578182fd5b60006020828403121561279f578081fd5b5051919050565b6000806000806000608086880312156127bd578081fd5b853594506020860135935060408601356127d6816130cc565b9250606086013567ffffffffffffffff808211156127f2578283fd5b818801915088601f830112612805578283fd5b813581811115612813578384fd5b896020828501011115612824578384fd5b9699959850939650602001949392505050565b60008251612849818460208701612ff1565b9190910192915050565b7f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff8716825285602083015284604083015260806060830152826080830152828460a084013781830160a090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101949350505050565b901515815260200190565b90815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b93845260ff9290921660208401526040830152606082015260800190565b6000602082528251806020840152612a0b816040850160208701612ff1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b6020808252600f908201527f4e696d6275733a20455850495245440000000000000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526009908201527f4e696d6275733a204b0000000000000000000000000000000000000000000000604082015260600190565b60208082526012908201527f4e696d6275733a20494e56414c49445f544f0000000000000000000000000000604082015260600190565b60208082526010908201527f4e696d6275733a204f564552464c4f5700000000000000000000000000000000604082015260600190565b60208082526025908201527f4e696d6275733a20494e53554646494349454e545f4c49515549444954595f4260408201527f55524e4544000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601e908201527f4e696d6275733a20494e53554646494349454e545f4c49515549444954590000604082015260600190565b60208082526021908201527f4e696d6275733a20494e53554646494349454e545f494e5055545f414d4f554e60408201527f5400000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526017908201527f4e696d6275733a205452414e534645525f4641494c4544000000000000000000604082015260600190565b60208082526025908201527f4e696d6275733a20494e53554646494349454e545f4c49515549444954595f4d60408201527f494e544544000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252600e908201527f4e696d6275733a204c4f434b4544000000000000000000000000000000000000604082015260600190565b60208082526019908201527f4e696d6275733a20494e56414c49445f5349474e415455524500000000000000604082015260600190565b60208082526022908201527f4e696d6275733a20494e53554646494349454e545f4f55545055545f414d4f5560408201527f4e54000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526011908201527f4e696d6275733a20464f5242494444454e000000000000000000000000000000604082015260600190565b6dffffffffffffffffffffffffffff92831681529116602082015260400190565b6dffffffffffffffffffffffffffff938416815291909216602082015263ffffffff909116604082015260600190565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b60ff91909116815260200190565b60008219821115612ee057612ee061306e565b500190565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80841680612f1457612f1461309d565b92169190910492915050565b600082612f2f57612f2f61309d565b500490565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851681830481118215151615612f6f57612f6f61306e565b02949350505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612fb057612fb061306e565b500290565b600082821015612fc757612fc761306e565b500390565b600063ffffffff83811690831681811015612fe957612fe961306e565b039392505050565b60005b8381101561300c578181015183820152602001612ff4565b8381111561301b576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130535761305361306e565b5060010190565b6000826130695761306961309d565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146130ee57600080fd5b5056fea264697066735822122009efbdfdcf59ab0458bca530ac4494d67402d03a2b29e6e342b085575633b97664736f6c63430008000033

Deployed Bytecode Sourcemap

9022:10159:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15920:2650;;;;;;:::i;:::-;;:::i;:::-;;3761:50;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10094:240;;;:::i;:::-;;;;;;;;;:::i;5676:156::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9341:30::-;;;:::i;:::-;;;;;;;:::i;3925:33::-;;;:::i;:::-;;;;;;;:::i;5996:312::-;;;;;;:::i;:::-;;:::i;4253:117::-;;;:::i;3874:44::-;;;:::i;:::-;;;;;;;:::i;4101:40::-;;;:::i;10752:216::-;;;;;;:::i;:::-;;:::i;9710:41::-;;;:::i;9758:::-;;;:::i;12978:1246::-;;;;;;:::i;:::-;;:::i;3965:50::-;;;;;;:::i;:::-;;:::i;9806:26::-;;;:::i;4377:47::-;;;;;;:::i;:::-;;:::i;14336:1472::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;3818:49::-;;;:::i;5840:148::-;;;;;;:::i;:::-;;:::i;9144:55::-;;;:::i;18619:343::-;;;;;;:::i;:::-;;:::i;9303:31::-;;;:::i;9378:30::-;;;:::i;6316:677::-;;;;;;:::i;:::-;;:::i;4022:70::-;;;;;;:::i;:::-;;:::i;19011:167::-;;;:::i;15920:2650::-;9988:8;;10000:1;9988:13;9980:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;10042:1;10031:8;:12;16043:14;;;;:32:::1;;;16074:1;16061:10;:14;16043:32;16035:79;;;;;;;;;;;;:::i;:::-;16126:17;16145::::0;16167:13:::1;:11;:13::i;:::-;16125:55;;;;;16227:9;16214:22;;:10;:22;:48;;;;;16253:9;16240:22;;:10;:22;16214:48;16206:91;;;;;;;;;;;;:::i;:::-;16442:6;::::0;16477::::1;::::0;16310:13:::1;::::0;;;16442:6:::1;::::0;;::::1;::::0;16477;;::::1;::::0;16502:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;16525:7;16519:13;;:2;:13;;;;16502:30;16494:61;;;;;;;;;;;;:::i;:::-;16570:14:::0;;16566:58:::1;;16586:38;16600:7;16609:2;16613:10;16586:13;:38::i;:::-;16673:14:::0;;16669:58:::1;;16689:38;16703:7;16712:2;16716:10;16689:13;:38::i;:::-;16776:15:::0;;16772:91:::1;;16793:70;::::0;;;;:28:::1;::::0;::::1;::::0;::::1;::::0;:70:::1;::::0;16822:10:::1;::::0;16834;;16846;;16858:4;;;;16793:70:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16772:91;16885:40;::::0;;;;:25:::1;::::0;::::1;::::0;::::1;::::0;:40:::1;::::0;16919:4:::1;::::0;16885:40:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16947;::::0;;;;16874:51;;-1:-1:-1;16947:25:0::1;::::0;::::1;::::0;::::1;::::0;:40:::1;::::0;16981:4:::1;::::0;16947:40:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16936:51;;10054:1;;17009:14;17049:10;17037:9;:22;;;;;;:::i;:::-;17026:8;:33;:75;;17100:1;17026:75;;;17074:22;17086:10:::0;17074:22:::1;::::0;::::1;;:::i;:::-;17062:35;::::0;:8;:35:::1;:::i;:::-;17009:92:::0;-1:-1:-1;17112:14:0::1;17140:22;17152:10:::0;17140:22:::1;::::0;::::1;;:::i;:::-;17129:8;:33;:75;;17203:1;17129:75;;;17177:22;17189:10:::0;17177:22:::1;::::0;::::1;;:::i;:::-;17165:35;::::0;:8;:35:::1;:::i;:::-;17112:92;;17235:1;17223:9;:13;:30;;;;17252:1;17240:9;:13;17223:30;17215:76;;;;;;;;;;;;:::i;:::-;17356:7;::::0;17341:47:::1;::::0;;;;;;;17315:23:::1;::::0;17356:7:::1;;::::0;17341:45:::1;::::0;:47:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;17356:7;17341:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17315:73:::0;-1:-1:-1;17403:13:0;;17399:314:::1;;17451:6;::::0;::::1;;17433:15;17504:4;17486:16;:9:::0;17500:1:::1;17486:13;:16::i;:::-;:22;;;;:::i;:::-;17472:36;;17523:47;17537:7;17546:15;17563:6;17523:13;:47::i;:::-;17608:15;17585:49;;;17635:7;17644:2;17648:6;17585:70;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17681:20;17694:6;17681:8;:12;;:20;;;;:::i;:::-;17670:31;;17399:314;;;17728:13:::0;;17724:315:::1;;17758:11;17791:4;17772:16;:9:::0;17786:1:::1;17772:13;:16::i;:::-;:23;;;;:::i;:::-;17828:6;::::0;17758:37;;-1:-1:-1;17828:6:0::1;;17849:47;17828:6:::0;17872:15;17758:37;17849:13:::1;:47::i;:::-;17934:15;17911:49;;;17961:7;17970:2;17974:6;17911:70;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18007:20;18020:6;18007:8;:12;;:20;;;;:::i;:::-;17996:31;;17724:315;;;-1:-1:-1::0;18145:21:0::1;18169:42;18193:17;:9:::0;18207:2:::1;18193:13;:17::i;:::-;18169:19;:8:::0;18182:5:::1;18169:12;:19::i;:::-;:23:::0;::::1;:42::i;:::-;18145:66:::0;-1:-1:-1;18222:21:0::1;18246:42;18270:17;:9:::0;18284:2:::1;18270:13;:17::i;18246:42::-;18222:66:::0;-1:-1:-1;18349:44:0::1;18384:8;18349:30;;:15:::0;;::::1;::::0;:30;::::1;:19;:30::i;:::-;:34:::0;::::1;:44::i;:::-;18307:38;:16:::0;18328;18307:20:::1;:38::i;:::-;:86;;18299:108;;;;;;;;;;;;:::i;:::-;10054:1;;18431:49;18439:8;18449;18459:9;18470;18431:7;:49::i;:::-;18559:2;18496:66;;18501:10;18496:66;;;18513:9;18524;18535:10;18547;18496:66;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;10077:1:0;10066:8;:12;-1:-1:-1;;;;;;;;;15920:2650:0:o;3761:50::-;;;;;;;;;;;;;;;;;;;:::o;10094:240::-;10236:8;;;;;;;10267;;;;;;;10308:18;;;;;;10094:240::o;5676:156::-;5749:4;5766:36;5775:10;5787:7;5796:5;5766:8;:36::i;:::-;-1:-1:-1;5820:4:0;5676:156;;;;;:::o;9341:30::-;;;;;;:::o;3925:33::-;;;;:::o;5996:312::-;6104:15;;;6083:4;6104:15;;;:9;:15;;;;;;;;6120:10;6104:27;;;;;;;;6136:8;6104:41;6100:142;;6192:15;;;;;;;:9;:15;;;;;;;;6208:10;6192:27;;;;;;;;:38;;6224:5;6192:31;:38::i;:::-;6162:15;;;;;;;:9;:15;;;;;;;;6178:10;6162:27;;;;;;;:68;6100:142;6252:26;6262:4;6268:2;6272:5;6252:9;:26::i;:::-;-1:-1:-1;6296:4:0;5996:312;;;;;:::o;4253:117::-;4304:66;4253:117;:::o;3874:44::-;3916:2;3874:44;:::o;4101:40::-;;;;:::o;10752:216::-;10857:7;;;;10843:10;:21;10835:51;;;;;;;;;;;;:::i;:::-;10917:6;:16;;;;;;;;;;;;;;10944:6;:16;;;;;;;;;;;10752:216::o;9710:41::-;;;;:::o;9758:::-;;;;:::o;12978:1246::-;13036:14;9988:8;;10000:1;9988:13;9980:40;;;;;;;;;;;;:::i;:::-;10042:1;10031:8;:12;;;10042:1;13105:13:::1;:11;:13::i;:::-;-1:-1:-1::0;13167:6:0::1;::::0;13160:39:::1;::::0;;;;13063:55;;-1:-1:-1;13063:55:0;;-1:-1:-1;13144:13:0::1;::::0;13167:6:::1;::::0;;::::1;::::0;13160:24:::1;::::0;:39:::1;::::0;13193:4:::1;::::0;13160:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13233:6;::::0;13226:39:::1;::::0;;;;13144:55;;-1:-1:-1;13210:13:0::1;::::0;13233:6:::1;::::0;;::::1;::::0;13226:24:::1;::::0;:39:::1;::::0;13259:4:::1;::::0;13226:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13210:55:::0;-1:-1:-1;13276:12:0::1;13291:23;:8:::0;:23:::1;::::0;::::1;:12;:23::i;:::-;13276:38:::0;-1:-1:-1;13325:12:0::1;13340:23;:8:::0;:23:::1;::::0;::::1;:12;:23::i;:::-;13325:38;;13376:10;13389:30;13398:9;13409;13389:8;:30::i;:::-;13430:17;13450:11:::0;13376:43;;-1:-1:-1;13554:17:0;13550:352:::1;;13600:54;9194:5;13600:31;13610:20;:7:::0;13622;13610:11:::1;:20::i;:::-;13600:9;:31::i;:54::-;13588:66;;13668:36;13682:1;9194:5;13668;:36::i;:::-;13550:352;;;13804:86;13813:37;::::0;::::1;:25;:7:::0;13825:12;13813:11:::1;:25::i;:::-;:37;;;;:::i;:::-;13852;::::0;::::1;:25;:7:::0;13864:12;13852:11:::1;:25::i;:::-;:37;;;;:::i;:::-;13804:8;:86::i;:::-;13792:98;;13550:352;13932:1;13920:9;:13;13912:63;;;;;;;;;;;;:::i;:::-;13986:20;13992:2;13996:9;13986:5;:20::i;:::-;14019:49;14027:8;14037;14047:9;14058;14019:7;:49::i;:::-;14083:5;14079:47;;;14117:8;::::0;14098:28:::1;::::0;14117:8:::1;14103::::0;;::::1;::::0;14117;;::::1;;14098:18;:28::i;:::-;14090:5;:36:::0;14079:47:::1;14187:10;14182:34;;;14199:7;14208;14182:34;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;10077:1:0;10066:8;:12;-1:-1:-1;12978:1246:0;;;-1:-1:-1;;;;;;12978:1246:0:o;3965:50::-;;;;;;;;;;;;;:::o;9806:26::-;;;;:::o;4377:47::-;;;;;;;;;;;;;:::o;14336:1472::-;14394:12;14408;9988:8;;10000:1;9988:13;9980:40;;;;;;;;;;;;:::i;:::-;10042:1;10031:8;:12;;;10042:1;14475:13:::1;:11;:13::i;:::-;-1:-1:-1::0;14532:6:0::1;::::0;14613::::1;::::0;14692:40:::1;::::0;;;;14433:55;;-1:-1:-1;14433:55:0;;-1:-1:-1;14532:6:0::1;::::0;;::::1;::::0;14613;::::1;::::0;14514:15:::1;::::0;14532:6;;14692:25:::1;::::0;:40:::1;::::0;14726:4:::1;::::0;14692:40:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14676:56;;14743:13;14766:7;14759:25;;;14793:4;14759:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14845:4;14810:14;14827:24:::0;;;:9:::1;:24;::::0;;;;;14743:56;;-1:-1:-1;14877:30:0::1;14886:9:::0;14897;14877:8:::1;:30::i;:::-;14918:17;14938:11:::0;14864:43;;-1:-1:-1;14938:11:0;15048:23:::1;:9:::0;15062:8;15048:13:::1;:23::i;:::-;:38;;;;:::i;:::-;15038:48:::0;-1:-1:-1;15181:12:0;15155:23:::1;:9:::0;15169:8;15155:13:::1;:23::i;:::-;:38;;;;:::i;:::-;15145:48;;15270:1;15260:7;:11;:26;;;;;15285:1;15275:7;:11;15260:26;15252:76;;;;;;;;;;;;:::i;:::-;15339:31;15353:4;15360:9;15339:5;:31::i;:::-;15381:35;15395:7;15404:2;15408:7;15381:13;:35::i;:::-;15427;15441:7;15450:2;15454:7;15427:13;:35::i;:::-;15484:40;::::0;;;;:25:::1;::::0;::::1;::::0;::::1;::::0;:40:::1;::::0;15518:4:::1;::::0;15484:40:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15546;::::0;;;;15473:51;;-1:-1:-1;15546:25:0::1;::::0;::::1;::::0;::::1;::::0;:40:::1;::::0;15580:4:::1;::::0;15546:40:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15535:51;;15599:49;15607:8;15617;15627:9;15638;15599:7;:49::i;:::-;15663:5;15659:47;;;15697:8;::::0;15678:28:::1;::::0;15697:8:::1;15683::::0;;::::1;::::0;15697;;::::1;;15678:18;:28::i;:::-;15670:5;:36:::0;15659:47:::1;15797:2;15762:38;;15767:10;15762:38;;;15779:7;15788;15762:38;;;;;;;:::i;:::-;;;;;;;;10054:1;;;;;;;;;10077::::0;10066:8;:12;;;;14336:1472;;;:::o;3818:49::-;;;;;;;;;;;;;;;;;;;:::o;5840:148::-;5909:4;5926:32;5936:10;5948:2;5952:5;5926:9;:32::i;9144:55::-;9194:5;9144:55;:::o;18619:343::-;9988:8;;10000:1;9988:13;9980:40;;;;;;;;;;;;:::i;:::-;10042:1;10031:8;:12;18697:6:::1;::::0;18747::::1;::::0;18851:8:::1;::::0;18806:40:::1;::::0;;;;18697:6:::1;::::0;;::::1;::::0;18747;;::::1;::::0;18779:82:::1;::::0;18697:6;;18802:2;;18806:54:::1;::::0;18851:8:::1;::::0;;::::1;::::0;18697:6;;18806:25:::1;::::0;:40:::1;::::0;18840:4:::1;::::0;18806:40:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:54::-;18779:13;:82::i;:::-;18872;18886:7;18895:2;18899:54;18944:8;;;;;;;;;;;18899:54;;18906:7;18899:25;;;18933:4;18899:40;;;;;;;;;;;;;;;:::i;18872:82::-;-1:-1:-1::0;;10077:1:0;10066:8;:12;-1:-1:-1;18619:343:0:o;9303:31::-;;;;;;:::o;9378:30::-;;;;;;:::o;6316:677::-;6471:15;6459:8;:27;;6451:55;;;;;;;;;;;;:::i;:::-;6622:16;;6718:13;;;6517:14;6718:13;;;:6;:13;;;;;:15;;6517:14;;6622:16;4304:66;;6695:5;;6702:7;;6711:5;;6718:15;6517:14;6718:15;;;:::i;:::-;;;;;6735:8;6667:77;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6657:88;;;;;;6558:202;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6534:237;;;;;;6517:254;;6782:24;6809:26;6819:6;6827:1;6830;6833;6809:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6809:26:0;;;;;;-1:-1:-1;;6854:30:0;;;;;;;:59;;;6908:5;6888:25;;:16;:25;;;6854:59;6846:97;;;;;;;;;;;;:::i;:::-;6954:31;6963:5;6970:7;6979:5;6954:8;:31::i;:::-;6316:677;;;;;;;;;:::o;4022:70::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;19011:167::-;9988:8;;10000:1;9988:13;9980:40;;;;;;;;;;;;:::i;:::-;10042:1;10031:8;:12;19076:6:::1;::::0;19069:39:::1;::::0;;;;19061:109:::1;::::0;19076:6:::1;;::::0;19069:24:::1;::::0;:39:::1;::::0;19102:4:::1;::::0;19069:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19117:6;::::0;19110:39:::1;::::0;;;;19117:6:::1;::::0;;::::1;::::0;19110:24:::1;::::0;:39:::1;::::0;19143:4:::1;::::0;19110:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19151:8;::::0;::::1;::::0;;::::1;::::0;19161;;::::1;;19061:7;:109::i;:::-;10077:1:::0;10066:8;:12;19011:167::o;10342:284::-;9258:34;;;;;;;;;;;;;;;;;10470:43;10424:12;;;;10459:10;;;;9248:45;;10470:43;;10503:2;;10507:5;;10470:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10459:55;;;;10470:43;10459:55;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10423:91;;;;10533:7;:57;;;;-1:-1:-1;10545:11:0;;:16;;:44;;;10576:4;10565:24;;;;;;;;;;;;:::i;:::-;10525:93;;;;;;;;;;;;:::i;:::-;10342:284;;;;;:::o;3536:142::-;3588:6;3615;;;:30;;-1:-1:-1;3644:1:0;3639;3630:5;3639:1;3644;3630:5;:::i;:::-;3626:9;-1:-1:-1;3625:15:0;;3626:9;3625:15;:::i;:::-;:20;3615:30;3607:63;;;;;;;;;;;;:::i;3399:129::-;3451:6;3493:1;3483:5;3487:1;3493;3483:5;:::i;:::-;3479:9;;;3478:16;;3470:50;;;;;;;;;;;;:::i;11053:889::-;11178:10;11165:8;:24;;:52;;;;;11206:10;11193:8;:24;;11165:52;11157:81;;;;;;;;;;;;:::i;:::-;11279:21;11310:23;11328:5;11310:15;:23;:::i;:::-;11383:18;;11279:55;;-1:-1:-1;11345:18:0;;11366:35;;11383:18;;;;;11279:55;11366:35;:::i;:::-;11345:56;;11453:1;11439:11;:15;;;:33;;;;-1:-1:-1;11458:14:0;;;;;11439:33;:51;;;;-1:-1:-1;11476:14:0;;;;;11439:51;11435:336;;;11645:11;11592:64;;11597:44;11631:9;11597:27;11614:9;11597:16;:27::i;:::-;:33;;;;:44::i;:::-;11592:50;;:64;;;;:::i;:::-;11568:20;;:88;;;;;;;:::i;:::-;;;;-1:-1:-1;;11695:64:0;;;11700:44;11734:9;11700:27;11717:9;11700:16;:27::i;:44::-;11695:50;;:64;;;;:::i;:::-;11671:20;;:88;;;;;;;:::i;:::-;;;;-1:-1:-1;;11435:336:0;11781:8;:28;;;;;;;;;;;;11820;;;;;;;;;;;;11859:35;;;;;;;;;;;;11910:24;;;;;;11915:8;;;;11925;;;;;11910:24;:::i;:::-;;;;;;;;11053:889;;;;;;:::o;5271:169::-;5352:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;;:33;;;5401:31;;;;;5380:5;;5401:31;:::i;:::-;;;;;;;;5271:169;;;:::o;5448:220::-;5542:15;;;;;;;:9;:15;;;;;;:26;;5562:5;5542:19;:26::i;:::-;5524:15;;;;;;;;:9;:15;;;;;;:44;;;;5595:13;;;;;;;:24;;5613:5;5595:17;:24::i;:::-;5579:13;;;;;;;;:9;:13;;;;;;;:40;;;;5635:25;;;;;;;;;;5654:5;;5635:25;:::i;12032:834::-;12105:10;12128:13;12159:7;;;;;;;;;;;12144:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12238:5;;12194:19;;;;;;;-1:-1:-1;12128:47:0;;-1:-1:-1;12238:5:0;12269:590;;12299:11;;12295:494;;12331:10;12344:41;12354:30;;:15;;;;:30;;:19;:30::i;12344:41::-;12331:54;;12404:14;12421:17;12431:6;12421:9;:17::i;:::-;12404:34;;12469:9;12461:5;:17;12457:317;;;12503:14;12520:37;12536:20;:5;12546:9;12536;:20::i;:::-;12520:11;;;:15;:37::i;:::-;12503:54;-1:-1:-1;12580:16:0;12599:27;12616:9;12599:12;:5;12609:1;12599:9;:12::i;:::-;:16;;:27::i;:::-;12580:46;-1:-1:-1;12649:14:0;12666:23;12580:46;12666:9;:23;:::i;:::-;12649:40;-1:-1:-1;12716:13:0;;12712:42;;12731:23;12737:5;12744:9;12731:5;:23::i;:::-;12457:317;;;;12295:494;;;12269:590;;;12810:11;;12806:53;;12846:1;12838:5;:9;12806:53;12032:834;;;;;;:::o;7234:303::-;7279:6;7306:1;7302;:5;7298:232;;;-1:-1:-1;7328:1:0;7344:6;7353:5;7357:1;7328;7353:5;:::i;:::-;:9;;7361:1;7353:9;:::i;:::-;7344:18;;7377:92;7388:1;7384;:5;7377:92;;;7414:1;-1:-1:-1;7414:1:0;7452;7414;7439:5;7414:1;7439;:5;:::i;:::-;:9;;;;:::i;:::-;7438:15;;;;:::i;:::-;7434:19;;7377:92;;;7298:232;;;;7490:6;;7486:44;;-1:-1:-1;7517:1:0;7486:44;7234:303;;;:::o;4845:201::-;4918:11;;:22;;4934:5;4918:15;:22::i;:::-;4904:11;:36;;;4967:13;;;;;:9;:13;;;;;;:24;;4985:5;4967:17;:24::i;:::-;4951:13;;;;;;;:9;:13;;;;;;:40;;;;5007:31;;4951:13;;;5007:31;;;;5032:5;;5007:31;:::i;:::-;;;;;;;;4845:201;;:::o;7020:96::-;7072:6;7099:1;7095;:5;:13;;7107:1;7095:13;;;7103:1;7095:13;7091:17;7020:96;-1:-1:-1;;;7020:96:0:o;5054:209::-;5133:15;;;;;;;:9;:15;;;;;;:26;;5153:5;5133:19;:26::i;:::-;5115:15;;;;;;;:9;:15;;;;;:44;;;;5184:11;:22;;5200:5;5184:15;:22::i;:::-;5170:11;:36;;;5222:33;;;;;;;;;;5249:5;;5222:33;:::i;7648:120::-;7698:9;7724:17;7593:6;7724:10;;;:17;:::i;7839:108::-;7899:9;7925:14;7929:10;;;7925:1;:14;:::i;3263:128::-;3315:6;3357:1;3347:5;3351:1;3357;3347:5;:::i;:::-;3343:9;;;3342:16;;3334:49;;;;;;;;;;;;:::i;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;278:263::-;;401:2;389:9;380:7;376:23;372:32;369:2;;;422:6;414;407:22;369:2;459:9;453:16;478:33;505:5;478:33;:::i;546:402::-;;;675:2;663:9;654:7;650:23;646:32;643:2;;;696:6;688;681:22;643:2;740:9;727:23;759:33;786:5;759:33;:::i;:::-;811:5;-1:-1:-1;868:2:1;853:18;;840:32;881:35;840:32;881:35;:::i;:::-;935:7;925:17;;;633:315;;;;;:::o;953:470::-;;;;1099:2;1087:9;1078:7;1074:23;1070:32;1067:2;;;1120:6;1112;1105:22;1067:2;1164:9;1151:23;1183:33;1210:5;1183:33;:::i;:::-;1235:5;-1:-1:-1;1292:2:1;1277:18;;1264:32;1305:35;1264:32;1305:35;:::i;:::-;1057:366;;1359:7;;-1:-1:-1;;;1413:2:1;1398:18;;;;1385:32;;1057:366::o;1428:853::-;;;;;;;;1640:3;1628:9;1619:7;1615:23;1611:33;1608:2;;;1662:6;1654;1647:22;1608:2;1706:9;1693:23;1725:33;1752:5;1725:33;:::i;:::-;1777:5;-1:-1:-1;1834:2:1;1819:18;;1806:32;1847:35;1806:32;1847:35;:::i;:::-;1901:7;-1:-1:-1;1955:2:1;1940:18;;1927:32;;-1:-1:-1;2006:2:1;1991:18;;1978:32;;-1:-1:-1;2062:3:1;2047:19;;2034:33;2111:4;2098:18;;2086:31;;2076:2;;2136:6;2128;2121:22;2076:2;1598:683;;;;-1:-1:-1;1598:683:1;;;;2164:7;2218:3;2203:19;;2190:33;;-1:-1:-1;2270:3:1;2255:19;;;2242:33;;1598:683;-1:-1:-1;;1598:683:1:o;2286:327::-;;;2415:2;2403:9;2394:7;2390:23;2386:32;2383:2;;;2436:6;2428;2421:22;2383:2;2480:9;2467:23;2499:33;2526:5;2499:33;:::i;:::-;2551:5;2603:2;2588:18;;;;2575:32;;-1:-1:-1;;;2373:240:1:o;2618:297::-;;2738:2;2726:9;2717:7;2713:23;2709:32;2706:2;;;2759:6;2751;2744:22;2706:2;2796:9;2790:16;2849:5;2842:13;2835:21;2828:5;2825:32;2815:2;;2876:6;2868;2861:22;2920:194;;3043:2;3031:9;3022:7;3018:23;3014:32;3011:2;;;3064:6;3056;3049:22;3011:2;-1:-1:-1;3092:16:1;;3001:113;-1:-1:-1;3001:113:1:o;3119:915::-;;;;;;3301:3;3289:9;3280:7;3276:23;3272:33;3269:2;;;3323:6;3315;3308:22;3269:2;3364:9;3351:23;3341:33;;3421:2;3410:9;3406:18;3393:32;3383:42;;3475:2;3464:9;3460:18;3447:32;3488:33;3515:5;3488:33;:::i;:::-;3540:5;-1:-1:-1;3596:2:1;3581:18;;3568:32;3619:18;3649:14;;;3646:2;;;3681:6;3673;3666:22;3646:2;3724:6;3713:9;3709:22;3699:32;;3769:7;3762:4;3758:2;3754:13;3750:27;3740:2;;3796:6;3788;3781:22;3740:2;3841;3828:16;3867:2;3859:6;3856:14;3853:2;;;3888:6;3880;3873:22;3853:2;3938:7;3933:2;3924:6;3920:2;3916:15;3912:24;3909:37;3906:2;;;3964:6;3956;3949:22;3906:2;3259:775;;;;-1:-1:-1;3259:775:1;;-1:-1:-1;4000:2:1;3992:11;;4022:6;3259:775;-1:-1:-1;;;3259:775:1:o;4039:274::-;;4206:6;4200:13;4222:53;4268:6;4263:3;4256:4;4248:6;4244:17;4222:53;:::i;:::-;4291:16;;;;;4176:137;-1:-1:-1;;4176:137:1:o;4318:444::-;4588:66;4576:79;;4680:1;4671:11;;4664:27;;;;4716:2;4707:12;;4700:28;4753:2;4744:12;;4566:196::o;4767:226::-;4943:42;4931:55;;;;4913:74;;4901:2;4886:18;;4868:125::o;4998:398::-;5210:42;5279:15;;;5261:34;;5331:15;;;;5326:2;5311:18;;5304:43;5378:2;5363:18;;5356:34;;;;5188:2;5173:18;;5155:241::o;5401:297::-;5605:42;5593:55;;;;5575:74;;5680:2;5665:18;;5658:34;5563:2;5548:18;;5530:168::o;5703:717::-;;5956:42;5948:6;5944:55;5933:9;5926:74;6036:6;6031:2;6020:9;6016:18;6009:34;6079:6;6074:2;6063:9;6059:18;6052:34;6122:3;6117:2;6106:9;6102:18;6095:31;6163:6;6157:3;6146:9;6142:19;6135:35;6221:6;6213;6207:3;6196:9;6192:19;6179:49;6248:22;;;6272:3;6244:32;;;6237:46;;;;6335:2;6323:15;;;6340:66;6319:88;6304:104;6300:114;;5916:504;-1:-1:-1;;;;5916:504:1:o;6425:187::-;6590:14;;6583:22;6565:41;;6553:2;6538:18;;6520:92::o;6617:177::-;6763:25;;;6751:2;6736:18;;6718:76::o;6799:614::-;7086:25;;;7130:42;7208:15;;;7203:2;7188:18;;7181:43;7260:15;;;;7255:2;7240:18;;7233:43;7307:2;7292:18;;7285:34;7350:3;7335:19;;7328:35;;;;7394:3;7379:19;;7372:35;7073:3;7058:19;;7040:373::o;7418:398::-;7645:25;;;7718:4;7706:17;;;;7701:2;7686:18;;7679:45;7755:2;7740:18;;7733:34;7798:2;7783:18;;7776:34;7632:3;7617:19;;7599:217::o;7821:442::-;;7970:2;7959:9;7952:21;8002:6;7996:13;8045:6;8040:2;8029:9;8025:18;8018:34;8061:66;8120:6;8115:2;8104:9;8100:18;8095:2;8087:6;8083:15;8061:66;:::i;:::-;8179:2;8167:15;8184:66;8163:88;8148:104;;;;8254:2;8144:113;;7942:321;-1:-1:-1;;7942:321:1:o;8268:345::-;8470:2;8452:21;;;8509:2;8489:18;;;8482:30;8548:23;8543:2;8528:18;;8521:51;8604:2;8589:18;;8442:171::o;8618:344::-;8820:2;8802:21;;;8859:2;8839:18;;;8832:30;8898:22;8893:2;8878:18;;8871:50;8953:2;8938:18;;8792:170::o;8967:339::-;9169:2;9151:21;;;9208:2;9188:18;;;9181:30;9247:17;9242:2;9227:18;;9220:45;9297:2;9282:18;;9141:165::o;9311:344::-;9513:2;9495:21;;;9552:2;9532:18;;;9525:30;9591:22;9586:2;9571:18;;9564:50;9646:2;9631:18;;9485:170::o;9660:332::-;9862:2;9844:21;;;9901:1;9881:18;;;9874:29;9939:11;9934:2;9919:18;;9912:39;9983:2;9968:18;;9834:158::o;9997:342::-;10199:2;10181:21;;;10238:2;10218:18;;;10211:30;10277:20;10272:2;10257:18;;10250:48;10330:2;10315:18;;10171:168::o;10344:340::-;10546:2;10528:21;;;10585:2;10565:18;;;10558:30;10624:18;10619:2;10604:18;;10597:46;10675:2;10660:18;;10518:166::o;10689:401::-;10891:2;10873:21;;;10930:2;10910:18;;;10903:30;10969:34;10964:2;10949:18;;10942:62;11040:7;11035:2;11020:18;;11013:35;11080:3;11065:19;;10863:227::o;11095:354::-;11297:2;11279:21;;;11336:2;11316:18;;;11309:30;11375:32;11370:2;11355:18;;11348:60;11440:2;11425:18;;11269:180::o;11454:397::-;11656:2;11638:21;;;11695:2;11675:18;;;11668:30;11734:34;11729:2;11714:18;;11707:62;11805:3;11800:2;11785:18;;11778:31;11841:3;11826:19;;11628:223::o;11856:347::-;12058:2;12040:21;;;12097:2;12077:18;;;12070:30;12136:25;12131:2;12116:18;;12109:53;12194:2;12179:18;;12030:173::o;12208:401::-;12410:2;12392:21;;;12449:2;12429:18;;;12422:30;12488:34;12483:2;12468:18;;12461:62;12559:7;12554:2;12539:18;;12532:35;12599:3;12584:19;;12382:227::o;12614:338::-;12816:2;12798:21;;;12855:2;12835:18;;;12828:30;12894:16;12889:2;12874:18;;12867:44;12943:2;12928:18;;12788:164::o;12957:349::-;13159:2;13141:21;;;13198:2;13178:18;;;13171:30;13237:27;13232:2;13217:18;;13210:55;13297:2;13282:18;;13131:175::o;13311:398::-;13513:2;13495:21;;;13552:2;13532:18;;;13525:30;13591:34;13586:2;13571:18;;13564:62;13662:4;13657:2;13642:18;;13635:32;13699:3;13684:19;;13485:224::o;13714:341::-;13916:2;13898:21;;;13955:2;13935:18;;;13928:30;13994:19;13989:2;13974:18;;13967:47;14046:2;14031:18;;13888:167::o;14060:315::-;14244:30;14301:15;;;14283:34;;14353:15;;14348:2;14333:18;;14326:43;14222:2;14207:18;;14189:186::o;14380:401::-;14590:30;14647:15;;;14629:34;;14699:15;;;;14694:2;14679:18;;14672:43;14763:10;14751:23;;;14746:2;14731:18;;14724:51;14568:2;14553:18;;14535:246::o;14968:248::-;15142:25;;;15198:2;15183:18;;15176:34;15130:2;15115:18;;15097:119::o;15221:391::-;15452:25;;;15508:2;15493:18;;15486:34;;;;15551:2;15536:18;;15529:34;15594:2;15579:18;;15572:34;15439:3;15424:19;;15406:206::o;15617:184::-;15789:4;15777:17;;;;15759:36;;15747:2;15732:18;;15714:87::o;15806:128::-;;15877:1;15873:6;15870:1;15867:13;15864:2;;;15883:18;;:::i;:::-;-1:-1:-1;15919:9:1;;15854:80::o;15939:240::-;;16005:58;16090:2;16087:1;16083:10;16112:3;16102:2;;16119:18;;:::i;:::-;16157:10;;16153:20;;;;;15985:194;-1:-1:-1;;15985:194:1:o;16184:120::-;;16250:1;16240:2;;16255:18;;:::i;:::-;-1:-1:-1;16289:9:1;;16230:74::o;16309:311::-;;16381:58;16466:2;16463:1;16459:10;16496:2;16493:1;16489:10;16552:3;16548:2;16544:12;16539:3;16536:21;16529:3;16522:11;16515:19;16511:47;16508:2;;;16561:18;;:::i;:::-;16601:13;;16361:259;-1:-1:-1;;;;16361:259:1:o;16625:228::-;;16791:1;16723:66;16719:74;16716:1;16713:81;16708:1;16701:9;16694:17;16690:105;16687:2;;;16798:18;;:::i;:::-;-1:-1:-1;16838:9:1;;16677:176::o;16858:125::-;;16926:1;16923;16920:8;16917:2;;;16931:18;;:::i;:::-;-1:-1:-1;16968:9:1;;16907:76::o;16988:221::-;;17056:10;17116;;;;17086;;17138:12;;;17135:2;;;17153:18;;:::i;:::-;17190:13;;17036:173;-1:-1:-1;;;17036:173:1:o;17214:258::-;17286:1;17296:113;17310:6;17307:1;17304:13;17296:113;;;17386:11;;;17380:18;17367:11;;;17360:39;17332:2;17325:10;17296:113;;;17427:6;17424:1;17421:13;17418:2;;;17462:1;17453:6;17448:3;17444:16;17437:27;17418:2;;17267:205;;;:::o;17477:195::-;;17547:66;17540:5;17537:77;17534:2;;;17617:18;;:::i;:::-;-1:-1:-1;17664:1:1;17653:13;;17524:148::o;17677:112::-;;17735:1;17725:2;;17740:18;;:::i;:::-;-1:-1:-1;17774:9:1;;17715:74::o;17794:184::-;17846:77;17843:1;17836:88;17943:4;17940:1;17933:15;17967:4;17964:1;17957:15;17983:184;18035:77;18032:1;18025:88;18132:4;18129:1;18122:15;18156:4;18153:1;18146:15;18172:156;18260:42;18253:5;18249:54;18242:5;18239:65;18229:2;;18318:1;18315;18308:12;18229:2;18219:109;:::o

Swarm Source

ipfs://09efbdfdcf59ab0458bca530ac4494d67402d03a2b29e6e342b085575633b976
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.