ETH Price: $3,160.84 (+1.60%)

Token

BunnyAI (BUNAI)
 

Overview

Max Total Supply

23,000,000 BUNAI

Holders

201

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
74,150.386434219315809474 BUNAI

Value
$0.00
0x2ed167fca4c9958030a53fdde9f08dccc50373ff
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Artificial Intelligence Data Analysis, Trend history, News Alerts and Security Algorithms for Smart Investing.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BunnyAI

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT 

//https://t.me/bunny_ai https://bunnyai.app

pragma solidity ^0.8.17;

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

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

        emit Transfer(sender, recipient, amount);
    }

    /** This function will be used to generate the total supply
    * while deploying the contract
    *
    * This function can never be called again after deploying contract
    */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

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

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

interface referralLogic {
    function referralBuy(address _buyer, uint256 _amount) external;
}

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

    IRouter public router;
    address public pair;
    address public referralContract;

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

    uint256 public tokenLiquidityThreshold = 23_000 * 10**18;
    uint256 public maxBuyLimit = 230_000 * 10**18;
    uint256 public maxSellLimit = 230_000 * 10**18;
    uint256 public maxWalletLimit = 230_000 * 10**18;

    uint256 public genesis_block;

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

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

    Taxes public taxes = Taxes(5, 2, 1);
    Taxes public sellTaxes = Taxes(7, 2, 1);
    Taxes public transferTaxes = Taxes(0, 0, 0);

    mapping(address => bool) public exemptFee;

    bool public referralActive = false;

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

    constructor() ERC20("BunnyAI", "BUNAI") {
        _tokengeneration(msg.sender, 23_000_000 * 10**decimals());
        exemptFee[msg.sender] = true;

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

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

    }

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

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

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

        return true;
    }

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

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

        return true;
    }

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

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

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

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

        
        //Referral logic
        if(sender == pair && referralActive) {
            referralLogic(referralContract).referralBuy(recipient, amount);
        }

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

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

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

        fee = (amount * feesum) / 100;

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

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

        }
    }

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

        if(feeswap == 0){
            return;
        }

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

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

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

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

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

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

        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the pancake pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = 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
            deadWallet,
            block.timestamp
        );
    }

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

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        require(new_amount <= 420_000 && new_amount > 0, "Swap threshold amount should be lower or euqal to 1% of tokens");
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

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

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

    function SetTransferTaxes(
        uint256 _marketing,
        uint256 _liquidity,
        uint256 _burn
    ) external onlyOwner {
        transferTaxes = Taxes(_marketing, _liquidity,  _burn);
        require((_marketing + _liquidity + _burn) <= 12, "Must keep fees at 12% or less");
    }

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

    function updateReferralContract(address _newReferralContract) external onlyOwner {
        require(_newReferralContract != address(0),"Fee Address cannot be zero address");
        referralContract = _newReferralContract;
    }

    function toggleReferral(bool status) external onlyOwner{
        referralActive = status;
    }

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

    function _toggleTrading(bool status) external onlyOwner {
        tradingEnabled = status;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0),"Fee Address cannot be zero address");
        marketingWallet = newWallet;
    }

    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 maxBuy, uint256 maxSell, uint256 maxWallet) external onlyOwner {
        require(maxBuy >= 23_000, "Cannot set max buy amount lower than 0.1%");
        require(maxSell >= 23_000, "Cannot set max sell amount lower than 0.1%");
        require(maxWallet >= 230_000, "Cannot set max wallet amount lower than 1%");
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

    function rescueBNB(uint256 weiAmount) external onlyOwner {
        payable(owner()).transfer(weiAmount);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        require(tokenAdd != address(this), "Owner can't claim contract's balance of its own tokens");
        IERC20(tokenAdd).transfer(owner(), 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":"_burn","type":"uint256"}],"name":"SetBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"SetTransferTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"_toggleTrading","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":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"referralActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"toggleReferral","outputs":[],"stateMutability":"nonpayable","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":[],"name":"transferTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newReferralContract","type":"address"}],"name":"updateReferralContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6008805462ffffff60a01b191690556904ded51e9cc7006000006009556930b453321fc603c00000600a819055600b819055600c55600e80546001600160a01b0319167342b756987dee8a21508c4e470bfefb5e36a5e4e417905560056080819052600260a0819052600160c0819052600f9290925560108190556011829055600760e08190526101008290526101208390526012556013556014556101a06040526000610140819052610160819052610180819052601581905560168190556017556019805460ff19169055348015620000d957600080fd5b506040518060400160405280600781526020016642756e6e79414960c81b8152506040518060400160405280600581526020016442554e414960d81b8152508160039081620001299190620004de565b506004620001388282620004de565b505050620001556200014f6200038f60201b60201c565b62000393565b6200017e33620001686012600a620006bf565b620001789063015ef3c0620006d7565b620003e5565b336000908152601860209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa158015620001e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020f9190620006f1565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002839190620006f1565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f79190620006f1565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260186020526040808220805460ff199081166001908117909255600e549094168352908220805484168217905561dead9091527fe3ec2099396b7359df1c566dfdf9dfdb5e22fd64a6ede9d61aa32b2f63968fd680549092161790556200071c565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200046457607f821691505b6020821081036200048557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004d957600081815260208120601f850160051c81016020861015620004b45750805b601f850160051c820191505b81811015620004d557828155600101620004c0565b5050505b505050565b81516001600160401b03811115620004fa57620004fa62000439565b62000512816200050b84546200044f565b846200048b565b602080601f8311600181146200054a5760008415620005315750858301515b600019600386901b1c1916600185901b178555620004d5565b600085815260208120601f198616915b828110156200057b578886015182559484019460019091019084016200055a565b50858210156200059a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000601578160001904821115620005e557620005e5620005aa565b80851615620005f357918102915b93841c9390800290620005c5565b509250929050565b6000826200061a57506001620006b9565b816200062957506000620006b9565b81600181146200064257600281146200064d576200066d565b6001915050620006b9565b60ff841115620006615762000661620005aa565b50506001821b620006b9565b5060208310610133831016604e8410600b841016171562000692575081810a620006b9565b6200069e8383620005c0565b8060001904821115620006b557620006b5620005aa565b0290505b92915050565b6000620006d060ff84168362000609565b9392505050565b8082028115828204841417620006b957620006b9620005aa565b6000602082840312156200070457600080fd5b81516001600160a01b0381168114620006d057600080fd5b612923806200072c6000396000f3fe60806040526004361061028c5760003560e01c806366a88d961161015a578063a8aa1b31116100c1578063dd62ed3e1161007a578063dd62ed3e146107c7578063e1b450ad1461080d578063f2fde38b1461082d578063f66895a31461084d578063f887ea401461086c578063fbe6324e1461088c57600080fd5b8063a8aa1b31146106fd578063a9059cbb1461071d578063aacebbe31461073d578063c5d32bb21461075d578063c653df6f1461078d578063d3460d8a146107a757600080fd5b80637dad19db116101135780637dad19db1461065457806385141a77146106745780638cd4426d1461068a5780638da5cb5b146106aa57806395d89b41146106c8578063a457c2d7146106dd57600080fd5b806366a88d96146105865780636aa5b37f1461059c57806370a08231146105b2578063715018a6146105e8578063728f8eea146105fd57806375f0a8741461061c57600080fd5b8063274a533c116101fe578063441b1d30116101b7578063441b1d30146104b55780634a2b3b13146104d55780634ada218b146104f55780634e736f22146105165780635331803c14610536578063652e2f041461057057600080fd5b8063274a533c14610403578063313ce56714610419578063355496ca14610435578063395093511461045557806340b28c2f1461047557806342b6fa111461049557600080fd5b80631340538f116102505780631340538f146103555780631675d8021461037557806318160ddd146103995780631c1702f3146103ae57806323b872dd146103c3578063244cffa5146103e357600080fd5b8063012ab8cb1461029857806306fdde03146102ba57806307b405bb146102e5578063095ea7b3146103055780630e375a5c1461033557600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b3366004612317565b6108ad565b005b3480156102c657600080fd5b506102cf6108fe565b6040516102dc919061233b565b60405180910390f35b3480156102f157600080fd5b506102b8610300366004612317565b610990565b34801561031157600080fd5b506103256103203660046123a9565b6109cd565b60405190151581526020016102dc565b34801561034157600080fd5b506102b86103503660046123eb565b6109e4565b34801561036157600080fd5b506102b8610370366004612317565b610a7a565b34801561038157600080fd5b5061038b60095481565b6040519081526020016102dc565b3480156103a557600080fd5b5060025461038b565b3480156103ba57600080fd5b506102b8610ac2565b3480156103cf57600080fd5b506103256103de3660046124c2565b610b61565b3480156103ef57600080fd5b506102b86103fe366004612503565b610c12565b34801561040f57600080fd5b5061038b600d5481565b34801561042557600080fd5b50604051601281526020016102dc565b34801561044157600080fd5b506102b861045036600461252f565b610cc8565b34801561046157600080fd5b506103256104703660046123a9565b610d1d565b34801561048157600080fd5b506102b8610490366004612568565b610d54565b3480156104a157600080fd5b506102b86104b0366004612596565b610dac565b3480156104c157600080fd5b506102b86104d0366004612596565b610e77565b3480156104e157600080fd5b506102b86104f0366004612503565b610edf565b34801561050157600080fd5b5060085461032590600160b01b900460ff1681565b34801561052257600080fd5b506102b8610531366004612503565b610f3d565b34801561054257600080fd5b5060155460165460175461055592919083565b604080519384526020840192909252908201526060016102dc565b34801561057c57600080fd5b5061038b600b5481565b34801561059257600080fd5b5061038b600c5481565b3480156105a857600080fd5b5061038b600a5481565b3480156105be57600080fd5b5061038b6105cd3660046125af565b6001600160a01b031660009081526020819052604090205490565b3480156105f457600080fd5b506102b8610f9b565b34801561060957600080fd5b50600f5460105460115461055592919083565b34801561062857600080fd5b50600e5461063c906001600160a01b031681565b6040516001600160a01b0390911681526020016102dc565b34801561066057600080fd5b5060085461063c906001600160a01b031681565b34801561068057600080fd5b5061063c61dead81565b34801561069657600080fd5b506102b86106a53660046123a9565b610fd1565b3480156106b657600080fd5b506005546001600160a01b031661063c565b3480156106d457600080fd5b506102cf611104565b3480156106e957600080fd5b506103256106f83660046123a9565b611113565b34801561070957600080fd5b5060075461063c906001600160a01b031681565b34801561072957600080fd5b506103256107383660046123a9565b6111ae565b34801561074957600080fd5b506102b86107583660046125af565b6111bb565b34801561076957600080fd5b506103256107783660046125af565b60186020526000908152604090205460ff1681565b34801561079957600080fd5b506019546103259060ff1681565b3480156107b357600080fd5b506102b86107c23660046125af565b61122d565b3480156107d357600080fd5b5061038b6107e2366004612568565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561081957600080fd5b506102b8610828366004612503565b61129f565b34801561083957600080fd5b506102b86108483660046125af565b611449565b34801561085957600080fd5b5060125460135460145461055592919083565b34801561087857600080fd5b5060065461063c906001600160a01b031681565b34801561089857600080fd5b5060085461032590600160a81b900460ff1681565b6005546001600160a01b031633146108e05760405162461bcd60e51b81526004016108d7906125cc565b60405180910390fd5b60088054911515600160b01b0260ff60b01b19909216919091179055565b60606003805461090d90612601565b80601f016020809104026020016040519081016040528092919081815260200182805461093990612601565b80156109865780601f1061095b57610100808354040283529160200191610986565b820191906000526020600020905b81548152906001019060200180831161096957829003601f168201915b5050505050905090565b6005546001600160a01b031633146109ba5760405162461bcd60e51b81526004016108d7906125cc565b6019805460ff1916911515919091179055565b60006109da3384846114e4565b5060015b92915050565b6005546001600160a01b03163314610a0e5760405162461bcd60e51b81526004016108d7906125cc565b60005b8251811015610a75578160186000858481518110610a3157610a3161263b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a6d81612667565b915050610a11565b505050565b6005546001600160a01b03163314610aa45760405162461bcd60e51b81526004016108d7906125cc565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610aec5760405162461bcd60e51b81526004016108d7906125cc565b600854600160b01b900460ff1615610b465760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016108d7565b6008805461ffff60a81b191661010160a81b17905543600d55565b6000610b6e848484611608565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bf35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108d7565b610c078533610c028685612680565b6114e4565b506001949350505050565b6005546001600160a01b03163314610c3c5760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052601583905560168290556017819055600c81610c708486612693565b610c7a9190612693565b1115610a755760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313225206f72206c65737300000060448201526064016108d7565b6005546001600160a01b03163314610cf25760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109da918590610c02908690612693565b6005546001600160a01b03163314610d7e5760405162461bcd60e51b81526004016108d7906125cc565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610dd65760405162461bcd60e51b81526004016108d7906125cc565b620668a08111158015610de95750600081115b610e5b5760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f203125206f6620746f6b656e73000060648201526084016108d7565b610e676012600a61278a565b610e719082612799565b60095550565b6005546001600160a01b03163314610ea15760405162461bcd60e51b81526004016108d7906125cc565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610edb573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610f095760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052600f83905560108290556011819055600c81610c708486612693565b6005546001600160a01b03163314610f675760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052601283905560138290556014819055600c81610c708486612693565b6005546001600160a01b03163314610fc55760405162461bcd60e51b81526004016108d7906125cc565b610fcf6000611c6d565b565b6005546001600160a01b03163314610ffb5760405162461bcd60e51b81526004016108d7906125cc565b306001600160a01b038316036110725760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016108d7565b816001600160a01b031663a9059cbb6110936005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af11580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7591906127b0565b60606004805461090d90612601565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108d7565b6111a43385610c028685612680565b5060019392505050565b60006109da338484611608565b6005546001600160a01b031633146111e55760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03811661120b5760405162461bcd60e51b81526004016108d7906127cd565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112575760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03811661127d5760405162461bcd60e51b81526004016108d7906127cd565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112c95760405162461bcd60e51b81526004016108d7906125cc565b6159d883101561132d5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108d7565b6159d88210156113925760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108d7565b620382708110156113f85760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b60648201526084016108d7565b6114046012600a61278a565b61140e9084612799565b600a55601261141e90600a61278a565b6114289083612799565b600b556114376012600a61278a565b6114419082612799565b600c55505050565b6005546001600160a01b031633146114735760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b0381166114d85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d7565b6114e181611c6d565b50565b6001600160a01b0383166115465760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108d7565b6001600160a01b0382166115a75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000811161166a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108d7565b6001600160a01b03831660009081526018602052604090205460ff161580156116ac57506001600160a01b03821660009081526018602052604090205460ff16155b1561170057600854600160b01b900460ff166117005760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108d7565b6007546001600160a01b03848116911614801561173657506001600160a01b03821660009081526018602052604090205460ff16155b801561174c5750600854600160a01b900460ff16155b1561181e57600a548111156117a35760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016108d7565b600c54816117c6846001600160a01b031660009081526020819052604090205490565b6117d09190612693565b111561181e5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108d7565b6007546001600160a01b0384811691161480159061185557506001600160a01b03821660009081526018602052604090205460ff16155b801561187a57506001600160a01b03831660009081526018602052604090205460ff16155b80156118905750600854600160a01b900460ff16155b1561197757600b548111156118e75760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016108d7565b6007546001600160a01b0383811691161461197757600c548161191f846001600160a01b031660009081526020819052604090205490565b6119299190612693565b11156119775760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108d7565b6007546001600160a01b038481169116148015611996575060195460ff165b15611a02576008546040516329a9b55b60e01b81526001600160a01b03848116600483015260248201849052909116906329a9b55b90604401600060405180830381600087803b1580156119e957600080fd5b505af11580156119fd573d6000803e3d6000fd5b505050505b6000806000611a2b60405180606001604052806000815260200160008152602001600081525090565b600854600160a01b900460ff1680611a5b57506001600160a01b03871660009081526018602052604090205460ff165b80611a7e57506001600160a01b03861660009081526018602052604090205460ff165b15611a8c5760009150611b95565b6007546001600160a01b0390811690871603611aed57601454601254601354611ab59190612693565b611abf9190612693565b6040805160608101825260125481526013546020820152601454918101919091529094508493509050611b95565b6007546001600160a01b0390811690881603611b4e57601154600f54601054611b169190612693565b611b209190612693565b60408051606081018252600f5481526010546020820152601154918101919091529094508493509050611b95565b601754601554601654611b619190612693565b611b6b9190612693565b60408051606081018252601554815260165460208201526017549181019190915290945084935090505b6064611ba18487612799565b611bab919061280f565b600854909250600160a81b900460ff168015611bd557506007546001600160a01b03888116911614155b15611be457611be48482611cbf565b611bf88787611bf38589612680565b611dfc565b8115611c64578315611c645760006064826040015187611c189190612799565b611c22919061280f565b90506000816064611c33888a612799565b611c3d919061280f565b611c479190612680565b9050611c54893083611dfc565b611c618961dead84611dfc565b50505b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600854600160a01b900460ff16610edb576008805460ff60a01b1916600160a01b1790558115611deb57306000908152602081905260409020546009548110611de95760016009541115611d1257506009545b6000611d1f846002612799565b9050600081846020015184611d349190612799565b611d3e919061280f565b90506000611d4c8285612680565b905047611d5882611fd4565b6000611d648247612680565b90506000876020015186611d789190612680565b611d82908361280f565b90506000886020015182611d969190612799565b90508015611da857611da8868261212e565b8851600090611db8846002612799565b611dc29190612799565b90508015611de057600e54611de0906001600160a01b0316826121e0565b50505050505050505b505b6008805460ff60a01b191690555050565b6001600160a01b038316611e605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108d7565b6001600160a01b038216611ec25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108d7565b6001600160a01b03831660009081526020819052604090205481811015611f3a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108d7565b611f448282612680565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611f7a908490612693565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fc691815260200190565b60405180910390a350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120095761200961263b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612062573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120869190612831565b816001815181106120995761209961263b565b6001600160a01b0392831660209182029290920101526006546120bf91309116846114e4565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906120f890859060009086903090429060040161284e565b600060405180830381600087803b15801561211257600080fd5b505af1158015612126573d6000803e3d6000fd5b505050505050565b6006546121469030906001600160a01b0316846114e4565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156121b4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121d991906128bf565b5050505050565b804710156122305760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108d7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461227d576040519150601f19603f3d011682016040523d82523d6000602084013e612282565b606091505b5050905080610a755760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108d7565b80151581146114e157600080fd5b8035612312816122f9565b919050565b60006020828403121561232957600080fd5b8135612334816122f9565b9392505050565b600060208083528351808285015260005b818110156123685785810183015185820160400152820161234c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114e157600080fd5b803561231281612389565b600080604083850312156123bc57600080fd5b82356123c781612389565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156123fe57600080fd5b823567ffffffffffffffff8082111561241657600080fd5b818501915085601f83011261242a57600080fd5b813560208282111561243e5761243e6123d5565b8160051b604051601f19603f83011681018181108682111715612463576124636123d5565b60405292835281830193508481018201928984111561248157600080fd5b948201945b838610156124a6576124978661239e565b85529482019493820193612486565b96506124b59050878201612307565b9450505050509250929050565b6000806000606084860312156124d757600080fd5b83356124e281612389565b925060208401356124f281612389565b929592945050506040919091013590565b60008060006060848603121561251857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561254257600080fd5b823561254d81612389565b9150602083013561255d816122f9565b809150509250929050565b6000806040838503121561257b57600080fd5b823561258681612389565b9150602083013561255d81612389565b6000602082840312156125a857600080fd5b5035919050565b6000602082840312156125c157600080fd5b813561233481612389565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061261557607f821691505b60208210810361263557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161267957612679612651565b5060010190565b818103818111156109de576109de612651565b808201808211156109de576109de612651565b600181815b808511156126e15781600019048211156126c7576126c7612651565b808516156126d457918102915b93841c93908002906126ab565b509250929050565b6000826126f8575060016109de565b81612705575060006109de565b816001811461271b576002811461272557612741565b60019150506109de565b60ff84111561273657612736612651565b50506001821b6109de565b5060208310610133831016604e8410600b8410161715612764575081810a6109de565b61276e83836126a6565b806000190482111561278257612782612651565b029392505050565b600061233460ff8416836126e9565b80820281158282048414176109de576109de612651565b6000602082840312156127c257600080fd5b8151612334816122f9565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b60008261282c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561284357600080fd5b815161233481612389565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561289e5784516001600160a01b031683529383019391830191600101612879565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156128d457600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220532bc5b72abfa5dd96f6654f4ac4c63e443ce8148289976d77d288eabf57ae2164736f6c63430008110033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c806366a88d961161015a578063a8aa1b31116100c1578063dd62ed3e1161007a578063dd62ed3e146107c7578063e1b450ad1461080d578063f2fde38b1461082d578063f66895a31461084d578063f887ea401461086c578063fbe6324e1461088c57600080fd5b8063a8aa1b31146106fd578063a9059cbb1461071d578063aacebbe31461073d578063c5d32bb21461075d578063c653df6f1461078d578063d3460d8a146107a757600080fd5b80637dad19db116101135780637dad19db1461065457806385141a77146106745780638cd4426d1461068a5780638da5cb5b146106aa57806395d89b41146106c8578063a457c2d7146106dd57600080fd5b806366a88d96146105865780636aa5b37f1461059c57806370a08231146105b2578063715018a6146105e8578063728f8eea146105fd57806375f0a8741461061c57600080fd5b8063274a533c116101fe578063441b1d30116101b7578063441b1d30146104b55780634a2b3b13146104d55780634ada218b146104f55780634e736f22146105165780635331803c14610536578063652e2f041461057057600080fd5b8063274a533c14610403578063313ce56714610419578063355496ca14610435578063395093511461045557806340b28c2f1461047557806342b6fa111461049557600080fd5b80631340538f116102505780631340538f146103555780631675d8021461037557806318160ddd146103995780631c1702f3146103ae57806323b872dd146103c3578063244cffa5146103e357600080fd5b8063012ab8cb1461029857806306fdde03146102ba57806307b405bb146102e5578063095ea7b3146103055780630e375a5c1461033557600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b3366004612317565b6108ad565b005b3480156102c657600080fd5b506102cf6108fe565b6040516102dc919061233b565b60405180910390f35b3480156102f157600080fd5b506102b8610300366004612317565b610990565b34801561031157600080fd5b506103256103203660046123a9565b6109cd565b60405190151581526020016102dc565b34801561034157600080fd5b506102b86103503660046123eb565b6109e4565b34801561036157600080fd5b506102b8610370366004612317565b610a7a565b34801561038157600080fd5b5061038b60095481565b6040519081526020016102dc565b3480156103a557600080fd5b5060025461038b565b3480156103ba57600080fd5b506102b8610ac2565b3480156103cf57600080fd5b506103256103de3660046124c2565b610b61565b3480156103ef57600080fd5b506102b86103fe366004612503565b610c12565b34801561040f57600080fd5b5061038b600d5481565b34801561042557600080fd5b50604051601281526020016102dc565b34801561044157600080fd5b506102b861045036600461252f565b610cc8565b34801561046157600080fd5b506103256104703660046123a9565b610d1d565b34801561048157600080fd5b506102b8610490366004612568565b610d54565b3480156104a157600080fd5b506102b86104b0366004612596565b610dac565b3480156104c157600080fd5b506102b86104d0366004612596565b610e77565b3480156104e157600080fd5b506102b86104f0366004612503565b610edf565b34801561050157600080fd5b5060085461032590600160b01b900460ff1681565b34801561052257600080fd5b506102b8610531366004612503565b610f3d565b34801561054257600080fd5b5060155460165460175461055592919083565b604080519384526020840192909252908201526060016102dc565b34801561057c57600080fd5b5061038b600b5481565b34801561059257600080fd5b5061038b600c5481565b3480156105a857600080fd5b5061038b600a5481565b3480156105be57600080fd5b5061038b6105cd3660046125af565b6001600160a01b031660009081526020819052604090205490565b3480156105f457600080fd5b506102b8610f9b565b34801561060957600080fd5b50600f5460105460115461055592919083565b34801561062857600080fd5b50600e5461063c906001600160a01b031681565b6040516001600160a01b0390911681526020016102dc565b34801561066057600080fd5b5060085461063c906001600160a01b031681565b34801561068057600080fd5b5061063c61dead81565b34801561069657600080fd5b506102b86106a53660046123a9565b610fd1565b3480156106b657600080fd5b506005546001600160a01b031661063c565b3480156106d457600080fd5b506102cf611104565b3480156106e957600080fd5b506103256106f83660046123a9565b611113565b34801561070957600080fd5b5060075461063c906001600160a01b031681565b34801561072957600080fd5b506103256107383660046123a9565b6111ae565b34801561074957600080fd5b506102b86107583660046125af565b6111bb565b34801561076957600080fd5b506103256107783660046125af565b60186020526000908152604090205460ff1681565b34801561079957600080fd5b506019546103259060ff1681565b3480156107b357600080fd5b506102b86107c23660046125af565b61122d565b3480156107d357600080fd5b5061038b6107e2366004612568565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561081957600080fd5b506102b8610828366004612503565b61129f565b34801561083957600080fd5b506102b86108483660046125af565b611449565b34801561085957600080fd5b5060125460135460145461055592919083565b34801561087857600080fd5b5060065461063c906001600160a01b031681565b34801561089857600080fd5b5060085461032590600160a81b900460ff1681565b6005546001600160a01b031633146108e05760405162461bcd60e51b81526004016108d7906125cc565b60405180910390fd5b60088054911515600160b01b0260ff60b01b19909216919091179055565b60606003805461090d90612601565b80601f016020809104026020016040519081016040528092919081815260200182805461093990612601565b80156109865780601f1061095b57610100808354040283529160200191610986565b820191906000526020600020905b81548152906001019060200180831161096957829003601f168201915b5050505050905090565b6005546001600160a01b031633146109ba5760405162461bcd60e51b81526004016108d7906125cc565b6019805460ff1916911515919091179055565b60006109da3384846114e4565b5060015b92915050565b6005546001600160a01b03163314610a0e5760405162461bcd60e51b81526004016108d7906125cc565b60005b8251811015610a75578160186000858481518110610a3157610a3161263b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a6d81612667565b915050610a11565b505050565b6005546001600160a01b03163314610aa45760405162461bcd60e51b81526004016108d7906125cc565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610aec5760405162461bcd60e51b81526004016108d7906125cc565b600854600160b01b900460ff1615610b465760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016108d7565b6008805461ffff60a81b191661010160a81b17905543600d55565b6000610b6e848484611608565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bf35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108d7565b610c078533610c028685612680565b6114e4565b506001949350505050565b6005546001600160a01b03163314610c3c5760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052601583905560168290556017819055600c81610c708486612693565b610c7a9190612693565b1115610a755760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313225206f72206c65737300000060448201526064016108d7565b6005546001600160a01b03163314610cf25760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109da918590610c02908690612693565b6005546001600160a01b03163314610d7e5760405162461bcd60e51b81526004016108d7906125cc565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610dd65760405162461bcd60e51b81526004016108d7906125cc565b620668a08111158015610de95750600081115b610e5b5760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f203125206f6620746f6b656e73000060648201526084016108d7565b610e676012600a61278a565b610e719082612799565b60095550565b6005546001600160a01b03163314610ea15760405162461bcd60e51b81526004016108d7906125cc565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610edb573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610f095760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052600f83905560108290556011819055600c81610c708486612693565b6005546001600160a01b03163314610f675760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052601283905560138290556014819055600c81610c708486612693565b6005546001600160a01b03163314610fc55760405162461bcd60e51b81526004016108d7906125cc565b610fcf6000611c6d565b565b6005546001600160a01b03163314610ffb5760405162461bcd60e51b81526004016108d7906125cc565b306001600160a01b038316036110725760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016108d7565b816001600160a01b031663a9059cbb6110936005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af11580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7591906127b0565b60606004805461090d90612601565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108d7565b6111a43385610c028685612680565b5060019392505050565b60006109da338484611608565b6005546001600160a01b031633146111e55760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03811661120b5760405162461bcd60e51b81526004016108d7906127cd565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112575760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03811661127d5760405162461bcd60e51b81526004016108d7906127cd565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112c95760405162461bcd60e51b81526004016108d7906125cc565b6159d883101561132d5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108d7565b6159d88210156113925760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108d7565b620382708110156113f85760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b60648201526084016108d7565b6114046012600a61278a565b61140e9084612799565b600a55601261141e90600a61278a565b6114289083612799565b600b556114376012600a61278a565b6114419082612799565b600c55505050565b6005546001600160a01b031633146114735760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b0381166114d85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d7565b6114e181611c6d565b50565b6001600160a01b0383166115465760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108d7565b6001600160a01b0382166115a75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000811161166a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108d7565b6001600160a01b03831660009081526018602052604090205460ff161580156116ac57506001600160a01b03821660009081526018602052604090205460ff16155b1561170057600854600160b01b900460ff166117005760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108d7565b6007546001600160a01b03848116911614801561173657506001600160a01b03821660009081526018602052604090205460ff16155b801561174c5750600854600160a01b900460ff16155b1561181e57600a548111156117a35760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016108d7565b600c54816117c6846001600160a01b031660009081526020819052604090205490565b6117d09190612693565b111561181e5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108d7565b6007546001600160a01b0384811691161480159061185557506001600160a01b03821660009081526018602052604090205460ff16155b801561187a57506001600160a01b03831660009081526018602052604090205460ff16155b80156118905750600854600160a01b900460ff16155b1561197757600b548111156118e75760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016108d7565b6007546001600160a01b0383811691161461197757600c548161191f846001600160a01b031660009081526020819052604090205490565b6119299190612693565b11156119775760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108d7565b6007546001600160a01b038481169116148015611996575060195460ff165b15611a02576008546040516329a9b55b60e01b81526001600160a01b03848116600483015260248201849052909116906329a9b55b90604401600060405180830381600087803b1580156119e957600080fd5b505af11580156119fd573d6000803e3d6000fd5b505050505b6000806000611a2b60405180606001604052806000815260200160008152602001600081525090565b600854600160a01b900460ff1680611a5b57506001600160a01b03871660009081526018602052604090205460ff165b80611a7e57506001600160a01b03861660009081526018602052604090205460ff165b15611a8c5760009150611b95565b6007546001600160a01b0390811690871603611aed57601454601254601354611ab59190612693565b611abf9190612693565b6040805160608101825260125481526013546020820152601454918101919091529094508493509050611b95565b6007546001600160a01b0390811690881603611b4e57601154600f54601054611b169190612693565b611b209190612693565b60408051606081018252600f5481526010546020820152601154918101919091529094508493509050611b95565b601754601554601654611b619190612693565b611b6b9190612693565b60408051606081018252601554815260165460208201526017549181019190915290945084935090505b6064611ba18487612799565b611bab919061280f565b600854909250600160a81b900460ff168015611bd557506007546001600160a01b03888116911614155b15611be457611be48482611cbf565b611bf88787611bf38589612680565b611dfc565b8115611c64578315611c645760006064826040015187611c189190612799565b611c22919061280f565b90506000816064611c33888a612799565b611c3d919061280f565b611c479190612680565b9050611c54893083611dfc565b611c618961dead84611dfc565b50505b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600854600160a01b900460ff16610edb576008805460ff60a01b1916600160a01b1790558115611deb57306000908152602081905260409020546009548110611de95760016009541115611d1257506009545b6000611d1f846002612799565b9050600081846020015184611d349190612799565b611d3e919061280f565b90506000611d4c8285612680565b905047611d5882611fd4565b6000611d648247612680565b90506000876020015186611d789190612680565b611d82908361280f565b90506000886020015182611d969190612799565b90508015611da857611da8868261212e565b8851600090611db8846002612799565b611dc29190612799565b90508015611de057600e54611de0906001600160a01b0316826121e0565b50505050505050505b505b6008805460ff60a01b191690555050565b6001600160a01b038316611e605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108d7565b6001600160a01b038216611ec25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108d7565b6001600160a01b03831660009081526020819052604090205481811015611f3a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108d7565b611f448282612680565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611f7a908490612693565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fc691815260200190565b60405180910390a350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120095761200961263b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612062573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120869190612831565b816001815181106120995761209961263b565b6001600160a01b0392831660209182029290920101526006546120bf91309116846114e4565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906120f890859060009086903090429060040161284e565b600060405180830381600087803b15801561211257600080fd5b505af1158015612126573d6000803e3d6000fd5b505050505050565b6006546121469030906001600160a01b0316846114e4565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156121b4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121d991906128bf565b5050505050565b804710156122305760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108d7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461227d576040519150601f19603f3d011682016040523d82523d6000602084013e612282565b606091505b5050905080610a755760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108d7565b80151581146114e157600080fd5b8035612312816122f9565b919050565b60006020828403121561232957600080fd5b8135612334816122f9565b9392505050565b600060208083528351808285015260005b818110156123685785810183015185820160400152820161234c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114e157600080fd5b803561231281612389565b600080604083850312156123bc57600080fd5b82356123c781612389565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156123fe57600080fd5b823567ffffffffffffffff8082111561241657600080fd5b818501915085601f83011261242a57600080fd5b813560208282111561243e5761243e6123d5565b8160051b604051601f19603f83011681018181108682111715612463576124636123d5565b60405292835281830193508481018201928984111561248157600080fd5b948201945b838610156124a6576124978661239e565b85529482019493820193612486565b96506124b59050878201612307565b9450505050509250929050565b6000806000606084860312156124d757600080fd5b83356124e281612389565b925060208401356124f281612389565b929592945050506040919091013590565b60008060006060848603121561251857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561254257600080fd5b823561254d81612389565b9150602083013561255d816122f9565b809150509250929050565b6000806040838503121561257b57600080fd5b823561258681612389565b9150602083013561255d81612389565b6000602082840312156125a857600080fd5b5035919050565b6000602082840312156125c157600080fd5b813561233481612389565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061261557607f821691505b60208210810361263557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161267957612679612651565b5060010190565b818103818111156109de576109de612651565b808201808211156109de576109de612651565b600181815b808511156126e15781600019048211156126c7576126c7612651565b808516156126d457918102915b93841c93908002906126ab565b509250929050565b6000826126f8575060016109de565b81612705575060006109de565b816001811461271b576002811461272557612741565b60019150506109de565b60ff84111561273657612736612651565b50506001821b6109de565b5060208310610133831016604e8410600b8410161715612764575081810a6109de565b61276e83836126a6565b806000190482111561278257612782612651565b029392505050565b600061233460ff8416836126e9565b80820281158282048414176109de576109de612651565b6000602082840312156127c257600080fd5b8151612334816122f9565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b60008261282c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561284357600080fd5b815161233481612389565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561289e5784516001600160a01b031683529383019391830191600101612879565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156128d457600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220532bc5b72abfa5dd96f6654f4ac4c63e443ce8148289976d77d288eabf57ae2164736f6c63430008110033

Deployed Bytecode Sourcemap

11891:12432:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22744:98;;;;;;;;;;-1:-1:-1;22744:98:0;;;;;:::i;:::-;;:::i;:::-;;2421:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22410:97;;;;;;;;;;-1:-1:-1;22410:97:0;;;;;:::i;:::-;;:::i;13647:161::-;;;;;;;;;;-1:-1:-1;13647:161:0;;;;;:::i;:::-;;:::i;:::-;;;1829:14:1;;1822:22;1804:41;;1792:2;1777:18;13647:161:0;1664:187:1;23181:202:0;;;;;;;;;;-1:-1:-1;23181:202:0;;;;;:::i;:::-;;:::i;20641:152::-;;;;;;;;;;-1:-1:-1;20641:152:0;;;;;:::i;:::-;;:::i;12195:56::-;;;;;;;;;;;;;;;;;;;3330:25:1;;;3318:2;3303:18;12195:56:0;3184:177:1;3541:108:0;;;;;;;;;;-1:-1:-1;3629:12:0;;3541:108;;22515:221;;;;;;;;;;;;;:::i;13816:448::-;;;;;;;;;;-1:-1:-1;13816:448:0;;;;;:::i;:::-;;:::i;21703:298::-;;;;;;;;;;-1:-1:-1;21703:298:0;;;;;:::i;:::-;;:::i;12420:28::-;;;;;;;;;;;;;;;;3383:93;;;;;;;;;;-1:-1:-1;3383:93:0;;3466:2;4290:36:1;;4278:2;4263:18;3383:93:0;4148:184:1;23053:120:0;;;;;;;;;;-1:-1:-1;23053:120:0;;;;;:::i;:::-;;:::i;14272:248::-;;;;;;;;;;-1:-1:-1;14272:248:0;;;;;:::i;:::-;;:::i;22009:155::-;;;;;;;;;;-1:-1:-1;22009:155:0;;;;;:::i;:::-;;:::i;20801:302::-;;;;;;;;;;-1:-1:-1;20801:302:0;;;;;:::i;:::-;;:::i;23907:112::-;;;;;;;;;;-1:-1:-1;23907:112:0;;;;;:::i;:::-;;:::i;21111:286::-;;;;;;;;;;-1:-1:-1;21111:286:0;;;;;:::i;:::-;;:::i;12152:34::-;;;;;;;;;;-1:-1:-1;12152:34:0;;;;-1:-1:-1;;;12152:34:0;;;;;;21405:290;;;;;;;;;;-1:-1:-1;21405:290:0;;;;;:::i;:::-;;:::i;12823:43::-;;;;;;;;;;-1:-1:-1;12823:43:0;;;;;;;;;;;;;;;;5504:25:1;;;5560:2;5545:18;;5538:34;;;;5588:18;;;5581:34;5492:2;5477:18;12823:43:0;5302:319:1;12310:46:0;;;;;;;;;;;;;;;;12363:48;;;;;;;;;;;;;;;;12258:45;;;;;;;;;;;;;;;;3712:127;;;;;;;;;;-1:-1:-1;3712:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3813:18:0;3786:7;3813:18;;;;;;;;;;;;3712:127;10453:94;;;;;;;;;;;;;:::i;12735:35::-;;;;;;;;;;-1:-1:-1;12735:35:0;;;;;;;;;;;;12457:75;;;;;;;;;;-1:-1:-1;12457:75:0;;;;-1:-1:-1;;;;;12457:75:0;;;;;;-1:-1:-1;;;;;6042:32:1;;;6024:51;;6012:2;5997:18;12457:75:0;5878:203:1;12029:31:0;;;;;;;;;;-1:-1:-1;12029:31:0;;;;-1:-1:-1;;;;;12029:31:0;;;12539:79;;;;;;;;;;;;12576:42;12539:79;;24027:238;;;;;;;;;;-1:-1:-1;24027:238:0;;;;;:::i;:::-;;:::i;10230:87::-;;;;;;;;;;-1:-1:-1;10303:6:0;;-1:-1:-1;;;;;10303:6:0;10230:87;;2640:104;;;;;;;;;;;;;:::i;14528:410::-;;;;;;;;;;-1:-1:-1;14528:410:0;;;;;:::i;:::-;;:::i;12003:19::-;;;;;;;;;;-1:-1:-1;12003:19:0;;;;-1:-1:-1;;;;;12003:19:0;;;14946:165;;;;;;;;;;-1:-1:-1;14946:165:0;;;;;:::i;:::-;;:::i;22850:195::-;;;;;;;;;;-1:-1:-1;22850:195:0;;;;;:::i;:::-;;:::i;12875:41::-;;;;;;;;;;-1:-1:-1;12875:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12925:34;;;;;;;;;;-1:-1:-1;12925:34:0;;;;;;;;22172:230;;;;;;;;;;-1:-1:-1;22172:230:0;;;;;:::i;:::-;;:::i;4331:201::-;;;;;;;;;;-1:-1:-1;4331:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4497:18:0;;;4465:7;4497:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4331:201;23391:508;;;;;;;;;;-1:-1:-1;23391:508:0;;;;;:::i;:::-;;:::i;10555:192::-;;;;;;;;;;-1:-1:-1;10555:192:0;;;;;:::i;:::-;;:::i;12777:39::-;;;;;;;;;;-1:-1:-1;12777:39:0;;;;;;;;;;;;11975:21;;;;;;;;;;-1:-1:-1;11975:21:0;;;;-1:-1:-1;;;;;11975:21:0;;;12107:38;;;;;;;;;;-1:-1:-1;12107:38:0;;;;-1:-1:-1;;;12107:38:0;;;;;;22744:98;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;;;;;;;;;22811:14:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;22811:23:0::1;-1:-1:-1::0;;;;22811:23:0;;::::1;::::0;;;::::1;::::0;;22744:98::o;2421:100::-;2475:13;2508:5;2501:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2421:100;:::o;22410:97::-;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;22476:14:::1;:23:::0;;-1:-1:-1;;22476:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22410:97::o;13647:161::-;13722:4;13739:39;223:10;13762:7;13771:6;13739:8;:39::i;:::-;-1:-1:-1;13796:4:0;13647:161;;;;;:::o;23181:202::-;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;23278:9:::1;23273:103;23297:8;:15;23293:1;:19;23273:103;;;23359:5;23334:9;:22;23344:8;23353:1;23344:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23334:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23334:22:0;:30;;-1:-1:-1;;23334:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23314:3;::::1;::::0;::::1;:::i;:::-;;;;23273:103;;;;23181:202:::0;;:::o;20641:152::-;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;20759:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;20759:26:0::1;-1:-1:-1::0;;;;20759:26:0;;::::1;::::0;;;::::1;::::0;;20641:152::o;22515:221::-;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;22578:14:::1;::::0;-1:-1:-1;;;22578:14:0;::::1;;;22577:15;22569:52;;;::::0;-1:-1:-1;;;22569:52:0;;7661:2:1;22569:52:0::1;::::0;::::1;7643:21:1::0;7700:2;7680:18;;;7673:30;7739:26;7719:18;;;7712:54;7783:18;;22569:52:0::1;7459:348:1::0;22569:52:0::1;22632:14;:21:::0;;-1:-1:-1;;;;22664:25:0;-1:-1:-1;;;22664:25:0;;;22716:12:::1;22700:13;:28:::0;22515:221::o;13816:448::-;13948:4;13965:36;13975:6;13983:9;13994:6;13965:9;:36::i;:::-;-1:-1:-1;;;;;14041:19:0;;14014:24;14041:19;;;:11;:19;;;;;;;;223:10;14041:33;;;;;;;;14093:26;;;;14085:79;;;;-1:-1:-1;;;14085:79:0;;8014:2:1;14085:79:0;;;7996:21:1;8053:2;8033:18;;;8026:30;8092:34;8072:18;;;8065:62;-1:-1:-1;;;8143:18:1;;;8136:38;8191:19;;14085:79:0;7812:404:1;14085:79:0;14175:57;14184:6;223:10;14206:25;14225:6;14206:16;:25;:::i;:::-;14175:8;:57::i;:::-;-1:-1:-1;14252:4:0;;13816:448;-1:-1:-1;;;;13816:448:0:o;21703:298::-;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;21864:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;21848:13:::1;:53:::0;;;;;;;;;;;21957:2:::1;21895:5:::0;21921:23:::1;21882:10:::0;21870;21921:23:::1;:::i;:::-;:31;;;;:::i;:::-;21920:39;;21912:81;;;::::0;-1:-1:-1;;;21912:81:0;;8686:2:1;21912:81:0::1;::::0;::::1;8668:21:1::0;8725:2;8705:18;;;8698:30;8764:31;8744:18;;;8737:59;8813:18;;21912:81:0::1;8484:353:1::0;23053:120:0;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23138:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;23138:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23053:120::o;14272:248::-;223:10;14388:4;14442:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14442:34:0;;;;;;;;;;14388:4;;14410:80;;14433:7;;14442:47;;14479:10;;14442:47;:::i;22009:155::-;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;22104:6:::1;:27:::0;;-1:-1:-1;;;;;22104:27:0;;::::1;-1:-1:-1::0;;;;;;22104:27:0;;::::1;;::::0;;;22142:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;22009:155::o;20801:302::-;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;20939:7:::1;20925:10;:21;;:39;;;;;20963:1;20950:10;:14;20925:39;20917:114;;;::::0;-1:-1:-1;;;20917:114:0;;9044:2:1;20917:114:0::1;::::0;::::1;9026:21:1::0;9083:2;9063:18;;;9056:30;9122:34;9102:18;;;9095:62;9193:32;9173:18;;;9166:60;9243:19;;20917:114:0::1;8842:426:1::0;20917:114:0::1;21081:14;3466:2:::0;21081::::1;:14;:::i;:::-;21068:27;::::0;:10;:27:::1;:::i;:::-;21042:23;:53:::0;-1:-1:-1;20801:302:0:o;23907:112::-;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;10303:6;;23975:36:::1;::::0;-1:-1:-1;;;;;10303:6:0;;;;23975:36;::::1;;;::::0;24001:9;;23975:36:::1;::::0;;;24001:9;10303:6;23975:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23907:112:::0;:::o;21111:286::-;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;21259:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;21251:5:::1;:45:::0;;;;;;;;;;;21353:2:::1;21290:5:::0;21316:23:::1;21277:10:::0;21265;21316:23:::1;:::i;21405:290::-:0;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;21558:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;21546:9:::1;:49:::0;;;;;;;;;;;21651:2:::1;21589:5:::0;21615:23:::1;21576:10:::0;21564;21615:23:::1;:::i;10453:94::-:0;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;10518:21:::1;10536:1;10518:9;:21::i;:::-;10453:94::o:0;24027:238::-;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;24140:4:::1;-1:-1:-1::0;;;;;24120:25:0;::::1;::::0;24112:92:::1;;;::::0;-1:-1:-1;;;24112:92:0;;11031:2:1;24112:92:0::1;::::0;::::1;11013:21:1::0;11070:2;11050:18;;;11043:30;11109:34;11089:18;;;11082:62;-1:-1:-1;;;11160:18:1;;;11153:52;11222:19;;24112:92:0::1;10829:418:1::0;24112:92:0::1;24222:8;-1:-1:-1::0;;;;;24215:25:0::1;;24241:7;10303:6:::0;;-1:-1:-1;;;;;10303:6:0;;10230:87;24241:7:::1;24215:42;::::0;-1:-1:-1;;;;;;24215:42:0::1;::::0;;;;;;-1:-1:-1;;;;;11444:32:1;;;24215:42:0::1;::::0;::::1;11426:51:1::0;11493:18;;;11486:34;;;11399:18;;24215:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2640:104::-:0;2696:13;2729:7;2722:14;;;;;:::i;14528:410::-;223:10;14649:4;14698:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14698:34:0;;;;;;;;;;14751:35;;;;14743:85;;;;-1:-1:-1;;;14743:85:0;;11983:2:1;14743:85:0;;;11965:21:1;12022:2;12002:18;;;11995:30;12061:34;12041:18;;;12034:62;-1:-1:-1;;;12112:18:1;;;12105:35;12157:19;;14743:85:0;11781:401:1;14743:85:0;14839:67;223:10;14862:7;14871:34;14890:15;14871:16;:34;:::i;14839:67::-;-1:-1:-1;14926:4:0;;14528:410;-1:-1:-1;;;14528:410:0:o;14946:165::-;15024:4;15041:40;15051:10;15063:9;15074:6;15041:9;:40::i;22850:195::-;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22938:23:0;::::1;22930:69;;;;-1:-1:-1::0;;;22930:69:0::1;;;;;;;:::i;:::-;23010:15;:27:::0;;-1:-1:-1;;;;;;23010:27:0::1;-1:-1:-1::0;;;;;23010:27:0;;;::::1;::::0;;;::::1;::::0;;22850:195::o;22172:230::-;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22272:34:0;::::1;22264:80;;;;-1:-1:-1::0;;;22264:80:0::1;;;;;;;:::i;:::-;22355:16;:39:::0;;-1:-1:-1;;;;;;22355:39:0::1;-1:-1:-1::0;;;;;22355:39:0;;;::::1;::::0;;;::::1;::::0;;22172:230::o;23391:508::-;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;23517:6:::1;23507;:16;;23499:70;;;::::0;-1:-1:-1;;;23499:70:0;;12792:2:1;23499:70:0::1;::::0;::::1;12774:21:1::0;12831:2;12811:18;;;12804:30;12870:34;12850:18;;;12843:62;-1:-1:-1;;;12921:18:1;;;12914:39;12970:19;;23499:70:0::1;12590:405:1::0;23499:70:0::1;23599:6;23588:7;:17;;23580:72;;;::::0;-1:-1:-1;;;23580:72:0;;13202:2:1;23580:72:0::1;::::0;::::1;13184:21:1::0;13241:2;13221:18;;;13214:30;13280:34;13260:18;;;13253:62;-1:-1:-1;;;13331:18:1;;;13324:40;13381:19;;23580:72:0::1;13000:406:1::0;23580:72:0::1;23684:7;23671:9;:20;;23663:75;;;::::0;-1:-1:-1;;;23663:75:0;;13613:2:1;23663:75:0::1;::::0;::::1;13595:21:1::0;13652:2;13632:18;;;13625:30;13691:34;13671:18;;;13664:62;-1:-1:-1;;;13742:18:1;;;13735:40;13792:19;;23663:75:0::1;13411:406:1::0;23663:75:0::1;23772:14;3466:2:::0;23772::::1;:14;:::i;:::-;23763:23;::::0;:6;:23:::1;:::i;:::-;23749:11;:37:::0;3466:2;23822:14:::1;::::0;:2:::1;:14;:::i;:::-;23812:24;::::0;:7;:24:::1;:::i;:::-;23797:12;:39:::0;23876:14:::1;3466:2:::0;23876::::1;:14;:::i;:::-;23864:26;::::0;:9;:26:::1;:::i;:::-;23847:14;:43:::0;-1:-1:-1;;;23391:508:0:o;10555:192::-;10303:6;;-1:-1:-1;;;;;10303:6:0;223:10;10365:23;10357:68;;;;-1:-1:-1;;;10357:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10644:22:0;::::1;10636:73;;;::::0;-1:-1:-1;;;10636:73:0;;14024:2:1;10636:73:0::1;::::0;::::1;14006:21:1::0;14063:2;14043:18;;;14036:30;14102:34;14082:18;;;14075:62;-1:-1:-1;;;14153:18:1;;;14146:36;14199:19;;10636:73:0::1;13822:402:1::0;10636:73:0::1;10720:19;10730:8;10720:9;:19::i;:::-;10555:192:::0;:::o;9263:380::-;-1:-1:-1;;;;;9399:19:0;;9391:68;;;;-1:-1:-1;;;9391:68:0;;14431:2:1;9391:68:0;;;14413:21:1;14470:2;14450:18;;;14443:30;14509:34;14489:18;;;14482:62;-1:-1:-1;;;14560:18:1;;;14553:34;14604:19;;9391:68:0;14229:400:1;9391:68:0;-1:-1:-1;;;;;9478:21:0;;9470:68;;;;-1:-1:-1;;;9470:68:0;;14836:2:1;9470:68:0;;;14818:21:1;14875:2;14855:18;;;14848:30;14914:34;14894:18;;;14887:62;-1:-1:-1;;;14965:18:1;;;14958:32;15007:19;;9470:68:0;14634:398:1;9470:68:0;-1:-1:-1;;;;;9551:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9603:32;;3330:25:1;;;9603:32:0;;3303:18:1;9603:32:0;;;;;;;9263:380;;;:::o;15119:3019::-;15269:1;15260:6;:10;15252:64;;;;-1:-1:-1;;;15252:64:0;;15239:2:1;15252:64:0;;;15221:21:1;15278:2;15258:18;;;15251:30;15317:34;15297:18;;;15290:62;-1:-1:-1;;;15368:18:1;;;15361:39;15417:19;;15252:64:0;15037:405:1;15252:64:0;-1:-1:-1;;;;;15334:17:0;;;;;;:9;:17;;;;;;;;15333:18;:43;;;;-1:-1:-1;;;;;;15356:20:0;;;;;;:9;:20;;;;;;;;15355:21;15333:43;15329:122;;;15401:14;;-1:-1:-1;;;15401:14:0;;;;15393:46;;;;-1:-1:-1;;;15393:46:0;;15649:2:1;15393:46:0;;;15631:21:1;15688:2;15668:18;;;15661:30;-1:-1:-1;;;15707:18:1;;;15700:49;15766:18;;15393:46:0;15447:343:1;15393:46:0;15477:4;;-1:-1:-1;;;;;15467:14:0;;;15477:4;;15467:14;:39;;;;-1:-1:-1;;;;;;15486:20:0;;;;;;:9;:20;;;;;;;;15485:21;15467:39;:54;;;;-1:-1:-1;15511:10:0;;-1:-1:-1;;;15511:10:0;;;;15510:11;15467:54;15463:306;;;15556:11;;15546:6;:21;;15538:63;;;;-1:-1:-1;;;15538:63:0;;15997:2:1;15538:63:0;;;15979:21:1;16036:2;16016:18;;;16009:30;16075:31;16055:18;;;16048:59;16124:18;;15538:63:0;15795:353:1;15538:63:0;15675:14;;15665:6;15642:20;15652:9;-1:-1:-1;;;;;3813:18:0;3786:7;3813:18;;;;;;;;;;;;3712:127;15642:20;:29;;;;:::i;:::-;:47;;15616:141;;;;-1:-1:-1;;;15616:141:0;;16355:2:1;15616:141:0;;;16337:21:1;;;16374:18;;;16367:30;16433:34;16413:18;;;16406:62;16485:18;;15616:141:0;16153:356:1;15616:141:0;15809:4;;-1:-1:-1;;;;;15799:14:0;;;15809:4;;15799:14;;;;:39;;-1:-1:-1;;;;;;15818:20:0;;;;;;:9;:20;;;;;;;;15817:21;15799:39;:61;;;;-1:-1:-1;;;;;;15843:17:0;;;;;;:9;:17;;;;;;;;15842:18;15799:61;:76;;;;-1:-1:-1;15865:10:0;;-1:-1:-1;;;15865:10:0;;;;15864:11;15799:76;15781:423;;;15920:12;;15910:6;:22;;15902:65;;;;-1:-1:-1;;;15902:65:0;;16716:2:1;15902:65:0;;;16698:21:1;16755:2;16735:18;;;16728:30;16794:32;16774:18;;;16767:60;16844:18;;15902:65:0;16514:354:1;15902:65:0;15999:4;;-1:-1:-1;;;;;15986:17:0;;;15999:4;;15986:17;15982:211;;16087:14;;16077:6;16054:20;16064:9;-1:-1:-1;;;;;3813:18:0;3786:7;3813:18;;;;;;;;;;;;3712:127;16054:20;:29;;;;:::i;:::-;:47;;16024:153;;;;-1:-1:-1;;;16024:153:0;;16355:2:1;16024:153:0;;;16337:21:1;;;16374:18;;;16367:30;16433:34;16413:18;;;16406:62;16485:18;;16024:153:0;16153:356:1;16024:153:0;16265:4;;-1:-1:-1;;;;;16255:14:0;;;16265:4;;16255:14;:32;;;;-1:-1:-1;16273:14:0;;;;16255:32;16252:126;;;16318:16;;16304:62;;-1:-1:-1;;;16304:62:0;;-1:-1:-1;;;;;11444:32:1;;;16304:62:0;;;11426:51:1;11493:18;;;11486:34;;;16318:16:0;;;;16304:43;;11399:18:1;;16304:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16252:126;16390:15;16416:14;16441:11;16463:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;16463:25:0;16576:10;;-1:-1:-1;;;16576:10:0;;;;;:31;;-1:-1:-1;;;;;;16590:17:0;;;;;;:9;:17;;;;;;;;16576:31;:55;;;-1:-1:-1;;;;;;16611:20:0;;;;;;:9;:20;;;;;;;;16576:55;16572:833;;;16652:1;16646:7;;16572:833;;;16717:4;;-1:-1:-1;;;;;16717:4:0;;;16704:17;;;;16700:705;;16843:14;;:9;16804:19;16765;;:58;;16804:19;16765:58;:::i;:::-;:92;;;;:::i;:::-;16903:24;;;;;;;;16918:9;16903:24;;;;;;;;;;;;;;;;;;16738:119;;-1:-1:-1;16738:119:0;;-1:-1:-1;16903:24:0;-1:-1:-1;16700:705:0;;;16959:4;;-1:-1:-1;;;;;16959:4:0;;;16949:14;;;;16945:460;;17077:10;;:5;17042:15;17007;;:50;;17042:15;17007:50;:::i;:::-;:80;;;;:::i;:::-;17134:20;;;;;;;;17149:5;17134:20;;;;;;;;;;;;;;;;;;16980:107;;-1:-1:-1;16980:107:0;;-1:-1:-1;17134:20:0;-1:-1:-1;16945:460:0;;;17300:18;;:13;17257:23;17214;;:66;;17257:23;17214:66;:::i;:::-;:104;;;;:::i;:::-;17365:28;;;;;;;;17380:13;17365:28;;;;;;;;;;;;;;;;;;17187:131;;-1:-1:-1;17187:131:0;;-1:-1:-1;17365:28:0;-1:-1:-1;16945:460:0;17443:3;17424:15;17433:6;17424;:15;:::i;:::-;17423:23;;;;:::i;:::-;17560:18;;17417:29;;-1:-1:-1;;;;17560:18:0;;;;:36;;;;-1:-1:-1;17592:4:0;;-1:-1:-1;;;;;17582:14:0;;;17592:4;;17582:14;;17560:36;17556:72;;;17598:30;17606:7;17615:12;17598:7;:30::i;:::-;17670:48;17686:6;17694:9;17705:12;17714:3;17705:6;:12;:::i;:::-;17670:15;:48::i;:::-;17733:7;;17729:402;;17805:11;;17801:317;;17837:18;17889:3;17868:12;:17;;;17859:6;:26;;;;:::i;:::-;17858:34;;;;:::i;:::-;17837:55;-1:-1:-1;17911:17:0;17837:55;17952:3;17932:16;17941:7;17932:6;:16;:::i;:::-;17931:24;;;;:::i;:::-;:37;;;;:::i;:::-;17911:57;;17987:49;18003:6;18019:4;18026:9;17987:15;:49::i;:::-;18055:47;18071:6;12576:42;18091:10;18055:15;:47::i;:::-;17818:300;;17801:317;15241:2897;;;;15119:3019;;;:::o;10755:173::-;10830:6;;;-1:-1:-1;;;;;10847:17:0;;;-1:-1:-1;;;;;;10847:17:0;;;;;;;10880:40;;10830:6;;;10847:17;10830:6;;10880:40;;10811:16;;10880:40;10800:128;10755:173;:::o;18146:1437::-;13007:10;;-1:-1:-1;;;13007:10:0;;;;13002:110;;13034:10;:17;;-1:-1:-1;;;;13034:17:0;-1:-1:-1;;;13034:17:0;;;18237:49;;18268:7:::1;18237:49;18342:4;18298:23;3813:18:::0;;;;;;;;;;;18382:23:::1;::::0;18363:42;::::1;18359:1217;;18452:1;18426:23;;:27;18422:109;;;-1:-1:-1::0;18492:23:0::1;::::0;18422:109:::1;18602:19;18624:11;:7:::0;18634:1:::1;18624:11;:::i;:::-;18602:33;;18650:32;18744:11;18704:9;:19;;;18686:15;:37;;;;:::i;:::-;18685:70;;;;:::i;:::-;18650:105:::0;-1:-1:-1;18770:14:0::1;18787:42;18650:105:::0;18787:15;:42:::1;:::i;:::-;18770:59:::0;-1:-1:-1;18871:21:0::1;18909:24;18770:59:::0;18909:16:::1;:24::i;:::-;18950:20;18973:38;18997:14:::0;18973:21:::1;:38;:::i;:::-;18950:61;;19026:19;19078:9;:19;;;19064:11;:33;;;;:::i;:::-;19048:50;::::0;:12;:50:::1;:::i;:::-;19026:72;;19113:29;19159:9;:19;;;19145:11;:33;;;;:::i;:::-;19113:65:::0;-1:-1:-1;19199:25:0;;19195:172:::1;;19290:61;19303:24;19329:21;19290:12;:61::i;:::-;19424:19:::0;;19383:20:::1;::::0;19406:15:::1;:11:::0;19420:1:::1;19406:15;:::i;:::-;:37;;;;:::i;:::-;19383:60:::0;-1:-1:-1;19462:16:0;;19458:105:::1;;19507:15;::::0;19499:48:::1;::::0;-1:-1:-1;;;;;19507:15:0::1;19534:12:::0;19499:34:::1;:48::i;:::-;18407:1169;;;;;;;;18359:1217;18224:1359;13066:1;13082:10:::0;:18;;-1:-1:-1;;;;13082:18:0;;;18146:1437;;:::o;7844:578::-;-1:-1:-1;;;;;7984:20:0;;7976:70;;;;-1:-1:-1;;;7976:70:0;;17297:2:1;7976:70:0;;;17279:21:1;17336:2;17316:18;;;17309:30;17375:34;17355:18;;;17348:62;-1:-1:-1;;;17426:18:1;;;17419:35;17471:19;;7976:70:0;17095:401:1;7976:70:0;-1:-1:-1;;;;;8065:23:0;;8057:71;;;;-1:-1:-1;;;8057:71:0;;17703:2:1;8057:71:0;;;17685:21:1;17742:2;17722:18;;;17715:30;17781:34;17761:18;;;17754:62;-1:-1:-1;;;17832:18:1;;;17825:33;17875:19;;8057:71:0;17501:399:1;8057:71:0;-1:-1:-1;;;;;8165:17:0;;8141:21;8165:17;;;;;;;;;;;8201:23;;;;8193:74;;;;-1:-1:-1;;;8193:74:0;;18107:2:1;8193:74:0;;;18089:21:1;18146:2;18126:18;;;18119:30;18185:34;18165:18;;;18158:62;-1:-1:-1;;;18236:18:1;;;18229:36;18282:19;;8193:74:0;17905:402:1;8193:74:0;8298:22;8314:6;8298:13;:22;:::i;:::-;-1:-1:-1;;;;;8278:17:0;;;:9;:17;;;;;;;;;;;:42;;;;8331:20;;;;;;;;:30;;8355:6;;8278:9;8331:30;;8355:6;;8331:30;:::i;:::-;;;;;;;;8396:9;-1:-1:-1;;;;;8379:35:0;8388:6;-1:-1:-1;;;;;8379:35:0;;8407:6;8379:35;;;;3330:25:1;;3318:2;3303:18;;3184:177;8379:35:0;;;;;;;;7965:457;7844:578;;;:::o;19591:534::-;19741:16;;;19755:1;19741:16;;;;;;;;19717:21;;19741:16;;;;;;;;;;-1:-1:-1;19741:16:0;19717:40;;19786:4;19768;19773:1;19768:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19768:23:0;;;:7;;;;;;;;;;:23;;;;19812:6;;:13;;;-1:-1:-1;;;19812:13:0;;;;:6;;;;;:11;;:13;;;;;19768:7;;19812:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19802:4;19807:1;19802:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19802:23:0;;;:7;;;;;;;;;:23;19870:6;;19838:53;;19855:4;;19870:6;19879:11;19838:8;:53::i;:::-;19930:6;;:187;;-1:-1:-1;;;19930:187:0;;-1:-1:-1;;;;;19930:6:0;;;;:57;;:187;;20002:11;;19930:6;;20044:4;;20071;;20091:15;;19930:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19646:479;19591:534;:::o;20133:500::-;20313:6;;20281:53;;20298:4;;-1:-1:-1;;;;;20313:6:0;20322:11;20281:8;:53::i;:::-;20377:6;;:248;;-1:-1:-1;;;20377:248:0;;20442:4;20377:248;;;19894:34:1;19944:18;;;19937:34;;;20377:6:0;19987:18:1;;;19980:34;;;20030:18;;;20023:34;12576:42:0;20073:19:1;;;20066:44;20599:15:0;20126:19:1;;;20119:35;-1:-1:-1;;;;;20377:6:0;;;;:22;;20408:9;;19828:19:1;;20377:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20133:500;;:::o;9673:319::-;9788:6;9763:21;:31;;9755:73;;;;-1:-1:-1;;;9755:73:0;;20678:2:1;9755:73:0;;;20660:21:1;20717:2;20697:18;;;20690:30;20756:31;20736:18;;;20729:59;20805:18;;9755:73:0;20476:353:1;9755:73:0;9842:12;9860:9;-1:-1:-1;;;;;9860:14:0;9883:6;9860:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9841:54;;;9914:7;9906:78;;;;-1:-1:-1;;;9906:78:0;;21246:2:1;9906:78:0;;;21228:21:1;21285:2;21265:18;;;21258:30;21324:34;21304:18;;;21297:62;21395:28;21375:18;;;21368:56;21441:19;;9906:78:0;21044:422:1;14:118;100:5;93:13;86:21;79:5;76:32;66:60;;122:1;119;112:12;137:128;202:20;;231:28;202:20;231:28;:::i;:::-;137:128;;;:::o;270:241::-;326:6;379:2;367:9;358:7;354:23;350:32;347:52;;;395:1;392;385:12;347:52;434:9;421:23;453:28;475:5;453:28;:::i;:::-;500:5;270:241;-1:-1:-1;;;270:241:1:o;516:548::-;628:4;657:2;686;675:9;668:21;718:6;712:13;761:6;756:2;745:9;741:18;734:34;786:1;796:140;810:6;807:1;804:13;796:140;;;905:14;;;901:23;;895:30;871:17;;;890:2;867:26;860:66;825:10;;796:140;;;800:3;985:1;980:2;971:6;960:9;956:22;952:31;945:42;1055:2;1048;1044:7;1039:2;1031:6;1027:15;1023:29;1012:9;1008:45;1004:54;996:62;;;;516:548;;;;:::o;1069:131::-;-1:-1:-1;;;;;1144:31:1;;1134:42;;1124:70;;1190:1;1187;1180:12;1205:134;1273:20;;1302:31;1273:20;1302:31;:::i;1344:315::-;1412:6;1420;1473:2;1461:9;1452:7;1448:23;1444:32;1441:52;;;1489:1;1486;1479:12;1441:52;1528:9;1515:23;1547:31;1572:5;1547:31;:::i;:::-;1597:5;1649:2;1634:18;;;;1621:32;;-1:-1:-1;;;1344:315:1:o;1856:127::-;1917:10;1912:3;1908:20;1905:1;1898:31;1948:4;1945:1;1938:15;1972:4;1969:1;1962:15;1988:1191;2078:6;2086;2139:2;2127:9;2118:7;2114:23;2110:32;2107:52;;;2155:1;2152;2145:12;2107:52;2195:9;2182:23;2224:18;2265:2;2257:6;2254:14;2251:34;;;2281:1;2278;2271:12;2251:34;2319:6;2308:9;2304:22;2294:32;;2364:7;2357:4;2353:2;2349:13;2345:27;2335:55;;2386:1;2383;2376:12;2335:55;2422:2;2409:16;2444:4;2467:2;2463;2460:10;2457:36;;;2473:18;;:::i;:::-;2519:2;2516:1;2512:10;2551:2;2545:9;2614:2;2610:7;2605:2;2601;2597:11;2593:25;2585:6;2581:38;2669:6;2657:10;2654:22;2649:2;2637:10;2634:18;2631:46;2628:72;;;2680:18;;:::i;:::-;2716:2;2709:22;2766:18;;;2800:15;;;;-1:-1:-1;2842:11:1;;;2838:20;;;2870:19;;;2867:39;;;2902:1;2899;2892:12;2867:39;2926:11;;;;2946:148;2962:6;2957:3;2954:15;2946:148;;;3028:23;3047:3;3028:23;:::i;:::-;3016:36;;2979:12;;;;3072;;;;2946:148;;;3113:6;-1:-1:-1;3138:35:1;;-1:-1:-1;3154:18:1;;;3138:35;:::i;:::-;3128:45;;;;;;1988:1191;;;;;:::o;3366:456::-;3443:6;3451;3459;3512:2;3500:9;3491:7;3487:23;3483:32;3480:52;;;3528:1;3525;3518:12;3480:52;3567:9;3554:23;3586:31;3611:5;3586:31;:::i;:::-;3636:5;-1:-1:-1;3693:2:1;3678:18;;3665:32;3706:33;3665:32;3706:33;:::i;:::-;3366:456;;3758:7;;-1:-1:-1;;;3812:2:1;3797:18;;;;3784:32;;3366:456::o;3827:316::-;3904:6;3912;3920;3973:2;3961:9;3952:7;3948:23;3944:32;3941:52;;;3989:1;3986;3979:12;3941:52;-1:-1:-1;;4012:23:1;;;4082:2;4067:18;;4054:32;;-1:-1:-1;4133:2:1;4118:18;;;4105:32;;3827:316;-1:-1:-1;3827:316:1:o;4337:382::-;4402:6;4410;4463:2;4451:9;4442:7;4438:23;4434:32;4431:52;;;4479:1;4476;4469:12;4431:52;4518:9;4505:23;4537:31;4562:5;4537:31;:::i;:::-;4587:5;-1:-1:-1;4644:2:1;4629:18;;4616:32;4657:30;4616:32;4657:30;:::i;:::-;4706:7;4696:17;;;4337:382;;;;;:::o;4724:388::-;4792:6;4800;4853:2;4841:9;4832:7;4828:23;4824:32;4821:52;;;4869:1;4866;4859:12;4821:52;4908:9;4895:23;4927:31;4952:5;4927:31;:::i;:::-;4977:5;-1:-1:-1;5034:2:1;5019:18;;5006:32;5047:33;5006:32;5047:33;:::i;5117:180::-;5176:6;5229:2;5217:9;5208:7;5204:23;5200:32;5197:52;;;5245:1;5242;5235:12;5197:52;-1:-1:-1;5268:23:1;;5117:180;-1:-1:-1;5117:180:1:o;5626:247::-;5685:6;5738:2;5726:9;5717:7;5713:23;5709:32;5706:52;;;5754:1;5751;5744:12;5706:52;5793:9;5780:23;5812:31;5837:5;5812:31;:::i;6309:356::-;6511:2;6493:21;;;6530:18;;;6523:30;6589:34;6584:2;6569:18;;6562:62;6656:2;6641:18;;6309:356::o;6670:380::-;6749:1;6745:12;;;;6792;;;6813:61;;6867:4;6859:6;6855:17;6845:27;;6813:61;6920:2;6912:6;6909:14;6889:18;6886:38;6883:161;;6966:10;6961:3;6957:20;6954:1;6947:31;7001:4;6998:1;6991:15;7029:4;7026:1;7019:15;6883:161;;6670:380;;;:::o;7055:127::-;7116:10;7111:3;7107:20;7104:1;7097:31;7147:4;7144:1;7137:15;7171:4;7168:1;7161:15;7187:127;7248:10;7243:3;7239:20;7236:1;7229:31;7279:4;7276:1;7269:15;7303:4;7300:1;7293:15;7319:135;7358:3;7379:17;;;7376:43;;7399:18;;:::i;:::-;-1:-1:-1;7446:1:1;7435:13;;7319:135::o;8221:128::-;8288:9;;;8309:11;;;8306:37;;;8323:18;;:::i;8354:125::-;8419:9;;;8440:10;;;8437:36;;;8453:18;;:::i;9273:422::-;9362:1;9405:5;9362:1;9419:270;9440:7;9430:8;9427:21;9419:270;;;9499:4;9495:1;9491:6;9487:17;9481:4;9478:27;9475:53;;;9508:18;;:::i;:::-;9558:7;9548:8;9544:22;9541:55;;;9578:16;;;;9541:55;9657:22;;;;9617:15;;;;9419:270;;;9423:3;9273:422;;;;;:::o;9700:806::-;9749:5;9779:8;9769:80;;-1:-1:-1;9820:1:1;9834:5;;9769:80;9868:4;9858:76;;-1:-1:-1;9905:1:1;9919:5;;9858:76;9950:4;9968:1;9963:59;;;;10036:1;10031:130;;;;9943:218;;9963:59;9993:1;9984:10;;10007:5;;;10031:130;10068:3;10058:8;10055:17;10052:43;;;10075:18;;:::i;:::-;-1:-1:-1;;10131:1:1;10117:16;;10146:5;;9943:218;;10245:2;10235:8;10232:16;10226:3;10220:4;10217:13;10213:36;10207:2;10197:8;10194:16;10189:2;10183:4;10180:12;10176:35;10173:77;10170:159;;;-1:-1:-1;10282:19:1;;;10314:5;;10170:159;10361:34;10386:8;10380:4;10361:34;:::i;:::-;10431:6;10427:1;10423:6;10419:19;10410:7;10407:32;10404:58;;;10442:18;;:::i;:::-;10480:20;;9700:806;-1:-1:-1;;;9700:806:1:o;10511:140::-;10569:5;10598:47;10639:4;10629:8;10625:19;10619:4;10598:47;:::i;10656:168::-;10729:9;;;10760;;10777:15;;;10771:22;;10757:37;10747:71;;10798:18;;:::i;11531:245::-;11598:6;11651:2;11639:9;11630:7;11626:23;11622:32;11619:52;;;11667:1;11664;11657:12;11619:52;11699:9;11693:16;11718:28;11740:5;11718:28;:::i;12187:398::-;12389:2;12371:21;;;12428:2;12408:18;;;12401:30;12467:34;12462:2;12447:18;;12440:62;-1:-1:-1;;;12533:2:1;12518:18;;12511:32;12575:3;12560:19;;12187:398::o;16873:217::-;16913:1;16939;16929:132;;16983:10;16978:3;16974:20;16971:1;16964:31;17018:4;17015:1;17008:15;17046:4;17043:1;17036:15;16929:132;-1:-1:-1;17075:9:1;;16873:217::o;18312:251::-;18382:6;18435:2;18423:9;18414:7;18410:23;18406:32;18403:52;;;18451:1;18448;18441:12;18403:52;18483:9;18477:16;18502:31;18527:5;18502:31;:::i;18568:980::-;18830:4;18878:3;18867:9;18863:19;18909:6;18898:9;18891:25;18935:2;18973:6;18968:2;18957:9;18953:18;18946:34;19016:3;19011:2;19000:9;18996:18;18989:31;19040:6;19075;19069:13;19106:6;19098;19091:22;19144:3;19133:9;19129:19;19122:26;;19183:2;19175:6;19171:15;19157:29;;19204:1;19214:195;19228:6;19225:1;19222:13;19214:195;;;19293:13;;-1:-1:-1;;;;;19289:39:1;19277:52;;19384:15;;;;19349:12;;;;19325:1;19243:9;19214:195;;;-1:-1:-1;;;;;;;19465:32:1;;;;19460:2;19445:18;;19438:60;-1:-1:-1;;;19529:3:1;19514:19;19507:35;19426:3;18568:980;-1:-1:-1;;;18568:980:1:o;20165:306::-;20253:6;20261;20269;20322:2;20310:9;20301:7;20297:23;20293:32;20290:52;;;20338:1;20335;20328:12;20290:52;20367:9;20361:16;20351:26;;20417:2;20406:9;20402:18;20396:25;20386:35;;20461:2;20450:9;20446:18;20440:25;20430:35;;20165:306;;;;;:::o

Swarm Source

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