CRO Price: $0.08 (-1.42%)

Token

Crolon Mars (CLMRS)

Overview

Max Total Supply

1,000,000,000 CLMRS

Holders

1,613

Market

Price

$0.00 @ 0.001362 CRO (+1.56%)

Onchain Market Cap

$108,580.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
VVS Finance: Team Vesting
Balance
1 CLMRS

Value
$0.00 ( ~0 CRO) [0.0000%]
0x025322f210e6a7546c3f080325edbe692b25c1ea
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

A Mars Metaverse, created on the Cronos Blockchain accessible to anyone owning a CROLON NFT.

Contract Source Code Verified (Exact Match)

Contract Name:
CROLONMARS

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-06-14
*/

// DEVELOPED BY: t.me/AnoopSafuDeveloper
//SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.7;

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: generation to the zero address");

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

        _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(0), amount);

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * generation and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be generated 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 {}
}

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

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

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool public providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 public tokenLiquidityThreshold = 2_500_000 * 10**18;
    uint256 public maxBuyLimit = 10_000_000 * 10**18;
    uint256 public maxSellLimit = 10_000_000 * 10**18;
    uint256 public maxWalletLimit = 10_000_000 * 10**18;

    uint256 public genesis_block;
    uint256 private deadline = 3;
    uint256 private launchtax = 99;

    address public marketingWallet = 0x35131f790480cdD1Fb79328234Df215e9FC24375;
    address public devWallet = 0x5194Bd6a8C26e75A27BFD3DcE0316042f630EBA9;
    address public opsWallet = 0xFc1F51C6D6ce0de412a343f8bccD31EB1193bEb0;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
        uint256 ops;
        uint256 dev;
    }

    Taxes public taxes = Taxes(3, 3, 3, 1);
    Taxes public sellTaxes = Taxes(3, 3, 3, 1);

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

    //Anti Dump
    mapping(address => uint256) private _lastSell;
    bool public coolDownEnabled = true;
    uint256 public coolDownTime = 60 seconds;

    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor(address routerAdd) ERC20("Crolon Mars", "CLMRS") {
        _tokengeneration(msg.sender, 1e9 * 10**decimals());
        exemptFee[msg.sender] = true;

        IRouter _router = IRouter(routerAdd);
        // Create a pair for this new token
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[opsWallet] = true;
        exemptFee[devWallet] = true;
        exemptFee[deadWallet] = true;

        allowedTransfer[address(this)] = true;
        allowedTransfer[owner()] = true;
        allowedTransfer[pair] = true;
        allowedTransfer[marketingWallet] = true;
        allowedTransfer[opsWallet] = true;
        allowedTransfer[devWallet] = true;
        allowedTransfer[deadWallet] = 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");

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

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

        if (
            sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex
        ) {
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if (recipient != pair) {
                require(
                    balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
            if (coolDownEnabled) {
                uint256 timePassed = block.timestamp - _lastSell[sender];
                require(timePassed >= coolDownTime, "Cooldown enabled");
                _lastSell[sender] = block.timestamp;
            }
        }

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

        bool useLaunchFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < genesis_block + deadline;

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

            //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing +
                sellTaxes.ops +                
                sellTaxes.dev;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing +
                taxes.ops +
                taxes.dev ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

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

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

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {
        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 croToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (croToAddLiquidityWith > 0) {
                // Add liquidity 
                addLiquidity(tokensToAddLiquidityWith, croToAddLiquidityWith);
            }

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

            uint256 opsAmt = unitBalance * 2 * swapTaxes.ops;
            if (opsAmt > 0) {
                payable(opsWallet).sendValue(opsAmt);
            }

            uint256 devAmt = unitBalance * 2 * swapTaxes.dev;
            if (devAmt > 0) {
                payable(devWallet).sendValue(devAmt);
            }

        }
    }

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

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

        // make the swap
        router.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(router), tokenAmount);

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

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function SetBuyTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _ops,
        uint256 _dev
    ) external onlyOwner {
        taxes = Taxes(_marketing, _liquidity,  _ops, _dev);
        require((_marketing + _liquidity + _ops + _dev) <= 20, "Must keep fees at 20% or less");
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _ops,
        uint256 _dev
    ) external onlyOwner {
        sellTaxes = Taxes(_marketing, _liquidity,  _ops, _dev);
        require((_marketing + _liquidity + _ops + _dev) <= 20, "Must keep fees at 20% or less");
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner {
        router = IRouter(newRouter);
        pair = newPair;
    }

    function EnableTrading() external onlyOwner {
        require(!tradingEnabled, "Cannot re-enable trading");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        deadline = _deadline;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = newWallet;
    }

    function updateOpsWallet(address newWallet) external onlyOwner {
        opsWallet = newWallet;
    }

    function updateDevWallet(address newWallet) external onlyOwner {
        devWallet = newWallet;
    }

    function updateCooldown(bool state, uint256 time) external onlyOwner {
        coolDownTime = time * 1 seconds;
        coolDownEnabled = state;
        require(time <= 300, "cooldown timer cannot exceed 5 minutes");
    }

    function updateAllowedTransfer(address account, bool state) external onlyOwner {
        allowedTransfer[account] = state;
    }

    function bulkAllowedTransfer(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            allowedTransfer[accounts[i]] = state;
        }
    }

    function updateExemptFee(address _address, bool state) external onlyOwner {
        exemptFee[_address] = state;
    }

    function bulkExemptFee(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = state;
        }
    }

    function updateMaxBuyTxLimit(uint256 maxBuy) external onlyOwner {
        maxBuyLimit = maxBuy * 10**decimals();
        require(maxBuy >= 1_000_000, "Cannot set max buy amount lower than 0.1%");
    }

    function updateMaxSellTxLimit(uint256 maxSell) external onlyOwner {
        maxSellLimit = maxSell * 10**decimals();
        require(maxSell >= 1_000_000, "Cannot set max sell amount lower than 0.1%");
    }

    function updateMaxWalletlimit(uint256 amount) external onlyOwner {
        maxWalletLimit = amount * 10**decimals();
        require(amount >= 1_000_000, "Cannot set max wallet amount lower than 0.1%");
    }

    function rescueCRO(uint256 weiAmount) external onlyOwner {
        payable(devWallet).transfer(weiAmount);
    }

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

    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routerAdd","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_ops","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"SetBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_ops","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"SetSellTaxes","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":"","type":"address"}],"name":"allowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkAllowedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":"opsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","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":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueCRO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueCROtokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"ops","type":"uint256"},{"internalType":"uint256","name":"dev","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":"ops","type":"uint256"},{"internalType":"uint256","name":"dev","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":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateAllowedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"updateCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"}],"name":"updateMaxBuyTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"updateMaxSellTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateOpsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b191690556a02116545850052128000006008556a084595161401484a0000006009819055600a819055600b556003600d8190556063600e55600f80546001600160a01b03199081167335131f790480cdd1fb79328234df215e9fc2437517909155601080548216735194bd6a8c26e75a27bfd3dce0316042f630eba91790556011805490911673fc1f51c6d6ce0de412a343f8bccd31eb1193beb0179055608081905260a081905260c0819052600160e08190526012829055601382905560148290556015819055610180604052610100829052610120829052610140829052610160819052601682905560178290556018919091556019819055601d805460ff19169091179055603c601e553480156200012457600080fd5b506040516200350538038062003505833981016040819052620001479162000718565b604080518082018252600b81526a43726f6c6f6e204d61727360a81b602080830191825283518085019094526005845264434c4d525360d81b908401528151919291620001979160039162000672565b508051620001ad90600490602084019062000672565b505050620001ca620001c46200052660201b60201c565b6200052a565b620001f333620001dd6012600a620007ae565b620001ed90633b9aca006200086f565b6200057c565b336000908152601a60209081526040808320805460ff19166001179055805163c45a015560e01b815290518493926001600160a01b0385169263c45a01559260048083019392829003018186803b1580156200024e57600080fd5b505afa15801562000263573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000289919062000718565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002d257600080fd5b505afa158015620002e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030d919062000718565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200035657600080fd5b505af11580156200036b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000391919062000718565b600680546001600160a01b038086166001600160a01b031992831617909255600780548385169216919091179055306000818152601a60209081526040808320805460ff199081166001908117909255600f54871685528285208054821683179055601154871685528285208054821683179055601054909616845281842080548716821790557f428bdc965569ef4717764ecfd84e88946a9a226b52b813e6ab6a7f46aad86e888054871682179055938352601b91829052822080549094168317909355929350916200046d6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560075482168152601b909352818320805485166001908117909155600f548216845282842080548616821790556011548216845282842080548616821790556010549091168352908220805484168217905561dead9091527f6790d4910a095e0e04c8daa388834616a295bac3f59038957b6d0b93a2d21684805490921617905550620008e4915050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620005e55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b8060026000828254620005f991906200074a565b90915550506001600160a01b03821660009081526020819052604081208054839290620006289084906200074a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620006809062000891565b90600052602060002090601f016020900481019282620006a45760008555620006ef565b82601f10620006bf57805160ff1916838001178555620006ef565b82800160010185558215620006ef579182015b82811115620006ef578251825591602001919060010190620006d2565b50620006fd92915062000701565b5090565b5b80821115620006fd576000815560010162000702565b6000602082840312156200072b57600080fd5b81516001600160a01b03811681146200074357600080fd5b9392505050565b60008219821115620007605762000760620008ce565b500190565b600181815b80851115620007a65781600019048211156200078a576200078a620008ce565b808516156200079857918102915b93841c93908002906200076a565b509250929050565b60006200074360ff841683600082620007ca5750600162000869565b81620007d95750600062000869565b8160018114620007f25760028114620007fd576200081d565b600191505062000869565b60ff841115620008115762000811620008ce565b50506001821b62000869565b5060208310610133831016604e8410600b841016171562000842575081810a62000869565b6200084e838362000765565b8060001904821115620008655762000865620008ce565b0290505b92915050565b60008160001904831182151516156200088c576200088c620008ce565b500290565b600181811c90821680620008a657607f821691505b60208210811415620008c857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b612c1180620008f46000396000f3fe60806040526004361061031e5760003560e01c8063728f8eea116101ab578063b5c57145116100f7578063e517f2b911610095578063f2fde38b1161006f578063f2fde38b1461098f578063f66895a3146109af578063f887ea40146109d2578063fbe6324e146109f257600080fd5b8063e517f2b914610935578063edaa116814610955578063ee36e3591461097557600080fd5b8063cc309d84116100d1578063cc309d8414610899578063d2ce0db2146108b9578063d8672e51146108cf578063dd62ed3e146108ef57600080fd5b8063b5c5714514610829578063c0a9da6614610849578063c5d32bb21461086957600080fd5b80638ea5220f11610164578063a457c2d71161013e578063a457c2d7146107a9578063a8aa1b31146107c9578063a9059cbb146107e9578063aacebbe31461080957600080fd5b80638ea5220f1461075457806395d89b411461077457806397973a2b1461078957600080fd5b8063728f8eea1461067d57806375f0a874146106c05780637c5b5723146106e057806381428be11461070057806385141a77146107205780638da5cb5b1461073657600080fd5b806331fe5ec61161026a57806362695eae1161022357806368db925a116101fd57806368db925a146105e45780636aa5b37f1461061c57806370a0823114610632578063715018a61461066857600080fd5b806362695eae14610588578063652e2f04146105b857806366a88d96146105ce57600080fd5b806331fe5ec6146104c7578063355496ca146104e7578063395093511461050757806340b28c2f1461052757806342b6fa11146105475780634ada218b1461056757600080fd5b806318160ddd116102d75780631d97b7cd116102b15780631d97b7cd1461046057806323b872dd14610475578063274a533c14610495578063313ce567146104ab57600080fd5b806318160ddd1461040b5780631816467f146104205780631c3909e61461044057600080fd5b806306fdde031461032a578063095ea7b3146103555780630e375a5c14610385578063105cafb6146103a75780631340538f146103c75780631675d802146103e757600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610a13565b60405161034c91906128c7565b60405180910390f35b34801561036157600080fd5b506103756103703660046126ec565b610aa5565b604051901515815260200161034c565b34801561039157600080fd5b506103a56103a0366004612718565b610abc565b005b3480156103b357600080fd5b506103a56103c2366004612895565b610b5b565b3480156103d357600080fd5b506103a56103e23660046127f6565b610c2f565b3480156103f357600080fd5b506103fd60085481565b60405190815260200161034c565b34801561041757600080fd5b506002546103fd565b34801561042c57600080fd5b506103a561043b366004612603565b610c77565b34801561044c57600080fd5b506103a561045b366004612603565b610cc3565b34801561046c57600080fd5b506103a5610d0f565b34801561048157600080fd5b5061037561049036600461267d565b610dae565b3480156104a157600080fd5b506103fd600c5481565b3480156104b757600080fd5b506040516012815260200161034c565b3480156104d357600080fd5b506103a56104e23660046126ec565b610e5f565b3480156104f357600080fd5b506103a56105023660046126be565b610f0f565b34801561051357600080fd5b506103756105223660046126ec565b610f64565b34801561053357600080fd5b506103a5610542366004612644565b610f9b565b34801561055357600080fd5b506103a561056236600461284e565b610ff3565b34801561057357600080fd5b5060075461037590600160b01b900460ff1681565b34801561059457600080fd5b506103756105a3366004612603565b601b6020526000908152604090205460ff1681565b3480156105c457600080fd5b506103fd600a5481565b3480156105da57600080fd5b506103fd600b5481565b3480156105f057600080fd5b50601154610604906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b34801561062857600080fd5b506103fd60095481565b34801561063e57600080fd5b506103fd61064d366004612603565b6001600160a01b031660009081526020819052604090205490565b34801561067457600080fd5b506103a5611039565b34801561068957600080fd5b506012546013546014546015546106a09392919084565b60408051948552602085019390935291830152606082015260800161034c565b3480156106cc57600080fd5b50600f54610604906001600160a01b031681565b3480156106ec57600080fd5b506103a56106fb36600461284e565b61106f565b34801561070c57600080fd5b506103a561071b366004612718565b6110d7565b34801561072c57600080fd5b5061060461dead81565b34801561074257600080fd5b506005546001600160a01b0316610604565b34801561076057600080fd5b50601054610604906001600160a01b031681565b34801561078057600080fd5b5061033f611168565b34801561079557600080fd5b506103a56107a4366004612895565b611177565b3480156107b557600080fd5b506103756107c43660046126ec565b6111e1565b3480156107d557600080fd5b50600754610604906001600160a01b031681565b3480156107f557600080fd5b506103756108043660046126ec565b61127c565b34801561081557600080fd5b506103a5610824366004612603565b611289565b34801561083557600080fd5b506103a56108443660046126be565b6112d5565b34801561085557600080fd5b506103a561086436600461284e565b61132a565b34801561087557600080fd5b50610375610884366004612603565b601a6020526000908152604090205460ff1681565b3480156108a557600080fd5b506103a56108b436600461284e565b6113d5565b3480156108c557600080fd5b506103fd601e5481565b3480156108db57600080fd5b506103a56108ea36600461284e565b61147e565b3480156108fb57600080fd5b506103fd61090a366004612644565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561094157600080fd5b506103a5610950366004612830565b611529565b34801561096157600080fd5b506103a561097036600461284e565b6115d0565b34801561098157600080fd5b50601d546103759060ff1681565b34801561099b57600080fd5b506103a56109aa366004612603565b611667565b3480156109bb57600080fd5b506016546017546018546019546106a09392919084565b3480156109de57600080fd5b50600654610604906001600160a01b031681565b3480156109fe57600080fd5b5060075461037590600160a81b900460ff1681565b606060038054610a2290612b20565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4e90612b20565b8015610a9b5780601f10610a7057610100808354040283529160200191610a9b565b820191906000526020600020905b815481529060010190602001808311610a7e57829003601f168201915b5050505050905090565b6000610ab23384846116ff565b5060015b92915050565b6005546001600160a01b03163314610aef5760405162461bcd60e51b8152600401610ae69061291c565b60405180910390fd5b60005b8251811015610b565781601a6000858481518110610b1257610b12612b8c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b4e81612b5b565b915050610af2565b505050565b6005546001600160a01b03163314610b855760405162461bcd60e51b8152600401610ae69061291c565b6040805160808101825285815260208101859052908101839052606001819052601684905560178390556018829055601981905560148183610bc786886129c2565b610bd191906129c2565b610bdb91906129c2565b1115610c295760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610ae6565b50505050565b6005546001600160a01b03163314610c595760405162461bcd60e51b8152600401610ae69061291c565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610ca15760405162461bcd60e51b8152600401610ae69061291c565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ced5760405162461bcd60e51b8152600401610ae69061291c565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d395760405162461bcd60e51b8152600401610ae69061291c565b600754600160b01b900460ff1615610d935760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e6700000000000000006044820152606401610ae6565b6007805461ffff60a81b191661010160a81b17905543600c55565b6000610dbb848484611823565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610e405760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ae6565b610e548533610e4f8685612b09565b6116ff565b506001949350505050565b6005546001600160a01b03163314610e895760405162461bcd60e51b8152600401610ae69061291c565b60105460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401602060405180830381600087803b158015610ed757600080fd5b505af1158015610eeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b569190612813565b6005546001600160a01b03163314610f395760405162461bcd60e51b8152600401610ae69061291c565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ab2918590610e4f9086906129c2565b6005546001600160a01b03163314610fc55760405162461bcd60e51b8152600401610ae69061291c565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b0316331461101d5760405162461bcd60e51b8152600401610ae69061291c565b6110296012600a612a3f565b6110339082612aea565b60085550565b6005546001600160a01b031633146110635760405162461bcd60e51b8152600401610ae69061291c565b61106d6000611ea8565b565b6005546001600160a01b031633146110995760405162461bcd60e51b8152600401610ae69061291c565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156110d3573d6000803e3d6000fd5b5050565b6005546001600160a01b031633146111015760405162461bcd60e51b8152600401610ae69061291c565b60005b8251811015610b565781601b600085848151811061112457611124612b8c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061116081612b5b565b915050611104565b606060048054610a2290612b20565b6005546001600160a01b031633146111a15760405162461bcd60e51b8152600401610ae69061291c565b604080516080810182528581526020810185905290810183905260600181905260128490556013839055601482815560158290558183610bc786886129c2565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156112635760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ae6565b6112723385610e4f8685612b09565b5060019392505050565b6000610ab2338484611823565b6005546001600160a01b031633146112b35760405162461bcd60e51b8152600401610ae69061291c565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112ff5760405162461bcd60e51b8152600401610ae69061291c565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146113545760405162461bcd60e51b8152600401610ae69061291c565b6113606012600a612a3f565b61136a9082612aea565b600955620f42408110156113d25760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b6064820152608401610ae6565b50565b6005546001600160a01b031633146113ff5760405162461bcd60e51b8152600401610ae69061291c565b61140b6012600a612a3f565b6114159082612aea565b600a55620f42408110156113d25760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b6064820152608401610ae6565b6005546001600160a01b031633146114a85760405162461bcd60e51b8152600401610ae69061291c565b6114b46012600a612a3f565b6114be9082612aea565b600b55620f42408110156113d25760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e312560a01b6064820152608401610ae6565b6005546001600160a01b031633146115535760405162461bcd60e51b8152600401610ae69061291c565b61155e816001612aea565b601e55601d805460ff191683151517905561012c8111156110d35760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d604482015265696e7574657360d01b6064820152608401610ae6565b6005546001600160a01b031633146115fa5760405162461bcd60e51b8152600401610ae69061291c565b600754600160b01b900460ff16156116625760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610ae6565b600d55565b6005546001600160a01b031633146116915760405162461bcd60e51b8152600401610ae69061291c565b6001600160a01b0381166116f65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ae6565b6113d281611ea8565b6001600160a01b0383166117615760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ae6565b6001600160a01b0382166117c25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ae6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116118855760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ae6565b6001600160a01b0383166000908152601a602052604090205460ff161580156118c757506001600160a01b0382166000908152601a602052604090205460ff16155b1561191b57600754600160b01b900460ff1661191b5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610ae6565b6007546001600160a01b03848116911614801561195157506001600160a01b0382166000908152601a602052604090205460ff16155b80156119675750600754600160a01b900460ff16155b15611a39576009548111156119be5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610ae6565b600b54816119e1846001600160a01b031660009081526020819052604090205490565b6119eb91906129c2565b1115611a395760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ae6565b6007546001600160a01b03848116911614801590611a7057506001600160a01b0382166000908152601a602052604090205460ff16155b8015611a9557506001600160a01b0383166000908152601a602052604090205460ff16155b8015611aab5750600754600160a01b900460ff16155b15611c2457600a54811115611b025760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610ae6565b6007546001600160a01b03838116911614611b9257600b5481611b3a846001600160a01b031660009081526020819052604090205490565b611b4491906129c2565b1115611b925760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ae6565b601d5460ff1615611c24576001600160a01b0383166000908152601c6020526040812054611bc09042612b09565b9050601e54811015611c075760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610ae6565b506001600160a01b0383166000908152601c602052604090204290555b6000806000611c546040518060800160405280600081526020016000815260200160008152602001600081525090565b6001600160a01b0387166000908152601a602052604081205460ff16158015611c9657506001600160a01b0387166000908152601a602052604090205460ff16155b8015611cb05750600d54600c54611cad91906129c2565b43105b600754909150600160a01b900460ff1680611ce357506001600160a01b0388166000908152601a602052604090205460ff165b80611d0657506001600160a01b0387166000908152601a602052604090205460ff165b15611d145760009250611e08565b6007546001600160a01b038881169116148015611d2f575080155b15611d9457601954601854601654601754611d4a91906129c2565b611d5491906129c2565b611d5e91906129c2565b60408051608081018252601654815260175460208201526018549181019190915260195460608201529095508594509150611e08565b80611df957601554601454601254601354611daf91906129c2565b611db991906129c2565b611dc391906129c2565b60408051608081018252601254815260135460208201526014549181019190915260155460608201529095508594509150611e08565b8015611e0857600e5494508493505b6064611e148588612aea565b611e1e91906129da565b600754909350600160a81b900460ff168015611e4857506007546001600160a01b03898116911614155b15611e5757611e578583611efa565b611e6b8888611e66868a612b09565b6120aa565b8215611e9e578415611e9e5760006064611e858789612aea565b611e8f91906129da565b9050611e9c8930836120aa565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff166110d3576007805460ff60a01b1916600160a01b17905530600090815260208190526040812054905060085481106120985760016008541115611f4957506008545b6000611f56846002612aea565b9050600081846020015184611f6b9190612aea565b611f7591906129da565b90506000611f838285612b09565b905047611f8f82612282565b6000611f9b8247612b09565b90506000876020015186611faf9190612b09565b611fb990836129da565b90506000886020015182611fcd9190612aea565b90508015611fdf57611fdf86826123eb565b8851600090611fef846002612aea565b611ff99190612aea565b9050801561201757600f54612017906001600160a01b0316826124cf565b60408a015160009061202a856002612aea565b6120349190612aea565b9050801561205257601154612052906001600160a01b0316826124cf565b60608b0151600090612065866002612aea565b61206f9190612aea565b9050801561208d5760105461208d906001600160a01b0316826124cf565b505050505050505050505b506007805460ff60a01b191690555050565b6001600160a01b03831661210e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ae6565b6001600160a01b0382166121705760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ae6565b6001600160a01b038316600090815260208190526040902054818110156121e85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ae6565b6121f28282612b09565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906122289084906129c2565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161227491815260200190565b60405180910390a350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122b7576122b7612b8c565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561230b57600080fd5b505afa15801561231f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123439190612627565b8160018151811061235657612356612b8c565b6001600160a01b03928316602091820292909201015260065461237c91309116846116ff565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906123b5908590600090869030904290600401612951565b600060405180830381600087803b1580156123cf57600080fd5b505af11580156123e3573d6000803e3d6000fd5b505050505050565b6006546124039030906001600160a01b0316846116ff565b6006546001600160a01b031663f305d71982308560008061242c6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561248f57600080fd5b505af11580156124a3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124c89190612867565b5050505050565b8047101561251f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610ae6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461256c576040519150601f19603f3d011682016040523d82523d6000602084013e612571565b606091505b5050905080610b565760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610ae6565b80356125f381612bb8565b919050565b80356125f381612bcd565b60006020828403121561261557600080fd5b813561262081612bb8565b9392505050565b60006020828403121561263957600080fd5b815161262081612bb8565b6000806040838503121561265757600080fd5b823561266281612bb8565b9150602083013561267281612bb8565b809150509250929050565b60008060006060848603121561269257600080fd5b833561269d81612bb8565b925060208401356126ad81612bb8565b929592945050506040919091013590565b600080604083850312156126d157600080fd5b82356126dc81612bb8565b9150602083013561267281612bcd565b600080604083850312156126ff57600080fd5b823561270a81612bb8565b946020939093013593505050565b6000806040838503121561272b57600080fd5b823567ffffffffffffffff8082111561274357600080fd5b818501915085601f83011261275757600080fd5b813560208282111561276b5761276b612ba2565b8160051b604051601f19603f8301168101818110868211171561279057612790612ba2565b604052838152828101945085830182870184018b10156127af57600080fd5b600096505b848710156127d9576127c5816125e8565b8652600196909601959483019483016127b4565b5096506127e990508782016125f8565b9450505050509250929050565b60006020828403121561280857600080fd5b813561262081612bcd565b60006020828403121561282557600080fd5b815161262081612bcd565b6000806040838503121561284357600080fd5b823561270a81612bcd565b60006020828403121561286057600080fd5b5035919050565b60008060006060848603121561287c57600080fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156128ab57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b818110156128f4578581018301518582016040015282016128d8565b81811115612906576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129a15784516001600160a01b03168352938301939183019160010161297c565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156129d5576129d5612b76565b500190565b6000826129f757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612a37578160001904821115612a1d57612a1d612b76565b80851615612a2a57918102915b93841c9390800290612a01565b509250929050565b600061262060ff841683600082612a5857506001610ab6565b81612a6557506000610ab6565b8160018114612a7b5760028114612a8557612aa1565b6001915050610ab6565b60ff841115612a9657612a96612b76565b50506001821b610ab6565b5060208310610133831016604e8410600b8410161715612ac4575081810a610ab6565b612ace83836129fc565b8060001904821115612ae257612ae2612b76565b029392505050565b6000816000190483118215151615612b0457612b04612b76565b500290565b600082821015612b1b57612b1b612b76565b500390565b600181811c90821680612b3457607f821691505b60208210811415612b5557634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612b6f57612b6f612b76565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146113d257600080fd5b80151581146113d257600080fdfea2646970667358221220edea9a07fea9978aa62f1ca0e7ae5867b29bd90b94c9f73bff002a571178c6e564736f6c63430008070033000000000000000000000000ec0a7a0c2439e8cb67b992b12ecd020ea943c7be

