ETH Price: $2,486.03 (-0.97%)

Token

FullMoon (FULLMOON)
 

Overview

Max Total Supply

1,000,000,000 FULLMOON

Holders

382

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,116,192.550993495732780053 FULLMOON

Value
$0.00
0xb5468cf119b126a23e942ac0e9450384b5005dfe
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:
FullMoon

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-05
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.16;

/******************************************/
/*           IERC20 starts here           */
/******************************************/

/**
 * @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 amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

/******************************************/
/*           Context starts here          */
/******************************************/

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

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

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * 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);
    }
}

/******************************************/
/*     IUniswapV2Router02 starts here     */
/******************************************/

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

    function WETH() external pure returns (address);

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

/******************************************/
/*      IUniswapV2Factory starts here     */
/******************************************/

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

/******************************************/
/*          FullMoon starts here          */
/******************************************/

contract FullMoon is IERC20, Ownable {
    
    // EVENTS
    event Reflect(uint256 amountReflected, uint256 newTotalProportion);

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

    uint256 constant MAX_FEE = 10;

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

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

    string _name = "FullMoon";
    string _symbol = "FULLMOON";

    uint256 _totalSupply = 1_000_000_000 ether;
    uint256 public _maxTxAmount = _totalSupply * 2 / 100;

    /* 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 = true;
    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isTxLimitExempt;

    Fee public buyFee = Fee({reflection: 1, marketing: 1, lp: 1, buyback: 1, burn: 1, total: 5});
    Fee public sellFee = Fee({reflection: 1, marketing: 1, lp: 1, buyback: 1, burn: 1, total: 5});

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

    bool public claimingFees = true;
    uint256 public swapThreshold = (_totalSupply * 2) / 1000;
    bool inSwap;
    mapping(address => bool) public blacklists;

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

    // CONSTRUCTOR
    constructor() Ownable(msg.sender) {
        // create uniswap pair
        address _uniswapPair =
            IUniswapV2Factory(UNISWAP_V2_ROUTER.factory()).createPair(address(this), UNISWAP_V2_ROUTER.WETH());
        UNISWAP_V2_PAIR = _uniswapPair;

        _allowances[address(this)][address(UNISWAP_V2_ROUTER)] = type(uint256).max;
        _allowances[address(this)][tx.origin] = type(uint256).max;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(UNISWAP_V2_ROUTER)] = true;
        isTxLimitExempt[_uniswapPair] = true;
        isTxLimitExempt[tx.origin] = true;
        isFeeExempt[tx.origin] = true;

        marketingFeeReceiver = 0xc9840c5B817b42a2295A78211DC296D5d88D4F05;
        lpFeeReceiver = 0xcBA568D9c69c4b50D9D12B5c4a9Abb66091af803;
        buybackFeeReceiver = 0xaeCe8CBfdeBd00b49975F96B665264860C7B03E3;

        _rOwned[tx.origin] = _totalSupply;
        emit Transfer(address(0), tx.origin, _totalSupply);
    }

    receive() external payable {}

/******************************************/
/*           ERC20 starts here            */
/******************************************/

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

/******************************************/
/*            VIEW starts here            */
/******************************************/

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

/******************************************/
/*           OWNER starts here            */
/******************************************/

    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 setMaxTxBasisPoint(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 starts here          */
/******************************************/

    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":"nonpayable","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":[],"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":"setMaxTxBasisPoint","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"}]

60e0604052600860a090815267233ab63626b7b7b760c11b60c05260019062000029908262000550565b50604080518082019091526008815267232aa62626a7a7a760c11b602082015260029062000058908262000550565b506b033b2e3c9fd0803ce8000000600355606460035460026200007c91906200061c565b6200008891906200064a565b60045560035460068190556008805460ff191660019081179091556040805160c08082018352838252602080830185905282840185905260608084018690526080808501879052600560a0958601819052600b8054650501010101016001600160a81b0319918216811790925588519687018952898752948601899052968501889052918401879052830195909552910192909252600c8054909216179055600f805460ff60a01b1916600160a01b1790556103e8906200014b9060026200061c565b6200015791906200064a565b6010553480156200016757600080fd5b503362000174816200045b565b506000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f091906200066d565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000252573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027891906200066d565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ec91906200066d565b6001600160a01b0381166080819052306000818152600760209081526040808320737a250d5630b4cf539739df2c5dacb4c659f2488d84528252808320600019908190553280855282852091909155938352600a8252808320805460ff1990811660019081179092557fc90215bb1b0ac6bfa50a3c02c4b559c695b6a8e828048a88e327592fc55c5d2c80548216831790559584528184208054871682179055848452818420805487168217905560098352818420805490961617909455600d80546001600160a01b031990811673c9840c5b817b42a2295a78211dc296d5d88d4f0517909155600e8054821673cba568d9c69c4b50d9d12b5c4a9abb66091af803179055600f805490911673aece8cbfdebd00b49975f96b665264860c7b03e3179055600354600582528483208190559351938452939450909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3506200069f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620004d657607f821691505b602082108103620004f757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200054b57600081815260208120601f850160051c81016020861015620005265750805b601f850160051c820191505b81811015620005475782815560010162000532565b5050505b505050565b81516001600160401b038111156200056c576200056c620004ab565b62000584816200057d8454620004c1565b84620004fd565b602080601f831160018114620005bc5760008415620005a35750858301515b600019600386901b1c1916600185901b17855562000547565b600085815260208120601f198616915b82811015620005ed57888601518255948401946001909101908401620005cc565b50858210156200060c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008160001904831182151516156200064557634e487b7160e01b600052601160045260246000fd5b500290565b6000826200066857634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200068057600080fd5b81516001600160a01b03811681146200069857600080fd5b9392505050565b60805161202a620006c960003960008181610760015281816111f00152611478015261202a6000f3fe60806040526004361061021e5760003560e01c8063571ac8b011610123578063b0f7ec38116100ab578063df20fd491161006f578063df20fd49146106ee578063e186ec741461070e578063f2fde38b1461072e578063f40acc3d1461074e578063f84ba65d1461078257600080fd5b8063b0f7ec3814610632578063c38a31de14610653578063d7c0103214610673578063d85a282814610693578063dd62ed3e146106a857600080fd5b80637d1db4a5116100f25780637d1db4a51461058d5780638da5cb5b146105a357806395d89b41146105d5578063a82ed9ec146105ea578063a9059cbb1461061257600080fd5b8063571ac8b014610518578063658d4b7f1461053857806370a0823114610558578063715018a61461057857600080fd5b80632b14ca56116101a6578063364333f411610175578063364333f41461044f578063404e51291461046657806341aea9de1461048657806345ce5365146104a657806347062402146104c657600080fd5b80632b14ca56146103625780632d838119146103f9578063313ce567146104195780633582ad231461043557600080fd5b806316c02129116101ed57806316c02129146102d2578063178002871461030257806318160ddd1461031857806323b872dd1461032d5780632b112e491461034d57600080fd5b80630445b6671461022a57806306fdde0314610253578063095ea7b3146102755780630cfc15f9146102a557600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024060105481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b506102686107a2565b60405161024a9190611b83565b34801561028157600080fd5b50610295610290366004611be6565b610834565b604051901515815260200161024a565b3480156102b157600080fd5b506102406102c0366004611c12565b60056020526000908152604090205481565b3480156102de57600080fd5b506102956102ed366004611c12565b60126020526000908152604090205460ff1681565b34801561030e57600080fd5b5061024060065481565b34801561032457600080fd5b50600354610240565b34801561033957600080fd5b50610295610348366004611c2f565b6108a1565b34801561035957600080fd5b506102406109ae565b34801561036e57600080fd5b50600c546103b49060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b6040805160ff9788168152958716602087015293861693850193909352908416606084015290921660808201526001600160801b0390911660a082015260c00161024a565b34801561040557600080fd5b50610240610414366004611c70565b6109e1565b34801561042557600080fd5b506040516012815260200161024a565b34801561044157600080fd5b506008546102959060ff1681565b34801561045b57600080fd5b506104646109fe565b005b34801561047257600080fd5b50610464610481366004611c9e565b610a5e565b34801561049257600080fd5b506104646104a1366004611cd3565b610a91565b3480156104b257600080fd5b506102406104c1366004611c70565b610aac565b3480156104d257600080fd5b50600b546103b49060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b34801561052457600080fd5b50610295610533366004611c12565b610abf565b34801561054457600080fd5b50610464610553366004611c9e565b610acd565b34801561056457600080fd5b50610240610573366004611c12565b610b00565b34801561058457600080fd5b50610464610b22565b34801561059957600080fd5b5061024060045481565b3480156105af57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161024a565b3480156105e157600080fd5b50610268610b36565b3480156105f657600080fd5b506105bd737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561061e57600080fd5b5061029561062d366004611be6565b610b45565b34801561063e57600080fd5b50600f5461029590600160a01b900460ff1681565b34801561065f57600080fd5b5061046461066e366004611cff565b610b52565b34801561067f57600080fd5b5061046461068e366004611db9565b610ea1565b34801561069f57600080fd5b50610464610ee8565b3480156106b457600080fd5b506102406106c3366004611e04565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156106fa57600080fd5b50610464610709366004611e3d565b610f03565b34801561071a57600080fd5b50610464610729366004611c70565b610f2d565b34801561073a57600080fd5b50610464610749366004611c12565b610f56565b34801561075a57600080fd5b506105bd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561078e57600080fd5b5061046461079d366004611c9e565b610f91565b6060600180546107b190611e59565b80601f01602080910402602001604051908101604052809291908181526020018280546107dd90611e59565b801561082a5780601f106107ff5761010080835404028352916020019161082a565b820191906000526020600020905b81548152906001019060200180831161080d57829003601f168201915b5050505050905090565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061088f9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610999576001600160a01b03841660009081526007602090815260408083203384529091529020548211156109455760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064015b60405180910390fd5b6001600160a01b0384166000908152600760209081526040808320338452909152902054610974908390611ea9565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b6109a4848484610fc4565b90505b9392505050565b60006109ba6000610b00565b6109c561dead610b00565b6003546109d29190611ea9565b6109dc9190611ea9565b905090565b6000600654600354836109f49190611ebc565b61089b9190611edb565b610a066112c5565b604051600090339047908381818185875af1925050503d8060008114610a48576040519150601f19603f3d011682016040523d82523d6000602084013e610a4d565b606091505b5050905080610a5b57600080fd5b50565b610a666112c5565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b610a996112c5565b6008805460ff1916911515919091179055565b6000600354600654836109f49190611ebc565b600061089b82600019610834565b610ad56112c5565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001600160a01b03811660009081526005602052604081205461089b906109e1565b610b2a6112c5565b610b3460006112f2565b565b6060600280546107b190611e59565b60006109a7338484610fc4565b610b5a6112c5565b600086888a610b698d8f611efd565b610b739190611efd565b610b7d9190611efd565b610b879190611efd565b60ff1690506000828486610b9b898b611efd565b610ba59190611efd565b610baf9190611efd565b610bb99190611efd565b60ff169050600a826001600160801b03161115610c0c5760405162461bcd60e51b8152602060048201526011602482015270084eaf240cccacae640e8dede40d0d2ced607b1b604482015260640161093c565b600a816001600160801b03161115610c5b5760405162461bcd60e51b81526020600482015260126024820152710a6cad8d840cccacae640e8dede40d0d2ced60731b604482015260640161093c565b6040518060c001604052808d60ff1681526020018d60ff1681526020018d60ff1681526020018d60ff1681526020018960ff168152602001836001600160801b0316815250600b60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816001600160801b0302191690836001600160801b031602179055509050506040518060c001604052808860ff1681526020018860ff1681526020018860ff1681526020018860ff1681526020018460ff168152602001826001600160801b0316815250600c60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816001600160801b0302191690836001600160801b03160217905550905050505050505050505050505050565b610ea96112c5565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493851693821693909317909255600f8054919093169116179055565b610ef06112c5565b610a5b3033610efe30610b00565b610fc4565b610f0b6112c5565b600f8054921515600160a01b0260ff60a01b1990931692909217909155601055565b610f356112c5565b61271081600354610f469190611ebc565b610f509190611edb565b60045550565b610f5e6112c5565b6001600160a01b038116610f8857604051631e4fbdf760e01b81526000600482015260240161093c565b610a5b816112f2565b610f996112c5565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b03821660009081526012602052604081205460ff1615801561100657506001600160a01b03841660009081526012602052604090205460ff16155b6110405760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015260640161093c565b60115460ff161561105d57611056848484611342565b90506109a7565b60085460ff16801561108857506001600160a01b0384166000908152600a602052604090205460ff16155b80156110ad57506001600160a01b0383166000908152600a602052604090205460ff16155b15611115576004548211156111155760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161093c565b61111d61146b565b1561112a5761112a6114d8565b600061113583610aac565b6001600160a01b0386166000908152600560205260409020549091508111156111975760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b604482015260640161093c565b6001600160a01b0385166000908152600560205260409020546111bb908290611ea9565b6001600160a01b0386166000908152600560205260408120919091556111e186866118ca565b6111eb5781611238565b6112387f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b03161461122e576000611231565b60015b8784611910565b6001600160a01b03861660009081526005602052604090205490915061125f908290611f16565b6001600160a01b0380871660008181526005602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6112a8846109e1565b60405190815260200160405180910390a350600195945050505050565b6000546001600160a01b03163314610b345760405163118cdaa760e01b815233600482015260240161093c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008061134e83610aac565b6001600160a01b0386166000908152600560205260409020549091508111156113b05760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b604482015260640161093c565b6001600160a01b0385166000908152600560205260409020546113d4908290611ea9565b6001600160a01b038087166000908152600560205260408082209390935590861681522054611404908290611f16565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114589087815260200190565b60405180910390a3506001949350505050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015906114a9575060115460ff16155b80156114be5750600f54600160a01b900460ff165b80156109dc57506010546114d130610b00565b1015905090565b60118054600160ff199091161790556040805160c081018252600c5460ff80821683526101008204811660208401526201000082048116938301939093526301000000810483166060830152640100000000810490921660808201819052600160281b9092046001600160801b031660a082018190526010549192600091906115619084611ebc565b61156b9190611edb565b905060006115798284611ea9565b9050611599737a250d5630b4cf539739df2c5dacb4c659f2488d82610834565b506115a73061dead84610fc4565b5060408051600280825260608201835260009260208301908036833701905050905030816000815181106115dd576115dd611f29565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116739190611f3f565b8160018151811061168657611686611f29565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906116de908590600090869030904290600401611f5c565b600060405180830381600087803b1580156116f857600080fd5b505af115801561170c573d6000803e3d6000fd5b5050505060004790506000866080015160ff16876000015160ff168860a001516117369190611fcd565b6117409190611fcd565b6001600160801b03169050600081886020015160ff16846117619190611ebc565b61176b9190611edb565b9050600082896040015160ff16856117839190611ebc565b61178d9190611edb565b90506000838a6060015160ff16866117a59190611ebc565b6117af9190611edb565b600d546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114611801576040519150601f19603f3d011682016040523d82523d6000602084013e611806565b606091505b5050600e546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611856576040519150601f19603f3d011682016040523d82523d6000602084013e61185b565b606091505b5050600f546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146118ab576040519150601f19603f3d011682016040523d82523d6000602084013e6118b0565b606091505b50506011805460ff19169055505050505050505050505050565b6001600160a01b03821660009081526009602052604081205460ff161580156109a75750506001600160a01b031660009081526009602052604090205460ff1615919050565b6040805160c08082018352600b5460ff8082168452610100808304821660208087019190915262010000808504841687890152630100000080860485166060808a019190915264010000000080880487166080808c01919091526001600160801b03600160281b998a9004811660a0808e01919091528d519b8c018e52600c54808b168d529889048a16978c019790975294870488169b8a019b909b5291850486169088015283049093169685019690965291909104169281019290925260009182861515600114611a065760648260a001516001600160801b0316866119f79190611ebc565b611a019190611edb565b611a2b565b60648360a001516001600160801b031686611a219190611ebc565b611a2b9190611edb565b90506000600188151514611a69578260a001516001600160801b0316836000015160ff1683611a5a9190611ebc565b611a649190611edb565b611a94565b8360a001516001600160801b0316846000015160ff1683611a8a9190611ebc565b611a949190611edb565b905080600654611aa49190611ea9565b6006556000611ab38284611ea9565b90508015611b2f5730600090815260056020526040902054611ad6908290611f16565b306000818152600560205260409020919091556001600160a01b0389167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611b1d846109e1565b60405190815260200160405180910390a35b6006546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a1611b768388611ea9565b9998505050505050505050565b600060208083528351808285015260005b81811015611bb057858101830151858201604001528201611b94565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a5b57600080fd5b60008060408385031215611bf957600080fd5b8235611c0481611bd1565b946020939093013593505050565b600060208284031215611c2457600080fd5b81356109a781611bd1565b600080600060608486031215611c4457600080fd5b8335611c4f81611bd1565b92506020840135611c5f81611bd1565b929592945050506040919091013590565b600060208284031215611c8257600080fd5b5035919050565b80358015158114611c9957600080fd5b919050565b60008060408385031215611cb157600080fd5b8235611cbc81611bd1565b9150611cca60208401611c89565b90509250929050565b600060208284031215611ce557600080fd5b6109a782611c89565b803560ff81168114611c9957600080fd5b6000806000806000806000806000806101408b8d031215611d1f57600080fd5b611d288b611cee565b9950611d3660208c01611cee565b9850611d4460408c01611cee565b9750611d5260608c01611cee565b9650611d6060808c01611cee565b9550611d6e60a08c01611cee565b9450611d7c60c08c01611cee565b9350611d8a60e08c01611cee565b9250611d996101008c01611cee565b9150611da86101208c01611cee565b90509295989b9194979a5092959850565b600080600060608486031215611dce57600080fd5b8335611dd981611bd1565b92506020840135611de981611bd1565b91506040840135611df981611bd1565b809150509250925092565b60008060408385031215611e1757600080fd5b8235611e2281611bd1565b91506020830135611e3281611bd1565b809150509250929050565b60008060408385031215611e5057600080fd5b611c0483611c89565b600181811c90821680611e6d57607f821691505b602082108103611e8d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561089b5761089b611e93565b6000816000190483118215151615611ed657611ed6611e93565b500290565b600082611ef857634e487b7160e01b600052601260045260246000fd5b500490565b60ff818116838216019081111561089b5761089b611e93565b8082018082111561089b5761089b611e93565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611f5157600080fd5b81516109a781611bd1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611fac5784516001600160a01b031683529383019391830191600101611f87565b50506001600160a01b03969096166060850152505050608001529392505050565b6001600160801b03828116828216039080821115611fed57611fed611e93565b509291505056fea2646970667358221220fc368ad94ff6b4dc97f8dce158c236b040125c52fbff575d97822b698f953f3a64736f6c63430008100033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c8063571ac8b011610123578063b0f7ec38116100ab578063df20fd491161006f578063df20fd49146106ee578063e186ec741461070e578063f2fde38b1461072e578063f40acc3d1461074e578063f84ba65d1461078257600080fd5b8063b0f7ec3814610632578063c38a31de14610653578063d7c0103214610673578063d85a282814610693578063dd62ed3e146106a857600080fd5b80637d1db4a5116100f25780637d1db4a51461058d5780638da5cb5b146105a357806395d89b41146105d5578063a82ed9ec146105ea578063a9059cbb1461061257600080fd5b8063571ac8b014610518578063658d4b7f1461053857806370a0823114610558578063715018a61461057857600080fd5b80632b14ca56116101a6578063364333f411610175578063364333f41461044f578063404e51291461046657806341aea9de1461048657806345ce5365146104a657806347062402146104c657600080fd5b80632b14ca56146103625780632d838119146103f9578063313ce567146104195780633582ad231461043557600080fd5b806316c02129116101ed57806316c02129146102d2578063178002871461030257806318160ddd1461031857806323b872dd1461032d5780632b112e491461034d57600080fd5b80630445b6671461022a57806306fdde0314610253578063095ea7b3146102755780630cfc15f9146102a557600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024060105481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b506102686107a2565b60405161024a9190611b83565b34801561028157600080fd5b50610295610290366004611be6565b610834565b604051901515815260200161024a565b3480156102b157600080fd5b506102406102c0366004611c12565b60056020526000908152604090205481565b3480156102de57600080fd5b506102956102ed366004611c12565b60126020526000908152604090205460ff1681565b34801561030e57600080fd5b5061024060065481565b34801561032457600080fd5b50600354610240565b34801561033957600080fd5b50610295610348366004611c2f565b6108a1565b34801561035957600080fd5b506102406109ae565b34801561036e57600080fd5b50600c546103b49060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b6040805160ff9788168152958716602087015293861693850193909352908416606084015290921660808201526001600160801b0390911660a082015260c00161024a565b34801561040557600080fd5b50610240610414366004611c70565b6109e1565b34801561042557600080fd5b506040516012815260200161024a565b34801561044157600080fd5b506008546102959060ff1681565b34801561045b57600080fd5b506104646109fe565b005b34801561047257600080fd5b50610464610481366004611c9e565b610a5e565b34801561049257600080fd5b506104646104a1366004611cd3565b610a91565b3480156104b257600080fd5b506102406104c1366004611c70565b610aac565b3480156104d257600080fd5b50600b546103b49060ff8082169161010081048216916201000082048116916301000000810482169164010000000082041690600160281b90046001600160801b031686565b34801561052457600080fd5b50610295610533366004611c12565b610abf565b34801561054457600080fd5b50610464610553366004611c9e565b610acd565b34801561056457600080fd5b50610240610573366004611c12565b610b00565b34801561058457600080fd5b50610464610b22565b34801561059957600080fd5b5061024060045481565b3480156105af57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161024a565b3480156105e157600080fd5b50610268610b36565b3480156105f657600080fd5b506105bd737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561061e57600080fd5b5061029561062d366004611be6565b610b45565b34801561063e57600080fd5b50600f5461029590600160a01b900460ff1681565b34801561065f57600080fd5b5061046461066e366004611cff565b610b52565b34801561067f57600080fd5b5061046461068e366004611db9565b610ea1565b34801561069f57600080fd5b50610464610ee8565b3480156106b457600080fd5b506102406106c3366004611e04565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156106fa57600080fd5b50610464610709366004611e3d565b610f03565b34801561071a57600080fd5b50610464610729366004611c70565b610f2d565b34801561073a57600080fd5b50610464610749366004611c12565b610f56565b34801561075a57600080fd5b506105bd7f000000000000000000000000f47410df9fdcacdb8878a780046d4a5c1d45becf81565b34801561078e57600080fd5b5061046461079d366004611c9e565b610f91565b6060600180546107b190611e59565b80601f01602080910402602001604051908101604052809291908181526020018280546107dd90611e59565b801561082a5780601f106107ff5761010080835404028352916020019161082a565b820191906000526020600020905b81548152906001019060200180831161080d57829003601f168201915b5050505050905090565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061088f9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610999576001600160a01b03841660009081526007602090815260408083203384529091529020548211156109455760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064015b60405180910390fd5b6001600160a01b0384166000908152600760209081526040808320338452909152902054610974908390611ea9565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b6109a4848484610fc4565b90505b9392505050565b60006109ba6000610b00565b6109c561dead610b00565b6003546109d29190611ea9565b6109dc9190611ea9565b905090565b6000600654600354836109f49190611ebc565b61089b9190611edb565b610a066112c5565b604051600090339047908381818185875af1925050503d8060008114610a48576040519150601f19603f3d011682016040523d82523d6000602084013e610a4d565b606091505b5050905080610a5b57600080fd5b50565b610a666112c5565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b610a996112c5565b6008805460ff1916911515919091179055565b6000600354600654836109f49190611ebc565b600061089b82600019610834565b610ad56112c5565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6001600160a01b03811660009081526005602052604081205461089b906109e1565b610b2a6112c5565b610b3460006112f2565b565b6060600280546107b190611e59565b60006109a7338484610fc4565b610b5a6112c5565b600086888a610b698d8f611efd565b610b739190611efd565b610b7d9190611efd565b610b879190611efd565b60ff1690506000828486610b9b898b611efd565b610ba59190611efd565b610baf9190611efd565b610bb99190611efd565b60ff169050600a826001600160801b03161115610c0c5760405162461bcd60e51b8152602060048201526011602482015270084eaf240cccacae640e8dede40d0d2ced607b1b604482015260640161093c565b600a816001600160801b03161115610c5b5760405162461bcd60e51b81526020600482015260126024820152710a6cad8d840cccacae640e8dede40d0d2ced60731b604482015260640161093c565b6040518060c001604052808d60ff1681526020018d60ff1681526020018d60ff1681526020018d60ff1681526020018960ff168152602001836001600160801b0316815250600b60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816001600160801b0302191690836001600160801b031602179055509050506040518060c001604052808860ff1681526020018860ff1681526020018860ff1681526020018860ff1681526020018460ff168152602001826001600160801b0316815250600c60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160000160026101000a81548160ff021916908360ff16021790555060608201518160000160036101000a81548160ff021916908360ff16021790555060808201518160000160046101000a81548160ff021916908360ff16021790555060a08201518160000160056101000a8154816001600160801b0302191690836001600160801b03160217905550905050505050505050505050505050565b610ea96112c5565b600d80546001600160a01b039485166001600160a01b031991821617909155600e805493851693821693909317909255600f8054919093169116179055565b610ef06112c5565b610a5b3033610efe30610b00565b610fc4565b610f0b6112c5565b600f8054921515600160a01b0260ff60a01b1990931692909217909155601055565b610f356112c5565b61271081600354610f469190611ebc565b610f509190611edb565b60045550565b610f5e6112c5565b6001600160a01b038116610f8857604051631e4fbdf760e01b81526000600482015260240161093c565b610a5b816112f2565b610f996112c5565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b03821660009081526012602052604081205460ff1615801561100657506001600160a01b03841660009081526012602052604090205460ff16155b6110405760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b604482015260640161093c565b60115460ff161561105d57611056848484611342565b90506109a7565b60085460ff16801561108857506001600160a01b0384166000908152600a602052604090205460ff16155b80156110ad57506001600160a01b0383166000908152600a602052604090205460ff16155b15611115576004548211156111155760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840161093c565b61111d61146b565b1561112a5761112a6114d8565b600061113583610aac565b6001600160a01b0386166000908152600560205260409020549091508111156111975760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b604482015260640161093c565b6001600160a01b0385166000908152600560205260409020546111bb908290611ea9565b6001600160a01b0386166000908152600560205260408120919091556111e186866118ca565b6111eb5781611238565b6112387f000000000000000000000000f47410df9fdcacdb8878a780046d4a5c1d45becf6001600160a01b0316876001600160a01b03161461122e576000611231565b60015b8784611910565b6001600160a01b03861660009081526005602052604090205490915061125f908290611f16565b6001600160a01b0380871660008181526005602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6112a8846109e1565b60405190815260200160405180910390a350600195945050505050565b6000546001600160a01b03163314610b345760405163118cdaa760e01b815233600482015260240161093c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008061134e83610aac565b6001600160a01b0386166000908152600560205260409020549091508111156113b05760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b604482015260640161093c565b6001600160a01b0385166000908152600560205260409020546113d4908290611ea9565b6001600160a01b038087166000908152600560205260408082209390935590861681522054611404908290611f16565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114589087815260200190565b60405180910390a3506001949350505050565b6000336001600160a01b037f000000000000000000000000f47410df9fdcacdb8878a780046d4a5c1d45becf16148015906114a9575060115460ff16155b80156114be5750600f54600160a01b900460ff165b80156109dc57506010546114d130610b00565b1015905090565b60118054600160ff199091161790556040805160c081018252600c5460ff80821683526101008204811660208401526201000082048116938301939093526301000000810483166060830152640100000000810490921660808201819052600160281b9092046001600160801b031660a082018190526010549192600091906115619084611ebc565b61156b9190611edb565b905060006115798284611ea9565b9050611599737a250d5630b4cf539739df2c5dacb4c659f2488d82610834565b506115a73061dead84610fc4565b5060408051600280825260608201835260009260208301908036833701905050905030816000815181106115dd576115dd611f29565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116739190611f3f565b8160018151811061168657611686611f29565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906116de908590600090869030904290600401611f5c565b600060405180830381600087803b1580156116f857600080fd5b505af115801561170c573d6000803e3d6000fd5b5050505060004790506000866080015160ff16876000015160ff168860a001516117369190611fcd565b6117409190611fcd565b6001600160801b03169050600081886020015160ff16846117619190611ebc565b61176b9190611edb565b9050600082896040015160ff16856117839190611ebc565b61178d9190611edb565b90506000838a6060015160ff16866117a59190611ebc565b6117af9190611edb565b600d546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114611801576040519150601f19603f3d011682016040523d82523d6000602084013e611806565b606091505b5050600e546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611856576040519150601f19603f3d011682016040523d82523d6000602084013e61185b565b606091505b5050600f546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146118ab576040519150601f19603f3d011682016040523d82523d6000602084013e6118b0565b606091505b50506011805460ff19169055505050505050505050505050565b6001600160a01b03821660009081526009602052604081205460ff161580156109a75750506001600160a01b031660009081526009602052604090205460ff1615919050565b6040805160c08082018352600b5460ff8082168452610100808304821660208087019190915262010000808504841687890152630100000080860485166060808a019190915264010000000080880487166080808c01919091526001600160801b03600160281b998a9004811660a0808e01919091528d519b8c018e52600c54808b168d529889048a16978c019790975294870488169b8a019b909b5291850486169088015283049093169685019690965291909104169281019290925260009182861515600114611a065760648260a001516001600160801b0316866119f79190611ebc565b611a019190611edb565b611a2b565b60648360a001516001600160801b031686611a219190611ebc565b611a2b9190611edb565b90506000600188151514611a69578260a001516001600160801b0316836000015160ff1683611a5a9190611ebc565b611a649190611edb565b611a94565b8360a001516001600160801b0316846000015160ff1683611a8a9190611ebc565b611a949190611edb565b905080600654611aa49190611ea9565b6006556000611ab38284611ea9565b90508015611b2f5730600090815260056020526040902054611ad6908290611f16565b306000818152600560205260409020919091556001600160a01b0389167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611b1d846109e1565b60405190815260200160405180910390a35b6006546040805184815260208101929092527fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac910160405180910390a1611b768388611ea9565b9998505050505050505050565b600060208083528351808285015260005b81811015611bb057858101830151858201604001528201611b94565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a5b57600080fd5b60008060408385031215611bf957600080fd5b8235611c0481611bd1565b946020939093013593505050565b600060208284031215611c2457600080fd5b81356109a781611bd1565b600080600060608486031215611c4457600080fd5b8335611c4f81611bd1565b92506020840135611c5f81611bd1565b929592945050506040919091013590565b600060208284031215611c8257600080fd5b5035919050565b80358015158114611c9957600080fd5b919050565b60008060408385031215611cb157600080fd5b8235611cbc81611bd1565b9150611cca60208401611c89565b90509250929050565b600060208284031215611ce557600080fd5b6109a782611c89565b803560ff81168114611c9957600080fd5b6000806000806000806000806000806101408b8d031215611d1f57600080fd5b611d288b611cee565b9950611d3660208c01611cee565b9850611d4460408c01611cee565b9750611d5260608c01611cee565b9650611d6060808c01611cee565b9550611d6e60a08c01611cee565b9450611d7c60c08c01611cee565b9350611d8a60e08c01611cee565b9250611d996101008c01611cee565b9150611da86101208c01611cee565b90509295989b9194979a5092959850565b600080600060608486031215611dce57600080fd5b8335611dd981611bd1565b92506020840135611de981611bd1565b91506040840135611df981611bd1565b809150509250925092565b60008060408385031215611e1757600080fd5b8235611e2281611bd1565b91506020830135611e3281611bd1565b809150509250929050565b60008060408385031215611e5057600080fd5b611c0483611c89565b600181811c90821680611e6d57607f821691505b602082108103611e8d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561089b5761089b611e93565b6000816000190483118215151615611ed657611ed6611e93565b500290565b600082611ef857634e487b7160e01b600052601260045260246000fd5b500490565b60ff818116838216019081111561089b5761089b611e93565b8082018082111561089b5761089b611e93565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611f5157600080fd5b81516109a781611bd1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611fac5784516001600160a01b031683529383019391830191600101611f87565b50506001600160a01b03969096166060850152505050608001529392505050565b6001600160801b03828116828216039080821115611fed57611fed611e93565b509291505056fea2646970667358221220fc368ad94ff6b4dc97f8dce158c236b040125c52fbff575d97822b698f953f3a64736f6c63430008100033

Deployed Bytecode Sourcemap

7624:12701:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9295:56;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9295:56:0;;;;;;;;12035:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10732:216::-;;;;;;;;;;-1:-1:-1;10732:216:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;10732:216:0;1205:187:1;8631:42:0;;;;;;;;;;-1:-1:-1;8631:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;9376;;;;;;;;;;-1:-1:-1;9376:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8680:46;;;;;;;;;;;;;;;;11839:102;;;;;;;;;;-1:-1:-1;11921:12:0;;11839:102;;11250:441;;;;;;;;;;-1:-1:-1;11250:441:0;;;;;:::i;:::-;;:::i;12831:136::-;;;;;;;;;;;;;:::i;9033:93::-;;;;;;;;;;-1:-1:-1;9033:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9033:93:0;;-1:-1:-1;;;;;9033:93: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;9033:93:0;2110:611:1;12674:149:0;;;;;;;;;;-1:-1:-1;12674:149:0;;;;;:::i;:::-;;:::i;11949:78::-;;;;;;;;;;-1:-1:-1;11949:78:0;;12017:2;3053:36:1;;3041:2;3026:18;11949:78:0;2911:184:1;8803:32:0;;;;;;;;;;-1:-1:-1;8803:32:0;;;;;;;;13115:170;;;;;;;;;;;;;:::i;:::-;;15534:135;;;;;;;;;;-1:-1:-1;15534:135:0;;;;;:::i;:::-;;:::i;15435:91::-;;;;;;;;;;-1:-1:-1;15435:91:0;;;;;:::i;:::-;;:::i;12526:140::-;;;;;;;;;;-1:-1:-1;12526:140:0;;;;;:::i;:::-;;:::i;8934:92::-;;;;;;;;;;-1:-1:-1;8934:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8934:92:0;;-1:-1:-1;;;;;8934:92:0;;;10956:122;;;;;;;;;;-1:-1:-1;10956:122:0;;;;;:::i;:::-;;:::i;14850:119::-;;;;;;;;;;-1:-1:-1;14850:119:0;;;;;:::i;:::-;;:::i;12225:138::-;;;;;;;;;;-1:-1:-1;12225:138:0;;;;;:::i;:::-;;:::i;5857:103::-;;;;;;;;;;;;;:::i;8450:52::-;;;;;;;;;;;;;;;;5182:87;;;;;;;;;;-1:-1:-1;5228:7:0;5255:6;-1:-1:-1;;;;;5255:6:0;5182:87;;;-1:-1:-1;;;;;3934:32:1;;;3916:51;;3904:2;3889:18;5182:87:0;3770:203:1;12128:89:0;;;;;;;;;;;;;:::i;7983:126::-;;;;;;;;;;;;8066:42;7983:126;;11086:156;;;;;;;;;;-1:-1:-1;11086:156:0;;;;;:::i;:::-;;:::i;9257:31::-;;;;;;;;;;-1:-1:-1;9257:31:0;;;;-1:-1:-1;;;9257:31:0;;;;;;13596:1246;;;;;;;;;;-1:-1:-1;13596:1246:0;;;;;:::i;:::-;;:::i;15112:189::-;;;;;;;;;;-1:-1:-1;15112:189:0;;;;;:::i;:::-;;:::i;13293:131::-;;;;;;;;;;;;;:::i;12371:147::-;;;;;;;;;;-1:-1:-1;12371:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;12482:19:0;;;12455:7;12482:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12371:147;13432:156;;;;;;;;;;-1:-1:-1;13432:156:0;;;;;:::i;:::-;;:::i;15309:118::-;;;;;;;;;;-1:-1:-1;15309:118:0;;;;;:::i;:::-;;:::i;6115:220::-;;;;;;;;;;-1:-1:-1;6115:220:0;;;;;:::i;:::-;;:::i;8116:40::-;;;;;;;;;;;;;;;14977:127;;;;;;;;;;-1:-1:-1;14977:127:0;;;;;:::i;:::-;;:::i;12035:85::-;12074:13;12107:5;12100:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12035:85;:::o;10732:216::-;10836:10;10807:4;10824:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10824:32:0;;;;;;;;;;:41;;;10881:37;10807:4;;10824:32;;10881:37;;;;10859:6;160:25:1;;148:2;133:18;;14:177;10881:37:0;;;;;;;;-1:-1:-1;10936:4:0;10732:216;;;;;:::o;11250:441::-;-1:-1:-1;;;;;11371:19:0;;11350:4;11371:19;;;:11;:19;;;;;;;;11391:10;11371:31;;;;;;;;-1:-1:-1;;11371:52:0;11367:257;;-1:-1:-1;;;;;11448:19:0;;;;;;:11;:19;;;;;;;;11468:10;11448:31;;;;;;;;:41;-1:-1:-1;11448:41:0;11440:83;;;;-1:-1:-1;;;11440:83:0;;6964:2:1;11440:83:0;;;6946:21:1;7003:2;6983:18;;;6976:30;7042:31;7022:18;;;7015:59;7091:18;;11440:83:0;;;;;;;;;-1:-1:-1;;;;;11572:19:0;;;;;;:11;:19;;;;;;;;11592:10;11572:31;;;;;;;;:40;;11606:6;;11572:40;:::i;:::-;-1:-1:-1;;;;;11538:19:0;;;;;;:11;:19;;;;;;;;11558:10;11538:31;;;;;;;:74;11367:257;11643:40;11657:6;11665:9;11676:6;11643:13;:40::i;:::-;11636:47;;11250:441;;;;;;:::o;12831:136::-;12884:7;12944:15;7879:42;12944:9;:15::i;:::-;12926;7806:42;12926:9;:15::i;:::-;12911:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;12904:55;;12831:136;:::o;12674:149::-;12744:7;12799:16;;12784:12;;12771:10;:25;;;;:::i;:::-;:44;;;;:::i;13115:170::-;5068:13;:11;:13::i;:::-;13192:58:::1;::::0;13175:12:::1;::::0;13200:10:::1;::::0;13224:21:::1;::::0;13175:12;13192:58;13175:12;13192:58;13224:21;13200:10;13192:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13174:76;;;13269:7;13261:16;;;::::0;::::1;;13163:122;13115:170::o:0;15534:135::-;5068:13;:11;:13::i;:::-;-1:-1:-1;;;;;15623:20:0;;;::::1;;::::0;;;:10:::1;:20;::::0;;;;:38;;-1:-1:-1;;15623:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15534:135::o;15435:91::-;5068:13;:11;:13::i;:::-;15500::::1;:18:::0;;-1:-1:-1;;15500:18:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15435:91::o;12526:140::-;12591:7;12646:12;;12627:16;;12618:6;:25;;;;:::i;10956:122::-;11011:4;11035:35;11043:7;-1:-1:-1;;11035:7:0;:35::i;14850:119::-;5068:13;:11;:13::i;:::-;-1:-1:-1;;;;;14933:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;14933:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14850:119::o;12225:138::-;-1:-1:-1;;;;;12338:16:0;;12291:7;12338:16;;;:7;:16;;;;;;12318:37;;:19;:37::i;5857:103::-;5068:13;:11;:13::i;:::-;5922:30:::1;5949:1;5922:18;:30::i;:::-;5857:103::o:0;12128:89::-;12169:13;12202:7;12195:14;;;;;:::i;11086:156::-;11166:4;11190:44;11204:10;11216:9;11227:6;11190:13;:44::i;13596:1246::-;5068:13;:11;:13::i;:::-;13952:21:::1;14040:10:::0;14024:13;14013:8;13976:34:::1;13995:15:::0;13976:16;:34:::1;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;:74;;;;:::i;:::-;13952:98;;::::0;-1:-1:-1;14061:22:0::1;14154:11:::0;14137:14;14125:9;14086:36:::1;14106:16:::0;14086:17;:36:::1;:::i;:::-;:48;;;;:::i;:::-;:65;;;;:::i;:::-;:79;;;;:::i;:::-;14061:104;;;;7957:2;14186:13;-1:-1:-1::0;;;;;14186:24:0::1;;;14178:54;;;::::0;-1:-1:-1;;;14178:54:0;;8345:2:1;14178:54:0::1;::::0;::::1;8327:21:1::0;8384:2;8364:18;;;8357:30;-1:-1:-1;;;8403:18:1;;;8396:47;8460:18;;14178:54:0::1;8143:341:1::0;14178:54:0::1;7957:2;14251:14;-1:-1:-1::0;;;;;14251:25:0::1;;;14243:56;;;::::0;-1:-1:-1;;;14243:56:0;;8691:2:1;14243:56:0::1;::::0;::::1;8673:21:1::0;8730:2;8710:18;;;8703:30;-1:-1:-1;;;8749:18:1;;;8742:48;8807:18;;14243:56:0::1;8489:342:1::0;14243:56:0::1;14321:242;;;;;;;;14352:16;14321:242;;;;;;14394:16;14321:242;;;;;;14429:16;14321:242;;;;;;14469:16;14321:242;;;;;;14506:10;14321:242;;;;;;14538:13;-1:-1:-1::0;;;;;14321:242:0::1;;;::::0;14312:6:::1;:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;14312:251:0::1;;;;;-1:-1:-1::0;;;;;14312:251:0::1;;;;;;;;;14586:248;;;;;;;;14617:17;14586:248;;;;;;14660:17;14586:248;;;;;;14696:17;14586:248;;;;;;14737:17;14586:248;;;;;;14775:11;14586:248;;;;;;14808:14;-1:-1:-1::0;;;;;14586:248:0::1;;;::::0;14576:7:::1;:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;14576:258:0::1;;;;;-1:-1:-1::0;;;;;14576:258:0::1;;;;;;;;;13941:901;;13596:1246:::0;;;;;;;;;;:::o;15112:189::-;5068:13;:11;:13::i;:::-;15204:20:::1;:25:::0;;-1:-1:-1;;;;;15204:25:0;;::::1;-1:-1:-1::0;;;;;;15204:25:0;;::::1;;::::0;;;15240:13:::1;:19:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;15270:18:::1;:23:::0;;;;;::::1;::::0;::::1;;::::0;;15112:189::o;13293:131::-;5068:13;:11;:13::i;:::-;13350:66:::1;13372:4;13379:10;13391:24;13409:4;13391:9;:24::i;:::-;13350:13;:66::i;13432:156::-:0;5068:13;:11;:13::i;:::-;13523:12:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;13523:23:0::1;-1:-1:-1::0;;;;13523:23:0;;::::1;::::0;;;::::1;::::0;;;13557:13:::1;:23:::0;13432:156::o;15309:118::-;5068:13;:11;:13::i;:::-;15414:5:::1;15409:2;15394:12;;:17;;;;:::i;:::-;:25;;;;:::i;:::-;15379:12;:40:::0;-1:-1:-1;15309:118:0:o;6115:220::-;5068:13;:11;:13::i;:::-;-1:-1:-1;;;;;6200:22:0;::::1;6196:93;;6246:31;::::0;-1:-1:-1;;;6246:31:0;;6274:1:::1;6246:31;::::0;::::1;3916:51:1::0;3889:18;;6246:31:0::1;3770:203:1::0;6196:93:0::1;6299:28;6318:8;6299:18;:28::i;14977:127::-:0;5068:13;:11;:13::i;:::-;-1:-1:-1;;;;;15064:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;15064:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14977:127::o;15817:1149::-;-1:-1:-1;;;;;15935:21:0;;15909:4;15935:21;;;:10;:21;;;;;;;;15934:22;:45;;;;-1:-1:-1;;;;;;15961:18:0;;;;;;:10;:18;;;;;;;;15960:19;15934:45;15926:69;;;;-1:-1:-1;;;15926:69:0;;9038:2:1;15926:69:0;;;9020:21:1;9077:2;9057:18;;;9050:30;-1:-1:-1;;;9096:18:1;;;9089:41;9147:18;;15926:69:0;8836:335:1;15926:69:0;16012:6;;;;16008:87;;;16042:41;16057:6;16065:9;16076:6;16042:14;:41::i;:::-;16035:48;;;;16008:87;16111:13;;;;:41;;;;-1:-1:-1;;;;;;16129:23:0;;;;;;:15;:23;;;;;;;;16128:24;16111:41;:72;;;;-1:-1:-1;;;;;;16157:26:0;;;;;;:15;:26;;;;;;;;16156:27;16111:72;16107:180;;;16218:12;;16208:6;:22;;16200:75;;;;-1:-1:-1;;;16200:75:0;;9378:2:1;16200:75:0;;;9360:21:1;9417:2;9397:18;;;9390:30;9456:34;9436:18;;;9429:62;-1:-1:-1;;;9507:18:1;;;9500:38;9555:19;;16200:75:0;9176:404:1;16200:75:0;16303:17;:15;:17::i;:::-;16299:61;;;16337:11;:9;:11::i;:::-;16372:24;16399:26;16418:6;16399:18;:26::i;:::-;-1:-1:-1;;;;;16444:15:0;;;;;;:7;:15;;;;;;16372:53;;-1:-1:-1;16444:35:0;-1:-1:-1;16444:35:0;16436:68;;;;-1:-1:-1;;;16436:68:0;;9787:2:1;16436:68:0;;;9769:21:1;9826:2;9806:18;;;9799:30;-1:-1:-1;;;9845:18:1;;;9838:50;9905:18;;16436:68:0;9585:344:1;16436:68:0;-1:-1:-1;;;;;16533:15:0;;;;;;:7;:15;;;;;;:34;;16551:16;;16533:34;:::i;:::-;-1:-1:-1;;;;;16515:15:0;;;;;;:7;:15;;;;;:52;;;;16609:33;16523:6;16632:9;16609:14;:33::i;:::-;:170;;16763:16;16609:170;;;16658:89;16690:15;-1:-1:-1;;;;;16680:25:0;:6;-1:-1:-1;;;;;16680:25:0;;:40;;16715:5;16680:40;;;16708:4;16680:40;16722:6;16730:16;16658:21;:89::i;:::-;-1:-1:-1;;;;;16811:18:0;;;;;;:7;:18;;;;;;16580:199;;-1:-1:-1;16811:39:0;;16580:199;;16811:39;:::i;:::-;-1:-1:-1;;;;;16790:18:0;;;;;;;:7;:18;;;;;:60;;;;16868:68;;;16896:39;16916:18;16896:19;:39::i;:::-;16868:68;;160:25:1;;;148:2;133:18;16868:68:0;;;;;;;-1:-1:-1;16954:4:0;;15817:1149;-1:-1:-1;;;;;15817:1149:0:o;5347:166::-;5228:7;5255:6;-1:-1:-1;;;;;5255:6:0;3644:10;5407:23;5403:103;;5454:40;;-1:-1:-1;;;5454:40:0;;3644:10;5454:40;;;3916:51:1;3889:18;;5454:40:0;3770:203:1;6495:191:0;6569:16;6588:6;;-1:-1:-1;;;;;6605:17:0;;;-1:-1:-1;;;;;;6605:17:0;;;;;;6638:40;;6588:6;;;;;;;6638:40;;6569:16;6638:40;6558:128;6495:191;:::o;16974:455::-;17067:4;17084:24;17111:26;17130:6;17111:18;:26::i;:::-;-1:-1:-1;;;;;17156:15:0;;;;;;:7;:15;;;;;;17084:53;;-1:-1:-1;17156:35:0;-1:-1:-1;17156:35:0;17148:68;;;;-1:-1:-1;;;17148:68:0;;9787:2:1;17148:68:0;;;9769:21:1;9826:2;9806:18;;;9799:30;-1:-1:-1;;;9845:18:1;;;9838:50;9905:18;;17148:68:0;9585:344:1;17148:68:0;-1:-1:-1;;;;;17245:15:0;;;;;;:7;:15;;;;;;:34;;17263:16;;17245:34;:::i;:::-;-1:-1:-1;;;;;17227:15:0;;;;;;;:7;:15;;;;;;:52;;;;17311:18;;;;;;;:37;;17332:16;;17311:37;:::i;:::-;-1:-1:-1;;;;;17290:18:0;;;;;;;:7;:18;;;;;;;:58;;;;17364:35;;;;;;;;;;17392:6;160:25:1;;148:2;133:18;;14:177;17364:35:0;;;;;;;;-1:-1:-1;17417:4:0;;16974:455;-1:-1:-1;;;;16974:455:0:o;18560:183::-;18610:4;18634:10;-1:-1:-1;;;;;18648:15:0;18634:29;;;;;:40;;-1:-1:-1;18668:6:0;;;;18667:7;18634:40;:56;;;;-1:-1:-1;18678:12:0;;-1:-1:-1;;;18678:12:0;;;;18634:56;:101;;;;;18722:13;;18694:24;18712:4;18694:9;:24::i;:::-;:41;;18627:108;;18560:183;:::o;18751:1402::-;9476:6;:13;;9485:4;-1:-1:-1;;9476:13:0;;;;;;18801:30:::1;::::0;;::::1;::::0;::::1;::::0;;18824:7:::1;18801:30:::0;9476:13;18801:30;;::::1;::::0;;9476:13;18801:30;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;18801:30:0;;::::1;-1:-1:-1::0;;;;;18801:30:0::1;::::0;;;;;;18870:13:::1;::::0;18801:30;;-1:-1:-1;;18801:30:0;18917:32:::1;::::0;18870:13;18917:32:::1;:::i;:::-;:50;;;;:::i;:::-;18894:73:::0;-1:-1:-1;18978:20:0::1;19001:30;18894:73:::0;19001:15;:30:::1;:::i;:::-;18978:53;;19042:49;8066:42;19078:12;19042:7;:49::i;:::-;;19121:48;19143:4;7806:42;19156:12;19121:13;:48::i;:::-;-1:-1:-1::0;19223:16:0::1;::::0;;19237:1:::1;19223:16:::0;;;;;::::1;::::0;;19199:21:::1;::::0;19223:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19223:16:0::1;19199:40;;19268:4;19250;19255:1;19250:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;19250:23:0::1;;;-1:-1:-1::0;;;;;19250:23:0::1;;;::::0;::::1;8066:42;-1:-1:-1::0;;;;;19294:22:0::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19284:4;19289:1;19284:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19284:34:0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:34;19331:147:::1;::::0;-1:-1:-1;;;19331:147:0;;8066:42:::1;::::0;19331:68:::1;::::0;:147:::1;::::0;19414:12;;19428:1:::1;::::0;19431:4;;19445::::1;::::0;19452:15:::1;::::0;19331:147:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19491:17;19511:21;19491:41;;19545:20;19609:9;:14;;;19568:55;;19586:9;:20;;;19568:38;;:9;:15;;;:38;;;;:::i;:::-;:55;;;;:::i;:::-;-1:-1:-1::0;;;;;19545:78:0::1;;;19634:26;19697:12;19675:9;:19;;;19663:31;;:9;:31;;;;:::i;:::-;:46;;;;:::i;:::-;19634:75;;19720:19;19769:12;19754:9;:12;;;19742:24;;:9;:24;;;;:::i;:::-;:39;;;;:::i;:::-;19720:61;;19792:24;19851:12;19831:9;:17;;;19819:29;;:9;:29;;;;:::i;:::-;:44;;;;:::i;:::-;19922:20;::::0;19914:65:::1;::::0;19792:71;;-1:-1:-1;19894:15:0::1;::::0;-1:-1:-1;;;;;19922:20:0;;::::1;::::0;19956:18;;19894:15;19914:65;19894:15;19914:65;19956:18;19922:20;19914:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;20014:13:0::1;::::0;20006:51:::1;::::0;19893:86;;-1:-1:-1;;;;;;20014:13:0::1;::::0;20041:11;;20006:51:::1;::::0;;;20041:11;20014:13;20006:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;20092:18:0::1;::::0;20084:61:::1;::::0;19990:67;;-1:-1:-1;;;;;;20092:18:0::1;::::0;20124:16;;20084:61:::1;::::0;;;20124:16;20092:18;20084:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;9512:6:0;:14;;-1:-1:-1;;9512:14:0;;;-1:-1:-1;;;;;;;;;;;;18751:1402:0:o;20161:161::-;-1:-1:-1;;;;;20268:19:0;;20243:4;20268:19;;;:11;:19;;;;;;;;20267:20;:47;;;;-1:-1:-1;;;;;;;20292:22:0;;;;;:11;:22;;;;;;;;20291:23;;20161:161;-1:-1:-1;20161:161:0:o;17437:1115::-;17561:28;;;;;;;;;17583:6;17561:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;17561:28:0;;;;;;;;;;;;;;17600:30;;;;;;;17623:7;17600:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17541:7;;;17686:14;;;17561:28;17686:14;:99;;17782:3;17764:9;:15;;;-1:-1:-1;;;;;17745:34:0;:16;:34;;;;:::i;:::-;:40;;;;:::i;:::-;17686:99;;;17739:3;17722:8;:14;;;-1:-1:-1;;;;;17703:33:0;:16;:33;;;;:::i;:::-;:39;;;;:::i;:::-;17643:142;-1:-1:-1;17818:27:0;17858:4;17848:14;;;;:164;;17997:9;:15;;;-1:-1:-1;;;;;17952:60:0;17974:9;:20;;;17952:42;;:19;:42;;;;:::i;:::-;:60;;;;:::i;:::-;17848:164;;;17922:8;:14;;;-1:-1:-1;;;;;17878:58:0;17900:8;:19;;;17878:41;;:19;:41;;;;:::i;:::-;:58;;;;:::i;:::-;17818:194;;18063:19;18044:16;;:38;;;;:::i;:::-;18025:16;:57;18117:29;18149:41;18171:19;18149;:41;:::i;:::-;18117:73;-1:-1:-1;18205:25:0;;18201:226;;18288:4;18272:22;;;;:7;:22;;;;;;:46;;18297:21;;18272:46;:::i;:::-;18263:4;18247:22;;;;:7;:22;;;;;:71;;;;-1:-1:-1;;;;;18340:75:0;;;18372:42;18392:21;18372:19;:42::i;:::-;18340:75;;160:25:1;;;148:2;133:18;18340:75:0;;;;;;;18201:226;18471:16;;18442:46;;;11948:25:1;;;12004:2;11989:18;;11982:34;;;;18442:46:0;;11921:18:1;18442:46:0;;;;;;;18506:38;18525:19;18506:16;:38;:::i;:::-;18499:45;17437:1115;-1:-1:-1;;;;;;;;;17437:1115: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:160::-;3165:20;;3221:13;;3214:21;3204:32;;3194:60;;3250:1;3247;3240:12;3194:60;3100:160;;;:::o;3265:315::-;3330:6;3338;3391:2;3379:9;3370:7;3366:23;3362:32;3359:52;;;3407:1;3404;3397:12;3359:52;3446:9;3433:23;3465:31;3490:5;3465:31;:::i;:::-;3515:5;-1:-1:-1;3539:35:1;3570:2;3555:18;;3539:35;:::i;:::-;3529:45;;3265:315;;;;;:::o;3585:180::-;3641:6;3694:2;3682:9;3673:7;3669:23;3665:32;3662:52;;;3710:1;3707;3700:12;3662:52;3733:26;3749:9;3733:26;:::i;4212:156::-;4278:20;;4338:4;4327:16;;4317:27;;4307:55;;4358:1;4355;4348:12;4373:819;4493:6;4501;4509;4517;4525;4533;4541;4549;4557;4565;4618:3;4606:9;4597:7;4593:23;4589:33;4586:53;;;4635:1;4632;4625:12;4586:53;4658:27;4675:9;4658:27;:::i;:::-;4648:37;;4704:36;4736:2;4725:9;4721:18;4704:36;:::i;:::-;4694:46;;4759:36;4791:2;4780:9;4776:18;4759:36;:::i;:::-;4749:46;;4814:36;4846:2;4835:9;4831:18;4814:36;:::i;:::-;4804:46;;4869:37;4901:3;4890:9;4886:19;4869:37;:::i;:::-;4859:47;;4925:37;4957:3;4946:9;4942:19;4925:37;:::i;:::-;4915:47;;4981:37;5013:3;5002:9;4998:19;4981:37;:::i;:::-;4971:47;;5037:37;5069:3;5058:9;5054:19;5037:37;:::i;:::-;5027:47;;5093:37;5125:3;5114:9;5110:19;5093:37;:::i;:::-;5083:47;;5149:37;5181:3;5170:9;5166:19;5149:37;:::i;:::-;5139:47;;4373:819;;;;;;;;;;;;;:::o;5197:529::-;5274:6;5282;5290;5343:2;5331:9;5322:7;5318:23;5314:32;5311:52;;;5359:1;5356;5349:12;5311:52;5398:9;5385:23;5417:31;5442:5;5417:31;:::i;:::-;5467:5;-1:-1:-1;5524:2:1;5509:18;;5496:32;5537:33;5496:32;5537:33;:::i;:::-;5589:7;-1:-1:-1;5648:2:1;5633:18;;5620:32;5661:33;5620:32;5661:33;:::i;:::-;5713:7;5703:17;;;5197:529;;;;;:::o;5731:388::-;5799:6;5807;5860:2;5848:9;5839:7;5835:23;5831:32;5828:52;;;5876:1;5873;5866:12;5828:52;5915:9;5902:23;5934:31;5959:5;5934:31;:::i;:::-;5984:5;-1:-1:-1;6041:2:1;6026:18;;6013:32;6054:33;6013:32;6054:33;:::i;:::-;6106:7;6096:17;;;5731:388;;;;;:::o;6124:248::-;6189:6;6197;6250:2;6238:9;6229:7;6225:23;6221:32;6218:52;;;6266:1;6263;6256:12;6218:52;6289:26;6305:9;6289:26;:::i;6377:380::-;6456:1;6452:12;;;;6499;;;6520:61;;6574:4;6566:6;6562:17;6552:27;;6520:61;6627:2;6619:6;6616:14;6596:18;6593:38;6590:161;;6673:10;6668:3;6664:20;6661:1;6654:31;6708:4;6705:1;6698:15;6736:4;6733:1;6726:15;6590:161;;6377:380;;;:::o;7120:127::-;7181:10;7176:3;7172:20;7169:1;7162:31;7212:4;7209:1;7202:15;7236:4;7233:1;7226:15;7252:128;7319:9;;;7340:11;;;7337:37;;;7354:18;;:::i;7385:168::-;7425:7;7491:1;7487;7483:6;7479:14;7476:1;7473:21;7468:1;7461:9;7454:17;7450:45;7447:71;;;7498:18;;:::i;:::-;-1:-1:-1;7538:9:1;;7385:168::o;7558:217::-;7598:1;7624;7614:132;;7668:10;7663:3;7659:20;7656:1;7649:31;7703:4;7700:1;7693:15;7731:4;7728:1;7721:15;7614:132;-1:-1:-1;7760:9:1;;7558:217::o;7990:148::-;8078:4;8057:12;;;8071;;;8053:31;;8096:13;;8093:39;;;8112:18;;:::i;9934:125::-;9999:9;;;10020:10;;;10017:36;;;10033:18;;:::i;10196:127::-;10257:10;10252:3;10248:20;10245:1;10238:31;10288:4;10285:1;10278:15;10312:4;10309:1;10302:15;10328:251;10398:6;10451:2;10439:9;10430:7;10426:23;10422:32;10419:52;;;10467:1;10464;10457:12;10419:52;10499:9;10493:16;10518:31;10543:5;10518:31;:::i;10584:980::-;10846:4;10894:3;10883:9;10879:19;10925:6;10914:9;10907:25;10951:2;10989:6;10984:2;10973:9;10969:18;10962:34;11032:3;11027:2;11016:9;11012:18;11005:31;11056:6;11091;11085:13;11122:6;11114;11107:22;11160:3;11149:9;11145:19;11138:26;;11199:2;11191:6;11187:15;11173:29;;11220:1;11230:195;11244:6;11241:1;11238:13;11230:195;;;11309:13;;-1:-1:-1;;;;;11305:39:1;11293:52;;11400:15;;;;11365:12;;;;11341:1;11259:9;11230:195;;;-1:-1:-1;;;;;;;11481:32:1;;;;11476:2;11461:18;;11454:60;-1:-1:-1;;;11545:3:1;11530:19;11523:35;11442:3;10584:980;-1:-1:-1;;;10584:980:1:o;11569:200::-;-1:-1:-1;;;;;11705:10:1;;;11693;;;11689:27;;11728:12;;;11725:38;;;11743:18;;:::i;:::-;11725:38;11569:200;;;;:::o

Swarm Source

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