Contract 0xea7352aa86c77487f583160098f6982e6f051af9

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x68f31519558354eac680633aa865e2f023474ca93abf5b34e83285b4f4124931Approve200775612022-09-20 19:53:129 days 2 hrs ago0x9c2b88a02cd8ed7a476ed959b15e8befb2701549 IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.00116020005725.000001235
0x1590a6237d9cf2e915d6fc8973daf8a6fd3f171ba7db1edf0cf21fc64455443eApprove200393772022-09-19 16:56:3610 days 5 hrs ago0x558da052f27ea5fcf15b17d6a0c2b0d227e0ed49 IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.000766486 26.5
0x0bb9c853a1180d131860becb6d73de7e705996aefc04dcea6aa86130d43b54a6Approve200393742022-09-19 16:56:2410 days 5 hrs ago0x558da052f27ea5fcf15b17d6a0c2b0d227e0ed49 IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.000766486 26.5
0x3fb9695e77f77e3de61fa848405fa3165ebb7268cac95e8b0fb4e18efaf223c9Approve199355852022-09-16 14:28:1013 days 7 hrs ago0x67327c9a8acf6ddbe81970262fc0923a00ab4868 IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.0012762227.5
0x7b95130627a89735c97adf64a4c59f41f75ed330dc02887e255e1adfa1bb2230Approve199258352022-09-16 7:34:4213 days 14 hrs ago0x3d51a70c9e2801bedcd3398540b8cad79ea29d3a IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001206608 26
0xbc83bd409cf92a93020486318c9c53e4dc112b75fee36df011fb5b05903d4019Approve197154292022-09-09 19:50:0920 days 2 hrs ago0x87a3737f6bf47bc7674a40f2862091e1caed1139 IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.000702462 26.5
0x7ef3e5c83c549ddd78eb98a60931543d32623f688bf6709cd7db084c947e7c40Approve197154232022-09-09 19:49:4520 days 2 hrs ago0x87a3737f6bf47bc7674a40f2862091e1caed1139 IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001229812 26.5
0xc08c0da3aa7c12c4fe68dcdbf1df93148d2d9c80dbd0359875ba7ce35401b269Approve194016632022-09-01 12:59:3728 days 9 hrs ago0xa0a683ef1ce94457f4c8dcb99aaa54af54d5bc6c IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001229812 26.5
0x7c2ed0f159a4865ce2d4903a2aa8828bd5298363cffafc844d3b867abdb71bb8Approve193611932022-08-31 14:22:2629 days 7 hrs ago0xc00fc8aaefa0a83ff71a66389568e146edba567e IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001206608 26
0xcec9db4cf70998049de5711d98da700f6b5cbddab42dcbbd19e234400b564f00Approve192354192022-08-28 15:57:3232 days 6 hrs ago0x982b5c28dd14da4bb554b26ad8d45916bd3798ab IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001229812 26.5
0x4af404cf5ed4edfefb7b23830ab0ee93170e2125421e959611858a2e58e045c1Approve191525802022-08-26 17:26:2734 days 4 hrs ago0x42ab00aff0e26143f6b9ff777d9e9d02c296f174 IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001206608 26
0x835fa453d5e77c05eb1be58ca3cc8afc1435b049d4c6f5a26e386d3c960ce226Approve190236092022-08-23 16:49:4237 days 5 hrs ago0x2f6e6e9adcd564f8aa4204284df6880b33799268 IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001211248826.1
0xee3ae9ea6156e891ea32e646b5c0cbf67acea1a0c887494da5f8e201ebd1f053Approve187948702022-08-18 8:10:2542 days 13 hrs ago0x2f6e6e9adcd564f8aa4204284df6880b33799268 IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001211248826.1
0x0eeb5b265bb534eb41136a036763e4e154550fb65b1eb101f015a170602e674dApprove187864942022-08-18 3:22:5542 days 18 hrs ago0x0dc5d653fc39e69b9e09bffa4a22e06d0b7cde25 IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.0012762227.5
0x4602f9d03beba44f729a9d07ac815da5b5cb44c645b3ce3d0ebc5abb77d304f6Approve187170452022-08-16 11:49:4844 days 10 hrs ago0xf1ea93579a7c503e021f89d47dfd7bd6132ec3a9 IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001229812 26.5
0xee8ab1e65b43ad0a403a5989ae748ba7d405138a62a78f7301257dff2195513eApprove186676922022-08-15 8:15:3945 days 13 hrs ago0xe0f54a50c9523dce5b9369edd2628ea6a38b6132 IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001206608 26
0xc45b9a59a28b5c0f98f49639650bd77767141ed99f94fb734195d7a505f42756Approve186113022022-08-14 0:37:0846 days 21 hrs ago0x2162d991f68cb0991a1b726da341c04e128db3cb IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001229812 26.5
0x08063a94a6df8d18bf3e8f63935f0b5c2d882833d149bd3a0440abfdd38e4c8bApprove186112282022-08-14 0:34:4046 days 21 hrs ago0x2162d991f68cb0991a1b726da341c04e128db3cb IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001206608 26
0x2d342cbfa0af9c5afcae46f9b0ae476c90d9d98d121ab58c029be39ab62b1c7dApprove182303282022-08-05 3:15:3255 days 18 hrs ago0x48bf525cc8b6156ff7d3662d3eeb196ed1a9ba44 IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001206608 26
0x50a2a19f33fcf99785f2dbc21eeb5cbac10c4d5dce34e8b848dc0ee5f31c3690Approve181478342022-08-03 5:07:1957 days 16 hrs ago0x6aa33d1f92f2b64db7be6d8190390091dc69c8ff IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.00079541 27.5
0x81dbc78d5818559376131ed7e7c0fc35002a1cb291ddda86065f0c766d1dc2a7Approve180759242022-08-01 12:11:1359 days 9 hrs ago0x12a38de01f93aac81bc7d1be0f4976aec142c2a9 IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001206608 26
0xba7ba2f89de464602ebef4844cf64ccb0e599af1c41afc6b5ae27d3ec27a2eb2Approve180700162022-08-01 8:46:2959 days 13 hrs ago0xc09ba4bfcd30eb8baabf0111ea7a0ab33f42af9b IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001229812 26.5
0x6174e84d7da905438cb5e79cb9570006470d5741d36ff0a97cbf0819e12b365bApprove179393352022-07-29 5:36:3562 days 16 hrs ago0x7e21fcb8afbead2945ba2b36413ebaf6ee583197 IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001229812 26.5
0x621ff4af5d56c1a9c07932742d37e4d8782177255f34920b66e51411d5824548Approve177701482022-07-25 3:43:3166 days 18 hrs ago0x7c4f34f1f0352c966b610e91ade629ce8334d902 IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001211248826.1
0x704b9eb659c7f3b289f5822bec3365897046ce926d12de72ac5da70263300ff5Approve176744402022-07-22 20:52:4169 days 1 hr ago0xa8cf554a5ae167abb8fc4a04500af86ba8828dea IN  0xea7352aa86c77487f583160098f6982e6f051af90 AVAX0.001206608 26
[ Download CSV Export 
Latest 2 internal transactions
Parent Txn Hash Block From To Value
0x7dd8b3fe6ccc1041d404dc94da670f43240e5a99adb82a146ad2e6b5fd30ff7776657732021-12-01 11:55:38302 days 10 hrs ago 0x7009b3619d5ee60d0665ba27cf85edf95fd8ad01  Contract Creation0 AVAX
0xcabfe9514e4c7c6289fd0e09c167728b471f68b1a99c18caa9a3279c9614475676657292021-12-01 11:54:13302 days 10 hrs ago 0x7009b3619d5ee60d0665ba27cf85edf95fd8ad01  Contract Creation0 AVAX
[ Download CSV Export 
Loading

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

Contract Name:
HcSwapAvaxPair

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 99999 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2022-02-16
*/

// Sources flattened with hardhat v2.6.3 https://hardhat.org

// File contracts/avax/interfaces/IUniswapV2Pair.sol

pragma solidity =0.5.16;

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}


// File contracts/avax/interfaces/IUniswapV2ERC20.sol



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

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

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

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

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


// File contracts/avax/libraries/SafeMath.sol



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

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

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

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


// File contracts/avax/HcSwapAvaxERC20.sol




contract HcSwapAvaxERC20 is IUniswapV2ERC20 {
    using SafeMath for uint;

    string public name = 'Hurricane V2';
    string public symbol = 'HcSwap';
    uint8 public decimals = 18;
    uint  public totalSupply;
    mapping(address => uint) public balanceOf;
    mapping(address => mapping(address => uint)) public allowance;

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

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

    constructor() public {
        uint chainId;
        assembly {
            chainId := chainid
        }
        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes(name)),
                keccak256(bytes('1')),
                chainId,
                address(this)
            )
        );
    }

    function _mint(address to, uint value) internal {
        totalSupply = totalSupply.add(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(address(0), to, value);
    }

    function _burn(address from, uint value) internal {
        balanceOf[from] = balanceOf[from].sub(value);
        totalSupply = totalSupply.sub(value);
        emit Transfer(from, address(0), value);
    }

    function _approve(address owner, address spender, uint value) internal {
        allowance[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _transfer(address from, address to, uint value) internal  {
        balanceOf[from] = balanceOf[from].sub(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(from, to, value);
    }

    function approve(address spender, uint value) external returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

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

    function transferFrom(address from, address to, uint value) external returns (bool) {
        if (allowance[from][msg.sender] != uint(-1)) {
            allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);
        }
        _transfer(from, to, value);
        return true;
    }

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
        require(deadline >= block.timestamp, 'HcSwap: 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, 'HcSwap: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}


// File contracts/avax/libraries/Math.sol



// a library for performing various math operations

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

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


// File contracts/avax/libraries/UQ112x112.sol



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

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

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

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

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


// File contracts/avax/interfaces/IERC20.sol



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

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

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


// File contracts/avax/interfaces/IUniswapV2Factory.sol


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

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

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

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

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


// File contracts/avax/interfaces/IUniswapV2Callee.sol



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


// File contracts/avax/HcSwapAvaxPair.sol









contract HcSwapAvaxPair is IUniswapV2Pair, HcSwapAvaxERC20 {
    using SafeMath  for uint;
    using UQ112x112 for uint224;

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

    address public factory;
    address public token0;
    address public token1;
    bool public crossPair;

    uint112 private reserve0;           // uses single storage slot, accessible via getReserves
    uint112 private reserve1;           // uses single storage slot, accessible via getReserves
    uint32  private blockTimestampLast; // uses single storage slot, accessible via getReserves

    uint public price0CumulativeLast;
    uint public price1CumulativeLast;
    uint public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event

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

    function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {
        _reserve0 = reserve0;
        _reserve1 = reserve1;
        _blockTimestampLast = blockTimestampLast;
    }

    function _safeTransfer(address token, address to, uint value) private {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'HcSwap: TRANSFER_FAILED');
    }

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

    constructor() public {
        factory = msg.sender;
    }
    modifier onlyOwner() {
        require(IUniswapV2Factory(factory).owner() == msg.sender,"HcSwap: NOT OWNER");
        _;
    }
    // called once by the factory at time of deployment
    function initialize(address _token0, address _token1) external {
        require(msg.sender == factory, 'HcSwap: FORBIDDEN'); // sufficient check
        token0 = _token0;
        token1 = _token1;
    }

    function setCrossPair(bool status_) external onlyOwner {
        crossPair = status_;
    }

    // update reserves and, on the first call per block, price accumulators
    function _update(uint balance0, uint balance1, uint112 _reserve0, uint112 _reserve1) private {
        require(balance0 <= uint112(-1) && balance1 <= uint112(-1), 'HcSwap: OVERFLOW');
        uint32 blockTimestamp = uint32(block.timestamp % 2**32);
        uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired
        if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {
            // * never overflows, and + overflow is desired
            price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;
            price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;
        }
        reserve0 = uint112(balance0);
        reserve1 = uint112(balance1);
        blockTimestampLast = blockTimestamp;
        emit Sync(reserve0, reserve1);
    }

    // if fee is on, mint liquidity equivalent to 2/5th of the growth in sqrt(k)
    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = IUniswapV2Factory(factory).feeTo();
        feeOn = feeTo != address(0);
        uint _kLast = kLast; // gas savings
        if (feeOn) {
            if (_kLast != 0) {
                uint rootK = Math.sqrt(uint(_reserve0).mul(_reserve1));
                uint rootKLast = Math.sqrt(_kLast);
                if (rootK > rootKLast) {
                    uint numerator = totalSupply.mul(rootK.sub(rootKLast));
                    // 40%
                    uint denominator = (rootK.mul(3) / 2).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 onlyOwner 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, 'HcSwap: 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);
    }

    function burnQuery(uint liquidity) external view returns (uint amount0, uint amount1){
        uint balance0 = IERC20(token0).balanceOf(address(this));
        uint balance1 = IERC20(token1).balanceOf(address(this));

        uint _totalSupply = totalSupply; 
        amount0 = liquidity.mul(balance0) / _totalSupply; 
        amount1 = liquidity.mul(balance1) / _totalSupply;
    }

    // this low-level function should be called from a contract which performs important safety checks
    function burn(address to) external onlyOwner 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, 'HcSwap: 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 onlyOwner lock {
        require(amount0Out > 0 || amount1Out > 0, 'HcSwap: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'HcSwap: 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, 'HcSwap: INVALID_TO');
        if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens
        if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens
        if (data.length > 0) IUniswapV2Callee(to).uniswapV2Call(msg.sender, amount0Out, amount1Out, data);
        balance0 = IERC20(_token0).balanceOf(address(this));
        balance1 = IERC20(_token1).balanceOf(address(this));
        }
        uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0;
        uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0;
        require(amount0In > 0 || amount1In > 0, 'HcSwap: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(crossPair?5:3)); // 0.5%|0.3% Fee
        uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(crossPair?5:3)); // 0.5%|0.3% Fee
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'HcSwap: K');
        }

        _update(balance0, balance1, _reserve0, _reserve1);
        emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to);
    }

    // force balances to match reserves
    function skim(address to) onlyOwner external lock {
        address _token0 = token0; // gas savings
        address _token1 = token1; // gas savings
        _safeTransfer(_token0, to, IERC20(_token0).balanceOf(address(this)).sub(reserve0));
        _safeTransfer(_token1, to, IERC20(_token1).balanceOf(address(this)).sub(reserve1));
    }

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

