Contract 0x9bfcf685e641206115dadc0c9ab17181e1d4975c

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x95f9efe7c43bbc7d4fab26e9d39c0f2a040362e829ca37822f9726e4f4df6d63Approve20221652022-10-06 18:17:121 day 3 hrs ago0x1d2e67f6161639642e2f5e4f91f0b1962e06829c IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0xfbfbc35778da2c8778212b77e8737630bb32bde1ce28d830e1f5702128c0356bApprove20200112022-10-06 11:00:001 day 10 hrs ago0xb8e22e1bcf66a7af790688205bec8577206c96fa IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0xfc6623bda0cc1faeed8badf4eb8ba47b5cb9b034b74d370646da9a4f47c241a5Approve20020752022-10-03 22:11:173 days 23 hrs ago0x1aa08fdc683d7b78995911bcdb0894e90770039f IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0x95d85b38975da3ab37ba7c385307cec9d8421a78a82e3108f33f6304400c4574Approve19872082022-10-01 19:41:066 days 1 hr ago0x7bef575b9c885518715d13dfc6c32658c50327ee IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0xf185eba97ea04a27795c37fc479fd43fd009c90a5b677682475937cddfcdc35bApprove19838382022-10-01 8:11:486 days 13 hrs ago0x6c30cfb7b19f9b5a8387a8bbff2cc60ac1909c04 IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0x258da2ec9e588093fed0c9a810fa770f9712bdcef9a0b1296efb6527050c85a0Approve19773362022-09-30 10:05:427 days 11 hrs ago0x21da48a811a3e938550187fc12d79d1beefc933d IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.0020984
0x17986897c58029e9d8a3a90ffcce540cd09cc4d62342226175c1413501610015Approve19773362022-09-30 10:05:427 days 11 hrs ago0x21da48a811a3e938550187fc12d79d1beefc933d IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.002623
0x38bad1863a421d67cfa65130ee5c506f49fdd693cedb3e77c2a549e47d5c4ec7Approve19773352022-09-30 10:05:307 days 11 hrs ago0x21da48a811a3e938550187fc12d79d1beefc933d IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.0020984
0xc191bc5dc01170a04cfec3322ca7f36aa8945f10b4a6d526b39be7eaabb2ecf1Approve19772972022-09-30 9:57:487 days 11 hrs ago0x18f389a4fb0507701267fa061c777ae2242621f9 IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0x4ad7162e7969620481a6647bc95f3e2ff9dfc35b9711530d7a416f74ed2ad991Approve19641242022-09-28 13:08:249 days 8 hrs ago0xbb6fbaa1f139e9bd6c3ee9fbb460b04828fedde0 IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0x0abcfb9d0c45365b948d9019820e5707b902caa7c01855794c4f3f5be0f7a31cApprove19634942022-09-28 10:59:369 days 10 hrs ago0xa9cc5ec1046bf1e48b0a1ac6b6b1b3129fe0e31e IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0xe7961912800e1f40acd1d4ac3a84345da5d11823cb8489f7a340f36e9dcb1797Approve19564272022-09-27 10:57:1210 days 10 hrs ago0xb50ff5b3e3f7fabdb5548c2b06c37778c371aef8 IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0x1d58364d7df954937209079dc01936c6c1cc7a697e6099559a72fefc0e5a90acApprove19552012022-09-27 6:45:1210 days 14 hrs ago0x9d0591fcec26c86e188db6a2d6a0737be5f44419 IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0x48881a71dc2ed02a371bde09c9e3086eb3d663cf7aa82567422793c78a2bd8f6Approve19500992022-09-26 13:20:0011 days 8 hrs ago0x384363717694a08367cdc916b60f4bd34042dda3 IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0xe7736b5a161f7114583fad0d9256a059c85d8043496ee27b91a567b21fef1550Approve19438022022-09-25 15:35:0612 days 5 hrs ago0xf31db9d9b2b31c36822ccbc7a0a74b6be3477d5d IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0x75c99c1e867a0146bf8364942db8361a2e75eb59def011c88e63cb619a52b4c4Approve19396322022-09-25 1:10:2412 days 20 hrs ago0x72318fa0479f11cd5ee368982bf75d8aa0c27117 IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0xe33f877ad9828f8235a6bb18a8733bc837c29adecd3f5a6bd74245ccba6174e7Approve19377462022-09-24 18:38:2413 days 2 hrs ago0x4e429d637cd1a32e77aab4266c96ec7185a1d2e8 IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0xe369b8dcaea280d1cc815379a649800852f60180a1760eceabb37968a9862d62Approve19308322022-09-23 18:35:1214 days 2 hrs ago0xe95ee4a899718488aba3a5edcd061d1320baed3a IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0x0c0134ff43b6a7380d193344aaf5b34b1391b9f048d11b60714530bb73c28e6aApprove19268442022-09-23 4:38:0614 days 16 hrs ago0x3ffb51821a6fc977fbad9ff5b28a9ee20cd66cd7 IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0x73d729fe8ba188c1b98a096ffbdace1f675c4733bde6a0ff25ed220007754e79Approve19238362022-09-22 18:05:0615 days 3 hrs ago0x10dae25f6d6399b281e51574734b7f5e762f749d IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0x2e9c80e20085dfa89d11e8a88bbb2c7f7b664c2b1cdcab97787cd1fea02c05edApprove19203942022-09-22 5:43:0015 days 15 hrs ago0x3a1495e36149143229a64f13f8b075d304b40f9f IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004697914
0xda24d815be7ef9559051289e816e7c306e05c197138381650b15d6278fc985a8Approve19168702022-09-21 17:38:1816 days 3 hrs ago0x31f7ac633b7bf70039d4468a2fe9bf15025b6c4a IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004793078014
0x3daf003980b4a7e094516b14737d80f79e51369efc81d1ebb3166f5d13c9bfc9Approve19141572022-09-21 8:27:5416 days 13 hrs ago0xb95caa0a1749d90a1764e8ac0ff51df63f4b6bb7 IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004721171
0x2140c9048b9a0c7d35c7988d40f0ca6ebc66576a587a99e9fb8fc47bb4ec0a92Approve19123522022-09-21 2:22:0616 days 19 hrs ago0x0b6513258f0bc261c912ab8917de4ae1b891fa6f IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.014203116182
0x1a5574adb3b773afae8e16f6f2ba91c83affac7f3279c066ee15e3557bb50404Approve18945462022-09-18 14:04:0619 days 7 hrs ago0x455273b7b8f8dd629d03d2d398f8e0580e098f16 IN  0x9bfcf685e641206115dadc0c9ab17181e1d4975c0 GLMR0.004738930045
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xfa3a618bf4a95506ceef742d39af1d86124c36bc1642d3d0bdbe3e4c85c982eb9568422022-05-04 14:44:36156 days 6 hrs ago StellaSwap: Factory V2  Contract Creation0 GLMR
[ Download CSV Export 
Loading

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

Contract Name:
StellaSwapV2Pair

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at moonbeam.moonscan.io on 2022-02-09
*/

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.5.0;

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function migrator() 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;
    function setMigrator(address) external;
}


