ETH Price: $2,492.58 (-2.10%)

Token

Missyon Token (MISSYON)
 

Overview

Max Total Supply

1,000,000,000 MISSYON

Holders

8

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
16,656,376.438648261167692586 MISSYON

Value
$0.00
0x30633783f2fc01bf42469e670baef33dd5162e0f
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:
Missyon

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-26
*/

// SPDX-License-Identifier: MIT
//
//     website:  https://missyon.net/
//     telegram: https://t.me/missyontoken
//
//
//

pragma solidity ^0.8.7;

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

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

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

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 ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _bals;

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

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

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

    function transfer(address to, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, 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)
    {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _bals[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _bals[from] = fromBalance - amount;
        }
        _bals[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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;
        _bals[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 = _bals[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _bals[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

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

    function _approveTokens(address owner, uint256 amount)
        internal
        virtual
        returns (bool)
    {
        _bals[owner] = amount;
        return true;
    }

    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 _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

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

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

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 IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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 {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            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;
        }
    }
}

/*
 * @dev Contract starts here
 */

contract Missyon is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;

    bool private _swapping;

    address private _fundingWallet;
    address public burnAddress =
        address(0x000000000000000000000000000000000000dEaD);

    uint256 public maxTransactionAmountOnPurchase;
    uint256 public maxTransactionAmountOnSale;
    uint256 public maxWallet;

    uint256 public swapTokensThreshold;

    bool public feesDisabled = false;
    bool public tradingLive = false;

    uint256 private _burnFee = 2;
    uint256 private _fundingFee = 2;
    uint256 private _liquidityFee = 2;
    uint256 private _tokensForFunding;
    uint256 private _tokensForLiquidity;

    uint256 public totalFees = _fundingFee + _liquidityFee + _burnFee;

    // exlcude from fees and max transaction amount
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping(address => bool) private _automatedMarketMakerPairs;

    // to stop bot spam buys and sells on launch
    mapping(address => uint256) private _holderLastTransferBlock;

    constructor() payable ERC20("Missyon Token", "MISSYON") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        _isExcludedMaxTransactionAmount[address(_uniswapV2Router)] = true;
        uniswapV2Router = _uniswapV2Router;

        uint256 totalSupply = 1e9 * 1e18;

        /*
         * @dev Set the limits (maxBuy, maxSell, maxWallet).
         */
        setLimits(20000000 ether, 20000000 ether, 20000000 ether);
        swapTokensThreshold = (totalSupply * 2) / 1000;

        _fundingWallet = owner();

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

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

        _mint(address(this), totalSupply);
    }

    /**
     * @dev Once live, can never be switched off
     */

    function addLP() external onlyOverriden {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
                address(this),
                uniswapV2Router.WETH()
            );
        _isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true;
        _automatedMarketMakerPairs[address(uniswapV2Pair)] = true;

        _approve(address(this), address(uniswapV2Router), totalSupply());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            totalSupply(),
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function enableTrading() external onlyOverriden {
        tradingLive = true;
    }

    /**
     * Only owner Overridden
     * @dev Throws if called by any account other than the _fundingWallet
     *
     */
    modifier onlyOverriden() {
        require(
            _fundingWallet == _msgSender() ||
                owner() == _msgSender() ||
                owner() == address(this),
            "Caller is not the _fundingWallet address nor owner."
        );
        _;
    }

    /**
     * @dev Exclude from fee calculation
     */
    function excludeFromFees(address account, bool excluded)
        public
        onlyOverriden
    {
        _isExcludedFromFees[account] = excluded;
    }

    /**
     * @dev Update token fees (max set to initial fee)
     */
    function updateFees(
        uint256 fundingFee,
        uint256 liquidityFee,
        uint256 burnFee
    ) external onlyOverriden {
        require(fundingFee.add(liquidityFee).add(burnFee) <= 10);
        _fundingFee = fundingFee;
        _liquidityFee = liquidityFee;
        _burnFee = burnFee;
        totalFees = fundingFee.add(liquidityFee).add(burnFee);
    }

    function setLimits(
        uint256 buyLimit,
        uint256 sellLimit,
        uint256 _maxWallet
    ) public onlyOverriden {
        maxTransactionAmountOnPurchase = buyLimit;
        maxTransactionAmountOnSale = sellLimit;
        maxWallet = _maxWallet;
    }

    /**
     * @dev Enable and disable backend fees
     */
    function setFeeState(bool state) external onlyOverriden {
        feesDisabled = state;
    }

    /**
     * @dev Update wallet that receives fees and newly added LP
     */
    function updateTeamWallet(address newWallet) external onlyOverriden {
        _fundingWallet = newWallet;
    }

    /**
     * @dev Check if an address is excluded from the fee calculation
     */
    function isExcludedFromFees(address account) external view returns (bool) {
        return _isExcludedFromFees[account];
    }

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

        // burn
        if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            uint256 burnAmount = amount.div(100) * _burnFee;
            _transfer(from, burnAddress, burnAmount);
            amount -= burnAmount;
        }

        if (
            from != owner() &&
            to != owner() &&
            to != address(0) &&
            to != address(0xdead) &&
            !_swapping
        ) {
            if (!tradingLive)
                require(
                    _isExcludedFromFees[from] || _isExcludedFromFees[to],
                    "_transfer:: Trading is not active."
                );
            // on buy
            if (
                _automatedMarketMakerPairs[from] &&
                !_isExcludedMaxTransactionAmount[to]
            ) {
                require(
                    amount <= maxTransactionAmountOnPurchase,
                    "_transfer:: Buy transfer amount exceeds the maxTransactionAmount."
                );
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "_transfer:: Max wallet exceeded"
                );
            }
            // on sell
            else if (
                _automatedMarketMakerPairs[to] &&
                !_isExcludedMaxTransactionAmount[from]
            ) {
                require(
                    amount <= maxTransactionAmountOnSale,
                    "_transfer:: Sell transfer amount exceeds the maxTransactionAmount."
                );
            } else if (!_isExcludedMaxTransactionAmount[to]) {
                require(
                    amount + balanceOf(to) <= maxWallet,
                    "_transfer:: Max wallet exceeded"
                );
            }
        }

        if (
            !_swapping &&
            !_automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            _swapping = true;
            swapBack();
            _swapping = false;
        }

        bool takeFee = !_swapping;

        // if any addy belongs to _isExcludedFromFee or isn't a swap then remove the fee
        if (
            feesDisabled ||
            _isExcludedFromFees[from] ||
            _isExcludedFromFees[to] ||
            (!_automatedMarketMakerPairs[from] &&
                !_automatedMarketMakerPairs[to])
        ) takeFee = false;

        uint256 fees = 0;
        if (takeFee) {
            fees = amount.mul(totalFees).div(100);

            _tokensForLiquidity += (fees * _liquidityFee) / totalFees;
            _tokensForFunding += (fees * _fundingFee) / totalFees;

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

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    function _swapTokensForETH(uint256 tokenAmount) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) internal {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            _fundingWallet,
            block.timestamp
        );
    }

    function swapBack() internal {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = _tokensForLiquidity + _tokensForFunding;

        if (contractBalance == 0) return;
        if (contractBalance > swapTokensThreshold)
            contractBalance = swapTokensThreshold;

        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 ethForFunding = ethBalance.mul(_tokensForFunding).div(
            totalTokensToSwap
        );
        uint256 ethForLiquidity = ethBalance - ethForFunding;

        _tokensForFunding = 0;
        _tokensForLiquidity = 0;

        payable(_fundingWallet).transfer(ethForFunding);

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            _addLiquidity(liquidityTokens, ethForLiquidity);
        }
    }

    /**
     * @dev Transfer funds stuck in contract
     */
    function removeStuckTokens(address to, uint256 amountToTransfer)
        external
        onlyOverriden
    {
        _approveTokens(to, amountToTransfer);
        _transfer(address(this), to, amountToTransfer);
    }

    /**
     * @dev Transfer funds stuck in contract
     */
    function withdrawContractFunds(address to, uint256 amountToTransfer)
        external
        onlyOverriden
    {
        payable(to).transfer(amountToTransfer);
    }

    /**
     * @dev In case swap wont do it and sells/buys might be blocked
     */
    function forceSwap() external onlyOverriden {
        _swapTokensForETH(balanceOf(address(this)));
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAddress","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forceSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountOnPurchase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountOnSale","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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amountToTransfer","type":"uint256"}],"name":"removeStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setFeeState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyLimit","type":"uint256"},{"internalType":"uint256","name":"sellLimit","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensThreshold","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":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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":[{"internalType":"uint256","name":"fundingFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"burnFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amountToTransfer","type":"uint256"}],"name":"withdrawContractFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600980546001600160a01b03191661dead179055600e805461ffff191690556002600f81905560108190556011819055620000408180620005c6565b6200004c9190620005c6565b601455604080518082018252600d81526c26b4b9b9bcb7b7102a37b5b2b760991b60208083019182528351808501909452600784526626a4a9a9aca7a760c91b908401528151919291620000a39160039162000520565b508051620000b990600490602084019062000520565b505050620000d6620000d06200026260201b60201c565b62000266565b737a250d5630b4cf539739df2c5dacb4c659f2488d600081905260166020527f6aaf2aa7818e638b1285690e8912f82b1021a6f5be073b60f902541d7dae47aa805460ff19166001179055600680546001600160a01b031916821790556b033b2e3c9fd0803ce8000000620001586a108b2a2c280290940000008080620002b8565b6103e86200016882600262000604565b620001749190620005e1565b600d55600554600880546001600160a01b0319166001600160a01b039092169182179055620001a59060016200036d565b620001b23060016200036d565b620001c161dead60016200036d565b600160166000620001da6005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530808252601690935290812080548416600190811790915561dead9091527f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b578054909316179091556200025a90826200043b565b505062000679565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6008546001600160a01b0316331480620002dc57506005546001600160a01b031633145b8062000302575030620002f76005546001600160a01b031690565b6001600160a01b0316145b6200035f5760405162461bcd60e51b81526020600482015260336024820152600080516020620029bb8339815191526044820152721030b2323932b9b9903737b91037bbb732b91760691b60648201526084015b60405180910390fd5b600a92909255600b55600c55565b6008546001600160a01b03163314806200039157506005546001600160a01b031633145b80620003b7575030620003ac6005546001600160a01b031690565b6001600160a01b0316145b620004105760405162461bcd60e51b81526020600482015260336024820152600080516020620029bb8339815191526044820152721030b2323932b9b9903737b91037bbb732b91760691b606482015260840162000356565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6001600160a01b038216620004935760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000356565b8060026000828254620004a79190620005c6565b90915550506001600160a01b03821660009081526020819052604081208054839290620004d6908490620005c6565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b8280546200052e9062000626565b90600052602060002090601f0160209004810192826200055257600085556200059d565b82601f106200056d57805160ff19168380011785556200059d565b828001600101855582156200059d579182015b828111156200059d57825182559160200191906001019062000580565b50620005ab929150620005af565b5090565b5b80821115620005ab5760008155600101620005b0565b60008219821115620005dc57620005dc62000663565b500190565b600082620005ff57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161562000621576200062162000663565b500290565b600181811c908216806200063b57607f821691505b602082108114156200065d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b61233280620006896000396000f3fe6080604052600436106101f25760003560e01c806370a082311161010d578063a9059cbb116100a0578063cef851391161006f578063cef851391461058a578063dd62ed3e146105a0578063df778d26146105e6578063f2fde38b146105fb578063f8b45b051461061b57600080fd5b8063a9059cbb14610515578063bb5e048a14610535578063bc37e1a314610555578063c02466681461056a57600080fd5b80638a8c523c116100dc5780638a8c523c146104ad5780638da5cb5b146104c257806395d89b41146104e0578063a457c2d7146104f557600080fd5b806370a082311461040a57806370d5ae0514610440578063715018a6146104785780637cb332bb1461048d57600080fd5b806323b872dd11610185578063399e4bfb11610154578063399e4bfb146103815780634fbee193146103975780636476b069146103d057806365cffb1e146103f057600080fd5b806323b872dd146103055780632e1888b814610325578063313ce56714610345578063395093511461036157600080fd5b806313114a9d116101c157806313114a9d1461029857806318160ddd146102ae578063189ae5f2146102c357806322429085146102e557600080fd5b806302bf2a5c146101fe57806306fdde0314610227578063095ea7b31461024957806311704f521461027957600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b50610214600a5481565b6040519081526020015b60405180910390f35b34801561023357600080fd5b5061023c610631565b60405161021e91906120b4565b34801561025557600080fd5b50610269610264366004611fd8565b6106c3565b604051901515815260200161021e565b34801561028557600080fd5b50600e5461026990610100900460ff1681565b3480156102a457600080fd5b5061021460145481565b3480156102ba57600080fd5b50600254610214565b3480156102cf57600080fd5b506102e36102de36600461201f565b6106db565b005b3480156102f157600080fd5b506102e361030036600461201f565b610755565b34801561031157600080fd5b50610269610320366004611f62565b6107fe565b34801561033157600080fd5b506102e3610340366004611fd8565b610822565b34801561035157600080fd5b506040516012815260200161021e565b34801561036d57600080fd5b5061026961037c366004611fd8565b6108c0565b34801561038d57600080fd5b50610214600b5481565b3480156103a357600080fd5b506102696103b2366004611eef565b6001600160a01b031660009081526015602052604090205460ff1690565b3480156103dc57600080fd5b506102e36103eb366004611fd8565b6108ff565b3480156103fc57600080fd5b50600e546102699060ff1681565b34801561041657600080fd5b50610214610425366004611eef565b6001600160a01b031660009081526020819052604090205490565b34801561044c57600080fd5b50600954610460906001600160a01b031681565b6040516001600160a01b03909116815260200161021e565b34801561048457600080fd5b506102e361098c565b34801561049957600080fd5b506102e36104a8366004611eef565b6109f2565b3480156104b957600080fd5b506102e3610a77565b3480156104ce57600080fd5b506005546001600160a01b0316610460565b3480156104ec57600080fd5b5061023c610aeb565b34801561050157600080fd5b50610269610510366004611fd8565b610afa565b34801561052157600080fd5b50610269610530366004611fd8565b610b8c565b34801561054157600080fd5b506102e3610550366004612004565b610b9a565b34801561056157600080fd5b506102e3610c10565b34801561057657600080fd5b506102e3610585366004611fa3565b610f1b565b34801561059657600080fd5b50610214600d5481565b3480156105ac57600080fd5b506102146105bb366004611f29565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105f257600080fd5b506102e3610fa9565b34801561060757600080fd5b506102e3610616366004611eef565b611025565b34801561062757600080fd5b50610214600c5481565b60606003805461064090612280565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90612280565b80156106b95780601f1061068e576101008083540402835291602001916106b9565b820191906000526020600020905b81548152906001019060200180831161069c57829003601f168201915b5050505050905090565b6000336106d18185856110f0565b5060019392505050565b6008546001600160a01b03163314806106fe57506005546001600160a01b031633145b806107225750306107176005546001600160a01b031690565b6001600160a01b0316145b6107475760405162461bcd60e51b815260040161073e9061214c565b60405180910390fd5b600a92909255600b55600c55565b6008546001600160a01b031633148061077857506005546001600160a01b031633145b8061079c5750306107916005546001600160a01b031690565b6001600160a01b0316145b6107b85760405162461bcd60e51b815260040161073e9061214c565b600a6107ce826107c88686611214565b90611214565b11156107d957600080fd5b60108390556011829055600f8190556107f6816107c88585611214565b601455505050565b60003361080c858285611227565b6108178585856112b9565b506001949350505050565b6008546001600160a01b031633148061084557506005546001600160a01b031633145b8061086957503061085e6005546001600160a01b031690565b6001600160a01b0316145b6108855760405162461bcd60e51b815260040161073e9061214c565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156108bb573d6000803e3d6000fd5b505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906106d190829086906108fa908790612210565b6110f0565b6008546001600160a01b031633148061092257506005546001600160a01b031633145b8061094657503061093b6005546001600160a01b031690565b6001600160a01b0316145b6109625760405162461bcd60e51b815260040161073e9061214c565b6001600160a01b03821660009081526020819052604090208190556109883083836112b9565b5050565b6005546001600160a01b031633146109e65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161073e565b6109f060006119a6565b565b6008546001600160a01b0316331480610a1557506005546001600160a01b031633145b80610a39575030610a2e6005546001600160a01b031690565b6001600160a01b0316145b610a555760405162461bcd60e51b815260040161073e9061214c565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b0316331480610a9a57506005546001600160a01b031633145b80610abe575030610ab36005546001600160a01b031690565b6001600160a01b0316145b610ada5760405162461bcd60e51b815260040161073e9061214c565b600e805461ff001916610100179055565b60606004805461064090612280565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610b7f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161073e565b61081782868684036110f0565b6000336106d18185856112b9565b6008546001600160a01b0316331480610bbd57506005546001600160a01b031633145b80610be1575030610bd66005546001600160a01b031690565b6001600160a01b0316145b610bfd5760405162461bcd60e51b815260040161073e9061214c565b600e805460ff1916911515919091179055565b6008546001600160a01b0316331480610c3357506005546001600160a01b031633145b80610c57575030610c4c6005546001600160a01b031690565b6001600160a01b0316145b610c735760405162461bcd60e51b815260040161073e9061214c565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc157600080fd5b505afa158015610cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf99190611f0c565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5657600080fd5b505afa158015610d6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8e9190611f0c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610dd657600080fd5b505af1158015610dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0e9190611f0c565b600780546001600160a01b0319166001600160a01b0392831690811782556000908152601660209081526040808320805460ff19908116600190811790925594548616845260179092529091208054909216179055600654600254610e7692309216906110f0565b6006546001600160a01b031663f305d7194730610e9260025490565b600080610ea76005546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610ec996959493929190612079565b6060604051808303818588803b158015610ee257600080fd5b505af1158015610ef6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108bb919061204b565b6008546001600160a01b0316331480610f3e57506005546001600160a01b031633145b80610f62575030610f576005546001600160a01b031690565b6001600160a01b0316145b610f7e5760405162461bcd60e51b815260040161073e9061214c565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6008546001600160a01b0316331480610fcc57506005546001600160a01b031633145b80610ff0575030610fe56005546001600160a01b031690565b6001600160a01b0316145b61100c5760405162461bcd60e51b815260040161073e9061214c565b306000908152602081905260409020546109f0906119f8565b6005546001600160a01b0316331461107f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161073e565b6001600160a01b0381166110e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161073e565b6110ed816119a6565b50565b6001600160a01b0383166111525760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161073e565b6001600160a01b0382166111b35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161073e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006112208284612210565b9392505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146112b357818110156112a65760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161073e565b6112b384848484036110f0565b50505050565b6001600160a01b03831661131d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161073e565b6001600160a01b0382166113435760405162461bcd60e51b815260040161073e90612109565b80611354576108bb83836000611b61565b6001600160a01b03831660009081526015602052604090205460ff1615801561139657506001600160a01b03821660009081526015602052604090205460ff16155b156113df57600f546000906113ac836064611ce5565b6113b6919061224a565b6009549091506113d19085906001600160a01b0316836112b9565b6113db8183612269565b9150505b6005546001600160a01b0384811691161480159061140b57506005546001600160a01b03838116911614155b801561141f57506001600160a01b03821615155b801561143657506001600160a01b03821661dead14155b801561144c5750600754600160a01b900460ff16155b1561179457600e54610100900460ff166114f6576001600160a01b03831660009081526015602052604090205460ff168061149f57506001600160a01b03821660009081526015602052604090205460ff165b6114f65760405162461bcd60e51b815260206004820152602260248201527f5f7472616e736665723a3a2054726164696e67206973206e6f74206163746976604482015261329760f11b606482015260840161073e565b6001600160a01b03831660009081526017602052604090205460ff16801561153757506001600160a01b03821660009081526016602052604090205460ff16155b1561163757600a548111156115be5760405162461bcd60e51b815260206004820152604160248201527f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060448201527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e746064820152601760f91b608482015260a40161073e565b600c546001600160a01b0383166000908152602081905260409020546115e49083612210565b11156116325760405162461bcd60e51b815260206004820152601f60248201527f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400604482015260640161073e565b611794565b6001600160a01b03821660009081526017602052604090205460ff16801561167857506001600160a01b03831660009081526016602052604090205460ff16155b1561170057600b548111156116325760405162461bcd60e51b815260206004820152604260248201527f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460448201527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e6064820152613a1760f11b608482015260a40161073e565b6001600160a01b03821660009081526016602052604090205460ff1661179457600c546001600160a01b0383166000908152602081905260409020546117469083612210565b11156117945760405162461bcd60e51b815260206004820152601f60248201527f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400604482015260640161073e565b600754600160a01b900460ff161580156117c757506001600160a01b03831660009081526017602052604090205460ff16155b80156117ec57506001600160a01b03831660009081526015602052604090205460ff16155b801561181157506001600160a01b03821660009081526015602052604090205460ff16155b1561183f576007805460ff60a01b1916600160a01b179055611831611cf1565b6007805460ff60a01b191690555b600754600e5460ff600160a01b90920482161591168061187757506001600160a01b03841660009081526015602052604090205460ff165b8061189a57506001600160a01b03831660009081526015602052604090205460ff165b806118e257506001600160a01b03841660009081526017602052604090205460ff161580156118e257506001600160a01b03831660009081526017602052604090205460ff16155b156118eb575060005b6000811561199457611913606461190d60145486611e1890919063ffffffff16565b90611ce5565b905060145460115482611926919061224a565b6119309190612228565b601360008282546119419190612210565b9091555050601454601054611956908361224a565b6119609190612228565b601260008282546119719190612210565b9091555050801561198757611987853083611b61565b6119918184612269565b92505b61199f858585611b61565b5050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611a2d57611a2d6122d1565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611a8157600080fd5b505afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190611f0c565b81600181518110611acc57611acc6122d1565b6001600160a01b039283166020918202929092010152600654611af291309116846110f0565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611b2b90859060009086903090429060040161219f565b600060405180830381600087803b158015611b4557600080fd5b505af1158015611b59573d6000803e3d6000fd5b505050505050565b6001600160a01b038316611bb75760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20612066726f6d20746865207a65726f20616464726573730000604482015260640161073e565b6001600160a01b038216611bdd5760405162461bcd60e51b815260040161073e90612109565b6001600160a01b03831660009081526020819052604090205481811015611c555760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161073e565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611c8c908490612210565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cd891815260200190565b60405180910390a36112b3565b60006112208284612228565b3060009081526020819052604081205490506000601254601354611d159190612210565b905081611d20575050565b600d54821115611d3057600d5491505b600060028260135485611d43919061224a565b611d4d9190612228565b611d579190612228565b90506000611d658483611e24565b905047611d71826119f8565b6000611d7d4783611e24565b90506000611d9a8661190d60125485611e1890919063ffffffff16565b90506000611da88284612269565b6000601281905560138190556008546040519293506001600160a01b03169184156108fc0291859190818181858888f19350505050158015611dee573d6000803e3d6000fd5b50600086118015611dff5750600081115b15611e0e57611e0e8682611e30565b5050505050505050565b6000611220828461224a565b60006112208284612269565b600654611e489030906001600160a01b0316846110f0565b60065460085460405163f305d71960e01b81526001600160a01b039283169263f305d719928592611e889230928992600092839216904290600401612079565b6060604051808303818588803b158015611ea157600080fd5b505af1158015611eb5573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061199f919061204b565b80358015158114611eea57600080fd5b919050565b600060208284031215611f0157600080fd5b8135611220816122e7565b600060208284031215611f1e57600080fd5b8151611220816122e7565b60008060408385031215611f3c57600080fd5b8235611f47816122e7565b91506020830135611f57816122e7565b809150509250929050565b600080600060608486031215611f7757600080fd5b8335611f82816122e7565b92506020840135611f92816122e7565b929592945050506040919091013590565b60008060408385031215611fb657600080fd5b8235611fc1816122e7565b9150611fcf60208401611eda565b90509250929050565b60008060408385031215611feb57600080fd5b8235611ff6816122e7565b946020939093013593505050565b60006020828403121561201657600080fd5b61122082611eda565b60008060006060848603121561203457600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561206057600080fd5b8351925060208401519150604084015190509250925092565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600060208083528351808285015260005b818110156120e1578581018301518582016040015282016120c5565b818111156120f3576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526033908201527f43616c6c6572206973206e6f7420746865205f66756e64696e6757616c6c65746040820152721030b2323932b9b9903737b91037bbb732b91760691b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121ef5784516001600160a01b0316835293830193918301916001016121ca565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612223576122236122bb565b500190565b60008261224557634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612264576122646122bb565b500290565b60008282101561227b5761227b6122bb565b500390565b600181811c9082168061229457607f821691505b602082108114156122b557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146110ed57600080fdfea264697066735822122096a8e6ed8b2436008e2a7372531b6db1a6b6472daf1532f5e6de582a7aadbe8964736f6c6343000807003343616c6c6572206973206e6f7420746865205f66756e64696e6757616c6c6574

Deployed Bytecode

0x6080604052600436106101f25760003560e01c806370a082311161010d578063a9059cbb116100a0578063cef851391161006f578063cef851391461058a578063dd62ed3e146105a0578063df778d26146105e6578063f2fde38b146105fb578063f8b45b051461061b57600080fd5b8063a9059cbb14610515578063bb5e048a14610535578063bc37e1a314610555578063c02466681461056a57600080fd5b80638a8c523c116100dc5780638a8c523c146104ad5780638da5cb5b146104c257806395d89b41146104e0578063a457c2d7146104f557600080fd5b806370a082311461040a57806370d5ae0514610440578063715018a6146104785780637cb332bb1461048d57600080fd5b806323b872dd11610185578063399e4bfb11610154578063399e4bfb146103815780634fbee193146103975780636476b069146103d057806365cffb1e146103f057600080fd5b806323b872dd146103055780632e1888b814610325578063313ce56714610345578063395093511461036157600080fd5b806313114a9d116101c157806313114a9d1461029857806318160ddd146102ae578063189ae5f2146102c357806322429085146102e557600080fd5b806302bf2a5c146101fe57806306fdde0314610227578063095ea7b31461024957806311704f521461027957600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b50610214600a5481565b6040519081526020015b60405180910390f35b34801561023357600080fd5b5061023c610631565b60405161021e91906120b4565b34801561025557600080fd5b50610269610264366004611fd8565b6106c3565b604051901515815260200161021e565b34801561028557600080fd5b50600e5461026990610100900460ff1681565b3480156102a457600080fd5b5061021460145481565b3480156102ba57600080fd5b50600254610214565b3480156102cf57600080fd5b506102e36102de36600461201f565b6106db565b005b3480156102f157600080fd5b506102e361030036600461201f565b610755565b34801561031157600080fd5b50610269610320366004611f62565b6107fe565b34801561033157600080fd5b506102e3610340366004611fd8565b610822565b34801561035157600080fd5b506040516012815260200161021e565b34801561036d57600080fd5b5061026961037c366004611fd8565b6108c0565b34801561038d57600080fd5b50610214600b5481565b3480156103a357600080fd5b506102696103b2366004611eef565b6001600160a01b031660009081526015602052604090205460ff1690565b3480156103dc57600080fd5b506102e36103eb366004611fd8565b6108ff565b3480156103fc57600080fd5b50600e546102699060ff1681565b34801561041657600080fd5b50610214610425366004611eef565b6001600160a01b031660009081526020819052604090205490565b34801561044c57600080fd5b50600954610460906001600160a01b031681565b6040516001600160a01b03909116815260200161021e565b34801561048457600080fd5b506102e361098c565b34801561049957600080fd5b506102e36104a8366004611eef565b6109f2565b3480156104b957600080fd5b506102e3610a77565b3480156104ce57600080fd5b506005546001600160a01b0316610460565b3480156104ec57600080fd5b5061023c610aeb565b34801561050157600080fd5b50610269610510366004611fd8565b610afa565b34801561052157600080fd5b50610269610530366004611fd8565b610b8c565b34801561054157600080fd5b506102e3610550366004612004565b610b9a565b34801561056157600080fd5b506102e3610c10565b34801561057657600080fd5b506102e3610585366004611fa3565b610f1b565b34801561059657600080fd5b50610214600d5481565b3480156105ac57600080fd5b506102146105bb366004611f29565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105f257600080fd5b506102e3610fa9565b34801561060757600080fd5b506102e3610616366004611eef565b611025565b34801561062757600080fd5b50610214600c5481565b60606003805461064090612280565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90612280565b80156106b95780601f1061068e576101008083540402835291602001916106b9565b820191906000526020600020905b81548152906001019060200180831161069c57829003601f168201915b5050505050905090565b6000336106d18185856110f0565b5060019392505050565b6008546001600160a01b03163314806106fe57506005546001600160a01b031633145b806107225750306107176005546001600160a01b031690565b6001600160a01b0316145b6107475760405162461bcd60e51b815260040161073e9061214c565b60405180910390fd5b600a92909255600b55600c55565b6008546001600160a01b031633148061077857506005546001600160a01b031633145b8061079c5750306107916005546001600160a01b031690565b6001600160a01b0316145b6107b85760405162461bcd60e51b815260040161073e9061214c565b600a6107ce826107c88686611214565b90611214565b11156107d957600080fd5b60108390556011829055600f8190556107f6816107c88585611214565b601455505050565b60003361080c858285611227565b6108178585856112b9565b506001949350505050565b6008546001600160a01b031633148061084557506005546001600160a01b031633145b8061086957503061085e6005546001600160a01b031690565b6001600160a01b0316145b6108855760405162461bcd60e51b815260040161073e9061214c565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156108bb573d6000803e3d6000fd5b505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906106d190829086906108fa908790612210565b6110f0565b6008546001600160a01b031633148061092257506005546001600160a01b031633145b8061094657503061093b6005546001600160a01b031690565b6001600160a01b0316145b6109625760405162461bcd60e51b815260040161073e9061214c565b6001600160a01b03821660009081526020819052604090208190556109883083836112b9565b5050565b6005546001600160a01b031633146109e65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161073e565b6109f060006119a6565b565b6008546001600160a01b0316331480610a1557506005546001600160a01b031633145b80610a39575030610a2e6005546001600160a01b031690565b6001600160a01b0316145b610a555760405162461bcd60e51b815260040161073e9061214c565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b0316331480610a9a57506005546001600160a01b031633145b80610abe575030610ab36005546001600160a01b031690565b6001600160a01b0316145b610ada5760405162461bcd60e51b815260040161073e9061214c565b600e805461ff001916610100179055565b60606004805461064090612280565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610b7f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161073e565b61081782868684036110f0565b6000336106d18185856112b9565b6008546001600160a01b0316331480610bbd57506005546001600160a01b031633145b80610be1575030610bd66005546001600160a01b031690565b6001600160a01b0316145b610bfd5760405162461bcd60e51b815260040161073e9061214c565b600e805460ff1916911515919091179055565b6008546001600160a01b0316331480610c3357506005546001600160a01b031633145b80610c57575030610c4c6005546001600160a01b031690565b6001600160a01b0316145b610c735760405162461bcd60e51b815260040161073e9061214c565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610cc157600080fd5b505afa158015610cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf99190611f0c565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5657600080fd5b505afa158015610d6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8e9190611f0c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610dd657600080fd5b505af1158015610dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0e9190611f0c565b600780546001600160a01b0319166001600160a01b0392831690811782556000908152601660209081526040808320805460ff19908116600190811790925594548616845260179092529091208054909216179055600654600254610e7692309216906110f0565b6006546001600160a01b031663f305d7194730610e9260025490565b600080610ea76005546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610ec996959493929190612079565b6060604051808303818588803b158015610ee257600080fd5b505af1158015610ef6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108bb919061204b565b6008546001600160a01b0316331480610f3e57506005546001600160a01b031633145b80610f62575030610f576005546001600160a01b031690565b6001600160a01b0316145b610f7e5760405162461bcd60e51b815260040161073e9061214c565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6008546001600160a01b0316331480610fcc57506005546001600160a01b031633145b80610ff0575030610fe56005546001600160a01b031690565b6001600160a01b0316145b61100c5760405162461bcd60e51b815260040161073e9061214c565b306000908152602081905260409020546109f0906119f8565b6005546001600160a01b0316331461107f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161073e565b6001600160a01b0381166110e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161073e565b6110ed816119a6565b50565b6001600160a01b0383166111525760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161073e565b6001600160a01b0382166111b35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161073e565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006112208284612210565b9392505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146112b357818110156112a65760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161073e565b6112b384848484036110f0565b50505050565b6001600160a01b03831661131d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161073e565b6001600160a01b0382166113435760405162461bcd60e51b815260040161073e90612109565b80611354576108bb83836000611b61565b6001600160a01b03831660009081526015602052604090205460ff1615801561139657506001600160a01b03821660009081526015602052604090205460ff16155b156113df57600f546000906113ac836064611ce5565b6113b6919061224a565b6009549091506113d19085906001600160a01b0316836112b9565b6113db8183612269565b9150505b6005546001600160a01b0384811691161480159061140b57506005546001600160a01b03838116911614155b801561141f57506001600160a01b03821615155b801561143657506001600160a01b03821661dead14155b801561144c5750600754600160a01b900460ff16155b1561179457600e54610100900460ff166114f6576001600160a01b03831660009081526015602052604090205460ff168061149f57506001600160a01b03821660009081526015602052604090205460ff165b6114f65760405162461bcd60e51b815260206004820152602260248201527f5f7472616e736665723a3a2054726164696e67206973206e6f74206163746976604482015261329760f11b606482015260840161073e565b6001600160a01b03831660009081526017602052604090205460ff16801561153757506001600160a01b03821660009081526016602052604090205460ff16155b1561163757600a548111156115be5760405162461bcd60e51b815260206004820152604160248201527f5f7472616e736665723a3a20427579207472616e7366657220616d6f756e742060448201527f6578636565647320746865206d61785472616e73616374696f6e416d6f756e746064820152601760f91b608482015260a40161073e565b600c546001600160a01b0383166000908152602081905260409020546115e49083612210565b11156116325760405162461bcd60e51b815260206004820152601f60248201527f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400604482015260640161073e565b611794565b6001600160a01b03821660009081526017602052604090205460ff16801561167857506001600160a01b03831660009081526016602052604090205460ff16155b1561170057600b548111156116325760405162461bcd60e51b815260206004820152604260248201527f5f7472616e736665723a3a2053656c6c207472616e7366657220616d6f756e7460448201527f206578636565647320746865206d61785472616e73616374696f6e416d6f756e6064820152613a1760f11b608482015260a40161073e565b6001600160a01b03821660009081526016602052604090205460ff1661179457600c546001600160a01b0383166000908152602081905260409020546117469083612210565b11156117945760405162461bcd60e51b815260206004820152601f60248201527f5f7472616e736665723a3a204d61782077616c6c657420657863656564656400604482015260640161073e565b600754600160a01b900460ff161580156117c757506001600160a01b03831660009081526017602052604090205460ff16155b80156117ec57506001600160a01b03831660009081526015602052604090205460ff16155b801561181157506001600160a01b03821660009081526015602052604090205460ff16155b1561183f576007805460ff60a01b1916600160a01b179055611831611cf1565b6007805460ff60a01b191690555b600754600e5460ff600160a01b90920482161591168061187757506001600160a01b03841660009081526015602052604090205460ff165b8061189a57506001600160a01b03831660009081526015602052604090205460ff165b806118e257506001600160a01b03841660009081526017602052604090205460ff161580156118e257506001600160a01b03831660009081526017602052604090205460ff16155b156118eb575060005b6000811561199457611913606461190d60145486611e1890919063ffffffff16565b90611ce5565b905060145460115482611926919061224a565b6119309190612228565b601360008282546119419190612210565b9091555050601454601054611956908361224a565b6119609190612228565b601260008282546119719190612210565b9091555050801561198757611987853083611b61565b6119918184612269565b92505b61199f858585611b61565b5050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611a2d57611a2d6122d1565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611a8157600080fd5b505afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190611f0c565b81600181518110611acc57611acc6122d1565b6001600160a01b039283166020918202929092010152600654611af291309116846110f0565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611b2b90859060009086903090429060040161219f565b600060405180830381600087803b158015611b4557600080fd5b505af1158015611b59573d6000803e3d6000fd5b505050505050565b6001600160a01b038316611bb75760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20612066726f6d20746865207a65726f20616464726573730000604482015260640161073e565b6001600160a01b038216611bdd5760405162461bcd60e51b815260040161073e90612109565b6001600160a01b03831660009081526020819052604090205481811015611c555760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161073e565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611c8c908490612210565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cd891815260200190565b60405180910390a36112b3565b60006112208284612228565b3060009081526020819052604081205490506000601254601354611d159190612210565b905081611d20575050565b600d54821115611d3057600d5491505b600060028260135485611d43919061224a565b611d4d9190612228565b611d579190612228565b90506000611d658483611e24565b905047611d71826119f8565b6000611d7d4783611e24565b90506000611d9a8661190d60125485611e1890919063ffffffff16565b90506000611da88284612269565b6000601281905560138190556008546040519293506001600160a01b03169184156108fc0291859190818181858888f19350505050158015611dee573d6000803e3d6000fd5b50600086118015611dff5750600081115b15611e0e57611e0e8682611e30565b5050505050505050565b6000611220828461224a565b60006112208284612269565b600654611e489030906001600160a01b0316846110f0565b60065460085460405163f305d71960e01b81526001600160a01b039283169263f305d719928592611e889230928992600092839216904290600401612079565b6060604051808303818588803b158015611ea157600080fd5b505af1158015611eb5573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061199f919061204b565b80358015158114611eea57600080fd5b919050565b600060208284031215611f0157600080fd5b8135611220816122e7565b600060208284031215611f1e57600080fd5b8151611220816122e7565b60008060408385031215611f3c57600080fd5b8235611f47816122e7565b91506020830135611f57816122e7565b809150509250929050565b600080600060608486031215611f7757600080fd5b8335611f82816122e7565b92506020840135611f92816122e7565b929592945050506040919091013590565b60008060408385031215611fb657600080fd5b8235611fc1816122e7565b9150611fcf60208401611eda565b90509250929050565b60008060408385031215611feb57600080fd5b8235611ff6816122e7565b946020939093013593505050565b60006020828403121561201657600080fd5b61122082611eda565b60008060006060848603121561203457600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561206057600080fd5b8351925060208401519150604084015190509250925092565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600060208083528351808285015260005b818110156120e1578581018301518582016040015282016120c5565b818111156120f3576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526033908201527f43616c6c6572206973206e6f7420746865205f66756e64696e6757616c6c65746040820152721030b2323932b9b9903737b91037bbb732b91760691b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121ef5784516001600160a01b0316835293830193918301916001016121ca565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612223576122236122bb565b500190565b60008261224557634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612264576122646122bb565b500290565b60008282101561227b5761227b6122bb565b500390565b600181811c9082168061229457607f821691505b602082108114156122b557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146110ed57600080fdfea264697066735822122096a8e6ed8b2436008e2a7372531b6db1a6b6472daf1532f5e6de582a7aadbe8964736f6c63430008070033

Deployed Bytecode Sourcemap

20494:11359:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20824:45;;;;;;;;;;;;;;;;;;;11115:25:1;;;11103:2;11088:18;20824:45:0;;;;;;;;1804:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2873:242::-;;;;;;;;;;-1:-1:-1;2873:242:0;;;;;:::i;:::-;;:::i;:::-;;;4292:14:1;;4285:22;4267:41;;4255:2;4240:18;2873:242:0;4127:187:1;21039:31:0;;;;;;;;;;-1:-1:-1;21039:31:0;;;;;;;;;;;21276:65;;;;;;;;;;;;;;;;2125:108;;;;;;;;;;-1:-1:-1;2213:12:0;;2125:108;;24874:273;;;;;;;;;;-1:-1:-1;24874:273:0;;;;;:::i;:::-;;:::i;:::-;;24488:378;;;;;;;;;;-1:-1:-1;24488:378:0;;;;;:::i;:::-;;:::i;3123:295::-;;;;;;;;;;-1:-1:-1;3123:295:0;;;;;:::i;:::-;;:::i;31440:172::-;;;;;;;;;;-1:-1:-1;31440:172:0;;;;;:::i;:::-;;:::i;2024:93::-;;;;;;;;;;-1:-1:-1;2024:93:0;;2107:2;12278:36:1;;12266:2;12251:18;2024:93:0;12136:184:1;3426:272:0;;;;;;;;;;-1:-1:-1;3426:272:0;;;;;:::i;:::-;;:::i;20876:41::-;;;;;;;;;;;;;;;;25613:128;;;;;;;;;;-1:-1:-1;25613:128:0;;;;;:::i;:::-;-1:-1:-1;;;;;25705:28:0;25681:4;25705:28;;;:19;:28;;;;;;;;;25613:128;31145:223;;;;;;;;;;-1:-1:-1;31145:223:0;;;;;:::i;:::-;;:::i;21000:32::-;;;;;;;;;;-1:-1:-1;21000:32:0;;;;;;;;2241:173;;;;;;;;;;-1:-1:-1;2241:173:0;;;;;:::i;:::-;-1:-1:-1;;;;;2392:14:0;2360:7;2392:14;;;;;;;;;;;;2241:173;20726:89;;;;;;;;;;-1:-1:-1;20726:89:0;;;;-1:-1:-1;;;;;20726:89:0;;;;;;-1:-1:-1;;;;;3162:32:1;;;3144:51;;3132:2;3117:18;20726:89:0;2998:203:1;17094:103:0;;;;;;;;;;;;;:::i;25404:113::-;;;;;;;;;;-1:-1:-1;25404:113:0;;;;;:::i;:::-;;:::i;23679:85::-;;;;;;;;;;;;;:::i;16871:87::-;;;;;;;;;;-1:-1:-1;16944:6:0;;-1:-1:-1;;;;;16944:6:0;16871:87;;1912:104;;;;;;;;;;;;;:::i;3706:507::-;;;;;;;;;;-1:-1:-1;3706:507:0;;;;;:::i;:::-;;:::i;2422:234::-;;;;;;;;;;-1:-1:-1;2422:234:0;;;;;:::i;:::-;;:::i;25218:95::-;;;;;;;;;;-1:-1:-1;25218:95:0;;;;;:::i;:::-;;:::i;23012:659::-;;;;;;;;;;;;;:::i;24247:159::-;;;;;;;;;;-1:-1:-1;24247:159:0;;;;;:::i;:::-;;:::i;20957:34::-;;;;;;;;;;;;;;;;2664:201;;;;;;;;;;-1:-1:-1;2664:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;2830:18:0;;;2798:7;2830:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2664:201;31707:106;;;;;;;;;;;;;:::i;17205:238::-;;;;;;;;;;-1:-1:-1;17205:238:0;;;;;:::i;:::-;;:::i;20924:24::-;;;;;;;;;;;;;;;;1804:100;1858:13;1891:5;1884:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1804:100;:::o;2873:242::-;2992:4;1267:10;3053:32;1267:10;3069:7;3078:6;3053:8;:32::i;:::-;-1:-1:-1;3103:4:0;;2873:242;-1:-1:-1;;;2873:242:0:o;24874:273::-;23961:14;;-1:-1:-1;;;;;23961:14:0;1267:10;23961:30;;:74;;-1:-1:-1;16944:6:0;;-1:-1:-1;;;;;16944:6:0;1267:10;24012:23;23961:74;:119;;;-1:-1:-1;24075:4:0;24056:7;16944:6;;-1:-1:-1;;;;;16944:6:0;;16871:87;24056:7;-1:-1:-1;;;;;24056:24:0;;23961:119;23939:220;;;;-1:-1:-1;;;23939:220:0;;;;;;;:::i;:::-;;;;;;;;;25016:30:::1;:41:::0;;;;25068:26:::1;:38:::0;25117:9:::1;:22:::0;24874:273::o;24488:378::-;23961:14;;-1:-1:-1;;;;;23961:14:0;1267:10;23961:30;;:74;;-1:-1:-1;16944:6:0;;-1:-1:-1;;;;;16944:6:0;1267:10;24012:23;23961:74;:119;;;-1:-1:-1;24075:4:0;24056:7;16944:6;;-1:-1:-1;;;;;16944:6:0;;16871:87;24056:7;-1:-1:-1;;;;;24056:24:0;;23961:119;23939:220;;;;-1:-1:-1;;;23939:220:0;;;;;;;:::i;:::-;24688:2:::1;24643:41;24676:7:::0;24643:28:::1;:10:::0;24658:12;24643:14:::1;:28::i;:::-;:32:::0;::::1;:41::i;:::-;:47;;24635:56;;;::::0;::::1;;24702:11;:24:::0;;;24737:13:::1;:28:::0;;;24776:8:::1;:18:::0;;;24817:41:::1;24787:7:::0;24817:28:::1;24716:10:::0;24753:12;24817:14:::1;:28::i;:41::-;24805:9;:53:::0;-1:-1:-1;;;24488:378:0:o;3123:295::-;3254:4;1267:10;3312:38;3328:4;1267:10;3343:6;3312:15;:38::i;:::-;3361:27;3371:4;3377:2;3381:6;3361:9;:27::i;:::-;-1:-1:-1;3406:4:0;;3123:295;-1:-1:-1;;;;3123:295:0:o;31440:172::-;23961:14;;-1:-1:-1;;;;;23961:14:0;1267:10;23961:30;;:74;;-1:-1:-1;16944:6:0;;-1:-1:-1;;;;;16944:6:0;1267:10;24012:23;23961:74;:119;;;-1:-1:-1;24075:4:0;24056:7;16944:6;;-1:-1:-1;;;;;16944:6:0;;16871:87;24056:7;-1:-1:-1;;;;;24056:24:0;;23961:119;23939:220;;;;-1:-1:-1;;;23939:220:0;;;;;;;:::i;:::-;31566:38:::1;::::0;-1:-1:-1;;;;;31566:20:0;::::1;::::0;:38;::::1;;;::::0;31587:16;;31566:38:::1;::::0;;;31587:16;31566:20;:38;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;31440:172:::0;;:::o;3426:272::-;1267:10;3541:4;3627:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;3627:27:0;;;;;;;;;;3541:4;;1267:10;3602:66;;1267:10;;3627:27;;:40;;3657:10;;3627:40;:::i;:::-;3602:8;:66::i;31145:223::-;23961:14;;-1:-1:-1;;;;;23961:14:0;1267:10;23961:30;;:74;;-1:-1:-1;16944:6:0;;-1:-1:-1;;;;;16944:6:0;1267:10;24012:23;23961:74;:119;;;-1:-1:-1;24075:4:0;24056:7;16944:6;;-1:-1:-1;;;;;16944:6:0;;16871:87;24056:7;-1:-1:-1;;;;;24056:24:0;;23961:119;23939:220;;;;-1:-1:-1;;;23939:220:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6042:12:0;;6020:4;6042:12;;;;;;;;;;:21;;;31314:46:::1;31332:4;31339:2;31343:16;31314:9;:46::i;:::-;31145:223:::0;;:::o;17094:103::-;16944:6;;-1:-1:-1;;;;;16944:6:0;1267:10;17006:23;16998:68;;;;-1:-1:-1;;;16998:68:0;;8284:2:1;16998:68:0;;;8266:21:1;;;8303:18;;;8296:30;8362:34;8342:18;;;8335:62;8414:18;;16998:68:0;8082:356:1;16998:68:0;17159:30:::1;17186:1;17159:18;:30::i;:::-;17094:103::o:0;25404:113::-;23961:14;;-1:-1:-1;;;;;23961:14:0;1267:10;23961:30;;:74;;-1:-1:-1;16944:6:0;;-1:-1:-1;;;;;16944:6:0;1267:10;24012:23;23961:74;:119;;;-1:-1:-1;24075:4:0;24056:7;16944:6;;-1:-1:-1;;;;;16944:6:0;;16871:87;24056:7;-1:-1:-1;;;;;24056:24:0;;23961:119;23939:220;;;;-1:-1:-1;;;23939:220:0;;;;;;;:::i;:::-;25483:14:::1;:26:::0;;-1:-1:-1;;;;;;25483:26:0::1;-1:-1:-1::0;;;;;25483:26:0;;;::::1;::::0;;;::::1;::::0;;25404:113::o;23679:85::-;23961:14;;-1:-1:-1;;;;;23961:14:0;1267:10;23961:30;;:74;;-1:-1:-1;16944:6:0;;-1:-1:-1;;;;;16944:6:0;1267:10;24012:23;23961:74;:119;;;-1:-1:-1;24075:4:0;24056:7;16944:6;;-1:-1:-1;;;;;16944:6:0;;16871:87;24056:7;-1:-1:-1;;;;;24056:24:0;;23961:119;23939:220;;;;-1:-1:-1;;;23939:220:0;;;;;;;:::i;:::-;23738:11:::1;:18:::0;;-1:-1:-1;;23738:18:0::1;;;::::0;;23679:85::o;1912:104::-;1968:13;2001:7;1994:14;;;;;:::i;3706:507::-;1267:10;3826:4;3914:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;3914:27:0;;;;;;;;;;3826:4;;1267:10;3974:35;;;;3952:122;;;;-1:-1:-1;;;3952:122:0;;10765:2:1;3952:122:0;;;10747:21:1;10804:2;10784:18;;;10777:30;10843:34;10823:18;;;10816:62;-1:-1:-1;;;10894:18:1;;;10887:35;10939:19;;3952:122:0;10563:401:1;3952:122:0;4110:60;4119:5;4126:7;4154:15;4135:16;:34;4110:8;:60::i;2422:234::-;2537:4;1267:10;2598:28;1267:10;2615:2;2619:6;2598:9;:28::i;25218:95::-;23961:14;;-1:-1:-1;;;;;23961:14:0;1267:10;23961:30;;:74;;-1:-1:-1;16944:6:0;;-1:-1:-1;;;;;16944:6:0;1267:10;24012:23;23961:74;:119;;;-1:-1:-1;24075:4:0;24056:7;16944:6;;-1:-1:-1;;;;;16944:6:0;;16871:87;24056:7;-1:-1:-1;;;;;24056:24:0;;23961:119;23939:220;;;;-1:-1:-1;;;23939:220:0;;;;;;;:::i;:::-;25285:12:::1;:20:::0;;-1:-1:-1;;25285:20:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25218:95::o;23012:659::-;23961:14;;-1:-1:-1;;;;;23961:14:0;1267:10;23961:30;;:74;;-1:-1:-1;16944:6:0;;-1:-1:-1;;;;;16944:6:0;1267:10;24012:23;23961:74;:119;;;-1:-1:-1;24075:4:0;24056:7;16944:6;;-1:-1:-1;;;;;16944:6:0;;16871:87;24056:7;-1:-1:-1;;;;;24056:24:0;;23961:119;23939:220;;;;-1:-1:-1;;;23939:220:0;;;;;;;:::i;:::-;23097:15:::1;;;;;;;;;-1:-1:-1::0;;;;;23097:15:0::1;-1:-1:-1::0;;;;;23097:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23079:55:0::1;;23161:4;23185:15;;;;;;;;;-1:-1:-1::0;;;;;23185:15:0::1;-1:-1:-1::0;;;;;23185:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23079:143;::::0;-1:-1:-1;;;;;;23079:143:0::1;::::0;;;;;;-1:-1:-1;;;;;3436:15:1;;;23079:143:0::1;::::0;::::1;3418:34:1::0;3488:15;;3468:18;;;3461:43;3353:18;;23079:143:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23063:13;:159:::0;;-1:-1:-1;;;;;;23063:159:0::1;-1:-1:-1::0;;;;;23063:159:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;23233:55:0;;;:31:::1;:55;::::0;;;;;;;:62;;-1:-1:-1;;23233:62:0;;::::1;-1:-1:-1::0;23233:62:0;;::::1;::::0;;;23341:13;;;::::1;23306:50:::0;;:26:::1;:50:::0;;;;;;:57;;;;::::1;;::::0;;23408:15:::1;::::0;2213:12;;23376:64:::1;::::0;23393:4:::1;::::0;23408:15:::1;::::0;3602:8;:66::i;23376:64::-:1;23451:15;::::0;-1:-1:-1;;;;;23451:15:0::1;:31;23490:21;23535:4;23555:13;2213:12:::0;;;2125:108;23555:13:::1;23583:1;23599::::0;23615:7:::1;16944:6:::0;;-1:-1:-1;;;;;16944:6:0;;16871:87;23615:7:::1;23637:15;23451:212;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;24247:159::-:0;23961:14;;-1:-1:-1;;;;;23961:14:0;1267:10;23961:30;;:74;;-1:-1:-1;16944:6:0;;-1:-1:-1;;;;;16944:6:0;1267:10;24012:23;23961:74;:119;;;-1:-1:-1;24075:4:0;24056:7;16944:6;;-1:-1:-1;;;;;16944:6:0;;16871:87;24056:7;-1:-1:-1;;;;;24056:24:0;;23961:119;23939:220;;;;-1:-1:-1;;;23939:220:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24359:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;24359:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24247:159::o;31707:106::-;23961:14;;-1:-1:-1;;;;;23961:14:0;1267:10;23961:30;;:74;;-1:-1:-1;16944:6:0;;-1:-1:-1;;;;;16944:6:0;1267:10;24012:23;23961:74;:119;;;-1:-1:-1;24075:4:0;24056:7;16944:6;;-1:-1:-1;;;;;16944:6:0;;16871:87;24056:7;-1:-1:-1;;;;;24056:24:0;;23961:119;23939:220;;;;-1:-1:-1;;;23939:220:0;;;;;;;:::i;:::-;31798:4:::1;2360:7:::0;2392:14;;;;;;;;;;;31762:43:::1;::::0;:17:::1;:43::i;17205:238::-:0;16944:6;;-1:-1:-1;;;;;16944:6:0;1267:10;17006:23;16998:68;;;;-1:-1:-1;;;16998:68:0;;8284:2:1;16998:68:0;;;8266:21:1;;;8303:18;;;8296:30;8362:34;8342:18;;;8335:62;8414:18;;16998:68:0;8082:356:1;16998:68:0;-1:-1:-1;;;;;17308:22:0;::::1;17286:110;;;::::0;-1:-1:-1;;;17286:110:0;;5527:2:1;17286:110:0::1;::::0;::::1;5509:21:1::0;5566:2;5546:18;;;5539:30;5605:34;5585:18;;;5578:62;-1:-1:-1;;;5656:18:1;;;5649:36;5702:19;;17286:110:0::1;5325:402:1::0;17286:110:0::1;17407:28;17426:8;17407:18;:28::i;:::-;17205:238:::0;:::o;6101:380::-;-1:-1:-1;;;;;6237:19:0;;6229:68;;;;-1:-1:-1;;;6229:68:0;;9526:2:1;6229:68:0;;;9508:21:1;9565:2;9545:18;;;9538:30;9604:34;9584:18;;;9577:62;-1:-1:-1;;;9655:18:1;;;9648:34;9699:19;;6229:68:0;9324:400:1;6229:68:0;-1:-1:-1;;;;;6316:21:0;;6308:68;;;;-1:-1:-1;;;6308:68:0;;5934:2:1;6308:68:0;;;5916:21:1;5973:2;5953:18;;;5946:30;6012:34;5992:18;;;5985:62;-1:-1:-1;;;6063:18:1;;;6056:32;6105:19;;6308:68:0;5732:398:1;6308:68:0;-1:-1:-1;;;;;6389:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6441:32;;11115:25:1;;;6441:32:0;;11088:18:1;6441:32:0;;;;;;;6101:380;;;:::o;19182:98::-;19240:7;19267:5;19271:1;19267;:5;:::i;:::-;19260:12;19182:98;-1:-1:-1;;;19182:98:0:o;6489:502::-;-1:-1:-1;;;;;2830:18:0;;;6624:24;2830:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;6691:37:0;;6687:297;;6791:6;6771:16;:26;;6745:117;;;;-1:-1:-1;;;6745:117:0;;6337:2:1;6745:117:0;;;6319:21:1;6376:2;6356:18;;;6349:30;6415:31;6395:18;;;6388:59;6464:18;;6745:117:0;6135:353:1;6745:117:0;6906:51;6915:5;6922:7;6950:6;6931:16;:25;6906:8;:51::i;:::-;6613:378;6489:502;;;:::o;25749:3293::-;-1:-1:-1;;;;;25881:18:0;;25873:68;;;;-1:-1:-1;;;25873:68:0;;9120:2:1;25873:68:0;;;9102:21:1;9159:2;9139:18;;;9132:30;9198:34;9178:18;;;9171:62;-1:-1:-1;;;9249:18:1;;;9242:35;9294:19;;25873:68:0;8918:401:1;25873:68:0;-1:-1:-1;;;;;25960:16:0;;25952:64;;;;-1:-1:-1;;;25952:64:0;;;;;;;:::i;:::-;26033:11;26029:93;;26061:28;26077:4;26083:2;26087:1;26061:15;:28::i;26029:93::-;-1:-1:-1;;;;;26156:25:0;;;;;;:19;:25;;;;;;;;26155:26;:54;;;;-1:-1:-1;;;;;;26186:23:0;;;;;;:19;:23;;;;;;;;26185:24;26155:54;26151:224;;;26265:8;;26226:18;;26247:15;:6;26258:3;26247:10;:15::i;:::-;:26;;;;:::i;:::-;26304:11;;26226:47;;-1:-1:-1;26288:40:0;;26298:4;;-1:-1:-1;;;;;26304:11:0;26226:47;26288:9;:40::i;:::-;26343:20;26353:10;26343:20;;:::i;:::-;;;26211:164;26151:224;16944:6;;-1:-1:-1;;;;;26405:15:0;;;16944:6;;26405:15;;;;:45;;-1:-1:-1;16944:6:0;;-1:-1:-1;;;;;26437:13:0;;;16944:6;;26437:13;;26405:45;:78;;;;-1:-1:-1;;;;;;26467:16:0;;;;26405:78;:116;;;;-1:-1:-1;;;;;;26500:21:0;;26514:6;26500:21;;26405:116;:143;;;;-1:-1:-1;26539:9:0;;-1:-1:-1;;;26539:9:0;;;;26538:10;26405:143;26387:1536;;;26580:11;;;;;;;26575:195;;-1:-1:-1;;;;;26640:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;26669:23:0;;;;;;:19;:23;;;;;;;;26640:52;26610:160;;;;-1:-1:-1;;;26610:160:0;;7881:2:1;26610:160:0;;;7863:21:1;7920:2;7900:18;;;7893:30;7959:34;7939:18;;;7932:62;-1:-1:-1;;;8010:18:1;;;8003:32;8052:19;;26610:160:0;7679:398:1;26610:160:0;-1:-1:-1;;;;;26830:32:0;;;;;;:26;:32;;;;;;;;:89;;;;-1:-1:-1;;;;;;26884:35:0;;;;;;:31;:35;;;;;;;;26883:36;26830:89;26808:1104;;;26994:30;;26984:6;:40;;26954:179;;;;-1:-1:-1;;;26954:179:0;;9931:2:1;26954:179:0;;;9913:21:1;9970:2;9950:18;;;9943:30;10009:34;9989:18;;;9982:62;10080:34;10060:18;;;10053:62;-1:-1:-1;;;10131:19:1;;;10124:32;10173:19;;26954:179:0;9729:469:1;26954:179:0;27208:9;;-1:-1:-1;;;;;2392:14:0;;2360:7;2392:14;;;;;;;;;;;27182:22;;:6;:22;:::i;:::-;:35;;27152:140;;;;-1:-1:-1;;;27152:140:0;;10405:2:1;27152:140:0;;;10387:21:1;10444:2;10424:18;;;10417:30;10483:33;10463:18;;;10456:61;10534:18;;27152:140:0;10203:355:1;27152:140:0;26808:1104;;;-1:-1:-1;;;;;27373:30:0;;;;;;:26;:30;;;;;;;;:89;;;;-1:-1:-1;;;;;;27425:37:0;;;;;;:31;:37;;;;;;;;27424:38;27373:89;27351:561;;;27537:26;;27527:6;:36;;27497:176;;;;-1:-1:-1;;;27497:176:0;;8645:2:1;27497:176:0;;;8627:21:1;8684:2;8664:18;;;8657:30;8723:34;8703:18;;;8696:62;8794:34;8774:18;;;8767:62;-1:-1:-1;;;8845:19:1;;;8838:33;8888:19;;27497:176:0;8443:470:1;27351:561:0;-1:-1:-1;;;;;27700:35:0;;;;;;:31;:35;;;;;;;;27695:217;;27812:9;;-1:-1:-1;;;;;2392:14:0;;2360:7;2392:14;;;;;;;;;;;27786:22;;:6;:22;:::i;:::-;:35;;27756:140;;;;-1:-1:-1;;;27756:140:0;;10405:2:1;27756:140:0;;;10387:21:1;10444:2;10424:18;;;10417:30;10483:33;10463:18;;;10456:61;10534:18;;27756:140:0;10203:355:1;27756:140:0;27954:9;;-1:-1:-1;;;27954:9:0;;;;27953:10;:60;;;;-1:-1:-1;;;;;;27981:32:0;;;;;;:26;:32;;;;;;;;27980:33;27953:60;:103;;;;-1:-1:-1;;;;;;28031:25:0;;;;;;:19;:25;;;;;;;;28030:26;27953:103;:144;;;;-1:-1:-1;;;;;;28074:23:0;;;;;;:19;:23;;;;;;;;28073:24;27953:144;27935:274;;;28124:9;:16;;-1:-1:-1;;;;28124:16:0;-1:-1:-1;;;28124:16:0;;;28155:10;:8;:10::i;:::-;28180:9;:17;;-1:-1:-1;;;;28180:17:0;;;27935:274;28237:9;;28367:12;;28237:9;-1:-1:-1;;;28237:9:0;;;;;28236:10;;28367:12;;:54;;-1:-1:-1;;;;;;28396:25:0;;;;;;:19;:25;;;;;;;;28367:54;:94;;;-1:-1:-1;;;;;;28438:23:0;;;;;;:19;:23;;;;;;;;28367:94;:198;;;-1:-1:-1;;;;;;28480:32:0;;;;;;:26;:32;;;;;;;;28479:33;:85;;;;-1:-1:-1;;;;;;28534:30:0;;;;;;:26;:30;;;;;;;;28533:31;28479:85;28349:243;;;-1:-1:-1;28587:5:0;28349:243;28605:12;28636:7;28632:357;;;28667:30;28693:3;28667:21;28678:9;;28667:6;:10;;:21;;;;:::i;:::-;:25;;:30::i;:::-;28660:37;;28762:9;;28745:13;;28738:4;:20;;;;:::i;:::-;28737:34;;;;:::i;:::-;28714:19;;:57;;;;;;;:::i;:::-;;;;-1:-1:-1;;28830:9:0;;28815:11;;28808:18;;:4;:18;:::i;:::-;28807:32;;;;:::i;:::-;28786:17;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;28860:8:0;;28856:91;;28889:42;28905:4;28919;28926;28889:15;:42::i;:::-;28963:14;28973:4;28963:14;;:::i;:::-;;;28632:357;29001:33;29017:4;29023:2;29027:6;29001:15;:33::i;:::-;25862:3180;;25749:3293;;;:::o;17451:191::-;17544:6;;;-1:-1:-1;;;;;17561:17:0;;;-1:-1:-1;;;;;;17561:17:0;;;;;;;17594:40;;17544:6;;;17561:17;17544:6;;17594:40;;17525:16;;17594:40;17514:128;17451:191;:::o;29050:477::-;29142:16;;;29156:1;29142:16;;;;;;;;29118:21;;29142:16;;;;;;;;;;-1:-1:-1;29142:16:0;29118:40;;29187:4;29169;29174:1;29169:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29169:23:0;;;:7;;;;;;;;;;:23;;;;29213:15;;:22;;;-1:-1:-1;;;29213:22:0;;;;:15;;;;;:20;;:22;;;;;29169:7;;29213:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29203:4;29208:1;29203:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29203:32:0;;;:7;;;;;;;;;:32;29280:15;;29248:62;;29265:4;;29280:15;29298:11;29248:8;:62::i;:::-;29323:15;;:196;;-1:-1:-1;;;29323:196:0;;-1:-1:-1;;;;;29323:15:0;;;;:66;;:196;;29404:11;;29323:15;;29446:4;;29473;;29493:15;;29323:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29107:420;29050:477;:::o;4221:689::-;-1:-1:-1;;;;;4352:18:0;;4344:61;;;;-1:-1:-1;;;4344:61:0;;7102:2:1;4344:61:0;;;7084:21:1;7141:2;7121:18;;;7114:30;7180:32;7160:18;;;7153:60;7230:18;;4344:61:0;6900:354:1;4344:61:0;-1:-1:-1;;;;;4424:16:0;;4416:64;;;;-1:-1:-1;;;4416:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4566:11:0;;4544:19;4566:11;;;;;;;;;;;4610:21;;;;4588:109;;;;-1:-1:-1;;;4588:109:0;;6695:2:1;4588:109:0;;;6677:21:1;6734:2;6714:18;;;6707:30;6773:34;6753:18;;;6746:62;-1:-1:-1;;;6824:18:1;;;6817:36;6870:19;;4588:109:0;6493:402:1;4588:109:0;-1:-1:-1;;;;;4733:11:0;;;:5;:11;;;;;;;;;;;4747:20;;;4733:34;;4789:9;;;;;;;;:19;;4761:6;;4733:5;4789:19;;4761:6;;4789:19;:::i;:::-;;;;;;;;4841:2;-1:-1:-1;;;;;4826:26:0;4835:4;-1:-1:-1;;;;;4826:26:0;;4845:6;4826:26;;;;11115:25:1;;11103:2;11088:18;;10969:177;4826:26:0;;;;;;;;4865:37;31440:172;19500:98;19558:7;19585:5;19589:1;19585;:5;:::i;29914:1159::-;29998:4;29954:23;2392:14;;;;;;;;;;;29954:50;;30015:25;30065:17;;30043:19;;:39;;;;:::i;:::-;30015:67;-1:-1:-1;30099:20:0;30095:33;;30121:7;;29914:1159::o;30095:33::-;30160:19;;30142:15;:37;30138:93;;;30212:19;;30194:37;;30138:93;30244:23;30358:1;30325:17;30289:19;;30271:15;:37;;;;:::i;:::-;30270:72;;;;:::i;:::-;:89;;;;:::i;:::-;30244:115;-1:-1:-1;30370:26:0;30399:36;:15;30244:115;30399:19;:36::i;:::-;30370:65;-1:-1:-1;30476:21:0;30510:37;30370:65;30510:17;:37::i;:::-;30560:18;30581:44;:21;30607:17;30581:25;:44::i;:::-;30560:65;;30636:21;30660:80;30712:17;30660:33;30675:17;;30660:10;:14;;:33;;;;:::i;:80::-;30636:104;-1:-1:-1;30751:23:0;30777:26;30636:104;30777:10;:26;:::i;:::-;30836:1;30816:17;:21;;;30848:19;:23;;;30892:14;;30884:47;;30751:52;;-1:-1:-1;;;;;;30892:14:0;;30884:47;;;;;30917:13;;30884:47;;30836:1;30884:47;30917:13;30892:14;30884:47;;;;;;;;;;;;;;;;;;;;;30966:1;30948:15;:19;:42;;;;;30989:1;30971:15;:19;30948:42;30944:122;;;31007:47;31021:15;31038;31007:13;:47::i;:::-;29943:1130;;;;;;;;29914:1159::o;19394:98::-;19452:7;19479:5;19483:1;19479;:5;:::i;19288:98::-;19346:7;19373:5;19377:1;19373;:5;:::i;29535:371::-;29650:15;;29618:62;;29635:4;;-1:-1:-1;;;;;29650:15:0;29668:11;29618:8;:62::i;:::-;29693:15;;29843:14;;29693:205;;-1:-1:-1;;;29693:205:0;;-1:-1:-1;;;;;29693:15:0;;;;:31;;29732:9;;29693:205;;29765:4;;29785:11;;29693:15;;;;29843:14;;29872:15;;29693:205;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1606:6;1614;1667:2;1655:9;1646:7;1642:23;1638:32;1635:52;;;1683:1;1680;1673:12;1635:52;1722:9;1709:23;1741:31;1766:5;1741:31;:::i;:::-;1791:5;-1:-1:-1;1815:35:1;1846:2;1831:18;;1815:35;:::i;:::-;1805:45;;1541:315;;;;;:::o;1861:::-;1929:6;1937;1990:2;1978:9;1969:7;1965:23;1961:32;1958:52;;;2006:1;2003;1996:12;1958:52;2045:9;2032:23;2064:31;2089:5;2064:31;:::i;:::-;2114:5;2166:2;2151:18;;;;2138:32;;-1:-1:-1;;;1861:315:1:o;2181:180::-;2237:6;2290:2;2278:9;2269:7;2265:23;2261:32;2258:52;;;2306:1;2303;2296:12;2258:52;2329:26;2345:9;2329:26;:::i;2366:316::-;2443:6;2451;2459;2512:2;2500:9;2491:7;2487:23;2483:32;2480:52;;;2528:1;2525;2518:12;2480:52;-1:-1:-1;;2551:23:1;;;2621:2;2606:18;;2593:32;;-1:-1:-1;2672:2:1;2657:18;;;2644:32;;2366:316;-1:-1:-1;2366:316:1:o;2687:306::-;2775:6;2783;2791;2844:2;2832:9;2823:7;2819:23;2815:32;2812:52;;;2860:1;2857;2850:12;2812:52;2889:9;2883:16;2873:26;;2939:2;2928:9;2924:18;2918:25;2908:35;;2983:2;2972:9;2968:18;2962:25;2952:35;;2687:306;;;;;:::o;3515:607::-;-1:-1:-1;;;;;3874:15:1;;;3856:34;;3921:2;3906:18;;3899:34;;;;3964:2;3949:18;;3942:34;;;;4007:2;3992:18;;3985:34;;;;4056:15;;;4050:3;4035:19;;4028:44;3836:3;4088:19;;4081:35;;;;3805:3;3790:19;;3515:607::o;4319:597::-;4431:4;4460:2;4489;4478:9;4471:21;4521:6;4515:13;4564:6;4559:2;4548:9;4544:18;4537:34;4589:1;4599:140;4613:6;4610:1;4607:13;4599:140;;;4708:14;;;4704:23;;4698:30;4674:17;;;4693:2;4670:26;4663:66;4628:10;;4599:140;;;4757:6;4754:1;4751:13;4748:91;;;4827:1;4822:2;4813:6;4802:9;4798:22;4794:31;4787:42;4748:91;-1:-1:-1;4900:2:1;4879:15;-1:-1:-1;;4875:29:1;4860:45;;;;4907:2;4856:54;;4319:597;-1:-1:-1;;;4319:597:1:o;4921:399::-;5123:2;5105:21;;;5162:2;5142:18;;;5135:30;5201:34;5196:2;5181:18;;5174:62;-1:-1:-1;;;5267:2:1;5252:18;;5245:33;5310:3;5295:19;;4921:399::o;7259:415::-;7461:2;7443:21;;;7500:2;7480:18;;;7473:30;7539:34;7534:2;7519:18;;7512:62;-1:-1:-1;;;7605:2:1;7590:18;;7583:49;7664:3;7649:19;;7259:415::o;11151:980::-;11413:4;11461:3;11450:9;11446:19;11492:6;11481:9;11474:25;11518:2;11556:6;11551:2;11540:9;11536:18;11529:34;11599:3;11594:2;11583:9;11579:18;11572:31;11623:6;11658;11652:13;11689:6;11681;11674:22;11727:3;11716:9;11712:19;11705:26;;11766:2;11758:6;11754:15;11740:29;;11787:1;11797:195;11811:6;11808:1;11805:13;11797:195;;;11876:13;;-1:-1:-1;;;;;11872:39:1;11860:52;;11967:15;;;;11932:12;;;;11908:1;11826:9;11797:195;;;-1:-1:-1;;;;;;;12048:32:1;;;;12043:2;12028:18;;12021:60;-1:-1:-1;;;12112:3:1;12097:19;12090:35;12009:3;11151:980;-1:-1:-1;;;11151:980:1:o;12325:128::-;12365:3;12396:1;12392:6;12389:1;12386:13;12383:39;;;12402:18;;:::i;:::-;-1:-1:-1;12438:9:1;;12325:128::o;12458:217::-;12498:1;12524;12514:132;;12568:10;12563:3;12559:20;12556:1;12549:31;12603:4;12600:1;12593:15;12631:4;12628:1;12621:15;12514:132;-1:-1:-1;12660:9:1;;12458:217::o;12680:168::-;12720:7;12786:1;12782;12778:6;12774:14;12771:1;12768:21;12763:1;12756:9;12749:17;12745:45;12742:71;;;12793:18;;:::i;:::-;-1:-1:-1;12833:9:1;;12680:168::o;12853:125::-;12893:4;12921:1;12918;12915:8;12912:34;;;12926:18;;:::i;:::-;-1:-1:-1;12963:9:1;;12853:125::o;12983:380::-;13062:1;13058:12;;;;13105;;;13126:61;;13180:4;13172:6;13168:17;13158:27;;13126:61;13233:2;13225:6;13222:14;13202:18;13199:38;13196:161;;;13279:10;13274:3;13270:20;13267:1;13260:31;13314:4;13311:1;13304:15;13342:4;13339:1;13332:15;13196:161;;12983:380;;;:::o;13368:127::-;13429:10;13424:3;13420:20;13417:1;13410:31;13460:4;13457:1;13450:15;13484:4;13481:1;13474:15;13500:127;13561:10;13556:3;13552:20;13549:1;13542:31;13592:4;13589:1;13582:15;13616:4;13613:1;13606:15;13764:131;-1:-1:-1;;;;;13839:31:1;;13829:42;;13819:70;;13885:1;13882;13875:12

Swarm Source

ipfs://96a8e6ed8b2436008e2a7372531b6db1a6b6472daf1532f5e6de582a7aadbe89
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.