Contract ABI

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

60c0604052600c60808190526b243ab93934b1b0b732902b1960a11b60a09081526200002f916000919062000195565b506040805180820190915260068082526504863537761760d41b60209092019182526200005f9160019162000195565b506002805460ff191660121790556001600f553480156200007f57600080fd5b5060405146908060526200385282396052019050604051809103902060006040518082805460018160011615610100020316600290048015620000fc5780601f10620000d9576101008083540402835291820191620000fc565b820191906000526020600020905b815481529060010190602001808311620000e7575b505060408051918290038220828201825260018352603160f81b602093840152815180840196909652858201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606086015260808501959095523060a0808601919091528551808603909101815260c090940190945250508051910120600655600880546001600160a01b031916331790556200023a565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001d857805160ff191683800117855562000208565b8280016001018555821562000208579182015b8281111562000208578251825591602001919060010190620001eb565b50620002169291506200021a565b5090565b6200023791905b8082111562000216576000815560010162000221565b90565b613608806200024a6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063a9059cbb116100a2578063d21220a711610071578063d21220a71461063f578063d505accf14610647578063dd62ed3e146106a5578063fff6cae9146106e0576101da565b8063a9059cbb146105c3578063ba9a7a56146105fc578063bc25cf7714610604578063c45a015514610637576101da565b80637ecebe00116100de5780637ecebe001461053657806389afcb441461056957806395d89b411461059c5780639eb4c156146105a4576101da565b806370a08231146104c55780637464fc3d146104f85780637b4fb85814610500576101da565b806323b872dd1161017c578063485cc9551161014b578063485cc955146104475780635909c0d5146104825780635a3d54931461048a5780636a62784214610492576101da565b806323b872dd146103d657806330adf81f14610419578063313ce567146104215780633644e5151461043f576101da565b80630902f1ac116101b85780630902f1ac14610313578063095ea7b3146103525780630dfe16811461038b57806318160ddd146103bc576101da565b8063022c0d9f146101df57806303f8bfb01461027a57806306fdde0314610296575b600080fd5b610278600480360360808110156101f557600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561023957600080fd5b82018360208201111561024b57600080fd5b8035906020019184600183028401116401000000008311171561026d57600080fd5b5090925090506106e8565b005b610282610f17565b604080519115158252519081900360200190f35b61029e610f38565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102d85781810151838201526020016102c0565b50505050905090810190601f1680156103055780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61031b610fe4565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b6102826004803603604081101561036857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611039565b610393611050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6103c461106c565b60408051918252519081900360200190f35b610282600480360360608110156103ec57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611072565b6103c4611151565b610429611175565b6040805160ff9092168252519081900360200190f35b6103c461117e565b6102786004803603604081101561045d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611184565b6103c461125d565b6103c4611263565b6103c4600480360360208110156104a857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611269565b6103c4600480360360208110156104db57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611750565b6103c4611762565b61051d6004803603602081101561051657600080fd5b5035611768565b6040805192835260208301919091528051918290030190f35b6103c46004803603602081101561054c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118f3565b61051d6004803603602081101561057f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611905565b61029e611ecf565b610278600480360360208110156105ba57600080fd5b50351515611f47565b610282600480360360408110156105d957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356120a9565b6103c46120b6565b6102786004803603602081101561061a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166120bc565b6103936123ca565b6103936123e6565b610278600480360360e081101561065d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135612402565b6103c4600480360360408110156106bb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166126ce565b6102786126eb565b600854604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051339273ffffffffffffffffffffffffffffffffffffffff1691638da5cb5b916004808301926020929190829003018186803b15801561075257600080fd5b505afa158015610766573d6000803e3d6000fd5b505050506040513d602081101561077c57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161461080057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4863537761703a204e4f54204f574e4552000000000000000000000000000000604482015290519081900360640190fd5b600f5460011461087157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4863537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000600f55841515806108845750600084115b6108d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806135686022913960400191505060405180910390fd5b6000806108e4610fe4565b5091509150816dffffffffffffffffffffffffffff16871080156109175750806dffffffffffffffffffffffffffff1686105b61098257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4863537761703a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b600954600a54600091829173ffffffffffffffffffffffffffffffffffffffff9182169190811690891682148015906109e757508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610a5257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4863537761703a20494e56414c49445f544f0000000000000000000000000000604482015290519081900360640190fd5b8a15610a6357610a63828a8d6129e9565b8915610a7457610a74818a8c6129e9565b8615610b56578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610b3d57600080fd5b505af1158015610b51573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610bc257600080fd5b505afa158015610bd6573d6000803e3d6000fd5b505050506040513d6020811015610bec57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610c5e57600080fd5b505afa158015610c72573d6000803e3d6000fd5b505050506040513d6020811015610c8857600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610cb2576000610cc8565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610cec576000610d02565b89856dffffffffffffffffffffffffffff160383035b90506000821180610d135750600081115b610d68576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806135476021913960400191505060405180910390fd5b6000610dbc610d9e600a60149054906101000a900460ff16610d8b576003610d8e565b60055b859060ff1663ffffffff612bf616565b610db0876103e863ffffffff612bf616565b9063ffffffff612c7c16565b90506000610de1610d9e600a60149054906101000a900460ff16610d8b576003610d8e565b9050610e19620f4240610e0d6dffffffffffffffffffffffffffff8b8116908b1663ffffffff612bf616565b9063ffffffff612bf616565b610e29838363ffffffff612bf616565b1015610e9657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4863537761703a204b0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ea484848888612cee565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600f55505050505050505050565b600a5474010000000000000000000000000000000000000000900460ff1681565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f81018490048402820184019092528181529291830182828015610fdc5780601f10610fb157610100808354040283529160200191610fdc565b820191906000526020600020905b815481529060010190602001808311610fbf57829003601f168201915b505050505081565b600b546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000611046338484612faa565b5060015b92915050565b60095473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461113c5773ffffffffffffffffffffffffffffffffffffffff8416600090815260056020908152604080832033845290915290205461110a908363ffffffff612c7c16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526005602090815260408083203384529091529020555b611147848484613019565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60025460ff1681565b60065481565b60085473ffffffffffffffffffffffffffffffffffffffff16331461120a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4863537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b6009805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155600a8054929093169116179055565b600c5481565b600d5481565b60003373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ea57600080fd5b505afa1580156112fe573d6000803e3d6000fd5b505050506040513d602081101561131457600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161461139857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4863537761703a204e4f54204f574e4552000000000000000000000000000000604482015290519081900360640190fd5b600f5460011461140957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4863537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000600f81905580611419610fe4565b50600954604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561149357600080fd5b505afa1580156114a7573d6000803e3d6000fd5b505050506040513d60208110156114bd57600080fd5b5051600a54604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561153657600080fd5b505afa15801561154a573d6000803e3d6000fd5b505050506040513d602081101561156057600080fd5b505190506000611586836dffffffffffffffffffffffffffff871663ffffffff612c7c16565b905060006115aa836dffffffffffffffffffffffffffff871663ffffffff612c7c16565b905060006115b887876130fa565b600354909150806115f5576115e16103e8610db06115dc878763ffffffff612bf616565b613290565b98506115f060006103e86132e2565b611652565b61164f6dffffffffffffffffffffffffffff8916611619868463ffffffff612bf616565b8161162057fe5b046dffffffffffffffffffffffffffff8916611642868563ffffffff612bf616565b8161164957fe5b04613393565b98505b600089116116ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806135af6025913960400191505060405180910390fd5b6116b58a8a6132e2565b6116c186868a8a612cee565b811561170357600b546116ff906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff612bf616565b600e555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600f5550949695505050505050565b60046020526000908152604090205481565b600e5481565b600954604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516000928392839273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156117e057600080fd5b505afa1580156117f4573d6000803e3d6000fd5b505050506040513d602081101561180a57600080fd5b5051600a54604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561188357600080fd5b505afa158015611897573d6000803e3d6000fd5b505050506040513d60208110156118ad57600080fd5b5051600354909150806118c6878563ffffffff612bf616565b816118cd57fe5b049450806118e1878463ffffffff612bf616565b816118e857fe5b049350505050915091565b60076020526000908152604090205481565b6000803373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561198757600080fd5b505afa15801561199b573d6000803e3d6000fd5b505050506040513d60208110156119b157600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614611a3557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4863537761703a204e4f54204f574e4552000000000000000000000000000000604482015290519081900360640190fd5b600f54600114611aa657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4863537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000600f81905580611ab6610fe4565b50600954600a54604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b158015611b3857600080fd5b505afa158015611b4c573d6000803e3d6000fd5b505050506040513d6020811015611b6257600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b158015611bd657600080fd5b505afa158015611bea573d6000803e3d6000fd5b505050506040513d6020811015611c0057600080fd5b505130600090815260046020526040812054919250611c1f88886130fa565b60035490915080611c36848763ffffffff612bf616565b81611c3d57fe5b049a5080611c51848663ffffffff612bf616565b81611c5857fe5b04995060008b118015611c6b575060008a115b611cc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061358a6025913960400191505060405180910390fd5b611cca30846133ab565b611cd5878d8d6129e9565b611ce0868d8c6129e9565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b158015611d4c57600080fd5b505afa158015611d60573d6000803e3d6000fd5b505050506040513d6020811015611d7657600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b158015611de857600080fd5b505afa158015611dfc573d6000803e3d6000fd5b505050506040513d6020811015611e1257600080fd5b50519350611e2285858b8b612cee565b8115611e6457600b54611e60906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff612bf616565b600e555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600f81905550915091565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f81018490048402820184019092528181529291830182828015610fdc5780601f10610fb157610100808354040283529160200191610fdc565b600854604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051339273ffffffffffffffffffffffffffffffffffffffff1691638da5cb5b916004808301926020929190829003018186803b158015611fb157600080fd5b505afa158015611fc5573d6000803e3d6000fd5b505050506040513d6020811015611fdb57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161461205f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4863537761703a204e4f54204f574e4552000000000000000000000000000000604482015290519081900360640190fd5b600a805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000611046338484613019565b6103e881565b600854604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051339273ffffffffffffffffffffffffffffffffffffffff1691638da5cb5b916004808301926020929190829003018186803b15801561212657600080fd5b505afa15801561213a573d6000803e3d6000fd5b505050506040513d602081101561215057600080fd5b505173ffffffffffffffffffffffffffffffffffffffff16146121d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4863537761703a204e4f54204f574e4552000000000000000000000000000000604482015290519081900360640190fd5b600f5460011461224557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4863537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000600f55600954600a54600b54604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692612321928592879261231c926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b1580156122e457600080fd5b505afa1580156122f8573d6000803e3d6000fd5b505050506040513d602081101561230e57600080fd5b50519063ffffffff612c7c16565b6129e9565b600b54604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516123c0928492879261231c926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b1580156122e457600080fd5b50506001600f5550565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b600a5473ffffffffffffffffffffffffffffffffffffffff1681565b4284101561247157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4863537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60065473ffffffffffffffffffffffffffffffffffffffff80891660008181526007602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa1580156125d2573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061264d57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6126b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4863537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b6126c3898989612faa565b505050505050505050565b600560209081526000928352604080842090915290825290205481565b600854604080517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529051339273ffffffffffffffffffffffffffffffffffffffff1691638da5cb5b916004808301926020929190829003018186803b15801561275557600080fd5b505afa158015612769573d6000803e3d6000fd5b505050506040513d602081101561277f57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff161461280357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4863537761703a204e4f54204f574e4552000000000000000000000000000000604482015290519081900360640190fd5b600f5460011461287457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4863537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6000600f55600954604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516129e29273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b1580156128eb57600080fd5b505afa1580156128ff573d6000803e3d6000fd5b505050506040513d602081101561291557600080fd5b5051600a54604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561298857600080fd5b505afa15801561299c573d6000803e3d6000fd5b505050506040513d60208110156129b257600080fd5b5051600b546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416612cee565b6001600f55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b60208310612aef57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612ab2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612b51576040519150601f19603f3d011682016040523d82523d6000602084013e612b56565b606091505b5091509150818015612b84575080511580612b845750808060200190516020811015612b8157600080fd5b50515b612bef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4863537761703a205452414e534645525f4641494c4544000000000000000000604482015290519081900360640190fd5b5050505050565b6000811580612c1157505080820282828281612c0e57fe5b04145b61104a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082038281111561104a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff8411801590612d1a57506dffffffffffffffffffffffffffff8311155b612d8557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4863537761703a204f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b600b5463ffffffff428116917c010000000000000000000000000000000000000000000000000000000090048116820390811615801590612dd557506dffffffffffffffffffffffffffff841615155b8015612df057506dffffffffffffffffffffffffffff831615155b15612ea0578063ffffffff16612e3385612e098661346f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff61349316565b600c80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612e7384612e098761346f565b600d80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600b80547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205461304f908263ffffffff612c7c16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600460205260408082209390935590841681522054613091908263ffffffff6134d416565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561316557600080fd5b505afa158015613179573d6000803e3d6000fd5b505050506040513d602081101561318f57600080fd5b5051600e5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061327c5780156132775760006131e66115dc6dffffffffffffffffffffffffffff88811690881663ffffffff612bf616565b905060006131f383613290565b905080821115613274576000613221613212848463ffffffff612c7c16565b6003549063ffffffff612bf616565b9050600061325083600261323c87600363ffffffff612bf616565b8161324357fe5b049063ffffffff6134d416565b9050600081838161325d57fe5b04905080156132705761327087826132e2565b5050505b50505b613288565b8015613288576000600e555b505092915050565b600060038211156132d3575080600160028204015b818110156132cd578091506002818285816132bc57fe5b0401816132c557fe5b0490506132a5565b506132dd565b81156132dd575060015b919050565b6003546132f5908263ffffffff6134d416565b60035573ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205461332e908263ffffffff6134d416565b73ffffffffffffffffffffffffffffffffffffffff831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106133a257816133a4565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020546133e1908263ffffffff612c7c16565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205560035461341a908263ffffffff612c7c16565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816134cc57fe5b049392505050565b8082018281101561104a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe4863537761703a20494e53554646494349454e545f494e5055545f414d4f554e544863537761703a20494e53554646494349454e545f4f55545055545f414d4f554e544863537761703a20494e53554646494349454e545f4c49515549444954595f4255524e45444863537761703a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a7231582071436693e22ccd7ac842f72bed1bcb354b1d17015b339d5781c53f951dd886e764736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429

