ETH Price: $3,476.45 (+2.01%)
Gas: 8 Gwei

Token

Bunny AI (BUNAI)
 

Overview

Max Total Supply

23,000,000 BUNAI

Holders

68

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
26,241.701178814120132499 BUNAI

Value
$0.00
0x08791BBad93B005D51812497F047a6869Ba81AdE
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
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-24
*/

//SPDX-License-Identifier: MIT

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 = 0x5252dA70334C27c422A8Dea9dA639A1F33eB70c7;
    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("Bunny AI", "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"}]

6008805462ffffff60a01b191690556904ded51e9cc7006000006009556930b453321fc603c00000600a819055600b819055600c55600e80546001600160a01b031916735252da70334c27c422a8dea9da639a1f33eb70c717905560056080819052600260a0819052600160c0819052600f9290925560108190556011829055600760e08190526101008290526101208390526012556013556014556101a06040526000610140819052610160819052610180819052601581905560168190556017556019805460ff19169055348015620000d957600080fd5b506040518060400160405280600881526020016742756e6e7920414960c01b8152506040518060400160405280600581526020016442554e414960d81b81525081600390816200012a9190620004df565b506004620001398282620004df565b50505062000156620001506200039060201b60201c565b62000394565b6200017f33620001696012600a620006c0565b620001799063015ef3c0620006d8565b620003e6565b336000908152601860209081526040808320805460ff19166001179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa158015620001ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002109190620006f2565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002849190620006f2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f89190620006f2565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260186020526040808220805460ff199081166001908117909255600e549094168352908220805484168217905561dead9091527fe3ec2099396b7359df1c566dfdf9dfdb5e22fd64a6ede9d61aa32b2f63968fd680549092161790556200071d565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200046557607f821691505b6020821081036200048657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004da57600081815260208120601f850160051c81016020861015620004b55750805b601f850160051c820191505b81811015620004d657828155600101620004c1565b5050505b505050565b81516001600160401b03811115620004fb57620004fb6200043a565b62000513816200050c845462000450565b846200048c565b602080601f8311600181146200054b5760008415620005325750858301515b600019600386901b1c1916600185901b178555620004d6565b600085815260208120601f198616915b828110156200057c578886015182559484019460019091019084016200055b565b50858210156200059b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000602578160001904821115620005e657620005e6620005ab565b80851615620005f457918102915b93841c9390800290620005c6565b509250929050565b6000826200061b57506001620006ba565b816200062a57506000620006ba565b81600181146200064357600281146200064e576200066e565b6001915050620006ba565b60ff841115620006625762000662620005ab565b50506001821b620006ba565b5060208310610133831016604e8410600b841016171562000693575081810a620006ba565b6200069f8383620005c1565b8060001904821115620006b657620006b6620005ab565b0290505b92915050565b6000620006d160ff8416836200060a565b9392505050565b8082028115828204841417620006ba57620006ba620005ab565b6000602082840312156200070557600080fd5b81516001600160a01b0381168114620006d157600080fd5b612923806200072d6000396000f3fe60806040526004361061028c5760003560e01c806366a88d961161015a578063a8aa1b31116100c1578063dd62ed3e1161007a578063dd62ed3e146107c7578063e1b450ad1461080d578063f2fde38b1461082d578063f66895a31461084d578063f887ea401461086c578063fbe6324e1461088c57600080fd5b8063a8aa1b31146106fd578063a9059cbb1461071d578063aacebbe31461073d578063c5d32bb21461075d578063c653df6f1461078d578063d3460d8a146107a757600080fd5b80637dad19db116101135780637dad19db1461065457806385141a77146106745780638cd4426d1461068a5780638da5cb5b146106aa57806395d89b41146106c8578063a457c2d7146106dd57600080fd5b806366a88d96146105865780636aa5b37f1461059c57806370a08231146105b2578063715018a6146105e8578063728f8eea146105fd57806375f0a8741461061c57600080fd5b8063274a533c116101fe578063441b1d30116101b7578063441b1d30146104b55780634a2b3b13146104d55780634ada218b146104f55780634e736f22146105165780635331803c14610536578063652e2f041461057057600080fd5b8063274a533c14610403578063313ce56714610419578063355496ca14610435578063395093511461045557806340b28c2f1461047557806342b6fa111461049557600080fd5b80631340538f116102505780631340538f146103555780631675d8021461037557806318160ddd146103995780631c1702f3146103ae57806323b872dd146103c3578063244cffa5146103e357600080fd5b8063012ab8cb1461029857806306fdde03146102ba57806307b405bb146102e5578063095ea7b3146103055780630e375a5c1461033557600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b3366004612317565b6108ad565b005b3480156102c657600080fd5b506102cf6108fe565b6040516102dc919061233b565b60405180910390f35b3480156102f157600080fd5b506102b8610300366004612317565b610990565b34801561031157600080fd5b506103256103203660046123a9565b6109cd565b60405190151581526020016102dc565b34801561034157600080fd5b506102b86103503660046123eb565b6109e4565b34801561036157600080fd5b506102b8610370366004612317565b610a7a565b34801561038157600080fd5b5061038b60095481565b6040519081526020016102dc565b3480156103a557600080fd5b5060025461038b565b3480156103ba57600080fd5b506102b8610ac2565b3480156103cf57600080fd5b506103256103de3660046124c2565b610b61565b3480156103ef57600080fd5b506102b86103fe366004612503565b610c12565b34801561040f57600080fd5b5061038b600d5481565b34801561042557600080fd5b50604051601281526020016102dc565b34801561044157600080fd5b506102b861045036600461252f565b610cc8565b34801561046157600080fd5b506103256104703660046123a9565b610d1d565b34801561048157600080fd5b506102b8610490366004612568565b610d54565b3480156104a157600080fd5b506102b86104b0366004612596565b610dac565b3480156104c157600080fd5b506102b86104d0366004612596565b610e77565b3480156104e157600080fd5b506102b86104f0366004612503565b610edf565b34801561050157600080fd5b5060085461032590600160b01b900460ff1681565b34801561052257600080fd5b506102b8610531366004612503565b610f3d565b34801561054257600080fd5b5060155460165460175461055592919083565b604080519384526020840192909252908201526060016102dc565b34801561057c57600080fd5b5061038b600b5481565b34801561059257600080fd5b5061038b600c5481565b3480156105a857600080fd5b5061038b600a5481565b3480156105be57600080fd5b5061038b6105cd3660046125af565b6001600160a01b031660009081526020819052604090205490565b3480156105f457600080fd5b506102b8610f9b565b34801561060957600080fd5b50600f5460105460115461055592919083565b34801561062857600080fd5b50600e5461063c906001600160a01b031681565b6040516001600160a01b0390911681526020016102dc565b34801561066057600080fd5b5060085461063c906001600160a01b031681565b34801561068057600080fd5b5061063c61dead81565b34801561069657600080fd5b506102b86106a53660046123a9565b610fd1565b3480156106b657600080fd5b506005546001600160a01b031661063c565b3480156106d457600080fd5b506102cf611104565b3480156106e957600080fd5b506103256106f83660046123a9565b611113565b34801561070957600080fd5b5060075461063c906001600160a01b031681565b34801561072957600080fd5b506103256107383660046123a9565b6111ae565b34801561074957600080fd5b506102b86107583660046125af565b6111bb565b34801561076957600080fd5b506103256107783660046125af565b60186020526000908152604090205460ff1681565b34801561079957600080fd5b506019546103259060ff1681565b3480156107b357600080fd5b506102b86107c23660046125af565b61122d565b3480156107d357600080fd5b5061038b6107e2366004612568565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561081957600080fd5b506102b8610828366004612503565b61129f565b34801561083957600080fd5b506102b86108483660046125af565b611449565b34801561085957600080fd5b5060125460135460145461055592919083565b34801561087857600080fd5b5060065461063c906001600160a01b031681565b34801561089857600080fd5b5060085461032590600160a81b900460ff1681565b6005546001600160a01b031633146108e05760405162461bcd60e51b81526004016108d7906125cc565b60405180910390fd5b60088054911515600160b01b0260ff60b01b19909216919091179055565b60606003805461090d90612601565b80601f016020809104026020016040519081016040528092919081815260200182805461093990612601565b80156109865780601f1061095b57610100808354040283529160200191610986565b820191906000526020600020905b81548152906001019060200180831161096957829003601f168201915b5050505050905090565b6005546001600160a01b031633146109ba5760405162461bcd60e51b81526004016108d7906125cc565b6019805460ff1916911515919091179055565b60006109da3384846114e4565b5060015b92915050565b6005546001600160a01b03163314610a0e5760405162461bcd60e51b81526004016108d7906125cc565b60005b8251811015610a75578160186000858481518110610a3157610a3161263b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a6d81612667565b915050610a11565b505050565b6005546001600160a01b03163314610aa45760405162461bcd60e51b81526004016108d7906125cc565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610aec5760405162461bcd60e51b81526004016108d7906125cc565b600854600160b01b900460ff1615610b465760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016108d7565b6008805461ffff60a81b191661010160a81b17905543600d55565b6000610b6e848484611608565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bf35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108d7565b610c078533610c028685612680565b6114e4565b506001949350505050565b6005546001600160a01b03163314610c3c5760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052601583905560168290556017819055600c81610c708486612693565b610c7a9190612693565b1115610a755760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313225206f72206c65737300000060448201526064016108d7565b6005546001600160a01b03163314610cf25760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109da918590610c02908690612693565b6005546001600160a01b03163314610d7e5760405162461bcd60e51b81526004016108d7906125cc565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610dd65760405162461bcd60e51b81526004016108d7906125cc565b620668a08111158015610de95750600081115b610e5b5760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f203125206f6620746f6b656e73000060648201526084016108d7565b610e676012600a61278a565b610e719082612799565b60095550565b6005546001600160a01b03163314610ea15760405162461bcd60e51b81526004016108d7906125cc565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610edb573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610f095760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052600f83905560108290556011819055600c81610c708486612693565b6005546001600160a01b03163314610f675760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052601283905560138290556014819055600c81610c708486612693565b6005546001600160a01b03163314610fc55760405162461bcd60e51b81526004016108d7906125cc565b610fcf6000611c6d565b565b6005546001600160a01b03163314610ffb5760405162461bcd60e51b81526004016108d7906125cc565b306001600160a01b038316036110725760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016108d7565b816001600160a01b031663a9059cbb6110936005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af11580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7591906127b0565b60606004805461090d90612601565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108d7565b6111a43385610c028685612680565b5060019392505050565b60006109da338484611608565b6005546001600160a01b031633146111e55760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03811661120b5760405162461bcd60e51b81526004016108d7906127cd565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112575760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03811661127d5760405162461bcd60e51b81526004016108d7906127cd565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112c95760405162461bcd60e51b81526004016108d7906125cc565b6159d883101561132d5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108d7565b6159d88210156113925760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108d7565b620382708110156113f85760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b60648201526084016108d7565b6114046012600a61278a565b61140e9084612799565b600a55601261141e90600a61278a565b6114289083612799565b600b556114376012600a61278a565b6114419082612799565b600c55505050565b6005546001600160a01b031633146114735760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b0381166114d85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d7565b6114e181611c6d565b50565b6001600160a01b0383166115465760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108d7565b6001600160a01b0382166115a75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000811161166a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108d7565b6001600160a01b03831660009081526018602052604090205460ff161580156116ac57506001600160a01b03821660009081526018602052604090205460ff16155b1561170057600854600160b01b900460ff166117005760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108d7565b6007546001600160a01b03848116911614801561173657506001600160a01b03821660009081526018602052604090205460ff16155b801561174c5750600854600160a01b900460ff16155b1561181e57600a548111156117a35760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016108d7565b600c54816117c6846001600160a01b031660009081526020819052604090205490565b6117d09190612693565b111561181e5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108d7565b6007546001600160a01b0384811691161480159061185557506001600160a01b03821660009081526018602052604090205460ff16155b801561187a57506001600160a01b03831660009081526018602052604090205460ff16155b80156118905750600854600160a01b900460ff16155b1561197757600b548111156118e75760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016108d7565b6007546001600160a01b0383811691161461197757600c548161191f846001600160a01b031660009081526020819052604090205490565b6119299190612693565b11156119775760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108d7565b6007546001600160a01b038481169116148015611996575060195460ff165b15611a02576008546040516329a9b55b60e01b81526001600160a01b03848116600483015260248201849052909116906329a9b55b90604401600060405180830381600087803b1580156119e957600080fd5b505af11580156119fd573d6000803e3d6000fd5b505050505b6000806000611a2b60405180606001604052806000815260200160008152602001600081525090565b600854600160a01b900460ff1680611a5b57506001600160a01b03871660009081526018602052604090205460ff165b80611a7e57506001600160a01b03861660009081526018602052604090205460ff165b15611a8c5760009150611b95565b6007546001600160a01b0390811690871603611aed57601454601254601354611ab59190612693565b611abf9190612693565b6040805160608101825260125481526013546020820152601454918101919091529094508493509050611b95565b6007546001600160a01b0390811690881603611b4e57601154600f54601054611b169190612693565b611b209190612693565b60408051606081018252600f5481526010546020820152601154918101919091529094508493509050611b95565b601754601554601654611b619190612693565b611b6b9190612693565b60408051606081018252601554815260165460208201526017549181019190915290945084935090505b6064611ba18487612799565b611bab919061280f565b600854909250600160a81b900460ff168015611bd557506007546001600160a01b03888116911614155b15611be457611be48482611cbf565b611bf88787611bf38589612680565b611dfc565b8115611c64578315611c645760006064826040015187611c189190612799565b611c22919061280f565b90506000816064611c33888a612799565b611c3d919061280f565b611c479190612680565b9050611c54893083611dfc565b611c618961dead84611dfc565b50505b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600854600160a01b900460ff16610edb576008805460ff60a01b1916600160a01b1790558115611deb57306000908152602081905260409020546009548110611de95760016009541115611d1257506009545b6000611d1f846002612799565b9050600081846020015184611d349190612799565b611d3e919061280f565b90506000611d4c8285612680565b905047611d5882611fd4565b6000611d648247612680565b90506000876020015186611d789190612680565b611d82908361280f565b90506000886020015182611d969190612799565b90508015611da857611da8868261212e565b8851600090611db8846002612799565b611dc29190612799565b90508015611de057600e54611de0906001600160a01b0316826121e0565b50505050505050505b505b6008805460ff60a01b191690555050565b6001600160a01b038316611e605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108d7565b6001600160a01b038216611ec25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108d7565b6001600160a01b03831660009081526020819052604090205481811015611f3a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108d7565b611f448282612680565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611f7a908490612693565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fc691815260200190565b60405180910390a350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120095761200961263b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612062573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120869190612831565b816001815181106120995761209961263b565b6001600160a01b0392831660209182029290920101526006546120bf91309116846114e4565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906120f890859060009086903090429060040161284e565b600060405180830381600087803b15801561211257600080fd5b505af1158015612126573d6000803e3d6000fd5b505050505050565b6006546121469030906001600160a01b0316846114e4565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156121b4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121d991906128bf565b5050505050565b804710156122305760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108d7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461227d576040519150601f19603f3d011682016040523d82523d6000602084013e612282565b606091505b5050905080610a755760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108d7565b80151581146114e157600080fd5b8035612312816122f9565b919050565b60006020828403121561232957600080fd5b8135612334816122f9565b9392505050565b600060208083528351808285015260005b818110156123685785810183015185820160400152820161234c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114e157600080fd5b803561231281612389565b600080604083850312156123bc57600080fd5b82356123c781612389565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156123fe57600080fd5b823567ffffffffffffffff8082111561241657600080fd5b818501915085601f83011261242a57600080fd5b813560208282111561243e5761243e6123d5565b8160051b604051601f19603f83011681018181108682111715612463576124636123d5565b60405292835281830193508481018201928984111561248157600080fd5b948201945b838610156124a6576124978661239e565b85529482019493820193612486565b96506124b59050878201612307565b9450505050509250929050565b6000806000606084860312156124d757600080fd5b83356124e281612389565b925060208401356124f281612389565b929592945050506040919091013590565b60008060006060848603121561251857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561254257600080fd5b823561254d81612389565b9150602083013561255d816122f9565b809150509250929050565b6000806040838503121561257b57600080fd5b823561258681612389565b9150602083013561255d81612389565b6000602082840312156125a857600080fd5b5035919050565b6000602082840312156125c157600080fd5b813561233481612389565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061261557607f821691505b60208210810361263557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161267957612679612651565b5060010190565b818103818111156109de576109de612651565b808201808211156109de576109de612651565b600181815b808511156126e15781600019048211156126c7576126c7612651565b808516156126d457918102915b93841c93908002906126ab565b509250929050565b6000826126f8575060016109de565b81612705575060006109de565b816001811461271b576002811461272557612741565b60019150506109de565b60ff84111561273657612736612651565b50506001821b6109de565b5060208310610133831016604e8410600b8410161715612764575081810a6109de565b61276e83836126a6565b806000190482111561278257612782612651565b029392505050565b600061233460ff8416836126e9565b80820281158282048414176109de576109de612651565b6000602082840312156127c257600080fd5b8151612334816122f9565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b60008261282c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561284357600080fd5b815161233481612389565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561289e5784516001600160a01b031683529383019391830191600101612879565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156128d457600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220f6f16938f54313acc1290585d1ef130218cbff056d085149702746addad4725864736f6c63430008110033

