ETH Price: $3,125.18 (+0.40%)

Token

Nexan (NXAN)
 

Overview

Max Total Supply

1,000,000,000 NXAN

Holders

602 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000551044273 NXAN

Value
$0.00
0x6f378ff3d1fb7aa803f8cbb8364aeb01eee20000
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Nexan is committed to providing the best web3 experience for the community by developing a range of tools designed to enhance user experience

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Nexan

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

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 () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
     /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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

interface IDEXRouter {
    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 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;
}





// CHANGE
contract Nexan is IERC20, Ownable {
    using SafeMath for uint256;

    // ERC20
    string constant _name = "Nexan";
    string constant _symbol = "NXAN";
    uint8 constant _decimals = 18;
    uint256 _totalSupply = 1000000000 * (10 ** _decimals); // 1,000,000,000

    // CONSTANT ADDRESSES
    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address ROUTER = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    IDEXRouter public router = IDEXRouter(ROUTER);

    // LIMITTER
    uint256 public _maxBuyTxAmount = (_totalSupply * 10) / 1000; // 1%
    uint256 public _maxSellTxAmount = (_totalSupply * 10) / 1000; // 1%
    uint256 public _maxWalletSize = (_totalSupply * 20) / 1000; // 2%

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    
    
    // FEES
    uint256 treasuryFee = 50;
    uint256 devFee = 200; 
    uint256 mktFee = 150; 
    uint256 totalFee = 400; 
    uint256 feeDenominator = 10000;
    

    // declare variables
    address public devFeeReceiver;
    address public mktFeeReceiver;
    address public treasuryFeeReceiver;
    bool public swapBackEnabled = true;   
    address public pair;

    

    uint256 public swapThreshold = _totalSupply / 2000; // 0.05%
    bool inSwap;
    
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () {
        
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        // addresses
        devFeeReceiver = address(0xB98B0322f0443adF8F2Fb2bB015bB001CE631BA6);
        mktFeeReceiver = address(0x33277B5BdDd86786b3828256743Cd2043038E1C4);
        treasuryFeeReceiver = address(0xaD0fCE7813EB24AfEd0810A3Fbc8efEFC8CADdFD);
       

        _allowances[address(this)][address(router)] = type(uint256).max;
        

        isFeeExempt[msg.sender] = true;
        isFeeExempt[devFeeReceiver] = true;
        isFeeExempt[mktFeeReceiver] = true;
        isFeeExempt[treasuryFeeReceiver] = true;
        isFeeExempt[address(this)] = true;
        
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[devFeeReceiver] = true;
        isTxLimitExempt[mktFeeReceiver] = true;
        isTxLimitExempt[treasuryFeeReceiver] = true;
        isTxLimitExempt[ZERO] = true;
        isTxLimitExempt[address(this)] = true;
       
        
        _balances[devFeeReceiver] = _totalSupply.mul(5).div(100);
        _balances[treasuryFeeReceiver] = _totalSupply.mul(15).div(100);
        _balances[msg.sender] = _totalSupply.mul(80).div(100);
    }

    receive() external payable { }

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        
        // coniditional Boolean
        bool isTxExempted = (isTxLimitExempt[sender] || isTxLimitExempt[recipient]);
        bool isContractTransfer = (sender==address(this) || recipient==address(this));
        bool isLiquidityTransfer = ((sender == pair && recipient == address(router)) || (recipient == pair && sender == address(router) ));
        
        if(!isTxExempted && !isContractTransfer && !isLiquidityTransfer ){
            txLimitter(sender,recipient, amount);
        }
        
        if (recipient != pair && recipient != DEAD) {
            require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletSize, "Transfer amount exceeds the wallet size.");
        }

        if(shouldSwapBack()){ swapBack(); }
    
        uint256 amountReceived = shouldTakeFee(sender,recipient) ? takeFee(sender, amount) : amount;
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amountReceived);
        

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function txLimitter(address sender, address recipient, uint256 amount) internal view {
        
        bool isBuy = sender == pair || sender == address(router);
        bool isSell = recipient== pair || recipient == address(router);
        
        if(isBuy){
            require(amount <= _maxBuyTxAmount, "TX Limit Exceeded");
        }
        
        if(isSell){
            require(amount <= _maxSellTxAmount, "TX Limit Exceeded");
        }
        
    }
    
    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return  (sender == pair || recipient == pair) && !isFeeExempt[sender] && !isFeeExempt[recipient] ;
    } 

    function getTotalFee() public view returns (uint256) {
        return totalFee;
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(getTotalFee()).div(feeDenominator);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }
    
    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapBackEnabled
        && _balances[address(this)] >= swapThreshold;
    }
    
    function swapBack() internal swapping {
        
        uint256 amountToSwap = swapThreshold;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

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

        uint256 amountWETH = address(this).balance.sub(balanceBefore);
        uint256 totalWETHFee = totalFee;
        uint256 amountWETHDev = amountWETH.mul(devFee).div(totalWETHFee);
        uint256 amountWETHMkt = amountWETH.mul(mktFee).div(totalWETHFee);
        uint256 amountWETHTreasury = amountWETH.mul(treasuryFee).div(totalWETHFee);

        sendPayable(amountWETHDev, amountWETHMkt, amountWETHTreasury);

        
    }

    function sendPayable(uint256 amtDev, uint256 amtMkt, uint256 amtTreasury) internal {
        (bool successone,) = payable(devFeeReceiver).call{value: amtDev, gas: 30000}("");
        (bool successtwo,) = payable(mktFeeReceiver).call{value: amtMkt, gas: 30000}("");
        (bool successthree,) = payable(treasuryFeeReceiver).call{value: amtTreasury, gas: 30000}("");
        require(successone && successtwo && successthree, "receiver rejected ETH transfer");
    }
    // used for collecting collected Tax to DevFee Address
    function withdrawCollectedTax() external onlyOwner {
        uint256 bal = address(this).balance; // return the native token ( WETH )
        (bool success,) = payable(devFeeReceiver).call{value: bal, gas: 30000}("");
        require(success, "receiver rejected ETH transfer");
    }
    
    
    /**
     * 
     * SETTER SECTIONS
     * 
     */

    function setMaxWallet(uint256 numerator, uint256 divisor) external onlyOwner{
        require(numerator > 0 && divisor > 0 && divisor <= 10000);
        _maxWalletSize = _totalSupply.mul(numerator).div(divisor);
    }
    
    function setDevFee(uint256 fee) external onlyOwner {
        // total fee should not be more than 4%;
        uint256 simulatedFee = fee.add(treasuryFee).add(mktFee);
        require(simulatedFee <= 400, "Fees too high !!");
        devFee = fee;
        totalFee = simulatedFee;
    }
   
    function setTreasuryFee(uint256 fee) external onlyOwner {
        // total fee should not be more than 4%;
        uint256 simulatedFee = fee.add(devFee).add(mktFee);
        require(simulatedFee <= 400, "Fees too high !!");
        treasuryFee = fee;
        totalFee = simulatedFee;
    }
    
    function setMarketingFee(uint256 fee) external onlyOwner {
        // total fee should not be more than 4%;
        uint256 simulatedFee = fee.add(devFee).add(treasuryFee);
        require(simulatedFee <= 400, "Fees too high !!");
        mktFee = fee;
        totalFee = simulatedFee;
    }
    
    function setBuyTxMaximum(uint256 max) external onlyOwner{
        uint256 minimumTreshold = (_totalSupply * 5) / 1000; // 0.5% is the minimum tx limit, we cant set below this
        uint256 simulatedMaxTx = (_totalSupply * max) / 1000;
        require(simulatedMaxTx >= minimumTreshold, "Tx Limit is too low");
        _maxBuyTxAmount = simulatedMaxTx;
    }
    
    function setSellTxMaximum(uint256 max) external onlyOwner {
        uint256 minimumTreshold = (_totalSupply * 5) / 1000; // 0.5% is the minimum tx limit, we cant set below this
        uint256 simulatedMaxTx = (_totalSupply * max) / 1000;
        require(simulatedMaxTx >= minimumTreshold, "Tx Limit is too low");
        _maxSellTxAmount = simulatedMaxTx;
    }
    
    
    
    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setFeeReceivers(address _devFeeReceiver, address _mktFeeReceiver, address _treasuryFeeReceiver) external onlyOwner {
        
        devFeeReceiver = _devFeeReceiver;
        mktFeeReceiver = _mktFeeReceiver;
        treasuryFeeReceiver = _treasuryFeeReceiver;
    }

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

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

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external pure returns (string memory) { return _symbol; }
    function name() external pure returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    
}

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":"_maxBuyTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxSellTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mktFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"setBuyTxMaximum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setDevFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_mktFeeReceiver","type":"address"},{"internalType":"address","name":"_treasuryFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setMarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"setSellTxMaximum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setTreasuryFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawCollectedTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a620006a3565b6200002290633b9aca00620006b4565b6001819055600280546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560038054821661dead1790556004805482169055600580548216737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600680549092161790556103e890620000a090600a620006b4565b620000ac9190620006ce565b6007556103e8600154600a620000c39190620006b4565b620000cf9190620006ce565b6008556103e86001546014620000e69190620006b4565b620000f29190620006ce565b6009556032600e5560c8600f5560966010556101906011556127106012556015805460ff60a01b1916600160a01b17905560015462000135906107d090620006ce565b6017553480156200014557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001db573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002019190620006f1565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000253573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002799190620006f1565b601680546001600160a01b039283166001600160a01b03199182161790915560138054821673b98b0322f0443adf8f2fb2bb015bb001ce631ba61781556014805483167333277b5bddd86786b3828256743cd2043038e1c41781556015805490931673ad0fce7813eb24afed0810a3fbc8efefc8caddfd178355306000818152600b60209081526040808320600654891684528252808320600019905533808452600c8352818420805460ff19908116600190811790925588548b168652838620805482168317905587548b168652838620805482168317905589548b16865283862080548216831790558686528386208054821683179055918552600d90935281842080548216841790559554881683528083208054871683179055935487168252838220805486168217905594548616815282812080548516861790556004549095168552818520805484168517905584529092208054909216811790915554620003f790606490620003f090600562000473565b906200050a565b6013546001600160a01b03166000908152600a60205260409020556001546200042a90606490620003f090600f62000473565b6015546001600160a01b03166000908152600a60205260409020556001546200045d90606490620003f090605062000473565b336000908152600a60205260409020556200076c565b600082600003620004875750600062000504565b6000620004958385620006b4565b905082620004a48583620006ce565b14620005015760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200050183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200055460201b60201c565b60008183620005785760405162461bcd60e51b8152600401620004f891906200071c565b506000620005878486620006ce565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005e7578160001904821115620005cb57620005cb62000590565b80851615620005d957918102915b93841c9390800290620005ab565b509250929050565b600082620006005750600162000504565b816200060f5750600062000504565b8160018114620006285760028114620006335762000653565b600191505062000504565b60ff84111562000647576200064762000590565b50506001821b62000504565b5060208310610133831016604e8410600b841016171562000678575081810a62000504565b620006848383620005a6565b80600019048211156200069b576200069b62000590565b029392505050565b60006200050160ff841683620005ef565b808202811582820484141762000504576200050462000590565b600082620006ec57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200070457600080fd5b81516001600160a01b03811681146200050157600080fd5b600060208083528351808285015260005b818110156200074b578581018301518582016040015282016200072d565b506000604082860101526040601f19601f8301168501019250505092915050565b611e2e806200077c6000396000f3fe60806040526004361061021e5760003560e01c806377e741c711610123578063af6727ed116100ab578063dd62ed3e1161006f578063dd62ed3e1461061d578063df20fd4914610663578063f2fde38b14610683578063f84ba65d146106a3578063f887ea40146106c357600080fd5b8063af6727ed14610587578063b2c6e1e6146105a7578063cf4be394146105c7578063d7c01032146105dd578063dab84ee7146105fd57600080fd5b80638f9a55c0116100f25780638f9a55c0146104e457806395d89b41146104fa578063a8aa1b3114610527578063a9059cbb14610547578063abe57e701461056757600080fd5b806377e741c7146104915780637ae316d0146104b1578063893d20e8146104c65780638da5cb5b146104c657600080fd5b8063313ce567116101a657806364c0a2f81161017557806364c0a2f8146103e5578063658d4b7f1461040657806370a0823114610426578063711370c51461045c578063715018a61461047c57600080fd5b8063313ce56714610373578063334773271461038f578063571ac8b0146103a5578063625e764c146103c557600080fd5b806318160ddd116101ed57806318160ddd146102d15780631c75b6b2146102e657806323b872dd146103065780632af10fac146103265780632b112e491461035e57600080fd5b80630445b6671461022a57806306fdde0314610253578063095ea7b31461028a5780630e90edf6146102ba57600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024060175481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b506040805180820190915260058152642732bc30b760d91b60208201525b60405161024a9190611aab565b34801561029657600080fd5b506102aa6102a5366004611b15565b6106e3565b604051901515815260200161024a565b3480156102c657600080fd5b506102cf610750565b005b3480156102dd57600080fd5b50600154610240565b3480156102f257600080fd5b506102cf610301366004611b3f565b610833565b34801561031257600080fd5b506102aa610321366004611b58565b6108af565b34801561033257600080fd5b50601554610346906001600160a01b031681565b6040516001600160a01b03909116815260200161024a565b34801561036a57600080fd5b50610240610971565b34801561037f57600080fd5b506040516012815260200161024a565b34801561039b57600080fd5b5061024060075481565b3480156103b157600080fd5b506102aa6103c0366004611b94565b6109c3565b3480156103d157600080fd5b506102cf6103e0366004611b3f565b6109d1565b3480156103f157600080fd5b506015546102aa90600160a01b900460ff1681565b34801561041257600080fd5b506102cf610421366004611bbf565b610a47565b34801561043257600080fd5b50610240610441366004611b94565b6001600160a01b03166000908152600a602052604090205490565b34801561046857600080fd5b506102cf610477366004611b3f565b610a9c565b34801561048857600080fd5b506102cf610b52565b34801561049d57600080fd5b506102cf6104ac366004611b3f565b610bc6565b3480156104bd57600080fd5b50601154610240565b3480156104d257600080fd5b506000546001600160a01b0316610346565b3480156104f057600080fd5b5061024060095481565b34801561050657600080fd5b50604080518082019091526004815263272c20a760e11b602082015261027d565b34801561053357600080fd5b50601654610346906001600160a01b031681565b34801561055357600080fd5b506102aa610562366004611b15565b610c3c565b34801561057357600080fd5b506102cf610582366004611bf2565b610c49565b34801561059357600080fd5b50601454610346906001600160a01b031681565b3480156105b357600080fd5b506102cf6105c2366004611b3f565b610cc0565b3480156105d357600080fd5b5061024060085481565b3480156105e957600080fd5b506102cf6105f8366004611c14565b610d76565b34801561060957600080fd5b50601354610346906001600160a01b031681565b34801561062957600080fd5b50610240610638366004611c57565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b34801561066f57600080fd5b506102cf61067e366004611c81565b610ddf565b34801561068f57600080fd5b506102cf61069e366004611b94565b610e2b565b3480156106af57600080fd5b506102cf6106be366004611bbf565b610f15565b3480156106cf57600080fd5b50600654610346906001600160a01b031681565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061073e9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146107835760405162461bcd60e51b815260040161077a90611c9d565b60405180910390fd5b60135460405147916000916001600160a01b039091169061753090849084818181858888f193505050503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b505090508061082f5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161077a565b5050565b6000546001600160a01b0316331461085d5760405162461bcd60e51b815260040161077a90611c9d565b600061088060105461087a600e5485610f6a90919063ffffffff16565b90610f6a565b90506101908111156108a45760405162461bcd60e51b815260040161077a90611cd2565b600f91909155601155565b6001600160a01b0383166000908152600b602090815260408083203384529091528120546000191461095c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600b82528381203382529091529190912054610937918490610fc9565b6001600160a01b0385166000908152600b602090815260408083203384529091529020555b610967848484611003565b90505b9392505050565b6004546001600160a01b03166000908152600a60205260408120546109be906003546001600160a01b03166000908152600a60205260409020546109b8906001549061131d565b9061131d565b905090565b600061074a826000196106e3565b6000546001600160a01b031633146109fb5760405162461bcd60e51b815260040161077a90611c9d565b6000610a18600e5461087a600f5485610f6a90919063ffffffff16565b9050610190811115610a3c5760405162461bcd60e51b815260040161077a90611cd2565b601091909155601155565b6000546001600160a01b03163314610a715760405162461bcd60e51b815260040161077a90611c9d565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ac65760405162461bcd60e51b815260040161077a90611c9d565b60006103e86001546005610ada9190611d12565b610ae49190611d29565b905060006103e883600154610af99190611d12565b610b039190611d29565b905081811015610b4b5760405162461bcd60e51b81526020600482015260136024820152725478204c696d697420697320746f6f206c6f7760681b604482015260640161077a565b6008555050565b6000546001600160a01b03163314610b7c5760405162461bcd60e51b815260040161077a90611c9d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610bf05760405162461bcd60e51b815260040161077a90611c9d565b6000610c0d60105461087a600f5485610f6a90919063ffffffff16565b9050610190811115610c315760405162461bcd60e51b815260040161077a90611cd2565b600e91909155601155565b600061096a338484611003565b6000546001600160a01b03163314610c735760405162461bcd60e51b815260040161077a90611c9d565b600082118015610c835750600081115b8015610c9157506127108111155b610c9a57600080fd5b610cb981610cb38460015461135f90919063ffffffff16565b906113e1565b6009555050565b6000546001600160a01b03163314610cea5760405162461bcd60e51b815260040161077a90611c9d565b60006103e86001546005610cfe9190611d12565b610d089190611d29565b905060006103e883600154610d1d9190611d12565b610d279190611d29565b905081811015610d6f5760405162461bcd60e51b81526020600482015260136024820152725478204c696d697420697320746f6f206c6f7760681b604482015260640161077a565b6007555050565b6000546001600160a01b03163314610da05760405162461bcd60e51b815260040161077a90611c9d565b601380546001600160a01b039485166001600160a01b031991821617909155601480549385169382169390931790925560158054919093169116179055565b6000546001600160a01b03163314610e095760405162461bcd60e51b815260040161077a90611c9d565b60158054921515600160a01b0260ff60a01b1990931692909217909155601755565b6000546001600160a01b03163314610e555760405162461bcd60e51b815260040161077a90611c9d565b6001600160a01b038116610eba5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161077a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f3f5760405162461bcd60e51b815260040161077a90611c9d565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b600080610f778385611d4b565b90508381101561096a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161077a565b60008184841115610fed5760405162461bcd60e51b815260040161077a9190611aab565b506000610ffa8486611d5e565b95945050505050565b60185460009060ff16156110235761101c848484611423565b905061096a565b6001600160a01b0384166000908152600d602052604081205460ff168061106257506001600160a01b0384166000908152600d602052604090205460ff165b905060006001600160a01b03861630148061108557506001600160a01b03851630145b6016549091506000906001600160a01b0388811691161480156110b557506006546001600160a01b038781169116145b806110e557506016546001600160a01b0387811691161480156110e557506006546001600160a01b038881169116145b9050821580156110f3575081155b80156110fd575080155b1561110d5761110d878787611509565b6016546001600160a01b0387811691161480159061113957506003546001600160a01b03878116911614155b156111e7576001600160a01b0386166000908152600d602052604090205460ff168061118a57506009546001600160a01b0387166000908152600a6020526040902054611187908790611d4b565b11155b6111e75760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e742065786365656473207468652077616c6c60448201526732ba1039b4bd329760c11b606482015260840161077a565b6111ef611605565b156111fc576111fc61165b565b600061120888886117e1565b611212578561121c565b61121c888761185b565b90506112848660405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b815250600a60008c6001600160a01b03166001600160a01b0316815260200190815260200160002054610fc99092919063ffffffff16565b6001600160a01b03808a166000908152600a602052604080822093909355908916815220546112b39082610f6a565b6001600160a01b038089166000818152600a602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113079085815260200190565b60405180910390a3506001979650505050505050565b600061096a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fc9565b6000826000036113715750600061074a565b600061137d8385611d12565b90508261138a8583611d29565b1461096a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161077a565b600061096a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118ff565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611474918490610fc9565b6001600160a01b038086166000908152600a602052604080822093909355908516815220546114a39083610f6a565b6001600160a01b038085166000818152600a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114f79086815260200190565b60405180910390a35060019392505050565b6016546000906001600160a01b038581169116148061153557506006546001600160a01b038581169116145b6016549091506000906001600160a01b038581169116148061156457506006546001600160a01b038581169116145b905081156115b2576007548311156115b25760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161077a565b80156115fe576008548311156115fe5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161077a565b5050505050565b6016546000906001600160a01b03163314801590611626575060185460ff16155b801561163b5750601554600160a01b900460ff165b80156109be575050601754306000908152600a6020526040902054101590565b6018805460ff1916600117905560175460408051600280825260608201835260009260208301908036833701905050905030816000815181106116a0576116a0611d71565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106116d1576116d1611d71565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b81524792919091169063791ac9479061171b908690600090879030904290600401611d87565b600060405180830381600087803b15801561173557600080fd5b505af1158015611749573d6000803e3d6000fd5b505050506000611762824761131d90919063ffffffff16565b905060006011549050600061178682610cb3600f548661135f90919063ffffffff16565b905060006117a383610cb36010548761135f90919063ffffffff16565b905060006117c084610cb3600e548861135f90919063ffffffff16565b90506117cd83838361192d565b50506018805460ff19169055505050505050565b6016546000906001600160a01b038481169116148061180d57506016546001600160a01b038381169116145b801561183257506001600160a01b0383166000908152600c602052604090205460ff16155b801561096a5750506001600160a01b03166000908152600c602052604090205460ff1615919050565b600080611877601254610cb361187060115490565b869061135f565b306000908152600a60205260409020549091506118949082610f6a565b306000818152600a6020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118e59085815260200190565b60405180910390a36118f7838261131d565b949350505050565b600081836119205760405162461bcd60e51b815260040161077a9190611aab565b506000610ffa8486611d29565b6013546040516000916001600160a01b03169061753090869084818181858888f193505050503d806000811461197f576040519150601f19603f3d011682016040523d82523d6000602084013e611984565b606091505b50506014546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d80600081146119dd576040519150601f19603f3d011682016040523d82523d6000602084013e6119e2565b606091505b50506015546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d8060008114611a3b576040519150601f19603f3d011682016040523d82523d6000602084013e611a40565b606091505b50509050828015611a4e5750815b8015611a575750805b611aa35760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161077a565b505050505050565b600060208083528351808285015260005b81811015611ad857858101830151858201604001528201611abc565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611b1057600080fd5b919050565b60008060408385031215611b2857600080fd5b611b3183611af9565b946020939093013593505050565b600060208284031215611b5157600080fd5b5035919050565b600080600060608486031215611b6d57600080fd5b611b7684611af9565b9250611b8460208501611af9565b9150604084013590509250925092565b600060208284031215611ba657600080fd5b61096a82611af9565b80358015158114611b1057600080fd5b60008060408385031215611bd257600080fd5b611bdb83611af9565b9150611be960208401611baf565b90509250929050565b60008060408385031215611c0557600080fd5b50508035926020909101359150565b600080600060608486031215611c2957600080fd5b611c3284611af9565b9250611c4060208501611af9565b9150611c4e60408501611af9565b90509250925092565b60008060408385031215611c6a57600080fd5b611c7383611af9565b9150611be960208401611af9565b60008060408385031215611c9457600080fd5b611b3183611baf565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526010908201526f4665657320746f6f206869676820212160801b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761074a5761074a611cfc565b600082611d4657634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561074a5761074a611cfc565b8181038181111561074a5761074a611cfc565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611dd75784516001600160a01b031683529383019391830191600101611db2565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212200d910098c01628c7f23b07d049eab34f8dc50ddea290a1ba28e10a3ed044646e64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c806377e741c711610123578063af6727ed116100ab578063dd62ed3e1161006f578063dd62ed3e1461061d578063df20fd4914610663578063f2fde38b14610683578063f84ba65d146106a3578063f887ea40146106c357600080fd5b8063af6727ed14610587578063b2c6e1e6146105a7578063cf4be394146105c7578063d7c01032146105dd578063dab84ee7146105fd57600080fd5b80638f9a55c0116100f25780638f9a55c0146104e457806395d89b41146104fa578063a8aa1b3114610527578063a9059cbb14610547578063abe57e701461056757600080fd5b806377e741c7146104915780637ae316d0146104b1578063893d20e8146104c65780638da5cb5b146104c657600080fd5b8063313ce567116101a657806364c0a2f81161017557806364c0a2f8146103e5578063658d4b7f1461040657806370a0823114610426578063711370c51461045c578063715018a61461047c57600080fd5b8063313ce56714610373578063334773271461038f578063571ac8b0146103a5578063625e764c146103c557600080fd5b806318160ddd116101ed57806318160ddd146102d15780631c75b6b2146102e657806323b872dd146103065780632af10fac146103265780632b112e491461035e57600080fd5b80630445b6671461022a57806306fdde0314610253578063095ea7b31461028a5780630e90edf6146102ba57600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024060175481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b506040805180820190915260058152642732bc30b760d91b60208201525b60405161024a9190611aab565b34801561029657600080fd5b506102aa6102a5366004611b15565b6106e3565b604051901515815260200161024a565b3480156102c657600080fd5b506102cf610750565b005b3480156102dd57600080fd5b50600154610240565b3480156102f257600080fd5b506102cf610301366004611b3f565b610833565b34801561031257600080fd5b506102aa610321366004611b58565b6108af565b34801561033257600080fd5b50601554610346906001600160a01b031681565b6040516001600160a01b03909116815260200161024a565b34801561036a57600080fd5b50610240610971565b34801561037f57600080fd5b506040516012815260200161024a565b34801561039b57600080fd5b5061024060075481565b3480156103b157600080fd5b506102aa6103c0366004611b94565b6109c3565b3480156103d157600080fd5b506102cf6103e0366004611b3f565b6109d1565b3480156103f157600080fd5b506015546102aa90600160a01b900460ff1681565b34801561041257600080fd5b506102cf610421366004611bbf565b610a47565b34801561043257600080fd5b50610240610441366004611b94565b6001600160a01b03166000908152600a602052604090205490565b34801561046857600080fd5b506102cf610477366004611b3f565b610a9c565b34801561048857600080fd5b506102cf610b52565b34801561049d57600080fd5b506102cf6104ac366004611b3f565b610bc6565b3480156104bd57600080fd5b50601154610240565b3480156104d257600080fd5b506000546001600160a01b0316610346565b3480156104f057600080fd5b5061024060095481565b34801561050657600080fd5b50604080518082019091526004815263272c20a760e11b602082015261027d565b34801561053357600080fd5b50601654610346906001600160a01b031681565b34801561055357600080fd5b506102aa610562366004611b15565b610c3c565b34801561057357600080fd5b506102cf610582366004611bf2565b610c49565b34801561059357600080fd5b50601454610346906001600160a01b031681565b3480156105b357600080fd5b506102cf6105c2366004611b3f565b610cc0565b3480156105d357600080fd5b5061024060085481565b3480156105e957600080fd5b506102cf6105f8366004611c14565b610d76565b34801561060957600080fd5b50601354610346906001600160a01b031681565b34801561062957600080fd5b50610240610638366004611c57565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b34801561066f57600080fd5b506102cf61067e366004611c81565b610ddf565b34801561068f57600080fd5b506102cf61069e366004611b94565b610e2b565b3480156106af57600080fd5b506102cf6106be366004611bbf565b610f15565b3480156106cf57600080fd5b50600654610346906001600160a01b031681565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061073e9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146107835760405162461bcd60e51b815260040161077a90611c9d565b60405180910390fd5b60135460405147916000916001600160a01b039091169061753090849084818181858888f193505050503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b505090508061082f5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161077a565b5050565b6000546001600160a01b0316331461085d5760405162461bcd60e51b815260040161077a90611c9d565b600061088060105461087a600e5485610f6a90919063ffffffff16565b90610f6a565b90506101908111156108a45760405162461bcd60e51b815260040161077a90611cd2565b600f91909155601155565b6001600160a01b0383166000908152600b602090815260408083203384529091528120546000191461095c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600b82528381203382529091529190912054610937918490610fc9565b6001600160a01b0385166000908152600b602090815260408083203384529091529020555b610967848484611003565b90505b9392505050565b6004546001600160a01b03166000908152600a60205260408120546109be906003546001600160a01b03166000908152600a60205260409020546109b8906001549061131d565b9061131d565b905090565b600061074a826000196106e3565b6000546001600160a01b031633146109fb5760405162461bcd60e51b815260040161077a90611c9d565b6000610a18600e5461087a600f5485610f6a90919063ffffffff16565b9050610190811115610a3c5760405162461bcd60e51b815260040161077a90611cd2565b601091909155601155565b6000546001600160a01b03163314610a715760405162461bcd60e51b815260040161077a90611c9d565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ac65760405162461bcd60e51b815260040161077a90611c9d565b60006103e86001546005610ada9190611d12565b610ae49190611d29565b905060006103e883600154610af99190611d12565b610b039190611d29565b905081811015610b4b5760405162461bcd60e51b81526020600482015260136024820152725478204c696d697420697320746f6f206c6f7760681b604482015260640161077a565b6008555050565b6000546001600160a01b03163314610b7c5760405162461bcd60e51b815260040161077a90611c9d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610bf05760405162461bcd60e51b815260040161077a90611c9d565b6000610c0d60105461087a600f5485610f6a90919063ffffffff16565b9050610190811115610c315760405162461bcd60e51b815260040161077a90611cd2565b600e91909155601155565b600061096a338484611003565b6000546001600160a01b03163314610c735760405162461bcd60e51b815260040161077a90611c9d565b600082118015610c835750600081115b8015610c9157506127108111155b610c9a57600080fd5b610cb981610cb38460015461135f90919063ffffffff16565b906113e1565b6009555050565b6000546001600160a01b03163314610cea5760405162461bcd60e51b815260040161077a90611c9d565b60006103e86001546005610cfe9190611d12565b610d089190611d29565b905060006103e883600154610d1d9190611d12565b610d279190611d29565b905081811015610d6f5760405162461bcd60e51b81526020600482015260136024820152725478204c696d697420697320746f6f206c6f7760681b604482015260640161077a565b6007555050565b6000546001600160a01b03163314610da05760405162461bcd60e51b815260040161077a90611c9d565b601380546001600160a01b039485166001600160a01b031991821617909155601480549385169382169390931790925560158054919093169116179055565b6000546001600160a01b03163314610e095760405162461bcd60e51b815260040161077a90611c9d565b60158054921515600160a01b0260ff60a01b1990931692909217909155601755565b6000546001600160a01b03163314610e555760405162461bcd60e51b815260040161077a90611c9d565b6001600160a01b038116610eba5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161077a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f3f5760405162461bcd60e51b815260040161077a90611c9d565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b600080610f778385611d4b565b90508381101561096a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161077a565b60008184841115610fed5760405162461bcd60e51b815260040161077a9190611aab565b506000610ffa8486611d5e565b95945050505050565b60185460009060ff16156110235761101c848484611423565b905061096a565b6001600160a01b0384166000908152600d602052604081205460ff168061106257506001600160a01b0384166000908152600d602052604090205460ff165b905060006001600160a01b03861630148061108557506001600160a01b03851630145b6016549091506000906001600160a01b0388811691161480156110b557506006546001600160a01b038781169116145b806110e557506016546001600160a01b0387811691161480156110e557506006546001600160a01b038881169116145b9050821580156110f3575081155b80156110fd575080155b1561110d5761110d878787611509565b6016546001600160a01b0387811691161480159061113957506003546001600160a01b03878116911614155b156111e7576001600160a01b0386166000908152600d602052604090205460ff168061118a57506009546001600160a01b0387166000908152600a6020526040902054611187908790611d4b565b11155b6111e75760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e742065786365656473207468652077616c6c60448201526732ba1039b4bd329760c11b606482015260840161077a565b6111ef611605565b156111fc576111fc61165b565b600061120888886117e1565b611212578561121c565b61121c888761185b565b90506112848660405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b815250600a60008c6001600160a01b03166001600160a01b0316815260200190815260200160002054610fc99092919063ffffffff16565b6001600160a01b03808a166000908152600a602052604080822093909355908916815220546112b39082610f6a565b6001600160a01b038089166000818152600a602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113079085815260200190565b60405180910390a3506001979650505050505050565b600061096a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fc9565b6000826000036113715750600061074a565b600061137d8385611d12565b90508261138a8583611d29565b1461096a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161077a565b600061096a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118ff565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611474918490610fc9565b6001600160a01b038086166000908152600a602052604080822093909355908516815220546114a39083610f6a565b6001600160a01b038085166000818152600a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114f79086815260200190565b60405180910390a35060019392505050565b6016546000906001600160a01b038581169116148061153557506006546001600160a01b038581169116145b6016549091506000906001600160a01b038581169116148061156457506006546001600160a01b038581169116145b905081156115b2576007548311156115b25760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161077a565b80156115fe576008548311156115fe5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161077a565b5050505050565b6016546000906001600160a01b03163314801590611626575060185460ff16155b801561163b5750601554600160a01b900460ff165b80156109be575050601754306000908152600a6020526040902054101590565b6018805460ff1916600117905560175460408051600280825260608201835260009260208301908036833701905050905030816000815181106116a0576116a0611d71565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106116d1576116d1611d71565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b81524792919091169063791ac9479061171b908690600090879030904290600401611d87565b600060405180830381600087803b15801561173557600080fd5b505af1158015611749573d6000803e3d6000fd5b505050506000611762824761131d90919063ffffffff16565b905060006011549050600061178682610cb3600f548661135f90919063ffffffff16565b905060006117a383610cb36010548761135f90919063ffffffff16565b905060006117c084610cb3600e548861135f90919063ffffffff16565b90506117cd83838361192d565b50506018805460ff19169055505050505050565b6016546000906001600160a01b038481169116148061180d57506016546001600160a01b038381169116145b801561183257506001600160a01b0383166000908152600c602052604090205460ff16155b801561096a5750506001600160a01b03166000908152600c602052604090205460ff1615919050565b600080611877601254610cb361187060115490565b869061135f565b306000908152600a60205260409020549091506118949082610f6a565b306000818152600a6020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118e59085815260200190565b60405180910390a36118f7838261131d565b949350505050565b600081836119205760405162461bcd60e51b815260040161077a9190611aab565b506000610ffa8486611d29565b6013546040516000916001600160a01b03169061753090869084818181858888f193505050503d806000811461197f576040519150601f19603f3d011682016040523d82523d6000602084013e611984565b606091505b50506014546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d80600081146119dd576040519150601f19603f3d011682016040523d82523d6000602084013e6119e2565b606091505b50506015546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d8060008114611a3b576040519150601f19603f3d011682016040523d82523d6000602084013e611a40565b606091505b50509050828015611a4e5750815b8015611a575750805b611aa35760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161077a565b505050505050565b600060208083528351808285015260005b81811015611ad857858101830151858201604001528201611abc565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611b1057600080fd5b919050565b60008060408385031215611b2857600080fd5b611b3183611af9565b946020939093013593505050565b600060208284031215611b5157600080fd5b5035919050565b600080600060608486031215611b6d57600080fd5b611b7684611af9565b9250611b8460208501611af9565b9150604084013590509250925092565b600060208284031215611ba657600080fd5b61096a82611af9565b80358015158114611b1057600080fd5b60008060408385031215611bd257600080fd5b611bdb83611af9565b9150611be960208401611baf565b90509250929050565b60008060408385031215611c0557600080fd5b50508035926020909101359150565b600080600060608486031215611c2957600080fd5b611c3284611af9565b9250611c4060208501611af9565b9150611c4e60408501611af9565b90509250925092565b60008060408385031215611c6a57600080fd5b611c7383611af9565b9150611be960208401611af9565b60008060408385031215611c9457600080fd5b611b3183611baf565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526010908201526f4665657320746f6f206869676820212160801b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761074a5761074a611cfc565b600082611d4657634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561074a5761074a611cfc565b8181038181111561074a5761074a611cfc565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611dd75784516001600160a01b031683529383019391830191600101611db2565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212200d910098c01628c7f23b07d049eab34f8dc50ddea290a1ba28e10a3ed044646e64736f6c63430008130033

Deployed Bytecode Sourcemap

10524:12093:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11993:50;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;11993:50:0;;;;;;;;22210:71;;;;;;;;;;-1:-1:-1;22273:5:0;;;;;;;;;;;;-1:-1:-1;;;22273:5:0;;;;22210:71;;;;;;;:::i;13409:216::-;;;;;;;;;;-1:-1:-1;13409:216:0;;;;;:::i;:::-;;:::i;:::-;;;1351:14:1;;1344:22;1326:41;;1314:2;1299:18;13409:216:0;1186:187:1;18795:287:0;;;;;;;;;;;;;:::i;:::-;;21958:88;;;;;;;;;;-1:-1:-1;22031:12:0;;21958:88;;19394:291;;;;;;;;;;-1:-1:-1;19394:291:0;;;;;:::i;:::-;;:::i;13927:370::-;;;;;;;;;;-1:-1:-1;13927:370:0;;;;;:::i;:::-;;:::i;11872:34::-;;;;;;;;;;-1:-1:-1;11872:34:0;;;;-1:-1:-1;;;;;11872:34:0;;;;;;-1:-1:-1;;;;;2060:32:1;;;2042:51;;2030:2;2015:18;11872:34:0;1896:203:1;21808:142:0;;;;;;;;;;;;;:::i;22052:71::-;;;;;;;;;;-1:-1:-1;22052:71:0;;10718:2;2246:36:1;;2234:2;2219:18;22052:71:0;2104:184:1;11162:59:0;;;;;;;;;;;;;;;;13633:122;;;;;;;;;;-1:-1:-1;13633:122:0;;;;;:::i;:::-;;:::i;20004:297::-;;;;;;;;;;-1:-1:-1;20004:297:0;;;;;:::i;:::-;;:::i;11913:34::-;;;;;;;;;;-1:-1:-1;11913:34:0;;;;-1:-1:-1;;;11913:34:0;;;;;;21080:119;;;;;;;;;;-1:-1:-1;21080:119:0;;;;;:::i;:::-;;:::i;22364:105::-;;;;;;;;;;-1:-1:-1;22364:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;22448:18:0;22430:7;22448:18;;;:9;:18;;;;;;;22364:105;20689:367;;;;;;;;;;-1:-1:-1;20689:367:0;;;;;:::i;:::-;;:::i;8476:148::-;;;;;;;;;;;;;:::i;19696:296::-;;;;;;;;;;-1:-1:-1;19696:296:0;;;;;:::i;:::-;;:::i;16682:87::-;;;;;;;;;;-1:-1:-1;16753:8:0;;16682:87;;22287:71;;;;;;;;;;-1:-1:-1;22330:7:0;7900:6;-1:-1:-1;;;;;7900:6:0;22287:71;21808:142;11307:58;;;;;;;;;;;;;;;;22129:75;;;;;;;;;;-1:-1:-1;22194:7:0;;;;;;;;;;;;-1:-1:-1;;;22194:7:0;;;;22129:75;;11957:19;;;;;;;;;;-1:-1:-1;11957:19:0;;;;-1:-1:-1;;;;;11957:19:0;;;13763:156;;;;;;;;;;-1:-1:-1;13763:156:0;;;;;:::i;:::-;;:::i;19162:220::-;;;;;;;;;;-1:-1:-1;19162:220:0;;;;;:::i;:::-;;:::i;11836:29::-;;;;;;;;;;-1:-1:-1;11836:29:0;;;;-1:-1:-1;;;;;11836:29:0;;;20313:364;;;;;;;;;;-1:-1:-1;20313:364:0;;;;;:::i;:::-;;:::i;11234:60::-;;;;;;;;;;;;;;;;21346:281;;;;;;;;;;-1:-1:-1;21346:281:0;;;;;:::i;:::-;;:::i;11800:29::-;;;;;;;;;;-1:-1:-1;11800:29:0;;;;-1:-1:-1;;;;;11800:29:0;;;22475:133;;;;;;;;;;-1:-1:-1;22475:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;22577:19:0;;;22559:7;22577:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;22475:133;21635:159;;;;;;;;;;-1:-1:-1;21635:159:0;;;;;:::i;:::-;;:::i;8779:244::-;;;;;;;;;;-1:-1:-1;8779:244:0;;;;;:::i;:::-;;:::i;21207:127::-;;;;;;;;;;-1:-1:-1;21207:127:0;;;;;:::i;:::-;;:::i;11091:45::-;;;;;;;;;;-1:-1:-1;11091:45:0;;;;-1:-1:-1;;;;;11091:45:0;;;13409:216;13513:10;13484:4;13501:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;13501:32:0;;;;;;;;;;:41;;;13558:37;13484:4;;13501:32;;13558:37;;;;13536:6;160:25:1;;148:2;133:18;;14:177;13558:37:0;;;;;;;;-1:-1:-1;13613:4:0;13409:216;;;;;:::o;18795:287::-;8047:6;;-1:-1:-1;;;;;8047:6:0;3175:10;8047:22;8039:67;;;;-1:-1:-1;;;8039:67:0;;;;;;;:::i;:::-;;;;;;;;;18965:14:::1;::::0;18957:56:::1;::::0;18871:21:::1;::::0;18857:11:::1;::::0;-1:-1:-1;;;;;18965:14:0;;::::1;::::0;19003:5:::1;::::0;18871:21;;18857:11;18957:56;18857:11;18957:56;18871:21;18965:14;19003:5;18957:56:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18939:74;;;19032:7;19024:50;;;::::0;-1:-1:-1;;;19024:50:0;;5017:2:1;19024:50:0::1;::::0;::::1;4999:21:1::0;5056:2;5036:18;;;5029:30;5095:32;5075:18;;;5068:60;5145:18;;19024:50:0::1;4815:354:1::0;19024:50:0::1;18846:236;;18795:287::o:0;19394:291::-;8047:6;;-1:-1:-1;;;;;8047:6:0;3175:10;8047:22;8039:67;;;;-1:-1:-1;;;8039:67:0;;;;;;;:::i;:::-;19506:20:::1;19529:32;19554:6;;19529:20;19537:11;;19529:3;:7;;:20;;;;:::i;:::-;:24:::0;::::1;:32::i;:::-;19506:55;;19596:3;19580:12;:19;;19572:48;;;;-1:-1:-1::0;;;19572:48:0::1;;;;;;;:::i;:::-;19631:6;:12:::0;;;;19654:8:::1;:23:::0;19394:291::o;13927:370::-;-1:-1:-1;;;;;14047:19:0;;14027:4;14047:19;;;:11;:19;;;;;;;;14067:10;14047:31;;;;;;;;-1:-1:-1;;14047:52:0;14044:186;;14149:69;;;;;;;;;;;-1:-1:-1;;;14149:69:0;;;;;;;;-1:-1:-1;;;;;14149:19:0;;-1:-1:-1;14149:19:0;;;:11;:19;;;;;14169:10;14149:31;;;;;;;;;;:69;;14185:6;;14149:35;:69::i;:::-;-1:-1:-1;;;;;14115:19:0;;;;;;:11;:19;;;;;;;;14135:10;14115:31;;;;;;;:103;14044:186;14249:40;14263:6;14271:9;14282:6;14249:13;:40::i;:::-;14242:47;;13927:370;;;;;;:::o;21808:142::-;21936:4;;-1:-1:-1;;;;;21936:4:0;21861:7;22448:18;;;:9;:18;;;;;;21888:54;;21915:4;;-1:-1:-1;;;;;21915:4:0;22430:7;22448:18;;;:9;:18;;;;;;21888:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;21881:61;;21808:142;:::o;13633:122::-;13688:4;13712:35;13720:7;-1:-1:-1;;13712:7:0;:35::i;20004:297::-;8047:6;;-1:-1:-1;;;;;8047:6:0;3175:10;8047:22;8039:67;;;;-1:-1:-1;;;8039:67:0;;;;;;;:::i;:::-;20122:20:::1;20145:32;20165:11;;20145:15;20153:6;;20145:3;:7;;:15;;;;:::i;:32::-;20122:55;;20212:3;20196:12;:19;;20188:48;;;;-1:-1:-1::0;;;20188:48:0::1;;;;;;;:::i;:::-;20247:6;:12:::0;;;;20270:8:::1;:23:::0;20004:297::o;21080:119::-;8047:6;;-1:-1:-1;;;;;8047:6:0;3175:10;8047:22;8039:67;;;;-1:-1:-1;;;8039:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21163:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;21163:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21080:119::o;20689:367::-;8047:6;;-1:-1:-1;;;;;8047:6:0;3175:10;8047:22;8039:67;;;;-1:-1:-1;;;8039:67:0;;;;;;;:::i;:::-;20758:23:::1;20805:4;20785:12;;20800:1;20785:16;;;;:::i;:::-;20784:25;;;;:::i;:::-;20758:51;;20876:22;20924:4;20917:3;20902:12;;:18;;;;:::i;:::-;20901:27;;;;:::i;:::-;20876:52;;20965:15;20947:14;:33;;20939:65;;;::::0;-1:-1:-1;;;20939:65:0;;6248:2:1;20939:65:0::1;::::0;::::1;6230:21:1::0;6287:2;6267:18;;;6260:30;-1:-1:-1;;;6306:18:1;;;6299:49;6365:18;;20939:65:0::1;6046:343:1::0;20939:65:0::1;21015:16;:33:::0;-1:-1:-1;;20689:367:0:o;8476:148::-;8047:6;;-1:-1:-1;;;;;8047:6:0;3175:10;8047:22;8039:67;;;;-1:-1:-1;;;8039:67:0;;;;;;;:::i;:::-;8583:1:::1;8567:6:::0;;8546:40:::1;::::0;-1:-1:-1;;;;;8567:6:0;;::::1;::::0;8546:40:::1;::::0;8583:1;;8546:40:::1;8614:1;8597:19:::0;;-1:-1:-1;;;;;;8597:19:0::1;::::0;;8476:148::o;19696:296::-;8047:6;;-1:-1:-1;;;;;8047:6:0;3175:10;8047:22;8039:67;;;;-1:-1:-1;;;8039:67:0;;;;;;;:::i;:::-;19813:20:::1;19836:27;19856:6;;19836:15;19844:6;;19836:3;:7;;:15;;;;:::i;:27::-;19813:50;;19898:3;19882:12;:19;;19874:48;;;;-1:-1:-1::0;;;19874:48:0::1;;;;;;;:::i;:::-;19933:11;:17:::0;;;;19961:8:::1;:23:::0;19696:296::o;13763:156::-;13843:4;13867:44;13881:10;13893:9;13904:6;13867:13;:44::i;19162:220::-;8047:6;;-1:-1:-1;;;;;8047:6:0;3175:10;8047:22;8039:67;;;;-1:-1:-1;;;8039:67:0;;;;;;;:::i;:::-;19269:1:::1;19257:9;:13;:28;;;;;19284:1;19274:7;:11;19257:28;:48;;;;;19300:5;19289:7;:16;;19257:48;19249:57;;;::::0;::::1;;19334:40;19366:7;19334:27;19351:9;19334:12;;:16;;:27;;;;:::i;:::-;:31:::0;::::1;:40::i;:::-;19317:14;:57:::0;-1:-1:-1;;19162:220:0:o;20313:364::-;8047:6;;-1:-1:-1;;;;;8047:6:0;3175:10;8047:22;8039:67;;;;-1:-1:-1;;;8039:67:0;;;;;;;:::i;:::-;20380:23:::1;20427:4;20407:12;;20422:1;20407:16;;;;:::i;:::-;20406:25;;;;:::i;:::-;20380:51;;20498:22;20546:4;20539:3;20524:12;;:18;;;;:::i;:::-;20523:27;;;;:::i;:::-;20498:52;;20587:15;20569:14;:33;;20561:65;;;::::0;-1:-1:-1;;;20561:65:0;;6248:2:1;20561:65:0::1;::::0;::::1;6230:21:1::0;6287:2;6267:18;;;6260:30;-1:-1:-1;;;6306:18:1;;;6299:49;6365:18;;20561:65:0::1;6046:343:1::0;20561:65:0::1;20637:15;:32:::0;-1:-1:-1;;20313:364:0:o;21346:281::-;8047:6;;-1:-1:-1;;;;;8047:6:0;3175:10;8047:22;8039:67;;;;-1:-1:-1;;;8039:67:0;;;;;;;:::i;:::-;21491:14:::1;:32:::0;;-1:-1:-1;;;;;21491:32:0;;::::1;-1:-1:-1::0;;;;;;21491:32:0;;::::1;;::::0;;;21534:14:::1;:32:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;21577:19:::1;:42:::0;;;;;::::1;::::0;::::1;;::::0;;21346:281::o;21635:159::-;8047:6;;-1:-1:-1;;;;;8047:6:0;3175:10;8047:22;8039:67;;;;-1:-1:-1;;;8039:67:0;;;;;;;:::i;:::-;21726:15:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;21726:26:0::1;-1:-1:-1::0;;;;21726:26:0;;::::1;::::0;;;::::1;::::0;;;21763:13:::1;:23:::0;21635:159::o;8779:244::-;8047:6;;-1:-1:-1;;;;;8047:6:0;3175:10;8047:22;8039:67;;;;-1:-1:-1;;;8039:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8868:22:0;::::1;8860:73;;;::::0;-1:-1:-1;;;8860:73:0;;6596:2:1;8860:73:0::1;::::0;::::1;6578:21:1::0;6635:2;6615:18;;;6608:30;6674:34;6654:18;;;6647:62;-1:-1:-1;;;6725:18:1;;;6718:36;6771:19;;8860:73:0::1;6394:402:1::0;8860:73:0::1;8970:6;::::0;;8949:38:::1;::::0;-1:-1:-1;;;;;8949:38:0;;::::1;::::0;8970:6;::::1;::::0;8949:38:::1;::::0;::::1;8998:6;:17:::0;;-1:-1:-1;;;;;;8998:17:0::1;-1:-1:-1::0;;;;;8998:17:0;;;::::1;::::0;;;::::1;::::0;;8779:244::o;21207:127::-;8047:6;;-1:-1:-1;;;;;8047:6:0;3175:10;8047:22;8039:67;;;;-1:-1:-1;;;8039:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21294:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;21294:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21207:127::o;3458:181::-;3516:7;;3548:5;3552:1;3548;:5;:::i;:::-;3536:17;;3577:1;3572;:6;;3564:46;;;;-1:-1:-1;;;3564:46:0;;7133:2:1;3564:46:0;;;7115:21:1;7172:2;7152:18;;;7145:30;7211:29;7191:18;;;7184:57;7258:18;;3564:46:0;6931:351:1;3787:192:0;3873:7;3909:12;3901:6;;;;3893:29;;;;-1:-1:-1;;;3893:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3933:9:0;3945:5;3949:1;3945;:5;:::i;:::-;3933:17;3787:192;-1:-1:-1;;;;;3787:192:0:o;14305:1322::-;14417:6;;14397:4;;14417:6;;14414:63;;;14433:41;14448:6;14456:9;14467:6;14433:14;:41::i;:::-;14426:48;;;;14414:63;-1:-1:-1;;;;;14561:23:0;;14540:17;14561:23;;;:15;:23;;;;;;;;;:53;;-1:-1:-1;;;;;;14588:26:0;;;;;;:15;:26;;;;;;;;14561:53;14540:75;-1:-1:-1;14626:23:0;-1:-1:-1;;;;;14653:21:0;;14669:4;14653:21;;:49;;-1:-1:-1;;;;;;14678:24:0;;14697:4;14678:24;14653:49;14753:4;;14626:77;;-1:-1:-1;14714:24:0;;-1:-1:-1;;;;;14743:14:0;;;14753:4;;14743:14;:46;;;;-1:-1:-1;14782:6:0;;-1:-1:-1;;;;;14761:28:0;;;14782:6;;14761:28;14743:46;14742:101;;;-1:-1:-1;14808:4:0;;-1:-1:-1;;;;;14795:17:0;;;14808:4;;14795:17;:46;;;;-1:-1:-1;14834:6:0;;-1:-1:-1;;;;;14816:25:0;;;14834:6;;14816:25;14795:46;14714:130;;14869:12;14868:13;:36;;;;;14886:18;14885:19;14868:36;:60;;;;;14909:19;14908:20;14868:60;14865:128;;;14945:36;14956:6;14963:9;14974:6;14945:10;:36::i;:::-;15030:4;;-1:-1:-1;;;;;15017:17:0;;;15030:4;;15017:17;;;;:38;;-1:-1:-1;15051:4:0;;-1:-1:-1;;;;;15038:17:0;;;15051:4;;15038:17;;15017:38;15013:201;;;-1:-1:-1;;;;;15080:26:0;;;;;;:15;:26;;;;;;;;;:77;;-1:-1:-1;15143:14:0;;-1:-1:-1;;;;;15110:20:0;;;;;;:9;:20;;;;;;:29;;15133:6;;15110:29;:::i;:::-;:47;;15080:77;15072:130;;;;-1:-1:-1;;;15072:130:0;;7622:2:1;15072:130:0;;;7604:21:1;7661:2;7641:18;;;7634:30;7700:34;7680:18;;;7673:62;-1:-1:-1;;;7751:18:1;;;7744:38;7799:19;;15072:130:0;7420:404:1;15072:130:0;15229:16;:14;:16::i;:::-;15226:35;;;15248:10;:8;:10::i;:::-;15277:22;15302:31;15316:6;15323:9;15302:13;:31::i;:::-;:66;;15362:6;15302:66;;;15336:23;15344:6;15352;15336:7;:23::i;:::-;15277:91;;15399:53;15421:6;15399:53;;;;;;;;;;;;;-1:-1:-1;;;15399:53:0;;;:9;:17;15409:6;-1:-1:-1;;;;;15399:17:0;-1:-1:-1;;;;;15399:17:0;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;-1:-1:-1;;;;;15379:17:0;;;;;;;:9;:17;;;;;;:73;;;;15486:20;;;;;;;:40;;15511:14;15486:24;:40::i;:::-;-1:-1:-1;;;;;15463:20:0;;;;;;;:9;:20;;;;;;;:63;;;;15554:43;;;;;;;;;;15582:14;160:25:1;;148:2;133:18;;14:177;15554:43:0;;;;;;;;-1:-1:-1;15615:4:0;;14305:1322;-1:-1:-1;;;;;;;14305:1322:0:o;3645:136::-;3703:7;3730:43;3734:1;3737;3730:43;;;;;;;;;;;;;;;;;:3;:43::i;3991:250::-;4049:7;4073:1;4078;4073:6;4069:47;;-1:-1:-1;4103:1:0;4096:8;;4069:47;4128:9;4140:5;4144:1;4140;:5;:::i;:::-;4128:17;-1:-1:-1;4173:1:0;4164:5;4168:1;4128:17;4164:5;:::i;:::-;:10;4156:56;;;;-1:-1:-1;;;4156:56:0;;8031:2:1;4156:56:0;;;8013:21:1;8070:2;8050:18;;;8043:30;8109:34;8089:18;;;8082:62;-1:-1:-1;;;8160:18:1;;;8153:31;8201:19;;4156:56:0;7829:397:1;4247:132:0;4305:7;4332:39;4336:1;4339;4332:39;;;;;;;;;;;;;;;;;:3;:39::i;15643:330::-;15773:53;;;;;;;;;;;-1:-1:-1;;;15773:53:0;;;;;;;;-1:-1:-1;;;;;15773:17:0;;15736:4;15773:17;;;:9;:17;;;;;;;:53;;15795:6;;15773:21;:53::i;:::-;-1:-1:-1;;;;;15753:17:0;;;;;;;:9;:17;;;;;;:73;;;;15860:20;;;;;;;:32;;15885:6;15860:24;:32::i;:::-;-1:-1:-1;;;;;15837:20:0;;;;;;;:9;:20;;;;;;;:55;;;;15908:35;;;;;;;;;;15936:6;160:25:1;;148:2;133:18;;14:177;15908:35:0;;;;;;;;-1:-1:-1;15961:4:0;15643:330;;;;;:::o;15981:477::-;16110:4;;16087:10;;-1:-1:-1;;;;;16100:14:0;;;16110:4;;16100:14;;:43;;-1:-1:-1;16136:6:0;;-1:-1:-1;;;;;16118:25:0;;;16136:6;;16118:25;16100:43;16180:4;;16087:56;;-1:-1:-1;16154:11:0;;-1:-1:-1;;;;;16168:16:0;;;16180:4;;16168:16;;:48;;-1:-1:-1;16209:6:0;;-1:-1:-1;;;;;16188:28:0;;;16209:6;;16188:28;16168:48;16154:62;;16240:5;16237:91;;;16279:15;;16269:6;:25;;16261:55;;;;-1:-1:-1;;;16261:55:0;;8433:2:1;16261:55:0;;;8415:21:1;8472:2;8452:18;;;8445:30;-1:-1:-1;;;8491:18:1;;;8484:47;8548:18;;16261:55:0;8231:341:1;16261:55:0;16351:6;16348:93;;;16391:16;;16381:6;:26;;16373:56;;;;-1:-1:-1;;;16373:56:0;;8433:2:1;16373:56:0;;;8415:21:1;8472:2;8452:18;;;8445:30;-1:-1:-1;;;8491:18:1;;;8484:47;8548:18;;16373:56:0;8231:341:1;16373:56:0;16066:392;;15981:477;;;:::o;17127:201::-;17214:4;;17176;;-1:-1:-1;;;;;17214:4:0;17200:10;:18;;;;:38;;-1:-1:-1;17232:6:0;;;;17231:7;17200:38;:66;;;;-1:-1:-1;17251:15:0;;-1:-1:-1;;;17251:15:0;;;;17200:66;:120;;;;-1:-1:-1;;17307:13:0;;17297:4;17279:24;;;;:9;:24;;;;;;:41;;;17127:201::o;17340:911::-;12105:6;:13;;-1:-1:-1;;12105:13:0;12114:4;12105:13;;;17422::::1;::::0;17472:16:::1;::::0;;17486:1:::1;17472:16:::0;;;;;::::1;::::0;;-1:-1:-1;;17472:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;17472:16:0::1;17448:40;;17517:4;17499;17504:1;17499:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17499:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;17543:4:::1;::::0;17533:7;;17543:4;::::1;::::0;17533;;17543;;17533:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;17533:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;17618:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;17618:188:0;;17584:21:::1;::::0;17618:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;17690:12;;17560:21:::1;::::0;17733:4;;17760::::1;::::0;17780:15:::1;::::0;17618:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17819:18;17840:40;17866:13;17840:21;:25;;:40;;;;:::i;:::-;17819:61;;17891:20;17914:8;;17891:31;;17933:21;17957:40;17984:12;17957:22;17972:6;;17957:10;:14;;:22;;;;:::i;:40::-;17933:64;;18008:21;18032:40;18059:12;18032:22;18047:6;;18032:10;:14;;:22;;;;:::i;:40::-;18008:64;;18083:26;18112:45;18144:12;18112:27;18127:11;;18112:10;:14;;:27;;;;:::i;:45::-;18083:74;;18170:61;18182:13;18197;18212:18;18170:11;:61::i;:::-;-1:-1:-1::0;;12123:6:0;:14;;-1:-1:-1;;12123:14:0;;;-1:-1:-1;;;;;;17340:911:0:o;16470:203::-;16587:4;;16551;;-1:-1:-1;;;;;16577:14:0;;;16587:4;;16577:14;;:35;;-1:-1:-1;16608:4:0;;-1:-1:-1;;;;;16595:17:0;;;16608:4;;16595:17;16577:35;16576:61;;;;-1:-1:-1;;;;;;16618:19:0;;;;;;:11;:19;;;;;;;;16617:20;16576:61;:88;;;;-1:-1:-1;;;;;;;16642:22:0;;;;;:11;:22;;;;;;;;16641:23;;16470:203;-1:-1:-1;16470:203:0:o;16777:338::-;16844:7;16864:17;16884:45;16914:14;;16884:25;16895:13;16753:8;;;16682:87;16895:13;16884:6;;:10;:25::i;:45::-;16987:4;16969:24;;;;:9;:24;;;;;;16864:65;;-1:-1:-1;16969:39:0;;16864:65;16969:28;:39::i;:::-;16960:4;16942:24;;;;:9;:24;;;;;;;:66;;;;17024:42;;-1:-1:-1;;;;;17024:42:0;;;;;;;17056:9;160:25:1;;148:2;133:18;;14:177;17024:42:0;;;;;;;;17086:21;:6;17097:9;17086:10;:21::i;:::-;17079:28;16777:338;-1:-1:-1;;;;16777:338:0:o;4391:345::-;4477:7;4579:12;4572:5;4564:28;;;;-1:-1:-1;;;4564:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4603:9:0;4615:5;4619:1;4615;:5;:::i;18259:470::-;18382:14;;18374:59;;18354:15;;-1:-1:-1;;;;;18382:14:0;;18423:5;;18410:6;;18354:15;18374:59;18354:15;18374:59;18410:6;18382:14;18423:5;18374:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18473:14:0;;18465:59;;18353:80;;-1:-1:-1;18445:15:0;;-1:-1:-1;;;;;18473:14:0;;;;18514:5;;18501:6;;18445:15;18465:59;18445:15;18465:59;18501:6;18473:14;18514:5;18465:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18566:19:0;;18558:69;;18444:80;;-1:-1:-1;18536:17:0;;-1:-1:-1;;;;;18566:19:0;;;;18617:5;;18599:11;;18536:17;18558:69;18536:17;18558:69;18599:11;18566:19;18617:5;18558:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18535:92;;;18646:10;:24;;;;;18660:10;18646:24;:40;;;;;18674:12;18646:40;18638:83;;;;-1:-1:-1;;;18638:83:0;;5017:2:1;18638:83:0;;;4999:21:1;5056:2;5036:18;;;5029:30;5095:32;5075:18;;;5068:60;5145:18;;18638:83:0;4815:354:1;18638:83:0;18342:387;;;18259:470;;;:::o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:173::-;817:20;;-1:-1:-1;;;;;866:31:1;;856:42;;846:70;;912:1;909;902:12;846:70;749:173;;;:::o;927:254::-;995:6;1003;1056:2;1044:9;1035:7;1031:23;1027:32;1024:52;;;1072:1;1069;1062:12;1024:52;1095:29;1114:9;1095:29;:::i;:::-;1085:39;1171:2;1156:18;;;;1143:32;;-1:-1:-1;;;927:254:1:o;1378:180::-;1437:6;1490:2;1478:9;1469:7;1465:23;1461:32;1458:52;;;1506:1;1503;1496:12;1458:52;-1:-1:-1;1529:23:1;;1378:180;-1:-1:-1;1378:180:1:o;1563:328::-;1640:6;1648;1656;1709:2;1697:9;1688:7;1684:23;1680:32;1677:52;;;1725:1;1722;1715:12;1677:52;1748:29;1767:9;1748:29;:::i;:::-;1738:39;;1796:38;1830:2;1819:9;1815:18;1796:38;:::i;:::-;1786:48;;1881:2;1870:9;1866:18;1853:32;1843:42;;1563:328;;;;;:::o;2293:186::-;2352:6;2405:2;2393:9;2384:7;2380:23;2376:32;2373:52;;;2421:1;2418;2411:12;2373:52;2444:29;2463:9;2444:29;:::i;2484:160::-;2549:20;;2605:13;;2598:21;2588:32;;2578:60;;2634:1;2631;2624:12;2649:254;2714:6;2722;2775:2;2763:9;2754:7;2750:23;2746:32;2743:52;;;2791:1;2788;2781:12;2743:52;2814:29;2833:9;2814:29;:::i;:::-;2804:39;;2862:35;2893:2;2882:9;2878:18;2862:35;:::i;:::-;2852:45;;2649:254;;;;;:::o;2908:248::-;2976:6;2984;3037:2;3025:9;3016:7;3012:23;3008:32;3005:52;;;3053:1;3050;3043:12;3005:52;-1:-1:-1;;3076:23:1;;;3146:2;3131:18;;;3118:32;;-1:-1:-1;2908:248:1:o;3161:334::-;3238:6;3246;3254;3307:2;3295:9;3286:7;3282:23;3278:32;3275:52;;;3323:1;3320;3313:12;3275:52;3346:29;3365:9;3346:29;:::i;:::-;3336:39;;3394:38;3428:2;3417:9;3413:18;3394:38;:::i;:::-;3384:48;;3451:38;3485:2;3474:9;3470:18;3451:38;:::i;:::-;3441:48;;3161:334;;;;;:::o;3500:260::-;3568:6;3576;3629:2;3617:9;3608:7;3604:23;3600:32;3597:52;;;3645:1;3642;3635:12;3597:52;3668:29;3687:9;3668:29;:::i;:::-;3658:39;;3716:38;3750:2;3739:9;3735:18;3716:38;:::i;3765:248::-;3830:6;3838;3891:2;3879:9;3870:7;3866:23;3862:32;3859:52;;;3907:1;3904;3897:12;3859:52;3930:26;3946:9;3930:26;:::i;4244:356::-;4446:2;4428:21;;;4465:18;;;4458:30;4524:34;4519:2;4504:18;;4497:62;4591:2;4576:18;;4244:356::o;5174:340::-;5376:2;5358:21;;;5415:2;5395:18;;;5388:30;-1:-1:-1;;;5449:2:1;5434:18;;5427:46;5505:2;5490:18;;5174:340::o;5519:127::-;5580:10;5575:3;5571:20;5568:1;5561:31;5611:4;5608:1;5601:15;5635:4;5632:1;5625:15;5651:168;5724:9;;;5755;;5772:15;;;5766:22;;5752:37;5742:71;;5793:18;;:::i;5824:217::-;5864:1;5890;5880:132;;5934:10;5929:3;5925:20;5922:1;5915:31;5969:4;5966:1;5959:15;5997:4;5994:1;5987:15;5880:132;-1:-1:-1;6026:9:1;;5824:217::o;6801:125::-;6866:9;;;6887:10;;;6884:36;;;6900:18;;:::i;7287:128::-;7354:9;;;7375:11;;;7372:37;;;7389:18;;:::i;8709:127::-;8770:10;8765:3;8761:20;8758:1;8751:31;8801:4;8798:1;8791:15;8825:4;8822:1;8815:15;8841:980;9103:4;9151:3;9140:9;9136:19;9182:6;9171:9;9164:25;9208:2;9246:6;9241:2;9230:9;9226:18;9219:34;9289:3;9284:2;9273:9;9269:18;9262:31;9313:6;9348;9342:13;9379:6;9371;9364:22;9417:3;9406:9;9402:19;9395:26;;9456:2;9448:6;9444:15;9430:29;;9477:1;9487:195;9501:6;9498:1;9495:13;9487:195;;;9566:13;;-1:-1:-1;;;;;9562:39:1;9550:52;;9657:15;;;;9622:12;;;;9598:1;9516:9;9487:195;;;-1:-1:-1;;;;;;;9738:32:1;;;;9733:2;9718:18;;9711:60;-1:-1:-1;;;9802:3:1;9787:19;9780:35;9699:3;8841:980;-1:-1:-1;;;8841:980:1:o

Swarm Source

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