ETH Price: $3,440.21 (+7.77%)
Gas: 15 Gwei

Token

Data.x.ai (DATA)
 

Overview

Max Total Supply

100,000,000 DATA

Holders

40

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
773,148.808344975 DATA

Value
$0.00
0x74b4a6d0b0c8cb46c6780b901898c715401ad260
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:
DATA

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-15
*/

/**
*/

/**

----------------------------  Social Links  ----------------------------

Welcome to the hub of possibilities - $DATA

http://data-x-ai.com

https://twitter.com/data_x_ai

https://t.me/data_x_ai

----------------------------  data.x.ai  ----------------------------

*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.14;

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

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

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

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

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

    /**
     * @dev 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 {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @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 {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

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

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

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface AggregatorV3Interface {
  function decimals() external view returns (uint8);

  function description() external view returns (string memory);

  function version() external view returns (uint256);

  function getRoundData(
    uint80 _roundId
  ) external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);

  function latestRoundData()
    external
    view
    returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);
}

contract DATA is Context, IERC20, Ownable {

    mapping(uint256 => string) internal belts;

    mapping(uint256 => uint256) internal milestones;

    mapping(uint256 => uint256) internal buyTaxGlobal;
    mapping(uint256 => uint256) internal sellTaxGlobal;

    mapping(address => uint256) internal userBelt;
    mapping(address => bool) internal hasBelt;

    string private _name = unicode"Data.x.ai";
    string private constant _symbol = "DATA";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 public constant maxBuyTax = 9;
    uint256 public constant maxSellTax = 9;
    uint256 private _taxFee = 9;

    address payable private _developerFund = payable(msg.sender);
    address payable private _marketingFund = payable(msg.sender);

    IUniswapV2Router02 public constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Factory public constant uniswapV2Factory = IUniswapV2Factory(0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f);
    address public constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    IERC20 public constant weth = IERC20(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
    address public immutable DATA;
    address public uniswapV2Pair;

    AggregatorV3Interface public constant priceFeedETHUSD = AggregatorV3Interface(0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419);

    bool private tradingOpen;
    bool private inTaxSwap;
    bool private inContractSwap;

    uint256 public maxSwap = 2000000 * 10**9;
    uint256 public maxWallet = 2000000 * 10**9;
    uint256 private constant _triggerSwap = 10**9;

    modifier lockTheSwap {
        inTaxSwap = true;
        _;
        inTaxSwap = false;
    }

    constructor() {
        DATA = address(this);
        uniswapV2Pair = uniswapV2Factory.createPair(DATA, WETH);

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[DATA] = true;
        _isExcludedFromFee[_developerFund] = true;
        _isExcludedFromFee[_marketingFund] = true;
        _approve(DATA, address(uniswapV2Router), MAX);
        _approve(owner(), address(uniswapV2Router), MAX);

        

        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

    function getETHUSDPrice() public view returns (uint256) {
        (
            ,
            int256 answer,
            ,
            ,
        ) = priceFeedETHUSD.latestRoundData();
        return uint256(answer / 1e8);
    }

    function getDATAUSDMarketCap() public view returns (uint256) {
        uint256 poolValue = (weth.balanceOf(uniswapV2Pair) * getETHUSDPrice()) / 1e18;
        uint256 poolPct = totalSupply() / balanceOf(uniswapV2Pair);
        return (poolValue * poolPct) * 2;
    }

    function getETHUSDPriceFeed() external view returns (address) {
        return address(priceFeedETHUSD);
    }

    function getCurrentBelt() public view returns (uint256) {
        uint256 marketCap = getDATAUSDMarketCap();
        uint256 currentBelt;
        for (uint256 i = 9; i >= 0; i--) {
            if (marketCap >= milestones[i]) {
                currentBelt = i;
                break;
            }
        }
        return currentBelt;
    }

    function getCurrentBeltColor() public view returns (string memory) {
        return belts[getCurrentBelt()];
    }

    function getNextBelt() public view returns (uint256) {
        uint256 currentBelt = getCurrentBelt();
        return currentBelt == 9 ? 9 : currentBelt + 1;
    }

    function getNextBeltColor() external view returns (string memory) {
        return belts[getNextBelt()];
    }

    function getGlobalMaxBuyTax() external view returns (uint256) {
        return maxBuyTax;
    }

    function getGlobalMaxSellTax() external view returns (uint256) {
        return maxSellTax;
    }

    function getGlobalBuyTax() public view returns (uint256) {
        uint256 globalBuyTax = 9 - getCurrentBelt();
        return globalBuyTax > maxBuyTax ? maxBuyTax : globalBuyTax;
    }

    function getGlobalSellTax() public view returns (uint256) {
        uint256 globalSellTax = getCurrentBelt();
        return globalSellTax > maxSellTax ? maxSellTax : globalSellTax;
    }

    function getWalletHasBelt(address _wallet) external view returns (bool) {
        return hasBelt[_wallet];
    }

    function getWalletBelt(address _wallet) public view returns (uint256) {
        return hasBelt[_wallet] ? userBelt[_wallet] : getCurrentBelt();
    }

    function getWalletBeltColor(address _wallet) external view returns (string memory) {
        return belts[getWalletBelt(_wallet)];
    }

    function getWalletSellTax(address _wallet) public view returns (uint256) {
        uint256 globalSellTax = getGlobalSellTax();
        if (hasBelt[_wallet]) {
            uint256 userBelt = userBelt[_wallet];
            return globalSellTax > userBelt ? userBelt : globalSellTax;
        }
        return globalSellTax;
    }

    function getWalletMaxSellTax(address _wallet) external view returns (uint256) {
        return hasBelt[_wallet] ? userBelt[_wallet] : maxSellTax;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        require(_allowances[sender][_msgSender()] >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

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

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

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function _removeTax() private {
        if (_taxFee == 0) {
            return;
        }

        _taxFee = 0;
    }

    function _restoreTax() private {
        _taxFee = 9;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "TOKEN: Transfer amount must exceed zero");

        if (from != owner() && to != owner() && from != DATA && to != DATA) {
            if (!tradingOpen) {
                require(from == DATA, "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= maxSwap, "TOKEN: Max Transaction Limit");

            if (to != uniswapV2Pair) {
                require(balanceOf(to) + amount < maxWallet, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(DATA);
            bool canSwap = contractTokenBalance >= _triggerSwap;

            if (contractTokenBalance >= maxSwap) {
                contractTokenBalance = maxSwap;
            }

            if (canSwap && !inTaxSwap && from != uniswapV2Pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                inContractSwap = true;
                _swapDATAForETH(contractTokenBalance);
                inContractSwap = false;
                if (DATA.balance > 0) _sendETHToFee(DATA.balance);
            }
        }

        bool takeFee = true;

        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _taxFee = getGlobalBuyTax();
                if (!hasBelt[to]) {
                    userBelt[to] = getCurrentBelt();
                    hasBelt[to] = true;
                }
                _refreshName();
            }
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _taxFee = getWalletSellTax(from);
                if (!hasBelt[from]) {
                    userBelt[from] = getCurrentBelt();
                    hasBelt[from] = true;
                }
                _refreshName();
            }
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function _refreshName() private {
        _name = getCurrentBeltColor();
    }

    function _swapDATAForETH(uint256 _amountDATA) private lockTheSwap returns (bool) {
        address[] memory path = new address[](2);
        path[0] = DATA;
        path[1] = WETH;
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(_amountDATA, 0, path, DATA, block.timestamp + 3600);
        return true;
    }

    function _sendETHToFee(uint256 _amountETH) private returns (bool) {
        (bool success, ) = payable(_marketingFund).call{value: _amountETH}("");
        return success;
    }

    function enableTrading() external onlyOwner {
        tradingOpen = true;
    }

    function removeLimits() external onlyOwner {
        maxSwap = _tTotal;
        maxWallet = _tTotal;
    }

    function swapTokensForEthManual(uint256 _contractTokenBalance) external returns (bool) {
        require(_msgSender() == _developerFund || _msgSender() == _marketingFund);
        return _swapDATAForETH(_contractTokenBalance);
    }

    function sendETHToFeeManual(uint256 _contractETHBalance) external returns (bool) {
        require(_msgSender() == _developerFund || _msgSender() == _marketingFund);
        return _sendETHToFee(_contractETHBalance);
    }

    function _tokenFromReflection(uint256 rAmount) private view returns (uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        require(totalSupply() <= MAX, "Total reflections must be less than max");
        return (!inContractSwap && inTaxSwap) ? totalSupply() * 1010 : rAmount / _getRate();
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if (!takeFee) _removeTax();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) _restoreTax();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        if (!inTaxSwap || inContractSwap) {
            (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
            _rOwned[sender] = _rOwned[sender] - rAmount;
            _rOwned[recipient] = _rOwned[recipient] + rTransferAmount;
            _rOwned[DATA] = _rOwned[DATA] + (tTeam * _getRate());
            _rTotal = _rTotal - rFee;
            _tFeeTotal = _tFeeTotal + tFee;
            emit Transfer(sender, recipient, tTransferAmount);
        } else {
            emit Transfer(sender, recipient, tAmount);
        }
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, 0, _taxFee);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 redisFee, uint256 taxFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount * redisFee / 100;
        uint256 tTeam = tAmount * taxFee / 100;
        return (tAmount - tFee - tTeam, tFee, tTeam);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount * currentRate;
        uint256 rFee = tFee * currentRate;
        return (rAmount, rAmount - rFee - (tTeam * currentRate), rFee);
    }

    function _getRate() private view returns (uint256) {
        return _rTotal / _tTotal;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DATA","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentBelt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentBeltColor","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDATAUSDMarketCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getETHUSDPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getETHUSDPriceFeed","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGlobalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGlobalMaxBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGlobalMaxSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGlobalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextBelt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextBeltColor","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"getWalletBelt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"getWalletBeltColor","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"getWalletHasBelt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"getWalletMaxSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"getWalletSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceFeedETHUSD","outputs":[{"internalType":"contract AggregatorV3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_contractETHBalance","type":"uint256"}],"name":"sendETHToFeeManual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_contractTokenBalance","type":"uint256"}],"name":"swapTokensForEthManual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Factory","outputs":[{"internalType":"contract IUniswapV2Factory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600960a090815268446174612e782e616960b81b60c0526007906200002a908262000489565b506200004167016345785d8a000060001962000555565b6200004f9060001962000578565b600c556009600e55600f8054336001600160a01b0319918216811790925560108054909116909117905566071afd498d000060128190556013553480156200009657600080fd5b50620000a23362000268565b3060808190526040516364e329cb60e11b8152600481019190915273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26024820152735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9063c9c65396906044016020604051808303816000875af115801562000116573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013c9190620005a0565b601180546001600160a01b0319166001600160a01b039283161790556000805482168152600b6020526040808220805460ff19908116600190811790925560805180861685528385208054831684179055600f5486168552838520805483168417905560105490951684529190922080549091169091179055620001d890737a250d5630b4cf539739df2c5dacb4c659f2488d600019620002b8565b6200020d620001ef6000546001600160a01b031690565b737a250d5630b4cf539739df2c5dacb4c659f2488d600019620002b8565b600c5433600081815260086020908152604080832094909455925167016345785d8a00008152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620005d2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316620003205760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620003835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000317565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200040f57607f821691505b6020821081036200043057634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200048457600081815260208120601f850160051c810160208610156200045f5750805b601f850160051c820191505b8181101562000480578281556001016200046b565b5050505b505050565b81516001600160401b03811115620004a557620004a5620003e4565b620004bd81620004b68454620003fa565b8462000436565b602080601f831160018114620004f55760008415620004dc5750858301515b600019600386901b1c1916600185901b17855562000480565b600085815260208120601f198616915b82811015620005265788860151825594840194600190910190840162000505565b5085821015620005455787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000826200057357634e487b7160e01b600052601260045260246000fd5b500690565b818103818111156200059a57634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215620005b357600080fd5b81516001600160a01b0381168114620005cb57600080fd5b9392505050565b6080516121756200063460003960008181610303015281816110ee0152818161112c01528181611179015281816112fc015281816113ef0152818161141a0152818161182d015281816118df01528181611aaf0152611af201526121756000f3fe6080604052600436106102605760003560e01c80638a8c523c11610144578063c4918b4e116100b6578063dd62ed3e1161007a578063dd62ed3e146106b6578063e31d60d9146106fc578063e5c12a3014610711578063f2fde38b14610726578063f8b45b0514610746578063fdec60701461075c57600080fd5b8063c4918b4e14610656578063c6c934fa1461066c578063c8e956ab146105cc578063cc2d04aa14610681578063d2d59239146106a157600080fd5b8063a9059cbb11610108578063a9059cbb146105e1578063ad5c464814610443578063b25a372f14610601578063b42987db14610621578063bf45efce1461046b578063bf4b19901461064157600080fd5b80638a8c523c1461054c5780638da5cb5b1461056157806390526cf21461057f57806395d89b411461059f578063a411209a146105cc57600080fd5b80632a6cf5ea116101dd57806349bd5a5e116101a157806349bd5a5e1461047f5780635408a8d31461049f57806359d0f713146104d857806370a0823114610500578063715018a614610520578063751039fc1461053757600080fd5b80632a6cf5ea146103f25780632e7b522814610412578063313ce567146104275780633fc8cef3146104435780634987dfec1461046b57600080fd5b806310d172b81161022457806310d172b81461035257806315a202a1146103675780631694505e1461038f57806318160ddd146103b757806323b872dd146103d257600080fd5b80630255874f1461026c57806306fdde031461029f578063095ea7b3146102c15780630c0fd886146102f15780630f612f521461033d57600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5061028c610287366004611cf3565b610783565b6040519081526020015b60405180910390f35b3480156102ab57600080fd5b506102b46107e8565b6040516102969190611d15565b3480156102cd57600080fd5b506102e16102dc366004611d63565b61087a565b6040519015158152602001610296565b3480156102fd57600080fd5b506103257f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610296565b34801561034957600080fd5b5061028c610890565b34801561035e57600080fd5b506102b46108d8565b34801561037357600080fd5b50610325735f4ec3df9cbd43714fe2740f5e3616155c5b841981565b34801561039b57600080fd5b50610325737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156103c357600080fd5b5067016345785d8a000061028c565b3480156103de57600080fd5b506102e16103ed366004611d8d565b6108ff565b3480156103fe57600080fd5b5061028c61040d366004611cf3565b6109da565b34801561041e57600080fd5b5061028c610a1d565b34801561043357600080fd5b5060405160098152602001610296565b34801561044f57600080fd5b5061032573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b34801561047757600080fd5b50600961028c565b34801561048b57600080fd5b50601154610325906001600160a01b031681565b3480156104ab57600080fd5b506102e16104ba366004611cf3565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156104e457600080fd5b50610325735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f81565b34801561050c57600080fd5b5061028c61051b366004611cf3565b610a4c565b34801561052c57600080fd5b50610535610a6e565b005b34801561054357600080fd5b50610535610a82565b34801561055857600080fd5b50610535610a9d565b34801561056d57600080fd5b506000546001600160a01b0316610325565b34801561058b57600080fd5b506102e161059a366004611dc9565b610aba565b3480156105ab57600080fd5b506040805180820190915260048152634441544160e01b60208201526102b4565b3480156105d857600080fd5b5061028c600981565b3480156105ed57600080fd5b506102e16105fc366004611d63565b610b04565b34801561060d57600080fd5b5061028c61061c366004611cf3565b610b11565b34801561062d57600080fd5b506102b461063c366004611cf3565b610b3e565b34801561064d57600080fd5b5061028c610beb565b34801561066257600080fd5b5061028c60125481565b34801561067857600080fd5b5061028c610c7a565b34801561068d57600080fd5b506102e161069c366004611dc9565b610c85565b3480156106ad57600080fd5b5061028c610ccf565b3480156106c257600080fd5b5061028c6106d1366004611de2565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b34801561070857600080fd5b5061028c610dc2565b34801561071d57600080fd5b506102b4610de7565b34801561073257600080fd5b50610535610741366004611cf3565b610df5565b34801561075257600080fd5b5061028c60135481565b34801561076857600080fd5b50735f4ec3df9cbd43714fe2740f5e3616155c5b8419610325565b60008061078e610c7a565b6001600160a01b03841660009081526006602052604090205490915060ff16156107e2576001600160a01b0383166000908152600560205260409020548082116107d857816107da565b805b949350505050565b92915050565b6060600780546107f790611e15565b80601f016020809104026020016040519081016040528092919081815260200182805461082390611e15565b80156108705780601f1061084557610100808354040283529160200191610870565b820191906000526020600020905b81548152906001019060200180831161085357829003601f168201915b5050505050905090565b6000610887338484610e6e565b50600192915050565b60008061089b610ccf565b9050600060095b60008181526002602052604090205483106108bf578091506108d1565b806108c981611e65565b9150506108a2565b5092915050565b6060600160006108e6610890565b815260200190815260200160002080546107f790611e15565b600061090c848484610f93565b6001600160a01b0384166000908152600a602090815260408083203384529091529020548211156109955760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6001600160a01b0384166000908152600a60209081526040808320338085529252909120546109d09186916109cb908690611e7c565b610e6e565b5060019392505050565b6001600160a01b03811660009081526006602052604081205460ff16610a015760096107e2565b506001600160a01b031660009081526005602052604090205490565b600080610a28610890565b610a33906009611e7c565b905060098111610a435780610a46565b60095b91505090565b6001600160a01b0381166000908152600860205260408120546107e290611635565b610a766116e9565b610a806000611743565b565b610a8a6116e9565b67016345785d8a00006012819055601355565b610aa56116e9565b6011805460ff60a01b1916600160a01b179055565b600f546000906001600160a01b0316336001600160a01b03161480610af257506010546001600160a01b0316336001600160a01b0316145b610afb57600080fd5b6107e282611793565b6000610887338484610f93565b6001600160a01b03811660009081526006602052604081205460ff16610a0157610b39610890565b6107e2565b606060016000610b4d84610b11565b81526020019081526020016000208054610b6690611e15565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9290611e15565b8015610bdf5780601f10610bb457610100808354040283529160200191610bdf565b820191906000526020600020905b815481529060010190602001808311610bc257829003601f168201915b50505050509050919050565b600080735f4ec3df9cbd43714fe2740f5e3616155c5b84196001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c649190611ea9565b5050509150506305f5e10081610a469190611f0f565b600080610a33610890565b600f546000906001600160a01b0316336001600160a01b03161480610cbd57506010546001600160a01b0316336001600160a01b0316145b610cc657600080fd5b6107e2826117f3565b600080670de0b6b3a7640000610ce3610beb565b6011546040516370a0823160e01b81526001600160a01b03909116600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190602401602060405180830381865afa158015610d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d639190611f3d565b610d6d9190611f56565b610d779190611f6d565b601154909150600090610d92906001600160a01b0316610a4c565b610da49067016345785d8a0000611f6d565b9050610db08183611f56565b610dbb906002611f56565b9250505090565b600080610dcd610890565b905080600914610a4357610de2816001611f81565b610a46565b6060600160006108e6610dc2565b610dfd6116e9565b6001600160a01b038116610e625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161098c565b610e6b81611743565b50565b6001600160a01b038316610ed05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161098c565b6001600160a01b038216610f315760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161098c565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ff75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161098c565b6001600160a01b0382166110595760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161098c565b600081116110b95760405162461bcd60e51b815260206004820152602760248201527f544f4b454e3a205472616e7366657220616d6f756e74206d75737420657863656044820152666564207a65726f60c81b606482015260840161098c565b6000546001600160a01b038481169116148015906110e557506000546001600160a01b03838116911614155b801561112357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b801561116157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561144d57601154600160a01b900460ff1661121e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161461121e5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161098c565b6012548111156112705760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161098c565b6011546001600160a01b038381169116146112f5576013548161129284610a4c565b61129c9190611f81565b106112f55760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161098c565b60006113207f0000000000000000000000000000000000000000000000000000000000000000610a4c565b601254909150633b9aca0082101590821061133b5760125491505b8080156113525750601154600160a81b900460ff16155b801561136c57506011546001600160a01b03868116911614155b801561139157506001600160a01b0385166000908152600b602052604090205460ff16155b80156113b657506001600160a01b0384166000908152600b602052604090205460ff16155b1561144a576011805460ff60b01b1916600160b01b1790556113d7826117f3565b506011805460ff60b01b191690556001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016311561144a576114487f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031631611793565b505b50505b6001600160a01b0383166000908152600b602052604090205460019060ff168061148f57506001600160a01b0383166000908152600b602052604090205460ff165b806114c157506011546001600160a01b038581169116148015906114c157506011546001600160a01b03848116911614155b156114ce57506000611623565b6011546001600160a01b03858116911614801561150857506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b1561157857611515610a1d565b600e556001600160a01b03831660009081526006602052604090205460ff1661157057611540610890565b6001600160a01b0384166000908152600560209081526040808320939093556006905220805460ff191660011790555b611578611972565b6011546001600160a01b0384811691161480156115b257506001600160a01b038416737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15611623576115c084610783565b600e556001600160a01b03841660009081526006602052604090205460ff1661161b576115eb610890565b6001600160a01b0385166000908152600560209081526040808320939093556006905220805460ff191660011790555b611623611972565b61162f84848484611987565b50505050565b6000600c5482111561169c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161098c565b601154600160b01b900460ff161580156116bf5750601154600160a81b900460ff165b6116d5576116cb6119ae565b610b399083611f6d565b6107e267016345785d8a00006103f2611f56565b6000546001600160a01b03163314610a805760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60105460405160009182916001600160a01b039091169084908381818185875af1925050503d80600081146117e4576040519150601f19603f3d011682016040523d82523d6000602084013e6117e9565b606091505b5090949350505050565b6011805460ff60a81b1916600160a81b179055604080516002808252606082018352600092839291906020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061185f5761185f611faa565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106118a7576118a7611faa565b6001600160a01b0390921660209283029190910190910152737a250d5630b4cf539739df2c5dacb4c659f2488d63791ac947846000847f000000000000000000000000000000000000000000000000000000000000000061190a42610e10611f81565b6040518663ffffffff1660e01b815260040161192a959493929190611fc0565b600060405180830381600087803b15801561194457600080fd5b505af1158015611958573d6000803e3d6000fd5b50506011805460ff60a81b19169055506001949350505050565b61197a6108d8565b600790610e6b908261207f565b80611994576119946119cb565b61199f8484846119de565b8061162f5761162f6009600e55565b600067016345785d8a0000600c546119c69190611f6d565b905090565b600e546000036119d757565b6000600e55565b601154600160a81b900460ff161580611a005750601154600160b01b900460ff165b15611b9157600080600080600080611a1787611bdb565b6001600160a01b038f16600090815260086020526040902054959b50939950919750955093509150611a4a908790611e7c565b6001600160a01b03808b1660009081526008602052604080822093909355908a1681522054611a7a908690611f81565b6001600160a01b038916600090815260086020526040902055611a9b6119ae565b611aa59082611f56565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600090815260086020526040902054611ae89190611f81565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600090815260086020526040902055600c54611b2f908590611e7c565b600c55600d54611b40908390611f81565b600d556040518381526001600160a01b03808a1691908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050505050565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f8691815260200190565b505050565b6000806000806000806000806000611bf78a6000600e54611c2f565b9250925092506000806000611c158d8686611c106119ae565b611c88565b919f909e50909c50959a5093985091965092945050505050565b60008080806064611c408789611f56565b611c4a9190611f6d565b905060006064611c5a878a611f56565b611c649190611f6d565b905080611c71838a611e7c565b611c7b9190611e7c565b9891975095509350505050565b6000808080611c978589611f56565b90506000611ca58689611f56565b905081611cb28789611f56565b611cbc8385611e7c565b611cc69190611e7c565b909a90995090975095505050505050565b80356001600160a01b0381168114611cee57600080fd5b919050565b600060208284031215611d0557600080fd5b611d0e82611cd7565b9392505050565b600060208083528351808285015260005b81811015611d4257858101830151858201604001528201611d26565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611d7657600080fd5b611d7f83611cd7565b946020939093013593505050565b600080600060608486031215611da257600080fd5b611dab84611cd7565b9250611db960208501611cd7565b9150604084013590509250925092565b600060208284031215611ddb57600080fd5b5035919050565b60008060408385031215611df557600080fd5b611dfe83611cd7565b9150611e0c60208401611cd7565b90509250929050565b600181811c90821680611e2957607f821691505b602082108103611e4957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081611e7457611e74611e4f565b506000190190565b818103818111156107e2576107e2611e4f565b805169ffffffffffffffffffff81168114611cee57600080fd5b600080600080600060a08688031215611ec157600080fd5b611eca86611e8f565b9450602086015193506040860151925060608601519150611eed60808701611e8f565b90509295509295909350565b634e487b7160e01b600052601260045260246000fd5b600082611f1e57611f1e611ef9565b600160ff1b821460001984141615611f3857611f38611e4f565b500590565b600060208284031215611f4f57600080fd5b5051919050565b80820281158282048414176107e2576107e2611e4f565b600082611f7c57611f7c611ef9565b500490565b808201808211156107e2576107e2611e4f565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120105784516001600160a01b031683529383019391830191600101611feb565b50506001600160a01b03969096166060850152505050608001529392505050565b601f821115611bd657600081815260208120601f850160051c810160208610156120585750805b601f850160051c820191505b8181101561207757828155600101612064565b505050505050565b815167ffffffffffffffff81111561209957612099611f94565b6120ad816120a78454611e15565b84612031565b602080601f8311600181146120e257600084156120ca5750858301515b600019600386901b1c1916600185901b178555612077565b600085815260208120601f198616915b82811015612111578886015182559484019460019091019084016120f2565b508582101561212f5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220ab687a113084f3a436e0d05f5f48ee50dabe1cdebb21ef588ff6c5f10021e7ca64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102605760003560e01c80638a8c523c11610144578063c4918b4e116100b6578063dd62ed3e1161007a578063dd62ed3e146106b6578063e31d60d9146106fc578063e5c12a3014610711578063f2fde38b14610726578063f8b45b0514610746578063fdec60701461075c57600080fd5b8063c4918b4e14610656578063c6c934fa1461066c578063c8e956ab146105cc578063cc2d04aa14610681578063d2d59239146106a157600080fd5b8063a9059cbb11610108578063a9059cbb146105e1578063ad5c464814610443578063b25a372f14610601578063b42987db14610621578063bf45efce1461046b578063bf4b19901461064157600080fd5b80638a8c523c1461054c5780638da5cb5b1461056157806390526cf21461057f57806395d89b411461059f578063a411209a146105cc57600080fd5b80632a6cf5ea116101dd57806349bd5a5e116101a157806349bd5a5e1461047f5780635408a8d31461049f57806359d0f713146104d857806370a0823114610500578063715018a614610520578063751039fc1461053757600080fd5b80632a6cf5ea146103f25780632e7b522814610412578063313ce567146104275780633fc8cef3146104435780634987dfec1461046b57600080fd5b806310d172b81161022457806310d172b81461035257806315a202a1146103675780631694505e1461038f57806318160ddd146103b757806323b872dd146103d257600080fd5b80630255874f1461026c57806306fdde031461029f578063095ea7b3146102c15780630c0fd886146102f15780630f612f521461033d57600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5061028c610287366004611cf3565b610783565b6040519081526020015b60405180910390f35b3480156102ab57600080fd5b506102b46107e8565b6040516102969190611d15565b3480156102cd57600080fd5b506102e16102dc366004611d63565b61087a565b6040519015158152602001610296565b3480156102fd57600080fd5b506103257f000000000000000000000000acf768d8fbf012fd732da3b1bf1a32fced28a3d681565b6040516001600160a01b039091168152602001610296565b34801561034957600080fd5b5061028c610890565b34801561035e57600080fd5b506102b46108d8565b34801561037357600080fd5b50610325735f4ec3df9cbd43714fe2740f5e3616155c5b841981565b34801561039b57600080fd5b50610325737a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156103c357600080fd5b5067016345785d8a000061028c565b3480156103de57600080fd5b506102e16103ed366004611d8d565b6108ff565b3480156103fe57600080fd5b5061028c61040d366004611cf3565b6109da565b34801561041e57600080fd5b5061028c610a1d565b34801561043357600080fd5b5060405160098152602001610296565b34801561044f57600080fd5b5061032573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b34801561047757600080fd5b50600961028c565b34801561048b57600080fd5b50601154610325906001600160a01b031681565b3480156104ab57600080fd5b506102e16104ba366004611cf3565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156104e457600080fd5b50610325735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f81565b34801561050c57600080fd5b5061028c61051b366004611cf3565b610a4c565b34801561052c57600080fd5b50610535610a6e565b005b34801561054357600080fd5b50610535610a82565b34801561055857600080fd5b50610535610a9d565b34801561056d57600080fd5b506000546001600160a01b0316610325565b34801561058b57600080fd5b506102e161059a366004611dc9565b610aba565b3480156105ab57600080fd5b506040805180820190915260048152634441544160e01b60208201526102b4565b3480156105d857600080fd5b5061028c600981565b3480156105ed57600080fd5b506102e16105fc366004611d63565b610b04565b34801561060d57600080fd5b5061028c61061c366004611cf3565b610b11565b34801561062d57600080fd5b506102b461063c366004611cf3565b610b3e565b34801561064d57600080fd5b5061028c610beb565b34801561066257600080fd5b5061028c60125481565b34801561067857600080fd5b5061028c610c7a565b34801561068d57600080fd5b506102e161069c366004611dc9565b610c85565b3480156106ad57600080fd5b5061028c610ccf565b3480156106c257600080fd5b5061028c6106d1366004611de2565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b34801561070857600080fd5b5061028c610dc2565b34801561071d57600080fd5b506102b4610de7565b34801561073257600080fd5b50610535610741366004611cf3565b610df5565b34801561075257600080fd5b5061028c60135481565b34801561076857600080fd5b50735f4ec3df9cbd43714fe2740f5e3616155c5b8419610325565b60008061078e610c7a565b6001600160a01b03841660009081526006602052604090205490915060ff16156107e2576001600160a01b0383166000908152600560205260409020548082116107d857816107da565b805b949350505050565b92915050565b6060600780546107f790611e15565b80601f016020809104026020016040519081016040528092919081815260200182805461082390611e15565b80156108705780601f1061084557610100808354040283529160200191610870565b820191906000526020600020905b81548152906001019060200180831161085357829003601f168201915b5050505050905090565b6000610887338484610e6e565b50600192915050565b60008061089b610ccf565b9050600060095b60008181526002602052604090205483106108bf578091506108d1565b806108c981611e65565b9150506108a2565b5092915050565b6060600160006108e6610890565b815260200190815260200160002080546107f790611e15565b600061090c848484610f93565b6001600160a01b0384166000908152600a602090815260408083203384529091529020548211156109955760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6001600160a01b0384166000908152600a60209081526040808320338085529252909120546109d09186916109cb908690611e7c565b610e6e565b5060019392505050565b6001600160a01b03811660009081526006602052604081205460ff16610a015760096107e2565b506001600160a01b031660009081526005602052604090205490565b600080610a28610890565b610a33906009611e7c565b905060098111610a435780610a46565b60095b91505090565b6001600160a01b0381166000908152600860205260408120546107e290611635565b610a766116e9565b610a806000611743565b565b610a8a6116e9565b67016345785d8a00006012819055601355565b610aa56116e9565b6011805460ff60a01b1916600160a01b179055565b600f546000906001600160a01b0316336001600160a01b03161480610af257506010546001600160a01b0316336001600160a01b0316145b610afb57600080fd5b6107e282611793565b6000610887338484610f93565b6001600160a01b03811660009081526006602052604081205460ff16610a0157610b39610890565b6107e2565b606060016000610b4d84610b11565b81526020019081526020016000208054610b6690611e15565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9290611e15565b8015610bdf5780601f10610bb457610100808354040283529160200191610bdf565b820191906000526020600020905b815481529060010190602001808311610bc257829003601f168201915b50505050509050919050565b600080735f4ec3df9cbd43714fe2740f5e3616155c5b84196001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c649190611ea9565b5050509150506305f5e10081610a469190611f0f565b600080610a33610890565b600f546000906001600160a01b0316336001600160a01b03161480610cbd57506010546001600160a01b0316336001600160a01b0316145b610cc657600080fd5b6107e2826117f3565b600080670de0b6b3a7640000610ce3610beb565b6011546040516370a0823160e01b81526001600160a01b03909116600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190602401602060405180830381865afa158015610d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d639190611f3d565b610d6d9190611f56565b610d779190611f6d565b601154909150600090610d92906001600160a01b0316610a4c565b610da49067016345785d8a0000611f6d565b9050610db08183611f56565b610dbb906002611f56565b9250505090565b600080610dcd610890565b905080600914610a4357610de2816001611f81565b610a46565b6060600160006108e6610dc2565b610dfd6116e9565b6001600160a01b038116610e625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161098c565b610e6b81611743565b50565b6001600160a01b038316610ed05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161098c565b6001600160a01b038216610f315760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161098c565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ff75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161098c565b6001600160a01b0382166110595760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161098c565b600081116110b95760405162461bcd60e51b815260206004820152602760248201527f544f4b454e3a205472616e7366657220616d6f756e74206d75737420657863656044820152666564207a65726f60c81b606482015260840161098c565b6000546001600160a01b038481169116148015906110e557506000546001600160a01b03838116911614155b801561112357507f000000000000000000000000acf768d8fbf012fd732da3b1bf1a32fced28a3d66001600160a01b0316836001600160a01b031614155b801561116157507f000000000000000000000000acf768d8fbf012fd732da3b1bf1a32fced28a3d66001600160a01b0316826001600160a01b031614155b1561144d57601154600160a01b900460ff1661121e577f000000000000000000000000acf768d8fbf012fd732da3b1bf1a32fced28a3d66001600160a01b0316836001600160a01b03161461121e5760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161098c565b6012548111156112705760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161098c565b6011546001600160a01b038381169116146112f5576013548161129284610a4c565b61129c9190611f81565b106112f55760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161098c565b60006113207f000000000000000000000000acf768d8fbf012fd732da3b1bf1a32fced28a3d6610a4c565b601254909150633b9aca0082101590821061133b5760125491505b8080156113525750601154600160a81b900460ff16155b801561136c57506011546001600160a01b03868116911614155b801561139157506001600160a01b0385166000908152600b602052604090205460ff16155b80156113b657506001600160a01b0384166000908152600b602052604090205460ff16155b1561144a576011805460ff60b01b1916600160b01b1790556113d7826117f3565b506011805460ff60b01b191690556001600160a01b037f000000000000000000000000acf768d8fbf012fd732da3b1bf1a32fced28a3d616311561144a576114487f000000000000000000000000acf768d8fbf012fd732da3b1bf1a32fced28a3d66001600160a01b031631611793565b505b50505b6001600160a01b0383166000908152600b602052604090205460019060ff168061148f57506001600160a01b0383166000908152600b602052604090205460ff165b806114c157506011546001600160a01b038581169116148015906114c157506011546001600160a01b03848116911614155b156114ce57506000611623565b6011546001600160a01b03858116911614801561150857506001600160a01b038316737a250d5630b4cf539739df2c5dacb4c659f2488d14155b1561157857611515610a1d565b600e556001600160a01b03831660009081526006602052604090205460ff1661157057611540610890565b6001600160a01b0384166000908152600560209081526040808320939093556006905220805460ff191660011790555b611578611972565b6011546001600160a01b0384811691161480156115b257506001600160a01b038416737a250d5630b4cf539739df2c5dacb4c659f2488d14155b15611623576115c084610783565b600e556001600160a01b03841660009081526006602052604090205460ff1661161b576115eb610890565b6001600160a01b0385166000908152600560209081526040808320939093556006905220805460ff191660011790555b611623611972565b61162f84848484611987565b50505050565b6000600c5482111561169c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161098c565b601154600160b01b900460ff161580156116bf5750601154600160a81b900460ff165b6116d5576116cb6119ae565b610b399083611f6d565b6107e267016345785d8a00006103f2611f56565b6000546001600160a01b03163314610a805760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161098c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60105460405160009182916001600160a01b039091169084908381818185875af1925050503d80600081146117e4576040519150601f19603f3d011682016040523d82523d6000602084013e6117e9565b606091505b5090949350505050565b6011805460ff60a81b1916600160a81b179055604080516002808252606082018352600092839291906020830190803683370190505090507f000000000000000000000000acf768d8fbf012fd732da3b1bf1a32fced28a3d68160008151811061185f5761185f611faa565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106118a7576118a7611faa565b6001600160a01b0390921660209283029190910190910152737a250d5630b4cf539739df2c5dacb4c659f2488d63791ac947846000847f000000000000000000000000acf768d8fbf012fd732da3b1bf1a32fced28a3d661190a42610e10611f81565b6040518663ffffffff1660e01b815260040161192a959493929190611fc0565b600060405180830381600087803b15801561194457600080fd5b505af1158015611958573d6000803e3d6000fd5b50506011805460ff60a81b19169055506001949350505050565b61197a6108d8565b600790610e6b908261207f565b80611994576119946119cb565b61199f8484846119de565b8061162f5761162f6009600e55565b600067016345785d8a0000600c546119c69190611f6d565b905090565b600e546000036119d757565b6000600e55565b601154600160a81b900460ff161580611a005750601154600160b01b900460ff165b15611b9157600080600080600080611a1787611bdb565b6001600160a01b038f16600090815260086020526040902054959b50939950919750955093509150611a4a908790611e7c565b6001600160a01b03808b1660009081526008602052604080822093909355908a1681522054611a7a908690611f81565b6001600160a01b038916600090815260086020526040902055611a9b6119ae565b611aa59082611f56565b6001600160a01b037f000000000000000000000000acf768d8fbf012fd732da3b1bf1a32fced28a3d616600090815260086020526040902054611ae89190611f81565b6001600160a01b037f000000000000000000000000acf768d8fbf012fd732da3b1bf1a32fced28a3d616600090815260086020526040902055600c54611b2f908590611e7c565b600c55600d54611b40908390611f81565b600d556040518381526001600160a01b03808a1691908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050505050565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f8691815260200190565b505050565b6000806000806000806000806000611bf78a6000600e54611c2f565b9250925092506000806000611c158d8686611c106119ae565b611c88565b919f909e50909c50959a5093985091965092945050505050565b60008080806064611c408789611f56565b611c4a9190611f6d565b905060006064611c5a878a611f56565b611c649190611f6d565b905080611c71838a611e7c565b611c7b9190611e7c565b9891975095509350505050565b6000808080611c978589611f56565b90506000611ca58689611f56565b905081611cb28789611f56565b611cbc8385611e7c565b611cc69190611e7c565b909a90995090975095505050505050565b80356001600160a01b0381168114611cee57600080fd5b919050565b600060208284031215611d0557600080fd5b611d0e82611cd7565b9392505050565b600060208083528351808285015260005b81811015611d4257858101830151858201604001528201611d26565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611d7657600080fd5b611d7f83611cd7565b946020939093013593505050565b600080600060608486031215611da257600080fd5b611dab84611cd7565b9250611db960208501611cd7565b9150604084013590509250925092565b600060208284031215611ddb57600080fd5b5035919050565b60008060408385031215611df557600080fd5b611dfe83611cd7565b9150611e0c60208401611cd7565b90509250929050565b600181811c90821680611e2957607f821691505b602082108103611e4957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081611e7457611e74611e4f565b506000190190565b818103818111156107e2576107e2611e4f565b805169ffffffffffffffffffff81168114611cee57600080fd5b600080600080600060a08688031215611ec157600080fd5b611eca86611e8f565b9450602086015193506040860151925060608601519150611eed60808701611e8f565b90509295509295909350565b634e487b7160e01b600052601260045260246000fd5b600082611f1e57611f1e611ef9565b600160ff1b821460001984141615611f3857611f38611e4f565b500590565b600060208284031215611f4f57600080fd5b5051919050565b80820281158282048414176107e2576107e2611e4f565b600082611f7c57611f7c611ef9565b500490565b808201808211156107e2576107e2611e4f565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120105784516001600160a01b031683529383019391830191600101611feb565b50506001600160a01b03969096166060850152505050608001529392505050565b601f821115611bd657600081815260208120601f850160051c810160208610156120585750805b601f850160051c820191505b8181101561207757828155600101612064565b505050505050565b815167ffffffffffffffff81111561209957612099611f94565b6120ad816120a78454611e15565b84612031565b602080601f8311600181146120e257600084156120ca5750858301515b600019600386901b1c1916600185901b178555612077565b600085815260208120601f198616915b82811015612111578886015182559484019460019091019084016120f2565b508582101561212f5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220ab687a113084f3a436e0d05f5f48ee50dabe1cdebb21ef588ff6c5f10021e7ca64736f6c63430008130033

Deployed Bytecode Sourcemap

12611:13716:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17814:333;;;;;;;;;;-1:-1:-1;17814:333:0;;;;;:::i;:::-;;:::i;:::-;;;529:25:1;;;517:2;502:18;17814:333:0;;;;;;;;19537:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;18892:161::-;;;;;;;;;;-1:-1:-1;18892:161:0;;;;;:::i;:::-;;:::i;:::-;;;1542:14:1;;1535:22;1517:41;;1505:2;1490:18;18892:161:0;1377:187:1;14225:29:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1733:32:1;;;1715:51;;1703:2;1688:18;14225:29:0;1569:203:1;16005:350:0;;;;;;;;;;;;;:::i;16363:116::-;;;;;;;;;;;;;:::i;14298:121::-;;;;;;;;;;;;14376:42;14298:121;;13815:115;;;;;;;;;;;;13887:42;13815:115;;18316:95;;;;;;;;;;-1:-1:-1;13441:17:0;18316:95;;19061:373;;;;;;;;;;-1:-1:-1;19061:373:0;;;;;:::i;:::-;;:::i;18155:153::-;;;;;;;;;;-1:-1:-1;18155:153:0;;;;;:::i;:::-;;:::i;16993:188::-;;;;;;;;;;;;;:::i;19628:83::-;;;;;;;;;;-1:-1:-1;19628:83:0;;13115:1;2723:36:1;;2711:2;2696:18;19628:83:0;2581:184:1;14138:80:0;;;;;;;;;;;;14175:42;14138:80;;16781:97;;;;;;;;;;-1:-1:-1;13115:1:0;16781:97;19628:83;14261:28;;;;;;;;;;-1:-1:-1;14261:28:0;;;;-1:-1:-1;;;;;14261:28:0;;;17387:114;;;;;;;;;;-1:-1:-1;17387:114:0;;;;;:::i;:::-;-1:-1:-1;;;;;17477:16:0;17453:4;17477:16;;;:7;:16;;;;;;;;;17387:114;13937;;;;;;;;;;;;14008:42;13937:114;;18419:139;;;;;;;;;;-1:-1:-1;18419:139:0;;;;;:::i;:::-;;:::i;2971:103::-;;;;;;;;;;;;;:::i;:::-;;23279:109;;;;;;;;;;;;;:::i;23190:81::-;;;;;;;;;;;;;:::i;2330:87::-;;;;;;;;;;-1:-1:-1;2376:7:0;2403:6;-1:-1:-1;;;;;2403:6:0;2330:87;;23639:225;;;;;;;;;;-1:-1:-1;23639:225:0;;;;;:::i;:::-;;:::i;19442:87::-;;;;;;;;;;-1:-1:-1;19514:7:0;;;;;;;;;;;;-1:-1:-1;;;19514:7:0;;;;19442:87;;13598:38;;;;;;;;;;;;13635:1;13598:38;;18566:167;;;;;;;;;;-1:-1:-1;18566:167:0;;;;;:::i;:::-;;:::i;17509:151::-;;;;;;;;;;-1:-1:-1;17509:151:0;;;;;:::i;:::-;;:::i;17668:138::-;;;;;;;;;;-1:-1:-1;17668:138:0;;;;;:::i;:::-;;:::i;15365:235::-;;;;;;;;;;;;;:::i;14524:40::-;;;;;;;;;;;;;;;;17189:190;;;;;;;;;;;;;:::i;23396:235::-;;;;;;;;;;-1:-1:-1;23396:235:0;;;;;:::i;:::-;;:::i;15608:269::-;;;;;;;;;;;;;:::i;18741:143::-;;;;;;;;;;-1:-1:-1;18741:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;18849:18:0;;;18822:7;18849:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18741:143;16487:166;;;;;;;;;;;;;:::i;16661:112::-;;;;;;;;;;;;;:::i;3229:201::-;;;;;;;;;;-1:-1:-1;3229:201:0;;;;;:::i;:::-;;:::i;14571:42::-;;;;;;;;;;;;;;;;15885:112;;;;;;;;;;-1:-1:-1;14376:42:0;15885:112;;17814:333;17878:7;17898:21;17922:18;:16;:18::i;:::-;-1:-1:-1;;;;;17955:16:0;;;;;;:7;:16;;;;;;17898:42;;-1:-1:-1;17955:16:0;;17951:158;;;-1:-1:-1;;;;;18007:17:0;;17988:16;18007:17;;;:8;:17;;;;;;18046:24;;;:51;;18084:13;18046:51;;;18073:8;18046:51;18039:58;17814:333;-1:-1:-1;;;;17814:333:0:o;17951:158::-;18126:13;17814:333;-1:-1:-1;;17814:333:0:o;19537:83::-;19574:13;19607:5;19600:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19537:83;:::o;18892:161::-;18967:4;18984:39;1119:10;19007:7;19016:6;18984:8;:39::i;:::-;-1:-1:-1;19041:4:0;18892:161;;;;:::o;16005:350::-;16052:7;16072:17;16092:21;:19;:21::i;:::-;16072:41;-1:-1:-1;16124:19:0;16171:1;16154:165;16219:13;;;;:10;:13;;;;;;16206:26;;16202:106;;16267:1;16253:15;;16287:5;;16202:106;16182:3;;;;:::i;:::-;;;;16154:165;;;-1:-1:-1;16336:11:0;16005:350;-1:-1:-1;;16005:350:0:o;16363:116::-;16415:13;16448:5;:23;16454:16;:14;:16::i;:::-;16448:23;;;;;;;;;;;16441:30;;;;;:::i;19061:373::-;19159:4;19176:36;19186:6;19194:9;19205:6;19176:9;:36::i;:::-;-1:-1:-1;;;;;19231:19:0;;;;;;:11;:19;;;;;;;;1119:10;19231:33;;;;;;;;:43;-1:-1:-1;19231:43:0;19223:96;;;;-1:-1:-1;;;19223:96:0;;4535:2:1;19223:96:0;;;4517:21:1;4574:2;4554:18;;;4547:30;4613:34;4593:18;;;4586:62;-1:-1:-1;;;4664:18:1;;;4657:38;4712:19;;19223:96:0;;;;;;;;;-1:-1:-1;;;;;19361:19:0;;;;;;:11;:19;;;;;;;;1119:10;19361:33;;;;;;;;;19330:74;;19339:6;;19361:42;;19397:6;;19361:42;:::i;:::-;19330:8;:74::i;:::-;-1:-1:-1;19422:4:0;19061:373;;;;;:::o;18155:153::-;-1:-1:-1;;;;;18251:16:0;;18224:7;18251:16;;;:7;:16;;;;;;;;:49;;13635:1;18251:49;;;-1:-1:-1;;;;;;18270:17:0;;;;;:8;:17;;;;;;;18155:153::o;16993:188::-;17041:7;17061:20;17088:16;:14;:16::i;:::-;17084:20;;:1;:20;:::i;:::-;17061:43;;13590:1;17122:12;:24;:51;;17161:12;17122:51;;;13590:1;17122:51;17115:58;;;16993:188;:::o;18419:139::-;-1:-1:-1;;;;;18533:16:0;;18485:7;18533:16;;;:7;:16;;;;;;18512:38;;:20;:38::i;2971:103::-;2216:13;:11;:13::i;:::-;3036:30:::1;3063:1;3036:18;:30::i;:::-;2971:103::o:0;23279:109::-;2216:13;:11;:13::i;:::-;13441:17:::1;23333:7;:17:::0;;;23361:9:::1;:19:::0;23279:109::o;23190:81::-;2216:13;:11;:13::i;:::-;23245:11:::1;:18:::0;;-1:-1:-1;;;;23245:18:0::1;-1:-1:-1::0;;;23245:18:0::1;::::0;;23190:81::o;23639:225::-;23755:14;;23714:4;;-1:-1:-1;;;;;23755:14:0;1119:10;-1:-1:-1;;;;;23739:30:0;;:64;;;-1:-1:-1;23789:14:0;;-1:-1:-1;;;;;23789:14:0;1119:10;-1:-1:-1;;;;;23773:30:0;;23739:64;23731:73;;;;;;23822:34;23836:19;23822:13;:34::i;18566:167::-;18644:4;18661:42;1119:10;18685:9;18696:6;18661:9;:42::i;17509:151::-;-1:-1:-1;;;;;17597:16:0;;17570:7;17597:16;;;:7;:16;;;;;;;;:55;;17636:16;:14;:16::i;:::-;17597:55;;17668:138;17736:13;17769:5;:29;17775:22;17789:7;17775:13;:22::i;:::-;17769:29;;;;;;;;;;;17762:36;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17668:138;;;:::o;15365:235::-;15412:7;15462:13;14376:42;-1:-1:-1;;;;;15520:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15432:121;;;;;;15588:3;15579:6;:12;;;;:::i;17189:190::-;17238:7;17258:21;17282:16;:14;:16::i;23396:235::-;23518:14;;23477:4;;-1:-1:-1;;;;;23518:14:0;1119:10;-1:-1:-1;;;;;23502:30:0;;:64;;;-1:-1:-1;23552:14:0;;-1:-1:-1;;;;;23552:14:0;1119:10;-1:-1:-1;;;;;23536:30:0;;23502:64;23494:73;;;;;;23585:38;23601:21;23585:15;:38::i;15608:269::-;15660:7;15680:17;15753:4;15733:16;:14;:16::i;:::-;15716:13;;15701:29;;-1:-1:-1;;;15701:29:0;;-1:-1:-1;;;;;15716:13:0;;;15701:29;;;1715:51:1;14175:42:0;;15701:14;;1688:18:1;;15701:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;;;:::i;:::-;15700:57;;;;:::i;:::-;15812:13;;15680:77;;-1:-1:-1;15768:15:0;;15802:24;;-1:-1:-1;;;;;15812:13:0;15802:9;:24::i;:::-;15786:40;;13441:17;15786:40;:::i;:::-;15768:58;-1:-1:-1;15845:19:0;15768:58;15845:9;:19;:::i;:::-;15844:25;;15868:1;15844:25;:::i;:::-;15837:32;;;;15608:269;:::o;16487:166::-;16531:7;16551:19;16573:16;:14;:16::i;:::-;16551:38;;16607:11;16622:1;16607:16;:38;;16630:15;:11;16644:1;16630:15;:::i;:::-;16607:38;;16661:112;16712:13;16745:5;:20;16751:13;:11;:13::i;3229:201::-;2216:13;:11;:13::i;:::-;-1:-1:-1;;;;;3318:22:0;::::1;3310:73;;;::::0;-1:-1:-1;;;3310:73:0;;6686:2:1;3310:73:0::1;::::0;::::1;6668:21:1::0;6725:2;6705:18;;;6698:30;6764:34;6744:18;;;6737:62;-1:-1:-1;;;6815:18:1;;;6808:36;6861:19;;3310:73:0::1;6484:402:1::0;3310:73:0::1;3394:28;3413:8;3394:18;:28::i;:::-;3229:201:::0;:::o;19919:335::-;-1:-1:-1;;;;;20012:19:0;;20004:68;;;;-1:-1:-1;;;20004:68:0;;7093:2:1;20004:68:0;;;7075:21:1;7132:2;7112:18;;;7105:30;7171:34;7151:18;;;7144:62;-1:-1:-1;;;7222:18:1;;;7215:34;7266:19;;20004:68:0;6891:400:1;20004:68:0;-1:-1:-1;;;;;20091:21:0;;20083:68;;;;-1:-1:-1;;;20083:68:0;;7498:2:1;20083:68:0;;;7480:21:1;7537:2;7517:18;;;7510:30;7576:34;7556:18;;;7549:62;-1:-1:-1;;;7627:18:1;;;7620:32;7669:19;;20083:68:0;7296:398:1;20083:68:0;-1:-1:-1;;;;;20162:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20214:32;;529:25:1;;;20214:32:0;;502:18:1;20214:32:0;;;;;;;;19919:335;;;:::o;20262:2295::-;-1:-1:-1;;;;;20350:18:0;;20342:68;;;;-1:-1:-1;;;20342:68:0;;7901:2:1;20342:68:0;;;7883:21:1;7940:2;7920:18;;;7913:30;7979:34;7959:18;;;7952:62;-1:-1:-1;;;8030:18:1;;;8023:35;8075:19;;20342:68:0;7699:401:1;20342:68:0;-1:-1:-1;;;;;20429:16:0;;20421:64;;;;-1:-1:-1;;;20421:64:0;;8307:2:1;20421:64:0;;;8289:21:1;8346:2;8326:18;;;8319:30;8385:34;8365:18;;;8358:62;-1:-1:-1;;;8436:18:1;;;8429:33;8479:19;;20421:64:0;8105:399:1;20421:64:0;20513:1;20504:6;:10;20496:62;;;;-1:-1:-1;;;20496:62:0;;8711:2:1;20496:62:0;;;8693:21:1;8750:2;8730:18;;;8723:30;8789:34;8769:18;;;8762:62;-1:-1:-1;;;8840:18:1;;;8833:37;8887:19;;20496:62:0;8509:403:1;20496:62:0;2376:7;2403:6;-1:-1:-1;;;;;20575:15:0;;;2403:6;;20575:15;;;;:32;;-1:-1:-1;2376:7:0;2403:6;-1:-1:-1;;;;;20594:13:0;;;2403:6;;20594:13;;20575:32;:48;;;;;20619:4;-1:-1:-1;;;;;20611:12:0;:4;-1:-1:-1;;;;;20611:12:0;;;20575:48;:62;;;;;20633:4;-1:-1:-1;;;;;20627:10:0;:2;-1:-1:-1;;;;;20627:10:0;;;20575:62;20571:1060;;;20659:11;;-1:-1:-1;;;20659:11:0;;;;20654:141;;20707:4;-1:-1:-1;;;;;20699:12:0;:4;-1:-1:-1;;;;;20699:12:0;;20691:88;;;;-1:-1:-1;;;20691:88:0;;9119:2:1;20691:88:0;;;9101:21:1;9158:2;9138:18;;;9131:30;9197:34;9177:18;;;9170:62;9268:33;9248:18;;;9241:61;9319:19;;20691:88:0;8917:427:1;20691:88:0;20829:7;;20819:6;:17;;20811:58;;;;-1:-1:-1;;;20811:58:0;;9551:2:1;20811:58:0;;;9533:21:1;9590:2;9570:18;;;9563:30;9629;9609:18;;;9602:58;9677:18;;20811:58:0;9349:352:1;20811:58:0;20896:13;;-1:-1:-1;;;;;20890:19:0;;;20896:13;;20890:19;20886:142;;20963:9;;20954:6;20938:13;20948:2;20938:9;:13::i;:::-;:22;;;;:::i;:::-;:34;20930:82;;;;-1:-1:-1;;;20930:82:0;;9908:2:1;20930:82:0;;;9890:21:1;9947:2;9927:18;;;9920:30;9986:34;9966:18;;;9959:62;-1:-1:-1;;;10037:18:1;;;10030:33;10080:19;;20930:82:0;9706:399:1;20930:82:0;21044:28;21075:15;21085:4;21075:9;:15::i;:::-;21201:7;;21044:46;;-1:-1:-1;14660:5:0;21120:36;;;;21177:31;;21173:102;;21252:7;;21229:30;;21173:102;21295:7;:21;;;;-1:-1:-1;21307:9:0;;-1:-1:-1;;;21307:9:0;;;;21306:10;21295:21;:46;;;;-1:-1:-1;21328:13:0;;-1:-1:-1;;;;;21320:21:0;;;21328:13;;21320:21;;21295:46;:75;;;;-1:-1:-1;;;;;;21346:24:0;;;;;;:18;:24;;;;;;;;21345:25;21295:75;:102;;;;-1:-1:-1;;;;;;21375:22:0;;;;;;:18;:22;;;;;;;;21374:23;21295:102;21291:329;;;21418:14;:21;;-1:-1:-1;;;;21418:21:0;-1:-1:-1;;;21418:21:0;;;21458:37;21474:20;21458:15;:37::i;:::-;-1:-1:-1;21514:14:0;:22;;-1:-1:-1;;;;21514:22:0;;;-1:-1:-1;;;;;21559:4:0;:12;;:16;21555:49;;21577:27;21591:4;-1:-1:-1;;;;;21591:12:0;;21577:13;:27::i;:::-;;21555:49;20639:992;;20571:1060;-1:-1:-1;;;;;21680:24:0;;21643:12;21680:24;;;:18;:24;;;;;;21658:4;;21680:24;;;:50;;-1:-1:-1;;;;;;21708:22:0;;;;;;:18;:22;;;;;;;;21680:50;21679:102;;;-1:-1:-1;21744:13:0;;-1:-1:-1;;;;;21736:21:0;;;21744:13;;21736:21;;;;:44;;-1:-1:-1;21767:13:0;;-1:-1:-1;;;;;21761:19:0;;;21767:13;;21761:19;;21736:44;21675:821;;;-1:-1:-1;21808:5:0;21675:821;;;21858:13;;-1:-1:-1;;;;;21850:21:0;;;21858:13;;21850:21;:55;;;;-1:-1:-1;;;;;;21875:30:0;;13887:42;21875:30;;21850:55;21846:307;;;21936:17;:15;:17::i;:::-;21926:7;:27;-1:-1:-1;;;;;21977:11:0;;;;;;:7;:11;;;;;;;;21972:133;;22028:16;:14;:16::i;:::-;-1:-1:-1;;;;;22013:12:0;;;;;;:8;:12;;;;;;;;:31;;;;22067:7;:11;;;:18;;-1:-1:-1;;22067:18:0;22081:4;22067:18;;;21972:133;22123:14;:12;:14::i;:::-;22177:13;;-1:-1:-1;;;;;22171:19:0;;;22177:13;;22171:19;:55;;;;-1:-1:-1;;;;;;22194:32:0;;13887:42;22194:32;;22171:55;22167:318;;;22257:22;22274:4;22257:16;:22::i;:::-;22247:7;:32;-1:-1:-1;;;;;22303:13:0;;;;;;:7;:13;;;;;;;;22298:139;;22358:16;:14;:16::i;:::-;-1:-1:-1;;;;;22341:14:0;;;;;;:8;:14;;;;;;;;:33;;;;22397:7;:13;;;:20;;-1:-1:-1;;22397:20:0;22413:4;22397:20;;;22298:139;22455:14;:12;:14::i;:::-;22508:41;22523:4;22529:2;22533:6;22541:7;22508:14;:41::i;:::-;20331:2226;20262:2295;;;:::o;23872:347::-;23941:7;23980;;23969;:18;;23961:73;;;;-1:-1:-1;;;23961:73:0;;10312:2:1;23961:73:0;;;10294:21:1;10351:2;10331:18;;;10324:30;10390:34;10370:18;;;10363:62;-1:-1:-1;;;10441:18:1;;;10434:40;10491:19;;23961:73:0;10110:406:1;23961:73:0;24137:14;;-1:-1:-1;;;24137:14:0;;;;24136:15;:28;;;;-1:-1:-1;24155:9:0;;-1:-1:-1;;;24155:9:0;;;;24136:28;24135:76;;24201:10;:8;:10::i;:::-;24191:20;;:7;:20;:::i;24135:76::-;24168:20;13441:17;24184:4;24168:20;:::i;2495:132::-;2376:7;2403:6;-1:-1:-1;;;;;2403:6:0;1119:10;2559:23;2551:68;;;;-1:-1:-1;;;2551:68:0;;11131:2:1;2551:68:0;;;11113:21:1;;;11150:18;;;11143:30;11209:34;11189:18;;;11182:62;11261:18;;2551:68:0;10929:356:1;3590:191:0;3664:16;3683:6;;-1:-1:-1;;;;;3700:17:0;;;-1:-1:-1;;;;;;3700:17:0;;;;;;3733:40;;3683:6;;;;;;;3733:40;;3664:16;3733:40;3653:128;3590:191;:::o;23002:180::-;23106:14;;23098:51;;23062:4;;;;-1:-1:-1;;;;;23106:14:0;;;;23134:10;;23062:4;23098:51;23062:4;23098:51;23134:10;23106:14;23098:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23079:70:0;;23002:180;-1:-1:-1;;;;23002:180:0:o;22653:341::-;14706:9;:16;;-1:-1:-1;;;;14706:16:0;-1:-1:-1;;;14706:16:0;;;22769::::1;::::0;;22783:1:::1;22769:16:::0;;;;;::::1;::::0;;-1:-1:-1;;;;22769:16:0;22783:1;22769:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22769:16:0::1;22745:40;;22806:4;22796;22801:1;22796:7;;;;;;;;:::i;:::-;;;;;;:14;-1:-1:-1::0;;;;;22796:14:0::1;;;-1:-1:-1::0;;;;;22796:14:0::1;;;::::0;::::1;14089:42;22821:4;22826:1;22821:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22821:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:14;13887:42:::1;22846:66;22913:11:::0;22926:1:::1;22929:4:::0;22935::::1;22941:22;:15;22959:4;22941:22;:::i;:::-;22846:118;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;14745:9:0;:17;;-1:-1:-1;;;;14745:17:0;;;-1:-1:-1;22982:4:0::1;::::0;22653:341;-1:-1:-1;;;;22653:341:0:o;22565:80::-;22616:21;:19;:21::i;:::-;22608:5;;:29;;:5;:29;:::i;24227:235::-;24340:7;24335:26;;24349:12;:10;:12::i;:::-;24372:44;24390:6;24398:9;24409:6;24372:17;:44::i;:::-;24432:7;24427:27;;24441:13;19902:1;19892:7;:11;19850:61;26230:94;26272:7;13441:17;26299:7;;:17;;;;:::i;:::-;26292:24;;26230:94;:::o;19719:123::-;19764:7;;19775:1;19764:12;19760:51;;19719:123::o;19760:51::-;19833:1;19823:7;:11;19719:123::o;24470:717::-;24573:9;;-1:-1:-1;;;24573:9:0;;;;24572:10;;:28;;-1:-1:-1;24586:14:0;;-1:-1:-1;;;24586:14:0;;;;24572:28;24568:612;;;24618:15;24635:23;24660:12;24674:23;24699:12;24713:13;24730:19;24741:7;24730:10;:19::i;:::-;-1:-1:-1;;;;;24782:15:0;;;;;;:7;:15;;;;;;24617:132;;-1:-1:-1;24617:132:0;;-1:-1:-1;24617:132:0;;-1:-1:-1;24617:132:0;-1:-1:-1;24617:132:0;-1:-1:-1;24617:132:0;-1:-1:-1;24782:25:0;;24617:132;;24782:25;:::i;:::-;-1:-1:-1;;;;;24764:15:0;;;;;;;:7;:15;;;;;;:43;;;;24843:18;;;;;;;:36;;24864:15;;24843:36;:::i;:::-;-1:-1:-1;;;;;24822:18:0;;;;;;:7;:18;;;;;:57;24935:10;:8;:10::i;:::-;24927:18;;:5;:18;:::i;:::-;-1:-1:-1;;;;;24918:4:0;24910:13;;;;;:7;:13;;;;;;:36;;;;:::i;:::-;-1:-1:-1;;;;;24902:4:0;24894:13;;;;;:7;:13;;;;;:52;24971:7;;:14;;24981:4;;24971:14;:::i;:::-;24961:7;:24;25013:10;;:17;;25026:4;;25013:17;:::i;:::-;25000:10;:30;25050:44;;529:25:1;;;-1:-1:-1;;;;;25050:44:0;;;;;;;;;;517:2:1;502:18;25050:44:0;;;;;;;24602:504;;;;;;24470:717;;;:::o;24568:612::-;25149:9;-1:-1:-1;;;;;25132:36:0;25141:6;-1:-1:-1;;;;;25132:36:0;;25160:7;25132:36;;;;529:25:1;;517:2;502:18;;383:177;24568:612:0;24470:717;;;:::o;25195:416::-;25254:7;25263;25272;25281;25290;25299;25320:23;25345:12;25359:13;25376:32;25388:7;25397:1;25400:7;;25376:11;:32::i;:::-;25319:89;;;;;;25420:15;25437:23;25462:12;25478:45;25490:7;25499:4;25505:5;25512:10;:8;:10::i;:::-;25478:11;:45::i;:::-;25419:104;;;;-1:-1:-1;25419:104:0;;-1:-1:-1;25574:15:0;;-1:-1:-1;25591:4:0;;-1:-1:-1;25597:5:0;;-1:-1:-1;25195:416:0;;-1:-1:-1;;;;;25195:416:0:o;25619:283::-;25713:7;;;;25787:3;25766:18;25776:8;25766:7;:18;:::i;:::-;:24;;;;:::i;:::-;25751:39;-1:-1:-1;25801:13:0;25836:3;25817:16;25827:6;25817:7;:16;:::i;:::-;:22;;;;:::i;:::-;25801:38;-1:-1:-1;25801:38:0;25858:14;25868:4;25858:7;:14;:::i;:::-;:22;;;;:::i;:::-;25850:44;25882:4;;-1:-1:-1;25882:4:0;-1:-1:-1;25619:283:0;-1:-1:-1;;;;25619:283:0:o;25910:312::-;26020:7;;;;26076:21;26086:11;26076:7;:21;:::i;:::-;26058:39;-1:-1:-1;26108:12:0;26123:18;26130:11;26123:4;:18;:::i;:::-;26108:33;-1:-1:-1;26160:7:0;26187:19;26195:11;26187:5;:19;:::i;:::-;26169:14;26179:4;26169:7;:14;:::i;:::-;:38;;;;:::i;:::-;26152:62;;;;-1:-1:-1;26209:4:0;;-1:-1:-1;25910:312:0;-1:-1:-1;;;;;;25910:312:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;:::-;333:39;192:186;-1:-1:-1;;;192:186:1:o;565:548::-;677:4;706:2;735;724:9;717:21;767:6;761:13;810:6;805:2;794:9;790:18;783:34;835:1;845:140;859:6;856:1;853:13;845:140;;;954:14;;;950:23;;944:30;920:17;;;939:2;916:26;909:66;874:10;;845:140;;;849:3;1034:1;1029:2;1020:6;1009:9;1005:22;1001:31;994:42;1104:2;1097;1093:7;1088:2;1080:6;1076:15;1072:29;1061:9;1057:45;1053:54;1045:62;;;;565:548;;;;:::o;1118:254::-;1186:6;1194;1247:2;1235:9;1226:7;1222:23;1218:32;1215:52;;;1263:1;1260;1253:12;1215:52;1286:29;1305:9;1286:29;:::i;:::-;1276:39;1362:2;1347:18;;;;1334:32;;-1:-1:-1;;;1118:254:1:o;2248:328::-;2325:6;2333;2341;2394:2;2382:9;2373:7;2369:23;2365:32;2362:52;;;2410:1;2407;2400:12;2362:52;2433:29;2452:9;2433:29;:::i;:::-;2423:39;;2481:38;2515:2;2504:9;2500:18;2481:38;:::i;:::-;2471:48;;2566:2;2555:9;2551:18;2538:32;2528:42;;2248:328;;;;;:::o;3225:180::-;3284:6;3337:2;3325:9;3316:7;3312:23;3308:32;3305:52;;;3353:1;3350;3343:12;3305:52;-1:-1:-1;3376:23:1;;3225:180;-1:-1:-1;3225:180:1:o;3410:260::-;3478:6;3486;3539:2;3527:9;3518:7;3514:23;3510:32;3507:52;;;3555:1;3552;3545:12;3507:52;3578:29;3597:9;3578:29;:::i;:::-;3568:39;;3626:38;3660:2;3649:9;3645:18;3626:38;:::i;:::-;3616:48;;3410:260;;;;;:::o;3675:380::-;3754:1;3750:12;;;;3797;;;3818:61;;3872:4;3864:6;3860:17;3850:27;;3818:61;3925:2;3917:6;3914:14;3894:18;3891:38;3888:161;;3971:10;3966:3;3962:20;3959:1;3952:31;4006:4;4003:1;3996:15;4034:4;4031:1;4024:15;3888:161;;3675:380;;;:::o;4060:127::-;4121:10;4116:3;4112:20;4109:1;4102:31;4152:4;4149:1;4142:15;4176:4;4173:1;4166:15;4192:136;4231:3;4259:5;4249:39;;4268:18;;:::i;:::-;-1:-1:-1;;;4304:18:1;;4192:136::o;4742:128::-;4809:9;;;4830:11;;;4827:37;;;4844:18;;:::i;4875:179::-;4953:13;;5006:22;4995:34;;4985:45;;4975:73;;5044:1;5041;5034:12;5059:473;5162:6;5170;5178;5186;5194;5247:3;5235:9;5226:7;5222:23;5218:33;5215:53;;;5264:1;5261;5254:12;5215:53;5287:39;5316:9;5287:39;:::i;:::-;5277:49;;5366:2;5355:9;5351:18;5345:25;5335:35;;5410:2;5399:9;5395:18;5389:25;5379:35;;5454:2;5443:9;5439:18;5433:25;5423:35;;5477:49;5521:3;5510:9;5506:19;5477:49;:::i;:::-;5467:59;;5059:473;;;;;;;;:::o;5537:127::-;5598:10;5593:3;5589:20;5586:1;5579:31;5629:4;5626:1;5619:15;5653:4;5650:1;5643:15;5669:193;5708:1;5734;5724:35;;5739:18;;:::i;:::-;-1:-1:-1;;;5775:18:1;;-1:-1:-1;;5795:13:1;;5771:38;5768:64;;;5812:18;;:::i;:::-;-1:-1:-1;5846:10:1;;5669:193::o;5867:184::-;5937:6;5990:2;5978:9;5969:7;5965:23;5961:32;5958:52;;;6006:1;6003;5996:12;5958:52;-1:-1:-1;6029:16:1;;5867:184;-1:-1:-1;5867:184:1:o;6056:168::-;6129:9;;;6160;;6177:15;;;6171:22;;6157:37;6147:71;;6198:18;;:::i;6229:120::-;6269:1;6295;6285:35;;6300:18;;:::i;:::-;-1:-1:-1;6334:9:1;;6229:120::o;6354:125::-;6419:9;;;6440:10;;;6437:36;;;6453:18;;:::i;11500:127::-;11561:10;11556:3;11552:20;11549:1;11542:31;11592:4;11589:1;11582:15;11616:4;11613:1;11606:15;11632:127;11693:10;11688:3;11684:20;11681:1;11674:31;11724:4;11721:1;11714:15;11748:4;11745:1;11738:15;11764:980;12026:4;12074:3;12063:9;12059:19;12105:6;12094:9;12087:25;12131:2;12169:6;12164:2;12153:9;12149:18;12142:34;12212:3;12207:2;12196:9;12192:18;12185:31;12236:6;12271;12265:13;12302:6;12294;12287:22;12340:3;12329:9;12325:19;12318:26;;12379:2;12371:6;12367:15;12353:29;;12400:1;12410:195;12424:6;12421:1;12418:13;12410:195;;;12489:13;;-1:-1:-1;;;;;12485:39:1;12473:52;;12580:15;;;;12545:12;;;;12521:1;12439:9;12410:195;;;-1:-1:-1;;;;;;;12661:32:1;;;;12656:2;12641:18;;12634:60;-1:-1:-1;;;12725:3:1;12710:19;12703:35;12622:3;11764:980;-1:-1:-1;;;11764:980:1:o;12875:545::-;12977:2;12972:3;12969:11;12966:448;;;13013:1;13038:5;13034:2;13027:17;13083:4;13079:2;13069:19;13153:2;13141:10;13137:19;13134:1;13130:27;13124:4;13120:38;13189:4;13177:10;13174:20;13171:47;;;-1:-1:-1;13212:4:1;13171:47;13267:2;13262:3;13258:12;13255:1;13251:20;13245:4;13241:31;13231:41;;13322:82;13340:2;13333:5;13330:13;13322:82;;;13385:17;;;13366:1;13355:13;13322:82;;;13326:3;;;12875:545;;;:::o;13596:1352::-;13722:3;13716:10;13749:18;13741:6;13738:30;13735:56;;;13771:18;;:::i;:::-;13800:97;13890:6;13850:38;13882:4;13876:11;13850:38;:::i;:::-;13844:4;13800:97;:::i;:::-;13952:4;;14016:2;14005:14;;14033:1;14028:663;;;;14735:1;14752:6;14749:89;;;-1:-1:-1;14804:19:1;;;14798:26;14749:89;-1:-1:-1;;13553:1:1;13549:11;;;13545:24;13541:29;13531:40;13577:1;13573:11;;;13528:57;14851:81;;13998:944;;14028:663;12822:1;12815:14;;;12859:4;12846:18;;-1:-1:-1;;14064:20:1;;;14182:236;14196:7;14193:1;14190:14;14182:236;;;14285:19;;;14279:26;14264:42;;14377:27;;;;14345:1;14333:14;;;;14212:19;;14182:236;;;14186:3;14446:6;14437:7;14434:19;14431:201;;;14507:19;;;14501:26;-1:-1:-1;;14590:1:1;14586:14;;;14602:3;14582:24;14578:37;14574:42;14559:58;14544:74;;14431:201;-1:-1:-1;;;;;14678:1:1;14662:14;;;14658:22;14645:36;;-1:-1:-1;13596:1352:1:o

Swarm Source

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