Deployed Bytecode

0x60806040526004361061028c5760003560e01c806366a88d961161015a578063a8aa1b31116100c1578063dd62ed3e1161007a578063dd62ed3e146107c7578063e1b450ad1461080d578063f2fde38b1461082d578063f66895a31461084d578063f887ea401461086c578063fbe6324e1461088c57600080fd5b8063a8aa1b31146106fd578063a9059cbb1461071d578063aacebbe31461073d578063c5d32bb21461075d578063c653df6f1461078d578063d3460d8a146107a757600080fd5b80637dad19db116101135780637dad19db1461065457806385141a77146106745780638cd4426d1461068a5780638da5cb5b146106aa57806395d89b41146106c8578063a457c2d7146106dd57600080fd5b806366a88d96146105865780636aa5b37f1461059c57806370a08231146105b2578063715018a6146105e8578063728f8eea146105fd57806375f0a8741461061c57600080fd5b8063274a533c116101fe578063441b1d30116101b7578063441b1d30146104b55780634a2b3b13146104d55780634ada218b146104f55780634e736f22146105165780635331803c14610536578063652e2f041461057057600080fd5b8063274a533c14610403578063313ce56714610419578063355496ca14610435578063395093511461045557806340b28c2f1461047557806342b6fa111461049557600080fd5b80631340538f116102505780631340538f146103555780631675d8021461037557806318160ddd146103995780631c1702f3146103ae57806323b872dd146103c3578063244cffa5146103e357600080fd5b8063012ab8cb1461029857806306fdde03146102ba57806307b405bb146102e5578063095ea7b3146103055780630e375a5c1461033557600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102b86102b3366004612317565b6108ad565b005b3480156102c657600080fd5b506102cf6108fe565b6040516102dc919061233b565b60405180910390f35b3480156102f157600080fd5b506102b8610300366004612317565b610990565b34801561031157600080fd5b506103256103203660046123a9565b6109cd565b60405190151581526020016102dc565b34801561034157600080fd5b506102b86103503660046123eb565b6109e4565b34801561036157600080fd5b506102b8610370366004612317565b610a7a565b34801561038157600080fd5b5061038b60095481565b6040519081526020016102dc565b3480156103a557600080fd5b5060025461038b565b3480156103ba57600080fd5b506102b8610ac2565b3480156103cf57600080fd5b506103256103de3660046124c2565b610b61565b3480156103ef57600080fd5b506102b86103fe366004612503565b610c12565b34801561040f57600080fd5b5061038b600d5481565b34801561042557600080fd5b50604051601281526020016102dc565b34801561044157600080fd5b506102b861045036600461252f565b610cc8565b34801561046157600080fd5b506103256104703660046123a9565b610d1d565b34801561048157600080fd5b506102b8610490366004612568565b610d54565b3480156104a157600080fd5b506102b86104b0366004612596565b610dac565b3480156104c157600080fd5b506102b86104d0366004612596565b610e77565b3480156104e157600080fd5b506102b86104f0366004612503565b610edf565b34801561050157600080fd5b5060085461032590600160b01b900460ff1681565b34801561052257600080fd5b506102b8610531366004612503565b610f3d565b34801561054257600080fd5b5060155460165460175461055592919083565b604080519384526020840192909252908201526060016102dc565b34801561057c57600080fd5b5061038b600b5481565b34801561059257600080fd5b5061038b600c5481565b3480156105a857600080fd5b5061038b600a5481565b3480156105be57600080fd5b5061038b6105cd3660046125af565b6001600160a01b031660009081526020819052604090205490565b3480156105f457600080fd5b506102b8610f9b565b34801561060957600080fd5b50600f5460105460115461055592919083565b34801561062857600080fd5b50600e5461063c906001600160a01b031681565b6040516001600160a01b0390911681526020016102dc565b34801561066057600080fd5b5060085461063c906001600160a01b031681565b34801561068057600080fd5b5061063c61dead81565b34801561069657600080fd5b506102b86106a53660046123a9565b610fd1565b3480156106b657600080fd5b506005546001600160a01b031661063c565b3480156106d457600080fd5b506102cf611104565b3480156106e957600080fd5b506103256106f83660046123a9565b611113565b34801561070957600080fd5b5060075461063c906001600160a01b031681565b34801561072957600080fd5b506103256107383660046123a9565b6111ae565b34801561074957600080fd5b506102b86107583660046125af565b6111bb565b34801561076957600080fd5b506103256107783660046125af565b60186020526000908152604090205460ff1681565b34801561079957600080fd5b506019546103259060ff1681565b3480156107b357600080fd5b506102b86107c23660046125af565b61122d565b3480156107d357600080fd5b5061038b6107e2366004612568565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561081957600080fd5b506102b8610828366004612503565b61129f565b34801561083957600080fd5b506102b86108483660046125af565b611449565b34801561085957600080fd5b5060125460135460145461055592919083565b34801561087857600080fd5b5060065461063c906001600160a01b031681565b34801561089857600080fd5b5060085461032590600160a81b900460ff1681565b6005546001600160a01b031633146108e05760405162461bcd60e51b81526004016108d7906125cc565b60405180910390fd5b60088054911515600160b01b0260ff60b01b19909216919091179055565b60606003805461090d90612601565b80601f016020809104026020016040519081016040528092919081815260200182805461093990612601565b80156109865780601f1061095b57610100808354040283529160200191610986565b820191906000526020600020905b81548152906001019060200180831161096957829003601f168201915b5050505050905090565b6005546001600160a01b031633146109ba5760405162461bcd60e51b81526004016108d7906125cc565b6019805460ff1916911515919091179055565b60006109da3384846114e4565b5060015b92915050565b6005546001600160a01b03163314610a0e5760405162461bcd60e51b81526004016108d7906125cc565b60005b8251811015610a75578160186000858481518110610a3157610a3161263b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a6d81612667565b915050610a11565b505050565b6005546001600160a01b03163314610aa45760405162461bcd60e51b81526004016108d7906125cc565b60088054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610aec5760405162461bcd60e51b81526004016108d7906125cc565b600854600160b01b900460ff1615610b465760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016108d7565b6008805461ffff60a81b191661010160a81b17905543600d55565b6000610b6e848484611608565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610bf35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108d7565b610c078533610c028685612680565b6114e4565b506001949350505050565b6005546001600160a01b03163314610c3c5760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052601583905560168290556017819055600c81610c708486612693565b610c7a9190612693565b1115610a755760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313225206f72206c65737300000060448201526064016108d7565b6005546001600160a01b03163314610cf25760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916109da918590610c02908690612693565b6005546001600160a01b03163314610d7e5760405162461bcd60e51b81526004016108d7906125cc565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b03163314610dd65760405162461bcd60e51b81526004016108d7906125cc565b620668a08111158015610de95750600081115b610e5b5760405162461bcd60e51b815260206004820152603e60248201527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f203125206f6620746f6b656e73000060648201526084016108d7565b610e676012600a61278a565b610e719082612799565b60095550565b6005546001600160a01b03163314610ea15760405162461bcd60e51b81526004016108d7906125cc565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610edb573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610f095760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052600f83905560108290556011819055600c81610c708486612693565b6005546001600160a01b03163314610f675760405162461bcd60e51b81526004016108d7906125cc565b604080516060810182528481526020810184905201819052601283905560138290556014819055600c81610c708486612693565b6005546001600160a01b03163314610fc55760405162461bcd60e51b81526004016108d7906125cc565b610fcf6000611c6d565b565b6005546001600160a01b03163314610ffb5760405162461bcd60e51b81526004016108d7906125cc565b306001600160a01b038316036110725760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016108d7565b816001600160a01b031663a9059cbb6110936005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af11580156110e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7591906127b0565b60606004805461090d90612601565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156111955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108d7565b6111a43385610c028685612680565b5060019392505050565b60006109da338484611608565b6005546001600160a01b031633146111e55760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03811661120b5760405162461bcd60e51b81526004016108d7906127cd565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112575760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b03811661127d5760405162461bcd60e51b81526004016108d7906127cd565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146112c95760405162461bcd60e51b81526004016108d7906125cc565b6159d883101561132d5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108d7565b6159d88210156113925760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108d7565b620382708110156113f85760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f776044820152696572207468616e20312560b01b60648201526084016108d7565b6114046012600a61278a565b61140e9084612799565b600a55601261141e90600a61278a565b6114289083612799565b600b556114376012600a61278a565b6114419082612799565b600c55505050565b6005546001600160a01b031633146114735760405162461bcd60e51b81526004016108d7906125cc565b6001600160a01b0381166114d85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d7565b6114e181611c6d565b50565b6001600160a01b0383166115465760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108d7565b6001600160a01b0382166115a75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000811161166a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108d7565b6001600160a01b03831660009081526018602052604090205460ff161580156116ac57506001600160a01b03821660009081526018602052604090205460ff16155b1561170057600854600160b01b900460ff166117005760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108d7565b6007546001600160a01b03848116911614801561173657506001600160a01b03821660009081526018602052604090205460ff16155b801561174c5750600854600160a01b900460ff16155b1561181e57600a548111156117a35760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016108d7565b600c54816117c6846001600160a01b031660009081526020819052604090205490565b6117d09190612693565b111561181e5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108d7565b6007546001600160a01b0384811691161480159061185557506001600160a01b03821660009081526018602052604090205460ff16155b801561187a57506001600160a01b03831660009081526018602052604090205460ff16155b80156118905750600854600160a01b900460ff16155b1561197757600b548111156118e75760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016108d7565b6007546001600160a01b0383811691161461197757600c548161191f846001600160a01b031660009081526020819052604090205490565b6119299190612693565b11156119775760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108d7565b6007546001600160a01b038481169116148015611996575060195460ff165b15611a02576008546040516329a9b55b60e01b81526001600160a01b03848116600483015260248201849052909116906329a9b55b90604401600060405180830381600087803b1580156119e957600080fd5b505af11580156119fd573d6000803e3d6000fd5b505050505b6000806000611a2b60405180606001604052806000815260200160008152602001600081525090565b600854600160a01b900460ff1680611a5b57506001600160a01b03871660009081526018602052604090205460ff165b80611a7e57506001600160a01b03861660009081526018602052604090205460ff165b15611a8c5760009150611b95565b6007546001600160a01b0390811690871603611aed57601454601254601354611ab59190612693565b611abf9190612693565b6040805160608101825260125481526013546020820152601454918101919091529094508493509050611b95565b6007546001600160a01b0390811690881603611b4e57601154600f54601054611b169190612693565b611b209190612693565b60408051606081018252600f5481526010546020820152601154918101919091529094508493509050611b95565b601754601554601654611b619190612693565b611b6b9190612693565b60408051606081018252601554815260165460208201526017549181019190915290945084935090505b6064611ba18487612799565b611bab919061280f565b600854909250600160a81b900460ff168015611bd557506007546001600160a01b03888116911614155b15611be457611be48482611cbf565b611bf88787611bf38589612680565b611dfc565b8115611c64578315611c645760006064826040015187611c189190612799565b611c22919061280f565b90506000816064611c33888a612799565b611c3d919061280f565b611c479190612680565b9050611c54893083611dfc565b611c618961dead84611dfc565b50505b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600854600160a01b900460ff16610edb576008805460ff60a01b1916600160a01b1790558115611deb57306000908152602081905260409020546009548110611de95760016009541115611d1257506009545b6000611d1f846002612799565b9050600081846020015184611d349190612799565b611d3e919061280f565b90506000611d4c8285612680565b905047611d5882611fd4565b6000611d648247612680565b90506000876020015186611d789190612680565b611d82908361280f565b90506000886020015182611d969190612799565b90508015611da857611da8868261212e565b8851600090611db8846002612799565b611dc29190612799565b90508015611de057600e54611de0906001600160a01b0316826121e0565b50505050505050505b505b6008805460ff60a01b191690555050565b6001600160a01b038316611e605760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108d7565b6001600160a01b038216611ec25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108d7565b6001600160a01b03831660009081526020819052604090205481811015611f3a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108d7565b611f448282612680565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611f7a908490612693565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fc691815260200190565b60405180910390a350505050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120095761200961263b565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612062573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120869190612831565b816001815181106120995761209961263b565b6001600160a01b0392831660209182029290920101526006546120bf91309116846114e4565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906120f890859060009086903090429060040161284e565b600060405180830381600087803b15801561211257600080fd5b505af1158015612126573d6000803e3d6000fd5b505050505050565b6006546121469030906001600160a01b0316846114e4565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156121b4573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906121d991906128bf565b5050505050565b804710156122305760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108d7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461227d576040519150601f19603f3d011682016040523d82523d6000602084013e612282565b606091505b5050905080610a755760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108d7565b80151581146114e157600080fd5b8035612312816122f9565b919050565b60006020828403121561232957600080fd5b8135612334816122f9565b9392505050565b600060208083528351808285015260005b818110156123685785810183015185820160400152820161234c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114e157600080fd5b803561231281612389565b600080604083850312156123bc57600080fd5b82356123c781612389565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156123fe57600080fd5b823567ffffffffffffffff8082111561241657600080fd5b818501915085601f83011261242a57600080fd5b813560208282111561243e5761243e6123d5565b8160051b604051601f19603f83011681018181108682111715612463576124636123d5565b60405292835281830193508481018201928984111561248157600080fd5b948201945b838610156124a6576124978661239e565b85529482019493820193612486565b96506124b59050878201612307565b9450505050509250929050565b6000806000606084860312156124d757600080fd5b83356124e281612389565b925060208401356124f281612389565b929592945050506040919091013590565b60008060006060848603121561251857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561254257600080fd5b823561254d81612389565b9150602083013561255d816122f9565b809150509250929050565b6000806040838503121561257b57600080fd5b823561258681612389565b9150602083013561255d81612389565b6000602082840312156125a857600080fd5b5035919050565b6000602082840312156125c157600080fd5b813561233481612389565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061261557607f821691505b60208210810361263557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161267957612679612651565b5060010190565b818103818111156109de576109de612651565b808201808211156109de576109de612651565b600181815b808511156126e15781600019048211156126c7576126c7612651565b808516156126d457918102915b93841c93908002906126ab565b509250929050565b6000826126f8575060016109de565b81612705575060006109de565b816001811461271b576002811461272557612741565b60019150506109de565b60ff84111561273657612736612651565b50506001821b6109de565b5060208310610133831016604e8410600b8410161715612764575081810a6109de565b61276e83836126a6565b806000190482111561278257612782612651565b029392505050565b600061233460ff8416836126e9565b80820281158282048414176109de576109de612651565b6000602082840312156127c257600080fd5b8151612334816122f9565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b60008261282c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561284357600080fd5b815161233481612389565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561289e5784516001600160a01b031683529383019391830191600101612879565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156128d457600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220f6f16938f54313acc1290585d1ef130218cbff056d085149702746addad4725864736f6c63430008110033

