ETH Price: $3,350.18 (-7.90%)

Token

Arabian Trump (TRUMP)
 

Overview

Max Total Supply

10,000,000 TRUMP

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 TRUMP

Value
$0.00
0x782a991ba8d4cc2e1560050050f93db44756ec69
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:
ArabianTrump

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-09
*/

// SPDX-License-Identifier: MIT
/**

https://twitter.com/arabiantrump_
https://t.me/Arabian_Trump
https://arabictrump.vip/

**/

pragma solidity ^0.8.16;

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

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

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

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
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);
}

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);

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

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

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
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 anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _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);
    }
}

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

    /**
     * @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 value {ERC20} uses, unless this function is
     * 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 9;
    }

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

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

    /**
     * @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)
        external
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @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)
        external
        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
    ) external virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        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)
        external
        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 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)
        external
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /** @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");

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

    /**
     * @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");

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

    /**
     * @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);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    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 _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");

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

contract ArabianTrump is ERC20, Ownable {
    // TOKENOMICS START ==========================================================>
    string private _name = unicode"Arabian Trump";
    string private _symbol = unicode"TRUMP";
    uint8 private _decimals = 9;
    uint256 private _supply = 10_000_000;
    uint256 public taxBuyForMarketing = 20;
    uint256 public taxSellForMarketing = 30;
    uint256 public maxWalletAmount = ((_supply * 1) / 100) * 10**_decimals; // init max wallet 1%
    address public marketingWallet = 0x2BD0C73a78d2E612294aae7861bE2Ca4b726B421;
    // TOKENOMICS END ============================================================>

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    mapping(address => bool) private _isExcludedFromFee;

    uint256 private _marketingReserves = 0;
    uint256 private _numTokensSellToAddToETH =
        ((_supply * 2) / 10_000) * 10**_decimals;

    bool inSwapAndLiquify;

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

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

    constructor() ERC20(_name, _symbol) {
        _mint(msg.sender, (_supply * 10**_decimals));
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[address(uniswapV2Router)] = true;
        _isExcludedFromFee[msg.sender] = true;
        _isExcludedFromFee[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(
            balanceOf(from) >= amount,
            "ERC20: transfer amount exceeds balance"
        );

        if (
            (from == uniswapV2Pair || to == uniswapV2Pair) && !inSwapAndLiquify
        ) {
            if (from != uniswapV2Pair) {
                uint256 contractLiquidityBalance = balanceOf(address(this));
                if ((contractLiquidityBalance) >= _numTokensSellToAddToETH) {
                    _swapTokensForEth(contractLiquidityBalance);
                    _marketingReserves = 0;
                    bool sent = payable(marketingWallet).send(
                        address(this).balance
                    );
                    require(sent, "Failed to send ETH");
                }
            }

            uint256 transferAmount;
            if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
                transferAmount = amount;
            } else {
                if (from == uniswapV2Pair) {
                    require(
                        (amount + balanceOf(to)) <= maxWalletAmount,
                        "ERC20: balance amount exceeded max wallet amount limit"
                    );
                }
                uint256 marketingShare = 0;
                if (from == uniswapV2Pair) {
                    marketingShare = ((amount * taxBuyForMarketing) / 100);
                } else {
                    marketingShare = ((amount * taxSellForMarketing) / 100);
                }

                transferAmount = amount - (marketingShare);
                _marketingReserves += marketingShare;

                if (marketingShare > 0)
                    super._transfer(from, address(this), (marketingShare));
            }
            super._transfer(from, to, transferAmount);
        } else {
            super._transfer(from, to, amount);
        }
    }

    function _swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        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 + 300)
        );
    }

    function changeMarketingWallet(address newWallet)
        public
        onlyOwner
        returns (bool)
    {
        marketingWallet = newWallet;
        return true;
    }

    function changeTaxForMarketing(
        uint256 _taxBuyForMarketing,
        uint256 _taxSellForMarketing
    ) public onlyOwner returns (bool) {
        require(
            (_taxBuyForMarketing) <= 10,
            "ERC20: total tax must not be greater than 70"
        );
        require(
            (_taxSellForMarketing) <= 10,
            "ERC20: total tax must not be greater than 70"
        );
        taxBuyForMarketing = _taxBuyForMarketing;
        taxSellForMarketing = _taxSellForMarketing;

        return true;
    }

    function removeLimit() public onlyOwner returns (bool) {
        maxWalletAmount = _supply * 10**_decimals;
        return true;
    }

    receive() external payable {}
}

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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_taxBuyForMarketing","type":"uint256"},{"internalType":"uint256","name":"_taxSellForMarketing","type":"uint256"}],"name":"changeTaxForMarketing","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxBuyForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSellForMarketing","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

610100604052600d60c09081526c04172616269616e205472756d7609c1b60e0526006906200002f90826200062d565b5060408051808201909152600581526405452554d560dc1b60208201526007906200005b90826200062d565b506008805460ff191660099081179091556298968081556014600a908155601e600b556200008a919062000808565b606460095460016200009d91906200081f565b620000a9919062000839565b620000b591906200081f565b600c55600d80546001600160a01b031916732bd0c73a78d2e612294aae7861be2ca4b726b4211790555f600f55600854620000f59060ff16600a62000808565b61271060095460026200010991906200081f565b62000115919062000839565b6200012191906200081f565b60105534801562000130575f80fd5b50600680546200014090620005a3565b80601f01602080910402602001604051908101604052809291908181526020018280546200016e90620005a3565b8015620001bd5780601f106200019357610100808354040283529160200191620001bd565b820191905f5260205f20905b8154815290600101906020018083116200019f57829003601f168201915b505050505060078054620001d190620005a3565b80601f0160208091040260200160405190810160405280929190818152602001828054620001ff90620005a3565b80156200024e5780601f1062000224576101008083540402835291602001916200024e565b820191905f5260205f20905b8154815290600101906020018083116200023057829003601f168201915b505050505081600390816200026491906200062d565b5060046200027382826200062d565b505050620002906200028a6200047660201b60201c565b6200047a565b600854620002bf903390620002aa9060ff16600a62000808565b600954620002b991906200081f565b620004cb565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000314573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200033a919062000859565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000386573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ac919062000859565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620003f7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200041d919062000859565b6001600160a01b0390811660a05290811660808190525f908152600e60205260408082208054600160ff1991821681179092553384528284208054821683179055600d5490941683529120805490921617905562000897565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620005265760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f82825462000539919062000881565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005b857607f821691505b602082108103620005d757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200062857805f5260205f20601f840160051c81016020851015620006045750805b601f840160051c820191505b8181101562000625575f815560010162000610565b50505b505050565b81516001600160401b038111156200064957620006496200058f565b62000661816200065a8454620005a3565b84620005dd565b602080601f83116001811462000697575f84156200067f5750858301515b5f19600386901b1c1916600185901b178555620006f1565b5f85815260208120601f198616915b82811015620006c757888601518255948401946001909101908401620006a6565b5085821015620006e557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200074d57815f1904821115620007315762000731620006f9565b808516156200073f57918102915b93841c939080029062000712565b509250929050565b5f82620007655750600162000802565b816200077357505f62000802565b81600181146200078c57600281146200079757620007b7565b600191505062000802565b60ff841115620007ab57620007ab620006f9565b50506001821b62000802565b5060208310610133831016604e8410600b8410161715620007dc575081810a62000802565b620007e883836200070d565b805f1904821115620007fe57620007fe620006f9565b0290505b92915050565b5f6200081860ff84168362000755565b9392505050565b8082028115828204841417620008025762000802620006f9565b5f826200085457634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200086a575f80fd5b81516001600160a01b038116811462000818575f80fd5b80820180821115620008025762000802620006f9565b60805160a0516114c1620008f15f395f81816102950152818161095f0152818161099a015281816109e401528181610afc0152610bc801525f81816101b401528181610d9a01528181610e510152610e8001526114c15ff3fe60806040526004361061013f575f3560e01c8063715018a6116100b3578063aa4bde281161006d578063aa4bde28146103a3578063b60c30f9146103b8578063bb85c6d1146103cd578063d0e1d262146103ec578063dd62ed3e14610401578063f2fde38b14610420575f80fd5b8063715018a6146102ff57806375f0a874146103155780638da5cb5b1461033457806395d89b4114610351578063a457c2d714610365578063a9059cbb14610384575f80fd5b8063313ce56711610104578063313ce5671461022b5780633441f06f14610246578063395093511461026557806349bd5a5e1461028457806362256589146102b757806370a08231146102cb575f80fd5b806306fdde031461014a578063095ea7b3146101745780631694505e146101a357806318160ddd146101ee57806323b872dd1461020c575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5061015e61043f565b60405161016b9190610ffa565b60405180910390f35b34801561017f575f80fd5b5061019361018e36600461105a565b6104cf565b604051901515815260200161016b565b3480156101ae575f80fd5b506101d67f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161016b565b3480156101f9575f80fd5b506002545b60405190815260200161016b565b348015610217575f80fd5b50610193610226366004611084565b6104e8565b348015610236575f80fd5b506040516009815260200161016b565b348015610251575f80fd5b506101936102603660046110c2565b61050b565b348015610270575f80fd5b5061019361027f36600461105a565b61056e565b34801561028f575f80fd5b506101d67f000000000000000000000000000000000000000000000000000000000000000081565b3480156102c2575f80fd5b5061019361058f565b3480156102d6575f80fd5b506101fe6102e53660046110e2565b6001600160a01b03165f9081526020819052604090205490565b34801561030a575f80fd5b506103136105bf565b005b348015610320575f80fd5b50600d546101d6906001600160a01b031681565b34801561033f575f80fd5b506005546001600160a01b03166101d6565b34801561035c575f80fd5b5061015e6105d2565b348015610370575f80fd5b5061019361037f36600461105a565b6105e1565b34801561038f575f80fd5b5061019361039e36600461105a565b61065b565b3480156103ae575f80fd5b506101fe600c5481565b3480156103c3575f80fd5b506101fe600a5481565b3480156103d8575f80fd5b506101936103e73660046110e2565b610668565b3480156103f7575f80fd5b506101fe600b5481565b34801561040c575f80fd5b506101fe61041b366004611104565b610696565b34801561042b575f80fd5b5061031361043a3660046110e2565b6106c0565b60606003805461044e9061113b565b80601f016020809104026020016040519081016040528092919081815260200182805461047a9061113b565b80156104c55780601f1061049c576101008083540402835291602001916104c5565b820191905f5260205f20905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b5f336104dc818585610739565b60019150505b92915050565b5f336104f585828561085c565b6105008585856108d4565b506001949350505050565b5f610514610c8d565b600a83111561053e5760405162461bcd60e51b815260040161053590611173565b60405180910390fd5b600a82111561055f5760405162461bcd60e51b815260040161053590611173565b50600a91909155600b55600190565b5f336104dc8185856105808383610696565b61058a91906111d3565b610739565b5f610598610c8d565b6008546105a99060ff16600a6112c6565b6009546105b691906112d4565b600c5550600190565b6105c7610c8d565b6105d05f610ce7565b565b60606004805461044e9061113b565b5f33816105ee8286610696565b90508381101561064e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610535565b6105008286868403610739565b5f336104dc8185856108d4565b5f610671610c8d565b50600d80546001600160a01b0383166001600160a01b03199091161790556001919050565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6106c8610c8d565b6001600160a01b03811661072d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610535565b61073681610ce7565b50565b6001600160a01b03831661079b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610535565b6001600160a01b0382166107fc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610535565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6108678484610696565b90505f1981146108ce57818110156108c15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6108ce8484848403610739565b50505050565b6001600160a01b0383166108fa5760405162461bcd60e51b8152600401610535906112eb565b6001600160a01b0382166109205760405162461bcd60e51b815260040161053590611330565b8061093f846001600160a01b03165f9081526020819052604090205490565b101561095d5760405162461bcd60e51b815260040161053590611373565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614806109ce57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b80156109dd575060115460ff16155b15610c7d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614610ab157305f908152602081905260409020546010548110610aaf57610a3c81610d38565b5f600f819055600d546040516001600160a01b03909116904780156108fc029184818181858888f19350505050905080610aad5760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b6044820152606401610535565b505b505b6001600160a01b0383165f908152600e602052604081205460ff1680610aee57506001600160a01b0383165f908152600e602052604090205460ff165b15610afa575080610c72565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603610bc557600c546001600160a01b0384165f90815260208190526040902054610b5890846111d3565b1115610bc55760405162461bcd60e51b815260206004820152603660248201527f45524332303a2062616c616e636520616d6f756e74206578636565646564206d604482015275185e081dd85b1b195d08185b5bdd5b9d081b1a5b5a5d60521b6064820152608401610535565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603610c20576064600a5484610c0f91906112d4565b610c1991906113b9565b9050610c3d565b6064600b5484610c3091906112d4565b610c3a91906113b9565b90505b610c4781846113d8565b915080600f5f828254610c5a91906111d3565b90915550508015610c7057610c70853083610f10565b505b6108ce848483610f10565b610c88838383610f10565b505050565b6005546001600160a01b031633146105d05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610535565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6011805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610d7857610d786113eb565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1891906113ff565b81600181518110610e2b57610e2b6113eb565b60200260200101906001600160a01b031690816001600160a01b031681525050610e76307f000000000000000000000000000000000000000000000000000000000000000084610739565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663791ac947835f8430610eb54261012c6111d3565b6040518663ffffffff1660e01b8152600401610ed595949392919061141a565b5f604051808303815f87803b158015610eec575f80fd5b505af1158015610efe573d5f803e3d5ffd5b50506011805460ff1916905550505050565b6001600160a01b038316610f365760405162461bcd60e51b8152600401610535906112eb565b6001600160a01b038216610f5c5760405162461bcd60e51b815260040161053590611330565b6001600160a01b0383165f9081526020819052604090205481811015610f945760405162461bcd60e51b815260040161053590611373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b5f602080835283518060208501525f5b818110156110265785810183015185820160400152820161100a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610736575f80fd5b5f806040838503121561106b575f80fd5b823561107681611046565b946020939093013593505050565b5f805f60608486031215611096575f80fd5b83356110a181611046565b925060208401356110b181611046565b929592945050506040919091013590565b5f80604083850312156110d3575f80fd5b50508035926020909101359150565b5f602082840312156110f2575f80fd5b81356110fd81611046565b9392505050565b5f8060408385031215611115575f80fd5b823561112081611046565b9150602083013561113081611046565b809150509250929050565b600181811c9082168061114f57607f821691505b60208210810361116d57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602c908201527f45524332303a20746f74616c20746178206d757374206e6f742062652067726560408201526b061746572207468616e2037360a41b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104e2576104e26111bf565b600181815b8085111561122057815f1904821115611206576112066111bf565b8085161561121357918102915b93841c93908002906111eb565b509250929050565b5f82611236575060016104e2565b8161124257505f6104e2565b816001811461125857600281146112625761127e565b60019150506104e2565b60ff841115611273576112736111bf565b50506001821b6104e2565b5060208310610133831016604e8410600b84101617156112a1575081810a6104e2565b6112ab83836111e6565b805f19048211156112be576112be6111bf565b029392505050565b5f6110fd60ff841683611228565b80820281158282048414176104e2576104e26111bf565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b5f826113d357634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104e2576104e26111bf565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561140f575f80fd5b81516110fd81611046565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561146a5784516001600160a01b031683529383019391830191600101611445565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122067dc4752f65a9f4a7998178fa4c708f17a8dd84542b5a198bf984d3b56f859f864736f6c63430008170033

Deployed Bytecode

0x60806040526004361061013f575f3560e01c8063715018a6116100b3578063aa4bde281161006d578063aa4bde28146103a3578063b60c30f9146103b8578063bb85c6d1146103cd578063d0e1d262146103ec578063dd62ed3e14610401578063f2fde38b14610420575f80fd5b8063715018a6146102ff57806375f0a874146103155780638da5cb5b1461033457806395d89b4114610351578063a457c2d714610365578063a9059cbb14610384575f80fd5b8063313ce56711610104578063313ce5671461022b5780633441f06f14610246578063395093511461026557806349bd5a5e1461028457806362256589146102b757806370a08231146102cb575f80fd5b806306fdde031461014a578063095ea7b3146101745780631694505e146101a357806318160ddd146101ee57806323b872dd1461020c575f80fd5b3661014657005b5f80fd5b348015610155575f80fd5b5061015e61043f565b60405161016b9190610ffa565b60405180910390f35b34801561017f575f80fd5b5061019361018e36600461105a565b6104cf565b604051901515815260200161016b565b3480156101ae575f80fd5b506101d67f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161016b565b3480156101f9575f80fd5b506002545b60405190815260200161016b565b348015610217575f80fd5b50610193610226366004611084565b6104e8565b348015610236575f80fd5b506040516009815260200161016b565b348015610251575f80fd5b506101936102603660046110c2565b61050b565b348015610270575f80fd5b5061019361027f36600461105a565b61056e565b34801561028f575f80fd5b506101d67f0000000000000000000000000acff9be850a920d436be0f7f4c7cc1459ffafad81565b3480156102c2575f80fd5b5061019361058f565b3480156102d6575f80fd5b506101fe6102e53660046110e2565b6001600160a01b03165f9081526020819052604090205490565b34801561030a575f80fd5b506103136105bf565b005b348015610320575f80fd5b50600d546101d6906001600160a01b031681565b34801561033f575f80fd5b506005546001600160a01b03166101d6565b34801561035c575f80fd5b5061015e6105d2565b348015610370575f80fd5b5061019361037f36600461105a565b6105e1565b34801561038f575f80fd5b5061019361039e36600461105a565b61065b565b3480156103ae575f80fd5b506101fe600c5481565b3480156103c3575f80fd5b506101fe600a5481565b3480156103d8575f80fd5b506101936103e73660046110e2565b610668565b3480156103f7575f80fd5b506101fe600b5481565b34801561040c575f80fd5b506101fe61041b366004611104565b610696565b34801561042b575f80fd5b5061031361043a3660046110e2565b6106c0565b60606003805461044e9061113b565b80601f016020809104026020016040519081016040528092919081815260200182805461047a9061113b565b80156104c55780601f1061049c576101008083540402835291602001916104c5565b820191905f5260205f20905b8154815290600101906020018083116104a857829003601f168201915b5050505050905090565b5f336104dc818585610739565b60019150505b92915050565b5f336104f585828561085c565b6105008585856108d4565b506001949350505050565b5f610514610c8d565b600a83111561053e5760405162461bcd60e51b815260040161053590611173565b60405180910390fd5b600a82111561055f5760405162461bcd60e51b815260040161053590611173565b50600a91909155600b55600190565b5f336104dc8185856105808383610696565b61058a91906111d3565b610739565b5f610598610c8d565b6008546105a99060ff16600a6112c6565b6009546105b691906112d4565b600c5550600190565b6105c7610c8d565b6105d05f610ce7565b565b60606004805461044e9061113b565b5f33816105ee8286610696565b90508381101561064e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610535565b6105008286868403610739565b5f336104dc8185856108d4565b5f610671610c8d565b50600d80546001600160a01b0383166001600160a01b03199091161790556001919050565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6106c8610c8d565b6001600160a01b03811661072d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610535565b61073681610ce7565b50565b6001600160a01b03831661079b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610535565b6001600160a01b0382166107fc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610535565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6108678484610696565b90505f1981146108ce57818110156108c15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6108ce8484848403610739565b50505050565b6001600160a01b0383166108fa5760405162461bcd60e51b8152600401610535906112eb565b6001600160a01b0382166109205760405162461bcd60e51b815260040161053590611330565b8061093f846001600160a01b03165f9081526020819052604090205490565b101561095d5760405162461bcd60e51b815260040161053590611373565b7f0000000000000000000000000acff9be850a920d436be0f7f4c7cc1459ffafad6001600160a01b0316836001600160a01b031614806109ce57507f0000000000000000000000000acff9be850a920d436be0f7f4c7cc1459ffafad6001600160a01b0316826001600160a01b0316145b80156109dd575060115460ff16155b15610c7d577f0000000000000000000000000acff9be850a920d436be0f7f4c7cc1459ffafad6001600160a01b0316836001600160a01b031614610ab157305f908152602081905260409020546010548110610aaf57610a3c81610d38565b5f600f819055600d546040516001600160a01b03909116904780156108fc029184818181858888f19350505050905080610aad5760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b6044820152606401610535565b505b505b6001600160a01b0383165f908152600e602052604081205460ff1680610aee57506001600160a01b0383165f908152600e602052604090205460ff165b15610afa575080610c72565b7f0000000000000000000000000acff9be850a920d436be0f7f4c7cc1459ffafad6001600160a01b0316846001600160a01b031603610bc557600c546001600160a01b0384165f90815260208190526040902054610b5890846111d3565b1115610bc55760405162461bcd60e51b815260206004820152603660248201527f45524332303a2062616c616e636520616d6f756e74206578636565646564206d604482015275185e081dd85b1b195d08185b5bdd5b9d081b1a5b5a5d60521b6064820152608401610535565b5f7f0000000000000000000000000acff9be850a920d436be0f7f4c7cc1459ffafad6001600160a01b0316856001600160a01b031603610c20576064600a5484610c0f91906112d4565b610c1991906113b9565b9050610c3d565b6064600b5484610c3091906112d4565b610c3a91906113b9565b90505b610c4781846113d8565b915080600f5f828254610c5a91906111d3565b90915550508015610c7057610c70853083610f10565b505b6108ce848483610f10565b610c88838383610f10565b505050565b6005546001600160a01b031633146105d05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610535565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6011805460ff191660011790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610d7857610d786113eb565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610df4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e1891906113ff565b81600181518110610e2b57610e2b6113eb565b60200260200101906001600160a01b031690816001600160a01b031681525050610e76307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610739565b6001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1663791ac947835f8430610eb54261012c6111d3565b6040518663ffffffff1660e01b8152600401610ed595949392919061141a565b5f604051808303815f87803b158015610eec575f80fd5b505af1158015610efe573d5f803e3d5ffd5b50506011805460ff1916905550505050565b6001600160a01b038316610f365760405162461bcd60e51b8152600401610535906112eb565b6001600160a01b038216610f5c5760405162461bcd60e51b815260040161053590611330565b6001600160a01b0383165f9081526020819052604090205481811015610f945760405162461bcd60e51b815260040161053590611373565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b5f602080835283518060208501525f5b818110156110265785810183015185820160400152820161100a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610736575f80fd5b5f806040838503121561106b575f80fd5b823561107681611046565b946020939093013593505050565b5f805f60608486031215611096575f80fd5b83356110a181611046565b925060208401356110b181611046565b929592945050506040919091013590565b5f80604083850312156110d3575f80fd5b50508035926020909101359150565b5f602082840312156110f2575f80fd5b81356110fd81611046565b9392505050565b5f8060408385031215611115575f80fd5b823561112081611046565b9150602083013561113081611046565b809150509250929050565b600181811c9082168061114f57607f821691505b60208210810361116d57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602c908201527f45524332303a20746f74616c20746178206d757374206e6f742062652067726560408201526b061746572207468616e2037360a41b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104e2576104e26111bf565b600181815b8085111561122057815f1904821115611206576112066111bf565b8085161561121357918102915b93841c93908002906111eb565b509250929050565b5f82611236575060016104e2565b8161124257505f6104e2565b816001811461125857600281146112625761127e565b60019150506104e2565b60ff841115611273576112736111bf565b50506001821b6104e2565b5060208310610133831016604e8410600b84101617156112a1575081810a6104e2565b6112ab83836111e6565b805f19048211156112be576112be6111bf565b029392505050565b5f6110fd60ff841683611228565b80820281158282048414176104e2576104e26111bf565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b5f826113d357634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104e2576104e26111bf565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561140f575f80fd5b81516110fd81611046565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561146a5784516001600160a01b031683529383019391830191600101611445565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122067dc4752f65a9f4a7998178fa4c708f17a8dd84542b5a198bf984d3b56f859f864736f6c63430008170033

Deployed Bytecode Sourcemap

23575:5454:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14490:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16764:244;;;;;;;;;;-1:-1:-1;16764:244:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;16764:244:0;1023:187:1;24241:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;24241:51:0;1215:229:1;15628:110:0;;;;;;;;;;-1:-1:-1;15718:12:0;;15628:110;;;1595:25:1;;;1583:2;1568:18;15628:110:0;1449:177:1;17588:297:0;;;;;;;;;;-1:-1:-1;17588:297:0;;;;;:::i;:::-;;:::i;15471:92::-;;;;;;;;;;-1:-1:-1;15471:92:0;;15554:1;2234:36:1;;2222:2;2207:18;15471:92:0;2092:184:1;28296:548:0;;;;;;;;;;-1:-1:-1;28296:548:0;;;;;:::i;:::-;;:::i;19304:272::-;;;;;;;;;;-1:-1:-1;19304:272:0;;;;;:::i;:::-;;:::i;24299:38::-;;;;;;;;;;;;;;;28852:137;;;;;;;;;;;;;:::i;14655:177::-;;;;;;;;;;-1:-1:-1;14655:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;14806:18:0;14774:7;14806:18;;;;;;;;;;;;14655:177;12945:103;;;;;;;;;;;;;:::i;:::-;;24072:75;;;;;;;;;;-1:-1:-1;24072:75:0;;;;-1:-1:-1;;;;;24072:75:0;;;12297:87;;;;;;;;;;-1:-1:-1;12370:6:0;;-1:-1:-1;;;;;12370:6:0;12297:87;;14314:106;;;;;;;;;;;;;:::i;18388:507::-;;;;;;;;;;-1:-1:-1;18388:507:0;;;;;:::i;:::-;;:::i;16208:236::-;;;;;;;;;;-1:-1:-1;16208:236:0;;;;;:::i;:::-;;:::i;23973:70::-;;;;;;;;;;;;;;;;23882:38;;;;;;;;;;;;;;;;28106:182;;;;;;;;;;-1:-1:-1;28106:182:0;;;;;:::i;:::-;;:::i;23927:39::-;;;;;;;;;;;;;;;;15801:201;;;;;;;;;;-1:-1:-1;15801:201:0;;;;;:::i;:::-;;:::i;13203:238::-;;;;;;;;;;-1:-1:-1;13203:238:0;;;;;:::i;:::-;;:::i;14490:102::-;14546:13;14579:5;14572:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14490:102;:::o;16764:244::-;16885:4;11170:10;16946:32;11170:10;16962:7;16971:6;16946:8;:32::i;:::-;16996:4;16989:11;;;16764:244;;;;;:::o;17588:297::-;17721:4;11170:10;17779:38;17795:4;11170:10;17810:6;17779:15;:38::i;:::-;17828:27;17838:4;17844:2;17848:6;17828:9;:27::i;:::-;-1:-1:-1;17873:4:0;;17588:297;-1:-1:-1;;;;17588:297:0:o;28296:548::-;28437:4;12183:13;:11;:13::i;:::-;28501:2:::1;28477:19;28476:27;;28454:121;;;;-1:-1:-1::0;;;28454:121:0::1;;;;;;;:::i;:::-;;;;;;;;;28634:2;28609:20;28608:28;;28586:122;;;;-1:-1:-1::0;;;28586:122:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;28719:18:0::1;:40:::0;;;;28770:19:::1;:42:::0;28832:4:::1;::::0;28296:548::o;19304:272::-;19421:4;11170:10;19482:64;11170:10;19498:7;19535:10;19507:25;11170:10;19498:7;19507:9;:25::i;:::-;:38;;;;:::i;:::-;19482:8;:64::i;28852:137::-;28901:4;12183:13;:11;:13::i;:::-;28950:9:::1;::::0;28946:13:::1;::::0;28950:9:::1;;28946:2;:13;:::i;:::-;28936:7;;:23;;;;:::i;:::-;28918:15;:41:::0;-1:-1:-1;28977:4:0::1;28852:137:::0;:::o;12945:103::-;12183:13;:11;:13::i;:::-;13010:30:::1;13037:1;13010:18;:30::i;:::-;12945:103::o:0;14314:106::-;14372:13;14405:7;14398:14;;;;;:::i;18388:507::-;18510:4;11170:10;18510:4;18598:25;11170:10;18615:7;18598:9;:25::i;:::-;18571:52;;18676:15;18656:16;:35;;18634:122;;;;-1:-1:-1;;;18634:122:0;;6199:2:1;18634:122:0;;;6181:21:1;6238:2;6218:18;;;6211:30;6277:34;6257:18;;;6250:62;-1:-1:-1;;;6328:18:1;;;6321:35;6373:19;;18634:122:0;5997:401:1;18634:122:0;18792:60;18801:5;18808:7;18836:15;18817:16;:34;18792:8;:60::i;16208:236::-;16325:4;11170:10;16386:28;11170:10;16403:2;16407:6;16386:9;:28::i;28106:182::-;28209:4;12183:13;:11;:13::i;:::-;-1:-1:-1;28231:15:0::1;:27:::0;;-1:-1:-1;;;;;28231:27:0;::::1;-1:-1:-1::0;;;;;;28231:27:0;;::::1;;::::0;;;28106:182;;;:::o;15801:201::-;-1:-1:-1;;;;;15967:18:0;;;15935:7;15967:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15801:201::o;13203:238::-;12183:13;:11;:13::i;:::-;-1:-1:-1;;;;;13306:22:0;::::1;13284:110;;;::::0;-1:-1:-1;;;13284:110:0;;6605:2:1;13284:110:0::1;::::0;::::1;6587:21:1::0;6644:2;6624:18;;;6617:30;6683:34;6663:18;;;6656:62;-1:-1:-1;;;6734:18:1;;;6727:36;6780:19;;13284:110:0::1;6403:402:1::0;13284:110:0::1;13405:28;13424:8;13405:18;:28::i;:::-;13203:238:::0;:::o;21611:380::-;-1:-1:-1;;;;;21747:19:0;;21739:68;;;;-1:-1:-1;;;21739:68:0;;7012:2:1;21739:68:0;;;6994:21:1;7051:2;7031:18;;;7024:30;7090:34;7070:18;;;7063:62;-1:-1:-1;;;7141:18:1;;;7134:34;7185:19;;21739:68:0;6810:400:1;21739:68:0;-1:-1:-1;;;;;21826:21:0;;21818:68;;;;-1:-1:-1;;;21818:68:0;;7417:2:1;21818:68:0;;;7399:21:1;7456:2;7436:18;;;7429:30;7495:34;7475:18;;;7468:62;-1:-1:-1;;;7546:18:1;;;7539:32;7588:19;;21818:68:0;7215:398:1;21818:68:0;-1:-1:-1;;;;;21899:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21951:32;;1595:25:1;;;21951:32:0;;1568:18:1;21951:32:0;;;;;;;21611:380;;;:::o;22282:502::-;22417:24;22444:25;22454:5;22461:7;22444:9;:25::i;:::-;22417:52;;-1:-1:-1;;22484:16:0;:37;22480:297;;22584:6;22564:16;:26;;22538:117;;;;-1:-1:-1;;;22538:117:0;;7820:2:1;22538:117:0;;;7802:21:1;7859:2;7839:18;;;7832:30;7898:31;7878:18;;;7871:59;7947:18;;22538:117:0;7618:353:1;22538:117:0;22699:51;22708:5;22715:7;22743:6;22724:16;:25;22699:8;:51::i;:::-;22406:378;22282:502;;;:::o;25426:2168::-;-1:-1:-1;;;;;25558:18:0;;25550:68;;;;-1:-1:-1;;;25550:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25637:16:0;;25629:64;;;;-1:-1:-1;;;25629:64:0;;;;;;;:::i;:::-;25745:6;25726:15;25736:4;-1:-1:-1;;;;;14806:18:0;14774:7;14806:18;;;;;;;;;;;;14655:177;25726:15;:25;;25704:113;;;;-1:-1:-1;;;25704:113:0;;;;;;;:::i;:::-;25857:13;-1:-1:-1;;;;;25849:21:0;:4;-1:-1:-1;;;;;25849:21:0;;:44;;;;25880:13;-1:-1:-1;;;;;25874:19:0;:2;-1:-1:-1;;;;;25874:19:0;;25849:44;25848:67;;;;-1:-1:-1;25899:16:0;;;;25898:17;25848:67;25830:1757;;;25954:13;-1:-1:-1;;;;;25946:21:0;:4;-1:-1:-1;;;;;25946:21:0;;25942:523;;26041:4;25988:32;14806:18;;;;;;;;;;;26100:24;;26070:54;;26066:384;;26149:43;26167:24;26149:17;:43::i;:::-;26236:1;26215:18;:22;;;26280:15;;26272:100;;-1:-1:-1;;;;;26280:15:0;;;;26328:21;26272:100;;;;;26236:1;26272:100;26236:1;26272:100;26328:21;26280:15;26272:100;;;;;;;26260:112;;26403:4;26395:35;;;;-1:-1:-1;;;26395:35:0;;9395:2:1;26395:35:0;;;9377:21:1;9434:2;9414:18;;;9407:30;-1:-1:-1;;;9453:18:1;;;9446:48;9511:18;;26395:35:0;9193:342:1;26395:35:0;26126:324;26066:384;25969:496;25942:523;-1:-1:-1;;;;;26522:24:0;;26481:22;26522:24;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;26550:22:0;;;;;;:18;:22;;;;;;;;26522:50;26518:936;;;-1:-1:-1;26610:6:0;26518:936;;;26669:13;-1:-1:-1;;;;;26661:21:0;:4;-1:-1:-1;;;;;26661:21:0;;26657:253;;26769:15;;-1:-1:-1;;;;;14806:18:0;;14774:7;14806:18;;;;;;;;;;;26742:22;;:6;:22;:::i;:::-;26741:43;;26707:183;;;;-1:-1:-1;;;26707:183:0;;9742:2:1;26707:183:0;;;9724:21:1;9781:2;9761:18;;;9754:30;9820:34;9800:18;;;9793:62;-1:-1:-1;;;9871:18:1;;;9864:52;9933:19;;26707:183:0;9540:418:1;26707:183:0;26928:22;26985:13;-1:-1:-1;;;;;26977:21:0;:4;-1:-1:-1;;;;;26977:21:0;;26973:228;;27073:3;27051:18;;27042:6;:27;;;;:::i;:::-;27041:35;;;;:::i;:::-;27023:54;;26973:228;;;27177:3;27154:19;;27145:6;:28;;;;:::i;:::-;27144:36;;;;:::i;:::-;27126:55;;26973:228;27238:25;27248:14;27238:6;:25;:::i;:::-;27221:42;;27304:14;27282:18;;:36;;;;;;;:::i;:::-;;;;-1:-1:-1;;27343:18:0;;27339:99;;27384:54;27400:4;27414;27422:14;27384:15;:54::i;:::-;26638:816;26518:936;27468:41;27484:4;27490:2;27494:14;27468:15;:41::i;25830:1757::-;27542:33;27558:4;27564:2;27568:6;27542:15;:33::i;:::-;25426:2168;;;:::o;12462:132::-;12370:6;;-1:-1:-1;;;;;12370:6:0;11170:10;12526:23;12518:68;;;;-1:-1:-1;;;12518:68:0;;10520:2:1;12518:68:0;;;10502:21:1;;;10539:18;;;10532:30;10598:34;10578:18;;;10571:62;10650:18;;12518:68:0;10318:356:1;13601:191:0;13694:6;;;-1:-1:-1;;;;;13711:17:0;;;-1:-1:-1;;;;;;13711:17:0;;;;;;;13744:40;;13694:6;;;13711:17;13694:6;;13744:40;;13675:16;;13744:40;13664:128;13601:191;:::o;27602:496::-;24749:16;:23;;-1:-1:-1;;24749:23:0;24768:4;24749:23;;;27705:16:::1;::::0;;27719:1:::1;27705:16:::0;;;;;::::1;::::0;;-1:-1:-1;;27705:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;27705:16:0::1;27681:40;;27750:4;27732;27737:1;27732:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;27732:23:0::1;;;-1:-1:-1::0;;;;;27732:23:0::1;;;::::0;::::1;27776:15;-1:-1:-1::0;;;;;27776:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27766:4;27771:1;27766:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1::0;;;;;27766:32:0::1;;;-1:-1:-1::0;;;;;27766:32:0::1;;;::::0;::::1;27811:62;27828:4;27843:15;27861:11;27811:8;:62::i;:::-;-1:-1:-1::0;;;;;27886:15:0::1;:66;;27967:11:::0;27993:1:::1;28009:4:::0;28036::::1;28057:21;:15;28075:3;28057:21;:::i;:::-;27886:204;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;24795:16:0;:24;;-1:-1:-1;;24795:24:0;;;-1:-1:-1;;;;27602:496:0:o;22792:776::-;-1:-1:-1;;;;;22923:18:0;;22915:68;;;;-1:-1:-1;;;22915:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23002:16:0;;22994:64;;;;-1:-1:-1;;;22994:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23093:15:0;;23071:19;23093:15;;;;;;;;;;;23141:21;;;;23119:109;;;;-1:-1:-1;;;23119:109:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23264:15:0;;;:9;:15;;;;;;;;;;;23282:20;;;23264:38;;23482:13;;;;;;;;;;:23;;;;;;23534:26;;1595:25:1;;;23482:13:0;;23534:26;;1568:18:1;23534:26:0;;;;;;;22904:664;22792:776;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2281:248::-;2349:6;2357;2410:2;2398:9;2389:7;2385:23;2381:32;2378:52;;;2426:1;2423;2416:12;2378:52;-1:-1:-1;;2449:23:1;;;2519:2;2504:18;;;2491:32;;-1:-1:-1;2281:248:1:o;2742:247::-;2801:6;2854:2;2842:9;2833:7;2829:23;2825:32;2822:52;;;2870:1;2867;2860:12;2822:52;2909:9;2896:23;2928:31;2953:5;2928:31;:::i;:::-;2978:5;2742:247;-1:-1:-1;;;2742:247:1:o;2994:388::-;3062:6;3070;3123:2;3111:9;3102:7;3098:23;3094:32;3091:52;;;3139:1;3136;3129:12;3091:52;3178:9;3165:23;3197:31;3222:5;3197:31;:::i;:::-;3247:5;-1:-1:-1;3304:2:1;3289:18;;3276:32;3317:33;3276:32;3317:33;:::i;:::-;3369:7;3359:17;;;2994:388;;;;;:::o;3387:380::-;3466:1;3462:12;;;;3509;;;3530:61;;3584:4;3576:6;3572:17;3562:27;;3530:61;3637:2;3629:6;3626:14;3606:18;3603:38;3600:161;;3683:10;3678:3;3674:20;3671:1;3664:31;3718:4;3715:1;3708:15;3746:4;3743:1;3736:15;3600:161;;3387:380;;;:::o;3772:408::-;3974:2;3956:21;;;4013:2;3993:18;;;3986:30;4052:34;4047:2;4032:18;;4025:62;-1:-1:-1;;;4118:2:1;4103:18;;4096:42;4170:3;4155:19;;3772:408::o;4185:127::-;4246:10;4241:3;4237:20;4234:1;4227:31;4277:4;4274:1;4267:15;4301:4;4298:1;4291:15;4317:125;4382:9;;;4403:10;;;4400:36;;;4416:18;;:::i;4447:416::-;4536:1;4573:5;4536:1;4587:270;4608:7;4598:8;4595:21;4587:270;;;4667:4;4663:1;4659:6;4655:17;4649:4;4646:27;4643:53;;;4676:18;;:::i;:::-;4726:7;4716:8;4712:22;4709:55;;;4746:16;;;;4709:55;4825:22;;;;4785:15;;;;4587:270;;;4591:3;4447:416;;;;;:::o;4868:806::-;4917:5;4947:8;4937:80;;-1:-1:-1;4988:1:1;5002:5;;4937:80;5036:4;5026:76;;-1:-1:-1;5073:1:1;5087:5;;5026:76;5118:4;5136:1;5131:59;;;;5204:1;5199:130;;;;5111:218;;5131:59;5161:1;5152:10;;5175:5;;;5199:130;5236:3;5226:8;5223:17;5220:43;;;5243:18;;:::i;:::-;-1:-1:-1;;5299:1:1;5285:16;;5314:5;;5111:218;;5413:2;5403:8;5400:16;5394:3;5388:4;5385:13;5381:36;5375:2;5365:8;5362:16;5357:2;5351:4;5348:12;5344:35;5341:77;5338:159;;;-1:-1:-1;5450:19:1;;;5482:5;;5338:159;5529:34;5554:8;5548:4;5529:34;:::i;:::-;5599:6;5595:1;5591:6;5587:19;5578:7;5575:32;5572:58;;;5610:18;;:::i;:::-;5648:20;;4868:806;-1:-1:-1;;;4868:806:1:o;5679:140::-;5737:5;5766:47;5807:4;5797:8;5793:19;5787:4;5766:47;:::i;5824:168::-;5897:9;;;5928;;5945:15;;;5939:22;;5925:37;5915:71;;5966:18;;:::i;7976:401::-;8178:2;8160:21;;;8217:2;8197:18;;;8190:30;8256:34;8251:2;8236:18;;8229:62;-1:-1:-1;;;8322:2:1;8307:18;;8300:35;8367:3;8352:19;;7976:401::o;8382:399::-;8584:2;8566:21;;;8623:2;8603:18;;;8596:30;8662:34;8657:2;8642:18;;8635:62;-1:-1:-1;;;8728:2:1;8713:18;;8706:33;8771:3;8756:19;;8382:399::o;8786:402::-;8988:2;8970:21;;;9027:2;9007:18;;;9000:30;9066:34;9061:2;9046:18;;9039:62;-1:-1:-1;;;9132:2:1;9117:18;;9110:36;9178:3;9163:19;;8786:402::o;9963:217::-;10003:1;10029;10019:132;;10073:10;10068:3;10064:20;10061:1;10054:31;10108:4;10105:1;10098:15;10136:4;10133:1;10126:15;10019:132;-1:-1:-1;10165:9:1;;9963:217::o;10185:128::-;10252:9;;;10273:11;;;10270:37;;;10287:18;;:::i;10811:127::-;10872:10;10867:3;10863:20;10860:1;10853:31;10903:4;10900:1;10893:15;10927:4;10924:1;10917:15;10943:251;11013:6;11066:2;11054:9;11045:7;11041:23;11037:32;11034:52;;;11082:1;11079;11072:12;11034:52;11114:9;11108:16;11133:31;11158:5;11133:31;:::i;11199:980::-;11461:4;11509:3;11498:9;11494:19;11540:6;11529:9;11522:25;11566:2;11604:6;11599:2;11588:9;11584:18;11577:34;11647:3;11642:2;11631:9;11627:18;11620:31;11671:6;11706;11700:13;11737:6;11729;11722:22;11775:3;11764:9;11760:19;11753:26;;11814:2;11806:6;11802:15;11788:29;;11835:1;11845:195;11859:6;11856:1;11853:13;11845:195;;;11924:13;;-1:-1:-1;;;;;11920:39:1;11908:52;;12015:15;;;;11980:12;;;;11956:1;11874:9;11845:195;;;-1:-1:-1;;;;;;;12096:32:1;;;;12091:2;12076:18;;12069:60;-1:-1:-1;;;12160:3:1;12145:19;12138:35;12057:3;11199:980;-1:-1:-1;;;11199:980:1:o

Swarm Source

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