ETH Price: $3,497.34 (+1.99%)
Gas: 2 Gwei

Token

Shiba+ (SHIB404)
 

Overview

Max Total Supply

1,000,000,000 SHIB404

Holders

251

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,797,258.890020265007878207 SHIB404

Value
$0.00
0x6625d7a3262df2a4a3dadd58ec6ebad177cbd2be
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:
SHIBPLUS

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-13
*/

/** 
    TG: https://t.me/ShibaPlusETH
    Twitter (X): https://x.com/ShibaERC404
    Website: https://shibaplus.xyz
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

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

// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

/**
 * @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.
 *
 * The initial owner is set to the address provided by the deployer. 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;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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 {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _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);
    }
}

// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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 Returns the value of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

    function WETH() external pure returns (address);

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

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

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

contract SHIBPLUS is IERC20, Ownable {
    // events
    event Reflect(uint256 amountReflected, uint256 newTotalProportion);

    // constants
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    uint256 constant MAX_FEE = 15;

    // states
    IUniswapV2Router02 public constant UNISWAP_V2_ROUTER =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public UNISWAP_V2_PAIR;

    struct Fee {
        uint8 reflection;
        uint8 marketing;
        uint8 lp;
        uint8 buyback;
        uint8 burn;
        uint128 total;
    }

    string _name = "Shiba+";
    string _symbol = "SHIB404";

    uint256 _totalSupply = 1_000_000_000 ether;
    uint256 public _maxTxAmount = (_totalSupply * 2) / 1000; // 0.2%

    /* rOwned = ratio of tokens owned relative to circulating supply (NOT total supply, since circulating <= total) */
    mapping(address => uint256) public _rOwned;
    uint256 public _totalProportion = _totalSupply;

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

    bool public limitsEnabled = false;
    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isTxLimitExempt;

    Fee public buyFee =
        Fee({
            reflection: 2,
            marketing: 2,
            lp: 2,
            buyback: 2,
            burn: 2,
            total: 10
        });
    Fee public sellFee =
        Fee({
            reflection: 3,
            marketing: 3,
            lp: 3,
            buyback: 3,
            burn: 3,
            total: 15
        });

    bool public launched = false;

    address private marketingFeeReceiver;
    address private lpFeeReceiver;
    address private buybackFeeReceiver;

    bool public claimingFees = false;
    uint256 public swapThreshold = (_totalSupply * 1) / 10000;
    bool inSwap;
    mapping(address => bool) public blacklists;

    // modifiers
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    // constructor
    constructor() payable Ownable(_msgSender()) {
        marketingFeeReceiver = 0x5CE3d22595163c2Fd7066146CbED76C3f24Ac5B3;
        lpFeeReceiver = 0x5CE3d22595163c2Fd7066146CbED76C3f24Ac5B3;
        buybackFeeReceiver = 0x5CE3d22595163c2Fd7066146CbED76C3f24Ac5B3;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(UNISWAP_V2_ROUTER)] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[owner()] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[marketingFeeReceiver] = true;
        isFeeExempt[owner()] = true;

        uint256 supplyForMarketing = (_totalSupply * 5) / 100;
        uint256 supplyForLiquidity = (_totalSupply * 90) / 100;
        uint256 supplyForOwner = (_totalSupply * 5) / 100;
        _rOwned[marketingFeeReceiver] = supplyForMarketing;
        _rOwned[address(this)] = supplyForLiquidity;
        _rOwned[owner()] = supplyForOwner;
        emit Transfer(address(0), marketingFeeReceiver, supplyForMarketing);
        emit Transfer(address(0), address(this), supplyForLiquidity);
        emit Transfer(address(0), owner(), supplyForOwner);
    }

    receive() external payable {}

    // ERC20
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            require(
                _allowances[sender][msg.sender] >= amount,
                "ERC20: insufficient allowance"
            );
            _allowances[sender][msg.sender] =
                _allowances[sender][msg.sender] -
                amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

    // views
    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function decimals() external pure returns (uint8) {
        return 18;
    }

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

    function allowance(address holder, address spender)
        external
        view
        override
        returns (uint256)
    {
        return _allowances[holder][spender];
    }

    function tokensToProportion(uint256 tokens) public view returns (uint256) {
        return (tokens * _totalProportion) / _totalSupply;
    }

    function tokenFromReflection(uint256 proportion)
        public
        view
        returns (uint256)
    {
        return (proportion * _totalSupply) / _totalProportion;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - balanceOf(DEAD) - balanceOf(ZERO);
    }

    // owners
    function launchToken(address _owner) external onlyOwner {
        require(!launched, "Already launched.");

        UNISWAP_V2_PAIR = IUniswapV2Factory(UNISWAP_V2_ROUTER.factory())
            .createPair(address(this), UNISWAP_V2_ROUTER.WETH());
        _allowances[address(this)][address(UNISWAP_V2_ROUTER)] = type(uint256)
            .max;
        _allowances[address(this)][address(UNISWAP_V2_PAIR)] = type(uint256)
            .max;
        _allowances[address(this)][_owner] = type(uint256).max;
        IERC20(UNISWAP_V2_PAIR).approve(
            address(UNISWAP_V2_ROUTER),
            type(uint256).max
        );

        UNISWAP_V2_ROUTER.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            _owner,
            block.timestamp
        );

        claimingFees = true;
        limitsEnabled = true;
        launched = true;
    }

    function clearStuckBalance() external onlyOwner {
        (bool success, ) = payable(msg.sender).call{
            value: address(this).balance
        }("");
        require(success);
    }

    function clearStuckToken() external onlyOwner {
        _transferFrom(address(this), msg.sender, balanceOf(address(this)));
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount)
        external
        onlyOwner
    {
        claimingFees = _enabled;
        swapThreshold = _amount;
    }

    function changeFees(
        uint8 reflectionFeeBuy,
        uint8 marketingFeeBuy,
        uint8 lpFeeBuy,
        uint8 buybackFeeBuy,
        uint8 burnFeeBuy,
        uint8 reflectionFeeSell,
        uint8 marketingFeeSell,
        uint8 lpFeeSell,
        uint8 buybackFeeSell,
        uint8 burnFeeSell
    ) external onlyOwner {
        uint128 __totalBuyFee = reflectionFeeBuy +
            marketingFeeBuy +
            lpFeeBuy +
            buybackFeeBuy +
            burnFeeBuy;
        uint128 __totalSellFee = reflectionFeeSell +
            marketingFeeSell +
            lpFeeSell +
            buybackFeeSell +
            burnFeeSell;

        require(__totalBuyFee <= MAX_FEE, "Buy fees too high");
        require(__totalSellFee <= MAX_FEE, "Sell fees too high");

        buyFee = Fee({
            reflection: reflectionFeeBuy,
            marketing: reflectionFeeBuy,
            lp: reflectionFeeBuy,
            buyback: reflectionFeeBuy,
            burn: burnFeeBuy,
            total: __totalBuyFee
        });

        sellFee = Fee({
            reflection: reflectionFeeSell,
            marketing: reflectionFeeSell,
            lp: reflectionFeeSell,
            buyback: reflectionFeeSell,
            burn: burnFeeSell,
            total: __totalSellFee
        });
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt)
        external
        onlyOwner
    {
        isTxLimitExempt[holder] = exempt;
    }

    function setFeeReceivers(
        address m_,
        address lp_,
        address b_
    ) external onlyOwner {
        marketingFeeReceiver = m_;
        lpFeeReceiver = lp_;
        buybackFeeReceiver = b_;
    }

    function setMaxTxBasisLimit(uint256 p_) external onlyOwner {
        _maxTxAmount = (_totalSupply * p_) / 10000;
    }

    function setLimitsEnabled(bool e_) external onlyOwner {
        limitsEnabled = e_;
    }

    function blacklist(address _address, bool _isBlacklisting)
        external
        onlyOwner
    {
        blacklists[_address] = _isBlacklisting;
    }

    // private
    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(!blacklists[recipient] && !blacklists[sender], "Blacklisted");

        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (
            limitsEnabled &&
            !isTxLimitExempt[sender] &&
            !isTxLimitExempt[recipient]
        ) {
            require(
                amount <= _maxTxAmount,
                "Transfer amount exceeds the maxTxAmount."
            );
        }

        if (_shouldSwapBack()) {
            _swapBack();
        }

        uint256 proportionAmount = tokensToProportion(amount);
        require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
        _rOwned[sender] = _rOwned[sender] - proportionAmount;

        uint256 proportionReceived = _shouldTakeFee(sender, recipient)
            ? _takeFeeInProportions(
                sender == UNISWAP_V2_PAIR ? true : false,
                sender,
                proportionAmount
            )
            : proportionAmount;
        _rOwned[recipient] = _rOwned[recipient] + proportionReceived;

        emit Transfer(
            sender,
            recipient,
            tokenFromReflection(proportionReceived)
        );
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        uint256 proportionAmount = tokensToProportion(amount);
        require(_rOwned[sender] >= proportionAmount, "Insufficient Balance");
        _rOwned[sender] = _rOwned[sender] - proportionAmount;
        _rOwned[recipient] = _rOwned[recipient] + proportionAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _takeFeeInProportions(
        bool buying,
        address sender,
        uint256 proportionAmount
    ) internal returns (uint256) {
        Fee memory __buyFee = buyFee;
        Fee memory __sellFee = sellFee;

        uint256 proportionFeeAmount = buying == true
            ? (proportionAmount * __buyFee.total) / 100
            : (proportionAmount * __sellFee.total) / 100;

        // reflect
        uint256 proportionReflected = buying == true
            ? (proportionFeeAmount * __buyFee.reflection) / __buyFee.total
            : (proportionFeeAmount * __sellFee.reflection) / __sellFee.total;

        _totalProportion = _totalProportion - proportionReflected;

        // take fees
        uint256 _proportionToContract = proportionFeeAmount -
            proportionReflected;
        if (_proportionToContract > 0) {
            _rOwned[address(this)] =
                _rOwned[address(this)] +
                _proportionToContract;

            emit Transfer(
                sender,
                address(this),
                tokenFromReflection(_proportionToContract)
            );
        }
        emit Reflect(proportionReflected, _totalProportion);
        return proportionAmount - proportionFeeAmount;
    }

    function _shouldSwapBack() internal view returns (bool) {
        return
            msg.sender != UNISWAP_V2_PAIR &&
            !inSwap &&
            claimingFees &&
            balanceOf(address(this)) >= swapThreshold;
    }

    function _swapBack() internal swapping {
        Fee memory __sellFee = sellFee;

        uint256 __swapThreshold = swapThreshold;
        uint256 amountToBurn = (__swapThreshold * __sellFee.burn) /
            __sellFee.total;
        uint256 amountToSwap = __swapThreshold - amountToBurn;
        approve(address(UNISWAP_V2_ROUTER), amountToSwap);

        // burn
        _transferFrom(address(this), DEAD, amountToBurn);

        // swap
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = UNISWAP_V2_ROUTER.WETH();

        UNISWAP_V2_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 totalSwapFee = __sellFee.total -
            __sellFee.reflection -
            __sellFee.burn;
        uint256 amountETHMarketing = (amountETH * __sellFee.marketing) /
            totalSwapFee;
        uint256 amountETHLP = (amountETH * __sellFee.lp) / totalSwapFee;
        uint256 amountETHBuyback = (amountETH * __sellFee.buyback) /
            totalSwapFee;

        // send
        (bool tmpSuccess, ) = payable(marketingFeeReceiver).call{
            value: amountETHMarketing
        }("");
        (tmpSuccess, ) = payable(lpFeeReceiver).call{value: amountETHLP}("");
        (tmpSuccess, ) = payable(buybackFeeReceiver).call{
            value: amountETHBuyback
        }("");
    }

    function _shouldTakeFee(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","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":[],"name":"UNISWAP_V2_PAIR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAP_V2_ROUTER","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"},{"internalType":"uint8","name":"lp","type":"uint8"},{"internalType":"uint8","name":"buyback","type":"uint8"},{"internalType":"uint8","name":"burn","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"reflectionFeeBuy","type":"uint8"},{"internalType":"uint8","name":"marketingFeeBuy","type":"uint8"},{"internalType":"uint8","name":"lpFeeBuy","type":"uint8"},{"internalType":"uint8","name":"buybackFeeBuy","type":"uint8"},{"internalType":"uint8","name":"burnFeeBuy","type":"uint8"},{"internalType":"uint8","name":"reflectionFeeSell","type":"uint8"},{"internalType":"uint8","name":"marketingFeeSell","type":"uint8"},{"internalType":"uint8","name":"lpFeeSell","type":"uint8"},{"internalType":"uint8","name":"buybackFeeSell","type":"uint8"},{"internalType":"uint8","name":"burnFeeSell","type":"uint8"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"launchToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"reflection","type":"uint8"},{"internalType":"uint8","name":"marketing","type":"uint8"},{"internalType":"uint8","name":"lp","type":"uint8"},{"internalType":"uint8","name":"buyback","type":"uint8"},{"internalType":"uint8","name":"burn","type":"uint8"},{"internalType":"uint128","name":"total","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"m_","type":"address"},{"internalType":"address","name":"lp_","type":"address"},{"internalType":"address","name":"b_","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"e_","type":"bool"}],"name":"setLimitsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"p_","type":"uint256"}],"name":"setMaxTxBasisLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600660809081526553686962612b60d01b60a05260029062000027908262000537565b5060408051808201909152600781526614d212508d0c0d60ca1b602082015260039062000055908262000537565b506b033b2e3c9fd0803ce80000006004556103e860045460026200007a919062000603565b6200008691906200062f565b60055560045460078190556009805460ff199081169091556040805160c08082018352600280835260208084018290528385018290526060808501839052608080860193909352600a60a095860152600c80546001600160a81b0319908116650a020202020217909155865194850187526003808652928501839052958401829052830181905290820152600f910152600d8054909116650f0303030303179055600e805490911690556010805460ff60a01b19169055612710906200014e90600162000603565b6200015a91906200062f565b60115533620001698162000442565b50600e8054610100600160a81b031916745ce3d22595163c2fd7066146cbed76c3f24ac5b300178155600f8054735ce3d22595163c2fd7066146cbed76c3f24ac5b36001600160a01b03199182168117909255601080549091169091179055306000908152600b60208190526040808320805460ff1990811660019081179092557fd1def2fe8304e5e69b6f2907349cddd4c272de4ef47368d65b87ae00d7f10147805482168317905594546001600160a01b036101009091041684529083208054909416811790935590620002476000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600a93849052828120805486166001908117909155600e546101009004909216815291822080549094168117909355620002ba6000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155600454606490620002f890600562000603565b6200030491906200062f565b905060006064600454605a6200031b919062000603565b6200032791906200062f565b90506000606460045460056200033e919062000603565b6200034a91906200062f565b600e5461010090046001600160a01b031660009081526006602081905260408083208790553083528220859055919250829190620003906000546001600160a01b031690565b6001600160a01b0390811682526020808301939093526040918201600090812094909455600e54915187815261010090920416929160008051602062002a50833981519152910160405180910390a3604051828152309060009060008051602062002a508339815191529060200160405180910390a3600080546040518381526001600160a01b03909116919060008051602062002a508339815191529060200160405180910390a350505062000652565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004bd57607f821691505b602082108103620004de57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200053257600081815260208120601f850160051c810160208610156200050d5750805b601f850160051c820191505b818110156200052e5782815560010162000519565b5050505b505050565b81516001600160401b0381111562000553576200055362000492565b6200056b81620005648454620004a8565b84620004e4565b602080601f831160018114620005a357600084156200058a5750858301515b600019600386901b1c1916600185901b1785556200052e565b600085815260208120601f198616915b82811015620005d457888601518255948401946001909101908401620005b3565b5085821015620005f35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176200062957634e487b7160e01b600052601160045260246000fd5b92915050565b6000826200064d57634e487b7160e01b600052601260045260246000fd5b500490565b6123ee80620006626000396000f3fe6080604052600436106102345760003560e01c80635d3a87e61161012e578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e14610718578063df20fd491461075e578063f2fde38b1461077e578063f40acc3d1461079e578063f84ba65d146107be57600080fd5b8063a9059cbb14610682578063b0f7ec38146106a2578063c38a31de146106c3578063d7c01032146106e3578063d85a28281461070357600080fd5b80637d1db4a5116100f25780637d1db4a5146105e35780638091f3bf146105f95780638da5cb5b1461061357806395d89b4114610645578063a82ed9ec1461065a57600080fd5b80635d3a87e61461054e578063658d4b7f1461056e57806370a082311461058e578063715018a6146105ae5780637a3c8640146105c357600080fd5b80632b14ca56116101bc578063404e512911610180578063404e51291461047c57806341aea9de1461049c57806345ce5365146104bc57806347062402146104dc578063571ac8b01461052e57600080fd5b80632b14ca56146103785780632d8381191461040f578063313ce5671461042f5780633582ad231461044b578063364333f41461046557600080fd5b806316c021291161020357806316c02129146102e8578063178002871461031857806318160ddd1461032e57806323b872dd146103435780632b112e491461036357600080fd5b80630445b6671461024057806306fdde0314610269578063095ea7b31461028b5780630cfc15f9146102bb57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061025660115481565b6040519081526020015b60405180910390f35b34801561027557600080fd5b5061027e6107de565b6040516102609190611f09565b34801561029757600080fd5b506102ab6102a6366004611f6c565b610870565b6040519015158152602001610260565b3480156102c757600080fd5b506102566102d6366004611f98565b60066020526000908152604090205481565b3480156102f457600080fd5b506102ab610303366004611f98565b60136020526000908152604090205460ff1681565b34801561032457600080fd5b5061025660075481565b34801561033a57600080fd5b50600454610256565b34801561034f57600080fd5b506102ab61035e366004611fb5565b6108dd565b34801561036f57600080fd5b506102566109ea565b34801561038457600080fd5b50600d546103ca9060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b6040805160ff9788168152958716602087015293861693850193909352908416606084015290921660808201526001600160801b0390911660a082015260c001610260565b34801561041b57600080fd5b5061025661042a366004611ff6565b610a1d565b34801561043b57600080fd5b5060405160128152602001610260565b34801561045757600080fd5b506009546102ab9060ff1681565b34801561047157600080fd5b5061047a610a3a565b005b34801561048857600080fd5b5061047a61049736600461201d565b610a9a565b3480156104a857600080fd5b5061047a6104b7366004612056565b610acd565b3480156104c857600080fd5b506102566104d7366004611ff6565b610ae8565b3480156104e857600080fd5b50600c546103ca9060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b34801561053a57600080fd5b506102ab610549366004611f98565b610afb565b34801561055a57600080fd5b5061047a610569366004611ff6565b610b09565b34801561057a57600080fd5b5061047a61058936600461201d565b610b32565b34801561059a57600080fd5b506102566105a9366004611f98565b610b65565b3480156105ba57600080fd5b5061047a610b87565b3480156105cf57600080fd5b5061047a6105de366004611f98565b610b9b565b3480156105ef57600080fd5b5061025660055481565b34801561060557600080fd5b50600e546102ab9060ff1681565b34801561061f57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610260565b34801561065157600080fd5b5061027e610f18565b34801561066657600080fd5b5061062d737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561068e57600080fd5b506102ab61069d366004611f6c565b610f27565b3480156106ae57600080fd5b506010546102ab90600160a01b900460ff1681565b3480156106cf57600080fd5b5061047a6106de366004612089565b610f34565b3480156106ef57600080fd5b5061047a6106fe366004612143565b611283565b34801561070f57600080fd5b5061047a6112d3565b34801561072457600080fd5b5061025661073336600461218e565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561076a57600080fd5b5061047a6107793660046121bc565b6112ee565b34801561078a57600080fd5b5061047a610799366004611f98565b611318565b3480156107aa57600080fd5b5060015461062d906001600160a01b031681565b3480156107ca57600080fd5b5061047a6107d936600461201d565b611353565b6060600280546107ed906121da565b80601f0160208091040260200160405190810160405280929190818152602001828054610819906121da565b80156108665780601f1061083b57610100808354040283529160200191610866565b820191906000526020600020905b81548152906001019060200180831161084957829003601f168201915b5050505050905090565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108cb9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152600860209081526040808320338452909152812054600019146109d5576001600160a01b03841660009081526008602090815260408083203384529091529020548211156109815760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064015b60405180910390fd5b6001600160a01b03841660009081526008602090815260408083203384529091529020546109b090839061222a565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b6109e0848484611386565b90505b9392505050565b60006109f66000610b65565b610a0161dead610b65565b600454610a0e919061222a565b610a18919061222a565b905090565b600060075460045483610a30919061223d565b6108d79190612254565b610a42611664565b604051600090339047908381818185875af1925050503d8060008114610a84576040519150601f19603f3d011682016040523d82523d6000602084013e610a89565b606091505b5050905080610a9757600080fd5b50565b610aa2611664565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b610ad5611664565b6009805460ff1916911515919091179055565b600060045460075483610a30919061223d565b60006108d782600019610870565b610b11611664565b61271081600454610b22919061223d565b610b2c9190612254565b60055550565b610b3a611664565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152600660205260408120546108d790610a1d565b610b8f611664565b610b996000611691565b565b610ba3611664565b600e5460ff1615610bea5760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903630bab731b432b21760791b6044820152606401610978565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c609190612276565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce59190612276565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d569190612276565b600180546001600160a01b0319166001600160a01b03928316178155306000908152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8085529252808320600019908190558454861684528184208190558686168452928190208390559254925163095ea7b360e01b81526004810191909152602481019190915291169063095ea7b3906044016020604051808303816000875af1158015610e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2d9190612293565b50737a250d5630b4cf539739df2c5dacb4c659f2488d63f305d7194730610e5381610b65565b6040516001600160e01b031960e086901b1681526001600160a01b0392831660048201526024810191909152600060448201819052606482015290851660848201524260a482015260c40160606040518083038185885af1158015610ebc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ee191906122b0565b50506010805460ff60a01b1916600160a01b17905550506009805460ff199081166001908117909255600e80549091169091179055565b6060600380546107ed906121da565b60006109e3338484611386565b610f3c611664565b600086888a610f4b8d8f6122de565b610f5591906122de565b610f5f91906122de565b610f6991906122de565b60ff1690506000828486610f7d898b6122de565b610f8791906122de565b610f9191906122de565b610f9b91906122de565b60ff169050600f826001600160801b03161115610fee5760405162461bcd60e51b8152602060048201526011602482015270084eaf240cccacae640e8dede40d0d2ced607b1b6044820152606401610978565b600f816001600160801b0316111561103d5760405162461bcd60e51b81526020600482015260126024820152710a6cad8d840cccacae640e8dede40d0d2ced60731b6044820152606401610978565b6040518060c001604052808d60ff1681526020018d60ff1681526020018d60ff1681526020018d60ff1681526020018960ff168152602001836001600160801b0316815250600c60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816001600160801b0302191690836001600160801b031602179055509050506040518060c001604052808860ff1681526020018860ff1681526020018860ff1681526020018860ff1681526020018460ff168152602001826001600160801b0316815250600d60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816001600160801b0302191690836001600160801b03160217905550905050505050505050505050505050565b61128b611664565b600e80546001600160a01b0394851661010002610100600160a81b0319909116179055600f80549284166001600160a01b031993841617905560108054919093169116179055565b6112db611664565b610a9730336112e930610b65565b611386565b6112f6611664565b60108054921515600160a01b0260ff60a01b1990931692909217909155601155565b611320611664565b6001600160a01b03811661134a57604051631e4fbdf760e01b815260006004820152602401610978565b610a9781611691565b61135b611664565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b03821660009081526013602052604081205460ff161580156113c857506001600160a01b03841660009081526013602052604090205460ff16155b6114025760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610978565b60125460ff161561141f576114188484846116e1565b90506109e3565b60095460ff16801561144a57506001600160a01b0384166000908152600b602052604090205460ff16155b801561146f57506001600160a01b0383166000908152600b602052604090205460ff16155b156114d7576005548211156114d75760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610978565b6114df61180a565b156114ec576114ec61185a565b60006114f783610ae8565b6001600160a01b0386166000908152600660205260409020549091508111156115595760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610978565b6001600160a01b03851660009081526006602052604090205461157d90829061222a565b6001600160a01b0386166000908152600660205260408120919091556115a38686611c50565b6115ad57816115d7565b6001546115d7906001600160a01b038881169116146115cd5760006115d0565b60015b8784611c96565b6001600160a01b0386166000908152600660205260409020549091506115fe9082906122f7565b6001600160a01b0380871660008181526006602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61164784610a1d565b60405190815260200160405180910390a350600195945050505050565b6000546001600160a01b03163314610b995760405163118cdaa760e01b8152336004820152602401610978565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806116ed83610ae8565b6001600160a01b03861660009081526006602052604090205490915081111561174f5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610978565b6001600160a01b03851660009081526006602052604090205461177390829061222a565b6001600160a01b0380871660009081526006602052604080822093909355908616815220546117a39082906122f7565b6001600160a01b0380861660008181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117f79087815260200190565b60405180910390a3506001949350505050565b6001546000906001600160a01b0316331480159061182b575060125460ff16155b80156118405750601054600160a01b900460ff165b8015610a18575060115461185330610b65565b1015905090565b60128054600160ff199091161790556040805160c081018252600d5460ff80821683526101008204811660208401526201000082048116938301939093526301000000810483166060830152640100000000810490921660808201819052600160281b9092046001600160801b031660a082018190526011549192600091906118e3908461223d565b6118ed9190612254565b905060006118fb828461222a565b905061191b737a250d5630b4cf539739df2c5dacb4c659f2488d82610870565b506119293061dead84611386565b50604080516002808252606082018352600092602083019080368337019050509050308160008151811061195f5761195f61230a565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f59190612276565b81600181518110611a0857611a0861230a565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611a60908590600090869030904290600401612320565b600060405180830381600087803b158015611a7a57600080fd5b505af1158015611a8e573d6000803e3d6000fd5b5050505060004790506000866080015160ff16876000015160ff168860a00151611ab89190612391565b611ac29190612391565b6001600160801b03169050600081886020015160ff1684611ae3919061223d565b611aed9190612254565b9050600082896040015160ff1685611b05919061223d565b611b0f9190612254565b90506000838a6060015160ff1686611b27919061223d565b611b319190612254565b600e546040519192506000916101009091046001600160a01b03169085908381818185875af1925050503d8060008114611b87576040519150601f19603f3d011682016040523d82523d6000602084013e611b8c565b606091505b5050600f546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611bdc576040519150601f19603f3d011682016040523d82523d6000602084013e611be1565b606091505b50506010546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611c31576040519150601f19603f3d011682016040523d82523d6000602084013e611c36565b606091505b50506012805460ff19169055505050505050505050505050565b6001600160a01b0382166000908152600a602052604081205460ff161580156109e35750506001600160a01b03166000908152600a602052604090205460ff1615919050565b6040805160c08082018352600c5460ff8082168452610100808304821660208087019190915262010000808504841687890152630100000080860485166060808a019190915264010000000080880487166080808c01919091526001600160801b03600160281b998a9004811660a0808e01919091528d519b8c018e52600d54808b168d529889048a16978c019790975294870488169b8a019b909b5291850486169088015283049093169685019690965291909104169281019290925260009182861515600114611d8c5760648260a001516001600160801b031686611d7d919061223d565b611d879190612254565b611db1565b60648360a001516001600160801b031686611da7919061223d565b611db19190612254565b90506000600188151514611def578260a001516001600160801b0316836000015160ff1683611de0919061223d565b611dea9190612254565b611e1a565b8360a001516001600160801b0316846000015160ff1683611e10919061223d565b611e1a9190612254565b905080600754611e2a919061222a565b6007556000611e39828461222a565b90508015611eb55730600090815260066020526040902054611e5c9082906122f7565b306000818152600660205260409020919091556001600160a01b0389167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611ea384610a1d565b60405190815260200160405180910390a35b6007546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a1611efc838861222a565b9998505050505050505050565b600060208083528351808285015260005b81811015611f3657858101830151858201604001528201611f1a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a9757600080fd5b60008060408385031215611f7f57600080fd5b8235611f8a81611f57565b946020939093013593505050565b600060208284031215611faa57600080fd5b81356109e381611f57565b600080600060608486031215611fca57600080fd5b8335611fd581611f57565b92506020840135611fe581611f57565b929592945050506040919091013590565b60006020828403121561200857600080fd5b5035919050565b8015158114610a9757600080fd5b6000806040838503121561203057600080fd5b823561203b81611f57565b9150602083013561204b8161200f565b809150509250929050565b60006020828403121561206857600080fd5b81356109e38161200f565b803560ff8116811461208457600080fd5b919050565b6000806000806000806000806000806101408b8d0312156120a957600080fd5b6120b28b612073565b99506120c060208c01612073565b98506120ce60408c01612073565b97506120dc60608c01612073565b96506120ea60808c01612073565b95506120f860a08c01612073565b945061210660c08c01612073565b935061211460e08c01612073565b92506121236101008c01612073565b91506121326101208c01612073565b90509295989b9194979a5092959850565b60008060006060848603121561215857600080fd5b833561216381611f57565b9250602084013561217381611f57565b9150604084013561218381611f57565b809150509250925092565b600080604083850312156121a157600080fd5b82356121ac81611f57565b9150602083013561204b81611f57565b600080604083850312156121cf57600080fd5b8235611f8a8161200f565b600181811c908216806121ee57607f821691505b60208210810361220e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156108d7576108d7612214565b80820281158282048414176108d7576108d7612214565b60008261227157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561228857600080fd5b81516109e381611f57565b6000602082840312156122a557600080fd5b81516109e38161200f565b6000806000606084860312156122c557600080fd5b8351925060208401519150604084015190509250925092565b60ff81811683821601908111156108d7576108d7612214565b808201808211156108d7576108d7612214565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123705784516001600160a01b03168352938301939183019160010161234b565b50506001600160a01b03969096166060850152505050608001529392505050565b6001600160801b038281168282160390808211156123b1576123b1612214565b509291505056fea264697066735822122087aca2020de18cf79ec2040101c44192d1e212c8ea3e77e4fb28749e027c918b64736f6c63430008110033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106102345760003560e01c80635d3a87e61161012e578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e14610718578063df20fd491461075e578063f2fde38b1461077e578063f40acc3d1461079e578063f84ba65d146107be57600080fd5b8063a9059cbb14610682578063b0f7ec38146106a2578063c38a31de146106c3578063d7c01032146106e3578063d85a28281461070357600080fd5b80637d1db4a5116100f25780637d1db4a5146105e35780638091f3bf146105f95780638da5cb5b1461061357806395d89b4114610645578063a82ed9ec1461065a57600080fd5b80635d3a87e61461054e578063658d4b7f1461056e57806370a082311461058e578063715018a6146105ae5780637a3c8640146105c357600080fd5b80632b14ca56116101bc578063404e512911610180578063404e51291461047c57806341aea9de1461049c57806345ce5365146104bc57806347062402146104dc578063571ac8b01461052e57600080fd5b80632b14ca56146103785780632d8381191461040f578063313ce5671461042f5780633582ad231461044b578063364333f41461046557600080fd5b806316c021291161020357806316c02129146102e8578063178002871461031857806318160ddd1461032e57806323b872dd146103435780632b112e491461036357600080fd5b80630445b6671461024057806306fdde0314610269578063095ea7b31461028b5780630cfc15f9146102bb57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061025660115481565b6040519081526020015b60405180910390f35b34801561027557600080fd5b5061027e6107de565b6040516102609190611f09565b34801561029757600080fd5b506102ab6102a6366004611f6c565b610870565b6040519015158152602001610260565b3480156102c757600080fd5b506102566102d6366004611f98565b60066020526000908152604090205481565b3480156102f457600080fd5b506102ab610303366004611f98565b60136020526000908152604090205460ff1681565b34801561032457600080fd5b5061025660075481565b34801561033a57600080fd5b50600454610256565b34801561034f57600080fd5b506102ab61035e366004611fb5565b6108dd565b34801561036f57600080fd5b506102566109ea565b34801561038457600080fd5b50600d546103ca9060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b6040805160ff9788168152958716602087015293861693850193909352908416606084015290921660808201526001600160801b0390911660a082015260c001610260565b34801561041b57600080fd5b5061025661042a366004611ff6565b610a1d565b34801561043b57600080fd5b5060405160128152602001610260565b34801561045757600080fd5b506009546102ab9060ff1681565b34801561047157600080fd5b5061047a610a3a565b005b34801561048857600080fd5b5061047a61049736600461201d565b610a9a565b3480156104a857600080fd5b5061047a6104b7366004612056565b610acd565b3480156104c857600080fd5b506102566104d7366004611ff6565b610ae8565b3480156104e857600080fd5b50600c546103ca9060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b34801561053a57600080fd5b506102ab610549366004611f98565b610afb565b34801561055a57600080fd5b5061047a610569366004611ff6565b610b09565b34801561057a57600080fd5b5061047a61058936600461201d565b610b32565b34801561059a57600080fd5b506102566105a9366004611f98565b610b65565b3480156105ba57600080fd5b5061047a610b87565b3480156105cf57600080fd5b5061047a6105de366004611f98565b610b9b565b3480156105ef57600080fd5b5061025660055481565b34801561060557600080fd5b50600e546102ab9060ff1681565b34801561061f57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610260565b34801561065157600080fd5b5061027e610f18565b34801561066657600080fd5b5061062d737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561068e57600080fd5b506102ab61069d366004611f6c565b610f27565b3480156106ae57600080fd5b506010546102ab90600160a01b900460ff1681565b3480156106cf57600080fd5b5061047a6106de366004612089565b610f34565b3480156106ef57600080fd5b5061047a6106fe366004612143565b611283565b34801561070f57600080fd5b5061047a6112d3565b34801561072457600080fd5b5061025661073336600461218e565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561076a57600080fd5b5061047a6107793660046121bc565b6112ee565b34801561078a57600080fd5b5061047a610799366004611f98565b611318565b3480156107aa57600080fd5b5060015461062d906001600160a01b031681565b3480156107ca57600080fd5b5061047a6107d936600461201d565b611353565b6060600280546107ed906121da565b80601f0160208091040260200160405190810160405280929190818152602001828054610819906121da565b80156108665780601f1061083b57610100808354040283529160200191610866565b820191906000526020600020905b81548152906001019060200180831161084957829003601f168201915b5050505050905090565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108cb9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383166000908152600860209081526040808320338452909152812054600019146109d5576001600160a01b03841660009081526008602090815260408083203384529091529020548211156109815760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064015b60405180910390fd5b6001600160a01b03841660009081526008602090815260408083203384529091529020546109b090839061222a565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b6109e0848484611386565b90505b9392505050565b60006109f66000610b65565b610a0161dead610b65565b600454610a0e919061222a565b610a18919061222a565b905090565b600060075460045483610a30919061223d565b6108d79190612254565b610a42611664565b604051600090339047908381818185875af1925050503d8060008114610a84576040519150601f19603f3d011682016040523d82523d6000602084013e610a89565b606091505b5050905080610a9757600080fd5b50565b610aa2611664565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b610ad5611664565b6009805460ff1916911515919091179055565b600060045460075483610a30919061223d565b60006108d782600019610870565b610b11611664565b61271081600454610b22919061223d565b610b2c9190612254565b60055550565b610b3a611664565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152600660205260408120546108d790610a1d565b610b8f611664565b610b996000611691565b565b610ba3611664565b600e5460ff1615610bea5760405162461bcd60e51b815260206004820152601160248201527020b63932b0b23c903630bab731b432b21760791b6044820152606401610978565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c609190612276565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce59190612276565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d569190612276565b600180546001600160a01b0319166001600160a01b03928316178155306000908152600860209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d8085529252808320600019908190558454861684528184208190558686168452928190208390559254925163095ea7b360e01b81526004810191909152602481019190915291169063095ea7b3906044016020604051808303816000875af1158015610e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2d9190612293565b50737a250d5630b4cf539739df2c5dacb4c659f2488d63f305d7194730610e5381610b65565b6040516001600160e01b031960e086901b1681526001600160a01b0392831660048201526024810191909152600060448201819052606482015290851660848201524260a482015260c40160606040518083038185885af1158015610ebc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ee191906122b0565b50506010805460ff60a01b1916600160a01b17905550506009805460ff199081166001908117909255600e80549091169091179055565b6060600380546107ed906121da565b60006109e3338484611386565b610f3c611664565b600086888a610f4b8d8f6122de565b610f5591906122de565b610f5f91906122de565b610f6991906122de565b60ff1690506000828486610f7d898b6122de565b610f8791906122de565b610f9191906122de565b610f9b91906122de565b60ff169050600f826001600160801b03161115610fee5760405162461bcd60e51b8152602060048201526011602482015270084eaf240cccacae640e8dede40d0d2ced607b1b6044820152606401610978565b600f816001600160801b0316111561103d5760405162461bcd60e51b81526020600482015260126024820152710a6cad8d840cccacae640e8dede40d0d2ced60731b6044820152606401610978565b6040518060c001604052808d60ff1681526020018d60ff1681526020018d60ff1681526020018d60ff1681526020018960ff168152602001836001600160801b0316815250600c60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816001600160801b0302191690836001600160801b031602179055509050506040518060c001604052808860ff1681526020018860ff1681526020018860ff1681526020018860ff1681526020018460ff168152602001826001600160801b0316815250600d60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816001600160801b0302191690836001600160801b03160217905550905050505050505050505050505050565b61128b611664565b600e80546001600160a01b0394851661010002610100600160a81b0319909116179055600f80549284166001600160a01b031993841617905560108054919093169116179055565b6112db611664565b610a9730336112e930610b65565b611386565b6112f6611664565b60108054921515600160a01b0260ff60a01b1990931692909217909155601155565b611320611664565b6001600160a01b03811661134a57604051631e4fbdf760e01b815260006004820152602401610978565b610a9781611691565b61135b611664565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b03821660009081526013602052604081205460ff161580156113c857506001600160a01b03841660009081526013602052604090205460ff16155b6114025760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610978565b60125460ff161561141f576114188484846116e1565b90506109e3565b60095460ff16801561144a57506001600160a01b0384166000908152600b602052604090205460ff16155b801561146f57506001600160a01b0383166000908152600b602052604090205460ff16155b156114d7576005548211156114d75760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610978565b6114df61180a565b156114ec576114ec61185a565b60006114f783610ae8565b6001600160a01b0386166000908152600660205260409020549091508111156115595760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610978565b6001600160a01b03851660009081526006602052604090205461157d90829061222a565b6001600160a01b0386166000908152600660205260408120919091556115a38686611c50565b6115ad57816115d7565b6001546115d7906001600160a01b038881169116146115cd5760006115d0565b60015b8784611c96565b6001600160a01b0386166000908152600660205260409020549091506115fe9082906122f7565b6001600160a01b0380871660008181526006602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61164784610a1d565b60405190815260200160405180910390a350600195945050505050565b6000546001600160a01b03163314610b995760405163118cdaa760e01b8152336004820152602401610978565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806116ed83610ae8565b6001600160a01b03861660009081526006602052604090205490915081111561174f5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610978565b6001600160a01b03851660009081526006602052604090205461177390829061222a565b6001600160a01b0380871660009081526006602052604080822093909355908616815220546117a39082906122f7565b6001600160a01b0380861660008181526006602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906117f79087815260200190565b60405180910390a3506001949350505050565b6001546000906001600160a01b0316331480159061182b575060125460ff16155b80156118405750601054600160a01b900460ff165b8015610a18575060115461185330610b65565b1015905090565b60128054600160ff199091161790556040805160c081018252600d5460ff80821683526101008204811660208401526201000082048116938301939093526301000000810483166060830152640100000000810490921660808201819052600160281b9092046001600160801b031660a082018190526011549192600091906118e3908461223d565b6118ed9190612254565b905060006118fb828461222a565b905061191b737a250d5630b4cf539739df2c5dacb4c659f2488d82610870565b506119293061dead84611386565b50604080516002808252606082018352600092602083019080368337019050509050308160008151811061195f5761195f61230a565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119f59190612276565b81600181518110611a0857611a0861230a565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac94790611a60908590600090869030904290600401612320565b600060405180830381600087803b158015611a7a57600080fd5b505af1158015611a8e573d6000803e3d6000fd5b5050505060004790506000866080015160ff16876000015160ff168860a00151611ab89190612391565b611ac29190612391565b6001600160801b03169050600081886020015160ff1684611ae3919061223d565b611aed9190612254565b9050600082896040015160ff1685611b05919061223d565b611b0f9190612254565b90506000838a6060015160ff1686611b27919061223d565b611b319190612254565b600e546040519192506000916101009091046001600160a01b03169085908381818185875af1925050503d8060008114611b87576040519150601f19603f3d011682016040523d82523d6000602084013e611b8c565b606091505b5050600f546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611bdc576040519150601f19603f3d011682016040523d82523d6000602084013e611be1565b606091505b50506010546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611c31576040519150601f19603f3d011682016040523d82523d6000602084013e611c36565b606091505b50506012805460ff19169055505050505050505050505050565b6001600160a01b0382166000908152600a602052604081205460ff161580156109e35750506001600160a01b03166000908152600a602052604090205460ff1615919050565b6040805160c08082018352600c5460ff8082168452610100808304821660208087019190915262010000808504841687890152630100000080860485166060808a019190915264010000000080880487166080808c01919091526001600160801b03600160281b998a9004811660a0808e01919091528d519b8c018e52600d54808b168d529889048a16978c019790975294870488169b8a019b909b5291850486169088015283049093169685019690965291909104169281019290925260009182861515600114611d8c5760648260a001516001600160801b031686611d7d919061223d565b611d879190612254565b611db1565b60648360a001516001600160801b031686611da7919061223d565b611db19190612254565b90506000600188151514611def578260a001516001600160801b0316836000015160ff1683611de0919061223d565b611dea9190612254565b611e1a565b8360a001516001600160801b0316846000015160ff1683611e10919061223d565b611e1a9190612254565b905080600754611e2a919061222a565b6007556000611e39828461222a565b90508015611eb55730600090815260066020526040902054611e5c9082906122f7565b306000818152600660205260409020919091556001600160a01b0389167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611ea384610a1d565b60405190815260200160405180910390a35b6007546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a1611efc838861222a565b9998505050505050505050565b600060208083528351808285015260005b81811015611f3657858101830151858201604001528201611f1a565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a9757600080fd5b60008060408385031215611f7f57600080fd5b8235611f8a81611f57565b946020939093013593505050565b600060208284031215611faa57600080fd5b81356109e381611f57565b600080600060608486031215611fca57600080fd5b8335611fd581611f57565b92506020840135611fe581611f57565b929592945050506040919091013590565b60006020828403121561200857600080fd5b5035919050565b8015158114610a9757600080fd5b6000806040838503121561203057600080fd5b823561203b81611f57565b9150602083013561204b8161200f565b809150509250929050565b60006020828403121561206857600080fd5b81356109e38161200f565b803560ff8116811461208457600080fd5b919050565b6000806000806000806000806000806101408b8d0312156120a957600080fd5b6120b28b612073565b99506120c060208c01612073565b98506120ce60408c01612073565b97506120dc60608c01612073565b96506120ea60808c01612073565b95506120f860a08c01612073565b945061210660c08c01612073565b935061211460e08c01612073565b92506121236101008c01612073565b91506121326101208c01612073565b90509295989b9194979a5092959850565b60008060006060848603121561215857600080fd5b833561216381611f57565b9250602084013561217381611f57565b9150604084013561218381611f57565b809150509250925092565b600080604083850312156121a157600080fd5b82356121ac81611f57565b9150602083013561204b81611f57565b600080604083850312156121cf57600080fd5b8235611f8a8161200f565b600181811c908216806121ee57607f821691505b60208210810361220e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156108d7576108d7612214565b80820281158282048414176108d7576108d7612214565b60008261227157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561228857600080fd5b81516109e381611f57565b6000602082840312156122a557600080fd5b81516109e38161200f565b6000806000606084860312156122c557600080fd5b8351925060208401519150604084015190509250925092565b60ff81811683821601908111156108d7576108d7612214565b808201808211156108d7576108d7612214565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123705784516001600160a01b03168352938301939183019160010161234b565b50506001600160a01b03969096166060850152505050608001529392505050565b6001600160801b038281168282160390808211156123b1576123b1612214565b509291505056fea264697066735822122087aca2020de18cf79ec2040101c44192d1e212c8ea3e77e4fb28749e027c918b64736f6c63430008110033