Deployed Bytecode

0x60806040526004361061031e5760003560e01c8063728f8eea116101ab578063b5c57145116100f7578063e517f2b911610095578063f2fde38b1161006f578063f2fde38b1461098f578063f66895a3146109af578063f887ea40146109d2578063fbe6324e146109f257600080fd5b8063e517f2b914610935578063edaa116814610955578063ee36e3591461097557600080fd5b8063cc309d84116100d1578063cc309d8414610899578063d2ce0db2146108b9578063d8672e51146108cf578063dd62ed3e146108ef57600080fd5b8063b5c5714514610829578063c0a9da6614610849578063c5d32bb21461086957600080fd5b80638ea5220f11610164578063a457c2d71161013e578063a457c2d7146107a9578063a8aa1b31146107c9578063a9059cbb146107e9578063aacebbe31461080957600080fd5b80638ea5220f1461075457806395d89b411461077457806397973a2b1461078957600080fd5b8063728f8eea1461067d57806375f0a874146106c05780637c5b5723146106e057806381428be11461070057806385141a77146107205780638da5cb5b1461073657600080fd5b806331fe5ec61161026a57806362695eae1161022357806368db925a116101fd57806368db925a146105e45780636aa5b37f1461061c57806370a0823114610632578063715018a61461066857600080fd5b806362695eae14610588578063652e2f04146105b857806366a88d96146105ce57600080fd5b806331fe5ec6146104c7578063355496ca146104e7578063395093511461050757806340b28c2f1461052757806342b6fa11146105475780634ada218b1461056757600080fd5b806318160ddd116102d75780631d97b7cd116102b15780631d97b7cd1461046057806323b872dd14610475578063274a533c14610495578063313ce567146104ab57600080fd5b806318160ddd1461040b5780631816467f146104205780631c3909e61461044057600080fd5b806306fdde031461032a578063095ea7b3146103555780630e375a5c14610385578063105cafb6146103a75780631340538f146103c75780631675d802146103e757600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610a13565b60405161034c91906128c7565b60405180910390f35b34801561036157600080fd5b506103756103703660046126ec565b610aa5565b604051901515815260200161034c565b34801561039157600080fd5b506103a56103a0366004612718565b610abc565b005b3480156103b357600080fd5b506103a56103c2366004612895565b610b5b565b3480156103d357600080fd5b506103a56103e23660046127f6565b610c2f565b3480156103f357600080fd5b506103fd60085481565b60405190815260200161034c565b34801561041757600080fd5b506002546103fd565b34801561042c57600080fd5b506103a561043b366004612603565b610c77565b34801561044c57600080fd5b506103a561045b366004612603565b610cc3565b34801561046c57600080fd5b506103a5610d0f565b34801561048157600080fd5b5061037561049036600461267d565b610dae565b3480156104a157600080fd5b506103fd600c5481565b3480156104b757600080fd5b506040516012815260200161034c565b3480156104d357600080fd5b506103a56104e23660046126ec565b610e5f565b3480156104f357600080fd5b506103a56105023660046126be565b610f0f565b34801561051357600080fd5b506103756105223660046126ec565b610f64565b34801561053357600080fd5b506103a5610542366004612644565b610f9b565b34801561055357600080fd5b506103a561056236600461284e565b610ff3565b34801561057357600080fd5b5060075461037590600160b01b900460ff1681565b34801561059457600080fd5b506103756105a3366004612603565b601b6020526000908152604090205460ff1681565b3480156105c457600080fd5b506103fd600a5481565b3480156105da57600080fd5b506103fd600b5481565b3480156105f057600080fd5b50601154610604906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b34801561062857600080fd5b506103fd60095481565b34801561063e57600080fd5b506103fd61064d366004612603565b6001600160a01b031660009081526020819052604090205490565b34801561067457600080fd5b506103a5611039565b34801561068957600080fd5b506012546013546014546015546106a09392919084565b60408051948552602085019390935291830152606082015260800161034c565b3480156106cc57600080fd5b50600f54610604906001600160a01b031681565b3480156106ec57600080fd5b506103a56106fb36600461284e565b61106f565b34801561070c57600080fd5b506103a561071b366004612718565b6110d7565b34801561072c57600080fd5b5061060461dead81565b34801561074257600080fd5b506005546001600160a01b0316610604565b34801561076057600080fd5b50601054610604906001600160a01b031681565b34801561078057600080fd5b5061033f611168565b34801561079557600080fd5b506103a56107a4366004612895565b611177565b3480156107b557600080fd5b506103756107c43660046126ec565b6111e1565b3480156107d557600080fd5b50600754610604906001600160a01b031681565b3480156107f557600080fd5b506103756108043660046126ec565b61127c565b34801561081557600080fd5b506103a5610824366004612603565b611289565b34801561083557600080fd5b506103a56108443660046126be565b6112d5565b34801561085557600080fd5b506103a561086436600461284e565b61132a565b34801561087557600080fd5b50610375610884366004612603565b601a6020526000908152604090205460ff1681565b3480156108a557600080fd5b506103a56108b436600461284e565b6113d5565b3480156108c557600080fd5b506103fd601e5481565b3480156108db57600080fd5b506103a56108ea36600461284e565b61147e565b3480156108fb57600080fd5b506103fd61090a366004612644565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561094157600080fd5b506103a5610950366004612830565b611529565b34801561096157600080fd5b506103a561097036600461284e565b6115d0565b34801561098157600080fd5b50601d546103759060ff1681565b34801561099b57600080fd5b506103a56109aa366004612603565b611667565b3480156109bb57600080fd5b506016546017546018546019546106a09392919084565b3480156109de57600080fd5b50600654610604906001600160a01b031681565b3480156109fe57600080fd5b5060075461037590600160a81b900460ff1681565b606060038054610a2290612b20565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4e90612b20565b8015610a9b5780601f10610a7057610100808354040283529160200191610a9b565b820191906000526020600020905b815481529060010190602001808311610a7e57829003601f168201915b5050505050905090565b6000610ab23384846116ff565b5060015b92915050565b6005546001600160a01b03163314610aef5760405162461bcd60e51b8152600401610ae69061291c565b60405180910390fd5b60005b8251811015610b565781601a6000858481518110610b1257610b12612b8c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b4e81612b5b565b915050610af2565b505050565b6005546001600160a01b03163314610b855760405162461bcd60e51b8152600401610ae69061291c565b6040805160808101825285815260208101859052908101839052606001819052601684905560178390556018829055601981905560148183610bc786886129c2565b610bd191906129c2565b610bdb91906129c2565b1115610c295760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610ae6565b50505050565b6005546001600160a01b03163314610c595760405162461bcd60e51b8152600401610ae69061291c565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610ca15760405162461bcd60e51b8152600401610ae69061291c565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ced5760405162461bcd60e51b8152600401610ae69061291c565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d395760405162461bcd60e51b8152600401610ae69061291c565b600754600160b01b900460ff1615610d935760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e6700000000000000006044820152606401610ae6565b6007805461ffff60a81b191661010160a81b17905543600c55565b6000610dbb848484611823565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610e405760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ae6565b610e548533610e4f8685612b09565b6116ff565b506001949350505050565b6005546001600160a01b03163314610e895760405162461bcd60e51b8152600401610ae69061291c565b60105460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb90604401602060405180830381600087803b158015610ed757600080fd5b505af1158015610eeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b569190612813565b6005546001600160a01b03163314610f395760405162461bcd60e51b8152600401610ae69061291c565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ab2918590610e4f9086906129c2565b6005546001600160a01b03163314610fc55760405162461bcd60e51b8152600401610ae69061291c565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b0316331461101d5760405162461bcd60e51b8152600401610ae69061291c565b6110296012600a612a3f565b6110339082612aea565b60085550565b6005546001600160a01b031633146110635760405162461bcd60e51b8152600401610ae69061291c565b61106d6000611ea8565b565b6005546001600160a01b031633146110995760405162461bcd60e51b8152600401610ae69061291c565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156110d3573d6000803e3d6000fd5b5050565b6005546001600160a01b031633146111015760405162461bcd60e51b8152600401610ae69061291c565b60005b8251811015610b565781601b600085848151811061112457611124612b8c565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061116081612b5b565b915050611104565b606060048054610a2290612b20565b6005546001600160a01b031633146111a15760405162461bcd60e51b8152600401610ae69061291c565b604080516080810182528581526020810185905290810183905260600181905260128490556013839055601482815560158290558183610bc786886129c2565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156112635760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ae6565b6112723385610e4f8685612b09565b5060019392505050565b6000610ab2338484611823565b6005546001600160a01b031633146112b35760405162461bcd60e51b8152600401610ae69061291c565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112ff5760405162461bcd60e51b8152600401610ae69061291c565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146113545760405162461bcd60e51b8152600401610ae69061291c565b6113606012600a612a3f565b61136a9082612aea565b600955620f42408110156113d25760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b6064820152608401610ae6565b50565b6005546001600160a01b031633146113ff5760405162461bcd60e51b8152600401610ae69061291c565b61140b6012600a612a3f565b6114159082612aea565b600a55620f42408110156113d25760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b6064820152608401610ae6565b6005546001600160a01b031633146114a85760405162461bcd60e51b8152600401610ae69061291c565b6114b46012600a612a3f565b6114be9082612aea565b600b55620f42408110156113d25760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e312560a01b6064820152608401610ae6565b6005546001600160a01b031633146115535760405162461bcd60e51b8152600401610ae69061291c565b61155e816001612aea565b601e55601d805460ff191683151517905561012c8111156110d35760405162461bcd60e51b815260206004820152602660248201527f636f6f6c646f776e2074696d65722063616e6e6f74206578636565642035206d604482015265696e7574657360d01b6064820152608401610ae6565b6005546001600160a01b031633146115fa5760405162461bcd60e51b8152600401610ae69061291c565b600754600160b01b900460ff16156116625760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610ae6565b600d55565b6005546001600160a01b031633146116915760405162461bcd60e51b8152600401610ae69061291c565b6001600160a01b0381166116f65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ae6565b6113d281611ea8565b6001600160a01b0383166117615760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ae6565b6001600160a01b0382166117c25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ae6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116118855760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ae6565b6001600160a01b0383166000908152601a602052604090205460ff161580156118c757506001600160a01b0382166000908152601a602052604090205460ff16155b1561191b57600754600160b01b900460ff1661191b5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610ae6565b6007546001600160a01b03848116911614801561195157506001600160a01b0382166000908152601a602052604090205460ff16155b80156119675750600754600160a01b900460ff16155b15611a39576009548111156119be5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610ae6565b600b54816119e1846001600160a01b031660009081526020819052604090205490565b6119eb91906129c2565b1115611a395760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ae6565b6007546001600160a01b03848116911614801590611a7057506001600160a01b0382166000908152601a602052604090205460ff16155b8015611a9557506001600160a01b0383166000908152601a602052604090205460ff16155b8015611aab5750600754600160a01b900460ff16155b15611c2457600a54811115611b025760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610ae6565b6007546001600160a01b03838116911614611b9257600b5481611b3a846001600160a01b031660009081526020819052604090205490565b611b4491906129c2565b1115611b925760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610ae6565b601d5460ff1615611c24576001600160a01b0383166000908152601c6020526040812054611bc09042612b09565b9050601e54811015611c075760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610ae6565b506001600160a01b0383166000908152601c602052604090204290555b6000806000611c546040518060800160405280600081526020016000815260200160008152602001600081525090565b6001600160a01b0387166000908152601a602052604081205460ff16158015611c9657506001600160a01b0387166000908152601a602052604090205460ff16155b8015611cb05750600d54600c54611cad91906129c2565b43105b600754909150600160a01b900460ff1680611ce357506001600160a01b0388166000908152601a602052604090205460ff165b80611d0657506001600160a01b0387166000908152601a602052604090205460ff165b15611d145760009250611e08565b6007546001600160a01b038881169116148015611d2f575080155b15611d9457601954601854601654601754611d4a91906129c2565b611d5491906129c2565b611d5e91906129c2565b60408051608081018252601654815260175460208201526018549181019190915260195460608201529095508594509150611e08565b80611df957601554601454601254601354611daf91906129c2565b611db991906129c2565b611dc391906129c2565b60408051608081018252601254815260135460208201526014549181019190915260155460608201529095508594509150611e08565b8015611e0857600e5494508493505b6064611e148588612aea565b611e1e91906129da565b600754909350600160a81b900460ff168015611e4857506007546001600160a01b03898116911614155b15611e5757611e578583611efa565b611e6b8888611e66868a612b09565b6120aa565b8215611e9e578415611e9e5760006064611e858789612aea565b611e8f91906129da565b9050611e9c8930836120aa565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff166110d3576007805460ff60a01b1916600160a01b17905530600090815260208190526040812054905060085481106120985760016008541115611f4957506008545b6000611f56846002612aea565b9050600081846020015184611f6b9190612aea565b611f7591906129da565b90506000611f838285612b09565b905047611f8f82612282565b6000611f9b8247612b09565b90506000876020015186611faf9190612b09565b611fb990836129da565b90506000886020015182611fcd9190612aea565b90508015611fdf57611fdf86826123eb565b8851600090611fef846002612aea565b611ff99190612aea565b9050801561201757600f54612017906001600160a01b0316826124cf565b60408a015160009061202a856002612aea565b6120349190612aea565b9050801561205257601154612052906001600160a01b0316826124cf565b60608b0151600090612065866002612aea565b61206f9190612aea565b9050801561208d5760105461208d906001600160a01b0316826124cf565b505050505050505050505b506007805460ff60a01b191690555050565b6001600160a01b03831661210e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ae6565b6001600160a01b0382166121705760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ae6565b6001600160a01b038316600090815260208190526040902054818110156121e85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ae6565b6121f28282612b09565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906122289084906129c2565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161227491815260200190565b60405180910390a350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106122b7576122b7612b8c565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561230b57600080fd5b505afa15801561231f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123439190612627565b8160018151811061235657612356612b8c565b6001600160a01b03928316602091820292909201015260065461237c91309116846116ff565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906123b5908590600090869030904290600401612951565b600060405180830381600087803b1580156123cf57600080fd5b505af11580156123e3573d6000803e3d6000fd5b505050505050565b6006546124039030906001600160a01b0316846116ff565b6006546001600160a01b031663f305d71982308560008061242c6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561248f57600080fd5b505af11580156124a3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124c89190612867565b5050505050565b8047101561251f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610ae6565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461256c576040519150601f19603f3d011682016040523d82523d6000602084013e612571565b606091505b5050905080610b565760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610ae6565b80356125f381612bb8565b919050565b80356125f381612bcd565b60006020828403121561261557600080fd5b813561262081612bb8565b9392505050565b60006020828403121561263957600080fd5b815161262081612bb8565b6000806040838503121561265757600080fd5b823561266281612bb8565b9150602083013561267281612bb8565b809150509250929050565b60008060006060848603121561269257600080fd5b833561269d81612bb8565b925060208401356126ad81612bb8565b929592945050506040919091013590565b600080604083850312156126d157600080fd5b82356126dc81612bb8565b9150602083013561267281612bcd565b600080604083850312156126ff57600080fd5b823561270a81612bb8565b946020939093013593505050565b6000806040838503121561272b57600080fd5b823567ffffffffffffffff8082111561274357600080fd5b818501915085601f83011261275757600080fd5b813560208282111561276b5761276b612ba2565b8160051b604051601f19603f8301168101818110868211171561279057612790612ba2565b604052838152828101945085830182870184018b10156127af57600080fd5b600096505b848710156127d9576127c5816125e8565b8652600196909601959483019483016127b4565b5096506127e990508782016125f8565b9450505050509250929050565b60006020828403121561280857600080fd5b813561262081612bcd565b60006020828403121561282557600080fd5b815161262081612bcd565b6000806040838503121561284357600080fd5b823561270a81612bcd565b60006020828403121561286057600080fd5b5035919050565b60008060006060848603121561287c57600080fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156128ab57600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b818110156128f4578581018301518582016040015282016128d8565b81811115612906576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129a15784516001600160a01b03168352938301939183019160010161297c565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156129d5576129d5612b76565b500190565b6000826129f757634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612a37578160001904821115612a1d57612a1d612b76565b80851615612a2a57918102915b93841c9390800290612a01565b509250929050565b600061262060ff841683600082612a5857506001610ab6565b81612a6557506000610ab6565b8160018114612a7b5760028114612a8557612aa1565b6001915050610ab6565b60ff841115612a9657612a96612b76565b50506001821b610ab6565b5060208310610133831016604e8410600b8410161715612ac4575081810a610ab6565b612ace83836129fc565b8060001904821115612ae257612ae2612b76565b029392505050565b6000816000190483118215151615612b0457612b04612b76565b500290565b600082821015612b1b57612b1b612b76565b500390565b600181811c90821680612b3457607f821691505b60208210811415612b5557634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612b6f57612b6f612b76565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146113d257600080fd5b80151581146113d257600080fdfea2646970667358221220edea9a07fea9978aa62f1ca0e7ae5867b29bd90b94c9f73bff002a571178c6e564736f6c63430008070033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000ec0a7a0c2439e8cb67b992b12ecd020ea943c7be

