ETH Price: $2,580.16 (-2.91%)

Token

AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH (AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH)
 

Overview

Max Total Supply

100,000,000 AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

Holders

80

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,064,949.514484316 AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH

Value
$0.00
0xE78D27326f1A6f1F6bA6Ad5e1B24A3aDdEd2791A
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:
AHHH

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-18
*/

/** 

░█████╗░██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗
██╔══██╗██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║
███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║
██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║
██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║
╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝

░█████╗░██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗
██╔══██╗██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║
███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║
██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║
██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║
╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝

░█████╗░██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗
██╔══██╗██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║
███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║
██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║
██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║
╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝

░█████╗░██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗
██╔══██╗██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║
███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║
██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║
██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║
╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝

░█████╗░██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗
██╔══██╗██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║
███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║
██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║
██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║
╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝

░█████╗░██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗██╗░░██╗
██╔══██╗██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║
███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║███████║
██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║██╔══██║
██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║██║░░██║
╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚═╝


    Website:    https://www.ahhherc.com
    Twitter:    https://twitter.com/ahhherc
    Telegram:   https://t.me/ahhherc
*/

pragma solidity 0.8.19;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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
    );
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private __name;
    string private __symbol;

    constructor(string memory name_, string memory symbol_) {
        __name = name_;
        __symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return __name;
    }

    function symbol() public view virtual override returns (string memory) {
        return __symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

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

    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library SafeMath {
    function tryAdd(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

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;
}

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 Mint(address indexed sender, uint256 amount0, uint256 amount1);
    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 mint(address to) external returns (uint256 liquidity);

    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;
}

interface IUniswapV2Router02 {
    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 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 AHHH is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    address public constant deadAddress = address(0xdead);

    string private constant __name = "AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH";
    string private constant __symbol = "AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH";

    bool private swapping;

    bool public tradingOpen = false;
    bool public swapEnabled = false;

    address public taxWallet;

    uint256 public swapTokensAtAmount;

    uint256 public maxTransactionAmount;
    uint256 public maxWallet;

    bool public lpBurnEnabled = false;

    uint256 public percentForLPBurn = 25; // 25 = .25%
    uint256 public lpBurnFrequency = 3600 seconds;
    uint256 public lastLpBurnTime;

    uint256 public launchedAt;

    uint256 public manualBurnFrequency = 5400 seconds;
    uint256 public lastManualLpBurnTime;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee = 1;
    uint256 public buyLiquidityFee = 0; 
    uint256 public buyBurnFee = 0;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee = 1;
    uint256 public sellLiquidityFee = 0;
    uint256 public sellBurnFee = 1;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForBurn;

    bool public limitsInEffect = true;

    uint256 feeDenominator = 100;

    /***************************************************************/

    // exlcude from fees
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;

    mapping(address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event AutoNukeLP();

    constructor() ERC20(__name, __symbol) {        

        uint256 _buyMarketingFee = 1;
        uint256 _buyLiquidityFee = 0;

        uint256 _sellMarketingFee = 1;
        uint256 _sellLiquidityFee = 0;

        uint256 totalSupply = 100_000_000 * 1e9;

        maxTransactionAmount = (totalSupply * 2) / 100;     // 2%
        maxWallet = (totalSupply * 2) / 100;                // 2%

        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet
        
        lastLpBurnTime = block.timestamp;
        launchedAt = block.timestamp;
        
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;

        taxWallet = address(0x5CeBf12AAa28E27c5eBD13f300a4eC554AdeD6D7);

        // exclude from paying fees
        _isExcludedFromFees[msg.sender] = true;
        _isExcludedFromFees[taxWallet] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[address(0xdead)] = true;

        _isExcludedMaxTransactionAmount[owner()] = true;
        _isExcludedMaxTransactionAmount[address(this)] = true;
        _isExcludedMaxTransactionAmount[address(0xdead)] = true;
        _isExcludedMaxTransactionAmount[taxWallet] = true;

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }

    function createLiquidityEth() public payable onlyOwner 
    {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true;
        
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        _approve(address(this), address(_uniswapV2Router), type(uint256).max);

        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
    }

    function enableTrading() external onlyOwner  {
        require(!tradingOpen,"Trading is already open");

        swapEnabled = true;
        tradingOpen = true;
    }

    function expired() public view returns(bool success) {

        if (lastLpBurnTime + manualBurnFrequency >= block.timestamp){
            return false;
        } else {
            return true;
        }
    }

    receive() external payable {}

    function startMoonTime() external onlyOwner returns (bool) {
        buyTotalFees = 0;
        buyMarketingFee = 0;
        buyLiquidityFee = 0;
        sellTotalFees = 0;
        sellMarketingFee = 0;
        sellLiquidityFee = 0;
        
        limitsInEffect = false;
        return true;
    }

    function removeLimit() external onlyOwner returns(bool) {
        limitsInEffect = false;
        return true;
    }

    function max(uint256 a, uint256 b) private pure returns (uint256) {
      return (a > b) ? b : a;
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
      return (a > b) ? a : b;
    }

    function burnTotalFees(uint256 fee)  internal view returns (uint256) {
        return balanceOf(deadAddress) > 0 && fee > 0 ? ((feeDenominator - 1) / 100) : 1;
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {

                if (!tradingOpen) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                //when buy
                
                if (
                    automatedMarketMakerPairs[from] &&
                    !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount."
                    );
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                
                //when sell
                
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]
                ) {
                    require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount."
                    );
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded"
                    );
                }
                
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            swapBack();

            swapping = false;
        }


        if (
            !swapping &&
            automatedMarketMakerPairs[to] &&
            lpBurnEnabled &&
            block.timestamp >= lastLpBurnTime + lpBurnFrequency &&
            !_isExcludedFromFees[from]
        ) {
            autoBurnLiquidityPairTokens();
        }
        

        bool takeFee = !swapping;

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

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(feeDenominator);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
                tokensForBurn += (fees * sellBurnFee) / burnTotalFees(sellBurnFee);
            }
            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(feeDenominator);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;
                tokensForBurn += (fees * buyBurnFee) / burnTotalFees(buyBurnFee);
            }

            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, 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),
            block.timestamp
        );
    }

    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
            deadAddress,
            block.timestamp
        );
    }

    function autoBurnLiquidityPairTokens() internal returns (bool) {

        lastLpBurnTime = block.timestamp;

        // get balance of liquidity pair
        uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair);

        // calculate amount to burn
        uint256 amountToBurn = min(liquidityPairBalance.mul(percentForLPBurn).div(
            10000
        ), liquidityPairBalance - 1e9);

        // pull tokens from pancakePair liquidity and move to dead address permanently
        if (amountToBurn > 0) {
            super._transfer(uniswapV2Pair, address(0xdead), amountToBurn);
        }

        //sync price since this is not in a swap transaction!
        IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
        pair.sync();
        emit AutoNukeLP();
        return true;
    }


    function manualBurn() public returns (bool) {
        return expired() ? autoBurnLiquidityPairTokens() : false;
    }


    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing;
        bool success;

        if (contractBalance == 0 || totalTokensToSwap == 0) {
            return;
        }

        if (contractBalance > swapTokensAtAmount * 20) {
            contractBalance = swapTokensAtAmount * 20;
        }

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap /
            2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);

        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(
            totalTokensToSwap
        );

        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

        (success, ) = address(taxWallet).call{
            value: address(this).balance
        }("");
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"AutoNukeLP","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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createLiquidityEth","outputs":[],"stateMutability":"payable","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":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"expired","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"view","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":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startMoonTime","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","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"},{"stateMutability":"payable","type":"receive"}]

