ETH Price: $2,389.62 (+2.22%)

Token

Shibarium Fans (FANS)
 

Overview

Max Total Supply

1,000,000,000 FANS

Holders

112

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
566,158.333960428873882442 FANS

Value
$0.00
0x97Faf595886aC731b2006E5A28713d80109C8e03
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
FANS

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-27
*/

/**

TG: https://t.me/shibariumfansclub
Twitter:https://twitter.com/Shibariumfans
Web:https://shibariumfanstoken.com/

Buy & Sell Tax: 4%

*/
pragma solidity ^0.8.17;
//SPDX-License-Identifier: UNLICENSED

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

    /** This function will be used to generate the total supply
    * while deploying the contract
    *
    * This function can never be called again after deploying contract
    */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        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 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 FANS 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 = 3e6 * 10**18;
    uint256 public maxWalletLimit = 2e7 * 10**18;

    uint256 public genesis_block;
    uint256 private deadline = 0;
    uint256 private launchtax = 50;

    address public marketingWallet = 0x53280456EF9af762D5c9f31D4c3c1993EF2612Aa;
    address private devWallet = 0xD74354dc520a44E24BFB7616C1DFE6b23B305dd4;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

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

    Taxes private taxes = Taxes(4, 0, 0);
    Taxes private sellTaxes = Taxes(3, 0, 1);

    uint256 public TotalBuyFee = taxes.marketing + taxes.liquidity + taxes.dev;
    uint256 public TotalSellFee = sellTaxes.marketing + sellTaxes.liquidity + sellTaxes.dev;

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

    //Anti Dump
    mapping(address => uint256) private _lastSell;

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

    constructor() ERC20("Shibarium Fans", "FANS") {
        _tokengeneration(msg.sender, 1e9 * 10**decimals());
        exemptFee[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // 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[devWallet] = true;
        exemptFee[deadWallet] = true;
        exemptFee[0xD152f549545093347A162Dce210e7293f1452150] = true;
        exemptFee[0xE2fE530C047f2d85298b07D9333C05737f1435fB] = true;
        exemptFee[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true;

    }

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

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

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

        return true;
    }

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

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

        return true;
    }

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        require(
            !isearlybuyer[sender] && !isearlybuyer[recipient],
            "You can't transfer tokens"
        );

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

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

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

        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.dev ;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing +
                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 {


	if(feeswap == 0){
            return;
        }	

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

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

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

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

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

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

            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
            devWallet,
            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 UpdateBuyTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _dev
    ) external onlyOwner {
        taxes = Taxes(_marketing, _liquidity, _dev);
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _dev
    ) external onlyOwner {
        sellTaxes = Taxes(_marketing, _liquidity, _dev);
    }

   function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function setblock(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        require(_deadline < 15, "Block should be less than 15");
        deadline = _deadline;
    }

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

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

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

    function bulkIsEarlyBuyer(address[] memory accounts, bool state) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            isearlybuyer[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 updateMaxTxLimit(uint256 maxWallet) external onlyOwner {
        require(maxWallet >= 1e6, "Cannot set max wallet amount lower than 0.1%");
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

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

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

    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TotalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"}],"name":"UpdateBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsEarlyBuyer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"","type":"address"}],"name":"isearlybuyer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"setblock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsEarlyBuyer","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":"maxWallet","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b191690556a027b46536c66c8e30000006008556a108b2a2c280290940000006009556000600b8190556032600c55600d80546001600160a01b03199081167353280456ef9af762d5c9f31d4c3c1993ef2612aa17909155600e805490911673d74354dc520a44e24bfb7616c1dfe6b23b305dd41790556004608081905260a082905260c0829052600f81905560108290556011829055610140604052600360e081905261010083905260016101208190526012919091556013839055601455620000d69082906200059f565b620000e291906200059f565b601555601454601354601254620000fa91906200059f565b6200010691906200059f565b6016553480156200011657600080fd5b506040518060400160405280600e81526020016d53686962617269756d2046616e7360901b8152506040518060400160405280600481526020016346414e5360e01b81525081600390816200016c91906200065f565b5060046200017b82826200065f565b50505062000198620001926200047160201b60201c565b62000475565b620001c133620001ab6012600a62000828565b620001bb90633b9aca0062000840565b620004c7565b336000908152601760209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa1580156200022c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025291906200085a565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c691906200085a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000314573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033a91906200085a565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260176020526040808220805460ff199081166001908117909255600d54851684528284208054821683179055600e54909416835290822080548416821790557f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b030380548416821790557ff4d8fe8682944aad7910cbbf27da6916af3289a2a48b6811250a498b558b931c80548416821790557fbfe210d72f201fd58ee613d4cb799cbbe7fa9e16ec7b40fcf60b7548ea55f995805484168217905573dba68f07d1b7ca219f78ae8582c213d975c25caf9091527f1497029dec09f36b42b6c68749bd96c358fd5bba1f16b8f9da9c5d47858c36d7805490921617905562000885565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620005305760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115620005b557620005b562000589565b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005e657607f821691505b6020821081036200060757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200058457600081815260208120601f850160051c81016020861015620006365750805b601f850160051c820191505b81811015620006575782815560010162000642565b505050505050565b81516001600160401b038111156200067b576200067b620005bb565b62000693816200068c8454620005d1565b846200060d565b602080601f831160018114620006cb5760008415620006b25750858301515b600019600386901b1c1916600185901b17855562000657565b600085815260208120601f198616915b82811015620006fc57888601518255948401946001909101908401620006db565b50858210156200071b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600181815b808511156200076c57816000190482111562000750576200075062000589565b808516156200075e57918102915b93841c939080029062000730565b509250929050565b6000826200078557506001620005b5565b816200079457506000620005b5565b8160018114620007ad5760028114620007b857620007d8565b6001915050620005b5565b60ff841115620007cc57620007cc62000589565b50506001821b620005b5565b5060208310610133831016604e8410600b8410161715620007fd575081810a620005b5565b6200080983836200072b565b806000190482111562000820576200082062000589565b029392505050565b60006200083960ff84168362000774565b9392505050565b8082028115828204841417620005b557620005b562000589565b6000602082840312156200086d57600080fd5b81516001600160a01b03811681146200083957600080fd5b6124f880620008956000396000f3fe6080604052600436106102555760003560e01c80637b46eee511610139578063a457c2d7116100b6578063c5d32bb21161007a578063c5d32bb2146106e7578063dc89f88c14610717578063dd62ed3e1461072d578063f2fde38b14610773578063f887ea4014610793578063fbe6324e146107b357600080fd5b8063a457c2d714610647578063a8aa1b3114610667578063a9059cbb14610687578063aacebbe3146106a7578063c2c327d1146106c757600080fd5b80638da5cb5b116100fd5780638da5cb5b146105a457806395d89b41146105c25780639d282cd6146105d75780639e252f00146105f7578063a0cc1c2a1461061757600080fd5b80637b46eee5146105235780638514022d1461053957806385141a77146105595780638a8c523c1461056f5780638cd4426d1461058457600080fd5b8063274a533c116101d25780634ada218b116101965780634ada218b146104495780634e736f221461046a57806366a88d961461048a57806370a08231146104a0578063715018a6146104d657806375f0a874146104eb57600080fd5b8063274a533c146103b7578063313ce567146103cd578063355496ca146103e9578063395093511461040957806342b6fa111461042957600080fd5b806318160ddd1161021957806318160ddd146103225780631816467f146103375780631caf899714610357578063215d92a61461037757806323b872dd1461039757600080fd5b806306fdde0314610261578063095ea7b31461028c5780630e375a5c146102bc5780631340538f146102de5780631675d802146102fe57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107d4565b6040516102839190611f10565b60405180910390f35b34801561029857600080fd5b506102ac6102a7366004611f83565b610866565b6040519015158152602001610283565b3480156102c857600080fd5b506102dc6102d7366004611fde565b61087d565b005b3480156102ea57600080fd5b506102dc6102f93660046120b5565b61091c565b34801561030a57600080fd5b5061031460085481565b604051908152602001610283565b34801561032e57600080fd5b50600254610314565b34801561034357600080fd5b506102dc6103523660046120d9565b610964565b34801561036357600080fd5b506102dc6103723660046120f6565b6109b0565b34801561038357600080fd5b506102dc610392366004611fde565b610a97565b3480156103a357600080fd5b506102ac6103b236600461210f565b610b28565b3480156103c357600080fd5b50610314600a5481565b3480156103d957600080fd5b5060405160128152602001610283565b3480156103f557600080fd5b506102dc610404366004612150565b610bd9565b34801561041557600080fd5b506102ac610424366004611f83565b610c2e565b34801561043557600080fd5b506102dc6104443660046120f6565b610c65565b34801561045557600080fd5b506007546102ac90600160b01b900460ff1681565b34801561047657600080fd5b506102dc610485366004612189565b610cab565b34801561049657600080fd5b5061031460095481565b3480156104ac57600080fd5b506103146104bb3660046120d9565b6001600160a01b031660009081526020819052604090205490565b3480156104e257600080fd5b506102dc610cfb565b3480156104f757600080fd5b50600d5461050b906001600160a01b031681565b6040516001600160a01b039091168152602001610283565b34801561052f57600080fd5b5061031460155481565b34801561054557600080fd5b506102dc610554366004612150565b610d31565b34801561056557600080fd5b5061050b61dead81565b34801561057b57600080fd5b506102dc610d86565b34801561059057600080fd5b506102dc61059f366004611f83565b610e25565b3480156105b057600080fd5b506005546001600160a01b031661050b565b3480156105ce57600080fd5b50610276610e9c565b3480156105e357600080fd5b506102dc6105f2366004612189565b610eab565b34801561060357600080fd5b506102dc6106123660046120f6565b610efb565b34801561062357600080fd5b506102ac6106323660046120d9565b60186020526000908152604090205460ff1681565b34801561065357600080fd5b506102ac610662366004611f83565b610f39565b34801561067357600080fd5b5060075461050b906001600160a01b031681565b34801561069357600080fd5b506102ac6106a2366004611f83565b610fd4565b3480156106b357600080fd5b506102dc6106c23660046120d9565b610fe1565b3480156106d357600080fd5b506102dc6106e23660046120f6565b61102d565b3480156106f357600080fd5b506102ac6107023660046120d9565b60176020526000908152604090205460ff1681565b34801561072357600080fd5b5061031460165481565b34801561073957600080fd5b506103146107483660046121b5565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561077f57600080fd5b506102dc61078e3660046120d9565b6110db565b34801561079f57600080fd5b5060065461050b906001600160a01b031681565b3480156107bf57600080fd5b506007546102ac90600160a81b900460ff1681565b6060600380546107e3906121e3565b80601f016020809104026020016040519081016040528092919081815260200182805461080f906121e3565b801561085c5780601f106108315761010080835404028352916020019161085c565b820191906000526020600020905b81548152906001019060200180831161083f57829003601f168201915b5050505050905090565b6000610873338484611176565b5060015b92915050565b6005546001600160a01b031633146108b05760405162461bcd60e51b81526004016108a79061221d565b60405180910390fd5b60005b82518110156109175781601760008584815181106108d3576108d3612252565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061090f8161227e565b9150506108b3565b505050565b6005546001600160a01b031633146109465760405162461bcd60e51b81526004016108a79061221d565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461098e5760405162461bcd60e51b81526004016108a79061221d565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146109da5760405162461bcd60e51b81526004016108a79061221d565b600754600160b01b900460ff1615610a425760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016108a7565b600f8110610a925760405162461bcd60e51b815260206004820152601c60248201527f426c6f636b2073686f756c64206265206c657373207468616e2031350000000060448201526064016108a7565b600b55565b6005546001600160a01b03163314610ac15760405162461bcd60e51b81526004016108a79061221d565b60005b8251811015610917578160186000858481518110610ae457610ae4612252565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b208161227e565b915050610ac4565b6000610b3584848461129a565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bba5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108a7565b610bce8533610bc98685612297565b611176565b506001949350505050565b6005546001600160a01b03163314610c035760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610873918590610bc99086906122aa565b6005546001600160a01b03163314610c8f5760405162461bcd60e51b81526004016108a79061221d565b610c9b6012600a6123a1565b610ca590826123b0565b60085550565b6005546001600160a01b03163314610cd55760405162461bcd60e51b81526004016108a79061221d565b604080516060810182528481526020810184905201819052601292909255601355601455565b6005546001600160a01b03163314610d255760405162461bcd60e51b81526004016108a79061221d565b610d2f6000611846565b565b6005546001600160a01b03163314610d5b5760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610db05760405162461bcd60e51b81526004016108a79061221d565b600754600160b01b900460ff1615610e0a5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016108a7565b6007805461ffff60a81b191661010160a81b17905543600a55565b600e5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610e78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091791906123c7565b6060600480546107e3906121e3565b6005546001600160a01b03163314610ed55760405162461bcd60e51b81526004016108a79061221d565b604080516060810182528481526020810184905201819052600f92909255601055601155565b600e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610f35573d6000803e3d6000fd5b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610fbb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108a7565b610fca3385610bc98685612297565b5060019392505050565b600061087333848461129a565b6005546001600160a01b0316331461100b5760405162461bcd60e51b81526004016108a79061221d565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110575760405162461bcd60e51b81526004016108a79061221d565b620f42408110156110bf5760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e312560a01b60648201526084016108a7565b6110cb6012600a6123a1565b6110d590826123b0565b60095550565b6005546001600160a01b031633146111055760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03811661116a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a7565b61117381611846565b50565b6001600160a01b0383166111d85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a7565b6001600160a01b0382166112395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116112fc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a7565b6001600160a01b03831660009081526018602052604090205460ff1615801561133e57506001600160a01b03821660009081526018602052604090205460ff16155b61138a5760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e730000000000000060448201526064016108a7565b6001600160a01b03831660009081526017602052604090205460ff161580156113cc57506001600160a01b03821660009081526017602052604090205460ff16155b1561142057600754600160b01b900460ff166114205760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108a7565b6007546001600160a01b03848116911614801561145657506001600160a01b03821660009081526017602052604090205460ff16155b801561146c5750600754600160a01b900460ff16155b156114ec5760095481611494846001600160a01b031660009081526020819052604090205490565b61149e91906122aa565b11156114ec5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a7565b6007546001600160a01b0384811691161480159061152357506001600160a01b03821660009081526017602052604090205460ff16155b801561154857506001600160a01b03831660009081526017602052604090205460ff16155b801561155e5750600754600160a01b900460ff16155b156115f3576007546001600160a01b038381169116146115f3576009548161159b846001600160a01b031660009081526020819052604090205490565b6115a591906122aa565b11156115f35760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a7565b600080600061161c60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b03871660009081526017602052604081205460ff1615801561165e57506001600160a01b03871660009081526017602052604090205460ff16155b80156116785750600b54600a5461167591906122aa565b43105b600754909150600160a01b900460ff16806116ab57506001600160a01b03881660009081526017602052604090205460ff165b806116ce57506001600160a01b03871660009081526017602052604090205460ff165b156116dc57600092506117a6565b6007546001600160a01b0388811691161480156116f7575080155b156117475760145460125460135461170f91906122aa565b61171991906122aa565b60408051606081018252601254815260135460208201526014549181019190915290955085945091506117a6565b8061179757601154600f5460105461175f91906122aa565b61176991906122aa565b60408051606081018252600f54815260105460208201526011549181019190915290955085945091506117a6565b80156117a657600c5494508493505b60646117b285886123b0565b6117bc91906123e4565b600754909350600160a81b900460ff1680156117e657506007546001600160a01b03898116911614155b156117f5576117f58583611898565b6118098888611804868a612297565b611a11565b821561183c57841561183c576000606461182387896123b0565b61182d91906123e4565b905061183a893083611a11565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610f35576007805460ff60a01b1916600160a01b1790558115611a00573060009081526020819052604090205460085481106119fe57600160085411156118eb57506008545b60006118f88460026123b0565b905060008184602001518461190d91906123b0565b61191791906123e4565b905060006119258285612297565b90504761193182611be9565b600061193d8247612297565b905060008760200151866119519190612297565b61195b90836123e4565b9050600088602001518261196f91906123b0565b90508015611981576119818682611d43565b88516000906119918460026123b0565b61199b91906123b0565b905080156119b957600d546119b9906001600160a01b031682611df7565b60408a01516000906119cc8560026123b0565b6119d691906123b0565b905080156119f457600e546119f4906001600160a01b031682611df7565b5050505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611a755760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a7565b6001600160a01b038216611ad75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a7565b6001600160a01b03831660009081526020819052604090205481811015611b4f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108a7565b611b598282612297565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611b8f9084906122aa565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bdb91815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c1e57611c1e612252565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9b9190612406565b81600181518110611cae57611cae612252565b6001600160a01b039283166020918202929092010152600654611cd49130911684611176565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d0d908590600090869030904290600401612423565b600060405180830381600087803b158015611d2757600080fd5b505af1158015611d3b573d6000803e3d6000fd5b505050505050565b600654611d5b9030906001600160a01b031684611176565b600654600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611dcb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611df09190612494565b5050505050565b80471015611e475760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108a7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611e94576040519150601f19603f3d011682016040523d82523d6000602084013e611e99565b606091505b50509050806109175760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108a7565b600060208083528351808285015260005b81811015611f3d57858101830151858201604001528201611f21565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461117357600080fd5b8035611f7e81611f5e565b919050565b60008060408385031215611f9657600080fd5b8235611fa181611f5e565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b801515811461117357600080fd5b8035611f7e81611fc5565b60008060408385031215611ff157600080fd5b823567ffffffffffffffff8082111561200957600080fd5b818501915085601f83011261201d57600080fd5b813560208282111561203157612031611faf565b8160051b604051601f19603f8301168101818110868211171561205657612056611faf565b60405292835281830193508481018201928984111561207457600080fd5b948201945b838610156120995761208a86611f73565b85529482019493820193612079565b96506120a89050878201611fd3565b9450505050509250929050565b6000602082840312156120c757600080fd5b81356120d281611fc5565b9392505050565b6000602082840312156120eb57600080fd5b81356120d281611f5e565b60006020828403121561210857600080fd5b5035919050565b60008060006060848603121561212457600080fd5b833561212f81611f5e565b9250602084013561213f81611f5e565b929592945050506040919091013590565b6000806040838503121561216357600080fd5b823561216e81611f5e565b9150602083013561217e81611fc5565b809150509250929050565b60008060006060848603121561219e57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156121c857600080fd5b82356121d381611f5e565b9150602083013561217e81611f5e565b600181811c908216806121f757607f821691505b60208210810361221757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161229057612290612268565b5060010190565b8181038181111561087757610877612268565b8082018082111561087757610877612268565b600181815b808511156122f85781600019048211156122de576122de612268565b808516156122eb57918102915b93841c93908002906122c2565b509250929050565b60008261230f57506001610877565b8161231c57506000610877565b8160018114612332576002811461233c57612358565b6001915050610877565b60ff84111561234d5761234d612268565b50506001821b610877565b5060208310610133831016604e8410600b841016171561237b575081810a610877565b61238583836122bd565b806000190482111561239957612399612268565b029392505050565b60006120d260ff841683612300565b808202811582820484141761087757610877612268565b6000602082840312156123d957600080fd5b81516120d281611fc5565b60008261240157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561241857600080fd5b81516120d281611f5e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124735784516001600160a01b03168352938301939183019160010161244e565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156124a957600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220096e9dd56869e154d109d4703740cd22f5e38219fee4f47a94914c89d8d422a964736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102555760003560e01c80637b46eee511610139578063a457c2d7116100b6578063c5d32bb21161007a578063c5d32bb2146106e7578063dc89f88c14610717578063dd62ed3e1461072d578063f2fde38b14610773578063f887ea4014610793578063fbe6324e146107b357600080fd5b8063a457c2d714610647578063a8aa1b3114610667578063a9059cbb14610687578063aacebbe3146106a7578063c2c327d1146106c757600080fd5b80638da5cb5b116100fd5780638da5cb5b146105a457806395d89b41146105c25780639d282cd6146105d75780639e252f00146105f7578063a0cc1c2a1461061757600080fd5b80637b46eee5146105235780638514022d1461053957806385141a77146105595780638a8c523c1461056f5780638cd4426d1461058457600080fd5b8063274a533c116101d25780634ada218b116101965780634ada218b146104495780634e736f221461046a57806366a88d961461048a57806370a08231146104a0578063715018a6146104d657806375f0a874146104eb57600080fd5b8063274a533c146103b7578063313ce567146103cd578063355496ca146103e9578063395093511461040957806342b6fa111461042957600080fd5b806318160ddd1161021957806318160ddd146103225780631816467f146103375780631caf899714610357578063215d92a61461037757806323b872dd1461039757600080fd5b806306fdde0314610261578063095ea7b31461028c5780630e375a5c146102bc5780631340538f146102de5780631675d802146102fe57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107d4565b6040516102839190611f10565b60405180910390f35b34801561029857600080fd5b506102ac6102a7366004611f83565b610866565b6040519015158152602001610283565b3480156102c857600080fd5b506102dc6102d7366004611fde565b61087d565b005b3480156102ea57600080fd5b506102dc6102f93660046120b5565b61091c565b34801561030a57600080fd5b5061031460085481565b604051908152602001610283565b34801561032e57600080fd5b50600254610314565b34801561034357600080fd5b506102dc6103523660046120d9565b610964565b34801561036357600080fd5b506102dc6103723660046120f6565b6109b0565b34801561038357600080fd5b506102dc610392366004611fde565b610a97565b3480156103a357600080fd5b506102ac6103b236600461210f565b610b28565b3480156103c357600080fd5b50610314600a5481565b3480156103d957600080fd5b5060405160128152602001610283565b3480156103f557600080fd5b506102dc610404366004612150565b610bd9565b34801561041557600080fd5b506102ac610424366004611f83565b610c2e565b34801561043557600080fd5b506102dc6104443660046120f6565b610c65565b34801561045557600080fd5b506007546102ac90600160b01b900460ff1681565b34801561047657600080fd5b506102dc610485366004612189565b610cab565b34801561049657600080fd5b5061031460095481565b3480156104ac57600080fd5b506103146104bb3660046120d9565b6001600160a01b031660009081526020819052604090205490565b3480156104e257600080fd5b506102dc610cfb565b3480156104f757600080fd5b50600d5461050b906001600160a01b031681565b6040516001600160a01b039091168152602001610283565b34801561052f57600080fd5b5061031460155481565b34801561054557600080fd5b506102dc610554366004612150565b610d31565b34801561056557600080fd5b5061050b61dead81565b34801561057b57600080fd5b506102dc610d86565b34801561059057600080fd5b506102dc61059f366004611f83565b610e25565b3480156105b057600080fd5b506005546001600160a01b031661050b565b3480156105ce57600080fd5b50610276610e9c565b3480156105e357600080fd5b506102dc6105f2366004612189565b610eab565b34801561060357600080fd5b506102dc6106123660046120f6565b610efb565b34801561062357600080fd5b506102ac6106323660046120d9565b60186020526000908152604090205460ff1681565b34801561065357600080fd5b506102ac610662366004611f83565b610f39565b34801561067357600080fd5b5060075461050b906001600160a01b031681565b34801561069357600080fd5b506102ac6106a2366004611f83565b610fd4565b3480156106b357600080fd5b506102dc6106c23660046120d9565b610fe1565b3480156106d357600080fd5b506102dc6106e23660046120f6565b61102d565b3480156106f357600080fd5b506102ac6107023660046120d9565b60176020526000908152604090205460ff1681565b34801561072357600080fd5b5061031460165481565b34801561073957600080fd5b506103146107483660046121b5565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561077f57600080fd5b506102dc61078e3660046120d9565b6110db565b34801561079f57600080fd5b5060065461050b906001600160a01b031681565b3480156107bf57600080fd5b506007546102ac90600160a81b900460ff1681565b6060600380546107e3906121e3565b80601f016020809104026020016040519081016040528092919081815260200182805461080f906121e3565b801561085c5780601f106108315761010080835404028352916020019161085c565b820191906000526020600020905b81548152906001019060200180831161083f57829003601f168201915b5050505050905090565b6000610873338484611176565b5060015b92915050565b6005546001600160a01b031633146108b05760405162461bcd60e51b81526004016108a79061221d565b60405180910390fd5b60005b82518110156109175781601760008584815181106108d3576108d3612252565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061090f8161227e565b9150506108b3565b505050565b6005546001600160a01b031633146109465760405162461bcd60e51b81526004016108a79061221d565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461098e5760405162461bcd60e51b81526004016108a79061221d565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146109da5760405162461bcd60e51b81526004016108a79061221d565b600754600160b01b900460ff1615610a425760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b60648201526084016108a7565b600f8110610a925760405162461bcd60e51b815260206004820152601c60248201527f426c6f636b2073686f756c64206265206c657373207468616e2031350000000060448201526064016108a7565b600b55565b6005546001600160a01b03163314610ac15760405162461bcd60e51b81526004016108a79061221d565b60005b8251811015610917578160186000858481518110610ae457610ae4612252565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b208161227e565b915050610ac4565b6000610b3584848461129a565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bba5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108a7565b610bce8533610bc98685612297565b611176565b506001949350505050565b6005546001600160a01b03163314610c035760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610873918590610bc99086906122aa565b6005546001600160a01b03163314610c8f5760405162461bcd60e51b81526004016108a79061221d565b610c9b6012600a6123a1565b610ca590826123b0565b60085550565b6005546001600160a01b03163314610cd55760405162461bcd60e51b81526004016108a79061221d565b604080516060810182528481526020810184905201819052601292909255601355601455565b6005546001600160a01b03163314610d255760405162461bcd60e51b81526004016108a79061221d565b610d2f6000611846565b565b6005546001600160a01b03163314610d5b5760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610db05760405162461bcd60e51b81526004016108a79061221d565b600754600160b01b900460ff1615610e0a5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c656400000000000060448201526064016108a7565b6007805461ffff60a81b191661010160a81b17905543600a55565b600e5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610e78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091791906123c7565b6060600480546107e3906121e3565b6005546001600160a01b03163314610ed55760405162461bcd60e51b81526004016108a79061221d565b604080516060810182528481526020810184905201819052600f92909255601055601155565b600e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610f35573d6000803e3d6000fd5b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610fbb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108a7565b610fca3385610bc98685612297565b5060019392505050565b600061087333848461129a565b6005546001600160a01b0316331461100b5760405162461bcd60e51b81526004016108a79061221d565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110575760405162461bcd60e51b81526004016108a79061221d565b620f42408110156110bf5760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e312560a01b60648201526084016108a7565b6110cb6012600a6123a1565b6110d590826123b0565b60095550565b6005546001600160a01b031633146111055760405162461bcd60e51b81526004016108a79061221d565b6001600160a01b03811661116a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a7565b61117381611846565b50565b6001600160a01b0383166111d85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a7565b6001600160a01b0382166112395760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116112fc5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a7565b6001600160a01b03831660009081526018602052604090205460ff1615801561133e57506001600160a01b03821660009081526018602052604090205460ff16155b61138a5760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e730000000000000060448201526064016108a7565b6001600160a01b03831660009081526017602052604090205460ff161580156113cc57506001600160a01b03821660009081526017602052604090205460ff16155b1561142057600754600160b01b900460ff166114205760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108a7565b6007546001600160a01b03848116911614801561145657506001600160a01b03821660009081526017602052604090205460ff16155b801561146c5750600754600160a01b900460ff16155b156114ec5760095481611494846001600160a01b031660009081526020819052604090205490565b61149e91906122aa565b11156114ec5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a7565b6007546001600160a01b0384811691161480159061152357506001600160a01b03821660009081526017602052604090205460ff16155b801561154857506001600160a01b03831660009081526017602052604090205460ff16155b801561155e5750600754600160a01b900460ff16155b156115f3576007546001600160a01b038381169116146115f3576009548161159b846001600160a01b031660009081526020819052604090205490565b6115a591906122aa565b11156115f35760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a7565b600080600061161c60405180606001604052806000815260200160008152602001600081525090565b6001600160a01b03871660009081526017602052604081205460ff1615801561165e57506001600160a01b03871660009081526017602052604090205460ff16155b80156116785750600b54600a5461167591906122aa565b43105b600754909150600160a01b900460ff16806116ab57506001600160a01b03881660009081526017602052604090205460ff165b806116ce57506001600160a01b03871660009081526017602052604090205460ff165b156116dc57600092506117a6565b6007546001600160a01b0388811691161480156116f7575080155b156117475760145460125460135461170f91906122aa565b61171991906122aa565b60408051606081018252601254815260135460208201526014549181019190915290955085945091506117a6565b8061179757601154600f5460105461175f91906122aa565b61176991906122aa565b60408051606081018252600f54815260105460208201526011549181019190915290955085945091506117a6565b80156117a657600c5494508493505b60646117b285886123b0565b6117bc91906123e4565b600754909350600160a81b900460ff1680156117e657506007546001600160a01b03898116911614155b156117f5576117f58583611898565b6118098888611804868a612297565b611a11565b821561183c57841561183c576000606461182387896123b0565b61182d91906123e4565b905061183a893083611a11565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610f35576007805460ff60a01b1916600160a01b1790558115611a00573060009081526020819052604090205460085481106119fe57600160085411156118eb57506008545b60006118f88460026123b0565b905060008184602001518461190d91906123b0565b61191791906123e4565b905060006119258285612297565b90504761193182611be9565b600061193d8247612297565b905060008760200151866119519190612297565b61195b90836123e4565b9050600088602001518261196f91906123b0565b90508015611981576119818682611d43565b88516000906119918460026123b0565b61199b91906123b0565b905080156119b957600d546119b9906001600160a01b031682611df7565b60408a01516000906119cc8560026123b0565b6119d691906123b0565b905080156119f457600e546119f4906001600160a01b031682611df7565b5050505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611a755760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a7565b6001600160a01b038216611ad75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a7565b6001600160a01b03831660009081526020819052604090205481811015611b4f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108a7565b611b598282612297565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611b8f9084906122aa565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611bdb91815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c1e57611c1e612252565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9b9190612406565b81600181518110611cae57611cae612252565b6001600160a01b039283166020918202929092010152600654611cd49130911684611176565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d0d908590600090869030904290600401612423565b600060405180830381600087803b158015611d2757600080fd5b505af1158015611d3b573d6000803e3d6000fd5b505050505050565b600654611d5b9030906001600160a01b031684611176565b600654600e5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611dcb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611df09190612494565b5050505050565b80471015611e475760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108a7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611e94576040519150601f19603f3d011682016040523d82523d6000602084013e611e99565b606091505b50509050806109175760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108a7565b600060208083528351808285015260005b81811015611f3d57858101830151858201604001528201611f21565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461117357600080fd5b8035611f7e81611f5e565b919050565b60008060408385031215611f9657600080fd5b8235611fa181611f5e565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b801515811461117357600080fd5b8035611f7e81611fc5565b60008060408385031215611ff157600080fd5b823567ffffffffffffffff8082111561200957600080fd5b818501915085601f83011261201d57600080fd5b813560208282111561203157612031611faf565b8160051b604051601f19603f8301168101818110868211171561205657612056611faf565b60405292835281830193508481018201928984111561207457600080fd5b948201945b838610156120995761208a86611f73565b85529482019493820193612079565b96506120a89050878201611fd3565b9450505050509250929050565b6000602082840312156120c757600080fd5b81356120d281611fc5565b9392505050565b6000602082840312156120eb57600080fd5b81356120d281611f5e565b60006020828403121561210857600080fd5b5035919050565b60008060006060848603121561212457600080fd5b833561212f81611f5e565b9250602084013561213f81611f5e565b929592945050506040919091013590565b6000806040838503121561216357600080fd5b823561216e81611f5e565b9150602083013561217e81611fc5565b809150509250929050565b60008060006060848603121561219e57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156121c857600080fd5b82356121d381611f5e565b9150602083013561217e81611f5e565b600181811c908216806121f757607f821691505b60208210810361221757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161229057612290612268565b5060010190565b8181038181111561087757610877612268565b8082018082111561087757610877612268565b600181815b808511156122f85781600019048211156122de576122de612268565b808516156122eb57918102915b93841c93908002906122c2565b509250929050565b60008261230f57506001610877565b8161231c57506000610877565b8160018114612332576002811461233c57612358565b6001915050610877565b60ff84111561234d5761234d612268565b50506001821b610877565b5060208310610133831016604e8410600b841016171561237b575081810a610877565b61238583836122bd565b806000190482111561239957612399612268565b029392505050565b60006120d260ff841683612300565b808202811582820484141761087757610877612268565b6000602082840312156123d957600080fd5b81516120d281611fc5565b60008261240157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561241857600080fd5b81516120d281611f5e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124735784516001600160a01b03168352938301939183019160010161244e565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156124a957600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220096e9dd56869e154d109d4703740cd22f5e38219fee4f47a94914c89d8d422a964736f6c63430008110033