Deployed Bytecode Sourcemap

11843:12433:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22697:98;;;;;;;;;;-1:-1:-1;22697:98:0;;;;;:::i;:::-;;:::i;:::-;;2373:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22363:97;;;;;;;;;;-1:-1:-1;22363:97:0;;;;;:::i;:::-;;:::i;13600:161::-;;;;;;;;;;-1:-1:-1;13600:161:0;;;;;:::i;:::-;;:::i;:::-;;;1829:14:1;;1822:22;1804:41;;1792:2;1777:18;13600:161:0;1664:187:1;23134:202:0;;;;;;;;;;-1:-1:-1;23134:202:0;;;;;:::i;:::-;;:::i;20594:152::-;;;;;;;;;;-1:-1:-1;20594:152:0;;;;;:::i;:::-;;:::i;12147:56::-;;;;;;;;;;;;;;;;;;;3330:25:1;;;3318:2;3303:18;12147:56:0;3184:177:1;3493:108:0;;;;;;;;;;-1:-1:-1;3581:12:0;;3493:108;;22468:221;;;;;;;;;;;;;:::i;13769:448::-;;;;;;;;;;-1:-1:-1;13769:448:0;;;;;:::i;:::-;;:::i;21656:298::-;;;;;;;;;;-1:-1:-1;21656:298:0;;;;;:::i;:::-;;:::i;12372:28::-;;;;;;;;;;;;;;;;3335:93;;;;;;;;;;-1:-1:-1;3335:93:0;;3418:2;4290:36:1;;4278:2;4263:18;3335:93:0;4148:184:1;23006:120:0;;;;;;;;;;-1:-1:-1;23006:120:0;;;;;:::i;:::-;;:::i;14225:248::-;;;;;;;;;;-1:-1:-1;14225:248:0;;;;;:::i;:::-;;:::i;21962:155::-;;;;;;;;;;-1:-1:-1;21962:155:0;;;;;:::i;:::-;;:::i;20754:302::-;;;;;;;;;;-1:-1:-1;20754:302:0;;;;;:::i;:::-;;:::i;23860:112::-;;;;;;;;;;-1:-1:-1;23860:112:0;;;;;:::i;:::-;;:::i;21064:286::-;;;;;;;;;;-1:-1:-1;21064:286:0;;;;;:::i;:::-;;:::i;12104:34::-;;;;;;;;;;-1:-1:-1;12104:34:0;;;;-1:-1:-1;;;12104:34:0;;;;;;21358:290;;;;;;;;;;-1:-1:-1;21358:290:0;;;;;:::i;:::-;;:::i;12775:43::-;;;;;;;;;;-1:-1:-1;12775:43:0;;;;;;;;;;;;;;;;5504:25:1;;;5560:2;5545:18;;5538:34;;;;5588:18;;;5581:34;5492:2;5477:18;12775:43:0;5302:319:1;12262:46:0;;;;;;;;;;;;;;;;12315:48;;;;;;;;;;;;;;;;12210:45;;;;;;;;;;;;;;;;3664:127;;;;;;;;;;-1:-1:-1;3664:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3765:18:0;3738:7;3765:18;;;;;;;;;;;;3664:127;10405:94;;;;;;;;;;;;;:::i;12687:35::-;;;;;;;;;;-1:-1:-1;12687:35:0;;;;;;;;;;;;12409:75;;;;;;;;;;-1:-1:-1;12409:75:0;;;;-1:-1:-1;;;;;12409:75:0;;;;;;-1:-1:-1;;;;;6042:32:1;;;6024:51;;6012:2;5997:18;12409:75:0;5878:203:1;11981:31:0;;;;;;;;;;-1:-1:-1;11981:31:0;;;;-1:-1:-1;;;;;11981:31:0;;;12491:79;;;;;;;;;;;;12528:42;12491:79;;23980:238;;;;;;;;;;-1:-1:-1;23980:238:0;;;;;:::i;:::-;;:::i;10182:87::-;;;;;;;;;;-1:-1:-1;10255:6:0;;-1:-1:-1;;;;;10255:6:0;10182:87;;2592:104;;;;;;;;;;;;;:::i;14481:410::-;;;;;;;;;;-1:-1:-1;14481:410:0;;;;;:::i;:::-;;:::i;11955:19::-;;;;;;;;;;-1:-1:-1;11955:19:0;;;;-1:-1:-1;;;;;11955:19:0;;;14899:165;;;;;;;;;;-1:-1:-1;14899:165:0;;;;;:::i;:::-;;:::i;22803:195::-;;;;;;;;;;-1:-1:-1;22803:195:0;;;;;:::i;:::-;;:::i;12827:41::-;;;;;;;;;;-1:-1:-1;12827:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12877:34;;;;;;;;;;-1:-1:-1;12877:34:0;;;;;;;;22125:230;;;;;;;;;;-1:-1:-1;22125:230:0;;;;;:::i;:::-;;:::i;4283:201::-;;;;;;;;;;-1:-1:-1;4283:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4449:18:0;;;4417:7;4449:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4283:201;23344:508;;;;;;;;;;-1:-1:-1;23344:508:0;;;;;:::i;:::-;;:::i;10507:192::-;;;;;;;;;;-1:-1:-1;10507:192:0;;;;;:::i;:::-;;:::i;12729:39::-;;;;;;;;;;-1:-1:-1;12729:39:0;;;;;;;;;;;;11927:21;;;;;;;;;;-1:-1:-1;11927:21:0;;;;-1:-1:-1;;;;;11927:21:0;;;12059:38;;;;;;;;;;-1:-1:-1;12059:38:0;;;;-1:-1:-1;;;12059:38:0;;;;;;22697:98;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;;;;;;;;;22764:14:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;22764:23:0::1;-1:-1:-1::0;;;;22764:23:0;;::::1;::::0;;;::::1;::::0;;22697:98::o;2373:100::-;2427:13;2460:5;2453:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2373:100;:::o;22363:97::-;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;22429:14:::1;:23:::0;;-1:-1:-1;;22429:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22363:97::o;13600:161::-;13675:4;13692:39;175:10;13715:7;13724:6;13692:8;:39::i;:::-;-1:-1:-1;13749:4:0;13600:161;;;;;:::o;23134:202::-;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;23231:9:::1;23226:103;23250:8;:15;23246:1;:19;23226:103;;;23312:5;23287:9;:22;23297:8;23306:1;23297:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23287:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23287:22:0;:30;;-1:-1:-1;;23287:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23267:3;::::1;::::0;::::1;:::i;:::-;;;;23226:103;;;;23134:202:::0;;:::o;20594:152::-;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;20712:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;20712:26:0::1;-1:-1:-1::0;;;;20712:26:0;;::::1;::::0;;;::::1;::::0;;20594:152::o;22468:221::-;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;22531:14:::1;::::0;-1:-1:-1;;;22531:14:0;::::1;;;22530:15;22522:52;;;::::0;-1:-1:-1;;;22522:52:0;;7661:2:1;22522:52:0::1;::::0;::::1;7643:21:1::0;7700:2;7680:18;;;7673:30;7739:26;7719:18;;;7712:54;7783:18;;22522:52:0::1;7459:348:1::0;22522:52:0::1;22585:14;:21:::0;;-1:-1:-1;;;;22617:25:0;-1:-1:-1;;;22617:25:0;;;22669:12:::1;22653:13;:28:::0;22468:221::o;13769:448::-;13901:4;13918:36;13928:6;13936:9;13947:6;13918:9;:36::i;:::-;-1:-1:-1;;;;;13994:19:0;;13967:24;13994:19;;;:11;:19;;;;;;;;175:10;13994:33;;;;;;;;14046:26;;;;14038:79;;;;-1:-1:-1;;;14038:79:0;;8014:2:1;14038: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;;14038:79:0;7812:404:1;14038:79:0;14128:57;14137:6;175:10;14159:25;14178:6;14159:16;:25;:::i;:::-;14128:8;:57::i;:::-;-1:-1:-1;14205:4:0;;13769:448;-1:-1:-1;;;;13769:448:0:o;21656:298::-;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;21817:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;21801:13:::1;:53:::0;;;;;;;;;;;21910:2:::1;21848:5:::0;21874:23:::1;21835:10:::0;21823;21874:23:::1;:::i;:::-;:31;;;;:::i;:::-;21873:39;;21865:81;;;::::0;-1:-1:-1;;;21865:81:0;;8686:2:1;21865:81:0::1;::::0;::::1;8668:21:1::0;8725:2;8705:18;;;8698:30;8764:31;8744:18;;;8737:59;8813:18;;21865:81:0::1;8484:353:1::0;23006:120:0;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23091:19:0;;;::::1;;::::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;23091:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23006:120::o;14225:248::-;175:10;14341:4;14395:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14395:34:0;;;;;;;;;;14341:4;;14363:80;;14386:7;;14395:47;;14432:10;;14395:47;:::i;21962:155::-;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;22057:6:::1;:27:::0;;-1:-1:-1;;;;;22057:27:0;;::::1;-1:-1:-1::0;;;;;;22057:27:0;;::::1;;::::0;;;22095:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;21962:155::o;20754:302::-;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;20892:7:::1;20878:10;:21;;:39;;;;;20916:1;20903:10;:14;20878:39;20870:114;;;::::0;-1:-1:-1;;;20870:114:0;;9044:2:1;20870: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;;20870:114:0::1;8842:426:1::0;20870:114:0::1;21034:14;3418:2:::0;21034::::1;:14;:::i;:::-;21021:27;::::0;:10;:27:::1;:::i;:::-;20995:23;:53:::0;-1:-1:-1;20754:302:0:o;23860:112::-;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;10255:6;;23928:36:::1;::::0;-1:-1:-1;;;;;10255:6:0;;;;23928:36;::::1;;;::::0;23954:9;;23928:36:::1;::::0;;;23954:9;10255:6;23928:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23860:112:::0;:::o;21064:286::-;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;21212:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;21204:5:::1;:45:::0;;;;;;;;;;;21306:2:::1;21243:5:::0;21269:23:::1;21230:10:::0;21218;21269:23:::1;:::i;21358:290::-:0;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;21511:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;21499:9:::1;:49:::0;;;;;;;;;;;21604:2:::1;21542:5:::0;21568:23:::1;21529:10:::0;21517;21568:23:::1;:::i;10405:94::-:0;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;10470:21:::1;10488:1;10470:9;:21::i;:::-;10405:94::o:0;23980:238::-;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;24093:4:::1;-1:-1:-1::0;;;;;24073:25:0;::::1;::::0;24065:92:::1;;;::::0;-1:-1:-1;;;24065:92:0;;11031:2:1;24065: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;;24065:92:0::1;10829:418:1::0;24065:92:0::1;24175:8;-1:-1:-1::0;;;;;24168:25:0::1;;24194:7;10255:6:::0;;-1:-1:-1;;;;;10255:6:0;;10182:87;24194:7:::1;24168:42;::::0;-1:-1:-1;;;;;;24168:42:0::1;::::0;;;;;;-1:-1:-1;;;;;11444:32:1;;;24168:42:0::1;::::0;::::1;11426:51:1::0;11493:18;;;11486:34;;;11399:18;;24168:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2592:104::-:0;2648:13;2681:7;2674:14;;;;;:::i;14481:410::-;175:10;14602:4;14651:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14651:34:0;;;;;;;;;;14704:35;;;;14696:85;;;;-1:-1:-1;;;14696:85:0;;11983:2:1;14696: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;;14696:85:0;11781:401:1;14696:85:0;14792:67;175:10;14815:7;14824:34;14843:15;14824:16;:34;:::i;14792:67::-;-1:-1:-1;14879:4:0;;14481:410;-1:-1:-1;;;14481:410:0:o;14899:165::-;14977:4;14994:40;15004:10;15016:9;15027:6;14994:9;:40::i;22803:195::-;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22891:23:0;::::1;22883:69;;;;-1:-1:-1::0;;;22883:69:0::1;;;;;;;:::i;:::-;22963:15;:27:::0;;-1:-1:-1;;;;;;22963:27:0::1;-1:-1:-1::0;;;;;22963:27:0;;;::::1;::::0;;;::::1;::::0;;22803:195::o;22125:230::-;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22225:34:0;::::1;22217:80;;;;-1:-1:-1::0;;;22217:80:0::1;;;;;;;:::i;:::-;22308:16;:39:::0;;-1:-1:-1;;;;;;22308:39:0::1;-1:-1:-1::0;;;;;22308:39:0;;;::::1;::::0;;;::::1;::::0;;22125:230::o;23344:508::-;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;23470:6:::1;23460;:16;;23452:70;;;::::0;-1:-1:-1;;;23452:70:0;;12792:2:1;23452: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;;23452:70:0::1;12590:405:1::0;23452:70:0::1;23552:6;23541:7;:17;;23533:72;;;::::0;-1:-1:-1;;;23533:72:0;;13202:2:1;23533: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;;23533:72:0::1;13000:406:1::0;23533:72:0::1;23637:7;23624:9;:20;;23616:75;;;::::0;-1:-1:-1;;;23616:75:0;;13613:2:1;23616: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;;23616:75:0::1;13411:406:1::0;23616:75:0::1;23725:14;3418:2:::0;23725::::1;:14;:::i;:::-;23716:23;::::0;:6;:23:::1;:::i;:::-;23702:11;:37:::0;3418:2;23775:14:::1;::::0;:2:::1;:14;:::i;:::-;23765:24;::::0;:7;:24:::1;:::i;:::-;23750:12;:39:::0;23829:14:::1;3418:2:::0;23829::::1;:14;:::i;:::-;23817:26;::::0;:9;:26:::1;:::i;:::-;23800:14;:43:::0;-1:-1:-1;;;23344:508:0:o;10507:192::-;10255:6;;-1:-1:-1;;;;;10255:6:0;175:10;10317:23;10309:68;;;;-1:-1:-1;;;10309:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10596:22:0;::::1;10588:73;;;::::0;-1:-1:-1;;;10588:73:0;;14024:2:1;10588: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;;10588:73:0::1;13822:402:1::0;10588:73:0::1;10672:19;10682:8;10672:9;:19::i;:::-;10507:192:::0;:::o;9215:380::-;-1:-1:-1;;;;;9351:19:0;;9343:68;;;;-1:-1:-1;;;9343:68:0;;14431:2:1;9343: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;;9343:68:0;14229:400:1;9343:68:0;-1:-1:-1;;;;;9430:21:0;;9422:68;;;;-1:-1:-1;;;9422:68:0;;14836:2:1;9422: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;;9422:68:0;14634:398:1;9422:68:0;-1:-1:-1;;;;;9503:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9555:32;;3330:25:1;;;9555:32:0;;3303:18:1;9555:32:0;;;;;;;9215:380;;;:::o;15072:3019::-;15222:1;15213:6;:10;15205:64;;;;-1:-1:-1;;;15205:64:0;;15239:2:1;15205: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;;15205:64:0;15037:405:1;15205:64:0;-1:-1:-1;;;;;15287:17:0;;;;;;:9;:17;;;;;;;;15286:18;:43;;;;-1:-1:-1;;;;;;15309:20:0;;;;;;:9;:20;;;;;;;;15308:21;15286:43;15282:122;;;15354:14;;-1:-1:-1;;;15354:14:0;;;;15346:46;;;;-1:-1:-1;;;15346:46:0;;15649:2:1;15346:46:0;;;15631:21:1;15688:2;15668:18;;;15661:30;-1:-1:-1;;;15707:18:1;;;15700:49;15766:18;;15346:46:0;15447:343:1;15346:46:0;15430:4;;-1:-1:-1;;;;;15420:14:0;;;15430:4;;15420:14;:39;;;;-1:-1:-1;;;;;;15439:20:0;;;;;;:9;:20;;;;;;;;15438:21;15420:39;:54;;;;-1:-1:-1;15464:10:0;;-1:-1:-1;;;15464:10:0;;;;15463:11;15420:54;15416:306;;;15509:11;;15499:6;:21;;15491:63;;;;-1:-1:-1;;;15491:63:0;;15997:2:1;15491:63:0;;;15979:21:1;16036:2;16016:18;;;16009:30;16075:31;16055:18;;;16048:59;16124:18;;15491:63:0;15795:353:1;15491:63:0;15628:14;;15618:6;15595:20;15605:9;-1:-1:-1;;;;;3765:18:0;3738:7;3765:18;;;;;;;;;;;;3664:127;15595:20;:29;;;;:::i;:::-;:47;;15569:141;;;;-1:-1:-1;;;15569:141:0;;16355:2:1;15569:141:0;;;16337:21:1;;;16374:18;;;16367:30;16433:34;16413:18;;;16406:62;16485:18;;15569:141:0;16153:356:1;15569:141:0;15762:4;;-1:-1:-1;;;;;15752:14:0;;;15762:4;;15752:14;;;;:39;;-1:-1:-1;;;;;;15771:20:0;;;;;;:9;:20;;;;;;;;15770:21;15752:39;:61;;;;-1:-1:-1;;;;;;15796:17:0;;;;;;:9;:17;;;;;;;;15795:18;15752:61;:76;;;;-1:-1:-1;15818:10:0;;-1:-1:-1;;;15818:10:0;;;;15817:11;15752:76;15734:423;;;15873:12;;15863:6;:22;;15855:65;;;;-1:-1:-1;;;15855:65:0;;16716:2:1;15855:65:0;;;16698:21:1;16755:2;16735:18;;;16728:30;16794:32;16774:18;;;16767:60;16844:18;;15855:65:0;16514:354:1;15855:65:0;15952:4;;-1:-1:-1;;;;;15939:17:0;;;15952:4;;15939:17;15935:211;;16040:14;;16030:6;16007:20;16017:9;-1:-1:-1;;;;;3765:18:0;3738:7;3765:18;;;;;;;;;;;;3664:127;16007:20;:29;;;;:::i;:::-;:47;;15977:153;;;;-1:-1:-1;;;15977:153:0;;16355:2:1;15977:153:0;;;16337:21:1;;;16374:18;;;16367:30;16433:34;16413:18;;;16406:62;16485:18;;15977:153:0;16153:356:1;15977:153:0;16218:4;;-1:-1:-1;;;;;16208:14:0;;;16218:4;;16208:14;:32;;;;-1:-1:-1;16226:14:0;;;;16208:32;16205:126;;;16271:16;;16257:62;;-1:-1:-1;;;16257:62:0;;-1:-1:-1;;;;;11444:32:1;;;16257:62:0;;;11426:51:1;11493:18;;;11486:34;;;16271:16:0;;;;16257:43;;11399:18:1;;16257:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16205:126;16343:15;16369:14;16394:11;16416:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;16416:25:0;16529:10;;-1:-1:-1;;;16529:10:0;;;;;:31;;-1:-1:-1;;;;;;16543:17:0;;;;;;:9;:17;;;;;;;;16529:31;:55;;;-1:-1:-1;;;;;;16564:20:0;;;;;;:9;:20;;;;;;;;16529:55;16525:833;;;16605:1;16599:7;;16525:833;;;16670:4;;-1:-1:-1;;;;;16670:4:0;;;16657:17;;;;16653:705;;16796:14;;:9;16757:19;16718;;:58;;16757:19;16718:58;:::i;:::-;:92;;;;:::i;:::-;16856:24;;;;;;;;16871:9;16856:24;;;;;;;;;;;;;;;;;;16691:119;;-1:-1:-1;16691:119:0;;-1:-1:-1;16856:24:0;-1:-1:-1;16653:705:0;;;16912:4;;-1:-1:-1;;;;;16912:4:0;;;16902:14;;;;16898:460;;17030:10;;:5;16995:15;16960;;:50;;16995:15;16960:50;:::i;:::-;:80;;;;:::i;:::-;17087:20;;;;;;;;17102:5;17087:20;;;;;;;;;;;;;;;;;;16933:107;;-1:-1:-1;16933:107:0;;-1:-1:-1;17087:20:0;-1:-1:-1;16898:460:0;;;17253:18;;:13;17210:23;17167;;:66;;17210:23;17167:66;:::i;:::-;:104;;;;:::i;:::-;17318:28;;;;;;;;17333:13;17318:28;;;;;;;;;;;;;;;;;;17140:131;;-1:-1:-1;17140:131:0;;-1:-1:-1;17318:28:0;-1:-1:-1;16898:460:0;17396:3;17377:15;17386:6;17377;:15;:::i;:::-;17376:23;;;;:::i;:::-;17513:18;;17370:29;;-1:-1:-1;;;;17513:18:0;;;;:36;;;;-1:-1:-1;17545:4:0;;-1:-1:-1;;;;;17535:14:0;;;17545:4;;17535:14;;17513:36;17509:72;;;17551:30;17559:7;17568:12;17551:7;:30::i;:::-;17623:48;17639:6;17647:9;17658:12;17667:3;17658:6;:12;:::i;:::-;17623:15;:48::i;:::-;17686:7;;17682:402;;17758:11;;17754:317;;17790:18;17842:3;17821:12;:17;;;17812:6;:26;;;;:::i;:::-;17811:34;;;;:::i;:::-;17790:55;-1:-1:-1;17864:17:0;17790:55;17905:3;17885:16;17894:7;17885:6;:16;:::i;:::-;17884:24;;;;:::i;:::-;:37;;;;:::i;:::-;17864:57;;17940:49;17956:6;17972:4;17979:9;17940:15;:49::i;:::-;18008:47;18024:6;12528:42;18044:10;18008:15;:47::i;:::-;17771:300;;17754:317;15194:2897;;;;15072:3019;;;:::o;10707:173::-;10782:6;;;-1:-1:-1;;;;;10799:17:0;;;-1:-1:-1;;;;;;10799:17:0;;;;;;;10832:40;;10782:6;;;10799:17;10782:6;;10832:40;;10763:16;;10832:40;10752:128;10707:173;:::o;18099:1437::-;12959:10;;-1:-1:-1;;;12959:10:0;;;;12954:110;;12986:10;:17;;-1:-1:-1;;;;12986:17:0;-1:-1:-1;;;12986:17:0;;;18190:49;;18221:7:::1;18190:49;18295:4;18251:23;3765:18:::0;;;;;;;;;;;18335:23:::1;::::0;18316:42;::::1;18312:1217;;18405:1;18379:23;;:27;18375:109;;;-1:-1:-1::0;18445:23:0::1;::::0;18375:109:::1;18555:19;18577:11;:7:::0;18587:1:::1;18577:11;:::i;:::-;18555:33;;18603:32;18697:11;18657:9;:19;;;18639:15;:37;;;;:::i;:::-;18638:70;;;;:::i;:::-;18603:105:::0;-1:-1:-1;18723:14:0::1;18740:42;18603:105:::0;18740:15;:42:::1;:::i;:::-;18723:59:::0;-1:-1:-1;18824:21:0::1;18862:24;18723:59:::0;18862:16:::1;:24::i;:::-;18903:20;18926:38;18950:14:::0;18926:21:::1;:38;:::i;:::-;18903:61;;18979:19;19031:9;:19;;;19017:11;:33;;;;:::i;:::-;19001:50;::::0;:12;:50:::1;:::i;:::-;18979:72;;19066:29;19112:9;:19;;;19098:11;:33;;;;:::i;:::-;19066:65:::0;-1:-1:-1;19152:25:0;;19148:172:::1;;19243:61;19256:24;19282:21;19243:12;:61::i;:::-;19377:19:::0;;19336:20:::1;::::0;19359:15:::1;:11:::0;19373:1:::1;19359:15;:::i;:::-;:37;;;;:::i;:::-;19336:60:::0;-1:-1:-1;19415:16:0;;19411:105:::1;;19460:15;::::0;19452:48:::1;::::0;-1:-1:-1;;;;;19460:15:0::1;19487:12:::0;19452:34:::1;:48::i;:::-;18360:1169;;;;;;;;18312:1217;18177:1359;13018:1;13034:10:::0;:18;;-1:-1:-1;;;;13034:18:0;;;18099:1437;;:::o;7796:578::-;-1:-1:-1;;;;;7936:20:0;;7928:70;;;;-1:-1:-1;;;7928:70:0;;17297:2:1;7928: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;;7928:70:0;17095:401:1;7928:70:0;-1:-1:-1;;;;;8017:23:0;;8009:71;;;;-1:-1:-1;;;8009:71:0;;17703:2:1;8009: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;;8009:71:0;17501:399:1;8009:71:0;-1:-1:-1;;;;;8117:17:0;;8093:21;8117:17;;;;;;;;;;;8153:23;;;;8145:74;;;;-1:-1:-1;;;8145:74:0;;18107:2:1;8145: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;;8145:74:0;17905:402:1;8145:74:0;8250:22;8266:6;8250:13;:22;:::i;:::-;-1:-1:-1;;;;;8230:17:0;;;:9;:17;;;;;;;;;;;:42;;;;8283:20;;;;;;;;:30;;8307:6;;8230:9;8283:30;;8307:6;;8283:30;:::i;:::-;;;;;;;;8348:9;-1:-1:-1;;;;;8331:35:0;8340:6;-1:-1:-1;;;;;8331:35:0;;8359:6;8331:35;;;;3330:25:1;;3318:2;3303:18;;3184:177;8331:35:0;;;;;;;;7917:457;7796:578;;;:::o;19544:534::-;19694:16;;;19708:1;19694:16;;;;;;;;19670:21;;19694:16;;;;;;;;;;-1:-1:-1;19694:16:0;19670:40;;19739:4;19721;19726:1;19721:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19721:23:0;;;:7;;;;;;;;;;:23;;;;19765:6;;:13;;;-1:-1:-1;;;19765:13:0;;;;:6;;;;;:11;;:13;;;;;19721:7;;19765:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19755:4;19760:1;19755:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19755:23:0;;;:7;;;;;;;;;:23;19823:6;;19791:53;;19808:4;;19823:6;19832:11;19791:8;:53::i;:::-;19883:6;;:187;;-1:-1:-1;;;19883:187:0;;-1:-1:-1;;;;;19883:6:0;;;;:57;;:187;;19955:11;;19883:6;;19997:4;;20024;;20044:15;;19883:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19599:479;19544:534;:::o;20086:500::-;20266:6;;20234:53;;20251:4;;-1:-1:-1;;;;;20266:6:0;20275:11;20234:8;:53::i;:::-;20330:6;;:248;;-1:-1:-1;;;20330:248:0;;20395:4;20330:248;;;19894:34:1;19944:18;;;19937:34;;;20330:6:0;19987:18:1;;;19980:34;;;20030:18;;;20023:34;12528:42:0;20073:19:1;;;20066:44;20552:15:0;20126:19:1;;;20119:35;-1:-1:-1;;;;;20330:6:0;;;;:22;;20361:9;;19828:19:1;;20330:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20086:500;;:::o;9625:319::-;9740:6;9715:21;:31;;9707:73;;;;-1:-1:-1;;;9707:73:0;;20678:2:1;9707:73:0;;;20660:21:1;20717:2;20697:18;;;20690:30;20756:31;20736:18;;;20729:59;20805:18;;9707:73:0;20476:353:1;9707:73:0;9794:12;9812:9;-1:-1:-1;;;;;9812:14:0;9835:6;9812:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9793:54;;;9866:7;9858:78;;;;-1:-1:-1;;;9858:78:0;;21246:2:1;9858: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;;9858: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://f6f16938f54313acc1290585d1ef130218cbff056d085149702746addad47258
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.