ETH Price: $3,060.13 (+1.19%)
Gas: 2 Gwei

Token

KittyClub (KITTYCLUB🥪)
 

Overview

Max Total Supply

1,000,000,000,000,000 KITTYCLUB🥪

Holders

85

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
27,323,867,993.658544432 KITTYCLUB🥪

Value
$0.00
0x71524e85e7285c6a622867b19ebe8003c104ec49
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
KittyClub

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-14
*/

// $KITTYCLUB🥪 | KittyClub
// Telegram: https://t.me/KittyClubToken
// With thanks and major props to the EverRise team!
// Check them out at everrisecoin.com!

// Fair Launch, no Dev Tokens. 100% LP.
// Snipers will be nuked.

// LP Lock immediately on launch.
// Ownership will be renounced 30 minutes after launch.

// Slippage Recommended: 13%+
// 3% Supply limit per TX for the first 5 minutes.

/*
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▒▓▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▓▒▓█▓▓▓▓▓▓▓▓▒░░░▒▒░▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░▒▒▒░▒░░░░░░░░▒▒▒▒▓▓▒▒▓▓▓▓▓▓███▒░▒▒▒▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░▓▒▒▒▒▒░░░░░░▒▓▒▓▓▓▓▓▓▓▓▓▓█▓██▓░▒▒▒▓▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░▓▒▓▓▓▓░░░░░▒▒▓▓▓▓▓▒▒▓▓▓██▒▒▒▒▒▒▒▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░▓▒▒▒▓▓▒░░▒▒▒▒▒▒▒▒▒▒▓▓▓███▒▓▓▒▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▒▓▓▒▒░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░▒▒▒▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓███▓▒▒▓▒▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▒▒▒░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░▓▒▒▓▒▓▒▓▓▒▒▒▒▒▒▒▒▓▓█▓░▒▒▒▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░▒▓▓▒▓▒▓▓▒▒▒▒▓▓▓▓▓█▓▒▒▒▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░▓▒▓▓▓▒▒▓▓▓▓▓▓▓▓▓▓▓▒░▒▒▒▓▒▒▒▒▒▒▒▓▒▒▒▒▒▒▒▒▒▒▒▒▓▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░▒▒▓▓▓▓▓▓▓▓▓▓▓████▓░▒▒▒▓▒▒▒▒▒▒▒▓███▒▒▒▒▒▒▒▒▒▒██▓▓▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░▒▓▒▓▒▓▒▓▓█▓▓▓████▓▒▒▒▒▓▒▒▒▒▒▒▒▒░▒▒▓▒▒▒▒▒▓█▒▒▒▒▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░
░░░░░░░░░░░▒▒▓▓▓▒▒▓▓▓▓▓▓███▓▒▒▒▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░
░░░░░░░░░▒▒▒▒▓▓▓▓▓▓▓██▓███▓▒▒▒▒▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░
░░░░░░░░░▒▒▒▓▓▓▓▒▒▒▓▓▓██▓▒▒▒▒▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░
░░░░░░░░░░░░░░░▓▓▓▓▒▓█▓▒▒▒▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▒░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░▓▒▒▒▒▓▒▒▒▒▒▒▒▓▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▓▓▒▒▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▓▒▒▒▒▒▒▒▒▒░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░▒▓▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.6;

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;


            bytes32 accountHash
         = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: weiValue}(
            data
        );
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner{
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner)
        public
        virtual
        onlyOwner
    {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }

    function unlock() public virtual {
        require(
            _previousOwner == msg.sender,
            "You don't have permission to unlock"
        );
        require(block.timestamp > _lockTime, "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

// pragma solidity >=0.5.0;

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

    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(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

// pragma solidity >=0.5.0;

interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 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 (uint256);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    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 (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

// pragma solidity >=0.6.2;

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

// pragma solidity >=0.6.2;

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract KittyClub is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    address payable private marketingAddress;
    address private _tradingAgent;
    address public immutable deadAddress =
        0x000000000000000000000000000000000000dEaD;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;

    mapping(address => bool) private _isExcludedFromFee;

    mapping(address => bool) private _isExcluded;
    address[] private _excluded;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1000000000 * 10**6 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "KittyClub";
    string private _symbol = unicode"KITTYCLUB🥪";
    uint8 private _decimals = 9;

    uint256 public _taxFee = 6;
    uint256 private _previousTaxFee = _taxFee;

    uint256 public _liquidityFee = 9;
    uint256 private _previousLiquidityFee = _liquidityFee;

    uint256 public marketingDivisor = 3;
    bool public tradingOpen = false;
    uint256 public _maxTxAmount = 300000000 * 10**6 * 10**9;
    uint256 private minimumTokensBeforeSwap = 200000 * 10**6 * 10**9;
    uint256 private buyBackUpperLimit = 1 * 10**18;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = false;
    bool public buyBackEnabled = true;

    event RewardLiquidityProviders(uint256 tokenAmount);
    event BuyBackEnabledUpdated(bool enabled);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    event SwapETHForTokens(uint256 amountIn, address[] path);

    event SwapTokensForETH(uint256 amountIn, address[] path);

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor(address marketingAddress_, address tradingAgent_) {
        _rOwned[_msgSender()] = _rTotal;
        marketingAddress = payable(marketingAddress_);
        _tradingAgent = tradingAgent_;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_tradingAgent] = true;
        _isExcludedFromFee[address(this)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function openTrading() external onlyOwnerOrTradingAgent() {
        require(!tradingOpen, "trading is already open");
        uint256 contractBalanceEth = address(this).balance;
        // Allow the router to spend contract tokens
        _approve(address(this), address(uniswapV2Router), _tTotal * 2);
        // Add the ETH liquidity
        uniswapV2Router.addLiquidityETH{value: contractBalanceEth}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            _tradingAgent,
            block.timestamp
        );
        // Allow the router to transfer LP tokens
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );

        // Open trading with the right parameters
        tradingOpen = true;
        setSwapAndLiquifyEnabled(true);
    }

    modifier onlyOwnerOrTradingAgent() {
        bool isOwner = msg.sender == owner();
        bool isTradingAgent = msg.sender == _tradingAgent;
        require(isOwner || isTradingAgent, "Caller is not a maintainer");
        _;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(addedValue)
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

    function buyBackUpperLimitAmount() public view returns (uint256) {
        return buyBackUpperLimit;
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(
            !_isExcluded[sender],
            "Excluded addresses cannot call this function"
        );
        (uint256 rAmount, , , , , ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount, , , , , ) = _getValues(tAmount);
            return rAmount;
        } else {
            (, uint256 rTransferAmount, , , , ) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount)
        public
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromReward(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (
            from != owner() &&
            to != owner() &&
            from != address(this) &&
            to != address(this)
        ) {
            require(
                amount <= _maxTxAmount,
                "Transfer amount exceeds the maxTxAmount."
            );
            if (!tradingOpen) {
                if (
                    !(from == address(this) ||
                        to == address(this) ||
                        from == address(owner()) ||
                        to == address(owner()))
                ) {
                    require(tradingOpen, "Trading is not enabled");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinimumTokenBalance = contractTokenBalance >=
            minimumTokensBeforeSwap;

        if (!inSwapAndLiquify && swapAndLiquifyEnabled && to == uniswapV2Pair) {
            if (overMinimumTokenBalance) {
                contractTokenBalance = minimumTokensBeforeSwap;
                swapTokens(contractTokenBalance);
            }
            uint256 balance = address(this).balance;
            if (buyBackEnabled && balance > uint256(1 * 10**18)) {
                if (balance > buyBackUpperLimit) balance = buyBackUpperLimit;

                buyBackTokens(balance.div(100));
            }
        }

        bool takeFee = true;

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokens(uint256 contractTokenBalance) private lockTheSwap {
        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractTokenBalance);
        uint256 transferredBalance = address(this).balance.sub(initialBalance);

        //Send to Marketing address
        transferToAddressETH(
            marketingAddress,
            transferredBalance.div(_liquidityFee).mul(marketingDivisor)
        );
    }

    function buyBackTokens(uint256 amount) private lockTheSwap {
        if (amount > 0) {
            swapETHForTokens(amount);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );

        emit SwapTokensForETH(tokenAmount, path);
    }

    function swapETHForTokens(uint256 amount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);

        // make the swap
        uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: amount
        }(
            0, // accept any amount of Tokens
            path,
            deadAddress, // Burn address
            block.timestamp.add(300)
        );

        emit SwapETHForTokens(amount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tLiquidity,
            _getRate()
        );
        return (
            rAmount,
            rTransferAmount,
            rFee,
            tTransferAmount,
            tFee,
            tLiquidity
        );
    }

    function _getTValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tLiquidity,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _rOwned[_excluded[i]] > rSupply ||
                _tOwned[_excluded[i]] > tSupply
            ) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate = _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }

    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(10**2);
    }

    function calculateLiquidityFee(uint256 _amount)
        private
        view
        returns (uint256)
    {
        return _amount.mul(_liquidityFee).div(10**2);
    }

    function removeAllFee() private {
        if (_taxFee == 0 && _liquidityFee == 0) return;

        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;

        _taxFee = 0;
        _liquidityFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
        _taxFee = taxFee;
    }

    function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() {
        _liquidityFee = liquidityFee;
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
    }

    function setMarketingDivisor(uint256 divisor) external onlyOwner() {
        marketingDivisor = divisor;
    }

    function setNumTokensSellToAddToLiquidity(uint256 _minimumTokensBeforeSwap)
        external
        onlyOwner()
    {
        minimumTokensBeforeSwap = _minimumTokensBeforeSwap;
    }

    function setBuybackUpperLimit(uint256 buyBackLimit) external onlyOwner() {
        buyBackUpperLimit = buyBackLimit * 10**18;
    }

    function setMarketingAddress(address _marketingAddress)
        external
        onlyOwner()
    {
        marketingAddress = payable(_marketingAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setBuyBackEnabled(bool _enabled) public onlyOwner {
        buyBackEnabled = _enabled;
        emit BuyBackEnabledUpdated(_enabled);
    }

    function transferToAddressETH(address payable recipient, uint256 amount)
        private
    {
        recipient.transfer(amount);
    }

    //to recieve ETH from uniswapV2Router when swapping
    receive() external payable {}

    function withdraw() public onlyOwnerOrTradingAgent {
        uint256 contractBalance = address(this).balance;
        address payable ownerWallet = payable(owner());
        bool success = ownerWallet.send(contractBalance);
        require(success, "withdraw failed.");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"marketingAddress_","type":"address"},{"internalType":"address","name":"tradingAgent_","type":"address"}],"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":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"BuyBackEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"RewardLiquidityProviders","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackUpperLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setBuyBackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyBackLimit","type":"uint256"}],"name":"setBuybackUpperLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMarketingDivisor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumTokensBeforeSwap","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e06040526ddead00000000000000000000000060805269d3c21bcecceda1000000600b8190556200003490600019620005cf565b62000042906000196200056c565b600c556040805180820190915260098082526825b4ba3a3ca1b63ab160b91b60209092019182526200007791600e916200044c565b5060408051808201909152600d8082526c25a4aa2a2ca1a62aa1784fd2d560991b6020909201918252620000ae91600f916200044c565b506010805460ff1990811660099081179092556006601181905560125560138290556014919091556003601555601680549091169055693f870857a3e0e3800000601755680ad78ebc5ac6200000601855670de0b6b3a7640000601955601a805462ffff001916620100001790553480156200012957600080fd5b50604051620037fd380380620037fd8339810160408190526200014c9162000534565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c543360009081526005602090815260409182902092909255600380546001600160a01b038681166001600160a01b0319928316179092556004805492861692909116919091178155815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d93849363c45a0155938181019391829003018186803b1580156200021d57600080fd5b505afa15801562000232573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025891906200050f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a157600080fd5b505afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc91906200050f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200032557600080fd5b505af11580156200033a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036091906200050f565b6001600160601b0319606091821b811660c0529082901b1660a052600160086000620003946000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556004549091168152600890925280822080548416600190811790915530835291208054909216179055620003f33390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b546040516200043b91815260200190565b60405180910390a3505050620005f2565b8280546200045a9062000592565b90600052602060002090601f0160209004810192826200047e5760008555620004c9565b82601f106200049957805160ff1916838001178555620004c9565b82800160010185558215620004c9579182015b82811115620004c9578251825591602001919060010190620004ac565b50620004d7929150620004db565b5090565b5b80821115620004d75760008155600101620004dc565b80516001600160a01b03811681146200050a57600080fd5b919050565b6000602082840312156200052257600080fd5b6200052d82620004f2565b9392505050565b600080604083850312156200054857600080fd5b6200055383620004f2565b91506200056360208401620004f2565b90509250929050565b6000828210156200058d57634e487b7160e01b600052601160045260246000fd5b500390565b600181811c90821680620005a757607f821691505b60208210811415620005c957634e487b7160e01b600052602260045260246000fd5b50919050565b600082620005ed57634e487b7160e01b600052601260045260246000fd5b500690565b60805160601c60a05160601c60c05160601c61318562000678600039600081816105840152818161177a0152611e060152600081816103a201528181611627015281816116570152818161174a015281816124e1015281816125a9015281816125e50152818161276a0152612858015260008181610423015261288301526131856000f3fe6080604052600436106102e85760003560e01c80636bc87c3a11610190578063a9059cbb116100dc578063dd46706411610095578063ec28438a1161006f578063ec28438a14610903578063f0f165af14610923578063f2fde38b14610943578063ffb54a991461096357600080fd5b8063dd4670641461087d578063dd62ed3e1461089d578063ea2f0b37146108e357600080fd5b8063a9059cbb146107dd578063b0cb81f1146107fd578063bdc653ef1461081d578063c49b9a8014610832578063c9567bf914610852578063d6b513cf1461086757600080fd5b80638da5cb5b1161014957806395d89b411161012357806395d89b411461077e578063a073d37f14610793578063a457c2d7146107a8578063a69df4b5146107c857600080fd5b80638da5cb5b146107205780638ee88c531461073e578063906e9dd01461075e57600080fd5b80636bc87c3a1461066657806370a082311461067c578063715018a61461069c5780637d1db4a5146106b157806382d2a4bb146106c757806388f82020146106e757600080fd5b8063395093511161024f57806349bd5a5e116102085780635342acb4116101e25780635342acb4146105e5578063557ed1ba1461061e578063602bc62b146106315780636053a0e31461064657600080fd5b806349bd5a5e146105725780634a74bb02146105a657806352390c02146105c557600080fd5b806339509351146104c75780633b124fe7146104e75780633bd5d173146104fd5780633ccfd60b1461051d578063437823ec146105325780634549b0391461055257600080fd5b806323b872dd116102a157806323b872dd146103f157806327c8f8351461041157806329370cc6146104455780632d83811914610465578063313ce567146104855780633685d419146104a757600080fd5b8063061c82d0146102f457806306fdde0314610316578063095ea7b31461034157806313114a9d146103715780631694505e1461039057806318160ddd146103dc57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061031461030f366004612de8565b61097d565b005b34801561032257600080fd5b5061032b6109b5565b6040516103389190612ecd565b60405180910390f35b34801561034d57600080fd5b5061036161035c366004612d82565b610a47565b6040519015158152602001610338565b34801561037d57600080fd5b50600d545b604051908152602001610338565b34801561039c57600080fd5b506103c47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610338565b3480156103e857600080fd5b50600b54610382565b3480156103fd57600080fd5b5061036161040c366004612d41565b610a5e565b34801561041d57600080fd5b506103c47f000000000000000000000000000000000000000000000000000000000000000081565b34801561045157600080fd5b50610314610460366004612dae565b610ac7565b34801561047157600080fd5b50610382610480366004612de8565b610b47565b34801561049157600080fd5b5060105460405160ff9091168152602001610338565b3480156104b357600080fd5b506103146104c2366004612cce565b610bcb565b3480156104d357600080fd5b506103616104e2366004612d82565b610d82565b3480156104f357600080fd5b5061038260115481565b34801561050957600080fd5b50610314610518366004612de8565b610db8565b34801561052957600080fd5b50610314610ea2565b34801561053e57600080fd5b5061031461054d366004612cce565b610f9b565b34801561055e57600080fd5b5061038261056d366004612e01565b610fe9565b34801561057e57600080fd5b506103c47f000000000000000000000000000000000000000000000000000000000000000081565b3480156105b257600080fd5b50601a5461036190610100900460ff1681565b3480156105d157600080fd5b506103146105e0366004612cce565b611076565b3480156105f157600080fd5b50610361610600366004612cce565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561062a57600080fd5b5042610382565b34801561063d57600080fd5b50600254610382565b34801561065257600080fd5b50601a546103619062010000900460ff1681565b34801561067257600080fd5b5061038260135481565b34801561068857600080fd5b50610382610697366004612cce565b6111c9565b3480156106a857600080fd5b50610314611228565b3480156106bd57600080fd5b5061038260175481565b3480156106d357600080fd5b506103146106e2366004612de8565b61128a565b3480156106f357600080fd5b50610361610702366004612cce565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561072c57600080fd5b506000546001600160a01b03166103c4565b34801561074a57600080fd5b50610314610759366004612de8565b6112cc565b34801561076a57600080fd5b50610314610779366004612cce565b6112fb565b34801561078a57600080fd5b5061032b611347565b34801561079f57600080fd5b50601854610382565b3480156107b457600080fd5b506103616107c3366004612d82565b611356565b3480156107d457600080fd5b506103146113a5565b3480156107e957600080fd5b506103616107f8366004612d82565b6114ab565b34801561080957600080fd5b50610314610818366004612de8565b6114b8565b34801561082957600080fd5b50601954610382565b34801561083e57600080fd5b5061031461084d366004612dae565b6114e7565b34801561085e57600080fd5b5061031461155a565b34801561087357600080fd5b5061038260155481565b34801561088957600080fd5b50610314610898366004612de8565b611816565b3480156108a957600080fd5b506103826108b8366004612d08565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156108ef57600080fd5b506103146108fe366004612cce565b61189b565b34801561090f57600080fd5b5061031461091e366004612de8565b6118e6565b34801561092f57600080fd5b5061031461093e366004612de8565b611915565b34801561094f57600080fd5b5061031461095e366004612cce565b611944565b34801561096f57600080fd5b506016546103619060ff1681565b6000546001600160a01b031633146109b05760405162461bcd60e51b81526004016109a790612f22565b60405180910390fd5b601155565b6060600e80546109c490613024565b80601f01602080910402602001604051908101604052809291908181526020018280546109f090613024565b8015610a3d5780601f10610a1257610100808354040283529160200191610a3d565b820191906000526020600020905b815481529060010190602001808311610a2057829003601f168201915b5050505050905090565b6000610a54338484611a1c565b5060015b92915050565b6000610a6b848484611b40565b610abd8433610ab8856040518060600160405280602881526020016130e3602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611efc565b611a1c565b5060019392505050565b6000546001600160a01b03163314610af15760405162461bcd60e51b81526004016109a790612f22565b601a8054821515620100000262ff0000199091161790556040517f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c090610b3c90831515815260200190565b60405180910390a150565b6000600c54821115610bae5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109a7565b6000610bb8611f36565b9050610bc48382611f59565b9392505050565b6000546001600160a01b03163314610bf55760405162461bcd60e51b81526004016109a790612f22565b6001600160a01b03811660009081526009602052604090205460ff16610c5d5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109a7565b60005b600a54811015610d7e57816001600160a01b0316600a8281548110610c8757610c876130a6565b6000918252602090912001546001600160a01b03161415610d6c57600a8054610cb29060019061300d565b81548110610cc257610cc26130a6565b600091825260209091200154600a80546001600160a01b039092169183908110610cee57610cee6130a6565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600682526040808220829055600990925220805460ff19169055600a805480610d4657610d46613090565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d768161305f565b915050610c60565b5050565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610a54918590610ab89086611f9b565b3360008181526009602052604090205460ff1615610e2d5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016109a7565b6000610e3883611ffa565b505050506001600160a01b038416600090815260056020526040902054919250610e6491905082612049565b6001600160a01b038316600090815260056020526040902055600c54610e8a9082612049565b600c55600d54610e9a9084611f9b565b600d55505050565b600054600454336001600160a01b0392831681149291909116148180610ec55750805b610f115760405162461bcd60e51b815260206004820152601a60248201527f43616c6c6572206973206e6f742061206d61696e7461696e657200000000000060448201526064016109a7565b476000610f266000546001600160a01b031690565b90506000816001600160a01b03166108fc849081150290604051600060405180830381858888f19350505050905080610f945760405162461bcd60e51b815260206004820152601060248201526f3bb4ba34323930bb903330b4b632b21760811b60448201526064016109a7565b5050505050565b6000546001600160a01b03163314610fc55760405162461bcd60e51b81526004016109a790612f22565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000600b5483111561103d5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109a7565b8161105c57600061104d84611ffa565b50939550610a58945050505050565b600061106784611ffa565b50929550610a58945050505050565b6000546001600160a01b031633146110a05760405162461bcd60e51b81526004016109a790612f22565b6001600160a01b03811660009081526009602052604090205460ff16156111095760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109a7565b6001600160a01b03811660009081526005602052604090205415611163576001600160a01b03811660009081526005602052604090205461114990610b47565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6001600160a01b03811660009081526009602052604081205460ff161561120657506001600160a01b031660009081526006602052604090205490565b6001600160a01b038216600090815260056020526040902054610a5890610b47565b6000546001600160a01b031633146112525760405162461bcd60e51b81526004016109a790612f22565b600080546040516001600160a01b039091169060008051602061310b833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112b45760405162461bcd60e51b81526004016109a790612f22565b6112c681670de0b6b3a7640000612fee565b60195550565b6000546001600160a01b031633146112f65760405162461bcd60e51b81526004016109a790612f22565b601355565b6000546001600160a01b031633146113255760405162461bcd60e51b81526004016109a790612f22565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6060600f80546109c490613024565b6000610a543384610ab88560405180606001604052806025815260200161312b602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190611efc565b6001546001600160a01b0316331461140b5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016109a7565b600254421161145c5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016109a7565b600154600080546040516001600160a01b03938416939091169160008051602061310b83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610a54338484611b40565b6000546001600160a01b031633146114e25760405162461bcd60e51b81526004016109a790612f22565b601555565b6000546001600160a01b031633146115115760405162461bcd60e51b81526004016109a790612f22565b601a80548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610b3c90831515815260200190565b600054600454336001600160a01b039283168114929190911614818061157d5750805b6115c95760405162461bcd60e51b815260206004820152601a60248201527f43616c6c6572206973206e6f742061206d61696e7461696e657200000000000060448201526064016109a7565b60165460ff161561161c5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016109a7565b6000479050611655307f0000000000000000000000000000000000000000000000000000000000000000600b546002610ab89190612fee565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719823061168f306111c9565b6004805460405160e087901b6001600160e01b03191681526001600160a01b039485169281019290925260248201929092526000604482018190526064820152911660848201524260a482015260c4016060604051808303818588803b1580156116f857600080fd5b505af115801561170c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117319190612e26565b505060405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260001960248301527f000000000000000000000000000000000000000000000000000000000000000016915063095ea7b390604401602060405180830381600087803b1580156117bf57600080fd5b505af11580156117d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f79190612dcb565b506016805460ff19166001908117909155611811906114e7565b505050565b6000546001600160a01b031633146118405760405162461bcd60e51b81526004016109a790612f22565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561186f8142612fb4565b600255600080546040516001600160a01b039091169060008051602061310b833981519152908390a350565b6000546001600160a01b031633146118c55760405162461bcd60e51b81526004016109a790612f22565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146119105760405162461bcd60e51b81526004016109a790612f22565b601755565b6000546001600160a01b0316331461193f5760405162461bcd60e51b81526004016109a790612f22565b601855565b6000546001600160a01b0316331461196e5760405162461bcd60e51b81526004016109a790612f22565b6001600160a01b0381166119d35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109a7565b600080546040516001600160a01b038085169392169160008051602061310b83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611a7e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109a7565b6001600160a01b038216611adf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109a7565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ba45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109a7565b6001600160a01b038216611c065760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109a7565b60008111611c685760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109a7565b6000546001600160a01b03848116911614801590611c9457506000546001600160a01b03838116911614155b8015611ca957506001600160a01b0383163014155b8015611cbe57506001600160a01b0382163014155b15611dce57601754811115611d265760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109a7565b60165460ff16611dce576001600160a01b038316301480611d4f57506001600160a01b03821630145b80611d6757506000546001600160a01b038481169116145b80611d7f57506000546001600160a01b038381169116145b611dce5760165460ff16611dce5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016109a7565b6000611dd9306111c9565b601854601a549192508210159060ff16158015611dfd5750601a54610100900460ff165b8015611e3a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316145b15611e9d578015611e53576018549150611e538261208b565b601a54479062010000900460ff168015611e745750670de0b6b3a764000081115b15611e9b57601954811115611e8857506019545b611e9b611e96826064611f59565b6120f4565b505b6001600160a01b03851660009081526008602052604090205460019060ff1680611edf57506001600160a01b03851660009081526008602052604090205460ff165b15611ee8575060005b611ef48686868461211d565b505050505050565b60008184841115611f205760405162461bcd60e51b81526004016109a79190612ecd565b506000611f2d848661300d565b95945050505050565b6000806000611f43612248565b9092509050611f528282611f59565b9250505090565b6000610bc483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123ca565b600080611fa88385612fb4565b905083811015610bc45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109a7565b60008060008060008060008060006120118a6123f8565b925092509250600080600061202f8d868661202a611f36565b61243a565b919f909e50909c50959a5093985091965092945050505050565b6000610bc483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611efc565b601a805460ff19166001179055476120a28261248a565b60006120ae4783612049565b6003546015546013549293506120e5926001600160a01b03909216916120e091906120da908690611f59565b90612692565b612711565b5050601a805460ff1916905550565b601a805460ff1916600117905580156121105761211081612747565b50601a805460ff19169055565b8061212a5761212a612930565b6001600160a01b03841660009081526009602052604090205460ff16801561216b57506001600160a01b03831660009081526009602052604090205460ff16155b156121805761217b84848461295e565b61222c565b6001600160a01b03841660009081526009602052604090205460ff161580156121c157506001600160a01b03831660009081526009602052604090205460ff165b156121d15761217b848484612a84565b6001600160a01b03841660009081526009602052604090205460ff16801561221157506001600160a01b03831660009081526009602052604090205460ff165b156122215761217b848484612b2d565b61222c848484612ba0565b8061224257612242601254601155601454601355565b50505050565b600c54600b546000918291825b600a5481101561239a578260056000600a8481548110612277576122776130a6565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806122e257508160066000600a84815481106122bb576122bb6130a6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156122f857600c54600b54945094505050509091565b61233e60056000600a8481548110612312576123126130a6565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612049565b925061238660066000600a848154811061235a5761235a6130a6565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612049565b9150806123928161305f565b915050612255565b50600b54600c546123aa91611f59565b8210156123c157600c54600b549350935050509091565b90939092509050565b600081836123eb5760405162461bcd60e51b81526004016109a79190612ecd565b506000611f2d8486612fcc565b60008060008061240785612be4565b9050600061241486612c06565b9050600061242c826124268986612049565b90612049565b979296509094509092505050565b60008080806124498886612692565b905060006124578887612692565b905060006124658888612692565b90506000612477826124268686612049565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124bf576124bf6130a6565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561253857600080fd5b505afa15801561254c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125709190612ceb565b81600181518110612583576125836130a6565b60200260200101906001600160a01b031690816001600160a01b0316815250506125ce307f000000000000000000000000000000000000000000000000000000000000000084611a1c565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612623908590600090869030904290600401612f78565b600060405180830381600087803b15801561263d57600080fd5b505af1158015612651573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612686929190612f57565b60405180910390a15050565b6000826126a157506000610a58565b60006126ad8385612fee565b9050826126ba8583612fcc565b14610bc45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109a7565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611811573d6000803e3d6000fd5b6040805160028082526060820183526000926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156127c157600080fd5b505afa1580156127d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f99190612ceb565b8160008151811061280c5761280c6130a6565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612840576128406130a6565b6001600160a01b0392831660209182029290920101527f00000000000000000000000000000000000000000000000000000000000000001663b6f9de95836000847f00000000000000000000000000000000000000000000000000000000000000006128ae4261012c611f9b565b6040518663ffffffff1660e01b81526004016128cd9493929190612e98565b6000604051808303818588803b1580156128e657600080fd5b505af11580156128fa573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a96248282604051612686929190612f57565b6011541580156129405750601354155b1561294757565b601180546012556013805460145560009182905555565b60008060008060008061297087611ffa565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506129a29088612049565b6001600160a01b038a166000908152600660209081526040808320939093556005905220546129d19087612049565b6001600160a01b03808b1660009081526005602052604080822093909355908a1681522054612a009086611f9b565b6001600160a01b038916600090815260056020526040902055612a2281612c22565b612a2c8483612caa565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612a7191815260200190565b60405180910390a3505050505050505050565b600080600080600080612a9687611ffa565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612ac89087612049565b6001600160a01b03808b16600090815260056020908152604080832094909455918b16815260069091522054612afe9084611f9b565b6001600160a01b038916600090815260066020908152604080832093909355600590522054612a009086611f9b565b600080600080600080612b3f87611ffa565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150612b719088612049565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054612ac89087612049565b600080600080600080612bb287611ffa565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506129d19087612049565b6000610a586064612c006011548561269290919063ffffffff16565b90611f59565b6000610a586064612c006013548561269290919063ffffffff16565b6000612c2c611f36565b90506000612c3a8383612692565b30600090815260056020526040902054909150612c579082611f9b565b3060009081526005602090815260408083209390935560099052205460ff16156118115730600090815260066020526040902054612c959084611f9b565b30600090815260066020526040902055505050565b600c54612cb79083612049565b600c55600d54612cc79082611f9b565b600d555050565b600060208284031215612ce057600080fd5b8135610bc4816130bc565b600060208284031215612cfd57600080fd5b8151610bc4816130bc565b60008060408385031215612d1b57600080fd5b8235612d26816130bc565b91506020830135612d36816130bc565b809150509250929050565b600080600060608486031215612d5657600080fd5b8335612d61816130bc565b92506020840135612d71816130bc565b929592945050506040919091013590565b60008060408385031215612d9557600080fd5b8235612da0816130bc565b946020939093013593505050565b600060208284031215612dc057600080fd5b8135610bc4816130d4565b600060208284031215612ddd57600080fd5b8151610bc4816130d4565b600060208284031215612dfa57600080fd5b5035919050565b60008060408385031215612e1457600080fd5b823591506020830135612d36816130d4565b600080600060608486031215612e3b57600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612e8d5781516001600160a01b031687529582019590820190600101612e68565b509495945050505050565b848152608060208201526000612eb16080830186612e54565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b81811015612efa57858101830151858201604001528201612ede565b81811115612f0c576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612f706040830184612e54565b949350505050565b85815284602082015260a060408201526000612f9760a0830186612e54565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612fc757612fc761307a565b500190565b600082612fe957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156130085761300861307a565b500290565b60008282101561301f5761301f61307a565b500390565b600181811c9082168061303857607f821691505b6020821081141561305957634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156130735761307361307a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146130d157600080fd5b50565b80151581146130d157600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122097b5fda52c45d70963f308b3480b6323faa12260acab57fba4f70c19c61b1baa64736f6c6343000806003300000000000000000000000067a143fc9cfc8795e6fa0b6f415897e0e8529c3d0000000000000000000000003612650f4f12f49a666ed9ecb7e985073ea33f0d

Deployed Bytecode

0x6080604052600436106102e85760003560e01c80636bc87c3a11610190578063a9059cbb116100dc578063dd46706411610095578063ec28438a1161006f578063ec28438a14610903578063f0f165af14610923578063f2fde38b14610943578063ffb54a991461096357600080fd5b8063dd4670641461087d578063dd62ed3e1461089d578063ea2f0b37146108e357600080fd5b8063a9059cbb146107dd578063b0cb81f1146107fd578063bdc653ef1461081d578063c49b9a8014610832578063c9567bf914610852578063d6b513cf1461086757600080fd5b80638da5cb5b1161014957806395d89b411161012357806395d89b411461077e578063a073d37f14610793578063a457c2d7146107a8578063a69df4b5146107c857600080fd5b80638da5cb5b146107205780638ee88c531461073e578063906e9dd01461075e57600080fd5b80636bc87c3a1461066657806370a082311461067c578063715018a61461069c5780637d1db4a5146106b157806382d2a4bb146106c757806388f82020146106e757600080fd5b8063395093511161024f57806349bd5a5e116102085780635342acb4116101e25780635342acb4146105e5578063557ed1ba1461061e578063602bc62b146106315780636053a0e31461064657600080fd5b806349bd5a5e146105725780634a74bb02146105a657806352390c02146105c557600080fd5b806339509351146104c75780633b124fe7146104e75780633bd5d173146104fd5780633ccfd60b1461051d578063437823ec146105325780634549b0391461055257600080fd5b806323b872dd116102a157806323b872dd146103f157806327c8f8351461041157806329370cc6146104455780632d83811914610465578063313ce567146104855780633685d419146104a757600080fd5b8063061c82d0146102f457806306fdde0314610316578063095ea7b31461034157806313114a9d146103715780631694505e1461039057806318160ddd146103dc57600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061031461030f366004612de8565b61097d565b005b34801561032257600080fd5b5061032b6109b5565b6040516103389190612ecd565b60405180910390f35b34801561034d57600080fd5b5061036161035c366004612d82565b610a47565b6040519015158152602001610338565b34801561037d57600080fd5b50600d545b604051908152602001610338565b34801561039c57600080fd5b506103c47f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610338565b3480156103e857600080fd5b50600b54610382565b3480156103fd57600080fd5b5061036161040c366004612d41565b610a5e565b34801561041d57600080fd5b506103c47f000000000000000000000000000000000000000000000000000000000000dead81565b34801561045157600080fd5b50610314610460366004612dae565b610ac7565b34801561047157600080fd5b50610382610480366004612de8565b610b47565b34801561049157600080fd5b5060105460405160ff9091168152602001610338565b3480156104b357600080fd5b506103146104c2366004612cce565b610bcb565b3480156104d357600080fd5b506103616104e2366004612d82565b610d82565b3480156104f357600080fd5b5061038260115481565b34801561050957600080fd5b50610314610518366004612de8565b610db8565b34801561052957600080fd5b50610314610ea2565b34801561053e57600080fd5b5061031461054d366004612cce565b610f9b565b34801561055e57600080fd5b5061038261056d366004612e01565b610fe9565b34801561057e57600080fd5b506103c47f00000000000000000000000073a625dae492f530624cdb05897d38d39cdd182381565b3480156105b257600080fd5b50601a5461036190610100900460ff1681565b3480156105d157600080fd5b506103146105e0366004612cce565b611076565b3480156105f157600080fd5b50610361610600366004612cce565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561062a57600080fd5b5042610382565b34801561063d57600080fd5b50600254610382565b34801561065257600080fd5b50601a546103619062010000900460ff1681565b34801561067257600080fd5b5061038260135481565b34801561068857600080fd5b50610382610697366004612cce565b6111c9565b3480156106a857600080fd5b50610314611228565b3480156106bd57600080fd5b5061038260175481565b3480156106d357600080fd5b506103146106e2366004612de8565b61128a565b3480156106f357600080fd5b50610361610702366004612cce565b6001600160a01b031660009081526009602052604090205460ff1690565b34801561072c57600080fd5b506000546001600160a01b03166103c4565b34801561074a57600080fd5b50610314610759366004612de8565b6112cc565b34801561076a57600080fd5b50610314610779366004612cce565b6112fb565b34801561078a57600080fd5b5061032b611347565b34801561079f57600080fd5b50601854610382565b3480156107b457600080fd5b506103616107c3366004612d82565b611356565b3480156107d457600080fd5b506103146113a5565b3480156107e957600080fd5b506103616107f8366004612d82565b6114ab565b34801561080957600080fd5b50610314610818366004612de8565b6114b8565b34801561082957600080fd5b50601954610382565b34801561083e57600080fd5b5061031461084d366004612dae565b6114e7565b34801561085e57600080fd5b5061031461155a565b34801561087357600080fd5b5061038260155481565b34801561088957600080fd5b50610314610898366004612de8565b611816565b3480156108a957600080fd5b506103826108b8366004612d08565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156108ef57600080fd5b506103146108fe366004612cce565b61189b565b34801561090f57600080fd5b5061031461091e366004612de8565b6118e6565b34801561092f57600080fd5b5061031461093e366004612de8565b611915565b34801561094f57600080fd5b5061031461095e366004612cce565b611944565b34801561096f57600080fd5b506016546103619060ff1681565b6000546001600160a01b031633146109b05760405162461bcd60e51b81526004016109a790612f22565b60405180910390fd5b601155565b6060600e80546109c490613024565b80601f01602080910402602001604051908101604052809291908181526020018280546109f090613024565b8015610a3d5780601f10610a1257610100808354040283529160200191610a3d565b820191906000526020600020905b815481529060010190602001808311610a2057829003601f168201915b5050505050905090565b6000610a54338484611a1c565b5060015b92915050565b6000610a6b848484611b40565b610abd8433610ab8856040518060600160405280602881526020016130e3602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611efc565b611a1c565b5060019392505050565b6000546001600160a01b03163314610af15760405162461bcd60e51b81526004016109a790612f22565b601a8054821515620100000262ff0000199091161790556040517f3794234fa370c9f3b948dda3e3040530785b2ef1eb27dda3ffde478f4e2643c090610b3c90831515815260200190565b60405180910390a150565b6000600c54821115610bae5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016109a7565b6000610bb8611f36565b9050610bc48382611f59565b9392505050565b6000546001600160a01b03163314610bf55760405162461bcd60e51b81526004016109a790612f22565b6001600160a01b03811660009081526009602052604090205460ff16610c5d5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109a7565b60005b600a54811015610d7e57816001600160a01b0316600a8281548110610c8757610c876130a6565b6000918252602090912001546001600160a01b03161415610d6c57600a8054610cb29060019061300d565b81548110610cc257610cc26130a6565b600091825260209091200154600a80546001600160a01b039092169183908110610cee57610cee6130a6565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600682526040808220829055600990925220805460ff19169055600a805480610d4657610d46613090565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610d768161305f565b915050610c60565b5050565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610a54918590610ab89086611f9b565b3360008181526009602052604090205460ff1615610e2d5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016109a7565b6000610e3883611ffa565b505050506001600160a01b038416600090815260056020526040902054919250610e6491905082612049565b6001600160a01b038316600090815260056020526040902055600c54610e8a9082612049565b600c55600d54610e9a9084611f9b565b600d55505050565b600054600454336001600160a01b0392831681149291909116148180610ec55750805b610f115760405162461bcd60e51b815260206004820152601a60248201527f43616c6c6572206973206e6f742061206d61696e7461696e657200000000000060448201526064016109a7565b476000610f266000546001600160a01b031690565b90506000816001600160a01b03166108fc849081150290604051600060405180830381858888f19350505050905080610f945760405162461bcd60e51b815260206004820152601060248201526f3bb4ba34323930bb903330b4b632b21760811b60448201526064016109a7565b5050505050565b6000546001600160a01b03163314610fc55760405162461bcd60e51b81526004016109a790612f22565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000600b5483111561103d5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109a7565b8161105c57600061104d84611ffa565b50939550610a58945050505050565b600061106784611ffa565b50929550610a58945050505050565b6000546001600160a01b031633146110a05760405162461bcd60e51b81526004016109a790612f22565b6001600160a01b03811660009081526009602052604090205460ff16156111095760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109a7565b6001600160a01b03811660009081526005602052604090205415611163576001600160a01b03811660009081526005602052604090205461114990610b47565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600a805491820181559091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319169091179055565b6001600160a01b03811660009081526009602052604081205460ff161561120657506001600160a01b031660009081526006602052604090205490565b6001600160a01b038216600090815260056020526040902054610a5890610b47565b6000546001600160a01b031633146112525760405162461bcd60e51b81526004016109a790612f22565b600080546040516001600160a01b039091169060008051602061310b833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112b45760405162461bcd60e51b81526004016109a790612f22565b6112c681670de0b6b3a7640000612fee565b60195550565b6000546001600160a01b031633146112f65760405162461bcd60e51b81526004016109a790612f22565b601355565b6000546001600160a01b031633146113255760405162461bcd60e51b81526004016109a790612f22565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6060600f80546109c490613024565b6000610a543384610ab88560405180606001604052806025815260200161312b602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190611efc565b6001546001600160a01b0316331461140b5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b60648201526084016109a7565b600254421161145c5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c203720646179730060448201526064016109a7565b600154600080546040516001600160a01b03938416939091169160008051602061310b83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610a54338484611b40565b6000546001600160a01b031633146114e25760405162461bcd60e51b81526004016109a790612f22565b601555565b6000546001600160a01b031633146115115760405162461bcd60e51b81526004016109a790612f22565b601a80548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990610b3c90831515815260200190565b600054600454336001600160a01b039283168114929190911614818061157d5750805b6115c95760405162461bcd60e51b815260206004820152601a60248201527f43616c6c6572206973206e6f742061206d61696e7461696e657200000000000060448201526064016109a7565b60165460ff161561161c5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016109a7565b6000479050611655307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d600b546002610ab89190612fee565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719823061168f306111c9565b6004805460405160e087901b6001600160e01b03191681526001600160a01b039485169281019290925260248201929092526000604482018190526064820152911660848201524260a482015260c4016060604051808303818588803b1580156116f857600080fd5b505af115801561170c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117319190612e26565b505060405163095ea7b360e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8116600483015260001960248301527f00000000000000000000000073a625dae492f530624cdb05897d38d39cdd182316915063095ea7b390604401602060405180830381600087803b1580156117bf57600080fd5b505af11580156117d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f79190612dcb565b506016805460ff19166001908117909155611811906114e7565b505050565b6000546001600160a01b031633146118405760405162461bcd60e51b81526004016109a790612f22565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561186f8142612fb4565b600255600080546040516001600160a01b039091169060008051602061310b833981519152908390a350565b6000546001600160a01b031633146118c55760405162461bcd60e51b81526004016109a790612f22565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6000546001600160a01b031633146119105760405162461bcd60e51b81526004016109a790612f22565b601755565b6000546001600160a01b0316331461193f5760405162461bcd60e51b81526004016109a790612f22565b601855565b6000546001600160a01b0316331461196e5760405162461bcd60e51b81526004016109a790612f22565b6001600160a01b0381166119d35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109a7565b600080546040516001600160a01b038085169392169160008051602061310b83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611a7e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109a7565b6001600160a01b038216611adf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109a7565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ba45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109a7565b6001600160a01b038216611c065760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109a7565b60008111611c685760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109a7565b6000546001600160a01b03848116911614801590611c9457506000546001600160a01b03838116911614155b8015611ca957506001600160a01b0383163014155b8015611cbe57506001600160a01b0382163014155b15611dce57601754811115611d265760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109a7565b60165460ff16611dce576001600160a01b038316301480611d4f57506001600160a01b03821630145b80611d6757506000546001600160a01b038481169116145b80611d7f57506000546001600160a01b038381169116145b611dce5760165460ff16611dce5760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81a5cc81b9bdd08195b98589b195960521b60448201526064016109a7565b6000611dd9306111c9565b601854601a549192508210159060ff16158015611dfd5750601a54610100900460ff165b8015611e3a57507f00000000000000000000000073a625dae492f530624cdb05897d38d39cdd18236001600160a01b0316846001600160a01b0316145b15611e9d578015611e53576018549150611e538261208b565b601a54479062010000900460ff168015611e745750670de0b6b3a764000081115b15611e9b57601954811115611e8857506019545b611e9b611e96826064611f59565b6120f4565b505b6001600160a01b03851660009081526008602052604090205460019060ff1680611edf57506001600160a01b03851660009081526008602052604090205460ff165b15611ee8575060005b611ef48686868461211d565b505050505050565b60008184841115611f205760405162461bcd60e51b81526004016109a79190612ecd565b506000611f2d848661300d565b95945050505050565b6000806000611f43612248565b9092509050611f528282611f59565b9250505090565b6000610bc483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123ca565b600080611fa88385612fb4565b905083811015610bc45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109a7565b60008060008060008060008060006120118a6123f8565b925092509250600080600061202f8d868661202a611f36565b61243a565b919f909e50909c50959a5093985091965092945050505050565b6000610bc483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611efc565b601a805460ff19166001179055476120a28261248a565b60006120ae4783612049565b6003546015546013549293506120e5926001600160a01b03909216916120e091906120da908690611f59565b90612692565b612711565b5050601a805460ff1916905550565b601a805460ff1916600117905580156121105761211081612747565b50601a805460ff19169055565b8061212a5761212a612930565b6001600160a01b03841660009081526009602052604090205460ff16801561216b57506001600160a01b03831660009081526009602052604090205460ff16155b156121805761217b84848461295e565b61222c565b6001600160a01b03841660009081526009602052604090205460ff161580156121c157506001600160a01b03831660009081526009602052604090205460ff165b156121d15761217b848484612a84565b6001600160a01b03841660009081526009602052604090205460ff16801561221157506001600160a01b03831660009081526009602052604090205460ff165b156122215761217b848484612b2d565b61222c848484612ba0565b8061224257612242601254601155601454601355565b50505050565b600c54600b546000918291825b600a5481101561239a578260056000600a8481548110612277576122776130a6565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806122e257508160066000600a84815481106122bb576122bb6130a6565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156122f857600c54600b54945094505050509091565b61233e60056000600a8481548110612312576123126130a6565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612049565b925061238660066000600a848154811061235a5761235a6130a6565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612049565b9150806123928161305f565b915050612255565b50600b54600c546123aa91611f59565b8210156123c157600c54600b549350935050509091565b90939092509050565b600081836123eb5760405162461bcd60e51b81526004016109a79190612ecd565b506000611f2d8486612fcc565b60008060008061240785612be4565b9050600061241486612c06565b9050600061242c826124268986612049565b90612049565b979296509094509092505050565b60008080806124498886612692565b905060006124578887612692565b905060006124658888612692565b90506000612477826124268686612049565b939b939a50919850919650505050505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124bf576124bf6130a6565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561253857600080fd5b505afa15801561254c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125709190612ceb565b81600181518110612583576125836130a6565b60200260200101906001600160a01b031690816001600160a01b0316815250506125ce307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611a1c565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612623908590600090869030904290600401612f78565b600060405180830381600087803b15801561263d57600080fd5b505af1158015612651573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612686929190612f57565b60405180910390a15050565b6000826126a157506000610a58565b60006126ad8385612fee565b9050826126ba8583612fcc565b14610bc45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109a7565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015611811573d6000803e3d6000fd5b6040805160028082526060820183526000926020830190803683370190505090507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156127c157600080fd5b505afa1580156127d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f99190612ceb565b8160008151811061280c5761280c6130a6565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612840576128406130a6565b6001600160a01b0392831660209182029290920101527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1663b6f9de95836000847f000000000000000000000000000000000000000000000000000000000000dead6128ae4261012c611f9b565b6040518663ffffffff1660e01b81526004016128cd9493929190612e98565b6000604051808303818588803b1580156128e657600080fd5b505af11580156128fa573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a96248282604051612686929190612f57565b6011541580156129405750601354155b1561294757565b601180546012556013805460145560009182905555565b60008060008060008061297087611ffa565b6001600160a01b038f16600090815260066020526040902054959b509399509197509550935091506129a29088612049565b6001600160a01b038a166000908152600660209081526040808320939093556005905220546129d19087612049565b6001600160a01b03808b1660009081526005602052604080822093909355908a1681522054612a009086611f9b565b6001600160a01b038916600090815260056020526040902055612a2281612c22565b612a2c8483612caa565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612a7191815260200190565b60405180910390a3505050505050505050565b600080600080600080612a9687611ffa565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612ac89087612049565b6001600160a01b03808b16600090815260056020908152604080832094909455918b16815260069091522054612afe9084611f9b565b6001600160a01b038916600090815260066020908152604080832093909355600590522054612a009086611f9b565b600080600080600080612b3f87611ffa565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150612b719088612049565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054612ac89087612049565b600080600080600080612bb287611ffa565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506129d19087612049565b6000610a586064612c006011548561269290919063ffffffff16565b90611f59565b6000610a586064612c006013548561269290919063ffffffff16565b6000612c2c611f36565b90506000612c3a8383612692565b30600090815260056020526040902054909150612c579082611f9b565b3060009081526005602090815260408083209390935560099052205460ff16156118115730600090815260066020526040902054612c959084611f9b565b30600090815260066020526040902055505050565b600c54612cb79083612049565b600c55600d54612cc79082611f9b565b600d555050565b600060208284031215612ce057600080fd5b8135610bc4816130bc565b600060208284031215612cfd57600080fd5b8151610bc4816130bc565b60008060408385031215612d1b57600080fd5b8235612d26816130bc565b91506020830135612d36816130bc565b809150509250929050565b600080600060608486031215612d5657600080fd5b8335612d61816130bc565b92506020840135612d71816130bc565b929592945050506040919091013590565b60008060408385031215612d9557600080fd5b8235612da0816130bc565b946020939093013593505050565b600060208284031215612dc057600080fd5b8135610bc4816130d4565b600060208284031215612ddd57600080fd5b8151610bc4816130d4565b600060208284031215612dfa57600080fd5b5035919050565b60008060408385031215612e1457600080fd5b823591506020830135612d36816130d4565b600080600060608486031215612e3b57600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015612e8d5781516001600160a01b031687529582019590820190600101612e68565b509495945050505050565b848152608060208201526000612eb16080830186612e54565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b81811015612efa57858101830151858201604001528201612ede565b81811115612f0c576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612f706040830184612e54565b949350505050565b85815284602082015260a060408201526000612f9760a0830186612e54565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612fc757612fc761307a565b500190565b600082612fe957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156130085761300861307a565b500290565b60008282101561301f5761301f61307a565b500390565b600181811c9082168061303857607f821691505b6020821081141561305957634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156130735761307361307a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146130d157600080fd5b50565b80151581146130d157600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122097b5fda52c45d70963f308b3480b6323faa12260acab57fba4f70c19c61b1baa64736f6c63430008060033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000067a143fc9cfc8795e6fa0b6f415897e0e8529c3d0000000000000000000000003612650f4f12f49a666ed9ecb7e985073ea33f0d

-----Decoded View---------------
Arg [0] : marketingAddress_ (address): 0x67A143fc9cfc8795E6fa0b6f415897E0e8529c3d
Arg [1] : tradingAgent_ (address): 0x3612650F4f12f49A666Ed9ECb7E985073ea33F0d

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000067a143fc9cfc8795e6fa0b6f415897e0e8529c3d
Arg [1] : 0000000000000000000000003612650f4f12f49a666ed9ecb7e985073ea33f0d


Deployed Bytecode Sourcemap

29933:23208:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51294:98;;;;;;;;;;-1:-1:-1;51294:98:0;;;;;:::i;:::-;;:::i;:::-;;33980:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34965:193;;;;;;;;;;-1:-1:-1;34965:193:0;;;;;:::i;:::-;;:::i;:::-;;;4732:14:1;;4725:22;4707:41;;4695:2;4680:18;34965:193:0;4662:92:1;36464:87:0;;;;;;;;;;-1:-1:-1;36533:10:0;;36464:87;;;13927:25:1;;;13915:2;13900:18;36464:87:0;13882:76:1;31339:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3632:32:1;;;3614:51;;3602:2;3587:18;31339:51:0;3569:102:1;34257:95:0;;;;;;;;;;-1:-1:-1;34337:7:0;;34257:95;;35166:446;;;;;;;;;;-1:-1:-1;35166:446:0;;;;;:::i;:::-;;:::i;30137:90::-;;;;;;;;;;;;;;;52458:150;;;;;;;;;;-1:-1:-1;52458:150:0;;;;;:::i;:::-;;:::i;37717:322::-;;;;;;;;;;-1:-1:-1;37717:322:0;;;;;:::i;:::-;;:::i;34166:83::-;;;;;;;;;;-1:-1:-1;34232:9:0;;34166:83;;34232:9;;;;15029:36:1;;15017:2;15002:18;34166:83:0;14984:87:1;38389:479:0;;;;;;;;;;-1:-1:-1;38389:479:0;;;;;:::i;:::-;;:::i;35620:300::-;;;;;;;;;;-1:-1:-1;35620:300:0;;;;;:::i;:::-;;:::i;30887:26::-;;;;;;;;;;;;;;;;36803:419;;;;;;;;;;-1:-1:-1;36803:419:0;;;;;:::i;:::-;;:::i;52858:280::-;;;;;;;;;;;;;:::i;51057:111::-;;;;;;;;;;-1:-1:-1;51057:111:0;;;;;:::i;:::-;;:::i;37230:479::-;;;;;;;;;;-1:-1:-1;37230:479:0;;;;;:::i;:::-;;:::i;31397:38::-;;;;;;;;;;;;;;;31472:41;;;;;;;;;;-1:-1:-1;31472:41:0;;;;;;;;;;;38047:334;;;;;;;;;;-1:-1:-1;38047:334:0;;;;;:::i;:::-;;:::i;50925:124::-;;;;;;;;;;-1:-1:-1;50925:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;51014:27:0;50990:4;51014:27;;;:18;:27;;;;;;;;;50925:124;19932:90;;;;;;;;;;-1:-1:-1;19999:15:0;19932:90;;19834;;;;;;;;;;-1:-1:-1;19907:9:0;;19834:90;;31520:33;;;;;;;;;;-1:-1:-1;31520:33:0;;;;;;;;;;;30970:32;;;;;;;;;;;;;;;;34360:198;;;;;;;;;;-1:-1:-1;34360:198:0;;;;;:::i;:::-;;:::i;19358:147::-;;;;;;;;;;;;;:::i;31151:55::-;;;;;;;;;;;;;;;;51966:133;;;;;;;;;;-1:-1:-1;51966:133:0;;;;;:::i;:::-;;:::i;36336:120::-;;;;;;;;;;-1:-1:-1;36336:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;36428:20:0;36404:4;36428:20;;;:11;:20;;;;;;;;;36336:120;19144:79;;;;;;;;;;-1:-1:-1;19182:7:0;19209:6;-1:-1:-1;;;;;19209:6:0;19144:79;;51400:122;;;;;;;;;;-1:-1:-1;51400:122:0;;;;;:::i;:::-;;:::i;52107:164::-;;;;;;;;;;-1:-1:-1;52107:164:0;;;;;:::i;:::-;;:::i;34071:87::-;;;;;;;;;;;;;:::i;36559:120::-;;;;;;;;;;-1:-1:-1;36648:23:0;;36559:120;;35928:400;;;;;;;;;;-1:-1:-1;35928:400:0;;;;;:::i;:::-;;:::i;20264:341::-;;;;;;;;;;;;;:::i;34566:199::-;;;;;;;;;;-1:-1:-1;34566:199:0;;;;;:::i;:::-;;:::i;51649:112::-;;;;;;;;;;-1:-1:-1;51649:112:0;;;;;:::i;:::-;;:::i;36687:108::-;;;;;;;;;;-1:-1:-1;36770:17:0;;36687:108;;52279:171;;;;;;;;;;-1:-1:-1;52279:171:0;;;;;:::i;:::-;;:::i;32847:880::-;;;;;;;;;;;;;:::i;31071:35::-;;;;;;;;;;;;;;;;20030:226;;;;;;;;;;-1:-1:-1;20030:226:0;;;;;:::i;:::-;;:::i;34773:184::-;;;;;;;;;;-1:-1:-1;34773:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;34922:18:0;;;34890:7;34922:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;34773:184;51176:110;;;;;;;;;;-1:-1:-1;51176:110:0;;;;;:::i;:::-;;:::i;51530:111::-;;;;;;;;;;-1:-1:-1;51530:111:0;;;;;:::i;:::-;;:::i;51769:189::-;;;;;;;;;;-1:-1:-1;51769:189:0;;;;;:::i;:::-;;:::i;19513:313::-;;;;;;;;;;-1:-1:-1;19513:313:0;;;;;:::i;:::-;;:::i;31113:31::-;;;;;;;;;;-1:-1:-1;31113:31:0;;;;;;;;51294:98;19271:6;;-1:-1:-1;;;;;19271:6:0;12865:10;19271:22;19263:67;;;;-1:-1:-1;;;19263:67:0;;;;;;;:::i;:::-;;;;;;;;;51368:7:::1;:16:::0;51294:98::o;33980:83::-;34017:13;34050:5;34043:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33980:83;:::o;34965:193::-;35067:4;35089:39;12865:10;35112:7;35121:6;35089:8;:39::i;:::-;-1:-1:-1;35146:4:0;34965:193;;;;;:::o;35166:446::-;35298:4;35315:36;35325:6;35333:9;35344:6;35315:9;:36::i;:::-;35362:220;35385:6;12865:10;35433:138;35489:6;35433:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35433:19:0;;;;;;:11;:19;;;;;;;;12865:10;35433:33;;;;;;;;;;:37;:138::i;:::-;35362:8;:220::i;:::-;-1:-1:-1;35600:4:0;35166:446;;;;;:::o;52458:150::-;19271:6;;-1:-1:-1;;;;;19271:6:0;12865:10;19271:22;19263:67;;;;-1:-1:-1;;;19263:67:0;;;;;;;:::i;:::-;52528:14:::1;:25:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;52528:25:0;;::::1;;::::0;;52569:31:::1;::::0;::::1;::::0;::::1;::::0;52545:8;4732:14:1;4725:22;4707:41;;4695:2;4680:18;;4662:92;52569:31:0::1;;;;;;;;52458:150:::0;:::o;37717:322::-;37811:7;37869;;37858;:18;;37836:110;;;;-1:-1:-1;;;37836:110:0;;6717:2:1;37836:110:0;;;6699:21:1;6756:2;6736:18;;;6729:30;6795:34;6775:18;;;6768:62;-1:-1:-1;;;6846:18:1;;;6839:40;6896:19;;37836:110:0;6689:232:1;37836:110:0;37957:19;37979:10;:8;:10::i;:::-;37957:32;-1:-1:-1;38007:24:0;:7;37957:32;38007:11;:24::i;:::-;38000:31;37717:322;-1:-1:-1;;;37717:322:0:o;38389:479::-;19271:6;;-1:-1:-1;;;;;19271:6:0;12865:10;19271:22;19263:67;;;;-1:-1:-1;;;19263:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38471:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;38463:60;;;::::0;-1:-1:-1;;;38463:60:0;;8990:2:1;38463:60:0::1;::::0;::::1;8972:21:1::0;9029:2;9009:18;;;9002:30;9068:29;9048:18;;;9041:57;9115:18;;38463:60:0::1;8962:177:1::0;38463:60:0::1;38539:9;38534:327;38558:9;:16:::0;38554:20;::::1;38534:327;;;38616:7;-1:-1:-1::0;;;;;38600:23:0::1;:9;38610:1;38600:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;38600:12:0::1;:23;38596:254;;;38659:9;38669:16:::0;;:20:::1;::::0;38688:1:::1;::::0;38669:20:::1;:::i;:::-;38659:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;38644:9:::1;:12:::0;;-1:-1:-1;;;;;38659:31:0;;::::1;::::0;38654:1;;38644:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;38644:46:0::1;-1:-1:-1::0;;;;;38644:46:0;;::::1;;::::0;;38709:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;38748:11:::1;:20:::0;;;;:28;;-1:-1:-1;;38748:28:0::1;::::0;;38795:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;38795:15:0;;;;;-1:-1:-1;;;;;;38795:15:0::1;::::0;;;;;38534:327:::1;38389:479:::0;:::o;38596:254::-:1;38576:3:::0;::::1;::::0;::::1;:::i;:::-;;;;38534:327;;;;38389:479:::0;:::o;35620:300::-;12865:10;35735:4;35829:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;35829:34:0;;;;;;;;;;35735:4;;35757:133;;35807:7;;35829:50;;35868:10;35829:38;:50::i;36803:419::-;12865:10;36855:14;36918:19;;;:11;:19;;;;;;;;36917:20;36895:114;;;;-1:-1:-1;;;36895:114:0;;13166:2:1;36895:114:0;;;13148:21:1;13205:2;13185:18;;;13178:30;13244:34;13224:18;;;13217:62;-1:-1:-1;;;13295:18:1;;;13288:42;13347:19;;36895:114:0;13138:234:1;36895:114:0;37021:15;37050:19;37061:7;37050:10;:19::i;:::-;-1:-1:-1;;;;;;;;;37098:15:0;;;;;;:7;:15;;;;;;37020:49;;-1:-1:-1;37098:28:0;;:15;-1:-1:-1;37020:49:0;37098:19;:28::i;:::-;-1:-1:-1;;;;;37080:15:0;;;;;;:7;:15;;;;;:46;37147:7;;:20;;37159:7;37147:11;:20::i;:::-;37137:7;:30;37191:10;;:23;;37206:7;37191:14;:23::i;:::-;37178:10;:36;-1:-1:-1;;;36803:419:0:o;52858:280::-;33781:12;19209:6;33864:13;;33796:10;-1:-1:-1;;;;;19209:6:0;;;33796:21;;;33864:13;;;;33850:27;33796:21;;33896:25;;;33907:14;33896:25;33888:64;;;;-1:-1:-1;;;33888:64:0;;12811:2:1;33888:64:0;;;12793:21:1;12850:2;12830:18;;;12823:30;12889:28;12869:18;;;12862:56;12935:18;;33888:64:0;12783:176:1;33888:64:0;52946:21:::1;52920:23;53016:7;19182::::0;19209:6;-1:-1:-1;;;;;19209:6:0;;19144:79;53016:7:::1;52978:46;;53035:12;53050:11;-1:-1:-1::0;;;;;53050:16:0::1;:33;53067:15;53050:33;;;;;;;;;;;;;;;;;;;;;;;53035:48;;53102:7;53094:36;;;::::0;-1:-1:-1;;;53094:36:0;;7938:2:1;53094:36:0::1;::::0;::::1;7920:21:1::0;7977:2;7957:18;;;7950:30;-1:-1:-1;;;7996:18:1;;;7989:46;8052:18;;53094:36:0::1;7910:166:1::0;53094:36:0::1;52909:229;;;33770:202:::0;;52858:280::o;51057:111::-;19271:6;;-1:-1:-1;;;;;19271:6:0;12865:10;19271:22;19263:67;;;;-1:-1:-1;;;19263:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;51126:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;51126:34:0::1;51156:4;51126:34;::::0;;51057:111::o;37230:479::-;37348:7;37392;;37381;:18;;37373:62;;;;-1:-1:-1;;;37373:62:0;;9346:2:1;37373:62:0;;;9328:21:1;9385:2;9365:18;;;9358:30;9424:33;9404:18;;;9397:61;9475:18;;37373:62:0;9318:181:1;37373:62:0;37451:17;37446:256;;37486:15;37515:19;37526:7;37515:10;:19::i;:::-;-1:-1:-1;37485:49:0;;-1:-1:-1;37549:14:0;;-1:-1:-1;;;;;37549:14:0;37446:256;37599:23;37634:19;37645:7;37634:10;:19::i;:::-;-1:-1:-1;37596:57:0;;-1:-1:-1;37668:22:0;;-1:-1:-1;;;;;37668:22:0;38047:334;19271:6;;-1:-1:-1;;;;;19271:6:0;12865:10;19271:22;19263:67;;;;-1:-1:-1;;;19263:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;38130:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;38129:21;38121:61;;;::::0;-1:-1:-1;;;38121:61:0;;8990:2:1;38121:61:0::1;::::0;::::1;8972:21:1::0;9029:2;9009:18;;;9002:30;9068:29;9048:18;;;9041:57;9115:18;;38121:61:0::1;8962:177:1::0;38121:61:0::1;-1:-1:-1::0;;;;;38197:16:0;::::1;38216:1;38197:16:::0;;;:7:::1;:16;::::0;;;;;:20;38193:109:::1;;-1:-1:-1::0;;;;;38273:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;38253:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;38234:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;38193:109:::1;-1:-1:-1::0;;;;;38312:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;38312:27:0::1;38335:4;38312:27:::0;;::::1;::::0;;;38350:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;38350:23:0::1;::::0;;::::1;::::0;;38047:334::o;34360:198::-;-1:-1:-1;;;;;34450:20:0;;34426:7;34450:20;;;:11;:20;;;;;;;;34446:49;;;-1:-1:-1;;;;;;34479:16:0;;;;;:7;:16;;;;;;;34360:198::o;34446:49::-;-1:-1:-1;;;;;34533:16:0;;;;;;:7;:16;;;;;;34513:37;;:19;:37::i;19358:147::-;19271:6;;-1:-1:-1;;;;;19271:6:0;12865:10;19271:22;19263:67;;;;-1:-1:-1;;;19263:67:0;;;;;;;:::i;:::-;19464:1:::1;19448:6:::0;;19427:40:::1;::::0;-1:-1:-1;;;;;19448:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;19427:40:0;19464:1;;19427:40:::1;19495:1;19478:19:::0;;-1:-1:-1;;;;;;19478:19:0::1;::::0;;19358:147::o;51966:133::-;19271:6;;-1:-1:-1;;;;;19271:6:0;12865:10;19271:22;19263:67;;;;-1:-1:-1;;;19263:67:0;;;;;;;:::i;:::-;52070:21:::1;:12:::0;52085:6:::1;52070:21;:::i;:::-;52050:17;:41:::0;-1:-1:-1;51966:133:0:o;51400:122::-;19271:6;;-1:-1:-1;;;;;19271:6:0;12865:10;19271:22;19263:67;;;;-1:-1:-1;;;19263:67:0;;;;;;;:::i;:::-;51486:13:::1;:28:::0;51400:122::o;52107:164::-;19271:6;;-1:-1:-1;;;;;19271:6:0;12865:10;19271:22;19263:67;;;;-1:-1:-1;;;19263:67:0;;;;;;;:::i;:::-;52218:16:::1;:45:::0;;-1:-1:-1;;;;;;52218:45:0::1;-1:-1:-1::0;;;;;52218:45:0;;;::::1;::::0;;;::::1;::::0;;52107:164::o;34071:87::-;34110:13;34143:7;34136:14;;;;;:::i;35928:400::-;36048:4;36070:228;12865:10;36120:7;36142:145;36199:15;36142:145;;;;;;;;;;;;;;;;;12865:10;36142:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;36142:34:0;;;;;;;;;;;;:38;:145::i;20264:341::-;20330:14;;-1:-1:-1;;;;;20330:14:0;20348:10;20330:28;20308:113;;;;-1:-1:-1;;;20308:113:0;;13579:2:1;20308:113:0;;;13561:21:1;13618:2;13598:18;;;13591:30;13657:34;13637:18;;;13630:62;-1:-1:-1;;;13708:18:1;;;13701:33;13751:19;;20308:113:0;13551:225:1;20308:113:0;20458:9;;20440:15;:27;20432:71;;;;-1:-1:-1;;;20432:71:0;;12451:2:1;20432:71:0;;;12433:21:1;12490:2;12470:18;;;12463:30;12529:33;12509:18;;;12502:61;12580:18;;20432:71:0;12423:181:1;20432:71:0;20548:14;;;20540:6;;20519:44;;-1:-1:-1;;;;;20548:14:0;;;;20540:6;;;;-1:-1:-1;;;;;;;;;;;20519:44:0;;20583:14;;;20574:23;;-1:-1:-1;;;;;;20574:23:0;-1:-1:-1;;;;;20583:14:0;;;20574:23;;;;;;20264:341::o;34566:199::-;34671:4;34693:42;12865:10;34717:9;34728:6;34693:9;:42::i;51649:112::-;19271:6;;-1:-1:-1;;;;;19271:6:0;12865:10;19271:22;19263:67;;;;-1:-1:-1;;;19263:67:0;;;;;;;:::i;:::-;51727:16:::1;:26:::0;51649:112::o;52279:171::-;19271:6;;-1:-1:-1;;;;;19271:6:0;12865:10;19271:22;19263:67;;;;-1:-1:-1;;;19263:67:0;;;;;;;:::i;:::-;52356:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;52356:32:0;;::::1;;::::0;;52404:38:::1;::::0;::::1;::::0;::::1;::::0;52380:8;4732:14:1;4725:22;4707:41;;4695:2;4680:18;;4662:92;32847:880:0;33781:12;19209:6;33864:13;;33796:10;-1:-1:-1;;;;;19209:6:0;;;33796:21;;;33864:13;;;;33850:27;33796:21;;33896:25;;;33907:14;33896:25;33888:64;;;;-1:-1:-1;;;33888:64:0;;12811:2:1;33888:64:0;;;12793:21:1;12850:2;12830:18;;;12823:30;12889:28;12869:18;;;12862:56;12935:18;;33888:64:0;12783:176:1;33888:64:0;32925:11:::1;::::0;::::1;;32924:12;32916:48;;;::::0;-1:-1:-1;;;32916:48:0;;12099:2:1;32916:48:0::1;::::0;::::1;12081:21:1::0;12138:2;12118:18;;;12111:30;12177:25;12157:18;;;12150:53;12220:18;;32916:48:0::1;12071:173:1::0;32916:48:0::1;32975:26;33004:21;32975:50;;33090:62;33107:4;33122:15;33140:7;;33150:1;33140:11;;;;:::i;33090:62::-;33197:15;-1:-1:-1::0;;;;;33197:31:0::1;;33236:18;33278:4;33298:24;33316:4;33298:9;:24::i;:::-;33369:13;::::0;;33197:226:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;33197:226:0;;;-1:-1:-1;;;;;4314:15:1;;;33197:226:0;;::::1;4296:34:1::0;;;;4346:18;;;4339:34;;;;33337:1:0::1;4389:18:1::0;;;4382:34;;;4432:18;;;4425:34;33369:13:0;::::1;4475:19:1::0;;;4468:44;33397:15:0::1;4528:19:1::0;;;4521:35;4230:19;;33197:226:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;33485:111:0::1;::::0;-1:-1:-1;;;33485:111:0;;-1:-1:-1;;;;;33537:15:0::1;3868:32:1::0;;33485:111:0::1;::::0;::::1;3850:51:1::0;-1:-1:-1;;3917:18:1;;;3910:34;33492:13:0::1;33485:29;::::0;-1:-1:-1;33485:29:0::1;::::0;3823:18:1;;33485:111:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;33660:11:0::1;:18:::0;;-1:-1:-1;;33660:18:0::1;33674:4;33660:18:::0;;::::1;::::0;;;33689:30:::1;::::0;:24:::1;:30::i;:::-;32905:822;33770:202:::0;;32847:880::o;20030:226::-;19271:6;;-1:-1:-1;;;;;19271:6:0;12865:10;19271:22;19263:67;;;;-1:-1:-1;;;19263:67:0;;;;;;;:::i;:::-;20111:6:::1;::::0;;;20094:23;;-1:-1:-1;;;;;;20094:23:0;;::::1;-1:-1:-1::0;;;;;20111:6:0;::::1;20094:23;::::0;;;20128:19:::1;::::0;;20170:22:::1;20188:4:::0;20170:15:::1;:22;:::i;:::-;20158:9;:34:::0;20245:1:::1;20229:6:::0;;20208:40:::1;::::0;-1:-1:-1;;;;;20229:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;20208:40:0;20245:1;;20208:40:::1;20030:226:::0;:::o;51176:110::-;19271:6;;-1:-1:-1;;;;;19271:6:0;12865:10;19271:22;19263:67;;;;-1:-1:-1;;;19263:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;51243:27:0::1;51273:5;51243:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;51243:35:0::1;::::0;;51176:110::o;51530:111::-;19271:6;;-1:-1:-1;;;;;19271:6:0;12865:10;19271:22;19263:67;;;;-1:-1:-1;;;19263:67:0;;;;;;;:::i;:::-;51607:12:::1;:26:::0;51530:111::o;51769:189::-;19271:6;;-1:-1:-1;;;;;19271:6:0;12865:10;19271:22;19263:67;;;;-1:-1:-1;;;19263:67:0;;;;;;;:::i;:::-;51900:23:::1;:50:::0;51769:189::o;19513:313::-;19271:6;;-1:-1:-1;;;;;19271:6:0;12865:10;19271:22;19263:67;;;;-1:-1:-1;;;19263:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19648:22:0;::::1;19626:110;;;::::0;-1:-1:-1;;;19626:110:0;;7128:2:1;19626:110:0::1;::::0;::::1;7110:21:1::0;7167:2;7147:18;;;7140:30;7206:34;7186:18;;;7179:62;-1:-1:-1;;;7257:18:1;;;7250:36;7303:19;;19626:110:0::1;7100:228:1::0;19626:110:0::1;19773:6;::::0;;19752:38:::1;::::0;-1:-1:-1;;;;;19752:38:0;;::::1;::::0;19773:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;19752:38:0;::::1;19801:6;:17:::0;;-1:-1:-1;;;;;;19801:17:0::1;-1:-1:-1::0;;;;;19801:17:0;;;::::1;::::0;;;::::1;::::0;;19513:313::o;38876:371::-;-1:-1:-1;;;;;39003:19:0;;38995:68;;;;-1:-1:-1;;;38995:68:0;;11694:2:1;38995:68:0;;;11676:21:1;11733:2;11713:18;;;11706:30;11772:34;11752:18;;;11745:62;-1:-1:-1;;;11823:18:1;;;11816:34;11867:19;;38995:68:0;11666:226:1;38995:68:0;-1:-1:-1;;;;;39082:21:0;;39074:68;;;;-1:-1:-1;;;39074:68:0;;7535:2:1;39074:68:0;;;7517:21:1;7574:2;7554:18;;;7547:30;7613:34;7593:18;;;7586:62;-1:-1:-1;;;7664:18:1;;;7657:32;7706:19;;39074:68:0;7507:224:1;39074:68:0;-1:-1:-1;;;;;39155:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;39207:32;;13927:25:1;;;39207:32:0;;13900:18:1;39207:32:0;;;;;;;38876:371;;;:::o;39255:2015::-;-1:-1:-1;;;;;39377:18:0;;39369:68;;;;-1:-1:-1;;;39369:68:0;;11288:2:1;39369:68:0;;;11270:21:1;11327:2;11307:18;;;11300:30;11366:34;11346:18;;;11339:62;-1:-1:-1;;;11417:18:1;;;11410:35;11462:19;;39369:68:0;11260:227:1;39369:68:0;-1:-1:-1;;;;;39456:16:0;;39448:64;;;;-1:-1:-1;;;39448:64:0;;6313:2:1;39448:64:0;;;6295:21:1;6352:2;6332:18;;;6325:30;6391:34;6371:18;;;6364:62;-1:-1:-1;;;6442:18:1;;;6435:33;6485:19;;39448:64:0;6285:225:1;39448:64:0;39540:1;39531:6;:10;39523:64;;;;-1:-1:-1;;;39523:64:0;;10878:2:1;39523:64:0;;;10860:21:1;10917:2;10897:18;;;10890:30;10956:34;10936:18;;;10929:62;-1:-1:-1;;;11007:18:1;;;11000:39;11056:19;;39523:64:0;10850:231:1;39523:64:0;19182:7;19209:6;-1:-1:-1;;;;;39616:15:0;;;19209:6;;39616:15;;;;:45;;-1:-1:-1;19182:7:0;19209:6;-1:-1:-1;;;;;39648:13:0;;;19209:6;;39648:13;;39616:45;:83;;;;-1:-1:-1;;;;;;39678:21:0;;39694:4;39678:21;;39616:83;:119;;;;-1:-1:-1;;;;;;39716:19:0;;39730:4;39716:19;;39616:119;39598:677;;;39798:12;;39788:6;:22;;39762:124;;;;-1:-1:-1;;;39762:124:0;;9706:2:1;39762:124:0;;;9688:21:1;9745:2;9725:18;;;9718:30;9784:34;9764:18;;;9757:62;-1:-1:-1;;;9835:18:1;;;9828:38;9883:19;;39762:124:0;9678:230:1;39762:124:0;39906:11;;;;39901:363;;-1:-1:-1;;;;;39966:21:0;;39982:4;39966:21;;:69;;-1:-1:-1;;;;;;40016:19:0;;40030:4;40016:19;39966:69;:122;;;-1:-1:-1;19182:7:0;19209:6;-1:-1:-1;;;;;40064:24:0;;;19209:6;;40064:24;39966:122;:173;;;-1:-1:-1;19182:7:0;19209:6;-1:-1:-1;;;;;40117:22:0;;;19209:6;;40117:22;39966:173;39938:311;;40191:11;;;;40183:46;;;;-1:-1:-1;;;40183:46:0;;8639:2:1;40183:46:0;;;8621:21:1;8678:2;8658:18;;;8651:30;-1:-1:-1;;;8697:18:1;;;8690:52;8759:18;;40183:46:0;8611:172:1;40183:46:0;40287:28;40318:24;40336:4;40318:9;:24::i;:::-;40421:23;;40462:16;;40287:55;;-1:-1:-1;40384:60:0;;;;40462:16;;40461:17;:42;;;;-1:-1:-1;40482:21:0;;;;;;;40461:42;:65;;;;;40513:13;-1:-1:-1;;;;;40507:19:0;:2;-1:-1:-1;;;;;40507:19:0;;40461:65;40457:526;;;40547:23;40543:161;;;40614:23;;40591:46;;40656:32;40667:20;40656:10;:32::i;:::-;40776:14;;40736:21;;40776:14;;;;;:47;;;;;40812:10;40794:7;:29;40776:47;40772:200;;;40858:17;;40848:7;:27;40844:60;;;-1:-1:-1;40887:17:0;;40844:60;40925:31;40939:16;:7;40951:3;40939:11;:16::i;:::-;40925:13;:31::i;:::-;40528:455;40457:526;-1:-1:-1;;;;;41115:24:0;;40995:12;41115:24;;;:18;:24;;;;;;41010:4;;41115:24;;;:50;;-1:-1:-1;;;;;;41143:22:0;;;;;;:18;:22;;;;;;;;41115:50;41111:98;;;-1:-1:-1;41192:5:0;41111:98;41221:41;41236:4;41242:2;41246:6;41254:7;41221:14;:41::i;:::-;39358:1912;;;39255:2015;;;:::o;14291:226::-;14411:7;14447:12;14439:6;;;;14431:29;;;;-1:-1:-1;;;14431:29:0;;;;;;;;:::i;:::-;-1:-1:-1;14471:9:0;14483:5;14487:1;14483;:5;:::i;:::-;14471:17;14291:226;-1:-1:-1;;;;;14291:226:0:o;49081:164::-;49123:7;49144:15;49161;49180:19;:17;:19::i;:::-;49143:56;;-1:-1:-1;49143:56:0;-1:-1:-1;49217:20:0;49143:56;;49217:11;:20::i;:::-;49210:27;;;;49081:164;:::o;14783:132::-;14841:7;14868:39;14872:1;14875;14868:39;;;;;;;;;;;;;;;;;:3;:39::i;13958:181::-;14016:7;;14048:5;14052:1;14048;:5;:::i;:::-;14036:17;;14077:1;14072;:6;;14064:46;;;;-1:-1:-1;;;14064:46:0;;8283:2:1;14064:46:0;;;8265:21:1;8322:2;8302:18;;;8295:30;8361:29;8341:18;;;8334:57;8408:18;;14064:46:0;8255:177:1;47349:742:0;47449:7;47471;47493;47515;47537;47559;47609:23;47647:12;47674:18;47706:20;47718:7;47706:11;:20::i;:::-;47594:132;;;;;;47738:15;47755:23;47780:12;47796:113;47822:7;47844:4;47863:10;47888;:8;:10::i;:::-;47796:11;:113::i;:::-;47737:172;;;;-1:-1:-1;47737:172:0;;-1:-1:-1;48013:15:0;;-1:-1:-1;48043:4:0;;-1:-1:-1;48062:10:0;;-1:-1:-1;47349:742:0;;-1:-1:-1;;;;;47349:742:0:o;14147:136::-;14205:7;14232:43;14236:1;14239;14232:43;;;;;;;;;;;;;;;;;:3;:43::i;41278:451::-;32020:16;:23;;-1:-1:-1;;32020:23:0;32039:4;32020:23;;;41384:21:::1;41416:38;41433:20:::0;41416:16:::1;:38::i;:::-;41465:26;41494:41;:21;41520:14:::0;41494:25:::1;:41::i;:::-;41620:16;::::0;41693::::1;::::0;41674:13:::1;::::0;41465:70;;-1:-1:-1;41585:136:0::1;::::0;-1:-1:-1;;;;;41620:16:0;;::::1;::::0;41651:59:::1;::::0;41693:16;41651:37:::1;::::0;41465:70;;41651:22:::1;:37::i;:::-;:41:::0;::::1;:59::i;:::-;41585:20;:136::i;:::-;-1:-1:-1::0;;32066:16:0;:24;;-1:-1:-1;;32066:24:0;;;-1:-1:-1;41278:451:0:o;41737:144::-;32020:16;:23;;-1:-1:-1;;32020:23:0;32039:4;32020:23;;;41811:10;;41807:67:::1;;41838:24;41855:6;41838:16;:24::i;:::-;-1:-1:-1::0;32066:16:0;:24;;-1:-1:-1;;32066:24:0;;;41737:144::o;43680:708::-;43836:7;43831:28;;43845:14;:12;:14::i;:::-;-1:-1:-1;;;;;43876:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;43900:22:0;;;;;;:11;:22;;;;;;;;43899:23;43876:46;43872:467;;;43939:48;43961:6;43969:9;43980:6;43939:21;:48::i;:::-;43872:467;;;-1:-1:-1;;;;;44010:19:0;;;;;;:11;:19;;;;;;;;44009:20;:46;;;;-1:-1:-1;;;;;;44033:22:0;;;;;;:11;:22;;;;;;;;44009:46;44005:334;;;44072:46;44092:6;44100:9;44111:6;44072:19;:46::i;44005:334::-;-1:-1:-1;;;;;44140:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;44163:22:0;;;;;;:11;:22;;;;;;;;44140:45;44136:203;;;44202:48;44224:6;44232:9;44243:6;44202:21;:48::i;44136:203::-;44283:44;44301:6;44309:9;44320:6;44283:17;:44::i;:::-;44356:7;44351:29;;44365:15;50846;;50836:7;:25;50888:21;;50872:13;:37;50792:125;44365:15;43680:708;;;;:::o;49253:605::-;49351:7;;49387;;49304;;;;;49405:338;49429:9;:16;49425:20;;49405:338;;;49513:7;49489;:21;49497:9;49507:1;49497:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;49497:12:0;49489:21;;;;;;;;;;;;;:31;;:83;;;49565:7;49541;:21;49549:9;49559:1;49549:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;49549:12:0;49541:21;;;;;;;;;;;;;:31;49489:83;49467:146;;;49596:7;;49605;;49588:25;;;;;;;49253:605;;:::o;49467:146::-;49638:34;49650:7;:21;49658:9;49668:1;49658:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;49658:12:0;49650:21;;;;;;;;;;;;;49638:7;;:11;:34::i;:::-;49628:44;;49697:34;49709:7;:21;49717:9;49727:1;49717:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;49717:12:0;49709:21;;;;;;;;;;;;;49697:7;;:11;:34::i;:::-;49687:44;-1:-1:-1;49447:3:0;;;;:::i;:::-;;;;49405:338;;;-1:-1:-1;49779:7:0;;49767;;:20;;:11;:20::i;:::-;49757:7;:30;49753:61;;;49797:7;;49806;;49789:25;;;;;;49253:605;;:::o;49753:61::-;49833:7;;49842;;-1:-1:-1;49253:605:0;-1:-1:-1;49253:605:0:o;14923:312::-;15043:7;15078:12;15071:5;15063:28;;;;-1:-1:-1;;;15063:28:0;;;;;;;;:::i;:::-;-1:-1:-1;15102:9:0;15114:5;15118:1;15114;:5;:::i;48099:412::-;48200:7;48222;48244;48279:12;48294:24;48310:7;48294:15;:24::i;:::-;48279:39;;48329:18;48350:30;48372:7;48350:21;:30::i;:::-;48329:51;-1:-1:-1;48391:23:0;48417:33;48329:51;48417:17;:7;48429:4;48417:11;:17::i;:::-;:21;;:33::i;:::-;48391:59;48486:4;;-1:-1:-1;48492:10:0;;-1:-1:-1;48099:412:0;;-1:-1:-1;;;48099:412:0:o;48519:554::-;48718:7;;;;48815:24;:7;48827:11;48815;:24::i;:::-;48797:42;-1:-1:-1;48850:12:0;48865:21;:4;48874:11;48865:8;:21::i;:::-;48850:36;-1:-1:-1;48897:18:0;48918:27;:10;48933:11;48918:14;:27::i;:::-;48897:48;-1:-1:-1;48956:23:0;48982:33;48897:48;48982:17;:7;48994:4;48982:11;:17::i;:33::-;49034:7;;;;-1:-1:-1;49060:4:0;;-1:-1:-1;48519:554:0;;-1:-1:-1;;;;;;;48519:554:0:o;41889:658::-;42039:16;;;42053:1;42039:16;;;;;;;;42015:21;;42039:16;;;;;;;;;;-1:-1:-1;42039:16:0;42015:40;;42084:4;42066;42071:1;42066:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;42066:23:0;;;-1:-1:-1;;;;;42066:23:0;;;;;42110:15;-1:-1:-1;;;;;42110:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42100:4;42105:1;42100:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;42100:32:0;;;-1:-1:-1;;;;;42100:32:0;;;;;42145:62;42162:4;42177:15;42195:11;42145:8;:62::i;:::-;42246:240;;-1:-1:-1;;;42246:240:0;;-1:-1:-1;;;;;42246:15:0;:66;;;;:240;;42327:11;;42353:1;;42397:4;;42424;;42460:15;;42246:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42504:35;42521:11;42534:4;42504:35;;;;;;;:::i;:::-;;;;;;;;41944:603;41889:658;:::o;14525:250::-;14583:7;14607:6;14603:47;;-1:-1:-1;14637:1:0;14630:8;;14603:47;14662:9;14674:5;14678:1;14674;:5;:::i;:::-;14662:17;-1:-1:-1;14707:1:0;14698:5;14702:1;14662:17;14698:5;:::i;:::-;:10;14690:56;;;;-1:-1:-1;;;14690:56:0;;10115:2:1;14690:56:0;;;10097:21:1;10154:2;10134:18;;;10127:30;10193:34;10173:18;;;10166:62;-1:-1:-1;;;10244:18:1;;;10237:31;10285:19;;14690:56:0;10087:223:1;52616:140:0;52722:26;;-1:-1:-1;;;;;52722:18:0;;;:26;;;;;52741:6;;52722:26;;;;52741:6;52722:18;:26;;;;;;;;;;;;;;;;;;;42555:596;42700:16;;;42714:1;42700:16;;;;;;;;42676:21;;42700:16;;;;;;;;;;-1:-1:-1;42700:16:0;42676:40;;42737:15;-1:-1:-1;;;;;42737:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42727:4;42732:1;42727:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;42727:32:0;;;-1:-1:-1;;;;;42727:32:0;;;;;42788:4;42770;42775:1;42770:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;42770:23:0;;;:7;;;;;;;;;:23;42832:15;:66;;42920:6;42952:1;42999:4;43018:11;43060:24;:15;43080:3;43060:19;:24::i;:::-;42832:263;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43113:30;43130:6;43138:4;43113:30;;;;;;;:::i;50549:235::-;50596:7;;:12;:34;;;;-1:-1:-1;50612:13:0;;:18;50596:34;50592:47;;;50549:235::o;50592:47::-;50669:7;;;50651:15;:25;50711:13;;;50687:21;:37;-1:-1:-1;50737:11:0;;;;50759:17;50549:235::o;45735:686::-;45886:15;45916:23;45954:12;45981:23;46019:12;46046:18;46078:19;46089:7;46078:10;:19::i;:::-;-1:-1:-1;;;;;46126:15:0;;;;;;:7;:15;;;;;;45871:226;;-1:-1:-1;45871:226:0;;-1:-1:-1;45871:226:0;;-1:-1:-1;45871:226:0;-1:-1:-1;45871:226:0;-1:-1:-1;45871:226:0;-1:-1:-1;46126:28:0;;46146:7;46126:19;:28::i;:::-;-1:-1:-1;;;;;46108:15:0;;;;;;:7;:15;;;;;;;;:46;;;;46183:7;:15;;;;:28;;46203:7;46183:19;:28::i;:::-;-1:-1:-1;;;;;46165:15:0;;;;;;;:7;:15;;;;;;:46;;;;46243:18;;;;;;;:39;;46266:15;46243:22;:39::i;:::-;-1:-1:-1;;;;;46222:18:0;;;;;;:7;:18;;;;;:60;46293:26;46308:10;46293:14;:26::i;:::-;46330:23;46342:4;46348;46330:11;:23::i;:::-;46386:9;-1:-1:-1;;;;;46369:44:0;46378:6;-1:-1:-1;;;;;46369:44:0;;46397:15;46369:44;;;;13927:25:1;;13915:2;13900:18;;13882:76;46369:44:0;;;;;;;;45860:561;;;;;;45735:686;;;:::o;45029:698::-;45178:15;45208:23;45246:12;45273:23;45311:12;45338:18;45370:19;45381:7;45370:10;:19::i;:::-;-1:-1:-1;;;;;45418:15:0;;;;;;:7;:15;;;;;;45163:226;;-1:-1:-1;45163:226:0;;-1:-1:-1;45163:226:0;;-1:-1:-1;45163:226:0;-1:-1:-1;45163:226:0;-1:-1:-1;45163:226:0;-1:-1:-1;45418:28:0;;45163:226;45418:19;:28::i;:::-;-1:-1:-1;;;;;45400:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;45478:18;;;;;:7;:18;;;;;:39;;45501:15;45478:22;:39::i;:::-;-1:-1:-1;;;;;45457:18:0;;;;;;:7;:18;;;;;;;;:60;;;;45549:7;:18;;;;:39;;45572:15;45549:22;:39::i;46429:757::-;46580:15;46610:23;46648:12;46675:23;46713:12;46740:18;46772:19;46783:7;46772:10;:19::i;:::-;-1:-1:-1;;;;;46820:15:0;;;;;;:7;:15;;;;;;46565:226;;-1:-1:-1;46565:226:0;;-1:-1:-1;46565:226:0;;-1:-1:-1;46565:226:0;-1:-1:-1;46565:226:0;-1:-1:-1;46565:226:0;-1:-1:-1;46820:28:0;;46840:7;46820:19;:28::i;:::-;-1:-1:-1;;;;;46802:15:0;;;;;;:7;:15;;;;;;;;:46;;;;46877:7;:15;;;;:28;;46897:7;46877:19;:28::i;44396:625::-;44543:15;44573:23;44611:12;44638:23;44676:12;44703:18;44735:19;44746:7;44735:10;:19::i;:::-;-1:-1:-1;;;;;44783:15:0;;;;;;:7;:15;;;;;;44528:226;;-1:-1:-1;44528:226:0;;-1:-1:-1;44528:226:0;;-1:-1:-1;44528:226:0;-1:-1:-1;44528:226:0;-1:-1:-1;44528:226:0;-1:-1:-1;44783:28:0;;44528:226;44783:19;:28::i;50229:130::-;50293:7;50320:31;50345:5;50320:20;50332:7;;50320;:11;;:20;;;;:::i;:::-;:24;;:31::i;50367:174::-;50464:7;50496:37;50527:5;50496:26;50508:13;;50496:7;:11;;:26;;;;:::i;49866:355::-;49929:19;49951:10;:8;:10::i;:::-;49929:32;-1:-1:-1;49972:18:0;49993:27;:10;49929:32;49993:14;:27::i;:::-;50072:4;50056:22;;;;:7;:22;;;;;;49972:48;;-1:-1:-1;50056:38:0;;49972:48;50056:26;:38::i;:::-;50047:4;50031:22;;;;:7;:22;;;;;;;;:63;;;;50109:11;:26;;;;;;50105:108;;;50191:4;50175:22;;;;:7;:22;;;;;;:38;;50202:10;50175:26;:38::i;:::-;50166:4;50150:22;;;;:7;:22;;;;;:63;49918:303;;49866:355;:::o;47194:147::-;47272:7;;:17;;47284:4;47272:11;:17::i;:::-;47262:7;:27;47313:10;;:20;;47328:4;47313:14;:20::i;:::-;47300:10;:33;-1:-1:-1;;47194:147:0:o;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;142:1;139;132:12;94:2;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:2;;;405:1;402;395:12;357:2;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:2;;;667:1;664;657:12;619:2;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;609:301;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:2;;;1077:1;1074;1067:12;1029:2;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;1019:352;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;1019:352::o;1376:315::-;1444:6;1452;1505:2;1493:9;1484:7;1480:23;1476:32;1473:2;;;1521:1;1518;1511:12;1473:2;1560:9;1547:23;1579:31;1604:5;1579:31;:::i;:::-;1629:5;1681:2;1666:18;;;;1653:32;;-1:-1:-1;;;1463:228:1:o;1696:241::-;1752:6;1805:2;1793:9;1784:7;1780:23;1776:32;1773:2;;;1821:1;1818;1811:12;1773:2;1860:9;1847:23;1879:28;1901:5;1879:28;:::i;1942:245::-;2009:6;2062:2;2050:9;2041:7;2037:23;2033:32;2030:2;;;2078:1;2075;2068:12;2030:2;2110:9;2104:16;2129:28;2151:5;2129:28;:::i;2192:180::-;2251:6;2304:2;2292:9;2283:7;2279:23;2275:32;2272:2;;;2320:1;2317;2310:12;2272:2;-1:-1:-1;2343:23:1;;2262:110;-1:-1:-1;2262:110:1:o;2377:309::-;2442:6;2450;2503:2;2491:9;2482:7;2478:23;2474:32;2471:2;;;2519:1;2516;2509:12;2471:2;2555:9;2542:23;2532:33;;2615:2;2604:9;2600:18;2587:32;2628:28;2650:5;2628:28;:::i;2691:306::-;2779:6;2787;2795;2848:2;2836:9;2827:7;2823:23;2819:32;2816:2;;;2864:1;2861;2854:12;2816:2;2893:9;2887:16;2877:26;;2943:2;2932:9;2928:18;2922:25;2912:35;;2987:2;2976:9;2972:18;2966:25;2956:35;;2806:191;;;;;:::o;3002:461::-;3055:3;3093:5;3087:12;3120:6;3115:3;3108:19;3146:4;3175:2;3170:3;3166:12;3159:19;;3212:2;3205:5;3201:14;3233:1;3243:195;3257:6;3254:1;3251:13;3243:195;;;3322:13;;-1:-1:-1;;;;;3318:39:1;3306:52;;3378:12;;;;3413:15;;;;3354:1;3272:9;3243:195;;;-1:-1:-1;3454:3:1;;3063:400;-1:-1:-1;;;;;3063:400:1:o;4994:510::-;5265:6;5254:9;5247:25;5308:3;5303:2;5292:9;5288:18;5281:31;5228:4;5329:57;5381:3;5370:9;5366:19;5358:6;5329:57;:::i;:::-;-1:-1:-1;;;;;5422:32:1;;;;5417:2;5402:18;;5395:60;-1:-1:-1;5486:2:1;5471:18;5464:34;5321:65;5237:267;-1:-1:-1;;5237:267:1:o;5509:597::-;5621:4;5650:2;5679;5668:9;5661:21;5711:6;5705:13;5754:6;5749:2;5738:9;5734:18;5727:34;5779:1;5789:140;5803:6;5800:1;5797:13;5789:140;;;5898:14;;;5894:23;;5888:30;5864:17;;;5883:2;5860:26;5853:66;5818:10;;5789:140;;;5947:6;5944:1;5941:13;5938:2;;;6017:1;6012:2;6003:6;5992:9;5988:22;5984:31;5977:42;5938:2;-1:-1:-1;6090:2:1;6069:15;-1:-1:-1;;6065:29:1;6050:45;;;;6097:2;6046:54;;5630:476;-1:-1:-1;;;5630:476:1:o;10315:356::-;10517:2;10499:21;;;10536:18;;;10529:30;10595:34;10590:2;10575:18;;10568:62;10662:2;10647:18;;10489:182::o;13963:332::-;14170:6;14159:9;14152:25;14213:2;14208;14197:9;14193:18;14186:30;14133:4;14233:56;14285:2;14274:9;14270:18;14262:6;14233:56;:::i;:::-;14225:64;14142:153;-1:-1:-1;;;;14142:153:1:o;14300:582::-;14599:6;14588:9;14581:25;14642:6;14637:2;14626:9;14622:18;14615:34;14685:3;14680:2;14669:9;14665:18;14658:31;14562:4;14706:57;14758:3;14747:9;14743:19;14735:6;14706:57;:::i;:::-;-1:-1:-1;;;;;14799:32:1;;;;14794:2;14779:18;;14772:60;-1:-1:-1;14863:3:1;14848:19;14841:35;14698:65;14571:311;-1:-1:-1;;;14571:311:1:o;15076:128::-;15116:3;15147:1;15143:6;15140:1;15137:13;15134:2;;;15153:18;;:::i;:::-;-1:-1:-1;15189:9:1;;15124:80::o;15209:217::-;15249:1;15275;15265:2;;15319:10;15314:3;15310:20;15307:1;15300:31;15354:4;15351:1;15344:15;15382:4;15379:1;15372:15;15265:2;-1:-1:-1;15411:9:1;;15255:171::o;15431:168::-;15471:7;15537:1;15533;15529:6;15525:14;15522:1;15519:21;15514:1;15507:9;15500:17;15496:45;15493:2;;;15544:18;;:::i;:::-;-1:-1:-1;15584:9:1;;15483:116::o;15604:125::-;15644:4;15672:1;15669;15666:8;15663:2;;;15677:18;;:::i;:::-;-1:-1:-1;15714:9:1;;15653:76::o;15734:380::-;15813:1;15809:12;;;;15856;;;15877:2;;15931:4;15923:6;15919:17;15909:27;;15877:2;15984;15976:6;15973:14;15953:18;15950:38;15947:2;;;16030:10;16025:3;16021:20;16018:1;16011:31;16065:4;16062:1;16055:15;16093:4;16090:1;16083:15;15947:2;;15789:325;;;:::o;16119:135::-;16158:3;-1:-1:-1;;16179:17:1;;16176:2;;;16199:18;;:::i;:::-;-1:-1:-1;16246:1:1;16235:13;;16166:88::o;16259:127::-;16320:10;16315:3;16311:20;16308:1;16301:31;16351:4;16348:1;16341:15;16375:4;16372:1;16365:15;16391:127;16452:10;16447:3;16443:20;16440:1;16433:31;16483:4;16480:1;16473:15;16507:4;16504:1;16497:15;16523:127;16584:10;16579:3;16575:20;16572:1;16565:31;16615:4;16612:1;16605:15;16639:4;16636:1;16629:15;16787:131;-1:-1:-1;;;;;16862:31:1;;16852:42;;16842:2;;16908:1;16905;16898:12;16842:2;16832:86;:::o;16923:118::-;17009:5;17002:13;16995:21;16988:5;16985:32;16975:2;;17031:1;17028;17021:12

Swarm Source

ipfs://97b5fda52c45d70963f308b3480b6323faa12260acab57fba4f70c19c61b1baa
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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