60806040526007805461ffff60a81b19169055600c805460ff199081169091556019600d819055610e10600e55611518601155600160148190556000601581905560168190556018829055909155601a819055601e80549092161790556064601f553480156200006e57600080fd5b50604051806060016040528060218152602001620029dc60219139604051806060016040528060268152602001620029b6602691396003620000b18382620004a5565b506004620000c08282620004a5565b5050506000620000d56200031060201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060016000818167016345785d8a000060646200014182600262000587565b6200014d9190620005a7565b600a5560646200015f82600262000587565b6200016b9190620005a7565b600b556127106200017e82600562000587565b6200018a9190620005a7565b60095542600f81905560105560148590556015849055620001ac8486620005ca565b60135560188390556019829055620001c58284620005ca565b601755600880546001600160a01b031916735cebf12aaa28e27c5ebd13f300a4ec554aded6d7178155336000908152602080526040808220805460ff19908116600190811790925593546001600160a01b031683528183208054851682179055308352908220805484168217905561dead82527fcbaad361c71be11fa6bdbe0e740c6259be964b32182da2da47b54472477c6a1780549093168117909255602190620002796005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260219093528183208054851660019081179091557fda90364631e387f138e7e413f1de75a8ecb4767574209ddf012729113dea45c0805486168217905560085490911683529120805490921617905562000305338262000314565b5050505050620005e0565b3390565b6001600160a01b0382166200036f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620003839190620005ca565b90915550506001600160a01b03821660009081526020819052604081208054839290620003b2908490620005ca565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200042c57607f821691505b6020821081036200044d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003fc57600081815260208120601f850160051c810160208610156200047c5750805b601f850160051c820191505b818110156200049d5782815560010162000488565b505050505050565b81516001600160401b03811115620004c157620004c162000401565b620004d981620004d2845462000417565b8462000453565b602080601f831160018114620005115760008415620004f85750858301515b600019600386901b1c1916600185901b1785556200049d565b600085815260208120601f198616915b82811015620005425788860151825594840194600190910190840162000521565b5085821015620005615787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620005a157620005a162000571565b92915050565b600082620005c557634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620005a157620005a162000571565b6123c680620005f06000396000f3fe6080604052600436106102cd5760003560e01c80636ddd171311610175578063adb873bd116100dc578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b146107df578063f6374342146107ff578063f8b45b0514610815578063ffb54a991461082b57600080fd5b8063e2f456051461079d578063e71dc3f5146107b3578063f11a24d3146107c957600080fd5b8063adb873bd146106cf578063b62496f5146106e5578063bf56b37114610715578063c8c8ebe41461072b578063d85ba06314610741578063dd62ed3e1461075757600080fd5b8063921369131161012e578063921369131461063857806395d89b411461064e5780639ec22c0e14610663578063a457c2d714610679578063a4c82a0014610699578063a9059cbb146106af57600080fd5b80636ddd17131461059957806370a08231146105ba578063715018a6146105da5780637bce5a04146105ef5780638a8c523c146106055780638da5cb5b1461061a57600080fd5b806327c8f835116102345780633d39e32c116101ed5780634c2067c7116101c75780634c2067c71461054f5780636225658914610564578063638ca822146105795780636a486a8e1461058357600080fd5b80633d39e32c1461050057806349bd5a5e146105155780634a62bb651461053557600080fd5b806327c8f8351461045e5780632c3e486c146104745780632dc0562d1461048a5780632e82f1a0146104aa578063313ce567146104c457806339509351146104e057600080fd5b8063199ffc7211610286578063199ffc72146103d15780631a8145bb146103e75780631aeedb7a146103fd5780631d777856146104125780631f3fed8f1461042857806323b872dd1461043e57600080fd5b806306fdde03146102d9578063095ea7b31461030457806310d5de53146103345780631694505e1461036457806318160ddd1461039c578063184c16c5146103bb57600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ee61084c565b6040516102fb9190611fd5565b60405180910390f35b34801561031057600080fd5b5061032461031f36600461203b565b6108de565b60405190151581526020016102fb565b34801561034057600080fd5b5061032461034f366004612067565b60216020526000908152604090205460ff1681565b34801561037057600080fd5b50600654610384906001600160a01b031681565b6040516001600160a01b0390911681526020016102fb565b3480156103a857600080fd5b506002545b6040519081526020016102fb565b3480156103c757600080fd5b506103ad60115481565b3480156103dd57600080fd5b506103ad600d5481565b3480156103f357600080fd5b506103ad601c5481565b34801561040957600080fd5b506103246108f5565b34801561041e57600080fd5b506103ad601d5481565b34801561043457600080fd5b506103ad601b5481565b34801561044a57600080fd5b50610324610459366004612084565b610916565b34801561046a57600080fd5b5061038461dead81565b34801561048057600080fd5b506103ad600e5481565b34801561049657600080fd5b50600854610384906001600160a01b031681565b3480156104b657600080fd5b50600c546103249060ff1681565b3480156104d057600080fd5b50604051600981526020016102fb565b3480156104ec57600080fd5b506103246104fb36600461203b565b6109c5565b34801561050c57600080fd5b50610324610a01565b34801561052157600080fd5b50600754610384906001600160a01b031681565b34801561054157600080fd5b50601e546103249060ff1681565b34801561055b57600080fd5b50610324610a5c565b34801561057057600080fd5b50610324610a80565b610581610abd565b005b34801561058f57600080fd5b506103ad60175481565b3480156105a557600080fd5b5060075461032490600160b01b900460ff1681565b3480156105c657600080fd5b506103ad6105d5366004612067565b610d31565b3480156105e657600080fd5b50610581610d4c565b3480156105fb57600080fd5b506103ad60145481565b34801561061157600080fd5b50610581610dc0565b34801561062657600080fd5b506005546001600160a01b0316610384565b34801561064457600080fd5b506103ad60185481565b34801561065a57600080fd5b506102ee610e5b565b34801561066f57600080fd5b506103ad60125481565b34801561068557600080fd5b5061032461069436600461203b565b610e6a565b3480156106a557600080fd5b506103ad600f5481565b3480156106bb57600080fd5b506103246106ca36600461203b565b610f03565b3480156106db57600080fd5b506103ad601a5481565b3480156106f157600080fd5b50610324610700366004612067565b60226020526000908152604090205460ff1681565b34801561072157600080fd5b506103ad60105481565b34801561073757600080fd5b506103ad600a5481565b34801561074d57600080fd5b506103ad60135481565b34801561076357600080fd5b506103ad6107723660046120c5565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107a957600080fd5b506103ad60095481565b3480156107bf57600080fd5b506103ad60165481565b3480156107d557600080fd5b506103ad60155481565b3480156107eb57600080fd5b506105816107fa366004612067565b610f10565b34801561080b57600080fd5b506103ad60195481565b34801561082157600080fd5b506103ad600b5481565b34801561083757600080fd5b5060075461032490600160a81b900460ff1681565b60606003805461085b906120fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610887906120fe565b80156108d45780601f106108a9576101008083540402835291602001916108d4565b820191906000526020600020905b8154815290600101906020018083116108b757829003601f168201915b5050505050905090565b60006108eb338484610ffb565b5060015b92915050565b60006108ff610a5c565b6109095750600090565b61091161111f565b905090565b6000610923848484611285565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109ad5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109ba8533858403610ffb565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108eb9185906109fc90869061214e565b610ffb565b6005546000906001600160a01b03163314610a2e5760405162461bcd60e51b81526004016109a490612161565b50600060138190556014819055601581905560178190556018819055601955601e805460ff19169055600190565b600042601154600f54610a6f919061214e565b10610a7a5750600090565b50600190565b6005546000906001600160a01b03163314610aad5760405162461bcd60e51b81526004016109a490612161565b50601e805460ff19169055600190565b6005546001600160a01b03163314610ae75760405162461bcd60e51b81526004016109a490612161565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b709190612196565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be19190612196565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c529190612196565b600780546001600160a01b0319166001600160a01b0392831690811782556000908152602160205260409020805460ff191660019081179091559054610c99921690611a0c565b610ca63082600019610ffb565b6006546001600160a01b031663f305d7193430610cc281610d31565b60008033426040518863ffffffff1660e01b8152600401610ce8969594939291906121b3565b60606040518083038185885af1158015610d06573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d2b91906121ee565b50505050565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610d765760405162461bcd60e51b81526004016109a490612161565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610dea5760405162461bcd60e51b81526004016109a490612161565b600754600160a81b900460ff1615610e445760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016109a4565b6007805461ffff60a81b191661010160a81b179055565b60606004805461085b906120fe565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610eec5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109a4565b610ef93385858403610ffb565b5060019392505050565b60006108eb338484611285565b6005546001600160a01b03163314610f3a5760405162461bcd60e51b81526004016109a490612161565b6001600160a01b038116610f9f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109a4565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661105d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109a4565b6001600160a01b0382166110be5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109a4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b42600f556007546040516370a0823160e01b81526001600160a01b039091166004820152600090819030906370a0823190602401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611194919061221c565b905060006111cf6111bc6127106111b6600d5486611a6090919063ffffffff16565b90611a73565b6111ca633b9aca0085612235565b611a7f565b905080156111f0576007546111f0906001600160a01b031661dead83611a95565b6007546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561123a57600080fd5b505af115801561124e573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b6001600160a01b0383166112ab5760405162461bcd60e51b81526004016109a490612248565b6001600160a01b0382166112d15760405162461bcd60e51b81526004016109a49061228d565b806000036112ea576112e583836000611a95565b505050565b601e5460ff1615611640576005546001600160a01b0384811691161480159061132157506005546001600160a01b03838116911614155b801561133557506001600160a01b03821615155b801561134c57506001600160a01b03821661dead14155b80156113625750600754600160a01b900460ff16155b1561164057600754600160a81b900460ff166113fa576001600160a01b038316600090815260208052604090205460ff16806113b557506001600160a01b038216600090815260208052604090205460ff165b6113fa5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109a4565b6001600160a01b03831660009081526022602052604090205460ff16801561143b57506001600160a01b03821660009081526021602052604090205460ff16155b1561150f57600a548111156114b05760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016109a4565b600b546114bc83610d31565b6114c6908361214e565b111561150a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109a4565b611640565b6001600160a01b03821660009081526022602052604090205460ff16801561155057506001600160a01b03831660009081526021602052604090205460ff16155b156115c657600a5481111561150a5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016109a4565b6001600160a01b03821660009081526021602052604090205460ff1661164057600b546115f283610d31565b6115fc908361214e565b11156116405760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109a4565b600061164b30610d31565b6009549091508110801590819061166b5750600754600160b01b900460ff165b80156116815750600754600160a01b900460ff16155b80156116a657506001600160a01b03851660009081526022602052604090205460ff16155b80156116ca57506001600160a01b038516600090815260208052604090205460ff16155b80156116ee57506001600160a01b038416600090815260208052604090205460ff16155b1561171c576007805460ff60a01b1916600160a01b17905561170e611be9565b6007805460ff60a01b191690555b600754600160a01b900460ff1615801561174e57506001600160a01b03841660009081526022602052604090205460ff165b801561175c5750600c5460ff165b80156117775750600e54600f54611773919061214e565b4210155b801561179b57506001600160a01b038516600090815260208052604090205460ff16155b156117aa576117a861111f565b505b6007546001600160a01b038616600090815260208052604090205460ff600160a01b9092048216159116806117f657506001600160a01b038516600090815260208052604090205460ff165b156117ff575060005b600081156119f8576001600160a01b03861660009081526022602052604090205460ff16801561183157506000601754115b156118f357611851601f546111b660175488611a6090919063ffffffff16565b90506017546019548261186491906122d0565b61186e91906122e7565b601c600082825461187f919061214e565b909155505060175460185461189490836122d0565b61189e91906122e7565b601b60008282546118af919061214e565b9091555050601a546118c090611d8d565b601a546118cd90836122d0565b6118d791906122e7565b601d60008282546118e8919061214e565b909155506119da9050565b6001600160a01b03871660009081526022602052604090205460ff16801561191d57506000601354115b156119da5761193d601f546111b660135488611a6090919063ffffffff16565b90506013546015548261195091906122d0565b61195a91906122e7565b601c600082825461196b919061214e565b909155505060135460145461198090836122d0565b61198a91906122e7565b601b600082825461199b919061214e565b90915550506016546119ac90611d8d565b6016546119b990836122d0565b6119c391906122e7565b601d60008282546119d4919061214e565b90915550505b80156119eb576119eb873083611a95565b6119f58186612235565b94505b611a03878787611a95565b50505050505050565b6001600160a01b038216600081815260226020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6000611a6c82846122d0565b9392505050565b6000611a6c82846122e7565b6000818311611a8e5781611a6c565b5090919050565b6001600160a01b038316611abb5760405162461bcd60e51b81526004016109a490612248565b6001600160a01b038216611ae15760405162461bcd60e51b81526004016109a49061228d565b6001600160a01b03831660009081526020819052604090205481811015611b595760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109a4565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611b9090849061214e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bdc91815260200190565b60405180910390a3610d2b565b6000611bf430610d31565b90506000601b54601c54611c08919061214e565b90506000821580611c17575081155b15611c2157505050565b600954611c2f9060146122d0565b831115611c4757600954611c449060146122d0565b92505b6000600283601c5486611c5a91906122d0565b611c6491906122e7565b611c6e91906122e7565b90506000611c7c8583611dce565b905047611c8882611dda565b6000611c944783611dce565b90506000611cb1876111b6601b5485611a6090919063ffffffff16565b90506000611cbf8284612235565b6000601c819055601b5590508515801590611cda5750600081115b15611d2d57611ce98682611f34565b601c54604080518781526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6008546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611d7a576040519150601f19603f3d011682016040523d82523d6000602084013e611d7f565b606091505b505050505050505050505050565b600080611d9b61dead610d31565b118015611da85750600082115b611db35760016108ef565b60646001601f54611dc49190612235565b6108ef91906122e7565b6000611a6c8284612235565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e0f57611e0f612309565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8c9190612196565b81600181518110611e9f57611e9f612309565b6001600160a01b039283166020918202929092010152600654611ec59130911684610ffb565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611efe90859060009086903090429060040161231f565b600060405180830381600087803b158015611f1857600080fd5b505af1158015611f2c573d6000803e3d6000fd5b505050505050565b600654611f4c9030906001600160a01b031684610ffb565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d719908390611f8b9030908790600090819061dead9042906004016121b3565b60606040518083038185885af1158015611fa9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fce91906121ee565b5050505050565b600060208083528351808285015260005b8181101561200257858101830151858201604001528201611fe6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461203857600080fd5b50565b6000806040838503121561204e57600080fd5b823561205981612023565b946020939093013593505050565b60006020828403121561207957600080fd5b8135611a6c81612023565b60008060006060848603121561209957600080fd5b83356120a481612023565b925060208401356120b481612023565b929592945050506040919091013590565b600080604083850312156120d857600080fd5b82356120e381612023565b915060208301356120f381612023565b809150509250929050565b600181811c9082168061211257607f821691505b60208210810361213257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108ef576108ef612138565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156121a857600080fd5b8151611a6c81612023565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561220357600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561222e57600080fd5b5051919050565b818103818111156108ef576108ef612138565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b80820281158282048414176108ef576108ef612138565b60008261230457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561236f5784516001600160a01b03168352938301939183019160010161234a565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220608144565bc7b865efcfc47deb12cb9a7b536b2e13df75fac94674c8d9c3dba464736f6c634300081300334148484848484848484848484848484848484848484848484848484848484848484848484848414848484848484848484848484848484848484848484848484848484848484848