Deployed Bytecode Sourcemap

7798:14798:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9698:57;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9698:57:0;;;;;;;;12555:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11197:248::-;;;;;;;;;;-1:-1:-1;11197:248:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;11197:248:0;1205:187:1;8797:42:0;;;;;;;;;;-1:-1:-1;8797:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;9780;;;;;;;;;;-1:-1:-1;9780:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8846:46;;;;;;;;;;;;;;;;12359:102;;;;;;;;;;-1:-1:-1;12441:12:0;;12359:102;;11779:558;;;;;;;;;;-1:-1:-1;11779:558:0;;;;;:::i;:::-;;:::i;13428:136::-;;;;;;;;;;;;;:::i;9299:192::-;;;;;;;;;;-1:-1:-1;9299:192:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9299:192:0;;-1:-1:-1;;;;;9299:192:0;;;;;;;2407:4:1;2395:17;;;2377:36;;2449:17;;;2444:2;2429:18;;2422:45;2503:17;;;2483:18;;;2476:45;;;;2557:17;;;2552:2;2537:18;;2530:45;2612:17;;;2606:3;2591:19;;2584:46;-1:-1:-1;;;;;2667:47:1;;;2661:3;2646:19;;2639:76;2364:3;2349:19;9299:192:0;2110:611:1;13237:183:0;;;;;;;;;;-1:-1:-1;13237:183:0;;;;;:::i;:::-;;:::i;12469:78::-;;;;;;;;;;-1:-1:-1;12469:78:0;;12537:2;3053:36:1;;3041:2;3026:18;12469:78:0;2911:184:1;8969:33:0;;;;;;;;;;-1:-1:-1;8969:33:0;;;;;;;;14565:195;;;;;;;;;;;;;:::i;:::-;;17195:158;;;;;;;;;;-1:-1:-1;17195:158:0;;;;;:::i;:::-;;:::i;17096:91::-;;;;;;;;;;-1:-1:-1;17096:91:0;;;;;:::i;:::-;;:::i;13087:142::-;;;;;;;;;;-1:-1:-1;13087:142:0;;;;;:::i;:::-;;:::i;9101:191::-;;;;;;;;;;-1:-1:-1;9101:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9101:191:0;;-1:-1:-1;;;;;9101:191:0;;;11453:122;;;;;;;;;;-1:-1:-1;11453:122:0;;;;;:::i;:::-;;:::i;16968:120::-;;;;;;;;;;-1:-1:-1;16968:120:0;;;;;:::i;:::-;;:::i;16452:119::-;;;;;;;;;;-1:-1:-1;16452:119:0;;;;;:::i;:::-;;:::i;12745:138::-;;;;;;;;;;-1:-1:-1;12745:138:0;;;;;:::i;:::-;;:::i;3175:103::-;;;;;;;;;;;;;:::i;13587:970::-;;;;;;;;;;-1:-1:-1;13587:970:0;;;;;:::i;:::-;;:::i;8605:55::-;;;;;;;;;;;;;;;;9500:28;;;;;;;;;;-1:-1:-1;9500:28:0;;;;;;;;2500:87;;;;;;;;;;-1:-1:-1;2546:7:0;2573:6;-1:-1:-1;;;;;2573:6:0;2500:87;;;-1:-1:-1;;;;;4020:32:1;;;4002:51;;3990:2;3975:18;2500:87:0;3856:203:1;12648:89:0;;;;;;;;;;;;;:::i;8151:126::-;;;;;;;;;;;;8234:42;8151:126;;11583:188;;;;;;;;;;-1:-1:-1;11583:188:0;;;;;:::i;:::-;;:::i;9659:32::-;;;;;;;;;;-1:-1:-1;9659:32:0;;;;-1:-1:-1;;;9659:32:0;;;;;;15094:1350;;;;;;;;;;-1:-1:-1;15094:1350:0;;;;;:::i;:::-;;:::i;16737:223::-;;;;;;;;;;-1:-1:-1;16737:223:0;;;;;:::i;:::-;;:::i;14768:131::-;;;;;;;;;;;;;:::i;12891:188::-;;;;;;;;;;-1:-1:-1;12891:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;13043:19:0;;;13011:7;13043:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12891:188;14907:179;;;;;;;;;;-1:-1:-1;14907:179:0;;;;;:::i;:::-;;:::i;3433:220::-;;;;;;;;;;-1:-1:-1;3433:220:0;;;;;:::i;:::-;;:::i;8284:30::-;;;;;;;;;;-1:-1:-1;8284:30:0;;;;-1:-1:-1;;;;;8284:30:0;;;16579:150;;;;;;;;;;-1:-1:-1;16579:150:0;;;;;:::i;:::-;;:::i;12555:85::-;12594:13;12627:5;12620:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12555:85;:::o;11197:248::-;11333:10;11299:4;11321:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;11321:32:0;;;;;;;;;;:41;;;11378:37;11299:4;;11321:32;;11378:37;;;;11356:6;160:25:1;;148:2;133:18;;14:177;11378:37:0;;;;;;;;-1:-1:-1;11433:4:0;11197:248;;;;;:::o;11779:558::-;-1:-1:-1;;;;;11934:19:0;;11913:4;11934:19;;;:11;:19;;;;;;;;11954:10;11934:31;;;;;;;;-1:-1:-1;;11934:52:0;11930:340;;-1:-1:-1;;;;;12029:19:0;;;;;;:11;:19;;;;;;;;12049:10;12029:31;;;;;;;;:41;-1:-1:-1;12029:41:0;12003:132;;;;-1:-1:-1;;;12003:132:0;;7111:2:1;12003:132:0;;;7093:21:1;7150:2;7130:18;;;7123:30;7189:31;7169:18;;;7162:59;7238:18;;12003:132:0;;;;;;;;;-1:-1:-1;;;;;12201:19:0;;;;;;:11;:19;;;;;;;;12221:10;12201:31;;;;;;;;:57;;12252:6;;12201:57;:::i;:::-;-1:-1:-1;;;;;12150:19:0;;;;;;:11;:19;;;;;;;;12170:10;12150:31;;;;;;;:108;11930:340;12289:40;12303:6;12311:9;12322:6;12289:13;:40::i;:::-;12282:47;;11779:558;;;;;;:::o;13428:136::-;13481:7;13541:15;8047:42;13541:9;:15::i;:::-;13523;7974:42;13523:9;:15::i;:::-;13508:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;13501:55;;13428:136;:::o;13237:183::-;13334:7;13396:16;;13380:12;;13367:10;:25;;;;:::i;:::-;13366:46;;;;:::i;14565:195::-;2386:13;:11;:13::i;:::-;14643:82:::1;::::0;14625:12:::1;::::0;14651:10:::1;::::0;14689:21:::1;::::0;14625:12;14643:82;14625:12;14643:82;14689:21;14651:10;14643:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14624:101;;;14744:7;14736:16;;;::::0;::::1;;14613:147;14565:195::o:0;17195:158::-;2386:13;:11;:13::i;:::-;-1:-1:-1;;;;;17307:20:0;;;::::1;;::::0;;;:10:::1;:20;::::0;;;;:38;;-1:-1:-1;;17307:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17195:158::o;17096:91::-;2386:13;:11;:13::i;:::-;17161::::1;:18:::0;;-1:-1:-1;;17161:18:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17096:91::o;13087:142::-;13152:7;13209:12;;13189:16;;13180:6;:25;;;;:::i;11453:122::-;11508:4;11532:35;11540:7;-1:-1:-1;;11532:7:0;:35::i;16968:120::-;2386:13;:11;:13::i;:::-;17075:5:::1;17069:2;17054:12;;:17;;;;:::i;:::-;17053:27;;;;:::i;:::-;17038:12;:42:::0;-1:-1:-1;16968:120:0:o;16452:119::-;2386:13;:11;:13::i;:::-;-1:-1:-1;;;;;16535:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;16535:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16452:119::o;12745:138::-;-1:-1:-1;;;;;12858:16:0;;12811:7;12858:16;;;:7;:16;;;;;;12838:37;;:19;:37::i;3175:103::-;2386:13;:11;:13::i;:::-;3240:30:::1;3267:1;3240:18;:30::i;:::-;3175:103::o:0;13587:970::-;2386:13;:11;:13::i;:::-;13663:8:::1;::::0;::::1;;13662:9;13654:39;;;::::0;-1:-1:-1;;;13654:39:0;;8339:2:1;13654:39:0::1;::::0;::::1;8321:21:1::0;8378:2;8358:18;;;8351:30;-1:-1:-1;;;8397:18:1;;;8390:47;8454:18;;13654:39:0::1;8137:341:1::0;13654:39:0::1;8234:42;-1:-1:-1::0;;;;;13742:25:0::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13724:71:0::1;;13804:4;8234:42;-1:-1:-1::0;;;;;13811:22:0::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13724:112;::::0;-1:-1:-1;;;;;;13724:112:0::1;::::0;;;;;;-1:-1:-1;;;;;8969:15:1;;;13724:112:0::1;::::0;::::1;8951:34:1::0;9021:15;;9001:18;;;8994:43;8886:18;;13724:112:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13706:15;:130:::0;;-1:-1:-1;;;;;;13706:130:0::1;-1:-1:-1::0;;;;;13706:130:0;;::::1;;::::0;;13867:4:::1;-1:-1:-1::0;13847:26:0;;;:11:::1;:26;::::0;;;;;;;8234:42:::1;13847:54:::0;;;;;;;;-1:-1:-1;;13847:88:0;;;;13981:15;;;::::1;13946:52:::0;;;;;:86;;;14043:34;;::::1;::::0;;;;;;:54;;;14115:15;;14108:115;;-1:-1:-1;;;14108:115:0;;::::1;::::0;::::1;9222:51:1::0;;;;9289:18;;;9282:34;;;;14115:15:0;::::1;::::0;14108:31:::1;::::0;9195:18:1;;14108:115:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8234:42:0::1;14236:33;14277:21;14322:4;14342:24;14322:4:::0;14342:9:::1;:24::i;:::-;14236:224;::::0;-1:-1:-1;;;;;;14236:224:0::1;::::0;;;;;;-1:-1:-1;;;;;9936:15:1;;;14236:224:0::1;::::0;::::1;9918:34:1::0;9968:18;;;9961:34;;;;14381:1:0::1;10011:18:1::0;;;10004:34;;;10054:18;;;10047:34;10118:15;;;10097:19;;;10090:44;14434:15:0::1;10150:19:1::0;;;10143:35;9852:19;;14236:224:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14473:12:0::1;:19:::0;;-1:-1:-1;;;;14473:19:0::1;-1:-1:-1::0;;;14473:19:0::1;::::0;;-1:-1:-1;;14503:13:0::1;:20:::0;;-1:-1:-1;;14503:20:0;;::::1;14488:4;14503:20:::0;;::::1;::::0;;;14534:8:::1;:15:::0;;;;::::1;::::0;;::::1;::::0;;13587:970::o;12648:89::-;12689:13;12722:7;12715:14;;;;;:::i;11583:188::-;11690:4;11719:44;11733:10;11745:9;11756:6;11719:13;:44::i;15094:1350::-;2386:13;:11;:13::i;:::-;15450:21:::1;15590:10:::0;15561:13;15537:8;15474:47:::1;15506:15:::0;15474:16;:47:::1;:::i;:::-;:71;;;;:::i;:::-;:100;;;;:::i;:::-;:126;;;;:::i;:::-;15450:150;;::::0;-1:-1:-1;15611:22:0::1;15756:11:::0;15726:14;15701:9;15636:49:::1;15669:16:::0;15636:17;:49:::1;:::i;:::-;:74;;;;:::i;:::-;:104;;;;:::i;:::-;:131;;;;:::i;:::-;15611:156;;;;8125:2;15788:13;-1:-1:-1::0;;;;;15788:24:0::1;;;15780:54;;;::::0;-1:-1:-1;;;15780:54:0;;10855:2:1;15780:54:0::1;::::0;::::1;10837:21:1::0;10894:2;10874:18;;;10867:30;-1:-1:-1;;;10913:18:1;;;10906:47;10970:18;;15780:54:0::1;10653:341:1::0;15780:54:0::1;8125:2;15853:14;-1:-1:-1::0;;;;;15853:25:0::1;;;15845:56;;;::::0;-1:-1:-1;;;15845:56:0;;11201:2:1;15845:56:0::1;::::0;::::1;11183:21:1::0;11240:2;11220:18;;;11213:30;-1:-1:-1;;;11259:18:1;;;11252:48;11317:18;;15845:56:0::1;10999:342:1::0;15845:56:0::1;15923:242;;;;;;;;15954:16;15923:242;;;;;;15996:16;15923:242;;;;;;16031:16;15923:242;;;;;;16071:16;15923:242;;;;;;16108:10;15923:242;;;;;;16140:13;-1:-1:-1::0;;;;;15923:242:0::1;;;::::0;15914:6:::1;:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;15914:251:0::1;;;;;-1:-1:-1::0;;;;;15914:251:0::1;;;;;;;;;16188:248;;;;;;;;16219:17;16188:248;;;;;;16262:17;16188:248;;;;;;16298:17;16188:248;;;;;;16339:17;16188:248;;;;;;16377:11;16188:248;;;;;;16410:14;-1:-1:-1::0;;;;;16188:248:0::1;;;::::0;16178:7:::1;:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;16178:258:0::1;;;;;-1:-1:-1::0;;;;;16178:258:0::1;;;;;;;;;15439:1005;;15094:1350:::0;;;;;;;;;;:::o;16737:223::-;2386:13;:11;:13::i;:::-;16863:20:::1;:25:::0;;-1:-1:-1;;;;;16863:25:0;;::::1;;;-1:-1:-1::0;;;;;;16863:25:0;;::::1;;::::0;;16899:13:::1;:19:::0;;;;::::1;-1:-1:-1::0;;;;;;16899:19:0;;::::1;;::::0;;16929:18:::1;:23:::0;;;;;::::1;::::0;::::1;;::::0;;16737:223::o;14768:131::-;2386:13;:11;:13::i;:::-;14825:66:::1;14847:4;14854:10;14866:24;14884:4;14866:9;:24::i;:::-;14825:13;:66::i;14907:179::-:0;2386:13;:11;:13::i;:::-;15021:12:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;15021:23:0::1;-1:-1:-1::0;;;;15021:23:0;;::::1;::::0;;;::::1;::::0;;;15055:13:::1;:23:::0;14907:179::o;3433:220::-;2386:13;:11;:13::i;:::-;-1:-1:-1;;;;;3518:22:0;::::1;3514:93;;3564:31;::::0;-1:-1:-1;;;3564:31:0;;3592:1:::1;3564:31;::::0;::::1;4002:51:1::0;3975:18;;3564:31:0::1;3856:203:1::0;3514:93:0::1;3617:28;3636:8;3617:18;:28::i;16579:150::-:0;2386:13;:11;:13::i;:::-;-1:-1:-1;;;;;16689:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;16689:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16579:150::o;17377:1398::-;-1:-1:-1;;;;;17529:21:0;;17503:4;17529:21;;;:10;:21;;;;;;;;17528:22;:45;;;;-1:-1:-1;;;;;;17555:18:0;;;;;;:10;:18;;;;;;;;17554:19;17528:45;17520:69;;;;-1:-1:-1;;;17520:69:0;;11548:2:1;17520:69:0;;;11530:21:1;11587:2;11567:18;;;11560:30;-1:-1:-1;;;11606:18:1;;;11599:41;11657:18;;17520:69:0;11346:335:1;17520:69:0;17606:6;;;;17602:87;;;17636:41;17651:6;17659:9;17670:6;17636:14;:41::i;:::-;17629:48;;;;17602:87;17719:13;;;;:54;;;;-1:-1:-1;;;;;;17750:23:0;;;;;;:15;:23;;;;;;;;17749:24;17719:54;:98;;;;-1:-1:-1;;;;;;17791:26:0;;;;;;:15;:26;;;;;;;;17790:27;17719:98;17701:279;;;17880:12;;17870:6;:22;;17844:124;;;;-1:-1:-1;;;17844:124:0;;11888:2:1;17844:124:0;;;11870:21:1;11927:2;11907:18;;;11900:30;11966:34;11946:18;;;11939:62;-1:-1:-1;;;12017:18:1;;;12010:38;12065:19;;17844:124:0;11686:404:1;17844:124:0;17996:17;:15;:17::i;:::-;17992:61;;;18030:11;:9;:11::i;:::-;18065:24;18092:26;18111:6;18092:18;:26::i;:::-;-1:-1:-1;;;;;18137:15:0;;;;;;:7;:15;;;;;;18065:53;;-1:-1:-1;18137:35:0;-1:-1:-1;18137:35:0;18129:68;;;;-1:-1:-1;;;18129:68:0;;12297:2:1;18129:68:0;;;12279:21:1;12336:2;12316:18;;;12309:30;-1:-1:-1;;;12355:18:1;;;12348:50;12415:18;;18129:68:0;12095:344:1;18129:68:0;-1:-1:-1;;;;;18226:15:0;;;;;;:7;:15;;;;;;:34;;18244:16;;18226:34;:::i;:::-;-1:-1:-1;;;;;18208:15:0;;;;;;:7;:15;;;;;:52;;;;18302:33;18216:6;18325:9;18302:14;:33::i;:::-;:236;;18522:16;18302:236;;;18401:15;;18351:155;;-1:-1:-1;;;;;18391:25:0;;;18401:15;;18391:25;:40;;18426:5;18391:40;;;18419:4;18391:40;18450:6;18475:16;18351:21;:155::i;:::-;-1:-1:-1;;;;;18570:18:0;;;;;;:7;:18;;;;;;18273:265;;-1:-1:-1;18570:39:0;;18273:265;;18570:39;:::i;:::-;-1:-1:-1;;;;;18549:18:0;;;;;;;:7;:18;;;;;:60;;;;18627:118;;;18695:39;18715:18;18695:19;:39::i;:::-;18627:118;;160:25:1;;;148:2;133:18;18627:118:0;;;;;;;-1:-1:-1;18763:4:0;;17377:1398;-1:-1:-1;;;;;17377:1398:0:o;2665:166::-;2546:7;2573:6;-1:-1:-1;;;;;2573:6:0;865:10;2725:23;2721:103;;2772:40;;-1:-1:-1;;;2772:40:0;;865:10;2772:40;;;4002:51:1;3975:18;;2772:40:0;3856:203:1;3813:191:0;3887:16;3906:6;;-1:-1:-1;;;;;3923:17:0;;;-1:-1:-1;;;;;;3923:17:0;;;;;;3956:40;;3906:6;;;;;;;3956:40;;3887:16;3956:40;3876:128;3813:191;:::o;18783:489::-;18910:4;18927:24;18954:26;18973:6;18954:18;:26::i;:::-;-1:-1:-1;;;;;18999:15:0;;;;;;:7;:15;;;;;;18927:53;;-1:-1:-1;18999:35:0;-1:-1:-1;18999:35:0;18991:68;;;;-1:-1:-1;;;18991:68:0;;12297:2:1;18991:68:0;;;12279:21:1;12336:2;12316:18;;;12309:30;-1:-1:-1;;;12355:18:1;;;12348:50;12415:18;;18991:68:0;12095:344:1;18991:68:0;-1:-1:-1;;;;;19088:15:0;;;;;;:7;:15;;;;;;:34;;19106:16;;19088:34;:::i;:::-;-1:-1:-1;;;;;19070:15:0;;;;;;;:7;:15;;;;;;:52;;;;19154:18;;;;;;;:37;;19175:16;;19154:37;:::i;:::-;-1:-1:-1;;;;;19133:18:0;;;;;;;:7;:18;;;;;;;:58;;;;19207:35;;;;;;;;;;19235:6;160:25:1;;148:2;133:18;;14:177;19207:35:0;;;;;;;;-1:-1:-1;19260:4:0;;18783:489;-1:-1:-1;;;;18783:489:0:o;20571:235::-;20672:15;;20621:4;;-1:-1:-1;;;;;20672:15:0;20658:10;:29;;;;:53;;-1:-1:-1;20705:6:0;;;;20704:7;20658:53;:82;;;;-1:-1:-1;20728:12:0;;-1:-1:-1;;;20728:12:0;;;;20658:82;:140;;;;;20785:13;;20757:24;20775:4;20757:9;:24::i;:::-;:41;;20638:160;;20571:235;:::o;20814:1578::-;9880:6;:13;;9889:4;-1:-1:-1;;9880:13:0;;;;;;20864:30:::1;::::0;;::::1;::::0;::::1;::::0;;20887:7:::1;20864:30:::0;9880:13;20864:30;;::::1;::::0;;9880:13;20864:30;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;20864:30:0;;::::1;-1:-1:-1::0;;;;;20864:30:0::1;::::0;;;;;;20933:13:::1;::::0;20864:30;;-1:-1:-1;;20864:30:0;20981:32:::1;::::0;20933:13;20981:32:::1;:::i;:::-;20980:65;;;;:::i;:::-;20957:88:::0;-1:-1:-1;21056:20:0::1;21079:30;20957:88:::0;21079:15;:30:::1;:::i;:::-;21056:53;;21120:49;8234:42;21156:12;21120:7;:49::i;:::-;;21199:48;21221:4;7974:42;21234:12;21199:13;:48::i;:::-;-1:-1:-1::0;21301:16:0::1;::::0;;21315:1:::1;21301:16:::0;;;;;::::1;::::0;;21277:21:::1;::::0;21301:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21301:16:0::1;21277:40;;21346:4;21328;21333:1;21328:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;21328:23:0::1;;;-1:-1:-1::0;;;;;21328:23:0::1;;;::::0;::::1;8234:42;-1:-1:-1::0;;;;;21372:22:0::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21362:4;21367:1;21362:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21362:34:0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:34;21409:199:::1;::::0;-1:-1:-1;;;21409:199:0;;8234:42:::1;::::0;21409:68:::1;::::0;:199:::1;::::0;21492:12;;21519:1:::1;::::0;21535:4;;21562::::1;::::0;21582:15:::1;::::0;21409:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21621:17;21641:21;21621:41;;21675:20;21765:9;:14;;;21698:81;;21729:9;:20;;;21698:51;;:9;:15;;;:51;;;;:::i;:::-;:81;;;;:::i;:::-;-1:-1:-1::0;;;;;21675:104:0::1;;;21790:26;21868:12;21832:9;:19;;;21820:31;;:9;:31;;;;:::i;:::-;21819:61;;;;:::i;:::-;21790:90;;21891:19;21942:12;21926:9;:12;;;21914:24;;:9;:24;;;;:::i;:::-;21913:41;;;;:::i;:::-;21891:63;;21965:24;22039:12;22005:9;:17;;;21993:29;;:9;:29;;;;:::i;:::-;21992:59;;;;:::i;:::-;22111:20;::::0;22103:89:::1;::::0;21965:86;;-1:-1:-1;22082:15:0::1;::::0;22111:20:::1;::::0;;::::1;-1:-1:-1::0;;;;;22111:20:0::1;::::0;22159:18;;22082:15;22103:89;22082:15;22103:89;22159:18;22111:20;22103:89:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;22228:13:0::1;::::0;22220:51:::1;::::0;22081:111;;-1:-1:-1;;;;;;22228:13:0::1;::::0;22255:11;;22220:51:::1;::::0;;;22255:11;22228:13;22220:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;22307:18:0::1;::::0;22299:85:::1;::::0;22203:68;;-1:-1:-1;;;;;;22307:18:0::1;::::0;22353:16;;22299:85:::1;::::0;;;22353:16;22307:18;22299:85:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;9916:6:0;:14;;-1:-1:-1;;9916:14:0;;;-1:-1:-1;;;;;;;;;;;;20814:1578:0:o;22400:193::-;-1:-1:-1;;;;;22539:19:0;;22509:4;22539:19;;;:11;:19;;;;;;;;22538:20;:47;;;;-1:-1:-1;;;;;;;22563:22:0;;;;;:11;:22;;;;;;;;22562:23;;22400:193;-1:-1:-1;22400:193:0:o;19280:1283::-;19438:28;;;;;;;;;19460:6;19438:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;19438:28:0;;;;;;;;;;;;;;19477:30;;;;;;;19500:7;19477:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19418:7;;;19550:14;;;19438:28;19550:14;:129;;19676:3;19657:9;:15;;;-1:-1:-1;;;;;19638:34:0;:16;:34;;;;:::i;:::-;19637:42;;;;:::i;:::-;19550:129;;;19618:3;19600:8;:14;;;-1:-1:-1;;;;;19581:33:0;:16;:33;;;;:::i;:::-;19580:41;;;;:::i;:::-;19520:159;-1:-1:-1;19712:27:0;19752:4;19742:14;;;;:168;;19895:9;:15;;;-1:-1:-1;;;;;19848:62:0;19871:9;:20;;;19849:42;;:19;:42;;;;:::i;:::-;19848:62;;;;:::i;:::-;19742:168;;;19818:8;:14;;;-1:-1:-1;;;;;19772:60:0;19795:8;:19;;;19773:41;;:19;:41;;;;:::i;:::-;19772:60;;;;:::i;:::-;19712:198;;19961:19;19942:16;;:38;;;;:::i;:::-;19923:16;:57;20015:29;20047:54;20082:19;20047;:54;:::i;:::-;20015:86;-1:-1:-1;20116:25:0;;20112:326;;20216:4;20200:22;;;;:7;:22;;;;;;:63;;20242:21;;20200:63;:::i;:::-;20174:4;20158:22;;;;:7;:22;;;;;:105;;;;-1:-1:-1;;;;;20285:141:0;;;20369:42;20389:21;20369:19;:42::i;:::-;20285:141;;160:25:1;;;148:2;133:18;20285:141:0;;;;;;;20112:326;20482:16;;20453:46;;;14202:25:1;;;14258:2;14243:18;;14236:34;;;;20453:46:0;;14175:18:1;20453:46:0;;;;;;;20517:38;20536:19;20517:16;:38;:::i;:::-;20510:45;19280:1283;-1:-1:-1;;;;;;;;;19280:1283:0:o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2726:180::-;2785:6;2838:2;2826:9;2817:7;2813:23;2809:32;2806:52;;;2854:1;2851;2844:12;2806:52;-1:-1:-1;2877:23:1;;2726:180;-1:-1:-1;2726:180:1:o;3100:118::-;3186:5;3179:13;3172:21;3165:5;3162:32;3152:60;;3208:1;3205;3198:12;3223:382;3288:6;3296;3349:2;3337:9;3328:7;3324:23;3320:32;3317:52;;;3365:1;3362;3355:12;3317:52;3404:9;3391:23;3423:31;3448:5;3423:31;:::i;:::-;3473:5;-1:-1:-1;3530:2:1;3515:18;;3502:32;3543:30;3502:32;3543:30;:::i;:::-;3592:7;3582:17;;;3223:382;;;;;:::o;3610:241::-;3666:6;3719:2;3707:9;3698:7;3694:23;3690:32;3687:52;;;3735:1;3732;3725:12;3687:52;3774:9;3761:23;3793:28;3815:5;3793:28;:::i;4298:156::-;4364:20;;4424:4;4413:16;;4403:27;;4393:55;;4444:1;4441;4434:12;4393:55;4298:156;;;:::o;4459:819::-;4579:6;4587;4595;4603;4611;4619;4627;4635;4643;4651;4704:3;4692:9;4683:7;4679:23;4675:33;4672:53;;;4721:1;4718;4711:12;4672:53;4744:27;4761:9;4744:27;:::i;:::-;4734:37;;4790:36;4822:2;4811:9;4807:18;4790:36;:::i;:::-;4780:46;;4845:36;4877:2;4866:9;4862:18;4845:36;:::i;:::-;4835:46;;4900:36;4932:2;4921:9;4917:18;4900:36;:::i;:::-;4890:46;;4955:37;4987:3;4976:9;4972:19;4955:37;:::i;:::-;4945:47;;5011:37;5043:3;5032:9;5028:19;5011:37;:::i;:::-;5001:47;;5067:37;5099:3;5088:9;5084:19;5067:37;:::i;:::-;5057:47;;5123:37;5155:3;5144:9;5140:19;5123:37;:::i;:::-;5113:47;;5179:37;5211:3;5200:9;5196:19;5179:37;:::i;:::-;5169:47;;5235:37;5267:3;5256:9;5252:19;5235:37;:::i;:::-;5225:47;;4459:819;;;;;;;;;;;;;:::o;5283:529::-;5360:6;5368;5376;5429:2;5417:9;5408:7;5404:23;5400:32;5397:52;;;5445:1;5442;5435:12;5397:52;5484:9;5471:23;5503:31;5528:5;5503:31;:::i;:::-;5553:5;-1:-1:-1;5610:2:1;5595:18;;5582:32;5623:33;5582:32;5623:33;:::i;:::-;5675:7;-1:-1:-1;5734:2:1;5719:18;;5706:32;5747:33;5706:32;5747:33;:::i;:::-;5799:7;5789:17;;;5283:529;;;;;:::o;5817:388::-;5885:6;5893;5946:2;5934:9;5925:7;5921:23;5917:32;5914:52;;;5962:1;5959;5952:12;5914:52;6001:9;5988:23;6020:31;6045:5;6020:31;:::i;:::-;6070:5;-1:-1:-1;6127:2:1;6112:18;;6099:32;6140:33;6099:32;6140:33;:::i;6210:309::-;6275:6;6283;6336:2;6324:9;6315:7;6311:23;6307:32;6304:52;;;6352:1;6349;6342:12;6304:52;6391:9;6378:23;6410:28;6432:5;6410:28;:::i;6524:380::-;6603:1;6599:12;;;;6646;;;6667:61;;6721:4;6713:6;6709:17;6699:27;;6667:61;6774:2;6766:6;6763:14;6743:18;6740:38;6737:161;;6820:10;6815:3;6811:20;6808:1;6801:31;6855:4;6852:1;6845:15;6883:4;6880:1;6873:15;6737:161;;6524:380;;;:::o;7267:127::-;7328:10;7323:3;7319:20;7316:1;7309:31;7359:4;7356:1;7349:15;7383:4;7380:1;7373:15;7399:128;7466:9;;;7487:11;;;7484:37;;;7501:18;;:::i;7532:168::-;7605:9;;;7636;;7653:15;;;7647:22;;7633:37;7623:71;;7674:18;;:::i;7705:217::-;7745:1;7771;7761:132;;7815:10;7810:3;7806:20;7803:1;7796:31;7850:4;7847:1;7840:15;7878:4;7875:1;7868:15;7761:132;-1:-1:-1;7907:9:1;;7705:217::o;8483:251::-;8553:6;8606:2;8594:9;8585:7;8581:23;8577:32;8574:52;;;8622:1;8619;8612:12;8574:52;8654:9;8648:16;8673:31;8698:5;8673:31;:::i;9327:245::-;9394:6;9447:2;9435:9;9426:7;9422:23;9418:32;9415:52;;;9463:1;9460;9453:12;9415:52;9495:9;9489:16;9514:28;9536:5;9514:28;:::i;10189:306::-;10277:6;10285;10293;10346:2;10334:9;10325:7;10321:23;10317:32;10314:52;;;10362:1;10359;10352:12;10314:52;10391:9;10385:16;10375:26;;10441:2;10430:9;10426:18;10420:25;10410:35;;10485:2;10474:9;10470:18;10464:25;10454:35;;10189:306;;;;;:::o;10500:148::-;10588:4;10567:12;;;10581;;;10563:31;;10606:13;;10603:39;;;10622:18;;:::i;12444:125::-;12509:9;;;12530:10;;;12527:36;;;12543:18;;:::i;12706:127::-;12767:10;12762:3;12758:20;12755:1;12748:31;12798:4;12795:1;12788:15;12822:4;12819:1;12812:15;12838:980;13100:4;13148:3;13137:9;13133:19;13179:6;13168:9;13161:25;13205:2;13243:6;13238:2;13227:9;13223:18;13216:34;13286:3;13281:2;13270:9;13266:18;13259:31;13310:6;13345;13339:13;13376:6;13368;13361:22;13414:3;13403:9;13399:19;13392:26;;13453:2;13445:6;13441:15;13427:29;;13474:1;13484:195;13498:6;13495:1;13492:13;13484:195;;;13563:13;;-1:-1:-1;;;;;13559:39:1;13547:52;;13654:15;;;;13619:12;;;;13595:1;13513:9;13484:195;;;-1:-1:-1;;;;;;;13735:32:1;;;;13730:2;13715:18;;13708:60;-1:-1:-1;;;13799:3:1;13784:19;13777:35;13696:3;12838:980;-1:-1:-1;;;12838:980:1:o;13823:200::-;-1:-1:-1;;;;;13959:10:1;;;13947;;;13943:27;;13982:12;;;13979:38;;;13997:18;;:::i;:::-;13979:38;13823:200;;;;:::o

Swarm Source

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