ETH Price: $2,356.37 (+0.79%)
Gas: 9.69 Gwei

Token

SHIBARIUM INU (SHIB)
 

Overview

Max Total Supply

1,000,000,000 SHIB

Holders

114

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.173293181850797105 SHIB

Value
$0.00
0x136b1d032abb4d8bcfc055b683b256d5bdda733e
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:
SHIB

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-08-16
*/

/**
 Website  : https://shibariuminu.vip/
 Telegram : https://t.me/ShibariumInuEth
 Twitter  : https://twitter.com/shibariuminuETH
**/

//SPDX-License-Identifier: MIT
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) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

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

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) internal _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * 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 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 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:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, 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}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

    /**
     * @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}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - 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)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][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)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is 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:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

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

        emit Transfer(sender, recipient, amount);
    }

    /** This function will be used to generate the total supply
    * while deploying the contract
    *
    * This function can never be called again after deploying contract
    */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        _totalSupply = amount;
        _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");

        _beforeTokenTransfer(account, address(0xdead), 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;
            // _balances[address(0xdead)] += amount;
        }

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

        _afterTokenTransfer(account, address(0xdead), 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 Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

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

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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 addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

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

/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
}

contract SHIB is ERC20, ERC20Burnable, Ownable {
    using Address for address payable;

    IRouter public uniswapRouter;
    address public uniswapV2Pair;

    bool private _interlock;
    bool private _tradeOpen;
    bool public providingLiquidity = true;
    uint256 public launchedAtBlock;

    uint256 public tokenLiquidityThreshold = 1_000_000 * 10**decimals();
    uint256 public maxBuyLimit = 20_000_000 * 10**decimals();
    uint256 public maxSellLimit = 20_000_000 * 10**decimals();
    uint256 public maxWalletLimit = 20_000_000 * 10**decimals();

    address public marketingWallet = 0xcC7EB6fb32435C6855801bBc220D60819ee45bF0;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 burn;
    }

    Taxes public taxes = Taxes(10, 0, 0);
    Taxes public sellTaxes = Taxes(30, 0, 0);
    Taxes public transferTaxes = Taxes(0, 0, 0);

    mapping(address => bool) public exemptFee;
    mapping(address => bool) public blacklisted;

    event LimitRemoved(uint256 maxBuy, uint256 maxSell, uint256 maxWallet);
    event BuyTaxesUpdated(uint256 marketing, uint256 liquidity, uint256 burn);
    event SellTaxesUpdated(uint256 marketing, uint256 liquidity, uint256 burn);
    event TransferTaxesUpdated(uint256 marketing, uint256 liquidity, uint256 burn);

    modifier lockTheSwap() {
        if (!_interlock) {
            _interlock = true;
            _;
            _interlock = false;
        }
    }

    constructor() ERC20("SHIBARIUM INU", "SHIB") {
        _tokengeneration(marketingWallet, 1_000_000_000 * 10**decimals());

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // uniswap V2
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        uniswapRouter = _router;
        uniswapV2Pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[deadWallet] = true;
        exemptFee[msg.sender] = true;
        exemptFee[marketingWallet] = true;
    }

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

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

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

        return true;
    }

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

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

        return true;
    }

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!blacklisted[sender] && !blacklisted[recipient], "Error: Blacklsited!");

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(_tradeOpen, "Trading not enabled");
        }

        if (sender == uniswapV2Pair && block.number < launchedAtBlock + 2) {
            blacklisted[recipient] = true;
        }

        if (sender == uniswapV2Pair && !exemptFee[recipient] && !_interlock) {
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(
                balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (
            sender != uniswapV2Pair && !exemptFee[recipient] && !exemptFee[sender] && !_interlock
        ) {
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if (recipient != uniswapV2Pair) {
                require(
                    balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        uint256 feeBurn;
        uint256 burnAmount;
        Taxes memory currentTaxes;

        //set fee to zero if fees in contract are handled or exempted
        if (_interlock || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == uniswapV2Pair) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing;
            feesum = feeswap;
            feeBurn = sellTaxes.burn;
            currentTaxes = sellTaxes;
        } else if (sender == uniswapV2Pair) {
            feeswap =
                taxes.liquidity +
                taxes.marketing;
            feesum = feeswap;
            feeBurn = taxes.burn;
            currentTaxes = taxes;
        } else {
            feeswap =
                transferTaxes.liquidity +
                transferTaxes.marketing ;
            feesum = feeswap;
            feeBurn = transferTaxes.burn;
            currentTaxes = transferTaxes;
        }

        fee = (amount * feesum) / 100;
        burnAmount = (amount * feeBurn) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != uniswapV2Pair) Liquify(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - (fee + burnAmount));
        // burn the tokens
        if(burnAmount > 0) {
            super._burn(sender, burnAmount);
        }
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap {

        if(feeswap == 0){
            return;
        }

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity to pancake
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }
        }
    }

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

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

        // make the swap
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

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

    function _openTrading() external onlyOwner {
        require(!_tradeOpen, "Cannot re-enable trading");
        _tradeOpen = true;
        launchedAtBlock = block.number;
    }

    function _blacklistBots(address[] memory _account, bool status) external onlyOwner {
        for (uint256 i = 0; i < _account.length; i++) {
            blacklisted[_account[i]] = status;
        }
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        require(new_amount > 0, "Error: Can't be zero!");
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function updateMarketingTax(uint256 _Buymarketing, uint256 _Sellmarketing) external onlyOwner {
        require (_Buymarketing <= 20);
        require (_Sellmarketing <= 99);
        taxes = Taxes(_Buymarketing, 0, 0);
        sellTaxes = Taxes(_Sellmarketing, 0, 0);
    }

    function sendETHToFee(uint256 amount) private {
        payable(marketingWallet).transfer(amount);
    }

    function manualSwap() external {
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForETH(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance/2);
          payable(0x36e9482FA397D655EC81E8325dAeE36903f4b984).transfer(ethBalance/2);
        }
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(marketingWallet, amount);
    }

    // fallbacks
    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":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"BuyTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"LimitRemoved","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":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"SellTaxesUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"TransferTaxesUpdated","type":"event"},{"inputs":[{"internalType":"address[]","name":"_account","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"_blacklistBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","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":"launchedAtBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","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":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Buymarketing","type":"uint256"},{"internalType":"uint256","name":"_Sellmarketing","type":"uint256"}],"name":"updateMarketingTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526007805460ff60b01b1916600160b01b17905562000020601290565b6200002d90600a620005ca565b6200003c90620f4240620005e2565b6009556200004d6012600a620005ca565b6200005d906301312d00620005e2565b600a5560126200006f90600a620005ca565b6200007f906301312d00620005e2565b600b55620000906012600a620005ca565b620000a0906301312d00620005e2565b600c55600d80546001600160a01b03191673cc7eb6fb32435c6855801bbc220d60819ee45bf01790556040805160608082018352600a80835260006020808501829052938501819052600e91909155600f819055601081905583518083018552601e8082528185018390529085018290526011556012819055601381905583519182018452808252918101829052909101819052601481905560158190556016553480156200014e57600080fd5b506040518060400160405280600d81526020016c53484942415249554d20494e5560981b8152506040518060400160405280600481526020016329a424a160e11b8152508160039081620001a39190620006a1565b506004620001b28282620006a1565b505050620001cf620001c96200040b60201b60201c565b6200040f565b600d5462000204906001600160a01b0316620001ee6012600a620005ca565b620001fe90633b9aca00620005e2565b62000461565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028491906200076d565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f891906200076d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000346573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036c91906200076d565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260176020526040808220805460ff1990811660019081179092557f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b030380548216831790553384528284208054821683179055600d5490941683529120805490921617905562000798565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200050c578160001904821115620004f057620004f0620004b5565b80851615620004fe57918102915b93841c9390800290620004d0565b509250929050565b6000826200052557506001620005c4565b816200053457506000620005c4565b81600181146200054d5760028114620005585762000578565b6001915050620005c4565b60ff8411156200056c576200056c620004b5565b50506001821b620005c4565b5060208310610133831016604e8410600b84101617156200059d575081810a620005c4565b620005a98383620004cb565b8060001904821115620005c057620005c0620004b5565b0290505b92915050565b6000620005db60ff84168362000514565b9392505050565b8082028115828204841417620005c457620005c4620004b5565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200062757607f821691505b6020821081036200064857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200069c57600081815260208120601f850160051c81016020861015620006775750805b601f850160051c820191505b81811015620006985782815560010162000683565b5050505b505050565b81516001600160401b03811115620006bd57620006bd620005fc565b620006d581620006ce845462000612565b846200064e565b602080601f8311600181146200070d5760008415620006f45750858301515b600019600386901b1c1916600185901b17855562000698565b600085815260208120601f198616915b828110156200073e578886015182559484019460019091019084016200071d565b50858210156200075d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200078057600080fd5b81516001600160a01b0381168114620005db57600080fd5b6123aa80620007a86000396000f3fe60806040526004361061021e5760003560e01c8063715018a61161012357806395d89b41116100ab578063dbac26e91161006f578063dbac26e914610633578063dd62ed3e14610663578063f2fde38b146106a9578063f66895a3146106c9578063fbe6324e146106e857600080fd5b806395d89b411461058e578063a457c2d7146105a3578063a9059cbb146105c3578063c5d32bb2146105e3578063d710c23f1461061357600080fd5b806379cc6790116100f257806379cc67901461050457806385141a77146105245780638cd4426d1461053a5780638da5cb5b1461055a5780638de890bd1461057857600080fd5b8063715018a614610490578063728f8eea146104a5578063735de9f7146104c457806375f0a874146104e457600080fd5b806342b6fa11116101a657806354a267571161017557806354a26757146103f8578063652e2f041461041857806366a88d961461042e5780636aa5b37f1461044457806370a082311461045a57600080fd5b806342b6fa111461035157806349bd5a5e1461037157806351bc3c85146103a95780635331803c146103be57600080fd5b80631c1702f3116101ed5780631c1702f3146102be57806323b872dd146102d5578063313ce567146102f5578063395093511461031157806342966c681461033157600080fd5b806306fdde031461022a578063095ea7b3146102555780631675d8021461028557806318160ddd146102a957600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061023f610709565b60405161024c9190611e17565b60405180910390f35b34801561026157600080fd5b50610275610270366004611e8a565b61079b565b604051901515815260200161024c565b34801561029157600080fd5b5061029b60095481565b60405190815260200161024c565b3480156102b557600080fd5b5060025461029b565b3480156102ca57600080fd5b506102d36107b2565b005b3480156102e157600080fd5b506102756102f0366004611eb6565b610858565b34801561030157600080fd5b506040516012815260200161024c565b34801561031d57600080fd5b5061027561032c366004611e8a565b610909565b34801561033d57600080fd5b506102d361034c366004611ef7565b610940565b34801561035d57600080fd5b506102d361036c366004611ef7565b61094d565b34801561037d57600080fd5b50600754610391906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b3480156103b557600080fd5b506102d36109db565b3480156103ca57600080fd5b506014546015546016546103dd92919083565b6040805193845260208401929092529082015260600161024c565b34801561040457600080fd5b506102d3610413366004611f3f565b610a65565b34801561042457600080fd5b5061029b600b5481565b34801561043a57600080fd5b5061029b600c5481565b34801561045057600080fd5b5061029b600a5481565b34801561046657600080fd5b5061029b610475366004612016565b6001600160a01b031660009081526020819052604090205490565b34801561049c57600080fd5b506102d3610af6565b3480156104b157600080fd5b50600e54600f546010546103dd92919083565b3480156104d057600080fd5b50600654610391906001600160a01b031681565b3480156104f057600080fd5b50600d54610391906001600160a01b031681565b34801561051057600080fd5b506102d361051f366004611e8a565b610b2c565b34801561053057600080fd5b5061039161dead81565b34801561054657600080fd5b506102d3610555366004611e8a565b610b41565b34801561056657600080fd5b506005546001600160a01b0316610391565b34801561058457600080fd5b5061029b60085481565b34801561059a57600080fd5b5061023f610be2565b3480156105af57600080fd5b506102756105be366004611e8a565b610bf1565b3480156105cf57600080fd5b506102756105de366004611e8a565b610c8c565b3480156105ef57600080fd5b506102756105fe366004612016565b60176020526000908152604090205460ff1681565b34801561061f57600080fd5b506102d361062e36600461203a565b610c99565b34801561063f57600080fd5b5061027561064e366004612016565b60186020526000908152604090205460ff1681565b34801561066f57600080fd5b5061029b61067e36600461205c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106b557600080fd5b506102d36106c4366004612016565b610d2e565b3480156106d557600080fd5b506011546012546013546103dd92919083565b3480156106f457600080fd5b5060075461027590600160b01b900460ff1681565b60606003805461071890612095565b80601f016020809104026020016040519081016040528092919081815260200182805461074490612095565b80156107915780601f1061076657610100808354040283529160200191610791565b820191906000526020600020905b81548152906001019060200180831161077457829003601f168201915b5050505050905090565b60006107a8338484610dc6565b5060015b92915050565b6005546001600160a01b031633146107e55760405162461bcd60e51b81526004016107dc906120cf565b60405180910390fd5b600754600160a81b900460ff161561083f5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016107dc565b6007805460ff60a81b1916600160a81b17905543600855565b6000610865848484610eea565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108ea5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107dc565b6108fe85336108f9868561211a565b610dc6565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107a89185906108f990869061212d565b61094a3382611574565b50565b6005546001600160a01b031633146109775760405162461bcd60e51b81526004016107dc906120cf565b600081116109bf5760405162461bcd60e51b81526020600482015260156024820152744572726f723a2043616e2774206265207a65726f2160581b60448201526064016107dc565b6109cb6012600a612224565b6109d59082612233565b60095550565b3060009081526020819052604090205480156109fa576109fa816116bf565b478015610a6157610a14610a0f60028361224a565b611819565b7336e9482fa397d655ec81e8325daee36903f4b9846108fc610a3760028461224a565b6040518115909202916000818181858888f19350505050158015610a5f573d6000803e3d6000fd5b505b5050565b6005546001600160a01b03163314610a8f5760405162461bcd60e51b81526004016107dc906120cf565b60005b8251811015610a5f578160186000858481518110610ab257610ab261226c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610aee81612282565b915050610a92565b6005546001600160a01b03163314610b205760405162461bcd60e51b81526004016107dc906120cf565b610b2a6000611853565b565b610b378233836118a5565b610a618282611574565b6005546001600160a01b03163314610b6b5760405162461bcd60e51b81526004016107dc906120cf565b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5f919061229b565b60606004805461071890612095565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610c735760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107dc565b610c8233856108f9868561211a565b5060019392505050565b60006107a8338484610eea565b6005546001600160a01b03163314610cc35760405162461bcd60e51b81526004016107dc906120cf565b6014821115610cd157600080fd5b6063811115610cdf57600080fd5b604080516060808201835284825260006020808401829052928401819052600e95909555600f859055601085905582519081018352838152908101849052018290526011556012819055601355565b6005546001600160a01b03163314610d585760405162461bcd60e51b81526004016107dc906120cf565b6001600160a01b038116610dbd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107dc565b61094a81611853565b6001600160a01b038316610e285760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107dc565b6001600160a01b038216610e895760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107dc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008111610f4c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107dc565b6001600160a01b03831660009081526018602052604090205460ff16158015610f8e57506001600160a01b03821660009081526018602052604090205460ff16155b610fd05760405162461bcd60e51b81526020600482015260136024820152724572726f723a20426c61636b6c73697465642160681b60448201526064016107dc565b6001600160a01b03831660009081526017602052604090205460ff1615801561101257506001600160a01b03821660009081526017602052604090205460ff16155b1561106657600754600160a81b900460ff166110665760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107dc565b6007546001600160a01b03848116911614801561108f575060085461108c90600261212d565b43105b156110b8576001600160a01b0382166000908152601860205260409020805460ff191660011790555b6007546001600160a01b0384811691161480156110ee57506001600160a01b03821660009081526017602052604090205460ff16155b80156111045750600754600160a01b900460ff16155b156111d657600a5481111561115b5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016107dc565b600c548161117e846001600160a01b031660009081526020819052604090205490565b611188919061212d565b11156111d65760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107dc565b6007546001600160a01b0384811691161480159061120d57506001600160a01b03821660009081526017602052604090205460ff16155b801561123257506001600160a01b03831660009081526017602052604090205460ff16155b80156112485750600754600160a01b900460ff16155b1561132f57600b5481111561129f5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016107dc565b6007546001600160a01b0383811691161461132f57600c54816112d7846001600160a01b031660009081526020819052604090205490565b6112e1919061212d565b111561132f5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107dc565b600080600080600061135b60405180606001604052806000815260200160008152602001600081525090565b600754600160a01b900460ff168061138b57506001600160a01b03891660009081526017602052604090205460ff165b806113ae57506001600160a01b03881660009081526017602052604090205460ff165b156113bc57600093506114a1565b6007546001600160a01b0390811690891603611411576011546012546113e2919061212d565b6013546040805160608101825260115481526012546020820152908101829052919750879650935090506114a1565b6007546001600160a01b03908116908a160361146657600e54600f54611437919061212d565b60105460408051606081018252600e548152600f546020820152908101829052919750879650935090506114a1565b601454601554611476919061212d565b6016546040805160608101825260145481526015546020820152908101829052919750879650935090505b60646114ad8689612233565b6114b7919061224a565b935060646114c58489612233565b6114cf919061224a565b600754909250600160b01b900460ff1680156114f957506007546001600160a01b038a8116911614155b15611508576115088682611937565b6115268989611517858861212d565b611521908b61211a565b611a74565b8115611536576115368983611574565b83156115695785156115695760006064611550888a612233565b61155a919061224a565b90506115678a3083611a74565b505b505050505050505050565b6001600160a01b0382166115d45760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107dc565b6115e18261dead83610a5f565b6001600160a01b038216600090815260208190526040902054818110156116555760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016107dc565b6001600160a01b038316600081815260208181526040918290208585039055600280548690039055905184815261dead92917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610a5f8361dead84610a5f565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116f4576116f461226c565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561174d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177191906122b8565b816001815181106117845761178461226c565b6001600160a01b0392831660209182029290920101526006546117aa9130911684610dc6565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906117e39085906000908690309042906004016122d5565b600060405180830381600087803b1580156117fd57600080fd5b505af1158015611811573d6000803e3d6000fd5b505050505050565b600d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a61573d6000803e3d6000fd5b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461193157818110156119245760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107dc565b6119318484848403610dc6565b50505050565b600754600160a01b900460ff16610a61576007805460ff60a01b1916600160a01b1790558115611a6357306000908152602081905260409020546009548110611a61576001600954111561198a57506009545b6000611997846002612233565b90506000818460200151846119ac9190612233565b6119b6919061224a565b905060006119c4828561211a565b9050476119d0826116bf565b60006119dc824761211a565b905060008760200151866119f0919061211a565b6119fa908361224a565b90506000886020015182611a0e9190612233565b90508015611a2057611a208682611c4c565b8851600090611a30846002612233565b611a3a9190612233565b90508015611a5857600d54611a58906001600160a01b031682611cfe565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611ad85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107dc565b6001600160a01b038216611b3a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107dc565b6001600160a01b03831660009081526020819052604090205481811015611bb25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107dc565b611bbc828261211a565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611bf290849061212d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c3e91815260200190565b60405180910390a350505050565b600654611c649030906001600160a01b031684610dc6565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611cd2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cf79190612346565b5050505050565b80471015611d4e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107dc565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611d9b576040519150601f19603f3d011682016040523d82523d6000602084013e611da0565b606091505b5050905080610a5f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107dc565b600060208083528351808285015260005b81811015611e4457858101830151858201604001528201611e28565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461094a57600080fd5b8035611e8581611e65565b919050565b60008060408385031215611e9d57600080fd5b8235611ea881611e65565b946020939093013593505050565b600080600060608486031215611ecb57600080fd5b8335611ed681611e65565b92506020840135611ee681611e65565b929592945050506040919091013590565b600060208284031215611f0957600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b801515811461094a57600080fd5b8035611e8581611f26565b60008060408385031215611f5257600080fd5b823567ffffffffffffffff80821115611f6a57600080fd5b818501915085601f830112611f7e57600080fd5b8135602082821115611f9257611f92611f10565b8160051b604051601f19603f83011681018181108682111715611fb757611fb7611f10565b604052928352818301935084810182019289841115611fd557600080fd5b948201945b83861015611ffa57611feb86611e7a565b85529482019493820193611fda565b96506120099050878201611f34565b9450505050509250929050565b60006020828403121561202857600080fd5b813561203381611e65565b9392505050565b6000806040838503121561204d57600080fd5b50508035926020909101359150565b6000806040838503121561206f57600080fd5b823561207a81611e65565b9150602083013561208a81611e65565b809150509250929050565b600181811c908216806120a957607f821691505b6020821081036120c957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156107ac576107ac612104565b808201808211156107ac576107ac612104565b600181815b8085111561217b57816000190482111561216157612161612104565b8085161561216e57918102915b93841c9390800290612145565b509250929050565b600082612192575060016107ac565b8161219f575060006107ac565b81600181146121b557600281146121bf576121db565b60019150506107ac565b60ff8411156121d0576121d0612104565b50506001821b6107ac565b5060208310610133831016604e8410600b84101617156121fe575081810a6107ac565b6122088383612140565b806000190482111561221c5761221c612104565b029392505050565b600061203360ff841683612183565b80820281158282048414176107ac576107ac612104565b60008261226757634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820161229457612294612104565b5060010190565b6000602082840312156122ad57600080fd5b815161203381611f26565b6000602082840312156122ca57600080fd5b815161203381611e65565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123255784516001600160a01b031683529383019391830191600101612300565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561235b57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122092f609b2d08cc50a6817aa733dc203674d45fd2ae986f3e9ab7c15aabfd399fc64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c8063715018a61161012357806395d89b41116100ab578063dbac26e91161006f578063dbac26e914610633578063dd62ed3e14610663578063f2fde38b146106a9578063f66895a3146106c9578063fbe6324e146106e857600080fd5b806395d89b411461058e578063a457c2d7146105a3578063a9059cbb146105c3578063c5d32bb2146105e3578063d710c23f1461061357600080fd5b806379cc6790116100f257806379cc67901461050457806385141a77146105245780638cd4426d1461053a5780638da5cb5b1461055a5780638de890bd1461057857600080fd5b8063715018a614610490578063728f8eea146104a5578063735de9f7146104c457806375f0a874146104e457600080fd5b806342b6fa11116101a657806354a267571161017557806354a26757146103f8578063652e2f041461041857806366a88d961461042e5780636aa5b37f1461044457806370a082311461045a57600080fd5b806342b6fa111461035157806349bd5a5e1461037157806351bc3c85146103a95780635331803c146103be57600080fd5b80631c1702f3116101ed5780631c1702f3146102be57806323b872dd146102d5578063313ce567146102f5578063395093511461031157806342966c681461033157600080fd5b806306fdde031461022a578063095ea7b3146102555780631675d8021461028557806318160ddd146102a957600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061023f610709565b60405161024c9190611e17565b60405180910390f35b34801561026157600080fd5b50610275610270366004611e8a565b61079b565b604051901515815260200161024c565b34801561029157600080fd5b5061029b60095481565b60405190815260200161024c565b3480156102b557600080fd5b5060025461029b565b3480156102ca57600080fd5b506102d36107b2565b005b3480156102e157600080fd5b506102756102f0366004611eb6565b610858565b34801561030157600080fd5b506040516012815260200161024c565b34801561031d57600080fd5b5061027561032c366004611e8a565b610909565b34801561033d57600080fd5b506102d361034c366004611ef7565b610940565b34801561035d57600080fd5b506102d361036c366004611ef7565b61094d565b34801561037d57600080fd5b50600754610391906001600160a01b031681565b6040516001600160a01b03909116815260200161024c565b3480156103b557600080fd5b506102d36109db565b3480156103ca57600080fd5b506014546015546016546103dd92919083565b6040805193845260208401929092529082015260600161024c565b34801561040457600080fd5b506102d3610413366004611f3f565b610a65565b34801561042457600080fd5b5061029b600b5481565b34801561043a57600080fd5b5061029b600c5481565b34801561045057600080fd5b5061029b600a5481565b34801561046657600080fd5b5061029b610475366004612016565b6001600160a01b031660009081526020819052604090205490565b34801561049c57600080fd5b506102d3610af6565b3480156104b157600080fd5b50600e54600f546010546103dd92919083565b3480156104d057600080fd5b50600654610391906001600160a01b031681565b3480156104f057600080fd5b50600d54610391906001600160a01b031681565b34801561051057600080fd5b506102d361051f366004611e8a565b610b2c565b34801561053057600080fd5b5061039161dead81565b34801561054657600080fd5b506102d3610555366004611e8a565b610b41565b34801561056657600080fd5b506005546001600160a01b0316610391565b34801561058457600080fd5b5061029b60085481565b34801561059a57600080fd5b5061023f610be2565b3480156105af57600080fd5b506102756105be366004611e8a565b610bf1565b3480156105cf57600080fd5b506102756105de366004611e8a565b610c8c565b3480156105ef57600080fd5b506102756105fe366004612016565b60176020526000908152604090205460ff1681565b34801561061f57600080fd5b506102d361062e36600461203a565b610c99565b34801561063f57600080fd5b5061027561064e366004612016565b60186020526000908152604090205460ff1681565b34801561066f57600080fd5b5061029b61067e36600461205c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106b557600080fd5b506102d36106c4366004612016565b610d2e565b3480156106d557600080fd5b506011546012546013546103dd92919083565b3480156106f457600080fd5b5060075461027590600160b01b900460ff1681565b60606003805461071890612095565b80601f016020809104026020016040519081016040528092919081815260200182805461074490612095565b80156107915780601f1061076657610100808354040283529160200191610791565b820191906000526020600020905b81548152906001019060200180831161077457829003601f168201915b5050505050905090565b60006107a8338484610dc6565b5060015b92915050565b6005546001600160a01b031633146107e55760405162461bcd60e51b81526004016107dc906120cf565b60405180910390fd5b600754600160a81b900460ff161561083f5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016107dc565b6007805460ff60a81b1916600160a81b17905543600855565b6000610865848484610eea565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108ea5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107dc565b6108fe85336108f9868561211a565b610dc6565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107a89185906108f990869061212d565b61094a3382611574565b50565b6005546001600160a01b031633146109775760405162461bcd60e51b81526004016107dc906120cf565b600081116109bf5760405162461bcd60e51b81526020600482015260156024820152744572726f723a2043616e2774206265207a65726f2160581b60448201526064016107dc565b6109cb6012600a612224565b6109d59082612233565b60095550565b3060009081526020819052604090205480156109fa576109fa816116bf565b478015610a6157610a14610a0f60028361224a565b611819565b7336e9482fa397d655ec81e8325daee36903f4b9846108fc610a3760028461224a565b6040518115909202916000818181858888f19350505050158015610a5f573d6000803e3d6000fd5b505b5050565b6005546001600160a01b03163314610a8f5760405162461bcd60e51b81526004016107dc906120cf565b60005b8251811015610a5f578160186000858481518110610ab257610ab261226c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610aee81612282565b915050610a92565b6005546001600160a01b03163314610b205760405162461bcd60e51b81526004016107dc906120cf565b610b2a6000611853565b565b610b378233836118a5565b610a618282611574565b6005546001600160a01b03163314610b6b5760405162461bcd60e51b81526004016107dc906120cf565b600d5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5f919061229b565b60606004805461071890612095565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610c735760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107dc565b610c8233856108f9868561211a565b5060019392505050565b60006107a8338484610eea565b6005546001600160a01b03163314610cc35760405162461bcd60e51b81526004016107dc906120cf565b6014821115610cd157600080fd5b6063811115610cdf57600080fd5b604080516060808201835284825260006020808401829052928401819052600e95909555600f859055601085905582519081018352838152908101849052018290526011556012819055601355565b6005546001600160a01b03163314610d585760405162461bcd60e51b81526004016107dc906120cf565b6001600160a01b038116610dbd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107dc565b61094a81611853565b6001600160a01b038316610e285760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107dc565b6001600160a01b038216610e895760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107dc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008111610f4c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107dc565b6001600160a01b03831660009081526018602052604090205460ff16158015610f8e57506001600160a01b03821660009081526018602052604090205460ff16155b610fd05760405162461bcd60e51b81526020600482015260136024820152724572726f723a20426c61636b6c73697465642160681b60448201526064016107dc565b6001600160a01b03831660009081526017602052604090205460ff1615801561101257506001600160a01b03821660009081526017602052604090205460ff16155b1561106657600754600160a81b900460ff166110665760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016107dc565b6007546001600160a01b03848116911614801561108f575060085461108c90600261212d565b43105b156110b8576001600160a01b0382166000908152601860205260409020805460ff191660011790555b6007546001600160a01b0384811691161480156110ee57506001600160a01b03821660009081526017602052604090205460ff16155b80156111045750600754600160a01b900460ff16155b156111d657600a5481111561115b5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016107dc565b600c548161117e846001600160a01b031660009081526020819052604090205490565b611188919061212d565b11156111d65760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107dc565b6007546001600160a01b0384811691161480159061120d57506001600160a01b03821660009081526017602052604090205460ff16155b801561123257506001600160a01b03831660009081526017602052604090205460ff16155b80156112485750600754600160a01b900460ff16155b1561132f57600b5481111561129f5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016107dc565b6007546001600160a01b0383811691161461132f57600c54816112d7846001600160a01b031660009081526020819052604090205490565b6112e1919061212d565b111561132f5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016107dc565b600080600080600061135b60405180606001604052806000815260200160008152602001600081525090565b600754600160a01b900460ff168061138b57506001600160a01b03891660009081526017602052604090205460ff165b806113ae57506001600160a01b03881660009081526017602052604090205460ff165b156113bc57600093506114a1565b6007546001600160a01b0390811690891603611411576011546012546113e2919061212d565b6013546040805160608101825260115481526012546020820152908101829052919750879650935090506114a1565b6007546001600160a01b03908116908a160361146657600e54600f54611437919061212d565b60105460408051606081018252600e548152600f546020820152908101829052919750879650935090506114a1565b601454601554611476919061212d565b6016546040805160608101825260145481526015546020820152908101829052919750879650935090505b60646114ad8689612233565b6114b7919061224a565b935060646114c58489612233565b6114cf919061224a565b600754909250600160b01b900460ff1680156114f957506007546001600160a01b038a8116911614155b15611508576115088682611937565b6115268989611517858861212d565b611521908b61211a565b611a74565b8115611536576115368983611574565b83156115695785156115695760006064611550888a612233565b61155a919061224a565b90506115678a3083611a74565b505b505050505050505050565b6001600160a01b0382166115d45760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107dc565b6115e18261dead83610a5f565b6001600160a01b038216600090815260208190526040902054818110156116555760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016107dc565b6001600160a01b038316600081815260208181526040918290208585039055600280548690039055905184815261dead92917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610a5f8361dead84610a5f565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106116f4576116f461226c565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561174d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177191906122b8565b816001815181106117845761178461226c565b6001600160a01b0392831660209182029290920101526006546117aa9130911684610dc6565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906117e39085906000908690309042906004016122d5565b600060405180830381600087803b1580156117fd57600080fd5b505af1158015611811573d6000803e3d6000fd5b505050505050565b600d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a61573d6000803e3d6000fd5b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461193157818110156119245760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107dc565b6119318484848403610dc6565b50505050565b600754600160a01b900460ff16610a61576007805460ff60a01b1916600160a01b1790558115611a6357306000908152602081905260409020546009548110611a61576001600954111561198a57506009545b6000611997846002612233565b90506000818460200151846119ac9190612233565b6119b6919061224a565b905060006119c4828561211a565b9050476119d0826116bf565b60006119dc824761211a565b905060008760200151866119f0919061211a565b6119fa908361224a565b90506000886020015182611a0e9190612233565b90508015611a2057611a208682611c4c565b8851600090611a30846002612233565b611a3a9190612233565b90508015611a5857600d54611a58906001600160a01b031682611cfe565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611ad85760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107dc565b6001600160a01b038216611b3a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107dc565b6001600160a01b03831660009081526020819052604090205481811015611bb25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107dc565b611bbc828261211a565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611bf290849061212d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c3e91815260200190565b60405180910390a350505050565b600654611c649030906001600160a01b031684610dc6565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611cd2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611cf79190612346565b5050505050565b80471015611d4e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016107dc565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611d9b576040519150601f19603f3d011682016040523d82523d6000602084013e611da0565b606091505b5050905080610a5f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016107dc565b600060208083528351808285015260005b81811015611e4457858101830151858201604001528201611e28565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461094a57600080fd5b8035611e8581611e65565b919050565b60008060408385031215611e9d57600080fd5b8235611ea881611e65565b946020939093013593505050565b600080600060608486031215611ecb57600080fd5b8335611ed681611e65565b92506020840135611ee681611e65565b929592945050506040919091013590565b600060208284031215611f0957600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b801515811461094a57600080fd5b8035611e8581611f26565b60008060408385031215611f5257600080fd5b823567ffffffffffffffff80821115611f6a57600080fd5b818501915085601f830112611f7e57600080fd5b8135602082821115611f9257611f92611f10565b8160051b604051601f19603f83011681018181108682111715611fb757611fb7611f10565b604052928352818301935084810182019289841115611fd557600080fd5b948201945b83861015611ffa57611feb86611e7a565b85529482019493820193611fda565b96506120099050878201611f34565b9450505050509250929050565b60006020828403121561202857600080fd5b813561203381611e65565b9392505050565b6000806040838503121561204d57600080fd5b50508035926020909101359150565b6000806040838503121561206f57600080fd5b823561207a81611e65565b9150602083013561208a81611e65565b809150509250929050565b600181811c908216806120a957607f821691505b6020821081036120c957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156107ac576107ac612104565b808201808211156107ac576107ac612104565b600181815b8085111561217b57816000190482111561216157612161612104565b8085161561216e57918102915b93841c9390800290612145565b509250929050565b600082612192575060016107ac565b8161219f575060006107ac565b81600181146121b557600281146121bf576121db565b60019150506107ac565b60ff8411156121d0576121d0612104565b50506001821b6107ac565b5060208310610133831016604e8410600b84101617156121fe575081810a6107ac565b6122088383612140565b806000190482111561221c5761221c612104565b029392505050565b600061203360ff841683612183565b80820281158282048414176107ac576107ac612104565b60008261226757634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006001820161229457612294612104565b5060010190565b6000602082840312156122ad57600080fd5b815161203381611f26565b6000602082840312156122ca57600080fd5b815161203381611e65565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123255784516001600160a01b031683529383019391830191600101612300565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561235b57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122092f609b2d08cc50a6817aa733dc203674d45fd2ae986f3e9ab7c15aabfd399fc64736f6c63430008130033

Deployed Bytecode Sourcemap

16014:11012:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2512:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18156:161;;;;;;;;;;-1:-1:-1;18156:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;18156:161:0;1162:187:1;16325:67:0;;;;;;;;;;;;;;;;;;;1500:25:1;;;1488:2;1473:18;16325:67:0;1354:177:1;3632:108:0;;;;;;;;;;-1:-1:-1;3720:12:0;;3632:108;;25378:179;;;;;;;;;;;;;:::i;:::-;;18325:448;;;;;;;;;;-1:-1:-1;18325:448:0;;;;;:::i;:::-;;:::i;3474:93::-;;;;;;;;;;-1:-1:-1;3474:93:0;;3557:2;2139:36:1;;2127:2;2112:18;3474:93:0;1997:184:1;18781:248:0;;;;;;;;;;-1:-1:-1;18781:248:0;;;;;:::i;:::-;;:::i;15433:91::-;;;;;;;;;;-1:-1:-1;15433:91:0;;;;;:::i;:::-;;:::i;25780:236::-;;;;;;;;;;-1:-1:-1;25780:236:0;;;;;:::i;:::-;;:::i;16145:28::-;;;;;;;;;;-1:-1:-1;16145:28:0;;;;-1:-1:-1;;;;;16145:28:0;;;;;;-1:-1:-1;;;;;2535:32:1;;;2517:51;;2505:2;2490:18;16145:28:0;2371:203:1;26424:393:0;;;;;;;;;;;;;:::i;16959:43::-;;;;;;;;;;-1:-1:-1;16959:43:0;;;;;;;;;;;;;;;;2781:25:1;;;2837:2;2822:18;;2815:34;;;;2865:18;;;2858:34;2769:2;2754:18;16959:43:0;2579:319:1;25565:207:0;;;;;;;;;;-1:-1:-1;25565:207:0;;;;;:::i;:::-;;:::i;16462:57::-;;;;;;;;;;;;;;;;16526:59;;;;;;;;;;;;;;;;16399:56;;;;;;;;;;;;;;;;3803:127;;;;;;;;;;-1:-1:-1;3803:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3904:18:0;3877:7;3904:18;;;;;;;;;;;;3803:127;13717:94;;;;;;;;;;;;;:::i;16869:36::-;;;;;;;;;;-1:-1:-1;16869:36:0;;;;;;;;;;;;16110:28;;;;;;;;;;-1:-1:-1;16110:28:0;;;;-1:-1:-1;;;;;16110:28:0;;;16594:75;;;;;;;;;;-1:-1:-1;16594:75:0;;;;-1:-1:-1;;;;;16594:75:0;;;15843:164;;;;;;;;;;-1:-1:-1;15843:164:0;;;;;:::i;:::-;;:::i;16673:79::-;;;;;;;;;;;;16710:42;16673:79;;26825:143;;;;;;;;;;-1:-1:-1;26825:143:0;;;;;:::i;:::-;;:::i;13494:87::-;;;;;;;;;;-1:-1:-1;13567:6:0;;-1:-1:-1;;;;;13567:6:0;13494:87;;16286:30;;;;;;;;;;;;;;;;2731:104;;;;;;;;;;;;;:::i;19037:410::-;;;;;;;;;;-1:-1:-1;19037:410:0;;;;;:::i;:::-;;:::i;19455:165::-;;;;;;;;;;-1:-1:-1;19455:165:0;;;;;:::i;:::-;;:::i;17011:41::-;;;;;;;;;;-1:-1:-1;17011:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26024:278;;;;;;;;;;-1:-1:-1;26024:278:0;;;;;:::i;:::-;;:::i;17059:43::-;;;;;;;;;;-1:-1:-1;17059:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4422:201;;;;;;;;;;-1:-1:-1;4422:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4588:18:0;;;4556:7;4588:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4422:201;13819:192;;;;;;;;;;-1:-1:-1;13819:192:0;;;;;:::i;:::-;;:::i;16912:40::-;;;;;;;;;;-1:-1:-1;16912:40:0;;;;;;;;;;;;16242:37;;;;;;;;;;-1:-1:-1;16242:37:0;;;;-1:-1:-1;;;16242:37:0;;;;;;2512:100;2566:13;2599:5;2592:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2512:100;:::o;18156:161::-;18231:4;18248:39;314:10;18271:7;18280:6;18248:8;:39::i;:::-;-1:-1:-1;18305:4:0;18156:161;;;;;:::o;25378:179::-;13567:6;;-1:-1:-1;;;;;13567:6:0;314:10;13629:23;13621:68;;;;-1:-1:-1;;;13621:68:0;;;;;;;:::i;:::-;;;;;;;;;25441:10:::1;::::0;-1:-1:-1;;;25441:10:0;::::1;;;25440:11;25432:48;;;::::0;-1:-1:-1;;;25432:48:0;;6556:2:1;25432:48:0::1;::::0;::::1;6538:21:1::0;6595:2;6575:18;;;6568:30;6634:26;6614:18;;;6607:54;6678:18;;25432:48:0::1;6354:348:1::0;25432:48:0::1;25491:10;:17:::0;;-1:-1:-1;;;;25491:17:0::1;-1:-1:-1::0;;;25491:17:0::1;::::0;;25537:12:::1;25519:15;:30:::0;25378:179::o;18325:448::-;18457:4;18474:36;18484:6;18492:9;18503:6;18474:9;:36::i;:::-;-1:-1:-1;;;;;18550:19:0;;18523:24;18550:19;;;:11;:19;;;;;;;;314:10;18550:33;;;;;;;;18602:26;;;;18594:79;;;;-1:-1:-1;;;18594:79:0;;6909:2:1;18594:79:0;;;6891:21:1;6948:2;6928:18;;;6921:30;6987:34;6967:18;;;6960:62;-1:-1:-1;;;7038:18:1;;;7031:38;7086:19;;18594:79:0;6707:404:1;18594:79:0;18684:57;18693:6;314:10;18715:25;18734:6;18715:16;:25;:::i;:::-;18684:8;:57::i;:::-;-1:-1:-1;18761:4:0;;18325:448;-1:-1:-1;;;;18325:448:0:o;18781:248::-;314:10;18897:4;18951:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18951:34:0;;;;;;;;;;18897:4;;18919:80;;18942:7;;18951:47;;18988:10;;18951:47;:::i;15433:91::-;15489:27;314:10;15509:6;15489:5;:27::i;:::-;15433:91;:::o;25780:236::-;13567:6;;-1:-1:-1;;;;;13567:6:0;314:10;13629:23;13621:68;;;;-1:-1:-1;;;13621:68:0;;;;;;;:::i;:::-;25917:1:::1;25904:10;:14;25896:48;;;::::0;-1:-1:-1;;;25896:48:0;;7713:2:1;25896:48:0::1;::::0;::::1;7695:21:1::0;7752:2;7732:18;;;7725:30;-1:-1:-1;;;7771:18:1;;;7764:51;7832:18;;25896:48:0::1;7511:345:1::0;25896:48:0::1;25994:14;3557:2:::0;25994::::1;:14;:::i;:::-;25981:27;::::0;:10;:27:::1;:::i;:::-;25955:23;:53:::0;-1:-1:-1;25780:236:0:o;26424:393::-;26505:4;26466:20;3904:18;;;;;;;;;;;26525:14;;26522:73;;26553:30;26570:12;26553:16;:30::i;:::-;26624:21;26659:12;;26656:154;;26685:26;26698:12;26709:1;26698:10;:12;:::i;:::-;26685;:26::i;:::-;26732:42;26724:74;26785:12;26796:1;26785:10;:12;:::i;:::-;26724:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26656:154;26455:362;;26424:393::o;25565:207::-;13567:6;;-1:-1:-1;;;;;13567:6:0;314:10;13629:23;13621:68;;;;-1:-1:-1;;;13621:68:0;;;;;;;:::i;:::-;25664:9:::1;25659:106;25683:8;:15;25679:1;:19;25659:106;;;25747:6;25720:11;:24;25732:8;25741:1;25732:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;25720:24:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;25720:24:0;:33;;-1:-1:-1;;25720:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25700:3;::::1;::::0;::::1;:::i;:::-;;;;25659:106;;13717:94:::0;13567:6;;-1:-1:-1;;;;;13567:6:0;314:10;13629:23;13621:68;;;;-1:-1:-1;;;13621:68:0;;;;;;;:::i;:::-;13782:21:::1;13800:1;13782:9;:21::i;:::-;13717:94::o:0;15843:164::-;15920:46;15936:7;314:10;15959:6;15920:15;:46::i;:::-;15977:22;15983:7;15992:6;15977:5;:22::i;26825:143::-;13567:6;;-1:-1:-1;;;;;13567:6:0;314:10;13629:23;13621:68;;;;-1:-1:-1;;;13621:68:0;;;;;;;:::i;:::-;26936:15:::1;::::0;26910:50:::1;::::0;-1:-1:-1;;;26910:50:0;;-1:-1:-1;;;;;26936:15:0;;::::1;26910:50;::::0;::::1;10085:51:1::0;10152:18;;;10145:34;;;26910:25:0;;::::1;::::0;::::1;::::0;10058:18:1;;26910:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2731:104::-:0;2787:13;2820:7;2813:14;;;;;:::i;19037:410::-;314:10;19158:4;19207:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19207:34:0;;;;;;;;;;19260:35;;;;19252:85;;;;-1:-1:-1;;;19252:85:0;;10642:2:1;19252:85:0;;;10624:21:1;10681:2;10661:18;;;10654:30;10720:34;10700:18;;;10693:62;-1:-1:-1;;;10771:18:1;;;10764:35;10816:19;;19252:85:0;10440:401:1;19252:85:0;19348:67;314:10;19371:7;19380:34;19399:15;19380:16;:34;:::i;19348:67::-;-1:-1:-1;19435:4:0;;19037:410;-1:-1:-1;;;19037:410:0:o;19455:165::-;19533:4;19550:40;19560:10;19572:9;19583:6;19550:9;:40::i;26024:278::-;13567:6;;-1:-1:-1;;;;;13567:6:0;314:10;13629:23;13621:68;;;;-1:-1:-1;;;13621:68:0;;;;;;;:::i;:::-;26155:2:::1;26138:13;:19;;26129:29;;;::::0;::::1;;26196:2;26178:14;:20;;26169:30;;;::::0;::::1;;26218:26;::::0;;::::1;::::0;;::::1;::::0;;;;;-1:-1:-1;26218:26:0::1;::::0;;::::1;::::0;;;;;;;;;26210:5:::1;:34:::0;;;;;;;;;;;;26267:27;;;;::::1;::::0;;;;;;;::::1;::::0;;;;;;;26255:9:::1;:39:::0;;;;;;;26024:278::o;13819:192::-;13567:6;;-1:-1:-1;;;;;13567:6:0;314:10;13629:23;13621:68;;;;-1:-1:-1;;;13621:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13908:22:0;::::1;13900:73;;;::::0;-1:-1:-1;;;13900:73:0;;11048:2:1;13900:73:0::1;::::0;::::1;11030:21:1::0;11087:2;11067:18;;;11060:30;11126:34;11106:18;;;11099:62;-1:-1:-1;;;11177:18:1;;;11170:36;11223:19;;13900:73:0::1;10846:402:1::0;13900:73:0::1;13984:19;13994:8;13984:9;:19::i;11142:380::-:0;-1:-1:-1;;;;;11278:19:0;;11270:68;;;;-1:-1:-1;;;11270:68:0;;11455:2:1;11270:68:0;;;11437:21:1;11494:2;11474:18;;;11467:30;11533:34;11513:18;;;11506:62;-1:-1:-1;;;11584:18:1;;;11577:34;11628:19;;11270:68:0;11253:400:1;11270:68:0;-1:-1:-1;;;;;11357:21:0;;11349:68;;;;-1:-1:-1;;;11349:68:0;;11860:2:1;11349:68:0;;;11842:21:1;11899:2;11879:18;;;11872:30;11938:34;11918:18;;;11911:62;-1:-1:-1;;;11989:18:1;;;11982:32;12031:19;;11349:68:0;11658:398:1;11349:68:0;-1:-1:-1;;;;;11430:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11482:32;;1500:25:1;;;11482:32:0;;1473:18:1;11482:32:0;;;;;;;11142:380;;;:::o;19628:3214::-;19778:1;19769:6;:10;19761:64;;;;-1:-1:-1;;;19761:64:0;;12263:2:1;19761:64:0;;;12245:21:1;12302:2;12282:18;;;12275:30;12341:34;12321:18;;;12314:62;-1:-1:-1;;;12392:18:1;;;12385:39;12441:19;;19761:64:0;12061:405:1;19761:64:0;-1:-1:-1;;;;;19845:19:0;;;;;;:11;:19;;;;;;;;19844:20;:47;;;;-1:-1:-1;;;;;;19869:22:0;;;;;;:11;:22;;;;;;;;19868:23;19844:47;19836:79;;;;-1:-1:-1;;;19836:79:0;;12673:2:1;19836:79:0;;;12655:21:1;12712:2;12692:18;;;12685:30;-1:-1:-1;;;12731:18:1;;;12724:49;12790:18;;19836:79:0;12471:343:1;19836:79:0;-1:-1:-1;;;;;19933:17:0;;;;;;:9;:17;;;;;;;;19932:18;:43;;;;-1:-1:-1;;;;;;19955:20:0;;;;;;:9;:20;;;;;;;;19954:21;19932:43;19928:118;;;20000:10;;-1:-1:-1;;;20000:10:0;;;;19992:42;;;;-1:-1:-1;;;19992:42:0;;13021:2:1;19992:42:0;;;13003:21:1;13060:2;13040:18;;;13033:30;-1:-1:-1;;;13079:18:1;;;13072:49;13138:18;;19992:42:0;12819:343:1;19992:42:0;20072:13;;-1:-1:-1;;;;;20062:23:0;;;20072:13;;20062:23;:61;;;;-1:-1:-1;20104:15:0;;:19;;20122:1;20104:19;:::i;:::-;20089:12;:34;20062:61;20058:123;;;-1:-1:-1;;;;;20140:22:0;;;;;;:11;:22;;;;;:29;;-1:-1:-1;;20140:29:0;20165:4;20140:29;;;20058:123;20207:13;;-1:-1:-1;;;;;20197:23:0;;;20207:13;;20197:23;:48;;;;-1:-1:-1;;;;;;20225:20:0;;;;;;:9;:20;;;;;;;;20224:21;20197:48;:63;;;;-1:-1:-1;20250:10:0;;-1:-1:-1;;;20250:10:0;;;;20249:11;20197:63;20193:315;;;20295:11;;20285:6;:21;;20277:63;;;;-1:-1:-1;;;20277:63:0;;13369:2:1;20277:63:0;;;13351:21:1;13408:2;13388:18;;;13381:30;13447:31;13427:18;;;13420:59;13496:18;;20277:63:0;13167:353:1;20277:63:0;20414:14;;20404:6;20381:20;20391:9;-1:-1:-1;;;;;3904:18:0;3877:7;3904:18;;;;;;;;;;;;3803:127;20381:20;:29;;;;:::i;:::-;:47;;20355:141;;;;-1:-1:-1;;;20355:141:0;;13727:2:1;20355:141:0;;;13709:21:1;;;13746:18;;;13739:30;13805:34;13785:18;;;13778:62;13857:18;;20355:141:0;13525:356:1;20355:141:0;20548:13;;-1:-1:-1;;;;;20538:23:0;;;20548:13;;20538:23;;;;:48;;-1:-1:-1;;;;;;20566:20:0;;;;;;:9;:20;;;;;;;;20565:21;20538:48;:70;;;;-1:-1:-1;;;;;;20591:17:0;;;;;;:9;:17;;;;;;;;20590:18;20538:70;:85;;;;-1:-1:-1;20613:10:0;;-1:-1:-1;;;20613:10:0;;;;20612:11;20538:85;20520:441;;;20668:12;;20658:6;:22;;20650:65;;;;-1:-1:-1;;;20650:65:0;;14088:2:1;20650:65:0;;;14070:21:1;14127:2;14107:18;;;14100:30;14166:32;14146:18;;;14139:60;14216:18;;20650:65:0;13886:354:1;20650:65:0;20747:13;;-1:-1:-1;;;;;20734:26:0;;;20747:13;;20734:26;20730:220;;20844:14;;20834:6;20811:20;20821:9;-1:-1:-1;;;;;3904:18:0;3877:7;3904:18;;;;;;;;;;;;3803:127;20811:20;:29;;;;:::i;:::-;:47;;20781:153;;;;-1:-1:-1;;;20781:153:0;;13727:2:1;20781:153:0;;;13709:21:1;;;13746:18;;;13739:30;13805:34;13785:18;;;13778:62;13857:18;;20781:153:0;13525:356:1;20781:153:0;20973:15;20999:14;21024:11;21046:15;21072:18;21101:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;21101:25:0;21214:10;;-1:-1:-1;;;21214:10:0;;;;;:31;;-1:-1:-1;;;;;;21228:17:0;;;;;;:9;:17;;;;;;;;21214:31;:55;;;-1:-1:-1;;;;;;21249:20:0;;;;;;:9;:20;;;;;;;;21214:55;21210:865;;;21290:1;21284:7;;21210:865;;;21355:13;;-1:-1:-1;;;;;21355:13:0;;;21342:26;;;;21338:737;;21451:9;:19;21412;;:58;;21451:19;21412:58;:::i;:::-;21526:14;;21555:24;;;;;;;;21526:9;21555:24;;;;;;;;;;;;;;;21385:85;;-1:-1:-1;21385:85:0;;-1:-1:-1;21526:14:0;-1:-1:-1;21555:24:0;-1:-1:-1;21338:737:0;;;21611:13;;-1:-1:-1;;;;;21611:13:0;;;21601:23;;;;21597:478;;21703:5;:15;21668;;:50;;21703:15;21668:50;:::i;:::-;21774:10;;21799:20;;;;;;;;21774:5;21799:20;;;;;;;;;;;;;;;21641:77;;-1:-1:-1;21641:77:0;;-1:-1:-1;21774:10:0;-1:-1:-1;21799:20:0;-1:-1:-1;21597:478:0;;;21922:13;:23;21879;;:66;;21922:23;21879:66;:::i;:::-;22002:18;;22035:28;;;;;;;;22002:13;22035:28;;;;;;;;;;;;;;;21852:93;;-1:-1:-1;21852:93:0;;-1:-1:-1;22002:18:0;-1:-1:-1;22035:28:0;-1:-1:-1;21597:478:0;22113:3;22094:15;22103:6;22094;:15;:::i;:::-;22093:23;;;;:::i;:::-;22087:29;-1:-1:-1;22161:3:0;22141:16;22150:7;22141:6;:16;:::i;:::-;22140:24;;;;:::i;:::-;22278:18;;22127:37;;-1:-1:-1;;;;22278:18:0;;;;:45;;;;-1:-1:-1;22310:13:0;;-1:-1:-1;;;;;22300:23:0;;;22310:13;;22300:23;;22278:45;22274:81;;;22325:30;22333:7;22342:12;22325:7;:30::i;:::-;22397:63;22413:6;22421:9;22442:16;22448:10;22442:3;:16;:::i;:::-;22432:27;;:6;:27;:::i;:::-;22397:15;:63::i;:::-;22502:14;;22499:77;;22533:31;22545:6;22553:10;22533:11;:31::i;:::-;22590:7;;22586:249;;22662:11;;22658:164;;22694:17;22735:3;22715:16;22724:7;22715:6;:16;:::i;:::-;22714:24;;;;:::i;:::-;22694:44;;22757:49;22773:6;22789:4;22796:9;22757:15;:49::i;:::-;22675:147;22658:164;19750:3092;;;;;;19628:3214;;;:::o;9960:744::-;-1:-1:-1;;;;;10044:21:0;;10036:67;;;;-1:-1:-1;;;10036:67:0;;14447:2:1;10036:67:0;;;14429:21:1;14486:2;14466:18;;;14459:30;14525:34;14505:18;;;14498:62;-1:-1:-1;;;14576:18:1;;;14569:31;14617:19;;10036:67:0;14245:397:1;10036:67:0;10116:54;10137:7;10154:6;10163;10116:20;:54::i;:::-;-1:-1:-1;;;;;10208:18:0;;10183:22;10208:18;;;;;;;;;;;10245:24;;;;10237:71;;;;-1:-1:-1;;;10237:71:0;;14849:2:1;10237:71:0;;;14831:21:1;14888:2;14868:18;;;14861:30;14927:34;14907:18;;;14900:62;-1:-1:-1;;;14978:18:1;;;14971:32;15020:19;;10237:71:0;14647:398:1;10237:71:0;-1:-1:-1;;;;;10344:18:0;;:9;:18;;;;;;;;;;;;10365:23;;;10344:44;;10483:12;:22;;;;;;;10588:42;;1500:25:1;;;10614:6:0;;10344:18;10588:42;;1473:18:1;10588:42:0;;;;;;;10643:53;10663:7;10680:6;10689;10643:19;:53::i;24293:555::-;24443:16;;;24457:1;24443:16;;;;;;;;24419:21;;24443:16;;;;;;;;;;-1:-1:-1;24443:16:0;24419:40;;24488:4;24470;24475:1;24470:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24470:23:0;;;:7;;;;;;;;;;:23;;;;24514:13;;:20;;;-1:-1:-1;;;24514:20:0;;;;:13;;;;;:18;;:20;;;;;24470:7;;24514:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24504:4;24509:1;24504:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24504:30:0;;;:7;;;;;;;;;:30;24579:13;;24547:60;;24564:4;;24579:13;24595:11;24547:8;:60::i;:::-;24646:13;;:194;;-1:-1:-1;;;24646:194:0;;-1:-1:-1;;;;;24646:13:0;;;;:64;;:194;;24725:11;;24646:13;;24767:4;;24794;;24814:15;;24646:194;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24348:500;24293:555;:::o;26310:106::-;26375:15;;26367:41;;-1:-1:-1;;;;;26375:15:0;;;;26367:41;;;;;26401:6;;26375:15;26367:41;26375:15;26367:41;26401:6;26375:15;26367:41;;;;;;;;;;;;;;;;;;;14019:173;14094:6;;;-1:-1:-1;;;;;14111:17:0;;;-1:-1:-1;;;;;;14111:17:0;;;;;;;14144:40;;14094:6;;;14111:17;14094:6;;14144:40;;14075:16;;14144:40;14064:128;14019:173;:::o;5231:419::-;-1:-1:-1;;;;;4588:18:0;;;5332:24;4588:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;5399:37:0;;5395:248;;5481:6;5461:16;:26;;5453:68;;;;-1:-1:-1;;;5453:68:0;;16493:2:1;5453:68:0;;;16475:21:1;16532:2;16512:18;;;16505:30;16571:31;16551:18;;;16544:59;16620:18;;5453:68:0;16291:353:1;5453:68:0;5565:51;5574:5;5581:7;5609:6;5590:16;:25;5565:8;:51::i;:::-;5321:329;5231:419;;;:::o;22850:1435::-;17475:10;;-1:-1:-1;;;17475:10:0;;;;17470:110;;17502:10;:17;;-1:-1:-1;;;;17502:17:0;-1:-1:-1;;;17502:17:0;;;22941:49;;22972:7:::1;22941:49;23046:4;23002:23;3904:18:::0;;;;;;;;;;;23086:23:::1;::::0;23067:42;::::1;23063:1215;;23156:1;23130:23;;:27;23126:109;;;-1:-1:-1::0;23196:23:0::1;::::0;23126:109:::1;23306:19;23328:11;:7:::0;23338:1:::1;23328:11;:::i;:::-;23306:33;;23354:32;23448:11;23408:9;:19;;;23390:15;:37;;;;:::i;:::-;23389:70;;;;:::i;:::-;23354:105:::0;-1:-1:-1;23474:14:0::1;23491:42;23354:105:::0;23491:15;:42:::1;:::i;:::-;23474:59:::0;-1:-1:-1;23575:21:0::1;23613:24;23474:59:::0;23613:16:::1;:24::i;:::-;23654:20;23677:38;23701:14:::0;23677:21:::1;:38;:::i;:::-;23654:61;;23730:19;23782:9;:19;;;23768:11;:33;;;;:::i;:::-;23752:50;::::0;:12;:50:::1;:::i;:::-;23730:72;;23817:29;23863:9;:19;;;23849:11;:33;;;;:::i;:::-;23817:65:::0;-1:-1:-1;23903:25:0;;23899:172:::1;;23994:61;24007:24;24033:21;23994:12;:61::i;:::-;24128:19:::0;;24087:20:::1;::::0;24110:15:::1;:11:::0;24124:1:::1;24110:15;:::i;:::-;:37;;;;:::i;:::-;24087:60:::0;-1:-1:-1;24166:16:0;;24162:105:::1;;24211:15;::::0;24203:48:::1;::::0;-1:-1:-1;;;;;24211:15:0::1;24238:12:::0;24203:34:::1;:48::i;:::-;23111:1167;;;;;;;;23063:1215;22928:1357;17534:1;17550:10:::0;:18;;-1:-1:-1;;;;17550:18:0;;;22850:1435;;:::o;8646:578::-;-1:-1:-1;;;;;8786:20:0;;8778:70;;;;-1:-1:-1;;;8778:70:0;;16851:2:1;8778:70:0;;;16833:21:1;16890:2;16870:18;;;16863:30;16929:34;16909:18;;;16902:62;-1:-1:-1;;;16980:18:1;;;16973:35;17025:19;;8778:70:0;16649:401:1;8778:70:0;-1:-1:-1;;;;;8867:23:0;;8859:71;;;;-1:-1:-1;;;8859:71:0;;17257:2:1;8859:71:0;;;17239:21:1;17296:2;17276:18;;;17269:30;17335:34;17315:18;;;17308:62;-1:-1:-1;;;17386:18:1;;;17379:33;17429:19;;8859:71:0;17055:399:1;8859:71:0;-1:-1:-1;;;;;8967:17:0;;8943:21;8967:17;;;;;;;;;;;9003:23;;;;8995:74;;;;-1:-1:-1;;;8995:74:0;;17661:2:1;8995:74:0;;;17643:21:1;17700:2;17680:18;;;17673:30;17739:34;17719:18;;;17712:62;-1:-1:-1;;;17790:18:1;;;17783:36;17836:19;;8995:74:0;17459:402:1;8995:74:0;9100:22;9116:6;9100:13;:22;:::i;:::-;-1:-1:-1;;;;;9080:17:0;;;:9;:17;;;;;;;;;;;:42;;;;9133:20;;;;;;;;:30;;9157:6;;9080:9;9133:30;;9157:6;;9133:30;:::i;:::-;;;;;;;;9198:9;-1:-1:-1;;;;;9181:35:0;9190:6;-1:-1:-1;;;;;9181:35:0;;9209:6;9181:35;;;;1500:25:1;;1488:2;1473:18;;1354:177;9181:35:0;;;;;;;;8767:457;8646:578;;;:::o;24856:514::-;25036:13;;25004:60;;25021:4;;-1:-1:-1;;;;;25036:13:0;25052:11;25004:8;:60::i;:::-;25107:13;;:255;;-1:-1:-1;;;25107:255:0;;25179:4;25107:255;;;18207:34:1;18257:18;;;18250:34;;;25107:13:0;18300:18:1;;;18293:34;;;18343:18;;;18336:34;16710:42:0;18386:19:1;;;18379:44;25336:15:0;18439:19:1;;;18432:35;-1:-1:-1;;;;;25107:13:0;;;;:29;;25145:9;;18141:19:1;;25107:255:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24856:514;;:::o;12937:319::-;13052:6;13027:21;:31;;13019:73;;;;-1:-1:-1;;;13019:73:0;;18991:2:1;13019:73:0;;;18973:21:1;19030:2;19010:18;;;19003:30;19069:31;19049:18;;;19042:59;19118:18;;13019:73:0;18789:353:1;13019:73:0;13106:12;13124:9;-1:-1:-1;;;;;13124:14:0;13147:6;13124:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13105:54;;;13178:7;13170:78;;;;-1:-1:-1;;;13170:78:0;;19559:2:1;13170:78:0;;;19541:21:1;19598:2;19578:18;;;19571:30;19637:34;19617:18;;;19610:62;19708:28;19688:18;;;19681:56;19754:19;;13170:78:0;19357:422:1;14:548;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:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1536:456::-;1613:6;1621;1629;1682:2;1670:9;1661:7;1657:23;1653:32;1650:52;;;1698:1;1695;1688:12;1650:52;1737:9;1724:23;1756:31;1781:5;1756:31;:::i;:::-;1806:5;-1:-1:-1;1863:2:1;1848:18;;1835:32;1876:33;1835:32;1876:33;:::i;:::-;1536:456;;1928:7;;-1:-1:-1;;;1982:2:1;1967:18;;;;1954:32;;1536:456::o;2186:180::-;2245:6;2298:2;2286:9;2277:7;2273:23;2269:32;2266:52;;;2314:1;2311;2304:12;2266:52;-1:-1:-1;2337:23:1;;2186:180;-1:-1:-1;2186:180:1:o;2903:127::-;2964:10;2959:3;2955:20;2952:1;2945:31;2995:4;2992:1;2985:15;3019:4;3016:1;3009:15;3035:118;3121:5;3114:13;3107:21;3100:5;3097:32;3087:60;;3143:1;3140;3133:12;3158:128;3223:20;;3252:28;3223:20;3252:28;:::i;3291:1191::-;3381:6;3389;3442:2;3430:9;3421:7;3417:23;3413:32;3410:52;;;3458:1;3455;3448:12;3410:52;3498:9;3485:23;3527:18;3568:2;3560:6;3557:14;3554:34;;;3584:1;3581;3574:12;3554:34;3622:6;3611:9;3607:22;3597:32;;3667:7;3660:4;3656:2;3652:13;3648:27;3638:55;;3689:1;3686;3679:12;3638:55;3725:2;3712:16;3747:4;3770:2;3766;3763:10;3760:36;;;3776:18;;:::i;:::-;3822:2;3819:1;3815:10;3854:2;3848:9;3917:2;3913:7;3908:2;3904;3900:11;3896:25;3888:6;3884:38;3972:6;3960:10;3957:22;3952:2;3940:10;3937:18;3934:46;3931:72;;;3983:18;;:::i;:::-;4019:2;4012:22;4069:18;;;4103:15;;;;-1:-1:-1;4145:11:1;;;4141:20;;;4173:19;;;4170:39;;;4205:1;4202;4195:12;4170:39;4229:11;;;;4249:148;4265:6;4260:3;4257:15;4249:148;;;4331:23;4350:3;4331:23;:::i;:::-;4319:36;;4282:12;;;;4375;;;;4249:148;;;4416:6;-1:-1:-1;4441:35:1;;-1:-1:-1;4457:18:1;;;4441:35;:::i;:::-;4431:45;;;;;;3291:1191;;;;;:::o;4487:247::-;4546:6;4599:2;4587:9;4578:7;4574:23;4570:32;4567:52;;;4615:1;4612;4605:12;4567:52;4654:9;4641:23;4673:31;4698:5;4673:31;:::i;:::-;4723:5;4487:247;-1:-1:-1;;;4487:247:1:o;4962:248::-;5030:6;5038;5091:2;5079:9;5070:7;5066:23;5062:32;5059:52;;;5107:1;5104;5097:12;5059:52;-1:-1:-1;;5130:23:1;;;5200:2;5185:18;;;5172:32;;-1:-1:-1;4962:248:1:o;5215:388::-;5283:6;5291;5344:2;5332:9;5323:7;5319:23;5315:32;5312:52;;;5360:1;5357;5350:12;5312:52;5399:9;5386:23;5418:31;5443:5;5418:31;:::i;:::-;5468:5;-1:-1:-1;5525:2:1;5510:18;;5497:32;5538:33;5497:32;5538:33;:::i;:::-;5590:7;5580:17;;;5215:388;;;;;:::o;5608:380::-;5687:1;5683:12;;;;5730;;;5751:61;;5805:4;5797:6;5793:17;5783:27;;5751:61;5858:2;5850:6;5847:14;5827:18;5824:38;5821:161;;5904:10;5899:3;5895:20;5892:1;5885:31;5939:4;5936:1;5929:15;5967:4;5964:1;5957:15;5821:161;;5608:380;;;:::o;5993:356::-;6195:2;6177:21;;;6214:18;;;6207:30;6273:34;6268:2;6253:18;;6246:62;6340:2;6325:18;;5993:356::o;7116:127::-;7177:10;7172:3;7168:20;7165:1;7158:31;7208:4;7205:1;7198:15;7232:4;7229:1;7222:15;7248:128;7315:9;;;7336:11;;;7333:37;;;7350:18;;:::i;7381:125::-;7446:9;;;7467:10;;;7464:36;;;7480:18;;:::i;7861:422::-;7950:1;7993:5;7950:1;8007:270;8028:7;8018:8;8015:21;8007:270;;;8087:4;8083:1;8079:6;8075:17;8069:4;8066:27;8063:53;;;8096:18;;:::i;:::-;8146:7;8136:8;8132:22;8129:55;;;8166:16;;;;8129:55;8245:22;;;;8205:15;;;;8007:270;;;8011:3;7861:422;;;;;:::o;8288:806::-;8337:5;8367:8;8357:80;;-1:-1:-1;8408:1:1;8422:5;;8357:80;8456:4;8446:76;;-1:-1:-1;8493:1:1;8507:5;;8446:76;8538:4;8556:1;8551:59;;;;8624:1;8619:130;;;;8531:218;;8551:59;8581:1;8572:10;;8595:5;;;8619:130;8656:3;8646:8;8643:17;8640:43;;;8663:18;;:::i;:::-;-1:-1:-1;;8719:1:1;8705:16;;8734:5;;8531:218;;8833:2;8823:8;8820:16;8814:3;8808:4;8805:13;8801:36;8795:2;8785:8;8782:16;8777:2;8771:4;8768:12;8764:35;8761:77;8758:159;;;-1:-1:-1;8870:19:1;;;8902:5;;8758:159;8949:34;8974:8;8968:4;8949:34;:::i;:::-;9019:6;9015:1;9011:6;9007:19;8998:7;8995:32;8992:58;;;9030:18;;:::i;:::-;9068:20;;8288:806;-1:-1:-1;;;8288:806:1:o;9099:140::-;9157:5;9186:47;9227:4;9217:8;9213:19;9207:4;9186:47;:::i;9244:168::-;9317:9;;;9348;;9365:15;;;9359:22;;9345:37;9335:71;;9386:18;;:::i;9417:217::-;9457:1;9483;9473:132;;9527:10;9522:3;9518:20;9515:1;9508:31;9562:4;9559:1;9552:15;9590:4;9587:1;9580:15;9473:132;-1:-1:-1;9619:9:1;;9417:217::o;9639:127::-;9700:10;9695:3;9691:20;9688:1;9681:31;9731:4;9728:1;9721:15;9755:4;9752:1;9745:15;9771:135;9810:3;9831:17;;;9828:43;;9851:18;;:::i;:::-;-1:-1:-1;9898:1:1;9887:13;;9771:135::o;10190:245::-;10257:6;10310:2;10298:9;10289:7;10285:23;10281:32;10278:52;;;10326:1;10323;10316:12;10278:52;10358:9;10352:16;10377:28;10399:5;10377:28;:::i;15050:251::-;15120:6;15173:2;15161:9;15152:7;15148:23;15144:32;15141:52;;;15189:1;15186;15179:12;15141:52;15221:9;15215:16;15240:31;15265:5;15240:31;:::i;15306:980::-;15568:4;15616:3;15605:9;15601:19;15647:6;15636:9;15629:25;15673:2;15711:6;15706:2;15695:9;15691:18;15684:34;15754:3;15749:2;15738:9;15734:18;15727:31;15778:6;15813;15807:13;15844:6;15836;15829:22;15882:3;15871:9;15867:19;15860:26;;15921:2;15913:6;15909:15;15895:29;;15942:1;15952:195;15966:6;15963:1;15960:13;15952:195;;;16031:13;;-1:-1:-1;;;;;16027:39:1;16015:52;;16122:15;;;;16087:12;;;;16063:1;15981:9;15952:195;;;-1:-1:-1;;;;;;;16203:32:1;;;;16198:2;16183:18;;16176:60;-1:-1:-1;;;16267:3:1;16252:19;16245:35;16164:3;15306:980;-1:-1:-1;;;15306:980:1:o;18478:306::-;18566:6;18574;18582;18635:2;18623:9;18614:7;18610:23;18606:32;18603:52;;;18651:1;18648;18641:12;18603:52;18680:9;18674:16;18664:26;;18730:2;18719:9;18715:18;18709:25;18699:35;;18774:2;18763:9;18759:18;18753:25;18743:35;;18478:306;;;;;:::o

Swarm Source

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