Deployed Bytecode

0x6080604052600436106102cd5760003560e01c80636ddd171311610175578063adb873bd116100dc578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b146107df578063f6374342146107ff578063f8b45b0514610815578063ffb54a991461082b57600080fd5b8063e2f456051461079d578063e71dc3f5146107b3578063f11a24d3146107c957600080fd5b8063adb873bd146106cf578063b62496f5146106e5578063bf56b37114610715578063c8c8ebe41461072b578063d85ba06314610741578063dd62ed3e1461075757600080fd5b8063921369131161012e578063921369131461063857806395d89b411461064e5780639ec22c0e14610663578063a457c2d714610679578063a4c82a0014610699578063a9059cbb146106af57600080fd5b80636ddd17131461059957806370a08231146105ba578063715018a6146105da5780637bce5a04146105ef5780638a8c523c146106055780638da5cb5b1461061a57600080fd5b806327c8f835116102345780633d39e32c116101ed5780634c2067c7116101c75780634c2067c71461054f5780636225658914610564578063638ca822146105795780636a486a8e1461058357600080fd5b80633d39e32c1461050057806349bd5a5e146105155780634a62bb651461053557600080fd5b806327c8f8351461045e5780632c3e486c146104745780632dc0562d1461048a5780632e82f1a0146104aa578063313ce567146104c457806339509351146104e057600080fd5b8063199ffc7211610286578063199ffc72146103d15780631a8145bb146103e75780631aeedb7a146103fd5780631d777856146104125780631f3fed8f1461042857806323b872dd1461043e57600080fd5b806306fdde03146102d9578063095ea7b31461030457806310d5de53146103345780631694505e1461036457806318160ddd1461039c578063184c16c5146103bb57600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ee61084c565b6040516102fb9190611fd5565b60405180910390f35b34801561031057600080fd5b5061032461031f36600461203b565b6108de565b60405190151581526020016102fb565b34801561034057600080fd5b5061032461034f366004612067565b60216020526000908152604090205460ff1681565b34801561037057600080fd5b50600654610384906001600160a01b031681565b6040516001600160a01b0390911681526020016102fb565b3480156103a857600080fd5b506002545b6040519081526020016102fb565b3480156103c757600080fd5b506103ad60115481565b3480156103dd57600080fd5b506103ad600d5481565b3480156103f357600080fd5b506103ad601c5481565b34801561040957600080fd5b506103246108f5565b34801561041e57600080fd5b506103ad601d5481565b34801561043457600080fd5b506103ad601b5481565b34801561044a57600080fd5b50610324610459366004612084565b610916565b34801561046a57600080fd5b5061038461dead81565b34801561048057600080fd5b506103ad600e5481565b34801561049657600080fd5b50600854610384906001600160a01b031681565b3480156104b657600080fd5b50600c546103249060ff1681565b3480156104d057600080fd5b50604051600981526020016102fb565b3480156104ec57600080fd5b506103246104fb36600461203b565b6109c5565b34801561050c57600080fd5b50610324610a01565b34801561052157600080fd5b50600754610384906001600160a01b031681565b34801561054157600080fd5b50601e546103249060ff1681565b34801561055b57600080fd5b50610324610a5c565b34801561057057600080fd5b50610324610a80565b610581610abd565b005b34801561058f57600080fd5b506103ad60175481565b3480156105a557600080fd5b5060075461032490600160b01b900460ff1681565b3480156105c657600080fd5b506103ad6105d5366004612067565b610d31565b3480156105e657600080fd5b50610581610d4c565b3480156105fb57600080fd5b506103ad60145481565b34801561061157600080fd5b50610581610dc0565b34801561062657600080fd5b506005546001600160a01b0316610384565b34801561064457600080fd5b506103ad60185481565b34801561065a57600080fd5b506102ee610e5b565b34801561066f57600080fd5b506103ad60125481565b34801561068557600080fd5b5061032461069436600461203b565b610e6a565b3480156106a557600080fd5b506103ad600f5481565b3480156106bb57600080fd5b506103246106ca36600461203b565b610f03565b3480156106db57600080fd5b506103ad601a5481565b3480156106f157600080fd5b50610324610700366004612067565b60226020526000908152604090205460ff1681565b34801561072157600080fd5b506103ad60105481565b34801561073757600080fd5b506103ad600a5481565b34801561074d57600080fd5b506103ad60135481565b34801561076357600080fd5b506103ad6107723660046120c5565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107a957600080fd5b506103ad60095481565b3480156107bf57600080fd5b506103ad60165481565b3480156107d557600080fd5b506103ad60155481565b3480156107eb57600080fd5b506105816107fa366004612067565b610f10565b34801561080b57600080fd5b506103ad60195481565b34801561082157600080fd5b506103ad600b5481565b34801561083757600080fd5b5060075461032490600160a81b900460ff1681565b60606003805461085b906120fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610887906120fe565b80156108d45780601f106108a9576101008083540402835291602001916108d4565b820191906000526020600020905b8154815290600101906020018083116108b757829003601f168201915b5050505050905090565b60006108eb338484610ffb565b5060015b92915050565b60006108ff610a5c565b6109095750600090565b61091161111f565b905090565b6000610923848484611285565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109ad5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109ba8533858403610ffb565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108eb9185906109fc90869061214e565b610ffb565b6005546000906001600160a01b03163314610a2e5760405162461bcd60e51b81526004016109a490612161565b50600060138190556014819055601581905560178190556018819055601955601e805460ff19169055600190565b600042601154600f54610a6f919061214e565b10610a7a5750600090565b50600190565b6005546000906001600160a01b03163314610aad5760405162461bcd60e51b81526004016109a490612161565b50601e805460ff19169055600190565b6005546001600160a01b03163314610ae75760405162461bcd60e51b81526004016109a490612161565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b709190612196565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be19190612196565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610c2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c529190612196565b600780546001600160a01b0319166001600160a01b0392831690811782556000908152602160205260409020805460ff191660019081179091559054610c99921690611a0c565b610ca63082600019610ffb565b6006546001600160a01b031663f305d7193430610cc281610d31565b60008033426040518863ffffffff1660e01b8152600401610ce8969594939291906121b3565b60606040518083038185885af1158015610d06573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d2b91906121ee565b50505050565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610d765760405162461bcd60e51b81526004016109a490612161565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610dea5760405162461bcd60e51b81526004016109a490612161565b600754600160a81b900460ff1615610e445760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016109a4565b6007805461ffff60a81b191661010160a81b179055565b60606004805461085b906120fe565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610eec5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109a4565b610ef93385858403610ffb565b5060019392505050565b60006108eb338484611285565b6005546001600160a01b03163314610f3a5760405162461bcd60e51b81526004016109a490612161565b6001600160a01b038116610f9f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109a4565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661105d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109a4565b6001600160a01b0382166110be5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109a4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b42600f556007546040516370a0823160e01b81526001600160a01b039091166004820152600090819030906370a0823190602401602060405180830381865afa158015611170573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611194919061221c565b905060006111cf6111bc6127106111b6600d5486611a6090919063ffffffff16565b90611a73565b6111ca633b9aca0085612235565b611a7f565b905080156111f0576007546111f0906001600160a01b031661dead83611a95565b6007546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561123a57600080fd5b505af115801561124e573d6000803e3d6000fd5b50506040517f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d925060009150a16001935050505090565b6001600160a01b0383166112ab5760405162461bcd60e51b81526004016109a490612248565b6001600160a01b0382166112d15760405162461bcd60e51b81526004016109a49061228d565b806000036112ea576112e583836000611a95565b505050565b601e5460ff1615611640576005546001600160a01b0384811691161480159061132157506005546001600160a01b03838116911614155b801561133557506001600160a01b03821615155b801561134c57506001600160a01b03821661dead14155b80156113625750600754600160a01b900460ff16155b1561164057600754600160a81b900460ff166113fa576001600160a01b038316600090815260208052604090205460ff16806113b557506001600160a01b038216600090815260208052604090205460ff165b6113fa5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109a4565b6001600160a01b03831660009081526022602052604090205460ff16801561143b57506001600160a01b03821660009081526021602052604090205460ff16155b1561150f57600a548111156114b05760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016109a4565b600b546114bc83610d31565b6114c6908361214e565b111561150a5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109a4565b611640565b6001600160a01b03821660009081526022602052604090205460ff16801561155057506001600160a01b03831660009081526021602052604090205460ff16155b156115c657600a5481111561150a5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016109a4565b6001600160a01b03821660009081526021602052604090205460ff1661164057600b546115f283610d31565b6115fc908361214e565b11156116405760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109a4565b600061164b30610d31565b6009549091508110801590819061166b5750600754600160b01b900460ff165b80156116815750600754600160a01b900460ff16155b80156116a657506001600160a01b03851660009081526022602052604090205460ff16155b80156116ca57506001600160a01b038516600090815260208052604090205460ff16155b80156116ee57506001600160a01b038416600090815260208052604090205460ff16155b1561171c576007805460ff60a01b1916600160a01b17905561170e611be9565b6007805460ff60a01b191690555b600754600160a01b900460ff1615801561174e57506001600160a01b03841660009081526022602052604090205460ff165b801561175c5750600c5460ff165b80156117775750600e54600f54611773919061214e565b4210155b801561179b57506001600160a01b038516600090815260208052604090205460ff16155b156117aa576117a861111f565b505b6007546001600160a01b038616600090815260208052604090205460ff600160a01b9092048216159116806117f657506001600160a01b038516600090815260208052604090205460ff165b156117ff575060005b600081156119f8576001600160a01b03861660009081526022602052604090205460ff16801561183157506000601754115b156118f357611851601f546111b660175488611a6090919063ffffffff16565b90506017546019548261186491906122d0565b61186e91906122e7565b601c600082825461187f919061214e565b909155505060175460185461189490836122d0565b61189e91906122e7565b601b60008282546118af919061214e565b9091555050601a546118c090611d8d565b601a546118cd90836122d0565b6118d791906122e7565b601d60008282546118e8919061214e565b909155506119da9050565b6001600160a01b03871660009081526022602052604090205460ff16801561191d57506000601354115b156119da5761193d601f546111b660135488611a6090919063ffffffff16565b90506013546015548261195091906122d0565b61195a91906122e7565b601c600082825461196b919061214e565b909155505060135460145461198090836122d0565b61198a91906122e7565b601b600082825461199b919061214e565b90915550506016546119ac90611d8d565b6016546119b990836122d0565b6119c391906122e7565b601d60008282546119d4919061214e565b90915550505b80156119eb576119eb873083611a95565b6119f58186612235565b94505b611a03878787611a95565b50505050505050565b6001600160a01b038216600081815260226020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6000611a6c82846122d0565b9392505050565b6000611a6c82846122e7565b6000818311611a8e5781611a6c565b5090919050565b6001600160a01b038316611abb5760405162461bcd60e51b81526004016109a490612248565b6001600160a01b038216611ae15760405162461bcd60e51b81526004016109a49061228d565b6001600160a01b03831660009081526020819052604090205481811015611b595760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109a4565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611b9090849061214e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bdc91815260200190565b60405180910390a3610d2b565b6000611bf430610d31565b90506000601b54601c54611c08919061214e565b90506000821580611c17575081155b15611c2157505050565b600954611c2f9060146122d0565b831115611c4757600954611c449060146122d0565b92505b6000600283601c5486611c5a91906122d0565b611c6491906122e7565b611c6e91906122e7565b90506000611c7c8583611dce565b905047611c8882611dda565b6000611c944783611dce565b90506000611cb1876111b6601b5485611a6090919063ffffffff16565b90506000611cbf8284612235565b6000601c819055601b5590508515801590611cda5750600081115b15611d2d57611ce98682611f34565b601c54604080518781526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6008546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611d7a576040519150601f19603f3d011682016040523d82523d6000602084013e611d7f565b606091505b505050505050505050505050565b600080611d9b61dead610d31565b118015611da85750600082115b611db35760016108ef565b60646001601f54611dc49190612235565b6108ef91906122e7565b6000611a6c8284612235565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e0f57611e0f612309565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8c9190612196565b81600181518110611e9f57611e9f612309565b6001600160a01b039283166020918202929092010152600654611ec59130911684610ffb565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611efe90859060009086903090429060040161231f565b600060405180830381600087803b158015611f1857600080fd5b505af1158015611f2c573d6000803e3d6000fd5b505050505050565b600654611f4c9030906001600160a01b031684610ffb565b60065460405163f305d71960e01b81526001600160a01b039091169063f305d719908390611f8b9030908790600090819061dead9042906004016121b3565b60606040518083038185885af1158015611fa9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fce91906121ee565b5050505050565b600060208083528351808285015260005b8181101561200257858101830151858201604001528201611fe6565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461203857600080fd5b50565b6000806040838503121561204e57600080fd5b823561205981612023565b946020939093013593505050565b60006020828403121561207957600080fd5b8135611a6c81612023565b60008060006060848603121561209957600080fd5b83356120a481612023565b925060208401356120b481612023565b929592945050506040919091013590565b600080604083850312156120d857600080fd5b82356120e381612023565b915060208301356120f381612023565b809150509250929050565b600181811c9082168061211257607f821691505b60208210810361213257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108ef576108ef612138565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156121a857600080fd5b8151611a6c81612023565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561220357600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561222e57600080fd5b5051919050565b818103818111156108ef576108ef612138565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b80820281158282048414176108ef576108ef612138565b60008261230457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561236f5784516001600160a01b03168352938301939183019160010161234a565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220608144565bc7b865efcfc47deb12cb9a7b536b2e13df75fac94674c8d9c3dba464736f6c63430008130033