// File contracts/amm/libraries/SafeMath.sol



pragma solidity =0.6.12;

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

library SafeMathStellaSwap {
    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/amm/StellaSwapV2ERC20.sol



pragma solidity =0.6.12;

contract StellaSwapV2ERC20 {
    using SafeMathStellaSwap for uint;

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

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

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

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

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

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

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

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

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

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

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

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


// File contracts/amm/libraries/Math.sol



pragma solidity =0.6.12;

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



pragma solidity =0.6.12;

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

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

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

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

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


// File contracts/amm/interfaces/IERC20.sol



pragma solidity >=0.5.0;

interface IERC20StellaSwap {
    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/amm/interfaces/IStellaSwapV2Callee.sol



pragma solidity >=0.5.0;

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


// File contracts/amm/StellaSwapV2Pair.sol



pragma solidity =0.6.12;






interface IMigrator {
    // Return the desired amount of liquidity token that the migrator wants.
    function desiredLiquidity() external view returns (uint256);
}

contract StellaSwapV2Pair is StellaSwapV2ERC20 {
    using SafeMathStellaSwap  for uint;
    using UQ112x112 for uint224;

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

    address public factory;
    address public token0;
    address public token1;

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

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

    uint32 public swapFee = 25; // uses 0.25% default
    uint32 public devFee = 5; // uses 0.05% default from swap fee

    uint private unlocked = 1;
    modifier lock() {
        require(unlocked == 1, 'StellaSwapV2: 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))), 'StellaSwapV2: TRANSFER_FAILED');
    }

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

    constructor() public {
        factory = msg.sender;
    }

    // called once by the factory at time of deployment
    function initialize(address _token0, address _token1) external {
        require(msg.sender == factory, 'StellaSwapV2: FORBIDDEN'); // sufficient check
        token0 = _token0;
        token1 = _token1;
    }

    function setSwapFee(uint32 _swapFee) external {
        require(_swapFee > 0, "StellaSwapV2: lower then 0");
        require(msg.sender == factory, 'StellaSwapV2: FORBIDDEN');
        require(_swapFee <= 1000, 'StellaSwapV2: FORBIDDEN_FEE');
        swapFee = _swapFee;
    }
    
    function setDevFee(uint32 _devFee) external {
        require(_devFee > 0, "StellaSwapV2: lower then 0");
        require(msg.sender == factory, 'StellaSwapV2: FORBIDDEN');
        require(_devFee <= 500, 'StellaSwapV2: FORBIDDEN_FEE');
        devFee = _devFee;
    }

    // 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), 'StellaSwapV2: OVERFLOW');
        uint32 blockTimestamp = uint32(block.timestamp % 2**32);
        uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired
        if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {
            // * never overflows, and + overflow is desired
            price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;
            price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;
        }
        reserve0 = uint112(balance0);
        reserve1 = uint112(balance1);
        blockTimestampLast = blockTimestamp;
        emit Sync(reserve0, reserve1);
    }

    // if fee is on, mint liquidity equivalent to 1/5th of the growth in sqrt(k)
    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = IStellaSwapV2Factory(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(devFee).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 lock returns (uint liquidity) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        uint balance0 = IERC20StellaSwap(token0).balanceOf(address(this));
        uint balance1 = IERC20StellaSwap(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) {
            address migrator = IStellaSwapV2Factory(factory).migrator();
            if (msg.sender == migrator) {
                liquidity = IMigrator(migrator).desiredLiquidity();
                require(liquidity > 0 && liquidity != uint256(-1), "Bad desired liquidity");
            } else {
                require(migrator == address(0), "Must not have migrator");
                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, 'StellaSwapV2: INSUFFICIENT_LIQUIDITY_MINTED');
        _mint(to, liquidity);

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

    // this low-level function should be called from a contract which performs important safety checks
    function burn(address to) external lock returns (uint amount0, uint amount1) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        address _token0 = token0;                                // gas savings
        address _token1 = token1;                                // gas savings
        uint balance0 = IERC20StellaSwap(_token0).balanceOf(address(this));
        uint balance1 = IERC20StellaSwap(_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, 'StellaSwapV2: INSUFFICIENT_LIQUIDITY_BURNED');
        _burn(address(this), liquidity);
        _safeTransfer(_token0, to, amount0);
        _safeTransfer(_token1, to, amount1);
        balance0 = IERC20StellaSwap(_token0).balanceOf(address(this));
        balance1 = IERC20StellaSwap(_token1).balanceOf(address(this));

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

    // this low-level function should be called from a contract which performs important safety checks
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external lock {
        require(amount0Out > 0 || amount1Out > 0, 'StellaSwapV2: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'StellaSwapV2: 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, 'StellaSwapV2: 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) IStellaSwapV2Callee(to).stellaswapV2Call(msg.sender, amount0Out, amount1Out, data);
        balance0 = IERC20StellaSwap(_token0).balanceOf(address(this));
        balance1 = IERC20StellaSwap(_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, 'StellaSwapV2: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint _swapFee = swapFee;
        uint balance0Adjusted = balance0.mul(10000).sub(amount0In.mul(_swapFee));
        uint balance1Adjusted = balance1.mul(10000).sub(amount1In.mul(_swapFee));

        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(10000**2), 'StellaSwapV2: K');
        }

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

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

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

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":"devFee","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"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":"uint32","name":"_devFee","type":"uint32"}],"name":"setDevFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_swapFee","type":"uint32"}],"name":"setSwapFee","outputs":[],"stateMutability":"nonpayable","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":"swapFee","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","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"}]

60806040526019600c60006101000a81548163ffffffff021916908363ffffffff1602179055506005600c60046101000a81548163ffffffff021916908363ffffffff1602179055506001600d5534801561005957600080fd5b5060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600981526020017f5374656c6c61204c500000000000000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001206003819055505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061403d806101ab6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636827e7641161010f578063ba9a7a56116100a2578063d505accf11610071578063d505accf14610955578063d6d788c3146109ee578063dd62ed3e14610a22578063fff6cae914610a9a576101e5565b8063ba9a7a561461088b578063bc25cf77146108a9578063c45a0155146108ed578063d21220a714610921576101e5565b80637ecebe00116100de5780637ecebe00146106ed57806389afcb441461074557806395d89b41146107a4578063a9059cbb14610827576101e5565b80636827e764146105fb5780636a6278421461061f57806370a08231146106775780637464fc3d146106cf576101e5565b806323b872dd11610187578063485cc95511610156578063485cc9551461053757806354cf2aeb1461059b5780635909c0d5146105bf5780635a3d5493146105dd576101e5565b806323b872dd1461045657806330adf81f146104da578063313ce567146104f85780633644e51514610519576101e5565b80630902f1ac116101c35780630902f1ac1461034e578063095ea7b3146103a05780630dfe16811461040457806318160ddd14610438576101e5565b8063022c0d9f146101ea57806303c150b01461029757806306fdde03146102cb575b600080fd5b6102956004803603608081101561020057600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561025157600080fd5b82018360208201111561026357600080fd5b8035906020019184600183028401116401000000008311171561028557600080fd5b9091929391929390505050610aa4565b005b6102c9600480360360208110156102ad57600080fd5b81019080803563ffffffff16906020019092919050505061126c565b005b6102d361144d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103135780820151818401526020810190506102f8565b50505050905090810190601f1680156103405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610356611486565b60405180846dffffffffffffffffffffffffffff168152602001836dffffffffffffffffffffffffffff1681526020018263ffffffff168152602001935050505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114e3565b60405180821515815260200191505060405180910390f35b61040c6114fa565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610440611520565b6040518082815260200191505060405180910390f35b6104c26004803603606081101561046c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611526565b60405180821515815260200191505060405180910390f35b6104e26116f1565b6040518082815260200191505060405180910390f35b610500611718565b604051808260ff16815260200191505060405180910390f35b61052161171d565b6040518082815260200191505060405180910390f35b6105996004803603604081101561054d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611723565b005b6105a361186c565b604051808263ffffffff16815260200191505060405180910390f35b6105c7611882565b6040518082815260200191505060405180910390f35b6105e5611888565b6040518082815260200191505060405180910390f35b61060361188e565b604051808263ffffffff16815260200191505060405180910390f35b6106616004803603602081101561063557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118a4565b6040518082815260200191505060405180910390f35b6106b96004803603602081101561068d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fd2565b6040518082815260200191505060405180910390f35b6106d7611fea565b6040518082815260200191505060405180910390f35b61072f6004803603602081101561070357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ff0565b6040518082815260200191505060405180910390f35b6107876004803603602081101561075b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612008565b604051808381526020018281526020019250505060405180910390f35b6107ac61259d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107ec5780820151818401526020810190506107d1565b50505050905090810190601f1680156108195780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108736004803603604081101561083d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125d6565b60405180821515815260200191505060405180910390f35b6108936125ed565b6040518082815260200191505060405180910390f35b6108eb600480360360208110156108bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125f3565b005b6108f56128a2565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109296128c8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109ec600480360360e081101561096b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff16906020019092919080359060200190929190803590602001909291905050506128ee565b005b610a2060048036036020811015610a0457600080fd5b81019080803563ffffffff169060200190929190505050612c03565b005b610a8460048036036040811015610a3857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612de4565b6040518082815260200191505060405180910390f35b610aa2612e09565b005b6001600d5414610b1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5374656c6c615377617056323a204c4f434b454400000000000000000000000081525060200191505060405180910390fd5b6000600d819055506000851180610b335750600084115b610b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613f3f6028913960400191505060405180910390fd5b600080610b93611486565b5091509150816dffffffffffffffffffffffffffff1687108015610bc65750806dffffffffffffffffffffffffffff1686105b610c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613f676024913960400191505060405180910390fd5b6000806000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614158015610cd457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610d46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f5374656c6c615377617056323a20494e56414c49445f544f000000000000000081525060200191505060405180910390fd5b60008b1115610d5b57610d5a828a8d61305d565b5b60008a1115610d7057610d6f818a8c61305d565b5b6000888890501115610e42578873ffffffffffffffffffffffffffffffffffffffff1663d3f7e539338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610e2957600080fd5b505af1158015610e3d573d6000803e3d6000fd5b505050505b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610ea957600080fd5b505afa158015610ebd573d6000803e3d6000fd5b505050506040513d6020811015610ed357600080fd5b810190808051906020019092919050505093508073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610f4d57600080fd5b505afa158015610f61573d6000803e3d6000fd5b505050506040513d6020811015610f7757600080fd5b810190808051906020019092919050505092505050600089856dffffffffffffffffffffffffffff16038311610fae576000610fc4565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610fe8576000610ffe565b89856dffffffffffffffffffffffffffff160383035b9050600082118061100f5750600081115b611064576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613fb66027913960400191505060405180910390fd5b6000600c60009054906101000a900463ffffffff1663ffffffff16905060006110bc611099838661329490919063ffffffff16565b6110ae6127108961329490919063ffffffff16565b61332990919063ffffffff16565b905060006110f96110d6848661329490919063ffffffff16565b6110eb6127108961329490919063ffffffff16565b61332990919063ffffffff16565b90506111446305f5e1006111368a6dffffffffffffffffffffffffffff168c6dffffffffffffffffffffffffffff1661329490919063ffffffff16565b61329490919063ffffffff16565b611157828461329490919063ffffffff16565b10156111cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f5374656c6c615377617056323a204b000000000000000000000000000000000081525060200191505060405180910390fd5b5050506111da848488886133ac565b8873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82284848f8f6040518085815260200184815260200183815260200182815260200194505050505060405180910390a35050505050506001600d819055505050505050565b60008163ffffffff16116112e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f5374656c6c615377617056323a206c6f776572207468656e203000000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f5374656c6c615377617056323a20464f5242494444454e00000000000000000081525060200191505060405180910390fd5b6101f48163ffffffff161115611429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5374656c6c615377617056323a20464f5242494444454e5f464545000000000081525060200191505060405180910390fd5b80600c60046101000a81548163ffffffff021916908363ffffffff16021790555050565b6040518060400160405280600981526020017f5374656c6c61204c50000000000000000000000000000000000000000000000081525081565b6000806000600860009054906101000a90046dffffffffffffffffffffffffffff1692506008600e9054906101000a90046dffffffffffffffffffffffffffff1691506008601c9054906101000a900463ffffffff169050909192565b60006114f033848461370a565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146116db5761165a82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332990919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6116e68484846137f5565b600190509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b81565b601281565b60035481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f5374656c6c615377617056323a20464f5242494444454e00000000000000000081525060200191505060405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600c60009054906101000a900463ffffffff1681565b60095481565b600a5481565b600c60049054906101000a900463ffffffff1681565b60006001600d541461191e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5374656c6c615377617056323a204c4f434b454400000000000000000000000081525060200191505060405180910390fd5b6000600d81905550600080611931611486565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156119c157600080fd5b505afa1580156119d5573d6000803e3d6000fd5b505050506040513d60208110156119eb57600080fd5b810190808051906020019092919050505090506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611a8957600080fd5b505afa158015611a9d573d6000803e3d6000fd5b505050506040513d6020811015611ab357600080fd5b810190808051906020019092919050505090506000611aeb856dffffffffffffffffffffffffffff168461332990919063ffffffff16565b90506000611b12856dffffffffffffffffffffffffffff168461332990919063ffffffff16565b90506000611b208787613989565b90506000805490506000811415611e1d576000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637cd07e476040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9b57600080fd5b505afa158015611baf573d6000803e3d6000fd5b505050506040513d6020811015611bc557600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415611d36578073ffffffffffffffffffffffffffffffffffffffff166340dc0e376040518163ffffffff1660e01b815260040160206040518083038186803b158015611c5257600080fd5b505afa158015611c66573d6000803e3d6000fd5b505050506040513d6020811015611c7c57600080fd5b8101908080519060200190929190505050995060008a118015611cbf57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a14155b611d31576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4261642064657369726564206c6971756964697479000000000000000000000081525060200191505060405180910390fd5b611e17565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611dd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4d757374206e6f742068617665206d69677261746f720000000000000000000081525060200191505060405180910390fd5b611e076103e8611df9611df4878961329490919063ffffffff16565b613b81565b61332990919063ffffffff16565b9950611e1660006103e8613be3565b5b50611e80565b611e7d886dffffffffffffffffffffffffffff16611e44838761329490919063ffffffff16565b81611e4b57fe5b04886dffffffffffffffffffffffffffff16611e70848761329490919063ffffffff16565b81611e7757fe5b04613cfd565b98505b60008911611ed9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613fdd602b913960400191505060405180910390fd5b611ee38a8a613be3565b611eef86868a8a6133ac565b8115611f6757611f606008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1661329490919063ffffffff16565b600b819055505b3373ffffffffffffffffffffffffffffffffffffffff167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f8585604051808381526020018281526020019250505060405180910390a250505050505050506001600d81905550919050565b60016020528060005260406000206000915090505481565b600b5481565b60046020528060005260406000206000915090505481565b6000806001600d5414612083576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5374656c6c615377617056323a204c4f434b454400000000000000000000000081525060200191505060405180910390fd5b6000600d81905550600080612096611486565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561215257600080fd5b505afa158015612166573d6000803e3d6000fd5b505050506040513d602081101561217c57600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156121f857600080fd5b505afa15801561220c573d6000803e3d6000fd5b505050506040513d602081101561222257600080fd5b810190808051906020019092919050505090506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006122858888613989565b9050600080549050806122a1868561329490919063ffffffff16565b816122a857fe5b049a50806122bf858561329490919063ffffffff16565b816122c657fe5b04995060008b1180156122d9575060008a115b61232e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613f8b602b913960400191505060405180910390fd5b6123383084613d16565b612343878d8d61305d565b61234e868d8c61305d565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156123b557600080fd5b505afa1580156123c9573d6000803e3d6000fd5b505050506040513d60208110156123df57600080fd5b810190808051906020019092919050505094508573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561245957600080fd5b505afa15801561246d573d6000803e3d6000fd5b505050506040513d602081101561248357600080fd5b810190808051906020019092919050505093506124a285858b8b6133ac565b811561251a576125136008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff1661329490919063ffffffff16565b600b819055505b8b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968d8d604051808381526020018281526020019250505060405180910390a35050505050505050506001600d81905550915091565b6040518060400160405280600981526020017f5354454c4c41204c50000000000000000000000000000000000000000000000081525081565b60006125e33384846137f5565b6001905092915050565b6103e881565b6001600d541461266b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5374656c6c615377617056323a204c4f434b454400000000000000000000000081525060200191505060405180910390fd5b6000600d819055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506127ab82846127a6600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561275d57600080fd5b505afa158015612771573d6000803e3d6000fd5b505050506040513d602081101561278757600080fd5b810190808051906020019092919050505061332990919063ffffffff16565b61305d565b61289581846128906008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561284757600080fd5b505afa15801561285b573d6000803e3d6000fd5b505050506040513d602081101561287157600080fd5b810190808051906020019092919050505061332990919063ffffffff16565b61305d565b50506001600d8190555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b42841015612964576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f5374656c6c615377617056323a2045585049524544000000000000000000000081525060200191505060405180910390fd5b60006003547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b898989600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558a604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612b07573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015612b7b57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612bed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5374656c6c615377617056323a20494e56414c49445f5349474e41545552450081525060200191505060405180910390fd5b612bf889898961370a565b505050505050505050565b60008163ffffffff1611612c7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f5374656c6c615377617056323a206c6f776572207468656e203000000000000081525060200191505060405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612d42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f5374656c6c615377617056323a20464f5242494444454e00000000000000000081525060200191505060405180910390fd5b6103e88163ffffffff161115612dc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f5374656c6c615377617056323a20464f5242494444454e5f464545000000000081525060200191505060405180910390fd5b80600c60006101000a81548163ffffffff021916908363ffffffff16021790555050565b6002602052816000526040600020602052806000526040600020600091509150505481565b6001600d5414612e81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5374656c6c615377617056323a204c4f434b454400000000000000000000000081525060200191505060405180910390fd5b6000600d81905550613053600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612f1557600080fd5b505afa158015612f29573d6000803e3d6000fd5b505050506040513d6020811015612f3f57600080fd5b8101908080519060200190929190505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612fd957600080fd5b505afa158015612fed573d6000803e3d6000fd5b505050506040513d602081101561300357600080fd5b8101908080519060200190929190505050600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff166133ac565b6001600d81905550565b600060608473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106131745780518252602082019150602081019050602083039250613151565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146131d6576040519150601f19603f3d011682016040523d82523d6000602084013e6131db565b606091505b509150915081801561321b575060008151148061321a575080806020019051602081101561320857600080fd5b81019080805190602001909291905050505b5b61328d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f5374656c6c615377617056323a205452414e534645525f4641494c454400000081525060200191505060405180910390fd5b5050505050565b6000808214806132b157508282838502925082816132ae57fe5b04145b613323576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6d756c2d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b60008282840391508111156133a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f64732d6d6174682d7375622d756e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff16841115801561341c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff168311155b61348e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f5374656c6c615377617056323a204f564552464c4f570000000000000000000081525060200191505060405180910390fd5b6000640100000000428161349e57fe5b06905060006008601c9054906101000a900463ffffffff168203905060008163ffffffff161180156134e157506000846dffffffffffffffffffffffffffff1614155b80156134fe57506000836dffffffffffffffffffffffffffff1614155b156135e0578063ffffffff166135438561351786613e30565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16613e5b90919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16026009600082825401925050819055508063ffffffff166135b18461358587613e30565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16613e5b90919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602600a600082825401925050819055505b85600860006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550846008600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550816008601c6101000a81548163ffffffff021916908363ffffffff1602179055507f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff1660405180836dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050505050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b61384781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332990919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138dc81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ebb90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156139f457600080fd5b505afa158015613a08573d6000803e3d6000fd5b505050506040513d6020811015613a1e57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141591506000600b5490508215613b675760008114613b62576000613ab6613ab1866dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff1661329490919063ffffffff16565b613b81565b90506000613ac383613b81565b905080821115613b5f576000613af6613ae5838561332990919063ffffffff16565b60005461329490919063ffffffff16565b90506000613b3783613b29600c60049054906101000a900463ffffffff1663ffffffff168761329490919063ffffffff16565b613ebb90919063ffffffff16565b90506000818381613b4457fe5b0490506000811115613b5b57613b5a8782613be3565b5b5050505b50505b613b79565b60008114613b78576000600b819055505b5b505092915050565b60006003821115613bd0578190506000600160028481613b9d57fe5b040190505b81811015613bca57809150600281828581613bb957fe5b040181613bc257fe5b049050613ba2565b50613bde565b60008214613bdd57600190505b5b919050565b613bf881600054613ebb90919063ffffffff16565b600081905550613c5081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ebb90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000818310613d0c5781613d0e565b825b905092915050565b613d6881600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461332990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dc08160005461332990919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006e010000000000000000000000000000826dffffffffffffffffffffffffffff16029050919050565b6000816dffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681613eb257fe5b04905092915050565b6000828284019150811015613f38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6164642d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b9291505056fe5374656c6c615377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e545374656c6c615377617056323a20494e53554646494349454e545f4c49515549444954595374656c6c615377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e45445374656c6c615377617056323a20494e53554646494349454e545f494e5055545f414d4f554e545374656c6c615377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a264697066735822122064dc4327e2006ee77e4a3acc162bce7df613ab59d31906adbc43de2dc2e04c7164736f6c634300060c0033

Deployed ByteCode Sourcemap

7714:11006:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16104:1983;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10438:273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1628:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8862:231;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3679:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8024:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1768:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3981:301;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2060:108;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1726:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1917:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9925:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8559:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8375:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8414;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8614:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12706:1665;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1799:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8453:17;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2175:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14483:1509;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1676:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3834:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7845:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18136:354;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7995:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8052:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4290:680;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10146:280;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1847:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18539:178;;;:::i;:::-;;16104:1983;8762:1;8750:8;;:13;8742:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8810:1;8799:8;:12;;;;16231:1:::1;16218:10;:14;:32;;;;16249:1;16236:10;:14;16218:32;16210:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16307:17;16326::::0;16348:13:::1;:11;:13::i;:::-;16306:55;;;;;16408:9;16395:22;;:10;:22;:48;;;;;16434:9;16421:22;;:10;:22;16395:48;16387:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16497:13;16521::::0;16611:15:::1;16629:6;;;;;;;;;;;16611:24;;16646:15;16664:6;;;;;;;;;;;16646:24;;16695:7;16689:13;;:2;:13;;;;:30;;;;;16712:7;16706:13;;:2;:13;;;;16689:30;16681:67;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;16776:1;16763:10;:14;16759:58;;;16779:38;16793:7;16802:2;16806:10;16779:13;:38::i;:::-;16759:58;16879:1;16866:10;:14;16862:58;;;16882:38;16896:7;16905:2;16909:10;16882:13;:38::i;:::-;16862:58;16983:1;16969:4;;:11;;:15;16965:103;;;17006:2;16986:40;;;17027:10;17039;17051;17063:4;;16986:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16965:103;17107:7;17090:35;;;17134:4;17090:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;17079:61;;17179:7;17162:35;;;17206:4;17162:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;17151:61;;8822:1;;17234:14;17274:10;17262:9;:22;;;17251:8;:33;:75;;17325:1;17251:75;;;17311:10;17299:9;:22;;;17287:8;:35;17251:75;17234:92;;17337:14;17377:10;17365:9;:22;;;17354:8;:33;:75;;17428:1;17354:75;;;17414:10;17402:9;:22;;;17390:8;:35;17354:75;17337:92;;17460:1;17448:9;:13;:30;;;;17477:1;17465:9;:13;17448:30;17440:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17608:13;17624:7;;;;;;;;;;;17608:23;;;;17642:21;17666:48;17690:23;17704:8;17690:9;:13;;:23;;;;:::i;:::-;17666:19;17679:5;17666:8;:12;;:19;;;;:::i;:::-;:23;;:48;;;;:::i;:::-;17642:72;;17725:21;17749:48;17773:23;17787:8;17773:9;:13;;:23;;;;:::i;:::-;17749:19;17762:5;17749:8;:12;;:19;;;;:::i;:::-;:23;;:48;;;;:::i;:::-;17725:72;;17860:44;17895:8;17860:30;17880:9;17860:30;;17865:9;17860:15;;:19;;:30;;;;:::i;:::-;:34;;:44;;;;:::i;:::-;17818:38;17839:16;17818;:20;;:38;;;;:::i;:::-;:86;;17810:114;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;8822:1;;;17948:49;17956:8;17966;17976:9;17987;17948:7;:49::i;:::-;18076:2;18013:66;;18018:10;18013:66;;;18030:9;18041;18052:10;18064;18013:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8822:1;;;;;;8845::::0;8834:8;:12;;;;16104:1983;;;;;:::o;10438:273::-;10511:1;10501:7;:11;;;10493:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10576:7;;;;;;;;;;;10562:21;;:10;:21;;;10554:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10641:3;10630:7;:14;;;;10622:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10696:7;10687:6;;:16;;;;;;;;;;;;;;;;;;10438:273;:::o;1628:41::-;;;;;;;;;;;;;;;;;;;:::o;8862:231::-;8906:17;8925;8944:26;8995:8;;;;;;;;;;;8983:20;;9026:8;;;;;;;;;;;9014:20;;9067:18;;;;;;;;;;;9045:40;;8862:231;;;:::o;3679:147::-;3743:4;3760:36;3769:10;3781:7;3790:5;3760:8;:36::i;:::-;3814:4;3807:11;;3679:147;;;;:::o;8024:21::-;;;;;;;;;;;;;:::o;1768:24::-;;;;:::o;3981:301::-;4059:4;4116:2;4080:9;:15;4090:4;4080:15;;;;;;;;;;;;;;;:27;4096:10;4080:27;;;;;;;;;;;;;;;;:39;4076:140;;4166:38;4198:5;4166:9;:15;4176:4;4166:15;;;;;;;;;;;;;;;:27;4182:10;4166:27;;;;;;;;;;;;;;;;:31;;:38;;;;:::i;:::-;4136:9;:15;4146:4;4136:15;;;;;;;;;;;;;;;:27;4152:10;4136:27;;;;;;;;;;;;;;;:68;;;;4076:140;4226:26;4236:4;4242:2;4246:5;4226:9;:26::i;:::-;4270:4;4263:11;;3981:301;;;;;:::o;2060:108::-;2102:66;2060:108;;;:::o;1726:35::-;1759:2;1726:35;:::o;1917:31::-;;;;:::o;9925:213::-;10021:7;;;;;;;;;;;10007:21;;:10;:21;;;9999:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10096:7;10087:6;;:16;;;;;;;;;;;;;;;;;;10123:7;10114:6;;:16;;;;;;;;;;;;;;;;;;9925:213;;:::o;8559:26::-;;;;;;;;;;;;;:::o;8375:32::-;;;;:::o;8414:::-;;;;:::o;8614:24::-;;;;;;;;;;;;;:::o;12706:1665::-;12755:14;8762:1;8750:8;;:13;8742:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8810:1;8799:8;:12;;;;12783:17:::1;12802::::0;12824:13:::1;:11;:13::i;:::-;12782:55;;;;;12863:13;12896:6;;;;;;;;;;;12879:34;;;12922:4;12879:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;12863:65;;12939:13;12972:6;;;;;;;;;;;12955:34;;;12998:4;12955:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;12939:65;;13015:12;13030:23;13043:9;13030:23;;:8;:12;;:23;;;;:::i;:::-;13015:38;;13064:12;13079:23;13092:9;13079:23;;:8;:12;;:23;;;;:::i;:::-;13064:38;;13115:10;13128:30;13137:9;13148;13128:8;:30::i;:::-;13115:43;;13169:17;13189:11:::0;::::1;13169:31;;13309:1;13293:12;:17;13289:754;;;13327:16;13367:7;;;;;;;;;;;13346:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;13327:59;;13419:8;13405:22;;:10;:22;;;13401:500;;;13470:8;13460:36;;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;13448:50;;13537:1;13525:9;:13;:41;;;;;13563:2;13542:9;:24;;13525:41;13517:75;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;13401:500;;;13661:1;13641:22;;:8;:22;;;13633:57;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;13721:54;7886:5;13721:31;13731:20;13743:7;13731;:11;;:20;;;;:::i;:::-;13721:9;:31::i;:::-;:35;;:54;;;;:::i;:::-;13709:66;;13794:36;13808:1;7886:5;13794;:36::i;:::-;13401:500;13289:754;;;;13945:86;13982:9;13954:37;;:25;13966:12;13954:7;:11;;:25;;;;:::i;:::-;:37;;;;;;14021:9;13993:37;;:25;14005:12;13993:7;:11;;:25;;;;:::i;:::-;:37;;;;;;13945:8;:86::i;:::-;13933:98;;13289:754;14073:1;14061:9;:13;14053:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14133:20;14139:2;14143:9;14133:5;:20::i;:::-;14166:49;14174:8;14184;14194:9;14205;14166:7;:49::i;:::-;14230:5;14226:47;;;14245:28;14264:8;;;;;;;;;;;14245:28;;14250:8;;;;;;;;;;;14245:14;;:18;;:28;;;;:::i;:::-;14237:5;:36;;;;14226:47;14334:10;14329:34;;;14346:7;14355;14329:34;;;;;;;;;;;;;;;;;;;;;;;;8822:1;;;;;;;;8845::::0;8834:8;:12;;;;12706:1665;;;:::o;1799:41::-;;;;;;;;;;;;;;;;;:::o;8453:17::-;;;;:::o;2175:38::-;;;;;;;;;;;;;;;;;:::o;14483:1509::-;14532:12;14546;8762:1;8750:8;;:13;8742:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8810:1;8799:8;:12;;;;14572:17:::1;14591::::0;14613:13:::1;:11;:13::i;:::-;14571:55;;;;;14652:15;14670:6;;;;;;;;;;;14652:24;;14733:15;14751:6;;;;;;;;;;;14733:24;;14814:13;14847:7;14830:35;;;14874:4;14830:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;14814:66;;14891:13;14924:7;14907:35;;;14951:4;14907:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;14891:66;;14968:14;14985:9;:24;15003:4;14985:24;;;;;;;;;;;;;;;;14968:41;;15022:10;15035:30;15044:9;15055;15035:8;:30::i;:::-;15022:43;;15076:17;15096:11:::0;::::1;15076:31;;15232:12;15206:23;15220:8;15206:9;:13;;:23;;;;:::i;:::-;:38;;;;;;15196:48;;15339:12;15313:23;15327:8;15313:9;:13;;:23;;;;:::i;:::-;:38;;;;;;15303:48;;15428:1;15418:7;:11;:26;;;;;15443:1;15433:7;:11;15418:26;15410:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15503:31;15517:4;15524:9;15503:5;:31::i;:::-;15545:35;15559:7;15568:2;15572:7;15545:13;:35::i;:::-;15591;15605:7;15614:2;15618:7;15591:13;:35::i;:::-;15665:7;15648:35;;;15692:4;15648:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;15637:61;;15737:7;15720:35;;;15764:4;15720:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;15709:61;;15783:49;15791:8;15801;15811:9;15822;15783:7;:49::i;:::-;15847:5;15843:47;;;15862:28;15881:8;;;;;;;;;;;15862:28;;15867:8;;;;;;;;;;;15862:14;;:18;;:28;;;;:::i;:::-;15854:5;:36;;;;15843:47;15981:2;15946:38;;15951:10;15946:38;;;15963:7;15972;15946:38;;;;;;;;;;;;;;;;;;;;;;;;8822:1;;;;;;;;;8845::::0;8834:8;:12;;;;14483:1509;;;:::o;1676:43::-;;;;;;;;;;;;;;;;;;;:::o;3834:139::-;3894:4;3911:32;3921:10;3933:2;3937:5;3911:9;:32::i;:::-;3961:4;3954:11;;3834:139;;;;:::o;7845:46::-;7886:5;7845:46;:::o;18136:354::-;8762:1;8750:8;;:13;8742:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8810:1;8799:8;:12;;;;18187:15:::1;18205:6;;;;;;;;;;;18187:24;;18237:15;18255:6;;;;;;;;;;;18237:24;;18287:92;18301:7;18310:2;18314:64;18369:8;;;;;;;;;;;18314:64;;18331:7;18314:35;;;18358:4;18314:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;:54;;:64;;;;:::i;:::-;18287:13;:92::i;:::-;18390;18404:7;18413:2;18417:64;18472:8;;;;;;;;;;;18417:64;;18434:7;18417:35;;;18461:4;18417:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;:54;;:64;;;;:::i;:::-;18390:13;:92::i;:::-;8822:1;;8845::::0;8834:8;:12;;;;18136:354;:::o;7995:22::-;;;;;;;;;;;;;:::o;8052:21::-;;;;;;;;;;;;;:::o;4290:680::-;4436:15;4424:8;:27;;4416:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4488:14;4593:16;;2102:66;4649:15;;4666:5;4673:7;4682:5;4689:6;:13;4696:5;4689:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;4706:8;4638:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4628:88;;;;;;4529:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4505:237;;;;;;4488:254;;4753:24;4780:26;4790:6;4798:1;4801;4804;4780:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4753:53;;4853:1;4825:30;;:16;:30;;;;:59;;;;;4879:5;4859:25;;:16;:25;;;4825:59;4817:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4931:31;4940:5;4947:7;4956:5;4931:8;:31::i;:::-;4290:680;;;;;;;;;:::o;10146:280::-;10222:1;10211:8;:12;;;10203:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10287:7;;;;;;;;;;;10273:21;;:10;:21;;;10265:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10353:4;10341:8;:16;;;;10333:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10410:8;10400:7;;:18;;;;;;;;;;;;;;;;;;10146:280;:::o;1847:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18539:178::-;8762:1;8750:8;;:13;8742:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8810:1;8799:8;:12;;;;18580:129:::1;18605:6;;;;;;;;;;;18588:34;;;18631:4;18588:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;18656:6;;;;;;;;;;;18639:34;;;18682:4;18639:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;18690:8;;;;;;;;;;;18700;;;;;;;;;;;18580:7;:129::i;:::-;8845:1:::0;8834:8;:12;;;;18539:178::o;9101:290::-;9183:12;9197:17;9218:5;:10;;7950:34;;;;;;;;;;;;;;;;;7940:45;;;;;;9262:2;9266:5;9229:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9218:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9182:91;;;;9292:7;:57;;;;;9319:1;9304:4;:11;:16;:44;;;;9335:4;9324:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9304:44;9292:57;9284:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9101:290;;;;;:::o;1322:142::-;1374:6;1406:1;1401;:6;:30;;;;1430:1;1425;1420;1416;:5;1412:9;;;1411:15;;;;;;:20;1401:30;1393:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1322:142;;;;:::o;1185:129::-;1237:6;1279:1;1273;1269;:5;1265:9;;;1264:16;;1256:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1185:129;;;;:::o;10796:863::-;10928:2;10908:23;;:8;:23;;:50;;;;;10955:2;10935:23;;:8;:23;;10908:50;10900:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10996:21;11045:5;11027:15;:23;;;;;;10996:55;;11062:18;11100;;;;;;;;;;;11083:14;:35;11062:56;;11170:1;11156:11;:15;;;:33;;;;;11188:1;11175:9;:14;;;;11156:33;:51;;;;;11206:1;11193:9;:14;;;;11156:51;11152:336;;;11362:11;11309:64;;11314:44;11348:9;11314:27;11331:9;11314:16;:27::i;:::-;:33;;;;:44;;;;:::i;:::-;11309:50;;:64;11285:20;;:88;;;;;;;;;;;11465:11;11412:64;;11417:44;11451:9;11417:27;11434:9;11417:16;:27::i;:::-;:33;;;;:44;;;;:::i;:::-;11412:50;;:64;11388:20;;:88;;;;;;;;;;;11152:336;11517:8;11498;;:28;;;;;;;;;;;;;;;;;;11556:8;11537;;:28;;;;;;;;;;;;;;;;;;11597:14;11576:18;;:35;;;;;;;;;;;;;;;;;;11627:24;11632:8;;;;;;;;;;;11642;;;;;;;;;;;11627:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;10796:863;;;;;;:::o;3274:169::-;3383:5;3355:9;:16;3365:5;3355:16;;;;;;;;;;;;;;;:25;3372:7;3355:25;;;;;;;;;;;;;;;:33;;;;3420:7;3404:31;;3413:5;3404:31;;;3429:5;3404:31;;;;;;;;;;;;;;;;;;3274:169;;;:::o;3451:220::-;3545:26;3565:5;3545:9;:15;3555:4;3545:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;3527:9;:15;3537:4;3527:15;;;;;;;;;;;;;;;:44;;;;3598:24;3616:5;3598:9;:13;3608:2;3598:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;3582:9;:13;3592:2;3582:13;;;;;;;;;;;;;;;:40;;;;3653:2;3638:25;;3647:4;3638:25;;;3657:5;3638:25;;;;;;;;;;;;;;;;;;3451:220;;;:::o;11749:845::-;11822:10;11845:13;11882:7;;;;;;;;;;;11861:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11845:53;;11934:1;11917:19;;:5;:19;;;;11909:27;;11947:11;11961:5;;11947:19;;11996:5;11992:595;;;12032:1;12022:6;:11;12018:499;;12054:10;12067:41;12077:30;12097:9;12077:30;;12082:9;12077:15;;:19;;:30;;;;:::i;:::-;12067:9;:41::i;:::-;12054:54;;12127:14;12144:17;12154:6;12144:9;:17::i;:::-;12127:34;;12192:9;12184:5;:17;12180:322;;;12226:14;12243:37;12259:20;12269:9;12259:5;:9;;:20;;;;:::i;:::-;12243:11;;:15;;:37;;;;:::i;:::-;12226:54;;12303:16;12322:32;12344:9;12322:17;12332:6;;;;;;;;;;;12322:17;;:5;:9;;:17;;;;:::i;:::-;:21;;:32;;;;:::i;:::-;12303:51;;12377:14;12406:11;12394:9;:23;;;;;;12377:40;;12456:1;12444:9;:13;12440:42;;;12459:23;12465:5;12472:9;12459:5;:23::i;:::-;12440:42;12180:322;;;;12018:499;;;11992:595;;;12548:1;12538:6;:11;12534:53;;12574:1;12566:5;:9;;;;12534:53;11992:595;11749:845;;;;;;:::o;5344:303::-;5389:6;5416:1;5412;:5;5408:232;;;5438:1;5434:5;;5454:6;5471:1;5467;5463;:5;;;;;;:9;5454:18;;5487:92;5498:1;5494;:5;5487:92;;;5524:1;5520:5;;5562:1;5557;5553;5549;:5;;;;;;:9;5548:15;;;;;;5544:19;;5487:92;;;5408:232;;;;5605:1;5600;:6;5596:44;;5627:1;5623:5;;5596:44;5408:232;5344:303;;;:::o;2848:201::-;2921:22;2937:5;2921:11;;:15;;:22;;;;:::i;:::-;2907:11;:36;;;;2970:24;2988:5;2970:9;:13;2980:2;2970:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;2954:9;:13;2964:2;2954:13;;;;;;;;;;;;;;;:40;;;;3031:2;3010:31;;3027:1;3010:31;;;3035:5;3010:31;;;;;;;;;;;;;;;;;;2848:201;;:::o;5130:96::-;5182:6;5209:1;5205;:5;:13;;5217:1;5205:13;;;5213:1;5205:13;5201:17;;5130:96;;;;:::o;3057:209::-;3136:26;3156:5;3136:9;:15;3146:4;3136:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;3118:9;:15;3128:4;3118:15;;;;;;;;;;;;;;;:44;;;;3187:22;3203:5;3187:11;;:15;;:22;;;;:::i;:::-;3173:11;:36;;;;3248:1;3225:33;;3234:4;3225:33;;;3252:5;3225:33;;;;;;;;;;;;;;;;;;3057:209;;:::o;6003:120::-;6053:9;5948:6;6087:1;6079:10;;:17;6075:21;;6003:120;;;:::o;6194:108::-;6254:9;6292:1;6284:10;;6280:14;;:1;:14;;;;;;;;6276:18;;6194:108;;;;:::o;1049:128::-;1101:6;1143:1;1137;1133;:5;1129:9;;;1128:16;;1120:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1049:128;;;;:::o

Swarm Source

ipfs://64dc4327e2006ee77e4a3acc162bce7df613ab59d31906adbc43de2dc2e04c71
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.