Deployed ByteCode Sourcemap

11044:10458:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11044:10458:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18947:1942;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;18947:1942:0;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;18947:1942:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;18947:1942:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;18947:1942:0;;-1:-1:-1;18947:1942:0;-1:-1:-1;18947:1942:0;:::i;:::-;;11412:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;4552:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4552:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12092:231;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6577:147;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6577:147:0;;;;;;;;;:::i;11356:21::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4665:24;;;:::i;:::-;;;;;;;;;;;;;;;;6879:301;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6879:301:0;;;;;;;;;;;;;;;;;;:::i;4957:108::-;;;:::i;4632:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4814:31;;;:::i;13282:207::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13282:207:0;;;;;;;;;;;:::i;11735:32::-;;;:::i;11774:::-;;;:::i;15605:1248::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15605:1248:0;;;;:::i;4696:41::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4696:41:0;;;;:::i;11813:17::-;;;:::i;16861:389::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16861:389:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5072:38;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5072:38:0;;;;:::i;17362:1473::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17362:1473:0;;;;:::i;4594:31::-;;;:::i;13497:93::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13497:93:0;;;;:::i;6732:139::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6732:139:0;;;;;;;;;:::i;11177:46::-;;;:::i;20938:344::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20938:344:0;;;;:::i;11327:22::-;;;:::i;11384:21::-;;;:::i;7188:668::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;7188:668:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4744:61::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4744:61:0;;;;;;;;;;;:::i;21331:168::-;;;:::i;18947:1942::-;13148:7;;13130:34;;;;;;;;13168:10;;13130:48;13148:7;;13130:32;;:34;;;;;;;;;;;;;;13148:7;13130:34;;;5:2:-1;;;;30:1;27;20:12;5:2;13130:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13130:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13130:34:0;:48;;;13122:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11986:8;;11998:1;11986:13;11978:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12040:1;12029:8;:12;19071:14;;;;:32;;;19102:1;19089:10;:14;19071:32;19063:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19154:17;19173;19195:13;:11;:13::i;:::-;19153:55;;;;;19255:9;19242:22;;:10;:22;:48;;;;;19281:9;19268:22;;:10;:22;19242:48;19234:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19470:6;;19505;;19338:13;;;;19470:6;;;;;19505;;;;19530:13;;;;;;;:30;;;19553:7;19547:13;;:2;:13;;;;19530:30;19522:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19598:14;;19594:58;;19614:38;19628:7;19637:2;19641:10;19614:13;:38::i;:::-;19701:14;;19697:58;;19717:38;19731:7;19740:2;19744:10;19717:13;:38::i;:::-;19804:15;;19800:97;;19838:2;19821:34;;;19856:10;19868;19880;19892:4;;19821:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;19821:76:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19821:76:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19821:76:0;;;;19800:97;19919:40;;;;;;19953:4;19919:40;;;;;;:25;;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19919:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19919:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19919:40:0;19981;;;;;;20015:4;19981:40;;;;;;19919;;-1:-1:-1;19981:25:0;;;;;;:40;;;;;19919;;19981;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;19981:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19981:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19981:40:0;;-1:-1:-1;20043:14:0;;-1:-1:-1;;20071:22:0;;;;;;20060:33;;:75;;20134:1;20060:75;;;20120:10;20108:9;:22;;;20096:8;:35;20060:75;20043:92;;20146:14;20186:10;20174:9;:22;;;20163:8;:33;:75;;20237:1;20163:75;;;20223:10;20211:9;:22;;;20199:8;:35;20163:75;20146:92;;20269:1;20257:9;:13;:30;;;;20286:1;20274:9;:13;20257:30;20249:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20411:21;20435:52;20458:28;20472:9;;;;;;;;;;;:13;;20484:1;20472:13;;;20482:1;20472:13;20458:9;;:28;;;:13;:28;:::i;:::-;20435:18;:8;20448:4;20435:18;:12;:18;:::i;:::-;:22;:52;:22;:52;:::i;:::-;20411:76;;20515:21;20539:52;20562:28;20576:9;;;;;;;;;;;:13;;20588:1;20576:13;;20539:52;20515:76;-1:-1:-1;20669:43:0;20704:7;20669:30;;:15;;;;:30;;;:19;:30;:::i;:::-;:34;:43;:34;:43;:::i;:::-;20627:38;:16;20648;20627:38;:20;:38;:::i;:::-;:85;;20619:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12052:1;;20750:49;20758:8;20768;20778:9;20789;20750:7;:49::i;:::-;20815:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20820:10;;20815:66;;;;;;;;;-1:-1:-1;;12075:1:0;12064:8;:12;-1:-1:-1;;;;;;;;;18947:1942:0:o;11412:21::-;;;;;;;;;:::o;4552:35::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12092:231::-;12225:8;;;;;;;12256;;;;;;;12297:18;;;;;;12092:231::o;6577:147::-;6641:4;6658:36;6667:10;6679:7;6688:5;6658:8;:36::i;:::-;-1:-1:-1;6712:4:0;6577:147;;;;;:::o;11356:21::-;;;;;;:::o;4665:24::-;;;;:::o;6879:301::-;6978:15;;;6957:4;6978:15;;;:9;:15;;;;;;;;6994:10;6978:27;;;;;;;;7014:2;6978:39;6974:140;;7064:15;;;;;;;:9;:15;;;;;;;;7080:10;7064:27;;;;;;;;:38;;7096:5;7064:38;:31;:38;:::i;:::-;7034:15;;;;;;;:9;:15;;;;;;;;7050:10;7034:27;;;;;;;:68;6974:140;7124:26;7134:4;7140:2;7144:5;7124:9;:26::i;:::-;-1:-1:-1;7168:4:0;6879:301;;;;;:::o;4957:108::-;4999:66;4957:108;:::o;4632:26::-;;;;;;:::o;4814:31::-;;;;:::o;13282:207::-;13378:7;;;;13364:10;:21;13356:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13438:6;:16;;;;;;;;;;;;;;13465:6;:16;;;;;;;;;;;13282:207::o;11735:32::-;;;;:::o;11774:::-;;;;:::o;15605:1248::-;15665:14;13168:10;13130:48;;13148:7;;;;;;;;;;;13130:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13130:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13130:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13130:34:0;:48;;;13122:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11986:8;;11998:1;11986:13;11978:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12040:1;12029:8;:12;;;12040:1;15734:13;:11;:13::i;:::-;-1:-1:-1;15796:6:0;;15789:39;;;;;;15822:4;15789:39;;;;;;15692:55;;-1:-1:-1;15692:55:0;;-1:-1:-1;15773:13:0;;15796:6;;;;;15789:24;;:39;;;;;;;;;;;;;;15796:6;15789:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15789:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15789:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15789:39:0;15862:6;;15855:39;;;;;;15888:4;15855:39;;;;;;15789;;-1:-1:-1;15839:13:0;;15862:6;;;;;15855:24;;:39;;;;;15789;;15855;;;;;;;;15862:6;15855:39;;;5:2:-1;;;;30:1;27;20:12;5:2;15855:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15855:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15855:39:0;;-1:-1:-1;15905:12:0;15920:23;:8;:23;;;;:12;:23;:::i;:::-;15905:38;-1:-1:-1;15954:12:0;15969:23;:8;:23;;;;:12;:23;:::i;:::-;15954:38;;16005:10;16018:30;16027:9;16038;16018:8;:30::i;:::-;16079:11;;16005:43;;-1:-1:-1;16183:17:0;16179:352;;16229:54;11218:5;16229:31;16239:20;:7;16251;16239:20;:11;:20;:::i;:::-;16229:9;:31::i;:54::-;16217:66;;16297:36;16311:1;11218:5;16297;:36::i;:::-;16179:352;;;16433:86;16442:37;;;:25;:7;16454:12;16442:25;:11;:25;:::i;:::-;:37;;;;;;16481;;;:25;:7;16493:12;16481:25;:11;:25;:::i;:::-;:37;;;;;;16433:8;:86::i;:::-;16421:98;;16179:352;16561:1;16549:9;:13;16541:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16615:20;16621:2;16625:9;16615:5;:20::i;:::-;16648:49;16656:8;16666;16676:9;16687;16648:7;:49::i;:::-;16712:5;16708:47;;;16746:8;;16727:28;;16746:8;16732;;;;16746;;;;16727:28;:18;:28;:::i;:::-;16719:5;:36;16708:47;16811:34;;;;;;;;;;;;;;16816:10;;16811:34;;;;;;;;-1:-1:-1;;12075:1:0;12064:8;:12;-1:-1:-1;15605:1248:0;;;-1:-1:-1;;;;;;15605:1248:0:o;4696:41::-;;;;;;;;;;;;;:::o;11813:17::-;;;;:::o;16861:389::-;16980:6;;16973:39;;;;;;17006:4;16973:39;;;;;;16919:12;;;;;;16980:6;;;;;16973:24;;:39;;;;;;;;;;;;;;;16980:6;16973:39;;;5:2:-1;;;;30:1;27;20:12;5:2;16973:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16973:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16973:39:0;17046:6;;17039:39;;;;;;17072:4;17039:39;;;;;;16973;;-1:-1:-1;17023:13:0;;17046:6;;;;;17039:24;;:39;;;;;16973;;17039;;;;;;;;17046:6;17039:39;;;5:2:-1;;;;30:1;27;20:12;5:2;17039:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17039:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17039:39:0;17111:11;;17039:39;;-1:-1:-1;17111:11:0;17144:23;:9;17158:8;17144:23;:13;:23;:::i;:::-;:38;;;;;;;-1:-1:-1;17230:12:0;17204:23;:9;17218:8;17204:23;:13;:23;:::i;:::-;:38;;;;;;17194:48;;16861:389;;;;;;:::o;5072:38::-;;;;;;;;;;;;;:::o;17362:1473::-;17421:12;17435;13168:10;13130:48;;13148:7;;;;;;;;;;;13130:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13130:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13130:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13130:34:0;:48;;;13122:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11986:8;;11998:1;11986:13;11978:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12040:1;12029:8;:12;;;12040:1;17502:13;:11;:13::i;:::-;-1:-1:-1;17559:6:0;;17640;;17719:40;;;;;;17753:4;17719:40;;;;;;17460:55;;-1:-1:-1;17460:55:0;;-1:-1:-1;17559:6:0;;;;;17640;;;17541:15;;17559:6;;17719:25;;:40;;;;;;;;;;;;;;17559:6;17719:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17719:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17719:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17719:40:0;17786;;;;;;17820:4;17786:40;;;;;;17719;;-1:-1:-1;17770:13:0;;17786:25;;;;;;:40;;;;;17719;;17786;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;17786:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17786:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17786:40:0;17872:4;17837:14;17854:24;;;:9;17786:40;17854:24;;;;;17786:40;;-1:-1:-1;17904:30:0;17913:9;17924;17904:8;:30::i;:::-;17965:11;;17891:43;;-1:-1:-1;17965:11:0;18075:23;:9;18089:8;18075:23;:13;:23;:::i;:::-;:38;;;;;;;-1:-1:-1;18208:12:0;18182:23;:9;18196:8;18182:23;:13;:23;:::i;:::-;:38;;;;;;18172:48;;18297:1;18287:7;:11;:26;;;;;18312:1;18302:7;:11;18287:26;18279:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18366:31;18380:4;18387:9;18366:5;:31::i;:::-;18408:35;18422:7;18431:2;18435:7;18408:13;:35::i;:::-;18454;18468:7;18477:2;18481:7;18454:13;:35::i;:::-;18511:40;;;;;;18545:4;18511:40;;;;;;:25;;;;;;:40;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18511:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18511:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18511:40:0;18573;;;;;;18607:4;18573:40;;;;;;18511;;-1:-1:-1;18573:25:0;;;;;;:40;;;;;18511;;18573;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18573:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18573:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18573:40:0;;-1:-1:-1;18626:49:0;18634:8;18573:40;18654:9;18665;18626:7;:49::i;:::-;18690:5;18686:47;;;18724:8;;18705:28;;18724:8;18710;;;;18724;;;;18705:28;:18;:28;:::i;:::-;18697:5;:36;18686:47;18789:38;;;;;;;;;;;;;;;;;;18794:10;;18789:38;;;;;;;;;;;12052:1;;;;;;;;;12075;12064:8;:12;;;;17362:1473;;;:::o;4594:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13497:93;13148:7;;13130:34;;;;;;;;13168:10;;13130:48;13148:7;;13130:32;;:34;;;;;;;;;;;;;;13148:7;13130:34;;;5:2:-1;;;;30:1;27;20:12;5:2;13130:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13130:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13130:34:0;:48;;;13122:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13563:9;:19;;;;;;;;;;;;;;;;;13497:93::o;6732:139::-;6792:4;6809:32;6819:10;6831:2;6835:5;6809:9;:32::i;11177:46::-;11218:5;11177:46;:::o;20938:344::-;13148:7;;13130:34;;;;;;;;13168:10;;13130:48;13148:7;;13130:32;;:34;;;;;;;;;;;;;;13148:7;13130:34;;;5:2:-1;;;;30:1;27;20:12;5:2;13130:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13130:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13130:34:0;:48;;;13122:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11986:8;;11998:1;11986:13;11978:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12040:1;12029:8;:12;21017:6;;21067;;21171:8;;21126:40;;;;;;21160:4;21126:40;;;;;;21017:6;;;;;21067;;;;21099:82;;21017:6;;21122:2;;21126:54;;21171:8;;;21017:6;;21126:25;;:40;;;;;;;;;;;;;;;21017:6;21126:40;;;5:2:-1;;;;30:1;27;20:12;5:2;21126:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21126:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21126:40:0;;:54;:44;:54;:::i;:::-;21099:13;:82::i;:::-;21264:8;;21219:40;;;;;;21253:4;21219:40;;;;;;21192:82;;21206:7;;21215:2;;21219:54;;21264:8;;;;;;21219:25;;;;;;:40;;;;;;;;;;;;;;;:25;:40;;;5:2:-1;;;;30:1;27;20:12;21192:82:0;-1:-1:-1;;12075:1:0;12064:8;:12;-1:-1:-1;20938:344:0:o;11327:22::-;;;;;;:::o;11384:21::-;;;;;;:::o;7188:668::-;7334:15;7322:8;:27;;7314:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7485:16;;7581:13;;;;7380:14;7581:13;;;:6;:13;;;;;;;;:15;;;;;;;;;7530:77;;4999:66;7530:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7530:77:0;;;;;7520:88;;;;;;7421:202;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7421:202:0;;;;;;7397:237;;;;;;;;;7672:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7380:14;;7581:15;7672:26;;;;;-1:-1:-1;7672:26:0;;;;;;;;;;7581:15;7672:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;7672:26:0;;;;;;-1:-1:-1;;7717:30:0;;;;;;;:59;;;7771:5;7751:25;;:16;:25;;;7717:59;7709:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7817:31;7826:5;7833:7;7842:5;7817:8;:31::i;:::-;7188:668;;;;;;;;;:::o;4744:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;21331:168::-;13148:7;;13130:34;;;;;;;;13168:10;;13130:48;13148:7;;13130:32;;:34;;;;;;;;;;;;;;13148:7;13130:34;;;5:2:-1;;;;30:1;27;20:12;5:2;13130:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13130:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13130:34:0;:48;;;13122:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11986:8;;11998:1;11986:13;11978:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12040:1;12029:8;:12;21397:6;;21390:39;;;;;;21423:4;21390:39;;;;;;21382:109;;21397:6;;;21390:24;;:39;;;;;;;;;;;;;;21397:6;21390:39;;;5:2:-1;;;;30:1;27;20:12;5:2;21390:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21390:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21390:39:0;21438:6;;21431:39;;;;;;21464:4;21431:39;;;;;;21438:6;;;;;21431:24;;:39;;;;;21390;;21431;;;;;;;;21438:6;21431:39;;;5:2:-1;;;;30:1;27;20:12;5:2;21431:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21431:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21431:39:0;21472:8;;;;;;;21482;;;;21382:7;:109::i;:::-;12075:1;12064:8;:12;21331:168::o;12331:284::-;11282:34;;;;;;;;;;;;;;;;;12459:43;;12448:10;12459:43;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;12459:43:0;;;;;;25:18:-1;;;61:17;;12459:43:0;182:15:-1;12459:43:0;179:29:-1;160:49;;12448:55:0;;;;12413:12;;12427:17;;12448:10;;;12459:43;12448:55;;;25:18:-1;12448:55:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;12448:55:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;12412:91:0;;;;12522:7;:57;;;;-1:-1:-1;12534:11:0;;:16;;:44;;;12565:4;12554:24;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12554:24:0;12534:44;12514:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12331:284;;;;;:::o;4266:142::-;4318:6;4345;;;:30;;-1:-1:-1;;4360:5:0;;;4374:1;4369;4360:5;4369:1;4355:15;;;;;:20;4345:30;4337:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4129:129;4213:5;;;4208:16;;;;4200:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13675:857;13787:23;;;;;;:50;;-1:-1:-1;13814:23:0;;;;13787:50;13779:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13973:18;;13900:23;:15;:23;;;13973:18;;;;;13956:35;;;14029:15;;;;;;:33;;-1:-1:-1;14048:14:0;;;;;14029:33;:51;;;;-1:-1:-1;14066:14:0;;;;;14029:51;14025:336;;;14235:11;14182:64;;14187:44;14221:9;14187:27;14204:9;14187:16;:27::i;:::-;:33;;;:44;:33;:44;:::i;:::-;14158:20;:88;;14182:50;;;;;:64;;;;14158:88;;;14285:64;;;14290:44;14324:9;14290:27;14307:9;14290:16;:27::i;:44::-;14261:20;:88;;14285:50;;;;;:64;;;;14261:88;;;14025:336;14371:8;:28;;;;;;;;;;;;14410;;;;;;;;;;;;14449:35;;;;;;;;;;;;14500:24;;;14505:8;;;14500:24;;14515:8;;;;;;;14500:24;;;;;;;;;;;;;;;;;13675:857;;;;;;:::o;6169:170::-;6251:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;6300:31;;;;;;;;;;;;;;;;;6169:170;;;:::o;6347:222::-;6443:15;;;;;;;:9;:15;;;;;;:26;;6463:5;6443:26;:19;:26;:::i;:::-;6425:15;;;;;;;;:9;:15;;;;;;:44;;;;6496:13;;;;;;;:24;;6514:5;6496:24;:17;:24;:::i;:::-;6480:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;6536:25;;;;;;;6480:13;;6536:25;;;;;;;;;;;;;6347:222;;;:::o;14622:871::-;14695:10;14718:13;14752:7;;;;;;;;;;;14734:32;;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14734:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14734:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14734:34:0;14831:5;;14787:19;;;;;;;-1:-1:-1;14734:34:0;;-1:-1:-1;14831:5:0;14862:624;;14892:11;;14888:528;;14924:10;14937:41;14947:30;;:15;;;;:30;;;:19;:30;:::i;14937:41::-;14924:54;;14997:14;15014:17;15024:6;15014:9;:17::i;:::-;14997:34;;15062:9;15054:5;:17;15050:351;;;15096:14;15113:37;15129:20;:5;15139:9;15129:20;:9;:20;:::i;:::-;15113:11;;;:37;:15;:37;:::i;:::-;15096:54;-1:-1:-1;15201:16:0;15220:33;15243:9;15236:1;15221:12;:5;15231:1;15221:12;:9;:12;:::i;:::-;:16;;;;;;;15220:33;:22;:33;:::i;:::-;15201:52;;15276:14;15305:11;15293:9;:23;;;;;;;-1:-1:-1;15343:13:0;;15339:42;;15358:23;15364:5;15371:9;15358:5;:23::i;:::-;15050:351;;;;14888:528;;;14862:624;;;15437:11;;15433:53;;15473:1;15465:5;:9;15433:53;14622:871;;;;;;:::o;8203:303::-;8248:6;8275:1;8271;:5;8267:232;;;-1:-1:-1;8297:1:0;8330;8326;8322:5;;:9;8346:92;8357:1;8353;:5;8346:92;;;8383:1;8379:5;;8421:1;8416;8412;8408;:5;;;;;;:9;8407:15;;;;;;8403:19;;8346:92;;;8267:232;;;;8459:6;;8455:44;;-1:-1:-1;8486:1:0;8455:44;8203:303;;;:::o;5743:201::-;5816:11;;:22;;5832:5;5816:22;:15;:22;:::i;:::-;5802:11;:36;5865:13;;;;;;;:9;:13;;;;;;:24;;5883:5;5865:24;:17;:24;:::i;:::-;5849:13;;;;;;;:9;:13;;;;;;;;:40;;;;5905:31;;;;;;;5849:13;;;;5905:31;;;;;;;;;;5743:201;;:::o;7989:96::-;8041:6;8068:1;8064;:5;:13;;8076:1;8064:13;;;8072:1;8064:13;8060:17;7989:96;-1:-1:-1;;;7989:96:0:o;5952:209::-;6031:15;;;;;;;:9;:15;;;;;;:26;;6051:5;6031:26;:19;:26;:::i;:::-;6013:15;;;;;;;:9;:15;;;;;:44;6082:11;;:22;;6098:5;6082:22;:15;:22;:::i;:::-;6068:11;:36;6120:33;;;;;;;;6143:1;;6120:33;;;;;;;;;;;;;5952:209;;:::o;8835:120::-;8911:10;;8780:6;8911:17;;8835:120::o;9026:108::-;9086:9;9116:10;;;9112:14;;;9116:10;9112:14;;;;;;9026:108;-1:-1:-1;;;9026:108:0:o;3993:128::-;4077:5;;;4072:16;;;;4064:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

bzzr://71436693e22ccd7ac842f72bed1bcb354b1d17015b339d5781c53f951dd886e7
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.