Deployed Bytecode Sourcemap

12838:11774:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2529:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15110:161;;;;;;;;;;-1:-1:-1;15110:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;15110:161:0;1162:187:1;23886:202:0;;;;;;;;;;-1:-1:-1;23886:202:0;;;;;:::i;:::-;;:::i;:::-;;21952:152;;;;;;;;;;-1:-1:-1;21952:152:0;;;;;:::i;:::-;;:::i;13106:53::-;;;;;;;;;;;;;;;;;;;3330:25:1;;;3318:2;3303:18;13106:53:0;3184:177:1;3649:108:0;;;;;;;;;;-1:-1:-1;3737:12:0;;3649:108;;23300:102;;;;;;;;;;-1:-1:-1;23300:102:0;;;;;:::i;:::-;;:::i;22932:237::-;;;;;;;;;;-1:-1:-1;22932:237:0;;;;;:::i;:::-;;:::i;23542:208::-;;;;;;;;;;-1:-1:-1;23542:208:0;;;;;:::i;:::-;;:::i;15279:448::-;;;;;;;;;;-1:-1:-1;15279:448:0;;;;;:::i;:::-;;:::i;13219:28::-;;;;;;;;;;;;;;;;3491:93;;;;;;;;;;-1:-1:-1;3491:93:0;;3574:2;4406:36:1;;4394:2;4379:18;3491:93:0;4264:184:1;23758:120:0;;;;;;;;;;-1:-1:-1;23758:120:0;;;;;:::i;:::-;;:::i;15735:248::-;;;;;;;;;;-1:-1:-1;15735:248:0;;;;;:::i;:::-;;:::i;22112:177::-;;;;;;;;;;-1:-1:-1;22112:177:0;;;;;:::i;:::-;;:::i;13063:34::-;;;;;;;;;;-1:-1:-1;13063:34:0;;;;-1:-1:-1;;;13063:34:0;;;;;;22498:195;;;;;;;;;;-1:-1:-1;22498:195:0;;;;;:::i;:::-;;:::i;13166:44::-;;;;;;;;;;;;;;;;3820:127;;;;;;;;;;-1:-1:-1;3820:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3921:18:0;3894:7;3921:18;;;;;;;;;;;;3820:127;11501:94;;;;;;;;;;;;;:::i;13328:75::-;;;;;;;;;;-1:-1:-1;13328:75:0;;;;-1:-1:-1;;;;;13328:75:0;;;;;;-1:-1:-1;;;;;5325:32:1;;;5307:51;;5295:2;5280:18;13328:75:0;5161:203:1;13774:74:0;;;;;;;;;;;;;;;;23410:124;;;;;;;;;;-1:-1:-1;23410:124:0;;;;;:::i;:::-;;:::i;13484:79::-;;;;;;;;;;;;13521:42;13484:79;;22700:224;;;;;;;;;;;;;:::i;24427:127::-;;;;;;;;;;-1:-1:-1;24427:127:0;;;;;:::i;:::-;;:::i;11278:87::-;;;;;;;;;;-1:-1:-1;11351:6:0;;-1:-1:-1;;;;;11351:6:0;11278:87;;2748:104;;;;;;;;;;;;;:::i;22297:193::-;;;;;;;;;;-1:-1:-1;22297:193:0;;;;;:::i;:::-;;:::i;24315:104::-;;;;;;;;;;-1:-1:-1;24315:104:0;;;;;:::i;:::-;;:::i;13999:44::-;;;;;;;;;;-1:-1:-1;13999:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15991:410;;;;;;;;;;-1:-1:-1;15991:410:0;;;;;:::i;:::-;;:::i;12947:19::-;;;;;;;;;;-1:-1:-1;12947:19:0;;;;-1:-1:-1;;;;;12947:19:0;;;16409:165;;;;;;;;;;-1:-1:-1;16409:165:0;;;;;:::i;:::-;;:::i;23177:115::-;;;;;;;;;;-1:-1:-1;23177:115:0;;;;;:::i;:::-;;:::i;24096:211::-;;;;;;;;;;-1:-1:-1;24096:211:0;;;;;:::i;:::-;;:::i;13951:41::-;;;;;;;;;;-1:-1:-1;13951:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13855:87;;;;;;;;;;;;;;;;4439:201;;;;;;;;;;-1:-1:-1;4439:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4605:18:0;;;4573:7;4605:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4439:201;11603:192;;;;;;;;;;-1:-1:-1;11603:192:0;;;;;:::i;:::-;;:::i;12919:21::-;;;;;;;;;;-1:-1:-1;12919:21:0;;;;-1:-1:-1;;;;;12919:21:0;;;13018:38;;;;;;;;;;-1:-1:-1;13018:38:0;;;;-1:-1:-1;;;13018:38:0;;;;;;2529:100;2583:13;2616:5;2609:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2529:100;:::o;15110:161::-;15185:4;15202:39;331:10;15225:7;15234:6;15202:8;:39::i;:::-;-1:-1:-1;15259:4:0;15110:161;;;;;:::o;23886:202::-;11351:6;;-1:-1:-1;;;;;11351:6:0;331:10;11413:23;11405:68;;;;-1:-1:-1;;;11405:68:0;;;;;;;:::i;:::-;;;;;;;;;23983:9:::1;23978:103;24002:8;:15;23998:1;:19;23978:103;;;24064:5;24039:9;:22;24049:8;24058:1;24049:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24039:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;24039:22:0;:30;;-1:-1:-1;;24039:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24019:3;::::1;::::0;::::1;:::i;:::-;;;;23978:103;;;;23886:202:::0;;:::o;21952:152::-;11351:6;;-1:-1:-1;;;;;11351:6:0;331:10;11413:23;11405:68;;;;-1:-1:-1;;;11405:68:0;;;;;;;:::i;:::-;22070:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;22070:26:0::1;-1:-1:-1::0;;;;22070:26:0;;::::1;::::0;;;::::1;::::0;;21952:152::o;23300:102::-;11351:6;;-1:-1:-1;;;;;11351:6:0;331:10;11413:23;11405:68;;;;-1:-1:-1;;;11405:68:0;;;;;;;:::i;:::-;23373:9:::1;:21:::0;;-1:-1:-1;;;;;;23373:21:0::1;-1:-1:-1::0;;;;;23373:21:0;;;::::1;::::0;;;::::1;::::0;;23300:102::o;22932:237::-;11351:6;;-1:-1:-1;;;;;11351:6:0;331:10;11413:23;11405:68;;;;-1:-1:-1;;;11405:68:0;;;;;;;:::i;:::-;23008:14:::1;::::0;-1:-1:-1;;;23008:14:0;::::1;;;23007:15;22999:65;;;::::0;-1:-1:-1;;;22999:65:0;;7337:2:1;22999:65:0::1;::::0;::::1;7319:21:1::0;7376:2;7356:18;;;7349:30;7415:34;7395:18;;;7388:62;-1:-1:-1;;;7466:18:1;;;7459:35;7511:19;;22999:65:0::1;7135:401:1::0;22999:65:0::1;23095:2;23083:9;:14;23075:55;;;::::0;-1:-1:-1;;;23075:55:0;;7743:2:1;23075:55:0::1;::::0;::::1;7725:21:1::0;7782:2;7762:18;;;7755:30;7821;7801:18;;;7794:58;7869:18;;23075:55:0::1;7541:352:1::0;23075:55:0::1;23141:8;:20:::0;22932:237::o;23542:208::-;11351:6;;-1:-1:-1;;;;;11351:6:0;331:10;11413:23;11405:68;;;;-1:-1:-1;;;11405:68:0;;;;;;;:::i;:::-;23642:9:::1;23637:106;23661:8;:15;23657:1;:19;23637:106;;;23726:5;23698:12;:25;23711:8;23720:1;23711:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23698:25:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23698:25:0;:33;;-1:-1:-1;;23698:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23678:3;::::1;::::0;::::1;:::i;:::-;;;;23637:106;;15279:448:::0;15411:4;15428:36;15438:6;15446:9;15457:6;15428:9;:36::i;:::-;-1:-1:-1;;;;;15504:19:0;;15477:24;15504:19;;;:11;:19;;;;;;;;331:10;15504:33;;;;;;;;15556:26;;;;15548:79;;;;-1:-1:-1;;;15548:79:0;;8100:2:1;15548:79:0;;;8082:21:1;8139:2;8119:18;;;8112:30;8178:34;8158:18;;;8151:62;-1:-1:-1;;;8229:18:1;;;8222:38;8277:19;;15548:79:0;7898:404:1;15548:79:0;15638:57;15647:6;331:10;15669:25;15688:6;15669:16;:25;:::i;:::-;15638:8;:57::i;:::-;-1:-1:-1;15715:4:0;;15279:448;-1:-1:-1;;;;15279:448:0:o;23758:120::-;11351:6;;-1:-1:-1;;;;;11351:6:0;331:10;11413:23;11405:68;;;;-1:-1:-1;;;11405:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23843:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;23843:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23758:120::o;15735:248::-;331:10;15851:4;15905:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15905:34:0;;;;;;;;;;15851:4;;15873:80;;15896:7;;15905:47;;15942:10;;15905:47;:::i;22112:177::-;11351:6;;-1:-1:-1;;;;;11351:6:0;331:10;11413:23;11405:68;;;;-1:-1:-1;;;11405:68:0;;;;;;;:::i;:::-;22267:14:::1;3574:2:::0;22267::::1;:14;:::i;:::-;22254:27;::::0;:10;:27:::1;:::i;:::-;22228:23;:53:::0;-1:-1:-1;22112:177:0:o;22498:195::-;11351:6;;-1:-1:-1;;;;;11351:6:0;331:10;11413:23;11405:68;;;;-1:-1:-1;;;11405:68:0;;;;;;;:::i;:::-;22650:35:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;22638:9:::1;:47:::0;;;;;;;;22498:195::o;11501:94::-;11351:6;;-1:-1:-1;;;;;11351:6:0;331:10;11413:23;11405:68;;;;-1:-1:-1;;;11405:68:0;;;;;;;:::i;:::-;11566:21:::1;11584:1;11566:9;:21::i;:::-;11501:94::o:0;23410:124::-;11351:6;;-1:-1:-1;;;;;11351:6:0;331:10;11413:23;11405:68;;;;-1:-1:-1;;;11405:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23497:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:29;;-1:-1:-1;;23497:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23410:124::o;22700:224::-;11351:6;;-1:-1:-1;;;;;11351:6:0;331:10;11413:23;11405:68;;;;-1:-1:-1;;;11405:68:0;;;;;;;:::i;:::-;22764:14:::1;::::0;-1:-1:-1;;;22764:14:0;::::1;;;22763:15;22755:54;;;::::0;-1:-1:-1;;;22755:54:0;;10328:2:1;22755:54:0::1;::::0;::::1;10310:21:1::0;10367:2;10347:18;;;10340:30;10406:28;10386:18;;;10379:56;10452:18;;22755:54:0::1;10126:350:1::0;22755:54:0::1;22820:14;:21:::0;;-1:-1:-1;;;;22852:25:0;-1:-1:-1;;;22852:25:0;;;22904:12:::1;22888:13;:28:::0;22700:224::o;24427:127::-;24528:9;;24502:44;;-1:-1:-1;;;24502:44:0;;-1:-1:-1;;;;;24528:9:0;;;24502:44;;;10655:51:1;10722:18;;;10715:34;;;24502:25:0;;;;;;10628:18:1;;24502:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2748:104::-;2804:13;2837:7;2830:14;;;;;:::i;22297:193::-;11351:6;;-1:-1:-1;;;;;11351:6:0;331:10;11413:23;11405:68;;;;-1:-1:-1;;;11405:68:0;;;;;;;:::i;:::-;22447:35:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;22439:5:::1;:43:::0;;;;;;;;22297:193::o;24315:104::-;24381:9;;24373:38;;-1:-1:-1;;;;;24381:9:0;;;;24373:38;;;;;24401:9;;24381;24373:38;24381:9;24373:38;24401:9;24381;24373:38;;;;;;;;;;;;;;;;;;;;;24315:104;:::o;15991:410::-;331:10;16112:4;16161:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16161:34:0;;;;;;;;;;16214:35;;;;16206:85;;;;-1:-1:-1;;;16206:85:0;;11212:2:1;16206:85:0;;;11194:21:1;11251:2;11231:18;;;11224:30;11290:34;11270:18;;;11263:62;-1:-1:-1;;;11341:18:1;;;11334:35;11386:19;;16206:85:0;11010:401:1;16206:85:0;16302:67;331:10;16325:7;16334:34;16353:15;16334:16;:34;:::i;16302:67::-;-1:-1:-1;16389:4:0;;15991:410;-1:-1:-1;;;15991:410:0:o;16409:165::-;16487:4;16504:40;16514:10;16526:9;16537:6;16504:9;:40::i;23177:115::-;11351:6;;-1:-1:-1;;;;;11351:6:0;331:10;11413:23;11405:68;;;;-1:-1:-1;;;11405:68:0;;;;;;;:::i;:::-;23257:15:::1;:27:::0;;-1:-1:-1;;;;;;23257:27:0::1;-1:-1:-1::0;;;;;23257:27:0;;;::::1;::::0;;;::::1;::::0;;23177:115::o;24096:211::-;11351:6;;-1:-1:-1;;;;;11351:6:0;331:10;11413:23;11405:68;;;;-1:-1:-1;;;11405:68:0;;;;;;;:::i;:::-;24192:3:::1;24179:9;:16;;24171:73;;;::::0;-1:-1:-1;;;24171:73:0;;11618:2:1;24171:73:0::1;::::0;::::1;11600:21:1::0;11657:2;11637:18;;;11630:30;11696:34;11676:18;;;11669:62;-1:-1:-1;;;11747:18:1;;;11740:42;11799:19;;24171:73:0::1;11416:408:1::0;24171:73:0::1;24284:14;3574:2:::0;24284::::1;:14;:::i;:::-;24272:26;::::0;:9;:26:::1;:::i;:::-;24255:14;:43:::0;-1:-1:-1;24096:211:0:o;11603:192::-;11351:6;;-1:-1:-1;;;;;11351:6:0;331:10;11413:23;11405:68;;;;-1:-1:-1;;;11405:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11692:22:0;::::1;11684:73;;;::::0;-1:-1:-1;;;11684:73:0;;12031:2:1;11684:73:0::1;::::0;::::1;12013:21:1::0;12070:2;12050:18;;;12043:30;12109:34;12089:18;;;12082:62;-1:-1:-1;;;12160:18:1;;;12153:36;12206:19;;11684:73:0::1;11829:402:1::0;11684:73:0::1;11768:19;11778:8;11768:9;:19::i;:::-;11603:192:::0;:::o;9577:380::-;-1:-1:-1;;;;;9713:19:0;;9705:68;;;;-1:-1:-1;;;9705:68:0;;12438:2:1;9705:68:0;;;12420:21:1;12477:2;12457:18;;;12450:30;12516:34;12496:18;;;12489:62;-1:-1:-1;;;12567:18:1;;;12560:34;12611:19;;9705:68:0;12236:400:1;9705:68:0;-1:-1:-1;;;;;9792:21:0;;9784:68;;;;-1:-1:-1;;;9784:68:0;;12843:2:1;9784:68:0;;;12825:21:1;12882:2;12862:18;;;12855:30;12921:34;12901:18;;;12894:62;-1:-1:-1;;;12972:18:1;;;12965:32;13014:19;;9784:68:0;12641:398:1;9784:68:0;-1:-1:-1;;;;;9865:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9917:32;;3330:25:1;;;9917:32:0;;3303:18:1;9917:32:0;;;;;;;9577:380;;;:::o;16582:2723::-;16732:1;16723:6;:10;16715:64;;;;-1:-1:-1;;;16715:64:0;;13246:2:1;16715:64:0;;;13228:21:1;13285:2;13265:18;;;13258:30;13324:34;13304:18;;;13297:62;-1:-1:-1;;;13375:18:1;;;13368:39;13424:19;;16715:64:0;13044:405:1;16715:64:0;-1:-1:-1;;;;;16813:20:0;;;;;;:12;:20;;;;;;;;16812:21;:49;;;;-1:-1:-1;;;;;;16838:23:0;;;;;;:12;:23;;;;;;;;16837:24;16812:49;16790:124;;;;-1:-1:-1;;;16790:124:0;;13656:2:1;16790:124:0;;;13638:21:1;13695:2;13675:18;;;13668:30;13734:27;13714:18;;;13707:55;13779:18;;16790:124:0;13454:349:1;16790:124:0;-1:-1:-1;;;;;16932:17:0;;;;;;:9;:17;;;;;;;;16931:18;:43;;;;-1:-1:-1;;;;;;16954:20:0;;;;;;:9;:20;;;;;;;;16953:21;16931:43;16927:122;;;16999:14;;-1:-1:-1;;;16999:14:0;;;;16991:46;;;;-1:-1:-1;;;16991:46:0;;14010:2:1;16991:46:0;;;13992:21:1;14049:2;14029:18;;;14022:30;-1:-1:-1;;;14068:18:1;;;14061:49;14127:18;;16991:46:0;13808:343:1;16991:46:0;17075:4;;-1:-1:-1;;;;;17065:14:0;;;17075:4;;17065:14;:39;;;;-1:-1:-1;;;;;;17084:20:0;;;;;;:9;:20;;;;;;;;17083:21;17065:39;:59;;;;-1:-1:-1;17109:15:0;;-1:-1:-1;;;17109:15:0;;;;17108:16;17065:59;17061:233;;;17200:14;;17190:6;17167:20;17177:9;-1:-1:-1;;;;;3921:18:0;3894:7;3921:18;;;;;;;;;;;;3820:127;17167:20;:29;;;;:::i;:::-;:47;;17141:141;;;;-1:-1:-1;;;17141:141:0;;14358:2:1;17141:141:0;;;14340:21:1;;;14377:18;;;14370:30;14436:34;14416:18;;;14409:62;14488:18;;17141:141:0;14156:356:1;17141:141:0;17334:4;;-1:-1:-1;;;;;17324:14:0;;;17334:4;;17324:14;;;;:39;;-1:-1:-1;;;;;;17343:20:0;;;;;;:9;:20;;;;;;;;17342:21;17324:39;:61;;;;-1:-1:-1;;;;;;17368:17:0;;;;;;:9;:17;;;;;;;;17367:18;17324:61;:81;;;;-1:-1:-1;17390:15:0;;-1:-1:-1;;;17390:15:0;;;;17389:16;17324:81;17306:348;;;17449:4;;-1:-1:-1;;;;;17436:17:0;;;17449:4;;17436:17;17432:211;;17537:14;;17527:6;17504:20;17514:9;-1:-1:-1;;;;;3921:18:0;3894:7;3921:18;;;;;;;;;;;;3820:127;17504:20;:29;;;;:::i;:::-;:47;;17474:153;;;;-1:-1:-1;;;17474:153:0;;14358:2:1;17474:153:0;;;14340:21:1;;;14377:18;;;14370:30;14436:34;14416:18;;;14409:62;14488:18;;17474:153:0;14156:356:1;17474:153:0;17666:15;17692:14;17717:11;17739:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;17739:25:0;-1:-1:-1;;;;;17798:17:0;;17777;17798;;;:9;:17;;;;;;;;17797:18;:56;;;;-1:-1:-1;;;;;;17833:20:0;;;;;;:9;:20;;;;;;;;17832:21;17797:56;:112;;;;;17901:8;;17885:13;;:24;;;;:::i;:::-;17870:12;:39;17797:112;17997:15;;17777:132;;-1:-1:-1;;;;17997:15:0;;;;;:36;;-1:-1:-1;;;;;;18016:17:0;;;;;;:9;:17;;;;;;;;17997:36;:60;;;-1:-1:-1;;;;;;18037:20:0;;;;;;:9;:20;;;;;;;;17997:60;17993:728;;;18078:1;18072:7;;17993:728;;;18143:4;;-1:-1:-1;;;;;18130:17:0;;;18143:4;;18130:17;:34;;;;;18152:12;18151:13;18130:34;18126:595;;;18297:13;;:9;18247:19;18208;;:58;;18247:19;18208:58;:::i;:::-;:102;;;;:::i;:::-;18357:24;;;;;;;;18372:9;18357:24;;;;;;;;;;;;;;;;;;18181:129;;-1:-1:-1;18181:129:0;;-1:-1:-1;18357:24:0;-1:-1:-1;18126:595:0;;;18404:12;18399:322;;18530:9;;:5;18495:15;18460;;:50;;18495:15;18460:50;:::i;:::-;:79;;;;:::i;:::-;18586:20;;;;;;;;18601:5;18586:20;;;;;;;;;;;;;;;;;;18433:106;;-1:-1:-1;18433:106:0;;-1:-1:-1;18586:20:0;-1:-1:-1;18399:322:0;;;18628:12;18624:97;;;18667:9;;;-1:-1:-1;18667:9:0;;-1:-1:-1;18624:97:0;18759:3;18740:15;18749:6;18740;:15;:::i;:::-;18739:23;;;;:::i;:::-;18876:18;;18733:29;;-1:-1:-1;;;;18876:18:0;;;;:36;;;;-1:-1:-1;18908:4:0;;-1:-1:-1;;;;;18898:14:0;;;18908:4;;18898:14;;18876:36;18872:76;;;18914:34;18926:7;18935:12;18914:11;:34::i;:::-;18990:48;19006:6;19014:9;19025:12;19034:3;19025:6;:12;:::i;:::-;18990:15;:48::i;:::-;19053:7;;19049:249;;19125:11;;19121:164;;19157:17;19198:3;19178:16;19187:7;19178:6;:16;:::i;:::-;19177:24;;;;:::i;:::-;19157:44;;19220:49;19236:6;19252:4;19259:9;19220:15;:49::i;:::-;19138:147;19121:164;16704:2601;;;;;16582:2723;;;:::o;11803:173::-;11878:6;;;-1:-1:-1;;;;;11895:17:0;;;-1:-1:-1;;;;;;11895:17:0;;;;;;;11928:40;;11878:6;;;11895:17;11878:6;;11928:40;;11859:16;;11928:40;11848:128;11803:173;:::o;19313:1590::-;14160:15;;-1:-1:-1;;;14160:15:0;;;;14155:125;;14192:15;:22;;-1:-1:-1;;;;14192:22:0;-1:-1:-1;;;14192:22:0;;;19401:49;;19432:7:::1;19401:49;19507:4;19463:23;3921:18:::0;;;;;;;;;;;19547:23:::1;::::0;19528:42;::::1;19524:1372;;19617:1;19591:23;;:27;19587:109;;;-1:-1:-1::0;19657:23:0::1;::::0;19587:109:::1;19767:19;19789:11;:7:::0;19799:1:::1;19789:11;:::i;:::-;19767:33;;19815:32;19909:11;19869:9;:19;;;19851:15;:37;;;;:::i;:::-;19850:70;;;;:::i;:::-;19815:105:::0;-1:-1:-1;19935:14:0::1;19952:42;19815:105:::0;19952:15;:42:::1;:::i;:::-;19935:59:::0;-1:-1:-1;20036:21:0::1;20074:24;19935:59:::0;20074:16:::1;:24::i;:::-;20115:20;20138:38;20162:14:::0;20138:21:::1;:38;:::i;:::-;20115:61;;20191:19;20243:9;:19;;;20229:11;:33;;;;:::i;:::-;20213:50;::::0;:12;:50:::1;:::i;:::-;20191:72;;20278:29;20324:9;:19;;;20310:11;:33;;;;:::i;:::-;20278:65:::0;-1:-1:-1;20364:25:0;;20360:161:::1;;20444:61;20457:24;20483:21;20444:12;:61::i;:::-;20578:19:::0;;20537:20:::1;::::0;20560:15:::1;:11:::0;20574:1:::1;20560:15;:::i;:::-;:37;;;;:::i;:::-;20537:60:::0;-1:-1:-1;20616:16:0;;20612:105:::1;;20661:15;::::0;20653:48:::1;::::0;-1:-1:-1;;;;;20661:15:0::1;20688:12:::0;20653:34:::1;:48::i;:::-;20768:13;::::0;::::1;::::0;20733:14:::1;::::0;20750:15:::1;:11:::0;20764:1:::1;20750:15;:::i;:::-;:31;;;;:::i;:::-;20733:48:::0;-1:-1:-1;20800:10:0;;20796:87:::1;;20839:9;::::0;20831:36:::1;::::0;-1:-1:-1;;;;;20839:9:0::1;20860:6:::0;20831:28:::1;:36::i;:::-;19572:1324;;;;;;;;;19524:1372;19393:1510;14229:1;14245:15:::0;:23;;-1:-1:-1;;;;14245:23:0;;;19313:1590;;:::o;7952:638::-;-1:-1:-1;;;;;8092:20:0;;8084:70;;;;-1:-1:-1;;;8084:70:0;;14941:2:1;8084:70:0;;;14923:21:1;14980:2;14960:18;;;14953:30;15019:34;14999:18;;;14992:62;-1:-1:-1;;;15070:18:1;;;15063:35;15115:19;;8084:70:0;14739:401:1;8084:70:0;-1:-1:-1;;;;;8173:23:0;;8165:71;;;;-1:-1:-1;;;8165:71:0;;15347:2:1;8165:71:0;;;15329:21:1;15386:2;15366:18;;;15359:30;15425:34;15405:18;;;15398:62;-1:-1:-1;;;15476:18:1;;;15469:33;15519:19;;8165:71:0;15145:399:1;8165:71:0;-1:-1:-1;;;;;8333:17:0;;8309:21;8333:17;;;;;;;;;;;8369:23;;;;8361:74;;;;-1:-1:-1;;;8361:74:0;;15751:2:1;8361:74:0;;;15733:21:1;15790:2;15770:18;;;15763:30;15829:34;15809:18;;;15802:62;-1:-1:-1;;;15880:18:1;;;15873:36;15926:19;;8361:74:0;15549:402:1;8361:74:0;8466:22;8482:6;8466:13;:22;:::i;:::-;-1:-1:-1;;;;;8446:17:0;;;:9;:17;;;;;;;;;;;:42;;;;8499:20;;;;;;;;:30;;8523:6;;8446:9;8499:30;;8523:6;;8499:30;:::i;:::-;;;;;;;;8564:9;-1:-1:-1;;;;;8547:35:0;8556:6;-1:-1:-1;;;;;8547:35:0;;8575:6;8547:35;;;;3330:25:1;;3318:2;3303:18;;3184:177;8547:35:0;;;;;;;;8073:517;7952:638;;;:::o;20911:526::-;21053:16;;;21067:1;21053:16;;;;;;;;21029:21;;21053:16;;;;;;;;;;-1:-1:-1;21053:16:0;21029:40;;21098:4;21080;21085:1;21080:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21080:23:0;;;:7;;;;;;;;;;:23;;;;21124:6;;:13;;;-1:-1:-1;;;21124:13:0;;;;:6;;;;;:11;;:13;;;;;21080:7;;21124:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21114:4;21119:1;21114:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21114:23:0;;;:7;;;;;;;;;:23;21182:6;;21150:53;;21167:4;;21182:6;21191:11;21150:8;:53::i;:::-;21242:6;;:187;;-1:-1:-1;;;21242:187:0;;-1:-1:-1;;;;;21242:6:0;;;;:57;;:187;;21314:11;;21242:6;;21356:4;;21383;;21403:15;;21242:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20966:471;20911:526;:::o;21445:499::-;21625:6;;21593:53;;21610:4;;-1:-1:-1;;;;;21625:6:0;21634:11;21593:8;:53::i;:::-;21689:6;;21886:9;;21689:247;;-1:-1:-1;;;21689:247:0;;21754:4;21689:247;;;17538:34:1;17588:18;;;17581:34;;;21689:6:0;17631:18:1;;;17624:34;;;17674:18;;;17667:34;-1:-1:-1;;;;;21886:9:0;;;17717:19:1;;;17710:44;21910:15:0;17770:19:1;;;17763:35;21689:6:0;;;:22;;21720:9;;17472:19:1;;21689:247:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21445:499;;:::o;10721:319::-;10836:6;10811:21;:31;;10803:73;;;;-1:-1:-1;;;10803:73:0;;18322:2:1;10803:73:0;;;18304:21:1;18361:2;18341:18;;;18334:30;18400:31;18380:18;;;18373:59;18449:18;;10803:73:0;18120:353:1;10803:73:0;10890:12;10908:9;-1:-1:-1;;;;;10908:14:0;10931:6;10908:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10889:54;;;10962:7;10954:78;;;;-1:-1:-1;;;10954:78:0;;18890:2:1;10954:78:0;;;18872:21:1;18929:2;18909:18;;;18902:30;18968:34;18948:18;;;18941:62;19039:28;19019:18;;;19012:56;19085:19;;10954:78:0;18688:422:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:127::-;1415:10;1410:3;1406:20;1403:1;1396:31;1446:4;1443:1;1436:15;1470:4;1467:1;1460:15;1486:118;1572:5;1565:13;1558:21;1551:5;1548:32;1538:60;;1594:1;1591;1584:12;1609:128;1674:20;;1703:28;1674:20;1703:28;:::i;1742:1191::-;1832:6;1840;1893:2;1881:9;1872:7;1868:23;1864:32;1861:52;;;1909:1;1906;1899:12;1861:52;1949:9;1936:23;1978:18;2019:2;2011:6;2008:14;2005:34;;;2035:1;2032;2025:12;2005:34;2073:6;2062:9;2058:22;2048:32;;2118:7;2111:4;2107:2;2103:13;2099:27;2089:55;;2140:1;2137;2130:12;2089:55;2176:2;2163:16;2198:4;2221:2;2217;2214:10;2211:36;;;2227:18;;:::i;:::-;2273:2;2270:1;2266:10;2305:2;2299:9;2368:2;2364:7;2359:2;2355;2351:11;2347:25;2339:6;2335:38;2423:6;2411:10;2408:22;2403:2;2391:10;2388:18;2385:46;2382:72;;;2434:18;;:::i;:::-;2470:2;2463:22;2520:18;;;2554:15;;;;-1:-1:-1;2596:11:1;;;2592:20;;;2624:19;;;2621:39;;;2656:1;2653;2646:12;2621:39;2680:11;;;;2700:148;2716:6;2711:3;2708:15;2700:148;;;2782:23;2801:3;2782:23;:::i;:::-;2770:36;;2733:12;;;;2826;;;;2700:148;;;2867:6;-1:-1:-1;2892:35:1;;-1:-1:-1;2908:18:1;;;2892:35;:::i;:::-;2882:45;;;;;;1742:1191;;;;;:::o;2938:241::-;2994:6;3047:2;3035:9;3026:7;3022:23;3018:32;3015:52;;;3063:1;3060;3053:12;3015:52;3102:9;3089:23;3121:28;3143:5;3121:28;:::i;:::-;3168:5;2938:241;-1:-1:-1;;;2938:241:1:o;3366:247::-;3425:6;3478:2;3466:9;3457:7;3453:23;3449:32;3446:52;;;3494:1;3491;3484:12;3446:52;3533:9;3520:23;3552:31;3577:5;3552:31;:::i;3618:180::-;3677:6;3730:2;3718:9;3709:7;3705:23;3701:32;3698:52;;;3746:1;3743;3736:12;3698:52;-1:-1:-1;3769:23:1;;3618:180;-1:-1:-1;3618:180:1:o;3803:456::-;3880:6;3888;3896;3949:2;3937:9;3928:7;3924:23;3920:32;3917:52;;;3965:1;3962;3955:12;3917:52;4004:9;3991:23;4023:31;4048:5;4023:31;:::i;:::-;4073:5;-1:-1:-1;4130:2:1;4115:18;;4102:32;4143:33;4102:32;4143:33;:::i;:::-;3803:456;;4195:7;;-1:-1:-1;;;4249:2:1;4234:18;;;;4221:32;;3803:456::o;4453:382::-;4518:6;4526;4579:2;4567:9;4558:7;4554:23;4550:32;4547:52;;;4595:1;4592;4585:12;4547:52;4634:9;4621:23;4653:31;4678:5;4653:31;:::i;:::-;4703:5;-1:-1:-1;4760:2:1;4745:18;;4732:32;4773:30;4732:32;4773:30;:::i;:::-;4822:7;4812:17;;;4453:382;;;;;:::o;4840:316::-;4917:6;4925;4933;4986:2;4974:9;4965:7;4961:23;4957:32;4954:52;;;5002:1;4999;4992:12;4954:52;-1:-1:-1;;5025:23:1;;;5095:2;5080:18;;5067:32;;-1:-1:-1;5146:2:1;5131:18;;;5118:32;;4840:316;-1:-1:-1;4840:316:1:o;5369:388::-;5437:6;5445;5498:2;5486:9;5477:7;5473:23;5469:32;5466:52;;;5514:1;5511;5504:12;5466:52;5553:9;5540:23;5572:31;5597:5;5572:31;:::i;:::-;5622:5;-1:-1:-1;5679:2:1;5664:18;;5651:32;5692:33;5651:32;5692:33;:::i;5985:380::-;6064:1;6060:12;;;;6107;;;6128:61;;6182:4;6174:6;6170:17;6160:27;;6128:61;6235:2;6227:6;6224:14;6204:18;6201:38;6198:161;;6281:10;6276:3;6272:20;6269:1;6262:31;6316:4;6313:1;6306:15;6344:4;6341:1;6334:15;6198:161;;5985:380;;;:::o;6370:356::-;6572:2;6554:21;;;6591:18;;;6584:30;6650:34;6645:2;6630:18;;6623:62;6717:2;6702:18;;6370:356::o;6731:127::-;6792:10;6787:3;6783:20;6780:1;6773:31;6823:4;6820:1;6813:15;6847:4;6844:1;6837:15;6863:127;6924:10;6919:3;6915:20;6912:1;6905:31;6955:4;6952:1;6945:15;6979:4;6976:1;6969:15;6995:135;7034:3;7055:17;;;7052:43;;7075:18;;:::i;:::-;-1:-1:-1;7122:1:1;7111:13;;6995:135::o;8307:128::-;8374:9;;;8395:11;;;8392:37;;;8409:18;;:::i;8440:125::-;8505:9;;;8526:10;;;8523:36;;;8539:18;;:::i;8570:422::-;8659:1;8702:5;8659:1;8716:270;8737:7;8727:8;8724:21;8716:270;;;8796:4;8792:1;8788:6;8784:17;8778:4;8775:27;8772:53;;;8805:18;;:::i;:::-;8855:7;8845:8;8841:22;8838:55;;;8875:16;;;;8838:55;8954:22;;;;8914:15;;;;8716:270;;;8720:3;8570:422;;;;;:::o;8997:806::-;9046:5;9076:8;9066:80;;-1:-1:-1;9117:1:1;9131:5;;9066:80;9165:4;9155:76;;-1:-1:-1;9202:1:1;9216:5;;9155:76;9247:4;9265:1;9260:59;;;;9333:1;9328:130;;;;9240:218;;9260:59;9290:1;9281:10;;9304:5;;;9328:130;9365:3;9355:8;9352:17;9349:43;;;9372:18;;:::i;:::-;-1:-1:-1;;9428:1:1;9414:16;;9443:5;;9240:218;;9542:2;9532:8;9529:16;9523:3;9517:4;9514:13;9510:36;9504:2;9494:8;9491:16;9486:2;9480:4;9477:12;9473:35;9470:77;9467:159;;;-1:-1:-1;9579:19:1;;;9611:5;;9467:159;9658:34;9683:8;9677:4;9658:34;:::i;:::-;9728:6;9724:1;9720:6;9716:19;9707:7;9704:32;9701:58;;;9739:18;;:::i;:::-;9777:20;;8997:806;-1:-1:-1;;;8997:806:1:o;9808:140::-;9866:5;9895:47;9936:4;9926:8;9922:19;9916:4;9895:47;:::i;9953:168::-;10026:9;;;10057;;10074:15;;;10068:22;;10054:37;10044:71;;10095:18;;:::i;10760:245::-;10827:6;10880:2;10868:9;10859:7;10855:23;10851:32;10848:52;;;10896:1;10893;10886:12;10848:52;10928:9;10922:16;10947:28;10969:5;10947:28;:::i;14517:217::-;14557:1;14583;14573:132;;14627:10;14622:3;14618:20;14615:1;14608:31;14662:4;14659:1;14652:15;14690:4;14687:1;14680:15;14573:132;-1:-1:-1;14719:9:1;;14517:217::o;15956:251::-;16026:6;16079:2;16067:9;16058:7;16054:23;16050:32;16047:52;;;16095:1;16092;16085:12;16047:52;16127:9;16121:16;16146:31;16171:5;16146:31;:::i;16212:980::-;16474:4;16522:3;16511:9;16507:19;16553:6;16542:9;16535:25;16579:2;16617:6;16612:2;16601:9;16597:18;16590:34;16660:3;16655:2;16644:9;16640:18;16633:31;16684:6;16719;16713:13;16750:6;16742;16735:22;16788:3;16777:9;16773:19;16766:26;;16827:2;16819:6;16815:15;16801:29;;16848:1;16858:195;16872:6;16869:1;16866:13;16858:195;;;16937:13;;-1:-1:-1;;;;;16933:39:1;16921:52;;17028:15;;;;16993:12;;;;16969:1;16887:9;16858:195;;;-1:-1:-1;;;;;;;17109:32:1;;;;17104:2;17089:18;;17082:60;-1:-1:-1;;;17173:3:1;17158:19;17151:35;17070:3;16212:980;-1:-1:-1;;;16212:980:1:o;17809:306::-;17897:6;17905;17913;17966:2;17954:9;17945:7;17941:23;17937:32;17934:52;;;17982:1;17979;17972:12;17934:52;18011:9;18005:16;17995:26;;18061:2;18050:9;18046:18;18040:25;18030:35;;18105:2;18094:9;18090:18;18084:25;18074:35;;17809:306;;;;;:::o

Swarm Source

ipfs://096e9dd56869e154d109d4703740cd22f5e38219fee4f47a94914c89d8d422a9
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.