ETH Price: $3,393.29 (+1.84%)

Token

Agnus AI (AGN)
 

Overview

Max Total Supply

10,000,000,000 AGN

Holders

944

Market

Price

$0.00 @ 0.000000 ETH (-6.84%)

Onchain Market Cap

$234,770.85

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
57,636,644.050660018497687615 AGN

Value
$1,353.14 ( ~0.398769074884951 Eth) [0.5764%]
0x116D8ADE9e80DD2F30FC06cbEc139d6d19624d4f
Loading...
Loading
Loading...
Loading
Loading...
Loading

Market

Volume (24H):$1,332.03
Market Capitalization:$0.00
Circulating Supply:0.00 AGN
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
AgnusAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-05
*/

//SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.19;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

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

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

    /** This function will be used to generate the total supply
    * while deploying the contract
    *
    * This function can never be called again after deploying contract
    */
    function _tokengeneration(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: generation to the zero address");

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

        _totalSupply = amount;
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

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

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

    IRouter public router;
    address public pair;

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

    uint256 private  tokenLiquidityThreshold = 1e7  * 10**18;
    uint256 public maxWalletLimit = 2e8 * 10**18;

    uint256 private  genesis_block;
    uint256 private deadline = 0;
    uint256 private launchtax = 99;

    address private  marketingWallet = 0x84548dc7A884ed3903faa0D352e180A9d45e04CE;
    address private  devWallet = 0xfBDAA92D06dC1097838Ab0E45Bfd8aBe49568a26;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

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

    Taxes public taxes = Taxes(80, 19, 0);
    Taxes public sellTaxes = Taxes(80, 19, 0);

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


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

    constructor() ERC20("Agnus AI", "AGN") {
        _tokengeneration(msg.sender, 1e10 * 10**decimals());

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

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[msg.sender] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[devWallet] = true;
        exemptFee[deadWallet] = true;
        exemptFee[0xD152f549545093347A162Dce210e7293f1452150] = true;
        exemptFee[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true;
    }

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

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

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

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

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

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

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

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

        fee = (amount * feesum) / 100;

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

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

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {

	if(feeswap == 0){
            return;
        }	

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

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

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

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

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

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

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

        }
    }

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

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

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

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

        // add the liquidity
        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            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
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function UpdateBuyTaxes(
        uint256 _marketing,
        uint256 _dev,
        uint256 _liquidity
    ) external onlyOwner {
        taxes = Taxes(_marketing, _dev, _liquidity);
    }

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

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

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

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

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

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

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

    function AddExemptFee(address _address) external onlyOwner {
        exemptFee[_address] = true;
    }

    function RemoveExemptFee(address _address) external onlyOwner {
        exemptFee[_address] = false;
    }

    function AddbulkExemptFee(address[] memory accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = true;
        }
    }

    function RemovebulkExemptFee(address[] memory accounts) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = false;
        }
    }

    function updateMaxWalletLimit(uint256 maxWallet) external onlyOwner {
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

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

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        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":"address","name":"_address","type":"address"}],"name":"AddExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"AddbulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"RemoveExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"RemovebulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"UpdateBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsEarlyBuyer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"liquidity","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":"dev","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsEarlyBuyer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b191690556a084595161401484a0000006008556aa56fa5b99019a5c80000006009556000600b8190556063600c55600d80546001600160a01b03199081167384548dc7a884ed3903faa0d352e180a9d45e04ce17909155600e805490911673fbdaa92d06dc1097838ab0e45bfd8abe49568a2617905560506080819052601360a081905260c0839052600f8290556010819055601183905561014060405260e08290526101008190526101208390526012919091558055601455348015620000d157600080fd5b506040518060400160405280600881526020016741676e757320414960c01b8152506040518060400160405280600381526020016220a3a760e91b8152508160039081620001209190620005b6565b5060046200012f8282620005b6565b5050506200014c62000146620003fa60201b60201c565b620003fe565b62000176336200015f6012600a62000797565b62000170906402540be400620007af565b62000450565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f69190620007c9565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026a9190620007c9565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002de9190620007c9565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260156020526040808220805460ff1990811660019081179092553384528284208054821683179055600d54851684528284208054821683179055600e54909416835290822080548416821790557f7ed1dca03d96f947ab02d66053f47073699eb6287021936c92f54972932767e580548416821790557f61da876eafb9e7a52a8d714d77cf5d21023c5ef8c18b2a022eb674aa669677ca805484168217905573663a5c229c09b049e36dcc11a9b0d4a8eb9db2149091527fcea335029fafa49a185b37c12c6d236dea1ad69c0b4cb1df9929b5e731c72c378054909216179055620007f4565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620004b95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200053d57607f821691505b6020821081036200055e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200050d57600081815260208120601f850160051c810160208610156200058d5750805b601f850160051c820191505b81811015620005ae5782815560010162000599565b505050505050565b81516001600160401b03811115620005d257620005d262000512565b620005ea81620005e3845462000528565b8462000564565b602080601f831160018114620006225760008415620006095750858301515b600019600386901b1c1916600185901b178555620005ae565b600085815260208120601f198616915b82811015620006535788860151825594840194600190910190840162000632565b5085821015620006725787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006d9578160001904821115620006bd57620006bd62000682565b80851615620006cb57918102915b93841c93908002906200069d565b509250929050565b600082620006f25750600162000791565b81620007015750600062000791565b81600181146200071a5760028114620007255762000745565b600191505062000791565b60ff84111562000739576200073962000682565b50506001821b62000791565b5060208310610133831016604e8410600b84101617156200076a575081810a62000791565b62000776838362000698565b80600019048211156200078d576200078d62000682565b0290505b92915050565b6000620007a860ff841683620006e1565b9392505050565b808202811582820484141762000791576200079162000682565b600060208284031215620007dc57600080fd5b81516001600160a01b0381168114620007a857600080fd5b61257380620008046000396000f3fe6080604052600436106102345760003560e01c8063832c2bd21161012e578063a8aa1b31116100ab578063edaa11681161006f578063edaa1168146106e0578063f2fde38b14610700578063f570d4de14610720578063f66895a314610740578063f887ea401461075f57600080fd5b8063a8aa1b311461060a578063a9059cbb1461062a578063aacebbe31461064a578063c5d32bb21461066a578063dd62ed3e1461069a57600080fd5b80638da5cb5b116100f25780638da5cb5b1461057757806395d89b41146105955780639d282cd6146105aa5780639e252f00146105ca578063a457c2d7146105ea57600080fd5b8063832c2bd2146104d45780638514022d146104f457806385141a77146105145780638a8c523c146105425780638cd4426d1461055757600080fd5b806339509351116101bc5780635dbdb7e3116101805780635dbdb7e31461041957806366a88d961461043957806370a082311461044f578063715018a614610485578063728f8eea1461049a57600080fd5b8063395093511461037857806342b6fa11146103985780634324deae146103b85780634ada218b146103d85780634e736f22146103f957600080fd5b80631816467f116102035780631816467f146102dc578063215d92a6146102fc57806323b872dd1461031c578063251ef0951461033c578063313ce5671461035c57600080fd5b806306fdde0314610240578063095ea7b31461026b5780631340538f1461029b57806318160ddd146102bd57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561077f565b6040516102629190611f47565b60405180910390f35b34801561027757600080fd5b5061028b610286366004611fba565b610811565b6040519015158152602001610262565b3480156102a757600080fd5b506102bb6102b6366004611ff4565b610828565b005b3480156102c957600080fd5b506002545b604051908152602001610262565b3480156102e857600080fd5b506102bb6102f7366004612018565b610879565b34801561030857600080fd5b506102bb6103173660046120ed565b6108c5565b34801561032857600080fd5b5061028b61033736600461213f565b61095b565b34801561034857600080fd5b506102bb610357366004612180565b610a0c565b34801561036857600080fd5b5060405160128152602001610262565b34801561038457600080fd5b5061028b610393366004611fba565b610aa2565b3480156103a457600080fd5b506102bb6103b33660046121bd565b610ad9565b3480156103c457600080fd5b506102bb6103d33660046121bd565b610b1f565b3480156103e457600080fd5b5060075461028b90600160b01b900460ff1681565b34801561040557600080fd5b506102bb6104143660046121d6565b610b65565b34801561042557600080fd5b506102bb610434366004612018565b610bb5565b34801561044557600080fd5b506102ce60095481565b34801561045b57600080fd5b506102ce61046a366004612018565b6001600160a01b031660009081526020819052604090205490565b34801561049157600080fd5b506102bb610c03565b3480156104a657600080fd5b50600f546010546011546104b992919083565b60408051938452602084019290925290820152606001610262565b3480156104e057600080fd5b506102bb6104ef366004612018565b610c39565b34801561050057600080fd5b506102bb61050f366004612202565b610c84565b34801561052057600080fd5b5061052a61dead81565b6040516001600160a01b039091168152602001610262565b34801561054e57600080fd5b506102bb610cd9565b34801561056357600080fd5b506102bb610572366004611fba565b610d78565b34801561058357600080fd5b506005546001600160a01b031661052a565b3480156105a157600080fd5b50610255610e34565b3480156105b657600080fd5b506102bb6105c53660046121d6565b610e43565b3480156105d657600080fd5b506102bb6105e53660046121bd565b610e93565b3480156105f657600080fd5b5061028b610605366004611fba565b610ef7565b34801561061657600080fd5b5060075461052a906001600160a01b031681565b34801561063657600080fd5b5061028b610645366004611fba565b610f92565b34801561065657600080fd5b506102bb610665366004612018565b610f9f565b34801561067657600080fd5b5061028b610685366004612018565b60156020526000908152604090205460ff1681565b3480156106a657600080fd5b506102ce6106b5366004612230565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106ec57600080fd5b506102bb6106fb3660046121bd565b610feb565b34801561070c57600080fd5b506102bb61071b366004612018565b611082565b34801561072c57600080fd5b506102bb61073b366004612180565b61111d565b34801561074c57600080fd5b506012546013546014546104b992919083565b34801561076b57600080fd5b5060065461052a906001600160a01b031681565b60606003805461078e9061225e565b80601f01602080910402602001604051908101604052809291908181526020018280546107ba9061225e565b80156108075780601f106107dc57610100808354040283529160200191610807565b820191906000526020600020905b8154815290600101906020018083116107ea57829003601f168201915b5050505050905090565b600061081e3384846111af565b5060015b92915050565b6005546001600160a01b0316331461085b5760405162461bcd60e51b815260040161085290612298565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b031633146108a35760405162461bcd60e51b815260040161085290612298565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146108ef5760405162461bcd60e51b815260040161085290612298565b60005b8251811015610956578160166000858481518110610912576109126122cd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061094e816122f9565b9150506108f2565b505050565b60006109688484846112d3565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109ed5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610852565b610a0185336109fc8685612312565b6111af565b506001949350505050565b6005546001600160a01b03163314610a365760405162461bcd60e51b815260040161085290612298565b60005b8151811015610a9e57600060156000848481518110610a5a57610a5a6122cd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a96816122f9565b915050610a39565b5050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161081e9185906109fc908690612325565b6005546001600160a01b03163314610b035760405162461bcd60e51b815260040161085290612298565b610b0f6012600a61241c565b610b19908261242b565b60085550565b6005546001600160a01b03163314610b495760405162461bcd60e51b815260040161085290612298565b610b556012600a61241c565b610b5f908261242b565b60095550565b6005546001600160a01b03163314610b8f5760405162461bcd60e51b815260040161085290612298565b604080516060810182528481526020810184905201819052601292909255601355601455565b6005546001600160a01b03163314610bdf5760405162461bcd60e51b815260040161085290612298565b6001600160a01b03166000908152601560205260409020805460ff19166001179055565b6005546001600160a01b03163314610c2d5760405162461bcd60e51b815260040161085290612298565b610c37600061187f565b565b6005546001600160a01b03163314610c635760405162461bcd60e51b815260040161085290612298565b6001600160a01b03166000908152601560205260409020805460ff19169055565b6005546001600160a01b03163314610cae5760405162461bcd60e51b815260040161085290612298565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d035760405162461bcd60e51b815260040161085290612298565b600754600160b01b900460ff1615610d5d5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610852565b6007805461ffff60a81b191661010160a81b17905543600a55565b6005546001600160a01b03163314610da25760405162461bcd60e51b815260040161085290612298565b816001600160a01b031663a9059cbb610dc36005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610e10573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109569190612442565b60606004805461078e9061225e565b6005546001600160a01b03163314610e6d5760405162461bcd60e51b815260040161085290612298565b604080516060810182528481526020810184905201819052600f92909255601055601155565b6005546001600160a01b03163314610ebd5760405162461bcd60e51b815260040161085290612298565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a9e573d6000803e3d6000fd5b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f795760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610852565b610f8833856109fc8685612312565b5060019392505050565b600061081e3384846112d3565b6005546001600160a01b03163314610fc95760405162461bcd60e51b815260040161085290612298565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110155760405162461bcd60e51b815260040161085290612298565b600754600160b01b900460ff161561107d5760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610852565b600b55565b6005546001600160a01b031633146110ac5760405162461bcd60e51b815260040161085290612298565b6001600160a01b0381166111115760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610852565b61111a8161187f565b50565b6005546001600160a01b031633146111475760405162461bcd60e51b815260040161085290612298565b60005b8151811015610a9e5760016015600084848151811061116b5761116b6122cd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806111a7816122f9565b91505061114a565b6001600160a01b0383166112115760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610852565b6001600160a01b0382166112725760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610852565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116113355760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610852565b6001600160a01b03831660009081526016602052604090205460ff1615801561137757506001600160a01b03821660009081526016602052604090205460ff16155b6113c35760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e73000000000000006044820152606401610852565b6001600160a01b03831660009081526015602052604090205460ff1615801561140557506001600160a01b03821660009081526015602052604090205460ff16155b1561145957600754600160b01b900460ff166114595760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610852565b6007546001600160a01b03848116911614801561148f57506001600160a01b03821660009081526015602052604090205460ff16155b80156114a55750600754600160a01b900460ff16155b1561152557600954816114cd846001600160a01b031660009081526020819052604090205490565b6114d79190612325565b11156115255760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610852565b6007546001600160a01b0384811691161480159061155c57506001600160a01b03821660009081526015602052604090205460ff16155b801561158157506001600160a01b03831660009081526015602052604090205460ff16155b80156115975750600754600160a01b900460ff16155b1561162c576007546001600160a01b0383811691161461162c57600954816115d4846001600160a01b031660009081526020819052604090205490565b6115de9190612325565b111561162c5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610852565b600080600061165560405180606001604052806000815260200160008152602001600081525090565b6001600160a01b03871660009081526015602052604081205460ff1615801561169757506001600160a01b03871660009081526015602052604090205460ff16155b80156116b15750600b54600a546116ae9190612325565b43105b600754909150600160a01b900460ff16806116e457506001600160a01b03881660009081526015602052604090205460ff165b8061170757506001600160a01b03871660009081526015602052604090205460ff165b1561171557600092506117df565b6007546001600160a01b038881169116148015611730575080155b15611780576013546012546014546117489190612325565b6117529190612325565b60408051606081018252601254815260135460208201526014549181019190915290955085945091506117df565b806117d057601054600f546011546117989190612325565b6117a29190612325565b60408051606081018252600f54815260105460208201526011549181019190915290955085945091506117df565b80156117df57600c5494508493505b60646117eb858861242b565b6117f5919061245f565b600754909350600160a81b900460ff16801561181f57506007546001600160a01b03898116911614155b1561182e5761182e85836118d1565b611842888861183d868a612312565b611a4a565b8215611875578415611875576000606461185c878961242b565b611866919061245f565b9050611873893083611a4a565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610a9e576007805460ff60a01b1916600160a01b1790558115611a3957306000908152602081905260409020546008548110611a37576001600854111561192457506008545b600061193184600261242b565b9050600081846040015184611946919061242b565b611950919061245f565b9050600061195e8285612312565b90504761196a82611c22565b60006119768247612312565b9050600087604001518661198a9190612312565b611994908361245f565b905060008860400151826119a8919061242b565b905080156119ba576119ba8682611d7c565b88516000906119ca84600261242b565b6119d4919061242b565b905080156119f257600d546119f2906001600160a01b031682611e2e565b60208a0151600090611a0585600261242b565b611a0f919061242b565b90508015611a2d57600e54611a2d906001600160a01b031682611e2e565b5050505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611aae5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610852565b6001600160a01b038216611b105760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610852565b6001600160a01b03831660009081526020819052604090205481811015611b885760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610852565b611b928282612312565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611bc8908490612325565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c1491815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c5757611c576122cd565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611cb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd49190612481565b81600181518110611ce757611ce76122cd565b6001600160a01b039283166020918202929092010152600654611d0d91309116846111af565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d4690859060009086903090429060040161249e565b600060405180830381600087803b158015611d6057600080fd5b505af1158015611d74573d6000803e3d6000fd5b505050505050565b600654611d949030906001600160a01b0316846111af565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611e02573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e27919061250f565b5050505050565b80471015611e7e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610852565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ecb576040519150601f19603f3d011682016040523d82523d6000602084013e611ed0565b606091505b50509050806109565760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610852565b600060208083528351808285015260005b81811015611f7457858101830151858201604001528201611f58565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461111a57600080fd5b8035611fb581611f95565b919050565b60008060408385031215611fcd57600080fd5b8235611fd881611f95565b946020939093013593505050565b801515811461111a57600080fd5b60006020828403121561200657600080fd5b813561201181611fe6565b9392505050565b60006020828403121561202a57600080fd5b813561201181611f95565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261205c57600080fd5b8135602067ffffffffffffffff8083111561207957612079612035565b8260051b604051601f19603f8301168101818110848211171561209e5761209e612035565b6040529384528581018301938381019250878511156120bc57600080fd5b83870191505b848210156120e2576120d382611faa565b835291830191908301906120c2565b979650505050505050565b6000806040838503121561210057600080fd5b823567ffffffffffffffff81111561211757600080fd5b6121238582860161204b565b925050602083013561213481611fe6565b809150509250929050565b60008060006060848603121561215457600080fd5b833561215f81611f95565b9250602084013561216f81611f95565b929592945050506040919091013590565b60006020828403121561219257600080fd5b813567ffffffffffffffff8111156121a957600080fd5b6121b58482850161204b565b949350505050565b6000602082840312156121cf57600080fd5b5035919050565b6000806000606084860312156121eb57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561221557600080fd5b823561222081611f95565b9150602083013561213481611fe6565b6000806040838503121561224357600080fd5b823561224e81611f95565b9150602083013561213481611f95565b600181811c9082168061227257607f821691505b60208210810361229257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161230b5761230b6122e3565b5060010190565b81810381811115610822576108226122e3565b80820180821115610822576108226122e3565b600181815b80851115612373578160001904821115612359576123596122e3565b8085161561236657918102915b93841c939080029061233d565b509250929050565b60008261238a57506001610822565b8161239757506000610822565b81600181146123ad57600281146123b7576123d3565b6001915050610822565b60ff8411156123c8576123c86122e3565b50506001821b610822565b5060208310610133831016604e8410600b84101617156123f6575081810a610822565b6124008383612338565b8060001904821115612414576124146122e3565b029392505050565b600061201160ff84168361237b565b8082028115828204841417610822576108226122e3565b60006020828403121561245457600080fd5b815161201181611fe6565b60008261247c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561249357600080fd5b815161201181611f95565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124ee5784516001600160a01b0316835293830193918301916001016124c9565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561252457600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220bc8b13af1106894322271a1ab25b94a6812c534d1f40d2a506cc10789723895464736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102345760003560e01c8063832c2bd21161012e578063a8aa1b31116100ab578063edaa11681161006f578063edaa1168146106e0578063f2fde38b14610700578063f570d4de14610720578063f66895a314610740578063f887ea401461075f57600080fd5b8063a8aa1b311461060a578063a9059cbb1461062a578063aacebbe31461064a578063c5d32bb21461066a578063dd62ed3e1461069a57600080fd5b80638da5cb5b116100f25780638da5cb5b1461057757806395d89b41146105955780639d282cd6146105aa5780639e252f00146105ca578063a457c2d7146105ea57600080fd5b8063832c2bd2146104d45780638514022d146104f457806385141a77146105145780638a8c523c146105425780638cd4426d1461055757600080fd5b806339509351116101bc5780635dbdb7e3116101805780635dbdb7e31461041957806366a88d961461043957806370a082311461044f578063715018a614610485578063728f8eea1461049a57600080fd5b8063395093511461037857806342b6fa11146103985780634324deae146103b85780634ada218b146103d85780634e736f22146103f957600080fd5b80631816467f116102035780631816467f146102dc578063215d92a6146102fc57806323b872dd1461031c578063251ef0951461033c578063313ce5671461035c57600080fd5b806306fdde0314610240578063095ea7b31461026b5780631340538f1461029b57806318160ddd146102bd57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561077f565b6040516102629190611f47565b60405180910390f35b34801561027757600080fd5b5061028b610286366004611fba565b610811565b6040519015158152602001610262565b3480156102a757600080fd5b506102bb6102b6366004611ff4565b610828565b005b3480156102c957600080fd5b506002545b604051908152602001610262565b3480156102e857600080fd5b506102bb6102f7366004612018565b610879565b34801561030857600080fd5b506102bb6103173660046120ed565b6108c5565b34801561032857600080fd5b5061028b61033736600461213f565b61095b565b34801561034857600080fd5b506102bb610357366004612180565b610a0c565b34801561036857600080fd5b5060405160128152602001610262565b34801561038457600080fd5b5061028b610393366004611fba565b610aa2565b3480156103a457600080fd5b506102bb6103b33660046121bd565b610ad9565b3480156103c457600080fd5b506102bb6103d33660046121bd565b610b1f565b3480156103e457600080fd5b5060075461028b90600160b01b900460ff1681565b34801561040557600080fd5b506102bb6104143660046121d6565b610b65565b34801561042557600080fd5b506102bb610434366004612018565b610bb5565b34801561044557600080fd5b506102ce60095481565b34801561045b57600080fd5b506102ce61046a366004612018565b6001600160a01b031660009081526020819052604090205490565b34801561049157600080fd5b506102bb610c03565b3480156104a657600080fd5b50600f546010546011546104b992919083565b60408051938452602084019290925290820152606001610262565b3480156104e057600080fd5b506102bb6104ef366004612018565b610c39565b34801561050057600080fd5b506102bb61050f366004612202565b610c84565b34801561052057600080fd5b5061052a61dead81565b6040516001600160a01b039091168152602001610262565b34801561054e57600080fd5b506102bb610cd9565b34801561056357600080fd5b506102bb610572366004611fba565b610d78565b34801561058357600080fd5b506005546001600160a01b031661052a565b3480156105a157600080fd5b50610255610e34565b3480156105b657600080fd5b506102bb6105c53660046121d6565b610e43565b3480156105d657600080fd5b506102bb6105e53660046121bd565b610e93565b3480156105f657600080fd5b5061028b610605366004611fba565b610ef7565b34801561061657600080fd5b5060075461052a906001600160a01b031681565b34801561063657600080fd5b5061028b610645366004611fba565b610f92565b34801561065657600080fd5b506102bb610665366004612018565b610f9f565b34801561067657600080fd5b5061028b610685366004612018565b60156020526000908152604090205460ff1681565b3480156106a657600080fd5b506102ce6106b5366004612230565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106ec57600080fd5b506102bb6106fb3660046121bd565b610feb565b34801561070c57600080fd5b506102bb61071b366004612018565b611082565b34801561072c57600080fd5b506102bb61073b366004612180565b61111d565b34801561074c57600080fd5b506012546013546014546104b992919083565b34801561076b57600080fd5b5060065461052a906001600160a01b031681565b60606003805461078e9061225e565b80601f01602080910402602001604051908101604052809291908181526020018280546107ba9061225e565b80156108075780601f106107dc57610100808354040283529160200191610807565b820191906000526020600020905b8154815290600101906020018083116107ea57829003601f168201915b5050505050905090565b600061081e3384846111af565b5060015b92915050565b6005546001600160a01b0316331461085b5760405162461bcd60e51b815260040161085290612298565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b031633146108a35760405162461bcd60e51b815260040161085290612298565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146108ef5760405162461bcd60e51b815260040161085290612298565b60005b8251811015610956578160166000858481518110610912576109126122cd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061094e816122f9565b9150506108f2565b505050565b60006109688484846112d3565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109ed5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610852565b610a0185336109fc8685612312565b6111af565b506001949350505050565b6005546001600160a01b03163314610a365760405162461bcd60e51b815260040161085290612298565b60005b8151811015610a9e57600060156000848481518110610a5a57610a5a6122cd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610a96816122f9565b915050610a39565b5050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161081e9185906109fc908690612325565b6005546001600160a01b03163314610b035760405162461bcd60e51b815260040161085290612298565b610b0f6012600a61241c565b610b19908261242b565b60085550565b6005546001600160a01b03163314610b495760405162461bcd60e51b815260040161085290612298565b610b556012600a61241c565b610b5f908261242b565b60095550565b6005546001600160a01b03163314610b8f5760405162461bcd60e51b815260040161085290612298565b604080516060810182528481526020810184905201819052601292909255601355601455565b6005546001600160a01b03163314610bdf5760405162461bcd60e51b815260040161085290612298565b6001600160a01b03166000908152601560205260409020805460ff19166001179055565b6005546001600160a01b03163314610c2d5760405162461bcd60e51b815260040161085290612298565b610c37600061187f565b565b6005546001600160a01b03163314610c635760405162461bcd60e51b815260040161085290612298565b6001600160a01b03166000908152601560205260409020805460ff19169055565b6005546001600160a01b03163314610cae5760405162461bcd60e51b815260040161085290612298565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610d035760405162461bcd60e51b815260040161085290612298565b600754600160b01b900460ff1615610d5d5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c65640000000000006044820152606401610852565b6007805461ffff60a81b191661010160a81b17905543600a55565b6005546001600160a01b03163314610da25760405162461bcd60e51b815260040161085290612298565b816001600160a01b031663a9059cbb610dc36005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610e10573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109569190612442565b60606004805461078e9061225e565b6005546001600160a01b03163314610e6d5760405162461bcd60e51b815260040161085290612298565b604080516060810182528481526020810184905201819052600f92909255601055601155565b6005546001600160a01b03163314610ebd5760405162461bcd60e51b815260040161085290612298565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610a9e573d6000803e3d6000fd5b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f795760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610852565b610f8833856109fc8685612312565b5060019392505050565b600061081e3384846112d3565b6005546001600160a01b03163314610fc95760405162461bcd60e51b815260040161085290612298565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110155760405162461bcd60e51b815260040161085290612298565b600754600160b01b900460ff161561107d5760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b6064820152608401610852565b600b55565b6005546001600160a01b031633146110ac5760405162461bcd60e51b815260040161085290612298565b6001600160a01b0381166111115760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610852565b61111a8161187f565b50565b6005546001600160a01b031633146111475760405162461bcd60e51b815260040161085290612298565b60005b8151811015610a9e5760016015600084848151811061116b5761116b6122cd565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806111a7816122f9565b91505061114a565b6001600160a01b0383166112115760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610852565b6001600160a01b0382166112725760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610852565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116113355760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610852565b6001600160a01b03831660009081526016602052604090205460ff1615801561137757506001600160a01b03821660009081526016602052604090205460ff16155b6113c35760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e73000000000000006044820152606401610852565b6001600160a01b03831660009081526015602052604090205460ff1615801561140557506001600160a01b03821660009081526015602052604090205460ff16155b1561145957600754600160b01b900460ff166114595760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610852565b6007546001600160a01b03848116911614801561148f57506001600160a01b03821660009081526015602052604090205460ff16155b80156114a55750600754600160a01b900460ff16155b1561152557600954816114cd846001600160a01b031660009081526020819052604090205490565b6114d79190612325565b11156115255760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610852565b6007546001600160a01b0384811691161480159061155c57506001600160a01b03821660009081526015602052604090205460ff16155b801561158157506001600160a01b03831660009081526015602052604090205460ff16155b80156115975750600754600160a01b900460ff16155b1561162c576007546001600160a01b0383811691161461162c57600954816115d4846001600160a01b031660009081526020819052604090205490565b6115de9190612325565b111561162c5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610852565b600080600061165560405180606001604052806000815260200160008152602001600081525090565b6001600160a01b03871660009081526015602052604081205460ff1615801561169757506001600160a01b03871660009081526015602052604090205460ff16155b80156116b15750600b54600a546116ae9190612325565b43105b600754909150600160a01b900460ff16806116e457506001600160a01b03881660009081526015602052604090205460ff165b8061170757506001600160a01b03871660009081526015602052604090205460ff165b1561171557600092506117df565b6007546001600160a01b038881169116148015611730575080155b15611780576013546012546014546117489190612325565b6117529190612325565b60408051606081018252601254815260135460208201526014549181019190915290955085945091506117df565b806117d057601054600f546011546117989190612325565b6117a29190612325565b60408051606081018252600f54815260105460208201526011549181019190915290955085945091506117df565b80156117df57600c5494508493505b60646117eb858861242b565b6117f5919061245f565b600754909350600160a81b900460ff16801561181f57506007546001600160a01b03898116911614155b1561182e5761182e85836118d1565b611842888861183d868a612312565b611a4a565b8215611875578415611875576000606461185c878961242b565b611866919061245f565b9050611873893083611a4a565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610a9e576007805460ff60a01b1916600160a01b1790558115611a3957306000908152602081905260409020546008548110611a37576001600854111561192457506008545b600061193184600261242b565b9050600081846040015184611946919061242b565b611950919061245f565b9050600061195e8285612312565b90504761196a82611c22565b60006119768247612312565b9050600087604001518661198a9190612312565b611994908361245f565b905060008860400151826119a8919061242b565b905080156119ba576119ba8682611d7c565b88516000906119ca84600261242b565b6119d4919061242b565b905080156119f257600d546119f2906001600160a01b031682611e2e565b60208a0151600090611a0585600261242b565b611a0f919061242b565b90508015611a2d57600e54611a2d906001600160a01b031682611e2e565b5050505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611aae5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610852565b6001600160a01b038216611b105760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610852565b6001600160a01b03831660009081526020819052604090205481811015611b885760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610852565b611b928282612312565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611bc8908490612325565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c1491815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c5757611c576122cd565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611cb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd49190612481565b81600181518110611ce757611ce76122cd565b6001600160a01b039283166020918202929092010152600654611d0d91309116846111af565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d4690859060009086903090429060040161249e565b600060405180830381600087803b158015611d6057600080fd5b505af1158015611d74573d6000803e3d6000fd5b505050505050565b600654611d949030906001600160a01b0316846111af565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611e02573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e27919061250f565b5050505050565b80471015611e7e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610852565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611ecb576040519150601f19603f3d011682016040523d82523d6000602084013e611ed0565b606091505b50509050806109565760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610852565b600060208083528351808285015260005b81811015611f7457858101830151858201604001528201611f58565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461111a57600080fd5b8035611fb581611f95565b919050565b60008060408385031215611fcd57600080fd5b8235611fd881611f95565b946020939093013593505050565b801515811461111a57600080fd5b60006020828403121561200657600080fd5b813561201181611fe6565b9392505050565b60006020828403121561202a57600080fd5b813561201181611f95565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261205c57600080fd5b8135602067ffffffffffffffff8083111561207957612079612035565b8260051b604051601f19603f8301168101818110848211171561209e5761209e612035565b6040529384528581018301938381019250878511156120bc57600080fd5b83870191505b848210156120e2576120d382611faa565b835291830191908301906120c2565b979650505050505050565b6000806040838503121561210057600080fd5b823567ffffffffffffffff81111561211757600080fd5b6121238582860161204b565b925050602083013561213481611fe6565b809150509250929050565b60008060006060848603121561215457600080fd5b833561215f81611f95565b9250602084013561216f81611f95565b929592945050506040919091013590565b60006020828403121561219257600080fd5b813567ffffffffffffffff8111156121a957600080fd5b6121b58482850161204b565b949350505050565b6000602082840312156121cf57600080fd5b5035919050565b6000806000606084860312156121eb57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561221557600080fd5b823561222081611f95565b9150602083013561213481611fe6565b6000806040838503121561224357600080fd5b823561224e81611f95565b9150602083013561213481611f95565b600181811c9082168061227257607f821691505b60208210810361229257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161230b5761230b6122e3565b5060010190565b81810381811115610822576108226122e3565b80820180821115610822576108226122e3565b600181815b80851115612373578160001904821115612359576123596122e3565b8085161561236657918102915b93841c939080029061233d565b509250929050565b60008261238a57506001610822565b8161239757506000610822565b81600181146123ad57600281146123b7576123d3565b6001915050610822565b60ff8411156123c8576123c86122e3565b50506001821b610822565b5060208310610133831016604e8410600b84101617156123f6575081810a610822565b6124008383612338565b8060001904821115612414576124146122e3565b029392505050565b600061201160ff84168361237b565b8082028115828204841417610822576108226122e3565b60006020828403121561245457600080fd5b815161201181611fe6565b60008261247c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561249357600080fd5b815161201181611f95565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156124ee5784516001600160a01b0316835293830193918301916001016124c9565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561252457600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220bc8b13af1106894322271a1ab25b94a6812c534d1f40d2a506cc10789723895464736f6c63430008130033

Deployed Bytecode Sourcemap

12689:11556:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2380:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14649:161;;;;;;;;;;-1:-1:-1;14649:161:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;14649:161:0;1162:187:1;21414:152:0;;;;;;;;;;-1:-1:-1;21414:152:0;;;;;:::i;:::-;;:::i;:::-;;3500:108;;;;;;;;;;-1:-1:-1;3588:12:0;;3500:108;;;1869:25:1;;;1857:2;1842:18;3500:108:0;1723:177:1;22702:103:0;;;;;;;;;;-1:-1:-1;22702:103:0;;;;;:::i;:::-;;:::i;22945:208::-;;;;;;;;;;-1:-1:-1;22945:208:0;;;;;:::i;:::-;;:::i;14818:448::-;;;;;;;;;;-1:-1:-1;14818:448:0;;;;;:::i;:::-;;:::i;23589:196::-;;;;;;;;;;-1:-1:-1;23589:196:0;;;;;:::i;:::-;;:::i;3342:93::-;;;;;;;;;;-1:-1:-1;3342:93:0;;3425:2;4640:36:1;;4628:2;4613:18;3342:93:0;4498:184:1;15274:248:0;;;;;;;;;;-1:-1:-1;15274:248:0;;;;;:::i;:::-;;:::i;21574:177::-;;;;;;;;;;-1:-1:-1;21574:177:0;;;;;:::i;:::-;;:::i;23793:131::-;;;;;;;;;;-1:-1:-1;23793:131:0;;;;;:::i;:::-;;:::i;12919:34::-;;;;;;;;;;-1:-1:-1;12919:34:0;;;;-1:-1:-1;;;12919:34:0;;;;;;21960:195;;;;;;;;;;-1:-1:-1;21960:195:0;;;;;:::i;:::-;;:::i;23161:104::-;;;;;;;;;;-1:-1:-1;23161:104:0;;;;;:::i;:::-;;:::i;13025:44::-;;;;;;;;;;;;;;;;3671:127;;;;;;;;;;-1:-1:-1;3671:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3772:18:0;3745:7;3772:18;;;;;;;;;;;;3671:127;11352:94;;;;;;;;;;;;;:::i;13543:37::-;;;;;;;;;;-1:-1:-1;13543:37:0;;;;;;;;;;;;;;;;5395:25:1;;;5451:2;5436:18;;5429:34;;;;5479:18;;;5472:34;5383:2;5368:18;13543:37:0;5193:319:1;23273:108:0;;;;;;;;;;-1:-1:-1;23273:108:0;;;;;:::i;:::-;;:::i;22813:124::-;;;;;;;;;;-1:-1:-1;22813:124:0;;;;;:::i;:::-;;:::i;13348:79::-;;;;;;;;;;;;13385:42;13348:79;;;;;-1:-1:-1;;;;;6068:32:1;;;6050:51;;6038:2;6023:18;13348:79:0;5904:203:1;22162:224:0;;;;;;;;;;;;;:::i;24052:135::-;;;;;;;;;;-1:-1:-1;24052:135:0;;;;;:::i;:::-;;:::i;11129:87::-;;;;;;;;;;-1:-1:-1;11202:6:0;;-1:-1:-1;;;;;11202:6:0;11129:87;;2599:104;;;;;;;;;;;;;:::i;21759:193::-;;;;;;;;;;-1:-1:-1;21759:193:0;;;;;:::i;:::-;;:::i;23932:112::-;;;;;;;;;;-1:-1:-1;23932:112:0;;;;;:::i;:::-;;:::i;15530:410::-;;;;;;;;;;-1:-1:-1;15530:410:0;;;;;:::i;:::-;;:::i;12801:19::-;;;;;;;;;;-1:-1:-1;12801:19:0;;;;-1:-1:-1;;;;;12801:19:0;;;15948:165;;;;;;;;;;-1:-1:-1;15948:165:0;;;;;:::i;:::-;;:::i;22579:115::-;;;;;;;;;;-1:-1:-1;22579:115:0;;;;;:::i;:::-;;:::i;13637:41::-;;;;;;;;;;-1:-1:-1;13637:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4290:201;;;;;;;;;;-1:-1:-1;4290:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;4456:18:0;;;4424:7;4456:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4290:201;22394:177;;;;;;;;;;-1:-1:-1;22394:177:0;;;;;:::i;:::-;;:::i;11454:192::-;;;;;;;;;;-1:-1:-1;11454:192:0;;;;;:::i;:::-;;:::i;23389:::-;;;;;;;;;;-1:-1:-1;23389:192:0;;;;;:::i;:::-;;:::i;13587:41::-;;;;;;;;;;-1:-1:-1;13587:41:0;;;;;;;;;;;;12773:21;;;;;;;;;;-1:-1:-1;12773:21:0;;;;-1:-1:-1;;;;;12773:21:0;;;2380:100;2434:13;2467:5;2460:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2380:100;:::o;14649:161::-;14724:4;14741:39;182:10;14764:7;14773:6;14741:8;:39::i;:::-;-1:-1:-1;14798:4:0;14649:161;;;;;:::o;21414:152::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;;;;;;;;;21532:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;21532:26:0::1;-1:-1:-1::0;;;;21532:26:0;;::::1;::::0;;;::::1;::::0;;21414:152::o;22702:103::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;22776:9:::1;:21:::0;;-1:-1:-1;;;;;;22776:21:0::1;-1:-1:-1::0;;;;;22776:21:0;;;::::1;::::0;;;::::1;::::0;;22702:103::o;22945:208::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;23045:9:::1;23040:106;23064:8;:15;23060:1;:19;23040:106;;;23129:5;23101:12;:25;23114:8;23123:1;23114:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23101:25:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23101:25:0;:33;;-1:-1:-1;;23101:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23081:3;::::1;::::0;::::1;:::i;:::-;;;;23040:106;;;;22945:208:::0;;:::o;14818:448::-;14950:4;14967:36;14977:6;14985:9;14996:6;14967:9;:36::i;:::-;-1:-1:-1;;;;;15043:19:0;;15016:24;15043:19;;;:11;:19;;;;;;;;182:10;15043:33;;;;;;;;15095:26;;;;15087:79;;;;-1:-1:-1;;;15087:79:0;;8080:2:1;15087:79:0;;;8062:21:1;8119:2;8099:18;;;8092:30;8158:34;8138:18;;;8131:62;-1:-1:-1;;;8209:18:1;;;8202:38;8257:19;;15087:79:0;7878:404:1;15087:79:0;15177:57;15186:6;182:10;15208:25;15227:6;15208:16;:25;:::i;:::-;15177:8;:57::i;:::-;-1:-1:-1;15254:4:0;;14818:448;-1:-1:-1;;;;14818:448:0:o;23589:196::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;23680:9:::1;23675:103;23699:8;:15;23695:1;:19;23675:103;;;23761:5;23736:9;:22;23746:8;23755:1;23746:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23736:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23736:22:0;:30;;-1:-1:-1;;23736:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23716:3;::::1;::::0;::::1;:::i;:::-;;;;23675:103;;;;23589:196:::0;:::o;15274:248::-;182:10;15390:4;15444:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15444:34:0;;;;;;;;;;15390:4;;15412:80;;15435:7;;15444:47;;15481:10;;15444:47;:::i;21574:177::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;21729:14:::1;3425:2:::0;21729::::1;:14;:::i;:::-;21716:27;::::0;:10;:27:::1;:::i;:::-;21690:23;:53:::0;-1:-1:-1;21574:177:0:o;23793:131::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;23901:14:::1;3425:2:::0;23901::::1;:14;:::i;:::-;23889:26;::::0;:9;:26:::1;:::i;:::-;23872:14;:43:::0;-1:-1:-1;23793:131:0:o;21960:195::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;22112:35:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;22100:9:::1;:47:::0;;;;;;;;21960:195::o;23161:104::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23231:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;23231:26:0::1;23253:4;23231:26;::::0;;23161:104::o;11352:94::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;11417:21:::1;11435:1;11417:9;:21::i;:::-;11352:94::o:0;23273:108::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23346:19:0::1;23368:5;23346:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;23346:27:0::1;::::0;;23273:108::o;22813:124::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22900:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:29;;-1:-1:-1;;22900:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22813:124::o;22162:224::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;22226:14:::1;::::0;-1:-1:-1;;;22226:14:0;::::1;;;22225:15;22217:54;;;::::0;-1:-1:-1;;;22217:54:0;;10308:2:1;22217:54:0::1;::::0;::::1;10290:21:1::0;10347:2;10327:18;;;10320:30;10386:28;10366:18;;;10359:56;10432:18;;22217:54:0::1;10106:350:1::0;22217:54:0::1;22282:14;:21:::0;;-1:-1:-1;;;;22314:25:0;-1:-1:-1;;;22314:25:0;;;22366:12:::1;22350:13;:28:::0;22162:224::o;24052:135::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;24144:8:::1;-1:-1:-1::0;;;;;24137:25:0::1;;24163:7;11202:6:::0;;-1:-1:-1;;;;;11202:6:0;;11129:87;24163:7:::1;24137:42;::::0;-1:-1:-1;;;;;;24137:42:0::1;::::0;;;;;;-1:-1:-1;;;;;10653:32:1;;;24137:42:0::1;::::0;::::1;10635:51:1::0;10702:18;;;10695:34;;;10608:18;;24137:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2599:104::-:0;2655:13;2688:7;2681:14;;;;;:::i;21759:193::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;21909:35:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;21901:5:::1;:43:::0;;;;;;;;21759:193::o;23932:112::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;11202:6;;24000:36:::1;::::0;-1:-1:-1;;;;;11202:6:0;;;;24000:36;::::1;;;::::0;24026:9;;24000:36:::1;::::0;;;24026:9;11202:6;24000:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;15530:410:::0;182:10;15651:4;15700:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15700:34:0;;;;;;;;;;15753:35;;;;15745:85;;;;-1:-1:-1;;;15745:85:0;;11192:2:1;15745:85:0;;;11174:21:1;11231:2;11211:18;;;11204:30;11270:34;11250:18;;;11243:62;-1:-1:-1;;;11321:18:1;;;11314:35;11366:19;;15745:85:0;10990:401:1;15745:85:0;15841:67;182:10;15864:7;15873:34;15892:15;15873:16;:34;:::i;15841:67::-;-1:-1:-1;15928:4:0;;15530:410;-1:-1:-1;;;15530:410:0:o;15948:165::-;16026:4;16043:40;16053:10;16065:9;16076:6;16043:9;:40::i;22579:115::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;22659:15:::1;:27:::0;;-1:-1:-1;;;;;;22659:27:0::1;-1:-1:-1::0;;;;;22659:27:0;;;::::1;::::0;;;::::1;::::0;;22579:115::o;22394:177::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;22476:14:::1;::::0;-1:-1:-1;;;22476:14:0;::::1;;;22475:15;22467:65;;;::::0;-1:-1:-1;;;22467:65:0;;11598:2:1;22467:65:0::1;::::0;::::1;11580:21:1::0;11637:2;11617:18;;;11610:30;11676:34;11656:18;;;11649:62;-1:-1:-1;;;11727:18:1;;;11720:35;11772:19;;22467:65:0::1;11396:401:1::0;22467:65:0::1;22543:8;:20:::0;22394:177::o;11454:192::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11543:22:0;::::1;11535:73;;;::::0;-1:-1:-1;;;11535:73:0;;12004:2:1;11535:73:0::1;::::0;::::1;11986:21:1::0;12043:2;12023:18;;;12016:30;12082:34;12062:18;;;12055:62;-1:-1:-1;;;12133:18:1;;;12126:36;12179:19;;11535:73:0::1;11802:402:1::0;11535:73:0::1;11619:19;11629:8;11619:9;:19::i;:::-;11454:192:::0;:::o;23389:::-;11202:6;;-1:-1:-1;;;;;11202:6:0;182:10;11264:23;11256:68;;;;-1:-1:-1;;;11256:68:0;;;;;;;:::i;:::-;23477:9:::1;23472:102;23496:8;:15;23492:1;:19;23472:102;;;23558:4;23533:9;:22;23543:8;23552:1;23543:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;23533:22:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;23533:22:0;:29;;-1:-1:-1;;23533:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23513:3;::::1;::::0;::::1;:::i;:::-;;;;23472:102;;9428:380:::0;-1:-1:-1;;;;;9564:19:0;;9556:68;;;;-1:-1:-1;;;9556:68:0;;12411:2:1;9556:68:0;;;12393:21:1;12450:2;12430:18;;;12423:30;12489:34;12469:18;;;12462:62;-1:-1:-1;;;12540:18:1;;;12533:34;12584:19;;9556:68:0;12209:400:1;9556:68:0;-1:-1:-1;;;;;9643:21:0;;9635:68;;;;-1:-1:-1;;;9635:68:0;;12816:2:1;9635:68:0;;;12798:21:1;12855:2;12835:18;;;12828:30;12894:34;12874:18;;;12867:62;-1:-1:-1;;;12945:18:1;;;12938:32;12987:19;;9635:68:0;12614:398:1;9635:68:0;-1:-1:-1;;;;;9716:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9768:32;;1869:25:1;;;9768:32:0;;1842:18:1;9768:32:0;;;;;;;9428:380;;;:::o;16121:2647::-;16271:1;16262:6;:10;16254:64;;;;-1:-1:-1;;;16254:64:0;;13219:2:1;16254:64:0;;;13201:21:1;13258:2;13238:18;;;13231:30;13297:34;13277:18;;;13270:62;-1:-1:-1;;;13348:18:1;;;13341:39;13397:19;;16254:64:0;13017:405:1;16254:64:0;-1:-1:-1;;;;;16338:20:0;;;;;;:12;:20;;;;;;;;16337:21;:49;;;;-1:-1:-1;;;;;;16363:23:0;;;;;;:12;:23;;;;;;;;16362:24;16337:49;16329:110;;;;-1:-1:-1;;;16329:110:0;;13629:2:1;16329:110:0;;;13611:21:1;13668:2;13648:18;;;13641:30;13707:27;13687:18;;;13680:55;13752:18;;16329:110:0;13427:349:1;16329:110:0;-1:-1:-1;;;;;16457:17:0;;;;;;:9;:17;;;;;;;;16456:18;:43;;;;-1:-1:-1;;;;;;16479:20:0;;;;;;:9;:20;;;;;;;;16478:21;16456:43;16452:122;;;16524:14;;-1:-1:-1;;;16524:14:0;;;;16516:46;;;;-1:-1:-1;;;16516:46:0;;13983:2:1;16516:46:0;;;13965:21:1;14022:2;14002:18;;;13995:30;-1:-1:-1;;;14041:18:1;;;14034:49;14100:18;;16516:46:0;13781:343:1;16516:46:0;16600:4;;-1:-1:-1;;;;;16590:14:0;;;16600:4;;16590:14;:39;;;;-1:-1:-1;;;;;;16609:20:0;;;;;;:9;:20;;;;;;;;16608:21;16590:39;:59;;;;-1:-1:-1;16634:15:0;;-1:-1:-1;;;16634:15:0;;;;16633:16;16590:59;16586:215;;;16707:14;;16697:6;16674:20;16684:9;-1:-1:-1;;;;;3772:18:0;3745:7;3772:18;;;;;;;;;;;;3671:127;16674:20;:29;;;;:::i;:::-;:47;;16666:123;;;;-1:-1:-1;;;16666:123:0;;14331:2:1;16666:123:0;;;14313:21:1;;;14350:18;;;14343:30;14409:34;14389:18;;;14382:62;14461:18;;16666:123:0;14129:356:1;16666:123:0;16827:4;;-1:-1:-1;;;;;16817:14:0;;;16827:4;;16817:14;;;;:39;;-1:-1:-1;;;;;;16836:20:0;;;;;;:9;:20;;;;;;;;16835:21;16817:39;:61;;;;-1:-1:-1;;;;;;16861:17:0;;;;;;:9;:17;;;;;;;;16860:18;16817:61;:81;;;;-1:-1:-1;16883:15:0;;-1:-1:-1;;;16883:15:0;;;;16882:16;16817:81;16813:315;;;16945:4;;-1:-1:-1;;;;;16932:17:0;;;16945:4;;16932:17;16928:189;;17011:14;;17001:6;16978:20;16988:9;-1:-1:-1;;;;;3772:18:0;3745:7;3772:18;;;;;;;;;;;;3671:127;16978:20;:29;;;;:::i;:::-;:47;;16970:131;;;;-1:-1:-1;;;16970:131:0;;14331:2:1;16970:131:0;;;14313:21:1;;;14350:18;;;14343:30;14409:34;14389:18;;;14382:62;14461:18;;16970:131:0;14129:356:1;16970:131:0;17140:15;17166:14;17191:11;17213:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;17213:25:0;-1:-1:-1;;;;;17272:17:0;;17251;17272;;;:9;:17;;;;;;;;17271:18;:56;;;;-1:-1:-1;;;;;;17307:20:0;;;;;;:9;:20;;;;;;;;17306:21;17271:56;:112;;;;;17375:8;;17359:13;;:24;;;;:::i;:::-;17344:12;:39;17271:112;17471:15;;17251:132;;-1:-1:-1;;;;17471:15:0;;;;;:36;;-1:-1:-1;;;;;;17490:17:0;;;;;;:9;:17;;;;;;;;17471:36;:60;;;-1:-1:-1;;;;;;17511:20:0;;;;;;:9;:20;;;;;;;;17471:60;17467:717;;;17552:1;17546:7;;17467:717;;;17617:4;;-1:-1:-1;;;;;17604:17:0;;;17617:4;;17604:17;:34;;;;;17626:12;17625:13;17604:34;17600:584;;;17760:13;;:9;17721:19;17682;;:58;;17721:19;17682:58;:::i;:::-;:91;;;;:::i;:::-;17820:24;;;;;;;;17835:9;17820:24;;;;;;;;;;;;;;;;;;17655:118;;-1:-1:-1;17655:118:0;;-1:-1:-1;17820:24:0;-1:-1:-1;17600:584:0;;;17867:12;17862:322;;17993:9;;:5;17958:15;17923;;:50;;17958:15;17923:50;:::i;:::-;:79;;;;:::i;:::-;18049:20;;;;;;;;18064:5;18049:20;;;;;;;;;;;;;;;;;;17896:106;;-1:-1:-1;17896:106:0;;-1:-1:-1;18049:20:0;-1:-1:-1;17862:322:0;;;18091:12;18087:97;;;18130:9;;;-1:-1:-1;18130:9:0;;-1:-1:-1;18087:97:0;18222:3;18203:15;18212:6;18203;:15;:::i;:::-;18202:23;;;;:::i;:::-;18339:18;;18196:29;;-1:-1:-1;;;;18339:18:0;;;;:36;;;;-1:-1:-1;18371:4:0;;-1:-1:-1;;;;;18361:14:0;;;18371:4;;18361:14;;18339:36;18335:76;;;18377:34;18389:7;18398:12;18377:11;:34::i;:::-;18453:48;18469:6;18477:9;18488:12;18497:3;18488:6;:12;:::i;:::-;18453:15;:48::i;:::-;18516:7;;18512:249;;18588:11;;18584:164;;18620:17;18661:3;18641:16;18650:7;18641:6;:16;:::i;:::-;18640:24;;;;:::i;:::-;18620:44;;18683:49;18699:6;18715:4;18722:9;18683:15;:49::i;:::-;18601:147;18584:164;16243:2525;;;;;16121:2647;;;:::o;11654:173::-;11729:6;;;-1:-1:-1;;;;;11746:17:0;;;-1:-1:-1;;;;;;11746:17:0;;;;;;;11779:40;;11729:6;;;11746:17;11729:6;;11779:40;;11710:16;;11779:40;11699:128;11654:173;:::o;18776:1588::-;13778:15;;-1:-1:-1;;;13778:15:0;;;;13773:125;;13810:15;:22;;-1:-1:-1;;;;13810:22:0;-1:-1:-1;;;13810:22:0;;;18862:49;;18893:7:::1;18862:49;18968:4;18924:23;3772:18:::0;;;;;;;;;;;19008:23:::1;::::0;18989:42;::::1;18985:1372;;19078:1;19052:23;;:27;19048:109;;;-1:-1:-1::0;19118:23:0::1;::::0;19048:109:::1;19228:19;19250:11;:7:::0;19260:1:::1;19250:11;:::i;:::-;19228:33;;19276:32;19370:11;19330:9;:19;;;19312:15;:37;;;;:::i;:::-;19311:70;;;;:::i;:::-;19276:105:::0;-1:-1:-1;19396:14:0::1;19413:42;19276:105:::0;19413:15;:42:::1;:::i;:::-;19396:59:::0;-1:-1:-1;19497:21:0::1;19535:24;19396:59:::0;19535:16:::1;:24::i;:::-;19576:20;19599:38;19623:14:::0;19599:21:::1;:38;:::i;:::-;19576:61;;19652:19;19704:9;:19;;;19690:11;:33;;;;:::i;:::-;19674:50;::::0;:12;:50:::1;:::i;:::-;19652:72;;19739:29;19785:9;:19;;;19771:11;:33;;;;:::i;:::-;19739:65:::0;-1:-1:-1;19825:25:0;;19821:161:::1;;19905:61;19918:24;19944:21;19905:12;:61::i;:::-;20039:19:::0;;19998:20:::1;::::0;20021:15:::1;:11:::0;20035:1:::1;20021:15;:::i;:::-;:37;;;;:::i;:::-;19998:60:::0;-1:-1:-1;20077:16:0;;20073:105:::1;;20122:15;::::0;20114:48:::1;::::0;-1:-1:-1;;;;;20122:15:0::1;20149:12:::0;20114:34:::1;:48::i;:::-;20229:13;::::0;::::1;::::0;20194:14:::1;::::0;20211:15:::1;:11:::0;20225:1:::1;20211:15;:::i;:::-;:31;;;;:::i;:::-;20194:48:::0;-1:-1:-1;20261:10:0;;20257:87:::1;;20300:9;::::0;20292:36:::1;::::0;-1:-1:-1;;;;;20300:9:0::1;20321:6:::0;20292:28:::1;:36::i;:::-;19033:1324;;;;;;;;;18985:1372;18856:1508;13847:1;13863:15:::0;:23;;-1:-1:-1;;;;13863:23:0;;;18776:1588;;:::o;7803:638::-;-1:-1:-1;;;;;7943:20:0;;7935:70;;;;-1:-1:-1;;;7935:70:0;;14914:2:1;7935:70:0;;;14896:21:1;14953:2;14933:18;;;14926:30;14992:34;14972:18;;;14965:62;-1:-1:-1;;;15043:18:1;;;15036:35;15088:19;;7935:70:0;14712:401:1;7935:70:0;-1:-1:-1;;;;;8024:23:0;;8016:71;;;;-1:-1:-1;;;8016:71:0;;15320:2:1;8016:71:0;;;15302:21:1;15359:2;15339:18;;;15332:30;15398:34;15378:18;;;15371:62;-1:-1:-1;;;15449:18:1;;;15442:33;15492:19;;8016:71:0;15118:399:1;8016:71:0;-1:-1:-1;;;;;8184:17:0;;8160:21;8184:17;;;;;;;;;;;8220:23;;;;8212:74;;;;-1:-1:-1;;;8212:74:0;;15724:2:1;8212:74:0;;;15706:21:1;15763:2;15743:18;;;15736:30;15802:34;15782:18;;;15775:62;-1:-1:-1;;;15853:18:1;;;15846:36;15899:19;;8212:74:0;15522:402:1;8212:74:0;8317:22;8333:6;8317:13;:22;:::i;:::-;-1:-1:-1;;;;;8297:17:0;;;:9;:17;;;;;;;;;;;:42;;;;8350:20;;;;;;;;:30;;8374:6;;8297:9;8350:30;;8374:6;;8350:30;:::i;:::-;;;;;;;;8415:9;-1:-1:-1;;;;;8398:35:0;8407:6;-1:-1:-1;;;;;8398:35:0;;8426:6;8398:35;;;;1869:25:1;;1857:2;1842:18;;1723:177;8398:35:0;;;;;;;;7924:517;7803:638;;;:::o;20372:526::-;20514:16;;;20528:1;20514:16;;;;;;;;20490:21;;20514:16;;;;;;;;;;-1:-1:-1;20514:16:0;20490:40;;20559:4;20541;20546:1;20541:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20541:23:0;;;:7;;;;;;;;;;:23;;;;20585:6;;:13;;;-1:-1:-1;;;20585:13:0;;;;:6;;;;;:11;;:13;;;;;20541:7;;20585:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20575:4;20580:1;20575:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20575:23:0;;;:7;;;;;;;;;:23;20643:6;;20611:53;;20628:4;;20643:6;20652:11;20611:8;:53::i;:::-;20703:6;;:187;;-1:-1:-1;;;20703:187:0;;-1:-1:-1;;;;;20703:6:0;;;;:57;;:187;;20775:11;;20703:6;;20817:4;;20844;;20864:15;;20703:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20427:471;20372:526;:::o;20906:500::-;21086:6;;21054:53;;21071:4;;-1:-1:-1;;;;;21086:6:0;21095:11;21054:8;:53::i;:::-;21150:6;;:248;;-1:-1:-1;;;21150:248:0;;21215:4;21150:248;;;17511:34:1;17561:18;;;17554:34;;;21150:6:0;17604:18:1;;;17597:34;;;17647:18;;;17640:34;13385:42:0;17690:19:1;;;17683:44;21372:15:0;17743:19:1;;;17736:35;-1:-1:-1;;;;;21150:6:0;;;;:22;;21181:9;;17445:19:1;;21150:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20906:500;;:::o;10572:319::-;10687:6;10662:21;:31;;10654:73;;;;-1:-1:-1;;;10654:73:0;;18295:2:1;10654:73:0;;;18277:21:1;18334:2;18314:18;;;18307:30;18373:31;18353:18;;;18346:59;18422:18;;10654:73:0;18093:353:1;10654:73:0;10741:12;10759:9;-1:-1:-1;;;;;10759:14:0;10782:6;10759:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10740:54;;;10813:7;10805:78;;;;-1:-1:-1;;;10805:78:0;;18863:2:1;10805:78:0;;;18845:21:1;18902:2;18882:18;;;18875:30;18941:34;18921:18;;;18914:62;19012:28;18992:18;;;18985:56;19058:19;;10805:78:0;18661:422:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1354:118::-;1440:5;1433:13;1426:21;1419:5;1416:32;1406:60;;1462:1;1459;1452:12;1477:241;1533:6;1586:2;1574:9;1565:7;1561:23;1557:32;1554:52;;;1602:1;1599;1592:12;1554:52;1641:9;1628:23;1660:28;1682:5;1660:28;:::i;:::-;1707:5;1477:241;-1:-1:-1;;;1477:241:1:o;1905:247::-;1964:6;2017:2;2005:9;1996:7;1992:23;1988:32;1985:52;;;2033:1;2030;2023:12;1985:52;2072:9;2059:23;2091:31;2116:5;2091:31;:::i;2157:127::-;2218:10;2213:3;2209:20;2206:1;2199:31;2249:4;2246:1;2239:15;2273:4;2270:1;2263:15;2289:908;2343:5;2396:3;2389:4;2381:6;2377:17;2373:27;2363:55;;2414:1;2411;2404:12;2363:55;2450:6;2437:20;2476:4;2499:18;2536:2;2532;2529:10;2526:36;;;2542:18;;:::i;:::-;2588:2;2585:1;2581:10;2620:2;2614:9;2683:2;2679:7;2674:2;2670;2666:11;2662:25;2654:6;2650:38;2738:6;2726:10;2723:22;2718:2;2706:10;2703:18;2700:46;2697:72;;;2749:18;;:::i;:::-;2785:2;2778:22;2835:18;;;2911:15;;;2907:24;;;2869:15;;;;-1:-1:-1;2943:15:1;;;2940:35;;;2971:1;2968;2961:12;2940:35;3007:2;2999:6;2995:15;2984:26;;3019:148;3035:6;3030:3;3027:15;3019:148;;;3101:23;3120:3;3101:23;:::i;:::-;3089:36;;3145:12;;;;3052;;;;3019:148;;;3185:6;2289:908;-1:-1:-1;;;;;;;2289:908:1:o;3202:477::-;3292:6;3300;3353:2;3341:9;3332:7;3328:23;3324:32;3321:52;;;3369:1;3366;3359:12;3321:52;3409:9;3396:23;3442:18;3434:6;3431:30;3428:50;;;3474:1;3471;3464:12;3428:50;3497:61;3550:7;3541:6;3530:9;3526:22;3497:61;:::i;:::-;3487:71;;;3608:2;3597:9;3593:18;3580:32;3621:28;3643:5;3621:28;:::i;:::-;3668:5;3658:15;;;3202:477;;;;;:::o;3684:456::-;3761:6;3769;3777;3830:2;3818:9;3809:7;3805:23;3801:32;3798:52;;;3846:1;3843;3836:12;3798:52;3885:9;3872:23;3904:31;3929:5;3904:31;:::i;:::-;3954:5;-1:-1:-1;4011:2:1;3996:18;;3983:32;4024:33;3983:32;4024:33;:::i;:::-;3684:456;;4076:7;;-1:-1:-1;;;4130:2:1;4115:18;;;;4102:32;;3684:456::o;4145:348::-;4229:6;4282:2;4270:9;4261:7;4257:23;4253:32;4250:52;;;4298:1;4295;4288:12;4250:52;4338:9;4325:23;4371:18;4363:6;4360:30;4357:50;;;4403:1;4400;4393:12;4357:50;4426:61;4479:7;4470:6;4459:9;4455:22;4426:61;:::i;:::-;4416:71;4145:348;-1:-1:-1;;;;4145:348:1:o;4687:180::-;4746:6;4799:2;4787:9;4778:7;4774:23;4770:32;4767:52;;;4815:1;4812;4805:12;4767:52;-1:-1:-1;4838:23:1;;4687:180;-1:-1:-1;4687:180:1:o;4872:316::-;4949:6;4957;4965;5018:2;5006:9;4997:7;4993:23;4989:32;4986:52;;;5034:1;5031;5024:12;4986:52;-1:-1:-1;;5057:23:1;;;5127:2;5112:18;;5099:32;;-1:-1:-1;5178:2:1;5163:18;;;5150:32;;4872:316;-1:-1:-1;4872:316:1:o;5517:382::-;5582:6;5590;5643:2;5631:9;5622:7;5618:23;5614:32;5611:52;;;5659:1;5656;5649:12;5611:52;5698:9;5685:23;5717:31;5742:5;5717:31;:::i;:::-;5767:5;-1:-1:-1;5824:2:1;5809:18;;5796:32;5837:30;5796:32;5837:30;:::i;6112:388::-;6180:6;6188;6241:2;6229:9;6220:7;6216:23;6212:32;6209:52;;;6257:1;6254;6247:12;6209:52;6296:9;6283:23;6315:31;6340:5;6315:31;:::i;:::-;6365:5;-1:-1:-1;6422:2:1;6407:18;;6394:32;6435:33;6394:32;6435:33;:::i;6728:380::-;6807:1;6803:12;;;;6850;;;6871:61;;6925:4;6917:6;6913:17;6903:27;;6871:61;6978:2;6970:6;6967:14;6947:18;6944:38;6941:161;;7024:10;7019:3;7015:20;7012:1;7005:31;7059:4;7056:1;7049:15;7087:4;7084:1;7077:15;6941:161;;6728:380;;;:::o;7113:356::-;7315:2;7297:21;;;7334:18;;;7327:30;7393:34;7388:2;7373:18;;7366:62;7460:2;7445:18;;7113:356::o;7474:127::-;7535:10;7530:3;7526:20;7523:1;7516:31;7566:4;7563:1;7556:15;7590:4;7587:1;7580:15;7606:127;7667:10;7662:3;7658:20;7655:1;7648:31;7698:4;7695:1;7688:15;7722:4;7719:1;7712:15;7738:135;7777:3;7798:17;;;7795:43;;7818:18;;:::i;:::-;-1:-1:-1;7865:1:1;7854:13;;7738:135::o;8287:128::-;8354:9;;;8375:11;;;8372:37;;;8389:18;;:::i;8420:125::-;8485:9;;;8506:10;;;8503:36;;;8519:18;;:::i;8550:422::-;8639:1;8682:5;8639:1;8696:270;8717:7;8707:8;8704:21;8696:270;;;8776:4;8772:1;8768:6;8764:17;8758:4;8755:27;8752:53;;;8785:18;;:::i;:::-;8835:7;8825:8;8821:22;8818:55;;;8855:16;;;;8818:55;8934:22;;;;8894:15;;;;8696:270;;;8700:3;8550:422;;;;;:::o;8977:806::-;9026:5;9056:8;9046:80;;-1:-1:-1;9097:1:1;9111:5;;9046:80;9145:4;9135:76;;-1:-1:-1;9182:1:1;9196:5;;9135:76;9227:4;9245:1;9240:59;;;;9313:1;9308:130;;;;9220:218;;9240:59;9270:1;9261:10;;9284:5;;;9308:130;9345:3;9335:8;9332:17;9329:43;;;9352:18;;:::i;:::-;-1:-1:-1;;9408:1:1;9394:16;;9423:5;;9220:218;;9522:2;9512:8;9509:16;9503:3;9497:4;9494:13;9490:36;9484:2;9474:8;9471:16;9466:2;9460:4;9457:12;9453:35;9450:77;9447:159;;;-1:-1:-1;9559:19:1;;;9591:5;;9447:159;9638:34;9663:8;9657:4;9638:34;:::i;:::-;9708:6;9704:1;9700:6;9696:19;9687:7;9684:32;9681:58;;;9719:18;;:::i;:::-;9757:20;;8977:806;-1:-1:-1;;;8977:806:1:o;9788:140::-;9846:5;9875:47;9916:4;9906:8;9902:19;9896:4;9875:47;:::i;9933:168::-;10006:9;;;10037;;10054:15;;;10048:22;;10034:37;10024:71;;10075:18;;:::i;10740:245::-;10807:6;10860:2;10848:9;10839:7;10835:23;10831:32;10828:52;;;10876:1;10873;10866:12;10828:52;10908:9;10902:16;10927:28;10949:5;10927:28;:::i;14490:217::-;14530:1;14556;14546:132;;14600:10;14595:3;14591:20;14588:1;14581:31;14635:4;14632:1;14625:15;14663:4;14660:1;14653:15;14546:132;-1:-1:-1;14692:9:1;;14490:217::o;15929:251::-;15999:6;16052:2;16040:9;16031:7;16027:23;16023:32;16020:52;;;16068:1;16065;16058:12;16020:52;16100:9;16094:16;16119:31;16144:5;16119:31;:::i;16185:980::-;16447:4;16495:3;16484:9;16480:19;16526:6;16515:9;16508:25;16552:2;16590:6;16585:2;16574:9;16570:18;16563:34;16633:3;16628:2;16617:9;16613:18;16606:31;16657:6;16692;16686:13;16723:6;16715;16708:22;16761:3;16750:9;16746:19;16739:26;;16800:2;16792:6;16788:15;16774:29;;16821:1;16831:195;16845:6;16842:1;16839:13;16831:195;;;16910:13;;-1:-1:-1;;;;;16906:39:1;16894:52;;17001:15;;;;16966:12;;;;16942:1;16860:9;16831:195;;;-1:-1:-1;;;;;;;17082:32:1;;;;17077:2;17062:18;;17055:60;-1:-1:-1;;;17146:3:1;17131:19;17124:35;17043:3;16185:980;-1:-1:-1;;;16185:980:1:o;17782:306::-;17870:6;17878;17886;17939:2;17927:9;17918:7;17914:23;17910:32;17907:52;;;17955:1;17952;17945:12;17907:52;17984:9;17978:16;17968:26;;18034:2;18023:9;18019:18;18013:25;18003:35;;18078:2;18067:9;18063:18;18057:25;18047:35;;17782:306;;;;;:::o

Swarm Source

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