Deployed Bytecode Sourcemap

30081:13835:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17515:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18496:194;;;;;;;;;;-1:-1:-1;18496:194:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;18496:194:0;1023:187:1;31712:63:0;;;;;;;;;;-1:-1:-1;31712:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;30155:41;;;;;;;;;;-1:-1:-1;30155:41:0;;;;-1:-1:-1;;;;;30155:41:0;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;30155:41:0;1467:230:1;17837:108:0;;;;;;;;;;-1:-1:-1;17925:12:0;;17837:108;;;1848:25:1;;;1836:2;1821:18;17837:108:0;1702:177:1;30945:49:0;;;;;;;;;;;;;;;;30765:36;;;;;;;;;;;;;;;;31398:33;;;;;;;;;;;;;;;;42266:119;;;;;;;;;;;;;:::i;31438:28::-;;;;;;;;;;;;;;;;31358:33;;;;;;;;;;;;;;;;18698:529;;;;;;;;;;-1:-1:-1;18698:529:0;;;;;:::i;:::-;;:::i;30244:53::-;;;;;;;;;;;;30290:6;30244:53;;30821:45;;;;;;;;;;;;;;;;30573:24;;;;;;;;;;-1:-1:-1;30573:24:0;;;;-1:-1:-1;;;;;30573:24:0;;;30723:33;;;;;;;;;;-1:-1:-1;30723:33:0;;;;;;;;17737:92;;;;;;;;;;-1:-1:-1;17737:92:0;;17820:1;2695:36:1;;2683:2;2668:18;17737:92:0;2553:184:1;19235:290:0;;;;;;;;;;-1:-1:-1;19235:290:0;;;;;:::i;:::-;;:::i;34971:309::-;;;;;;;;;;;;;:::i;30203:28::-;;;;;;;;;;-1:-1:-1;30203:28:0;;;;-1:-1:-1;;;;;30203:28:0;;;31475:33;;;;;;;;;;-1:-1:-1;31475:33:0;;;;;;;;34710:216;;;;;;;;;;;;;:::i;35288:119::-;;;;;;;;;;;;;:::i;33764:759::-;;;:::i;:::-;;31200:28;;;;;;;;;;;;;;;;30533:31;;;;;;;;;;-1:-1:-1;30533:31:0;;;;-1:-1:-1;;;30533:31:0;;;;;;17953:143;;;;;;;;;;-1:-1:-1;17953:143:0;;;;;:::i;:::-;;:::i;15480:148::-;;;;;;;;;;;;;:::i;31079:34::-;;;;;;;;;;;;;;;;34531:171;;;;;;;;;;;;;:::i;14838:79::-;;;;;;;;;;-1:-1:-1;14903:6:0;;-1:-1:-1;;;;;14903:6:0;14838:79;;31235:35;;;;;;;;;;;;;;;;17624:105;;;;;;;;;;;;;:::i;31001:35::-;;;;;;;;;;;;;;;;19533:475;;;;;;;;;;-1:-1:-1;19533:475:0;;;;;:::i;:::-;;:::i;30873:29::-;;;;;;;;;;;;;;;;18104:200;;;;;;;;;;-1:-1:-1;18104:200:0;;;;;:::i;:::-;;:::i;31319:30::-;;;;;;;;;;;;;;;;31784:57;;;;;;;;;;-1:-1:-1;31784:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;30911:25;;;;;;;;;;;;;;;;30648:35;;;;;;;;;;;;;;;;31045:27;;;;;;;;;;;;;;;;18312:176;;;;;;;;;;-1:-1:-1;18312:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;18453:18:0;;;18426:7;18453:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18312:176;30606:33;;;;;;;;;;;;;;;;31162:29;;;;;;;;;;;;;;;;31120:34;;;;;;;;;;;;;;;;15783:281;;;;;;;;;;-1:-1:-1;15783:281:0;;;;;:::i;:::-;;:::i;31277:35::-;;;;;;;;;;;;;;;;30690:24;;;;;;;;;;;;;;;;30495:31;;;;;;;;;;-1:-1:-1;30495:31:0;;;;-1:-1:-1;;;30495:31:0;;;;;;17515:101;17569:13;17602:6;17595:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17515:101;:::o;18496:194::-;18604:4;18621:39;14188:10;18644:7;18653:6;18621:8;:39::i;:::-;-1:-1:-1;18678:4:0;18496:194;;;;;:::o;42266:119::-;42304:4;42328:9;:7;:9::i;:::-;:49;;-1:-1:-1;42372:5:0;;42266:119::o;42328:49::-;42340:29;:27;:29::i;:::-;42321:56;;42266:119;:::o;18698:529::-;18838:4;18855:36;18865:6;18873:9;18884:6;18855:9;:36::i;:::-;-1:-1:-1;;;;;18931:19:0;;18904:24;18931:19;;;:11;:19;;;;;;;;14188:10;18931:33;;;;;;;;18997:26;;;;18975:116;;;;-1:-1:-1;;;18975:116:0;;3722:2:1;18975:116:0;;;3704:21:1;3761:2;3741:18;;;3734:30;3800:34;3780:18;;;3773:62;-1:-1:-1;;;3851:18:1;;;3844:38;3899:19;;18975:116:0;;;;;;;;;19127:57;19136:6;14188:10;19177:6;19158:16;:25;19127:8;:57::i;:::-;-1:-1:-1;19215:4:0;;18698:529;-1:-1:-1;;;;18698:529:0:o;19235:290::-;14188:10;19348:4;19437:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19437:34:0;;;;;;;;;;19348:4;;19365:130;;19415:7;;19437:47;;19474:10;;19437:47;:::i;:::-;19365:8;:130::i;34971:309::-;15050:6;;35024:4;;-1:-1:-1;;;;;15050:6:0;14188:10;15050:22;15042:67;;;;-1:-1:-1;;;15042:67:0;;;;;;;:::i;:::-;-1:-1:-1;35056:1:0::1;35041:12;:16:::0;;;35068:15:::1;:19:::0;;;35098:15:::1;:19:::0;;;35128:13:::1;:17:::0;;;35156:16:::1;:20:::0;;;35187:16:::1;:20:::0;35228:14:::1;:22:::0;;-1:-1:-1;;35228:22:0::1;::::0;;;34971:309;:::o;34710:216::-;34749:12;34820:15;34797:19;;34780:14;;:36;;;;:::i;:::-;:55;34776:143;;-1:-1:-1;34858:5:0;;34710:216::o;34776:143::-;-1:-1:-1;34903:4:0;;34710:216::o;35288:119::-;15050:6;;35338:4;;-1:-1:-1;;;;;15050:6:0;14188:10;15050:22;15042:67;;;;-1:-1:-1;;;15042:67:0;;;;;;;:::i;:::-;-1:-1:-1;35355:14:0::1;:22:::0;;-1:-1:-1;;35355:22:0::1;::::0;;;35288:119;:::o;33764:759::-;15050:6;;-1:-1:-1;;;;;15050:6:0;14188:10;15050:22;15042:67;;;;-1:-1:-1;;;15042:67:0;;;;;;;:::i;:::-;33975:15:::1;:34:::0;;-1:-1:-1;;;;;;33975:34:0::1;33909:42;33975:34:::0;;::::1;::::0;;;34056:26:::1;::::0;;-1:-1:-1;;;34056:26:0;;;;33909:42;;34056:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;33909:42;34056:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;34038:70:0::1;;34117:4;34124:16;-1:-1:-1::0;;;;;34124:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34038:110;::::0;-1:-1:-1;;;;;;34038:110:0::1;::::0;;;;;;-1:-1:-1;;;;;5038:15:1;;;34038:110:0::1;::::0;::::1;5020:34:1::0;5090:15;;5070:18;;;5063:43;4955:18;;34038:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34022:13;:126:::0;;-1:-1:-1;;;;;;34022:126:0::1;-1:-1:-1::0;;;;;34022:126:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;34159:55:0;;;:31:::1;:55;::::0;;;;:62;;-1:-1:-1;;34159:62:0::1;-1:-1:-1::0;34159:62:0;;::::1;::::0;;;34279:13;;34242:58:::1;::::0;34279:13:::1;::::0;34242:28:::1;:58::i;:::-;34313:69;34330:4;34345:16;-1:-1:-1::0;;34313:8:0::1;:69::i;:::-;34395:15;::::0;-1:-1:-1;;;;;34395:15:0::1;:31;34434:9;34453:4;34459:24;34453:4:::0;34459:9:::1;:24::i;:::-;34484:1;34486::::0;34488:10:::1;34499:15;34395:120;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;33825:698;33764:759::o:0;17953:143::-;-1:-1:-1;;;;;18070:18:0;18043:7;18070:18;;;;;;;;;;;;17953:143::o;15480:148::-;15050:6;;-1:-1:-1;;;;;15050:6:0;14188:10;15050:22;15042:67;;;;-1:-1:-1;;;15042:67:0;;;;;;;:::i;:::-;15571:6:::1;::::0;15550:40:::1;::::0;15587:1:::1;::::0;-1:-1:-1;;;;;15571:6:0::1;::::0;15550:40:::1;::::0;15587:1;;15550:40:::1;15601:6;:19:::0;;-1:-1:-1;;;;;;15601:19:0::1;::::0;;15480:148::o;34531:171::-;15050:6;;-1:-1:-1;;;;;15050:6:0;14188:10;15050:22;15042:67;;;;-1:-1:-1;;;15042:67:0;;;;;;;:::i;:::-;34596:11:::1;::::0;-1:-1:-1;;;34596:11:0;::::1;;;34595:12;34587:47;;;::::0;-1:-1:-1;;;34587:47:0;;6242:2:1;34587:47:0::1;::::0;::::1;6224:21:1::0;6281:2;6261:18;;;6254:30;6320:25;6300:18;;;6293:53;6363:18;;34587:47:0::1;6040:347:1::0;34587:47:0::1;34647:11;:18:::0;;-1:-1:-1;;;;34676:18:0;-1:-1:-1;;;34676:18:0;;;34531:171::o;17624:105::-;17680:13;17713:8;17706:15;;;;;:::i;19533:475::-;14188:10;19651:4;19695:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19695:34:0;;;;;;;;;;19762:35;;;;19740:122;;;;-1:-1:-1;;;19740:122:0;;6594:2:1;19740:122:0;;;6576:21:1;6633:2;6613:18;;;6606:30;6672:34;6652:18;;;6645:62;-1:-1:-1;;;6723:18:1;;;6716:35;6768:19;;19740:122:0;6392:401:1;19740:122:0;19898:67;14188:10;19921:7;19949:15;19930:16;:34;19898:8;:67::i;:::-;-1:-1:-1;19996:4:0;;19533:475;-1:-1:-1;;;19533:475:0:o;18104:200::-;18215:4;18232:42;14188:10;18256:9;18267:6;18232:9;:42::i;15783:281::-;15050:6;;-1:-1:-1;;;;;15050:6:0;14188:10;15050:22;15042:67;;;;-1:-1:-1;;;15042:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15886:22:0;::::1;15864:110;;;::::0;-1:-1:-1;;;15864:110:0;;7000:2:1;15864:110:0::1;::::0;::::1;6982:21:1::0;7039:2;7019:18;;;7012:30;7078:34;7058:18;;;7051:62;-1:-1:-1;;;7129:18:1;;;7122:36;7175:19;;15864:110:0::1;6798:402:1::0;15864:110:0::1;16011:6;::::0;15990:38:::1;::::0;-1:-1:-1;;;;;15990:38:0;;::::1;::::0;16011:6:::1;::::0;15990:38:::1;::::0;16011:6:::1;::::0;15990:38:::1;16039:6;:17:::0;;-1:-1:-1;;;;;;16039:17:0::1;-1:-1:-1::0;;;;;16039:17:0;;;::::1;::::0;;;::::1;::::0;;15783:281::o;21800:380::-;-1:-1:-1;;;;;21936:19:0;;21928:68;;;;-1:-1:-1;;;21928:68:0;;7407:2:1;21928:68:0;;;7389:21:1;7446:2;7426:18;;;7419:30;7485:34;7465:18;;;7458:62;-1:-1:-1;;;7536:18:1;;;7529:34;7580:19;;21928:68:0;7205:400:1;21928:68:0;-1:-1:-1;;;;;22015:21:0;;22007:68;;;;-1:-1:-1;;;22007:68:0;;7812:2:1;22007:68:0;;;7794:21:1;7851:2;7831:18;;;7824:30;7890:34;7870:18;;;7863:62;-1:-1:-1;;;7941:18:1;;;7934:32;7983:19;;22007:68:0;7610:398:1;22007:68:0;-1:-1:-1;;;;;22088:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;22140:32;;1848:25:1;;;22140:32:0;;1821:18:1;22140:32:0;;;;;;;21800:380;;;:::o;41433:823::-;41526:15;41509:14;:32;41642:13;;41627:29;;-1:-1:-1;;;41627:29:0;;-1:-1:-1;;;;;41642:13:0;;;41627:29;;;1640:51:1;41490:4:0;;;;41627;;:14;;1613:18:1;;41627:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41596:60;;41706:20;41729:110;41733:77;41794:5;41733:42;41758:16;;41733:20;:24;;:42;;;;:::i;:::-;:46;;:77::i;:::-;41812:26;41835:3;41812:20;:26;:::i;:::-;41729:3;:110::i;:::-;41706:133;-1:-1:-1;41944:16:0;;41940:110;;41993:13;;41977:61;;-1:-1:-1;;;;;41993:13:0;42016:6;42025:12;41977:15;:61::i;:::-;42162:13;;42187:11;;;-1:-1:-1;;;;;;42187:11:0;;;;-1:-1:-1;;;;;42162:13:0;;;;;;42187:9;;:11;;;;;42125:19;;42187:11;;;;;;;42125:19;42162:13;42187:11;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;42214:12:0;;;;-1:-1:-1;42214:12:0;;-1:-1:-1;42214:12:0;42244:4;42237:11;;;;;41433:823;:::o;36012:4291::-;-1:-1:-1;;;;;36144:18:0;;36136:68;;;;-1:-1:-1;;;36136:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;36223:16:0;;36215:64;;;;-1:-1:-1;;;36215:64:0;;;;;;;:::i;:::-;36296:6;36306:1;36296:11;36292:93;;36324:28;36340:4;36346:2;36350:1;36324:15;:28::i;:::-;36012:4291;;;:::o;36292:93::-;36411:14;;;;36407:1693;;;14903:6;;-1:-1:-1;;;;;36464:15:0;;;14903:6;;36464:15;;;;:49;;-1:-1:-1;14903:6:0;;-1:-1:-1;;;;;36500:13:0;;;14903:6;;36500:13;;36464:49;:86;;;;-1:-1:-1;;;;;;36534:16:0;;;;36464:86;:128;;;;-1:-1:-1;;;;;;36571:21:0;;36585:6;36571:21;;36464:128;:158;;;;-1:-1:-1;36614:8:0;;-1:-1:-1;;;36614:8:0;;;;36613:9;36464:158;36442:1647;;;36664:11;;-1:-1:-1;;;36664:11:0;;;;36659:148;;-1:-1:-1;;;;;36708:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;36737:23:0;;;;;;:19;:23;;;;;;;;36708:52;36700:87;;;;-1:-1:-1;;;36700:87:0;;9347:2:1;36700:87:0;;;9329:21:1;9386:2;9366:18;;;9359:30;-1:-1:-1;;;9405:18:1;;;9398:52;9467:18;;36700:87:0;9145:346:1;36700:87:0;-1:-1:-1;;;;;36899:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;36956:35:0;;;;;;:31;:35;;;;;;;;36955:36;36899:92;36873:1183;;;37078:20;;37068:6;:30;;37034:169;;;;-1:-1:-1;;;37034:169:0;;9698:2:1;37034:169:0;;;9680:21:1;9737:2;9717:18;;;9710:30;9776:34;9756:18;;;9749:62;-1:-1:-1;;;9827:18:1;;;9820:51;9888:19;;37034:169:0;9496:417:1;37034:169:0;37286:9;;37269:13;37279:2;37269:9;:13::i;:::-;37260:22;;:6;:22;:::i;:::-;:35;;37226:140;;;;-1:-1:-1;;;37226:140:0;;10120:2:1;37226:140:0;;;10102:21:1;10159:2;10139:18;;;10132:30;-1:-1:-1;;;10178:18:1;;;10171:49;10237:18;;37226:140:0;9918:343:1;37226:140:0;36873:1183;;;-1:-1:-1;;;;;37500:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;37555:37:0;;;;;;:31;:37;;;;;;;;37554:38;37500:92;37474:582;;;37679:20;;37669:6;:30;;37635:170;;;;-1:-1:-1;;;37635:170:0;;10468:2:1;37635:170:0;;;10450:21:1;10507:2;10487:18;;;10480:30;10546:34;10526:18;;;10519:62;-1:-1:-1;;;10597:18:1;;;10590:52;10659:19;;37635:170:0;10266:418:1;37474:582:0;-1:-1:-1;;;;;37836:35:0;;;;;;:31;:35;;;;;;;;37831:225;;37956:9;;37939:13;37949:2;37939:9;:13::i;:::-;37930:22;;:6;:22;:::i;:::-;:35;;37896:140;;;;-1:-1:-1;;;37896:140:0;;10120:2:1;37896:140:0;;;10102:21:1;10159:2;10139:18;;;10132:30;-1:-1:-1;;;10178:18:1;;;10171:49;10237:18;;37896:140:0;9918:343:1;37896:140:0;38112:28;38143:24;38161:4;38143:9;:24::i;:::-;38219:18;;38112:55;;-1:-1:-1;38195:42:0;;;;;;;38268:35;;-1:-1:-1;38292:11:0;;-1:-1:-1;;;38292:11:0;;;;38268:35;:61;;;;-1:-1:-1;38321:8:0;;-1:-1:-1;;;38321:8:0;;;;38320:9;38268:61;:110;;;;-1:-1:-1;;;;;;38347:31:0;;;;;;:25;:31;;;;;;;;38346:32;38268:110;:153;;;;-1:-1:-1;;;;;;38396:25:0;;;;;;:19;:25;;;;;;;;38395:26;38268:153;:194;;;;-1:-1:-1;;;;;;38439:23:0;;;;;;:19;:23;;;;;;;;38438:24;38268:194;38250:326;;;38489:8;:15;;-1:-1:-1;;;;38489:15:0;-1:-1:-1;;;38489:15:0;;;38521:10;:8;:10::i;:::-;38548:8;:16;;-1:-1:-1;;;;38548:16:0;;;38250:326;38609:8;;-1:-1:-1;;;38609:8:0;;;;38608:9;:55;;;;-1:-1:-1;;;;;;38634:29:0;;;;;;:25;:29;;;;;;;;38608:55;:85;;;;-1:-1:-1;38680:13:0;;;;38608:85;:153;;;;;38746:15;;38729:14;;:32;;;;:::i;:::-;38710:15;:51;;38608:153;:196;;;;-1:-1:-1;;;;;;38779:25:0;;;;;;:19;:25;;;;;;;;38778:26;38608:196;38590:282;;;38831:29;:27;:29::i;:::-;;38590:282;38910:8;;-1:-1:-1;;;;;39020:25:0;;38894:12;39020:25;;;:19;:25;;;;;;38910:8;-1:-1:-1;;;38910:8:0;;;;;38909:9;;39020:25;;:52;;-1:-1:-1;;;;;;39049:23:0;;;;;;:19;:23;;;;;;;;39020:52;39016:100;;;-1:-1:-1;39099:5:0;39016:100;39128:12;39233:7;39229:1021;;;-1:-1:-1;;;;;39285:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;39334:1;39318:13;;:17;39285:50;39281:820;;;39363:45;39393:14;;39363:25;39374:13;;39363:6;:10;;:25;;;;:::i;:45::-;39356:52;;39477:13;;39457:16;;39450:4;:23;;;;:::i;:::-;39449:41;;;;:::i;:::-;39427:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;39559:13:0;;39539:16;;39532:23;;:4;:23;:::i;:::-;39531:41;;;;:::i;:::-;39509:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;39645:11:0;;39631:26;;:13;:26::i;:::-;39616:11;;39609:18;;:4;:18;:::i;:::-;39608:49;;;;:::i;:::-;39591:13;;:66;;;;;;;:::i;:::-;;;;-1:-1:-1;39281:820:0;;-1:-1:-1;39281:820:0;;-1:-1:-1;;;;;39719:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;39769:1;39754:12;;:16;39719:51;39715:386;;;39798:44;39827:14;;39798:24;39809:12;;39798:6;:10;;:24;;;;:::i;:44::-;39791:51;;39910:12;;39891:15;;39884:4;:22;;;;:::i;:::-;39883:39;;;;:::i;:::-;39861:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;39990:12:0;;39971:15;;39964:22;;:4;:22;:::i;:::-;39963:39;;;;:::i;:::-;39941:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;40074:10:0;;40060:25;;:13;:25::i;:::-;40046:10;;40039:17;;:4;:17;:::i;:::-;40038:47;;;;:::i;:::-;40021:13;;:64;;;;;;;:::i;:::-;;;;-1:-1:-1;;39715:386:0;40121:8;;40117:91;;40150:42;40166:4;40180;40187;40150:15;:42::i;:::-;40224:14;40234:4;40224:14;;:::i;:::-;;;39229:1021;40262:33;40278:4;40284:2;40288:6;40262:15;:33::i;:::-;36125:4178;;;;36012:4291;;;:::o;35816:188::-;-1:-1:-1;;;;;35899:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;35899:39:0;;;;;;;;;;35956:40;;35899:39;;:31;35956:40;;;35816:188;;:::o;23929:98::-;23987:7;24014:5;24018:1;24014;:5;:::i;:::-;24007:12;23929:98;-1:-1:-1;;;23929:98:0:o;24035:::-;24093:7;24120:5;24124:1;24120;:5;:::i;35528:105::-;35585:7;35615:1;35611;:5;35610:15;;35624:1;35610:15;;;-1:-1:-1;35620:1:0;;35528:105;-1:-1:-1;35528:105:0:o;20016:770::-;-1:-1:-1;;;;;20156:20:0;;20148:70;;;;-1:-1:-1;;;20148:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20237:23:0;;20229:71;;;;-1:-1:-1;;;20229:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20397:17:0;;20373:21;20397:17;;;;;;;;;;;20447:23;;;;20425:111;;;;-1:-1:-1;;;20425:111:0;;11286:2:1;20425:111:0;;;11268:21:1;11325:2;11305:18;;;11298:30;11364:34;11344:18;;;11337:62;-1:-1:-1;;;11415:18:1;;;11408:36;11461:19;;20425:111:0;11084:402:1;20425:111:0;-1:-1:-1;;;;;20572:17:0;;;:9;:17;;;;;;;;;;;20592:22;;;20572:42;;20636:20;;;;;;;;:30;;20608:6;;20572:9;20636:30;;20608:6;;20636:30;:::i;:::-;;;;;;;;20701:9;-1:-1:-1;;;;;20684:35:0;20693:6;-1:-1:-1;;;;;20684:35:0;;20712:6;20684:35;;;;1848:25:1;;1836:2;1821:18;;1702:177;20684:35:0;;;;;;;;20732:46;36012:4291;42395:1516;42434:23;42460:24;42478:4;42460:9;:24::i;:::-;42434:50;;42495:25;42544:18;;42523;;:39;;;;:::i;:::-;42495:67;-1:-1:-1;42573:12:0;42602:20;;;:46;;-1:-1:-1;42626:22:0;;42602:46;42598:85;;;42665:7;;;42395:1516::o;42598:85::-;42717:18;;:23;;42738:2;42717:23;:::i;:::-;42699:15;:41;42695:115;;;42775:18;;:23;;42796:2;42775:23;:::i;:::-;42757:41;;42695:115;42871:23;42984:1;42951:17;42916:18;;42898:15;:36;;;;:::i;:::-;42897:71;;;;:::i;:::-;:88;;;;:::i;:::-;42871:114;-1:-1:-1;42996:26:0;43025:36;:15;42871:114;43025:19;:36::i;:::-;42996:65;-1:-1:-1;43102:21:0;43136:36;42996:65;43136:16;:36::i;:::-;43185:18;43206:44;:21;43232:17;43206:25;:44::i;:::-;43185:65;;43263:23;43289:81;43342:17;43289:34;43304:18;;43289:10;:14;;:34;;;;:::i;:81::-;43263:107;-1:-1:-1;43383:23:0;43409:28;43263:107;43409:10;:28;:::i;:::-;43471:1;43450:18;:22;;;43483:18;:22;43383:54;-1:-1:-1;43522:19:0;;;;;:42;;;43563:1;43545:15;:19;43522:42;43518:278;;;43581:46;43594:15;43611;43581:12;:46::i;:::-;43751:18;;43647:137;;;11693:25:1;;;11749:2;11734:18;;11727:34;;;11777:18;;;11770:34;;;;43647:137:0;;;;;;11681:2:1;43647:137:0;;;43518:278;43830:9;;43822:81;;-1:-1:-1;;;;;43830:9:0;;;;43867:21;;43822:81;;;;43867:21;43830:9;43822:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;42395:1516:0:o;35641:167::-;35701:7;35753:1;35728:22;30290:6;35728:9;:22::i;:::-;:26;:37;;;;;35764:1;35758:3;:7;35728:37;:72;;35799:1;35728:72;;;35792:3;35787:1;35770:14;;:18;;;;:::i;:::-;35769:26;;;;:::i;23823:98::-;23881:7;23908:5;23912:1;23908;:5;:::i;40311:589::-;40461:16;;;40475:1;40461:16;;;;;;;;40437:21;;40461:16;;;;;;;;;;-1:-1:-1;40461:16:0;40437:40;;40506:4;40488;40493:1;40488:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;40488:23:0;;;:7;;;;;;;;;;:23;;;;40532:15;;:22;;;-1:-1:-1;;;40532:22:0;;;;:15;;;;;:20;;:22;;;;;40488:7;;40532:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40522:4;40527:1;40522:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;40522:32:0;;;:7;;;;;;;;;:32;40599:15;;40567:62;;40584:4;;40599:15;40617:11;40567:8;:62::i;:::-;40668:15;;:224;;-1:-1:-1;;;40668:224:0;;-1:-1:-1;;;;;40668:15:0;;;;:66;;:224;;40749:11;;40668:15;;40819:4;;40846;;40866:15;;40668:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40366:534;40311:589;:::o;40908:517::-;41088:15;;41056:62;;41073:4;;-1:-1:-1;;;;;41088:15:0;41106:11;41056:8;:62::i;:::-;41161:15;;:256;;-1:-1:-1;;;41161:256:0;;-1:-1:-1;;;;;41161:15:0;;;;:31;;41200:9;;41161:256;;41233:4;;41253:11;;41161:15;;;;30290:6;;41391:15;;41161:256;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;40908:517;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:456::-;1961:6;1969;1977;2030:2;2018:9;2009:7;2005:23;2001:32;1998:52;;;2046:1;2043;2036:12;1998:52;2085:9;2072:23;2104:31;2129:5;2104:31;:::i;:::-;2154:5;-1:-1:-1;2211:2:1;2196:18;;2183:32;2224:33;2183:32;2224:33;:::i;:::-;1884:456;;2276:7;;-1:-1:-1;;;2330:2:1;2315:18;;;;2302:32;;1884:456::o;2742:388::-;2810:6;2818;2871:2;2859:9;2850:7;2846:23;2842:32;2839:52;;;2887:1;2884;2877:12;2839:52;2926:9;2913:23;2945:31;2970:5;2945:31;:::i;:::-;2995:5;-1:-1:-1;3052:2:1;3037:18;;3024:32;3065:33;3024:32;3065:33;:::i;:::-;3117:7;3107:17;;;2742:388;;;;;:::o;3135:380::-;3214:1;3210:12;;;;3257;;;3278:61;;3332:4;3324:6;3320:17;3310:27;;3278:61;3385:2;3377:6;3374:14;3354:18;3351:38;3348:161;;3431:10;3426:3;3422:20;3419:1;3412:31;3466:4;3463:1;3456:15;3494:4;3491:1;3484:15;3348:161;;3135:380;;;:::o;3929:127::-;3990:10;3985:3;3981:20;3978:1;3971:31;4021:4;4018:1;4011:15;4045:4;4042:1;4035:15;4061:125;4126:9;;;4147:10;;;4144:36;;;4160:18;;:::i;4191:356::-;4393:2;4375:21;;;4412:18;;;4405:30;4471:34;4466:2;4451:18;;4444:62;4538:2;4523:18;;4191:356::o;4552:251::-;4622:6;4675:2;4663:9;4654:7;4650:23;4646:32;4643:52;;;4691:1;4688;4681:12;4643:52;4723:9;4717:16;4742:31;4767:5;4742:31;:::i;5117:607::-;-1:-1:-1;;;;;5476:15:1;;;5458:34;;5523:2;5508:18;;5501:34;;;;5566:2;5551:18;;5544:34;;;;5609:2;5594:18;;5587:34;;;;5658:15;;;5652:3;5637:19;;5630:44;5438:3;5690:19;;5683:35;;;;5407:3;5392:19;;5117:607::o;5729:306::-;5817:6;5825;5833;5886:2;5874:9;5865:7;5861:23;5857:32;5854:52;;;5902:1;5899;5892:12;5854:52;5931:9;5925:16;5915:26;;5981:2;5970:9;5966:18;5960:25;5950:35;;6025:2;6014:9;6010:18;6004:25;5994:35;;5729:306;;;;;:::o;8013:184::-;8083:6;8136:2;8124:9;8115:7;8111:23;8107:32;8104:52;;;8152:1;8149;8142:12;8104:52;-1:-1:-1;8175:16:1;;8013:184;-1:-1:-1;8013:184:1:o;8202:128::-;8269:9;;;8290:11;;;8287:37;;;8304:18;;:::i;8335:401::-;8537:2;8519:21;;;8576:2;8556:18;;;8549:30;8615:34;8610:2;8595:18;;8588:62;-1:-1:-1;;;8681:2:1;8666:18;;8659:35;8726:3;8711:19;;8335:401::o;8741:399::-;8943:2;8925:21;;;8982:2;8962:18;;;8955:30;9021:34;9016:2;9001:18;;8994:62;-1:-1:-1;;;9087:2:1;9072:18;;9065:33;9130:3;9115:19;;8741:399::o;10689:168::-;10762:9;;;10793;;10810:15;;;10804:22;;10790:37;10780:71;;10831:18;;:::i;10862:217::-;10902:1;10928;10918:132;;10972:10;10967:3;10963:20;10960:1;10953:31;11007:4;11004:1;10997:15;11035:4;11032:1;11025:15;10918:132;-1:-1:-1;11064:9:1;;10862:217::o;12157:127::-;12218:10;12213:3;12209:20;12206:1;12199:31;12249:4;12246:1;12239:15;12273:4;12270:1;12263:15;12289:980;12551:4;12599:3;12588:9;12584:19;12630:6;12619:9;12612:25;12656:2;12694:6;12689:2;12678:9;12674:18;12667:34;12737:3;12732:2;12721:9;12717:18;12710:31;12761:6;12796;12790:13;12827:6;12819;12812:22;12865:3;12854:9;12850:19;12843:26;;12904:2;12896:6;12892:15;12878:29;;12925:1;12935:195;12949:6;12946:1;12943:13;12935:195;;;13014:13;;-1:-1:-1;;;;;13010:39:1;12998:52;;13105:15;;;;13070:12;;;;13046:1;12964:9;12935:195;;;-1:-1:-1;;;;;;;13186:32:1;;;;13181:2;13166:18;;13159:60;-1:-1:-1;;;13250:3:1;13235:19;13228:35;13147:3;12289:980;-1:-1:-1;;;12289:980:1:o

Swarm Source

ipfs://608144565bc7b865efcfc47deb12cb9a7b536b2e13df75fac94674c8d9c3dba4
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.