-----Decoded View---------------
Arg [0] : routerAdd (address): 0xeC0A7a0C2439E8Cb67b992b12ecd020Ea943c7Be

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ec0a7a0c2439e8cb67b992b12ecd020ea943c7be


Deployed Bytecode Sourcemap

13645:13653:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2421:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16180:161;;;;;;;;;;-1:-1:-1;16180:161:0;;;;;:::i;:::-;;:::i;:::-;;;6732:14:1;;6725:22;6707:41;;6695:2;6680:18;16180:161:0;6567:187:1;26118:202:0;;;;;;;;;;-1:-1:-1;26118:202:0;;;;;:::i;:::-;;:::i;:::-;;24142:323;;;;;;;;;;-1:-1:-1;24142:323:0;;;;;:::i;:::-;;:::i;23471:152::-;;;;;;;;;;-1:-1:-1;23471:152:0;;;;;:::i;:::-;;:::i;13919:59::-;;;;;;;;;;;;;;;;;;;17062:25:1;;;17050:2;17035:18;13919:59:0;16916:177:1;3541:108:0;;;;;;;;;;-1:-1:-1;3629:12:0;;3541:108;;25285:103;;;;;;;;;;-1:-1:-1;25285:103:0;;;;;:::i;:::-;;:::i;25174:::-;;;;;;;;;;-1:-1:-1;25174:103:0;;;;;:::i;:::-;;:::i;24636:222::-;;;;;;;;;;;;;:::i;16349:448::-;;;;;;;;;;-1:-1:-1;16349:448:0;;;;;:::i;:::-;;:::i;14156:28::-;;;;;;;;;;;;;;;;3383:93;;;;;;;;;;-1:-1:-1;3383:93:0;;3466:2;18621:36:1;;18609:2;18594:18;3383:93:0;18479:184:1;27099:141:0;;;;;;;;;;-1:-1:-1;27099:141:0;;;;;:::i;:::-;;:::i;25990:120::-;;;;;;;;;;-1:-1:-1;25990:120:0;;;;;:::i;:::-;;:::i;16805:248::-;;;;;;;;;;-1:-1:-1;16805:248:0;;;;;:::i;:::-;;:::i;24473:155::-;;;;;;;;;;-1:-1:-1;24473:155:0;;;;;:::i;:::-;;:::i;23631:177::-;;;;;;;;;;-1:-1:-1;23631:177:0;;;;;:::i;:::-;;:::i;13876:34::-;;;;;;;;;;-1:-1:-1;13876:34:0;;;;-1:-1:-1;;;13876:34:0;;;;;;14857:47;;;;;;;;;;-1:-1:-1;14857:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14040:49;;;;;;;;;;;;;;;;14096:51;;;;;;;;;;;;;;;;14423:69;;;;;;;;;;-1:-1:-1;14423:69:0;;;;-1:-1:-1;;;;;14423:69:0;;;;;;-1:-1:-1;;;;;5632:32:1;;;5614:51;;5602:2;5587:18;14423:69:0;5468:203:1;13985:48:0;;;;;;;;;;;;;;;;3712:127;;;;;;;;;;-1:-1:-1;3712:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3813:18:0;3786:7;3813:18;;;;;;;;;;;;3712:127;12308:94;;;;;;;;;;;;;:::i;14713:38::-;;;;;;;;;;-1:-1:-1;14713:38:0;;;;;;;;;;;;;;;;;;;18314:25:1;;;18370:2;18355:18;;18348:34;;;;18398:18;;;18391:34;18456:2;18441:18;;18434:34;18301:3;18286:19;14713:38:0;18083:391:1;14265:75:0;;;;;;;;;;-1:-1:-1;14265:75:0;;;;-1:-1:-1;;;;;14265:75:0;;;26977:114;;;;;;;;;;-1:-1:-1;26977:114:0;;;;;:::i;:::-;;:::i;25768:214::-;;;;;;;;;;-1:-1:-1;25768:214:0;;;;;:::i;:::-;;:::i;14496:79::-;;;;;;;;;;;;14533:42;14496:79;;12085:87;;;;;;;;;;-1:-1:-1;12158:6:0;;-1:-1:-1;;;;;12158:6:0;12085:87;;14347:69;;;;;;;;;;-1:-1:-1;14347:69:0;;;;-1:-1:-1;;;;;14347:69:0;;;2640:104;;;;;;;;;;;;;:::i;23816:318::-;;;;;;;;;;-1:-1:-1;23816:318:0;;;;;:::i;:::-;;:::i;17061:410::-;;;;;;;;;;-1:-1:-1;17061:410:0;;;;;:::i;:::-;;:::i;13760:19::-;;;;;;;;;;-1:-1:-1;13760:19:0;;;;-1:-1:-1;;;;;13760:19:0;;;17479:165;;;;;;;;;;-1:-1:-1;17479:165:0;;;;;:::i;:::-;;:::i;25051:115::-;;;;;;;;;;-1:-1:-1;25051:115:0;;;;;:::i;:::-;;:::i;25630:130::-;;;;;;;;;;-1:-1:-1;25630:130:0;;;;;:::i;:::-;;:::i;26328:204::-;;;;;;;;;;-1:-1:-1;26328:204:0;;;;;:::i;:::-;;:::i;14809:41::-;;;;;;;;;;-1:-1:-1;14809:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26540:210;;;;;;;;;;-1:-1:-1;26540:210:0;;;;;:::i;:::-;;:::i;15023:40::-;;;;;;;;;;;;;;;;26758:211;;;;;;;;;;-1:-1:-1;26758:211:0;;;;;:::i;:::-;;:::i;4331:201::-;;;;;;;;;;-1:-1:-1;4331:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4497:18:0;;;4465:7;4497:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4331:201;25396:226;;;;;;;;;;-1:-1:-1;25396:226:0;;;;;:::i;:::-;;:::i;24866:177::-;;;;;;;;;;-1:-1:-1;24866:177:0;;;;;:::i;:::-;;:::i;14982:34::-;;;;;;;;;;-1:-1:-1;14982:34:0;;;;;;;;12410:192;;;;;;;;;;-1:-1:-1;12410:192:0;;;;;:::i;:::-;;:::i;14758:42::-;;;;;;;;;;-1:-1:-1;14758:42:0;;;;;;;;;;;;;;;13732:21;;;;;;;;;;-1:-1:-1;13732:21:0;;;;-1:-1:-1;;;;;13732:21:0;;;13831:38;;;;;;;;;;-1:-1:-1;13831:38:0;;;;-1:-1:-1;;;13831:38:0;;;;;;2421:100;2475:13;2508:5;2501:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2421:100;:::o;16180:161::-;16255:4;16272:39;223:10;16295:7;16304:6;16272:8;:39::i;:::-;-1:-1:-1;16329:4:0;16180:161;;;;;:::o;26118:202::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;;;;;;;;;26215:9:::1;26210:103;26234:8;:15;26230:1;:19;26210:103;;;26296:5;26271:9;:22;26281:8;26290:1;26281:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;26271:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;26271:22:0;:30;;-1:-1:-1;;26271:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26251:3;::::1;::::0;::::1;:::i;:::-;;;;26210:103;;;;26118:202:::0;;:::o;24142:323::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;24317:42:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;24305:9:::1;:54:::0;;;;;;;;;;;;;;;24421:2:::1;24354:4:::0;24348;24379:23:::1;24335:10:::0;24323;24379:23:::1;:::i;:::-;:30;;;;:::i;:::-;:37;;;;:::i;:::-;24378:45;;24370:87;;;::::0;-1:-1:-1;;;24370:87:0;;12145:2:1;24370:87:0::1;::::0;::::1;12127:21:1::0;12184:2;12164:18;;;12157:30;12223:31;12203:18;;;12196:59;12272:18;;24370:87:0::1;11943:353:1::0;24370:87:0::1;24142:323:::0;;;;:::o;23471:152::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;23589:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;23589:26:0::1;-1:-1:-1::0;;;;23589:26:0;;::::1;::::0;;;::::1;::::0;;23471:152::o;25285:103::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;25359:9:::1;:21:::0;;-1:-1:-1;;;;;;25359:21:0::1;-1:-1:-1::0;;;;;25359:21:0;;;::::1;::::0;;;::::1;::::0;;25285:103::o;25174:::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;25248:9:::1;:21:::0;;-1:-1:-1;;;;;;25248:21:0::1;-1:-1:-1::0;;;;;25248:21:0;;;::::1;::::0;;;::::1;::::0;;25174:103::o;24636:222::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;24700:14:::1;::::0;-1:-1:-1;;;24700:14:0;::::1;;;24699:15;24691:52;;;::::0;-1:-1:-1;;;24691:52:0;;12503:2:1;24691:52:0::1;::::0;::::1;12485:21:1::0;12542:2;12522:18;;;12515:30;12581:26;12561:18;;;12554:54;12625:18;;24691:52:0::1;12301:348:1::0;24691:52:0::1;24754:14;:21:::0;;-1:-1:-1;;;;24786:25:0;-1:-1:-1;;;24786:25:0;;;24838:12:::1;24822:13;:28:::0;24636:222::o;16349:448::-;16481:4;16498:36;16508:6;16516:9;16527:6;16498:9;:36::i;:::-;-1:-1:-1;;;;;16574:19:0;;16547:24;16574:19;;;:11;:19;;;;;;;;223:10;16574:33;;;;;;;;16626:26;;;;16618:79;;;;-1:-1:-1;;;16618:79:0;;13262:2:1;16618:79:0;;;13244:21:1;13301:2;13281:18;;;13274:30;13340:34;13320:18;;;13313:62;-1:-1:-1;;;13391:18:1;;;13384:38;13439:19;;16618:79:0;13060:404:1;16618:79:0;16708:57;16717:6;223:10;16739:25;16758:6;16739:16;:25;:::i;:::-;16708:8;:57::i;:::-;-1:-1:-1;16785:4:0;;16349:448;-1:-1:-1;;;;16349:448:0:o;27099:141::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;27214:9:::1;::::0;27188:44:::1;::::0;-1:-1:-1;;;27188:44:0;;-1:-1:-1;;;;;27214:9:0;;::::1;27188:44;::::0;::::1;5850:51:1::0;5917:18;;;5910:34;;;27188:25:0;;::::1;::::0;::::1;::::0;5823:18:1;;27188:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;25990:120::-:0;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26075:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;26075:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25990:120::o;16805:248::-;223:10;16921:4;16975:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16975:34:0;;;;;;;;;;16921:4;;16943:80;;16966:7;;16975:47;;17012:10;;16975:47;:::i;24473:155::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;24568:6:::1;:27:::0;;-1:-1:-1;;;;;24568:27:0;;::::1;-1:-1:-1::0;;;;;;24568:27:0;;::::1;;::::0;;;24606:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;24473:155::o;23631:177::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;23786:14:::1;3466:2:::0;23786::::1;:14;:::i;:::-;23773:27;::::0;:10;:27:::1;:::i;:::-;23747:23;:53:::0;-1:-1:-1;23631:177:0:o;12308:94::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;12373:21:::1;12391:1;12373:9;:21::i;:::-;12308:94::o:0;26977:114::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;27053:9:::1;::::0;27045:38:::1;::::0;-1:-1:-1;;;;;27053:9:0;;::::1;::::0;27045:38;::::1;;;::::0;27073:9;;27053::::1;27045:38:::0;27053:9;27045:38;27073:9;27053;27045:38;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;26977:114:::0;:::o;25768:214::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;25871:9:::1;25866:109;25890:8;:15;25886:1;:19;25866:109;;;25958:5;25927:15;:28;25943:8;25952:1;25943:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;25927:28:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;25927:28:0;:36;;-1:-1:-1;;25927:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25907:3;::::1;::::0;::::1;:::i;:::-;;;;25866:109;;2640:104:::0;2696:13;2729:7;2722:14;;;;;:::i;23816:318::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;23986:42:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;23978:5:::1;:50:::0;;;;;;;;;;;;;;;24023:4;24017;24048:23:::1;24004:10:::0;23992;24048:23:::1;:::i;17061:410::-:0;223:10;17182:4;17231:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;17231:34:0;;;;;;;;;;17284:35;;;;17276:85;;;;-1:-1:-1;;;17276:85:0;;16712:2:1;17276:85:0;;;16694:21:1;16751:2;16731:18;;;16724:30;16790:34;16770:18;;;16763:62;-1:-1:-1;;;16841:18:1;;;16834:35;16886:19;;17276:85:0;16510:401:1;17276:85:0;17372:67;223:10;17395:7;17404:34;17423:15;17404:16;:34;:::i;17372:67::-;-1:-1:-1;17459:4:0;;17061:410;-1:-1:-1;;;17061:410:0:o;17479:165::-;17557:4;17574:40;17584:10;17596:9;17607:6;17574:9;:40::i;25051:115::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;25131:15:::1;:27:::0;;-1:-1:-1;;;;;;25131:27:0::1;-1:-1:-1::0;;;;;25131:27:0;;;::::1;::::0;;;::::1;::::0;;25051:115::o;25630:130::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25720:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;25720:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25630:130::o;26328:204::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;26426:14:::1;3466:2:::0;26426::::1;:14;:::i;:::-;26417:23;::::0;:6;:23:::1;:::i;:::-;26403:11;:37:::0;26469:9:::1;26459:19:::0;::::1;;26451:73;;;::::0;-1:-1:-1;;;26451:73:0;;11735:2:1;26451:73:0::1;::::0;::::1;11717:21:1::0;11774:2;11754:18;;;11747:30;11813:34;11793:18;;;11786:62;-1:-1:-1;;;11864:18:1;;;11857:39;11913:19;;26451:73:0::1;11533:405:1::0;26451:73:0::1;26328:204:::0;:::o;26540:210::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;26642:14:::1;3466:2:::0;26642::::1;:14;:::i;:::-;26632:24;::::0;:7;:24:::1;:::i;:::-;26617:12;:39:::0;26686:9:::1;26675:20:::0;::::1;;26667:75;;;::::0;-1:-1:-1;;;26667:75:0;;9358:2:1;26667:75:0::1;::::0;::::1;9340:21:1::0;9397:2;9377:18;;;9370:30;9436:34;9416:18;;;9409:62;-1:-1:-1;;;9487:18:1;;;9480:40;9537:19;;26667:75:0::1;9156:406:1::0;26758:211:0;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;26860:14:::1;3466:2:::0;26860::::1;:14;:::i;:::-;26851:23;::::0;:6;:23:::1;:::i;:::-;26834:14;:40:::0;26903:9:::1;26893:19:::0;::::1;;26885:76;;;::::0;-1:-1:-1;;;26885:76:0;;10537:2:1;26885:76:0::1;::::0;::::1;10519:21:1::0;10576:2;10556:18;;;10549:30;10615:34;10595:18;;;10588:62;-1:-1:-1;;;10666:18:1;;;10659:42;10718:19;;26885:76:0::1;10335:408:1::0;25396:226:0;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;25491:16:::1;:4:::0;25498:9:::1;25491:16;:::i;:::-;25476:12;:31:::0;25518:15:::1;:23:::0;;-1:-1:-1;;25518:23:0::1;::::0;::::1;;;::::0;;25568:3:::1;25560:11:::0;::::1;;25552:62;;;::::0;-1:-1:-1;;;25552:62:0;;15135:2:1;25552:62:0::1;::::0;::::1;15117:21:1::0;15174:2;15154:18;;;15147:30;15213:34;15193:18;;;15186:62;-1:-1:-1;;;15264:18:1;;;15257:36;15310:19;;25552:62:0::1;14933:402:1::0;24866:177:0;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;24948:14:::1;::::0;-1:-1:-1;;;24948:14:0;::::1;;;24947:15;24939:65;;;::::0;-1:-1:-1;;;24939:65:0;;12856:2:1;24939:65:0::1;::::0;::::1;12838:21:1::0;12895:2;12875:18;;;12868:30;12934:34;12914:18;;;12907:62;-1:-1:-1;;;12985:18:1;;;12978:35;13030:19;;24939:65:0::1;12654:401:1::0;24939:65:0::1;25015:8;:20:::0;24866:177::o;12410:192::-;12158:6;;-1:-1:-1;;;;;12158:6:0;223:10;12220:23;12212:68;;;;-1:-1:-1;;;12212:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12499:22:0;::::1;12491:73;;;::::0;-1:-1:-1;;;12491:73:0;;8548:2:1;12491:73:0::1;::::0;::::1;8530:21:1::0;8587:2;8567:18;;;8560:30;8626:34;8606:18;;;8599:62;-1:-1:-1;;;8677:18:1;;;8670:36;8723:19;;12491:73:0::1;8346:402:1::0;12491:73:0::1;12575:19;12585:8;12575:9;:19::i;10384:380::-:0;-1:-1:-1;;;;;10520:19:0;;10512:68;;;;-1:-1:-1;;;10512:68:0;;15948:2:1;10512:68:0;;;15930:21:1;15987:2;15967:18;;;15960:30;16026:34;16006:18;;;15999:62;-1:-1:-1;;;16077:18:1;;;16070:34;16121:19;;10512:68:0;15746:400:1;10512:68:0;-1:-1:-1;;;;;10599:21:0;;10591:68;;;;-1:-1:-1;;;10591:68:0;;8955:2:1;10591:68:0;;;8937:21:1;8994:2;8974:18;;;8967:30;9033:34;9013:18;;;9006:62;-1:-1:-1;;;9084:18:1;;;9077:32;9126:19;;10591:68:0;8753:398:1;10591:68:0;-1:-1:-1;;;;;10672:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10724:32;;17062:25:1;;;10724:32:0;;17035:18:1;10724:32:0;;;;;;;10384:380;;;:::o;17652:3066::-;17802:1;17793:6;:10;17785:64;;;;-1:-1:-1;;;17785:64:0;;14032:2:1;17785:64:0;;;14014:21:1;14071:2;14051:18;;;14044:30;14110:34;14090:18;;;14083:62;-1:-1:-1;;;14161:18:1;;;14154:39;14210:19;;17785:64:0;13830:405:1;17785:64:0;-1:-1:-1;;;;;17867:17:0;;;;;;:9;:17;;;;;;;;17866:18;:43;;;;-1:-1:-1;;;;;;17889:20:0;;;;;;:9;:20;;;;;;;;17888:21;17866:43;17862:122;;;17934:14;;-1:-1:-1;;;17934:14:0;;;;17926:46;;;;-1:-1:-1;;;17926:46:0;;14442:2:1;17926:46:0;;;14424:21:1;14481:2;14461:18;;;14454:30;-1:-1:-1;;;14500:18:1;;;14493:49;14559:18;;17926:46:0;14240:343:1;17926:46:0;18010:4;;-1:-1:-1;;;;;18000:14:0;;;18010:4;;18000:14;:39;;;;-1:-1:-1;;;;;;18019:20:0;;;;;;:9;:20;;;;;;;;18018:21;18000:39;:59;;;;-1:-1:-1;18044:15:0;;-1:-1:-1;;;18044:15:0;;;;18043:16;18000:59;17996:311;;;18094:11;;18084:6;:21;;18076:63;;;;-1:-1:-1;;;18076:63:0;;8190:2:1;18076:63:0;;;8172:21:1;8229:2;8209:18;;;8202:30;8268:31;8248:18;;;8241:59;8317:18;;18076:63:0;7988:353:1;18076:63:0;18213:14;;18203:6;18180:20;18190:9;-1:-1:-1;;;;;3813:18:0;3786:7;3813:18;;;;;;;;;;;;3712:127;18180:20;:29;;;;:::i;:::-;:47;;18154:141;;;;-1:-1:-1;;;18154:141:0;;10176:2:1;18154:141:0;;;10158:21:1;;;10195:18;;;10188:30;10254:34;10234:18;;;10227:62;10306:18;;18154:141:0;9974:356:1;18154:141:0;18347:4;;-1:-1:-1;;;;;18337:14:0;;;18347:4;;18337:14;;;;:39;;-1:-1:-1;;;;;;18356:20:0;;;;;;:9;:20;;;;;;;;18355:21;18337:39;:61;;;;-1:-1:-1;;;;;;18381:17:0;;;;;;:9;:17;;;;;;;;18380:18;18337:61;:81;;;;-1:-1:-1;18403:15:0;;-1:-1:-1;;;18403:15:0;;;;18402:16;18337:81;18319:682;;;18463:12;;18453:6;:22;;18445:65;;;;-1:-1:-1;;;18445:65:0;;16353:2:1;18445:65:0;;;16335:21:1;16392:2;16372:18;;;16365:30;16431:32;16411:18;;;16404:60;16481:18;;18445:65:0;16151:354:1;18445:65:0;18542:4;;-1:-1:-1;;;;;18529:17:0;;;18542:4;;18529:17;18525:211;;18630:14;;18620:6;18597:20;18607:9;-1:-1:-1;;;;;3813:18:0;3786:7;3813:18;;;;;;;;;;;;3712:127;18597:20;:29;;;;:::i;:::-;:47;;18567:153;;;;-1:-1:-1;;;18567:153:0;;10176:2:1;18567:153:0;;;10158:21:1;;;10195:18;;;10188:30;10254:34;10234:18;;;10227:62;10306:18;;18567:153:0;9974:356:1;18567:153:0;18754:15;;;;18750:240;;;-1:-1:-1;;;;;18829:17:0;;18790:18;18829:17;;;:9;:17;;;;;;18811:35;;:15;:35;:::i;:::-;18790:56;;18887:12;;18873:10;:26;;18865:55;;;;-1:-1:-1;;;18865:55:0;;14790:2:1;18865:55:0;;;14772:21:1;14829:2;14809:18;;;14802:30;-1:-1:-1;;;14848:18:1;;;14841:46;14904:18;;18865:55:0;14588:340:1;18865:55:0;-1:-1:-1;;;;;;18939:17:0;;;;;;:9;:17;;;;;18959:15;18939:35;;18750:240;19013:15;19039:14;19064:11;19086:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19086:25:0;-1:-1:-1;;;;;19145:17:0;;19124;19145;;;:9;:17;;;;;;;;19144:18;:56;;;;-1:-1:-1;;;;;;19180:20:0;;;;;;:9;:20;;;;;;;;19179:21;19144:56;:112;;;;;19248:8;;19232:13;;:24;;;;:::i;:::-;19217:12;:39;19144:112;19344:15;;19124:132;;-1:-1:-1;;;;19344:15:0;;;;;:36;;-1:-1:-1;;;;;;19363:17:0;;;;;;:9;:17;;;;;;;;19344:36;:60;;;-1:-1:-1;;;;;;19384:20:0;;;;;;:9;:20;;;;;;;;19344:60;19340:794;;;19425:1;19419:7;;19340:794;;;19490:4;;-1:-1:-1;;;;;19477:17:0;;;19490:4;;19477:17;:34;;;;;19499:12;19498:13;19477:34;19473:661;;;19682:13;;19633;;19682:9;19594:19;19555;;:58;;19594:19;19555:58;:::i;:::-;:91;;;;:::i;:::-;:140;;;;:::i;:::-;19741:24;;;;;;;;19756:9;19741:24;;;;;;;;;;;;;;;;;;;;;;;;19528:167;;-1:-1:-1;19528:167:0;;-1:-1:-1;19741:24:0;-1:-1:-1;19473:661:0;;;19788:12;19783:351;;19943:9;;19914;;19943:5;19879:15;19844;;:50;;19879:15;19844:50;:::i;:::-;:79;;;;:::i;:::-;:108;;;;:::i;:::-;19999:20;;;;;;;;20014:5;19999:20;;;;;;;;;;;;;;;;;;;;;;;;19817:135;;-1:-1:-1;19817:135:0;;-1:-1:-1;19999:20:0;-1:-1:-1;19783:351:0;;;20041:12;20037:97;;;20080:9;;;-1:-1:-1;20080:9:0;;-1:-1:-1;20037:97:0;20172:3;20153:15;20162:6;20153;:15;:::i;:::-;20152:23;;;;:::i;:::-;20289:18;;20146:29;;-1:-1:-1;;;;20289:18:0;;;;:36;;;;-1:-1:-1;20321:4:0;;-1:-1:-1;;;;;20311:14:0;;;20321:4;;20311:14;;20289:36;20285:76;;;20327:34;20339:7;20348:12;20327:11;:34::i;:::-;20403:48;20419:6;20427:9;20438:12;20447:3;20438:6;:12;:::i;:::-;20403:15;:48::i;:::-;20466:7;;20462:249;;20538:11;;20534:164;;20570:17;20611:3;20591:16;20600:7;20591:6;:16;:::i;:::-;20590:24;;;;:::i;:::-;20570:44;;20633:49;20649:6;20665:4;20672:9;20633:15;:49::i;:::-;20551:147;20534:164;17774:2944;;;;;17652:3066;;;:::o;12610:173::-;12685:6;;;-1:-1:-1;;;;;12702:17:0;;;-1:-1:-1;;;;;;12702:17:0;;;;;;;12735:40;;12685:6;;;12702:17;12685:6;;12735:40;;12666:16;;12735:40;12655:128;12610:173;:::o;20726:1698::-;15109:15;;-1:-1:-1;;;15109:15:0;;;;15104:125;;15141:15;:22;;-1:-1:-1;;;;15141:22:0;-1:-1:-1;;;15141:22:0;;;20861:4:::1;-1:-1:-1::0;3813:18:0;;;;;;;;;;;20817:50:::1;;20901:23;;20882:15;:42;20878:1539;;20971:1;20945:23;;:27;20941:109;;;-1:-1:-1::0;21011:23:0::1;::::0;20941:109:::1;21121:19;21143:11;:7:::0;21153:1:::1;21143:11;:::i;:::-;21121:33;;21169:32;21263:11;21223:9;:19;;;21205:15;:37;;;;:::i;:::-;21204:70;;;;:::i;:::-;21169:105:::0;-1:-1:-1;21289:14:0::1;21306:42;21169:105:::0;21306:15;:42:::1;:::i;:::-;21289:59:::0;-1:-1:-1;21390:21:0::1;21428:24;21289:59:::0;21428:16:::1;:24::i;:::-;21469:20;21492:38;21516:14:::0;21492:21:::1;:38;:::i;:::-;21469:61;;21545:19;21597:9;:19;;;21583:11;:33;;;;:::i;:::-;21567:50;::::0;:12;:50:::1;:::i;:::-;21545:72;;21632:29;21678:9;:19;;;21664:11;:33;;;;:::i;:::-;21632:65:::0;-1:-1:-1;21718:25:0;;21714:162:::1;;21799:61;21812:24;21838:21;21799:12;:61::i;:::-;21933:19:::0;;21892:20:::1;::::0;21915:15:::1;:11:::0;21929:1:::1;21915:15;:::i;:::-;:37;;;;:::i;:::-;21892:60:::0;-1:-1:-1;21971:16:0;;21967:105:::1;;22016:15;::::0;22008:48:::1;::::0;-1:-1:-1;;;;;22016:15:0::1;22043:12:::0;22008:34:::1;:48::i;:::-;22123:13;::::0;::::1;::::0;22088:14:::1;::::0;22105:15:::1;:11:::0;22119:1:::1;22105:15;:::i;:::-;:31;;;;:::i;:::-;22088:48:::0;-1:-1:-1;22155:10:0;;22151:87:::1;;22194:9;::::0;22186:36:::1;::::0;-1:-1:-1;;;;;22194:9:0::1;22215:6:::0;22186:28:::1;:36::i;:::-;22289:13;::::0;::::1;::::0;22254:14:::1;::::0;22271:15:::1;:11:::0;22285:1:::1;22271:15;:::i;:::-;:31;;;;:::i;:::-;22254:48:::0;-1:-1:-1;22321:10:0;;22317:87:::1;;22360:9;::::0;22352:36:::1;::::0;-1:-1:-1;;;;;22360:9:0::1;22381:6:::0;22352:28:::1;:36::i;:::-;20926:1491;;;;;;;;;;20878:1539;-1:-1:-1::0;15194:15:0;:23;;-1:-1:-1;;;;15194:23:0;;;20726:1698;;:::o;7844:638::-;-1:-1:-1;;;;;7984:20:0;;7976:70;;;;-1:-1:-1;;;7976:70:0;;15542:2:1;7976:70:0;;;15524:21:1;15581:2;15561:18;;;15554:30;15620:34;15600:18;;;15593:62;-1:-1:-1;;;15671:18:1;;;15664:35;15716:19;;7976:70:0;15340:401:1;7976:70:0;-1:-1:-1;;;;;8065:23:0;;8057:71;;;;-1:-1:-1;;;8057:71:0;;7786:2:1;8057:71:0;;;7768:21:1;7825:2;7805:18;;;7798:30;7864:34;7844:18;;;7837:62;-1:-1:-1;;;7915:18:1;;;7908:33;7958:19;;8057:71:0;7584:399:1;8057:71:0;-1:-1:-1;;;;;8225:17:0;;8201:21;8225:17;;;;;;;;;;;8261:23;;;;8253:74;;;;-1:-1:-1;;;8253:74:0;;9769:2:1;8253:74:0;;;9751:21:1;9808:2;9788:18;;;9781:30;9847:34;9827:18;;;9820:62;-1:-1:-1;;;9898:18:1;;;9891:36;9944:19;;8253:74:0;9567:402:1;8253:74:0;8358:22;8374:6;8358:13;:22;:::i;:::-;-1:-1:-1;;;;;8338:17:0;;;:9;:17;;;;;;;;;;;:42;;;;8391:20;;;;;;;;:30;;8415:6;;8338:9;8391:30;;8415:6;;8391:30;:::i;:::-;;;;;;;;8456:9;-1:-1:-1;;;;;8439:35:0;8448:6;-1:-1:-1;;;;;8439:35:0;;8467:6;8439:35;;;;17062:25:1;;17050:2;17035:18;;16916:177;8439:35:0;;;;;;;;7965:517;7844:638;;;:::o;22432:526::-;22574:16;;;22588:1;22574:16;;;;;;;;22550:21;;22574:16;;;;;;;;;;-1:-1:-1;22574:16:0;22550:40;;22619:4;22601;22606:1;22601:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22601:23:0;;;:7;;;;;;;;;;:23;;;;22645:6;;:13;;;-1:-1:-1;;;22645:13:0;;;;:6;;;;;:11;;:13;;;;;22601:7;;22645:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22635:4;22640:1;22635:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22635:23:0;;;:7;;;;;;;;;:23;22703:6;;22671:53;;22688:4;;22703:6;22712:11;22671:8;:53::i;:::-;22763:6;;:187;;-1:-1:-1;;;22763:187:0;;-1:-1:-1;;;;;22763:6:0;;;;:57;;:187;;22835:11;;22763:6;;22877:4;;22904;;22924:15;;22763:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22487:471;22432:526;:::o;22966:497::-;23146:6;;23114:53;;23131:4;;-1:-1:-1;;;;;23146:6:0;23155:11;23114:8;:53::i;:::-;23210:6;;-1:-1:-1;;;;;23210:6:0;:22;23241:9;23275:4;23295:11;23210:6;;23407:7;12158:6;;-1:-1:-1;;;;;12158:6:0;;12085:87;23407:7;23210:245;;;;;;-1:-1:-1;;;;;;23210:245:0;;;-1:-1:-1;;;;;6314:15:1;;;23210:245:0;;;6296:34:1;6346:18;;;6339:34;;;;6389:18;;;6382:34;;;;6432:18;;;6425:34;6496:15;;;6475:19;;;6468:44;23429:15:0;6528:19:1;;;6521:35;6230:19;;23210:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22966:497;;:::o;11528:319::-;11643:6;11618:21;:31;;11610:73;;;;-1:-1:-1;;;11610:73:0;;11377:2:1;11610:73:0;;;11359:21:1;11416:2;11396:18;;;11389:30;11455:31;11435:18;;;11428:59;11504:18;;11610:73:0;11175:353:1;11610:73:0;11697:12;11715:9;-1:-1:-1;;;;;11715:14:0;11738:6;11715:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11696:54;;;11769:7;11761:78;;;;-1:-1:-1;;;11761:78:0;;10950:2:1;11761:78:0;;;10932:21:1;10989:2;10969:18;;;10962:30;11028:34;11008:18;;;11001:62;11099:28;11079:18;;;11072:56;11145:19;;11761:78:0;10748:422:1;14:134;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:128::-;218:20;;247:28;218:20;247:28;:::i;286:247::-;345:6;398:2;386:9;377:7;373:23;369:32;366:52;;;414:1;411;404:12;366:52;453:9;440:23;472:31;497:5;472:31;:::i;:::-;522:5;286:247;-1:-1:-1;;;286:247:1:o;538:251::-;608:6;661:2;649:9;640:7;636:23;632:32;629:52;;;677:1;674;667:12;629:52;709:9;703:16;728:31;753:5;728:31;:::i;794:388::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;978:9;965:23;997:31;1022:5;997:31;:::i;:::-;1047:5;-1:-1:-1;1104:2:1;1089:18;;1076:32;1117:33;1076:32;1117:33;:::i;:::-;1169:7;1159:17;;;794:388;;;;;:::o;1187:456::-;1264:6;1272;1280;1333:2;1321:9;1312:7;1308:23;1304:32;1301:52;;;1349:1;1346;1339:12;1301:52;1388:9;1375:23;1407:31;1432:5;1407:31;:::i;:::-;1457:5;-1:-1:-1;1514:2:1;1499:18;;1486:32;1527:33;1486:32;1527:33;:::i;:::-;1187:456;;1579:7;;-1:-1:-1;;;1633:2:1;1618:18;;;;1605:32;;1187:456::o;1648:382::-;1713:6;1721;1774:2;1762:9;1753:7;1749:23;1745:32;1742:52;;;1790:1;1787;1780:12;1742:52;1829:9;1816:23;1848:31;1873:5;1848:31;:::i;:::-;1898:5;-1:-1:-1;1955:2:1;1940:18;;1927:32;1968:30;1927:32;1968:30;:::i;2035:315::-;2103:6;2111;2164:2;2152:9;2143:7;2139:23;2135:32;2132:52;;;2180:1;2177;2170:12;2132:52;2219:9;2206:23;2238:31;2263:5;2238:31;:::i;:::-;2288:5;2340:2;2325:18;;;;2312:32;;-1:-1:-1;;;2035:315:1:o;2355:1202::-;2445:6;2453;2506:2;2494:9;2485:7;2481:23;2477:32;2474:52;;;2522:1;2519;2512:12;2474:52;2562:9;2549:23;2591:18;2632:2;2624:6;2621:14;2618:34;;;2648:1;2645;2638:12;2618:34;2686:6;2675:9;2671:22;2661:32;;2731:7;2724:4;2720:2;2716:13;2712:27;2702:55;;2753:1;2750;2743:12;2702:55;2789:2;2776:16;2811:4;2834:2;2830;2827:10;2824:36;;;2840:18;;:::i;:::-;2886:2;2883:1;2879:10;2918:2;2912:9;2981:2;2977:7;2972:2;2968;2964:11;2960:25;2952:6;2948:38;3036:6;3024:10;3021:22;3016:2;3004:10;3001:18;2998:46;2995:72;;;3047:18;;:::i;:::-;3083:2;3076:22;3133:18;;;3167:15;;;;-1:-1:-1;3202:11:1;;;3232;;;3228:20;;3225:33;-1:-1:-1;3222:53:1;;;3271:1;3268;3261:12;3222:53;3293:1;3284:10;;3303:169;3317:2;3314:1;3311:9;3303:169;;;3374:23;3393:3;3374:23;:::i;:::-;3362:36;;3335:1;3328:9;;;;;3418:12;;;;3450;;3303:169;;;-1:-1:-1;3491:6:1;-1:-1:-1;3516:35:1;;-1:-1:-1;3532:18:1;;;3516:35;:::i;:::-;3506:45;;;;;;2355:1202;;;;;:::o;3562:241::-;3618:6;3671:2;3659:9;3650:7;3646:23;3642:32;3639:52;;;3687:1;3684;3677:12;3639:52;3726:9;3713:23;3745:28;3767:5;3745:28;:::i;3808:245::-;3875:6;3928:2;3916:9;3907:7;3903:23;3899:32;3896:52;;;3944:1;3941;3934:12;3896:52;3976:9;3970:16;3995:28;4017:5;3995:28;:::i;4058:309::-;4123:6;4131;4184:2;4172:9;4163:7;4159:23;4155:32;4152:52;;;4200:1;4197;4190:12;4152:52;4239:9;4226:23;4258:28;4280:5;4258:28;:::i;4372:180::-;4431:6;4484:2;4472:9;4463:7;4459:23;4455:32;4452:52;;;4500:1;4497;4490:12;4452:52;-1:-1:-1;4523:23:1;;4372:180;-1:-1:-1;4372:180:1:o;4557:306::-;4645:6;4653;4661;4714:2;4702:9;4693:7;4689:23;4685:32;4682:52;;;4730:1;4727;4720:12;4682:52;4759:9;4753:16;4743:26;;4809:2;4798:9;4794:18;4788:25;4778:35;;4853:2;4842:9;4838:18;4832:25;4822:35;;4557:306;;;;;:::o;4868:385::-;4954:6;4962;4970;4978;5031:3;5019:9;5010:7;5006:23;5002:33;4999:53;;;5048:1;5045;5038:12;4999:53;-1:-1:-1;;5071:23:1;;;5141:2;5126:18;;5113:32;;-1:-1:-1;5192:2:1;5177:18;;5164:32;;5243:2;5228:18;5215:32;;-1:-1:-1;4868:385:1;-1:-1:-1;4868:385:1:o;6982:597::-;7094:4;7123:2;7152;7141:9;7134:21;7184:6;7178:13;7227:6;7222:2;7211:9;7207:18;7200:34;7252:1;7262:140;7276:6;7273:1;7270:13;7262:140;;;7371:14;;;7367:23;;7361:30;7337:17;;;7356:2;7333:26;7326:66;7291:10;;7262:140;;;7420:6;7417:1;7414:13;7411:91;;;7490:1;7485:2;7476:6;7465:9;7461:22;7457:31;7450:42;7411:91;-1:-1:-1;7563:2:1;7542:15;-1:-1:-1;;7538:29:1;7523:45;;;;7570:2;7519:54;;6982:597;-1:-1:-1;;;6982:597:1:o;13469:356::-;13671:2;13653:21;;;13690:18;;;13683:30;13749:34;13744:2;13729:18;;13722:62;13816:2;13801:18;;13469:356::o;17098:980::-;17360:4;17408:3;17397:9;17393:19;17439:6;17428:9;17421:25;17465:2;17503:6;17498:2;17487:9;17483:18;17476:34;17546:3;17541:2;17530:9;17526:18;17519:31;17570:6;17605;17599:13;17636:6;17628;17621:22;17674:3;17663:9;17659:19;17652:26;;17713:2;17705:6;17701:15;17687:29;;17734:1;17744:195;17758:6;17755:1;17752:13;17744:195;;;17823:13;;-1:-1:-1;;;;;17819:39:1;17807:52;;17914:15;;;;17879:12;;;;17855:1;17773:9;17744:195;;;-1:-1:-1;;;;;;;17995:32:1;;;;17990:2;17975:18;;17968:60;-1:-1:-1;;;18059:3:1;18044:19;18037:35;17956:3;17098:980;-1:-1:-1;;;17098:980:1:o;18668:128::-;18708:3;18739:1;18735:6;18732:1;18729:13;18726:39;;;18745:18;;:::i;:::-;-1:-1:-1;18781:9:1;;18668:128::o;18801:217::-;18841:1;18867;18857:132;;18911:10;18906:3;18902:20;18899:1;18892:31;18946:4;18943:1;18936:15;18974:4;18971:1;18964:15;18857:132;-1:-1:-1;19003:9:1;;18801:217::o;19023:422::-;19112:1;19155:5;19112:1;19169:270;19190:7;19180:8;19177:21;19169:270;;;19249:4;19245:1;19241:6;19237:17;19231:4;19228:27;19225:53;;;19258:18;;:::i;:::-;19308:7;19298:8;19294:22;19291:55;;;19328:16;;;;19291:55;19407:22;;;;19367:15;;;;19169:270;;;19173:3;19023:422;;;;;:::o;19450:140::-;19508:5;19537:47;19578:4;19568:8;19564:19;19558:4;19644:5;19674:8;19664:80;;-1:-1:-1;19715:1:1;19729:5;;19664:80;19763:4;19753:76;;-1:-1:-1;19800:1:1;19814:5;;19753:76;19845:4;19863:1;19858:59;;;;19931:1;19926:130;;;;19838:218;;19858:59;19888:1;19879:10;;19902:5;;;19926:130;19963:3;19953:8;19950:17;19947:43;;;19970:18;;:::i;:::-;-1:-1:-1;;20026:1:1;20012:16;;20041:5;;19838:218;;20140:2;20130:8;20127:16;20121:3;20115:4;20112:13;20108:36;20102:2;20092:8;20089:16;20084:2;20078:4;20075:12;20071:35;20068:77;20065:159;;;-1:-1:-1;20177:19:1;;;20209:5;;20065:159;20256:34;20281:8;20275:4;20256:34;:::i;:::-;20326:6;20322:1;20318:6;20314:19;20305:7;20302:32;20299:58;;;20337:18;;:::i;:::-;20375:20;;19595:806;-1:-1:-1;;;19595:806:1:o;20406:168::-;20446:7;20512:1;20508;20504:6;20500:14;20497:1;20494:21;20489:1;20482:9;20475:17;20471:45;20468:71;;;20519:18;;:::i;:::-;-1:-1:-1;20559:9:1;;20406:168::o;20579:125::-;20619:4;20647:1;20644;20641:8;20638:34;;;20652:18;;:::i;:::-;-1:-1:-1;20689:9:1;;20579:125::o;20709:380::-;20788:1;20784:12;;;;20831;;;20852:61;;20906:4;20898:6;20894:17;20884:27;;20852:61;20959:2;20951:6;20948:14;20928:18;20925:38;20922:161;;;21005:10;21000:3;20996:20;20993:1;20986:31;21040:4;21037:1;21030:15;21068:4;21065:1;21058:15;20922:161;;20709:380;;;:::o;21094:135::-;21133:3;-1:-1:-1;;21154:17:1;;21151:43;;;21174:18;;:::i;:::-;-1:-1:-1;21221:1:1;21210:13;;21094:135::o;21234:127::-;21295:10;21290:3;21286:20;21283:1;21276:31;21326:4;21323:1;21316:15;21350:4;21347:1;21340:15;21366:127;21427:10;21422:3;21418:20;21415:1;21408:31;21458:4;21455:1;21448:15;21482:4;21479:1;21472:15;21498:127;21559:10;21554:3;21550:20;21547:1;21540:31;21590:4;21587:1;21580:15;21614:4;21611:1;21604:15;21630:131;-1:-1:-1;;;;;21705:31:1;;21695:42;;21685:70;;21751:1;21748;21741:12;21766:118;21852:5;21845:13;21838:21;21831:5;21828:32;21818:60;;21874:1;21871;21864:12

Swarm Source

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