ETH Price: $2,438.77 (+3.44%)

Token

TENGRI (KUT)
 

Overview

Max Total Supply

10,000,000 KUT

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
63,470.349805979 KUT

Value
$0.00
0xcc5e5ba11775ea9a99e0af726442d4a8fc86c028
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:
TENGRI

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-08-25
*/

/* 
https://t.me/tengritoken
https://twitter.com/tengritoken
https://www.tengrigod.com
*/

// SPDX-License-Identifier: MIT

pragma solidity >=0.7.0 <0.8.0;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    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 IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function 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);
}

contract TENGRI is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "TENGRI";
    string private constant _symbol = "KUT";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private _balances;
    mapping(address => uint256) private cooldown;
    mapping(address => bool) private bots;

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant _tTotal = 100 * 1e5 * 1e9;

    uint256 public _maxWalletAmount = 2 * 1e5 * 1e9;

    // fees
    uint256 public _liquidityFeeOnBuy = 1; 
    uint256 public _marketingFeeOnBuy = 6; 

    uint256 public _liquidityFeeOnSell = 5; 
    uint256 public _marketingFeeOnSell = 20; 
    
    uint256 private _previousLiquidityFee = _liquidityFee;
    uint256 private _previousMarketingFee = _marketingFee;
    uint256 private _liquidityFee;
    uint256 private _marketingFee;
    
    struct FeeBreakdown {
        uint256 tLiquidity;
        uint256 tMarketing;
        uint256 tAmount;
    }

    address payable private dev = payable(0x3bB57d2ed377A93A49a6476dF36c2d7359D9C137);//0x3bB57d2ed377A93A49a6476dF36c2d7359D9C137
    address payable private mktg = payable(0x3bB57d2ed377A93A49a6476dF36c2d7359D9C137);
    address payable private project = payable(0x3bB57d2ed377A93A49a6476dF36c2d7359D9C137);

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;

    uint256 public swapAmount;
    uint256 private _firstBlock;

    bool public botProtection = false;
    bool private inSwap = false;
    bool public cooldownEnabled = false;
    bool public swapEnabled = false;

    event FeesUpdated(uint256 _marketingFee, uint256 _liquidityFee);

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

    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type(uint256).max);
        swapAmount = 3 * 1e4 * 1e9;
        
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[dev] = true;
        _isExcludedFromFee[mktg] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender,_msgSender(),_allowances[sender][_msgSender()].sub(amount,"ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function removeAllFee() private {
        if (_marketingFee == 0 && _liquidityFee == 0) return;
        _previousMarketingFee = _marketingFee;
        _previousLiquidityFee = _liquidityFee;

        _marketingFee = 0;
        _liquidityFee = 0;
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }
    
    function restoreAllFee() private {
        
        _liquidityFee = _previousLiquidityFee;
        _marketingFee = _previousMarketingFee;
    }

    function toggleBotProtection(bool onoff) external onlyOwner() {
        botProtection = onoff;
    }

    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, "Transfer amount must be greater than zero");

        if(!swapEnabled){
            require(from == dev); // only owner allowed to trade or add liquidity
        } 

        if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
            if (block.number <= _firstBlock.add(2)) {
                bots[to] = true;
            } 
        }
        bool takeFee = true;
        if (from != owner() && to != owner()) {
            if (cooldownEnabled) {
                if (from != address(this) && to != address(this) && from != address(uniswapV2Router) && to != address(uniswapV2Router)) {
                    require(_msgSender() == address(uniswapV2Router) || _msgSender() == uniswapV2Pair, "ERR: Uniswap only");
                }
            }
                    
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && cooldownEnabled) {
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (5 minutes);
            }
        }

        if (from != owner() && to != owner() && from != address(this) && to != address(this)) {

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                require(balanceOf(to).add(amount) <= _maxWalletAmount, "wallet balance after transfer must be less than max wallet amount");
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _liquidityFee = _liquidityFeeOnBuy;
                _marketingFee = _marketingFeeOnBuy;
            }
                
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                if (botProtection) {
                require(!bots[to] && !bots[from]);
                }
                _liquidityFee = _liquidityFeeOnSell;
                _marketingFee = _marketingFeeOnSell;
            }
            
            if (!inSwap && from != uniswapV2Pair) {

                uint256 contractTokenBalance = balanceOf(address(this));

                if (contractTokenBalance > swapAmount) {
                    swapAndLiquify(contractTokenBalance);
                }

                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                    
            }
        }

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        
        _tokenTransfer(from, to, amount, takeFee);
        restoreAllFee();
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
              address(this),
              tokenAmount,
              0, // slippage is unavoidable
              0, // slippage is unavoidable
              dev,
              block.timestamp
          );
    }
  
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 autoLPamount = _liquidityFee.mul(contractTokenBalance).div(_marketingFee.add(_liquidityFee));

        // split the contract balance into halves
        uint256 half =  autoLPamount.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(otherHalf); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = ((address(this).balance.sub(initialBalance)).mul(half)).div(otherHalf);

        addLiquidity(half, newBalance);
    }

    function sendETHToFee(uint256 amount) private {
        uint256 tfrAmt = amount.div(8);
        mktg.transfer((tfrAmt).mul(3));
        project.transfer(tfrAmt);
        dev.transfer(amount.sub(tfrAmt.mul(4)));

    }

    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function manualSwap() external {
        require(_msgSender() == dev);
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance > 0) {
            swapTokensForEth(contractBalance);
        }
    }

    function manualSwapandLiquify() public onlyOwner() {
        uint contractBalance = balanceOf(address(this));
        swapAndLiquify(contractBalance);
    }

    function setTaxRate(uint256 liqFee, uint256 mktgFee, uint256 buyliqFee, uint256 buymktgFee) public onlyOwner() {
        require ((liqFee + mktgFee) <= 8);
        _liquidityFeeOnSell = liqFee;
        _marketingFeeOnSell = mktgFee;
        _liquidityFeeOnBuy = buyliqFee;
        _marketingFeeOnBuy = buymktgFee;
    }

    function manualSend() external {
        require(_msgSender() == dev);
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            sendETHToFee(contractETHBalance);
        }
    }

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

    function _transferStandard(address sender, address recipient, uint256 amount) private {
        FeeBreakdown memory fees;
        fees.tMarketing = amount.mul(_marketingFee).div(100);
        fees.tLiquidity = amount.mul(_liquidityFee).div(100);
        
        fees.tAmount = amount.sub(fees.tMarketing).sub(fees.tLiquidity);
        
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(fees.tAmount);
        _balances[address(this)] = _balances[address(this)].add(fees.tMarketing.add(fees.tLiquidity));
        
        emit Transfer(sender, recipient, fees.tAmount);
    }
    
    receive() external payable {}

    function setMaxWalletAmount(uint256 maxWalletAmount) external {
        require(_msgSender() == dev);
        require(maxWalletAmount > _tTotal.div(200), "Amount must be greater than 0.5% of supply");
        require(maxWalletAmount <= _tTotal, "Amount must be less than or equal to totalSupply");
        _maxWalletAmount = maxWalletAmount;
    }

    function setMktgaddress(address payable walletAddress) external {
        require(_msgSender() == dev);
        mktg = walletAddress;
    }

    function setprojectaddress(address payable walletAddress) external {
        require(_msgSender() == dev);
        project = walletAddress;
    }

    function setSwapAmount(uint256 _swapAmount) external {
        require(_msgSender() == dev);
        swapAmount = _swapAmount;
    }

    function blacklistmany(address[] memory bots_) external {
        for (uint i = 0; i < bots_.length; i++) {
          bots[bots_[i]] = true;
        }
    }

    function removeFromBlacklist (address _address) external {
        require(_msgSender() == dev);
        bots[_address] = false;
    }
    
    function getIsBlacklistedStatus (address _address) external view returns (bool) {
        return bots[_address];
    }

    function openTrading() external onlyOwner() {
        require(!swapEnabled, "trading is already open");
        _firstBlock = block.number;
        cooldownEnabled = true;
        swapEnabled = true;
    }

    function claimETH (address walletaddress) external {
        require(_msgSender() == dev);
        payable(walletaddress).transfer(address(this).balance);
    }

    function claimAltTokens(IERC20 tokenAddress, address walletaddress) external {
        require(_msgSender() == dev);
        tokenAddress.transfer(walletaddress, tokenAddress.balanceOf(address(this)));
    }


}

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":false,"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"FeesUpdated","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":"_liquidityFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blacklistmany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"botProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenAddress","type":"address"},{"internalType":"address","name":"walletaddress","type":"address"}],"name":"claimAltTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletaddress","type":"address"}],"name":"claimETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getIsBlacklistedStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapandLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"walletAddress","type":"address"}],"name":"setMktgaddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liqFee","type":"uint256"},{"internalType":"uint256","name":"mktgFee","type":"uint256"},{"internalType":"uint256","name":"buyliqFee","type":"uint256"},{"internalType":"uint256","name":"buymktgFee","type":"uint256"}],"name":"setTaxRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"walletAddress","type":"address"}],"name":"setprojectaddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"toggleBotProtection","outputs":[],"stateMutability":"nonpayable","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405265b5e620f48000600755600160085560066009556005600a556014600b55600e54600c55600f54600d5560108054733bb57d2ed377a93a49a6476df36c2d7359d9c1376001600160a01b03199182168117909255601180548216831790556012805490911690911790556017805463ffffffff191690553480156200008857600080fd5b506000620000956200044d565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179182905590620001289030906001600160a01b0316662386f26fc1000062000451565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200016257600080fd5b505afa15801562000177573d6000803e3d6000fd5b505050506040513d60208110156200018e57600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b158015620001df57600080fd5b505afa158015620001f4573d6000803e3d6000fd5b505050506040513d60208110156200020b57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b1580156200025e57600080fd5b505af115801562000273573d6000803e3d6000fd5b505050506040513d60208110156200028a57600080fd5b5051601480546001600160a01b0319166001600160a01b0392831617908190556013546040805163095ea7b360e01b81529184166004830152600019602483015251919092169163095ea7b39160448083019260209291908290030181600087803b158015620002f957600080fd5b505af11580156200030e573d6000803e3d6000fd5b505050506040513d60208110156200032557600080fd5b5050651b48eb57e000601555662386f26fc1000060026000620003476200044d565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600160066000620003816200054160201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556010548216815260069093528183208054851660019081179091556011549091168352818320805485168217905530835291208054909216179055620003f46200044d565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc100006040518082815260200191505060405180910390a35062000550565b3390565b6001600160a01b038316620004985760405162461bcd60e51b815260040180806020018281038252602481526020018062002a156024913960400191505060405180910390fd5b6001600160a01b038216620004df5760405162461bcd60e51b8152600401808060200182810382526022815260200180620029f36022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000546001600160a01b031690565b61249380620005606000396000f3fe6080604052600436106102345760003560e01c8063715018a61161012e578063bdf4f831116100ab578063dd62ed3e1161006f578063dd62ed3e1461084c578063e581dc7114610887578063e632313c1461089c578063f2fde38b146108c6578063f4293890146108f95761023b565b8063bdf4f831146107a5578063c4066f2f146107d1578063c9567bf9146107e6578063d3dc3ffb146107fb578063d52dfc14146108375761023b565b8063a0968680116100f2578063a0968680146106dc578063a9059cbb1461070f578063a985ceef14610748578063b572a8f81461075d578063bb58a973146107905761023b565b8063715018a6146105ba5780637e66c0b9146105cf5780638cf01f6e146106025780638da5cb5b146106b257806395d89b41146106c75761023b565b80633c0a73ae116101bc5780635932ead1116101805780635932ead11461051c57806361bb0a0a146105485780636c0a24eb1461055d5780636ddd17131461057257806370a08231146105875761023b565b80633c0a73ae146104535780633f9b76071461046857806349bd5a5e146104a357806351bc3c85146104d4578063537df3b6146104e95761023b565b806323b872dd1161020357806323b872dd14610371578063273123b7146103b457806327a14fc2146103e95780632e8fa82114610413578063313ce567146104285761023b565b806306fdde0314610240578063084e4f8a146102ca578063095ea7b31461031157806318160ddd1461034a5761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561090e565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028f578181015183820152602001610277565b50505050905090810190601f1680156102bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d657600080fd5b506102fd600480360360208110156102ed57600080fd5b50356001600160a01b031661092e565b604080519115158252519081900360200190f35b34801561031d57600080fd5b506102fd6004803603604081101561033457600080fd5b506001600160a01b03813516906020013561094c565b34801561035657600080fd5b5061035f61096a565b60408051918252519081900360200190f35b34801561037d57600080fd5b506102fd6004803603606081101561039457600080fd5b506001600160a01b03813581169160208101359091169060400135610975565b3480156103c057600080fd5b506103e7600480360360208110156103d757600080fd5b50356001600160a01b03166109fc565b005b3480156103f557600080fd5b506103e76004803603602081101561040c57600080fd5b5035610a75565b34801561041f57600080fd5b5061035f610b36565b34801561043457600080fd5b5061043d610b3c565b6040805160ff9092168252519081900360200190f35b34801561045f57600080fd5b5061035f610b41565b34801561047457600080fd5b506103e76004803603604081101561048b57600080fd5b506001600160a01b0381358116916020013516610b47565b3480156104af57600080fd5b506104b8610c76565b604080516001600160a01b039092168252519081900360200190f35b3480156104e057600080fd5b506103e7610c85565b3480156104f557600080fd5b506103e76004803603602081101561050c57600080fd5b50356001600160a01b0316610ccb565b34801561052857600080fd5b506103e76004803603602081101561053f57600080fd5b50351515610cf2565b34801561055457600080fd5b506103e7610d66565b34801561056957600080fd5b5061035f610dd4565b34801561057e57600080fd5b506102fd610dda565b34801561059357600080fd5b5061035f600480360360208110156105aa57600080fd5b50356001600160a01b0316610dea565b3480156105c657600080fd5b506103e7610e05565b3480156105db57600080fd5b506103e7600480360360208110156105f257600080fd5b50356001600160a01b0316610ea7565b34801561060e57600080fd5b506103e76004803603602081101561062557600080fd5b81019060208101813564010000000081111561064057600080fd5b82018360208201111561065257600080fd5b8035906020019184602083028401116401000000008311171561067457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610f07945050505050565b3480156106be57600080fd5b506104b8610f5f565b3480156106d357600080fd5b50610255610f6e565b3480156106e857600080fd5b506103e7600480360360208110156106ff57600080fd5b50356001600160a01b0316610f8b565b34801561071b57600080fd5b506102fd6004803603604081101561073257600080fd5b506001600160a01b038135169060200135610fd4565b34801561075457600080fd5b506102fd610fe8565b34801561076957600080fd5b506103e76004803603602081101561078057600080fd5b50356001600160a01b0316610ff7565b34801561079c57600080fd5b506102fd611040565b3480156107b157600080fd5b506103e7600480360360208110156107c857600080fd5b50351515611049565b3480156107dd57600080fd5b5061035f6110b4565b3480156107f257600080fd5b506103e76110ba565b34801561080757600080fd5b506103e76004803603608081101561081e57600080fd5b5080359060208101359060408101359060600135611197565b34801561084357600080fd5b5061035f611213565b34801561085857600080fd5b5061035f6004803603604081101561086f57600080fd5b506001600160a01b0381358116916020013516611219565b34801561089357600080fd5b5061035f611244565b3480156108a857600080fd5b506103e7600480360360208110156108bf57600080fd5b503561124a565b3480156108d257600080fd5b506103e7600480360360208110156108e957600080fd5b50356001600160a01b0316611276565b34801561090557600080fd5b506103e761136e565b60408051808201909152600681526554454e47524960d01b602082015290565b6001600160a01b031660009081526004602052604090205460ff1690565b60006109606109596113a5565b84846113a9565b5060015b92915050565b662386f26fc1000090565b6000610982848484611495565b6109f28461098e6113a5565b6109ed85604051806060016040528060288152602001612374602891396001600160a01b038a166000908152600560205260408120906109cc6113a5565b6001600160a01b031681526020810191909152604001600020549190611a7e565b6113a9565b5060019392505050565b610a046113a5565b6000546001600160a01b03908116911614610a54576040805162461bcd60e51b8152602060048201819052602482015260008051602061239c833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600460205260409020805460ff19169055565b6010546001600160a01b0316610a896113a5565b6001600160a01b031614610a9c57600080fd5b610aae662386f26fc1000060c8611b15565b8111610aeb5760405162461bcd60e51b815260040180806020018281038252602a815260200180612329602a913960400191505060405180910390fd5b662386f26fc10000811115610b315760405162461bcd60e51b81526004018080602001828103825260308152602001806123e56030913960400191505060405180910390fd5b600755565b60155481565b600990565b60085481565b6010546001600160a01b0316610b5b6113a5565b6001600160a01b031614610b6e57600080fd5b816001600160a01b031663a9059cbb82846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610bcb57600080fd5b505afa158015610bdf573d6000803e3d6000fd5b505050506040513d6020811015610bf557600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015610c4657600080fd5b505af1158015610c5a573d6000803e3d6000fd5b505050506040513d6020811015610c7057600080fd5b50505050565b6014546001600160a01b031681565b6010546001600160a01b0316610c996113a5565b6001600160a01b031614610cac57600080fd5b6000610cb730610dea565b90508015610cc857610cc881611b5e565b50565b6010546001600160a01b0316610cdf6113a5565b6001600160a01b031614610a5457600080fd5b610cfa6113a5565b6000546001600160a01b03908116911614610d4a576040805162461bcd60e51b8152602060048201819052602482015260008051602061239c833981519152604482015290519081900360640190fd5b60178054911515620100000262ff000019909216919091179055565b610d6e6113a5565b6000546001600160a01b03908116911614610dbe576040805162461bcd60e51b8152602060048201819052602482015260008051602061239c833981519152604482015290519081900360640190fd5b6000610dc930610dea565b9050610cc881611d27565b60075481565b6017546301000000900460ff1681565b6001600160a01b031660009081526002602052604090205490565b610e0d6113a5565b6000546001600160a01b03908116911614610e5d576040805162461bcd60e51b8152602060048201819052602482015260008051602061239c833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6010546001600160a01b0316610ebb6113a5565b6001600160a01b031614610ece57600080fd5b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610f03573d6000803e3d6000fd5b5050565b60005b8151811015610f0357600160046000848481518110610f2557fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101610f0a565b6000546001600160a01b031690565b60408051808201909152600381526212d55560ea1b602082015290565b6010546001600160a01b0316610f9f6113a5565b6001600160a01b031614610fb257600080fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000610960610fe16113a5565b8484611495565b60175462010000900460ff1681565b6010546001600160a01b031661100b6113a5565b6001600160a01b03161461101e57600080fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b60175460ff1681565b6110516113a5565b6000546001600160a01b039081169116146110a1576040805162461bcd60e51b8152602060048201819052602482015260008051602061239c833981519152604482015290519081900360640190fd5b6017805460ff1916911515919091179055565b600b5481565b6110c26113a5565b6000546001600160a01b03908116911614611112576040805162461bcd60e51b8152602060048201819052602482015260008051602061239c833981519152604482015290519081900360640190fd5b6017546301000000900460ff1615611171576040805162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015290519081900360640190fd5b436016556017805463ff0000001962ff0000199091166201000017166301000000179055565b61119f6113a5565b6000546001600160a01b039081169116146111ef576040805162461bcd60e51b8152602060048201819052602482015260008051602061239c833981519152604482015290519081900360640190fd5b600883850111156111ff57600080fd5b600a93909355600b91909155600855600955565b600a5481565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60095481565b6010546001600160a01b031661125e6113a5565b6001600160a01b03161461127157600080fd5b601555565b61127e6113a5565b6000546001600160a01b039081169116146112ce576040805162461bcd60e51b8152602060048201819052602482015260008051602061239c833981519152604482015290519081900360640190fd5b6001600160a01b0381166113135760405162461bcd60e51b81526004018080602001828103825260268152602001806122a06026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6010546001600160a01b03166113826113a5565b6001600160a01b03161461139557600080fd5b478015610cc857610cc881611dae565b3390565b6001600160a01b0383166113ee5760405162461bcd60e51b815260040180806020018281038252602481526020018061243a6024913960400191505060405180910390fd5b6001600160a01b0382166114335760405162461bcd60e51b81526004018080602001828103825260228152602001806122c66022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166114da5760405162461bcd60e51b81526004018080602001828103825260258152602001806124156025913960400191505060405180910390fd5b6001600160a01b03821661151f5760405162461bcd60e51b815260040180806020018281038252602381526020018061227d6023913960400191505060405180910390fd5b6000811161155e5760405162461bcd60e51b81526004018080602001828103825260298152602001806123bc6029913960400191505060405180910390fd5b6017546301000000900460ff16611589576010546001600160a01b0384811691161461158957600080fd5b6014546001600160a01b0384811691161480156115b457506013546001600160a01b03838116911614155b156115f1576016546115c7906002611e8d565b43116115f1576001600160a01b0382166000908152600460205260409020805460ff191660011790555b60016115fb610f5f565b6001600160a01b0316846001600160a01b031614158015611635575061161f610f5f565b6001600160a01b0316836001600160a01b031614155b156117b65760175462010000900460ff161561172e576001600160a01b038416301480159061166d57506001600160a01b0383163014155b801561168757506013546001600160a01b03858116911614155b80156116a157506013546001600160a01b03848116911614155b1561172e576013546001600160a01b03166116ba6113a5565b6001600160a01b031614806116e957506014546001600160a01b03166116de6113a5565b6001600160a01b0316145b61172e576040805162461bcd60e51b81526020600482015260116024820152704552523a20556e6973776170206f6e6c7960781b604482015290519081900360640190fd5b6014546001600160a01b03858116911614801561175957506013546001600160a01b03848116911614155b801561176d575060175462010000900460ff165b156117b6576001600160a01b038316600090815260036020526040902054421161179657600080fd5b6001600160a01b038316600090815260036020526040902061012c420190555b6117be610f5f565b6001600160a01b0316846001600160a01b0316141580156117f857506117e2610f5f565b6001600160a01b0316836001600160a01b031614155b801561180d57506001600160a01b0384163014155b801561182257506001600160a01b0383163014155b15611a22576014546001600160a01b03858116911614801561185257506013546001600160a01b03848116911614155b801561187757506001600160a01b03841660009081526006602052604090205460ff16155b801561189c57506001600160a01b03831660009081526006602052604090205460ff16155b156118f4576007546118b7836118b186610dea565b90611e8d565b11156118f45760405162461bcd60e51b81526004018080602001828103825260418152602001806122e86041913960600191505060405180910390fd5b6014546001600160a01b03858116911614801561191f57506013546001600160a01b03848116911614155b1561193157600854600e55600954600f555b6014546001600160a01b03848116911614801561195c57506013546001600160a01b03858116911614155b156119c45760175460ff16156119b7576001600160a01b03831660009081526004602052604090205460ff161580156119ae57506001600160a01b03841660009081526004602052604090205460ff16155b6119b757600080fd5b600a54600e55600b54600f555b601754610100900460ff161580156119ea57506014546001600160a01b03858116911614155b15611a225760006119fa30610dea565b9050601554811115611a0f57611a0f81611d27565b478015611a1f57611a1f47611dae565b50505b6001600160a01b03841660009081526006602052604090205460ff1680611a6157506001600160a01b03831660009081526006602052604090205460ff165b15611a6a575060005b611a7684848484611ee7565b610c70611eff565b60008184841115611b0d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ad2578181015183820152602001611aba565b50505050905090810190601f168015611aff5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000611b5783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f0d565b9392505050565b6017805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611b9c57fe5b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611bf057600080fd5b505afa158015611c04573d6000803e3d6000fd5b505050506040513d6020811015611c1a57600080fd5b5051815182906001908110611c2b57fe5b6001600160a01b039283166020918202929092010152601354611c5191309116846113a9565b60135460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b83811015611cd7578181015183820152602001611cbf565b505050509050019650505050505050600060405180830381600087803b158015611d0057600080fd5b505af1158015611d14573d6000803e3d6000fd5b50506017805461ff001916905550505050565b6017805461ff001916610100179055600e54600f54600091611d5f91611d4c91611e8d565b600e54611d599085611f72565b90611b15565b90506000611d6e826002611b15565b90506000611d7c8483611fcb565b905047611d8882611b5e565b6000611da283611d5986611d9c4787611fcb565b90611f72565b9050611d14848261200d565b6000611dbb826008611b15565b6011549091506001600160a01b03166108fc611dd8836003611f72565b6040518115909202916000818181858888f19350505050158015611e00573d6000803e3d6000fd5b506012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611e3b573d6000803e3d6000fd5b506010546001600160a01b03166108fc611e60611e59846004611f72565b8590611fcb565b6040518115909202916000818181858888f19350505050158015611e88573d6000803e3d6000fd5b505050565b600082820183811015611b57576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b80611ef457611ef46120c5565b611a768484846120f7565b600c54600e55600d54600f55565b60008183611f5c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611ad2578181015183820152602001611aba565b506000838581611f6857fe5b0495945050505050565b600082611f8157506000610964565b82820282848281611f8e57fe5b0414611b575760405162461bcd60e51b81526004018080602001828103825260218152602001806123536021913960400191505060405180910390fd5b6000611b5783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a7e565b6013546120259030906001600160a01b0316846113a9565b6013546010546040805163f305d71960e01b81523060048201526024810186905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991849160c48082019260609290919082900301818588803b15801561209a57600080fd5b505af11580156120ae573d6000803e3d6000fd5b50505050506040513d6060811015610c7057600080fd5b600f541580156120d55750600e54155b156120df576120f5565b600f8054600d55600e8054600c55600091829055555b565b6120ff61225b565b6121196064611d59600f5485611f7290919063ffffffff16565b6020820152600e5461213390606490611d59908590611f72565b8082526020820151612151919061214b908590611fcb565b90611fcb565b6040808301919091526001600160a01b03851660009081526002602052205461217a9083611fcb565b6001600160a01b038086166000908152600260205260408082209390935583830151918616815291909120546121af91611e8d565b6001600160a01b0384166000908152600260209081526040909120919091558151908201516121f8916121e29190611e8d565b3060009081526002602052604090205490611e8d565b306000908152600260209081526040918290209290925582810151815190815290516001600160a01b0386811693908816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a350505050565b6040518060600160405280600081526020016000815260200160008152509056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737377616c6c65742062616c616e6365206166746572207472616e73666572206d757374206265206c657373207468616e206d61782077616c6c657420616d6f756e74416d6f756e74206d7573742062652067726561746572207468616e20302e3525206f6620737570706c79536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f416d6f756e74206d757374206265206c657373207468616e206f7220657175616c20746f20746f74616c537570706c7945524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a2646970667358221220a6a1085e7e99313450fbf587f38e79de723c7f7ae80c734cd7955c2e83dfcff964736f6c6343000706003345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373

Deployed Bytecode

0x6080604052600436106102345760003560e01c8063715018a61161012e578063bdf4f831116100ab578063dd62ed3e1161006f578063dd62ed3e1461084c578063e581dc7114610887578063e632313c1461089c578063f2fde38b146108c6578063f4293890146108f95761023b565b8063bdf4f831146107a5578063c4066f2f146107d1578063c9567bf9146107e6578063d3dc3ffb146107fb578063d52dfc14146108375761023b565b8063a0968680116100f2578063a0968680146106dc578063a9059cbb1461070f578063a985ceef14610748578063b572a8f81461075d578063bb58a973146107905761023b565b8063715018a6146105ba5780637e66c0b9146105cf5780638cf01f6e146106025780638da5cb5b146106b257806395d89b41146106c75761023b565b80633c0a73ae116101bc5780635932ead1116101805780635932ead11461051c57806361bb0a0a146105485780636c0a24eb1461055d5780636ddd17131461057257806370a08231146105875761023b565b80633c0a73ae146104535780633f9b76071461046857806349bd5a5e146104a357806351bc3c85146104d4578063537df3b6146104e95761023b565b806323b872dd1161020357806323b872dd14610371578063273123b7146103b457806327a14fc2146103e95780632e8fa82114610413578063313ce567146104285761023b565b806306fdde0314610240578063084e4f8a146102ca578063095ea7b31461031157806318160ddd1461034a5761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561090e565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561028f578181015183820152602001610277565b50505050905090810190601f1680156102bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102d657600080fd5b506102fd600480360360208110156102ed57600080fd5b50356001600160a01b031661092e565b604080519115158252519081900360200190f35b34801561031d57600080fd5b506102fd6004803603604081101561033457600080fd5b506001600160a01b03813516906020013561094c565b34801561035657600080fd5b5061035f61096a565b60408051918252519081900360200190f35b34801561037d57600080fd5b506102fd6004803603606081101561039457600080fd5b506001600160a01b03813581169160208101359091169060400135610975565b3480156103c057600080fd5b506103e7600480360360208110156103d757600080fd5b50356001600160a01b03166109fc565b005b3480156103f557600080fd5b506103e76004803603602081101561040c57600080fd5b5035610a75565b34801561041f57600080fd5b5061035f610b36565b34801561043457600080fd5b5061043d610b3c565b6040805160ff9092168252519081900360200190f35b34801561045f57600080fd5b5061035f610b41565b34801561047457600080fd5b506103e76004803603604081101561048b57600080fd5b506001600160a01b0381358116916020013516610b47565b3480156104af57600080fd5b506104b8610c76565b604080516001600160a01b039092168252519081900360200190f35b3480156104e057600080fd5b506103e7610c85565b3480156104f557600080fd5b506103e76004803603602081101561050c57600080fd5b50356001600160a01b0316610ccb565b34801561052857600080fd5b506103e76004803603602081101561053f57600080fd5b50351515610cf2565b34801561055457600080fd5b506103e7610d66565b34801561056957600080fd5b5061035f610dd4565b34801561057e57600080fd5b506102fd610dda565b34801561059357600080fd5b5061035f600480360360208110156105aa57600080fd5b50356001600160a01b0316610dea565b3480156105c657600080fd5b506103e7610e05565b3480156105db57600080fd5b506103e7600480360360208110156105f257600080fd5b50356001600160a01b0316610ea7565b34801561060e57600080fd5b506103e76004803603602081101561062557600080fd5b81019060208101813564010000000081111561064057600080fd5b82018360208201111561065257600080fd5b8035906020019184602083028401116401000000008311171561067457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610f07945050505050565b3480156106be57600080fd5b506104b8610f5f565b3480156106d357600080fd5b50610255610f6e565b3480156106e857600080fd5b506103e7600480360360208110156106ff57600080fd5b50356001600160a01b0316610f8b565b34801561071b57600080fd5b506102fd6004803603604081101561073257600080fd5b506001600160a01b038135169060200135610fd4565b34801561075457600080fd5b506102fd610fe8565b34801561076957600080fd5b506103e76004803603602081101561078057600080fd5b50356001600160a01b0316610ff7565b34801561079c57600080fd5b506102fd611040565b3480156107b157600080fd5b506103e7600480360360208110156107c857600080fd5b50351515611049565b3480156107dd57600080fd5b5061035f6110b4565b3480156107f257600080fd5b506103e76110ba565b34801561080757600080fd5b506103e76004803603608081101561081e57600080fd5b5080359060208101359060408101359060600135611197565b34801561084357600080fd5b5061035f611213565b34801561085857600080fd5b5061035f6004803603604081101561086f57600080fd5b506001600160a01b0381358116916020013516611219565b34801561089357600080fd5b5061035f611244565b3480156108a857600080fd5b506103e7600480360360208110156108bf57600080fd5b503561124a565b3480156108d257600080fd5b506103e7600480360360208110156108e957600080fd5b50356001600160a01b0316611276565b34801561090557600080fd5b506103e761136e565b60408051808201909152600681526554454e47524960d01b602082015290565b6001600160a01b031660009081526004602052604090205460ff1690565b60006109606109596113a5565b84846113a9565b5060015b92915050565b662386f26fc1000090565b6000610982848484611495565b6109f28461098e6113a5565b6109ed85604051806060016040528060288152602001612374602891396001600160a01b038a166000908152600560205260408120906109cc6113a5565b6001600160a01b031681526020810191909152604001600020549190611a7e565b6113a9565b5060019392505050565b610a046113a5565b6000546001600160a01b03908116911614610a54576040805162461bcd60e51b8152602060048201819052602482015260008051602061239c833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600460205260409020805460ff19169055565b6010546001600160a01b0316610a896113a5565b6001600160a01b031614610a9c57600080fd5b610aae662386f26fc1000060c8611b15565b8111610aeb5760405162461bcd60e51b815260040180806020018281038252602a815260200180612329602a913960400191505060405180910390fd5b662386f26fc10000811115610b315760405162461bcd60e51b81526004018080602001828103825260308152602001806123e56030913960400191505060405180910390fd5b600755565b60155481565b600990565b60085481565b6010546001600160a01b0316610b5b6113a5565b6001600160a01b031614610b6e57600080fd5b816001600160a01b031663a9059cbb82846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610bcb57600080fd5b505afa158015610bdf573d6000803e3d6000fd5b505050506040513d6020811015610bf557600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015610c4657600080fd5b505af1158015610c5a573d6000803e3d6000fd5b505050506040513d6020811015610c7057600080fd5b50505050565b6014546001600160a01b031681565b6010546001600160a01b0316610c996113a5565b6001600160a01b031614610cac57600080fd5b6000610cb730610dea565b90508015610cc857610cc881611b5e565b50565b6010546001600160a01b0316610cdf6113a5565b6001600160a01b031614610a5457600080fd5b610cfa6113a5565b6000546001600160a01b03908116911614610d4a576040805162461bcd60e51b8152602060048201819052602482015260008051602061239c833981519152604482015290519081900360640190fd5b60178054911515620100000262ff000019909216919091179055565b610d6e6113a5565b6000546001600160a01b03908116911614610dbe576040805162461bcd60e51b8152602060048201819052602482015260008051602061239c833981519152604482015290519081900360640190fd5b6000610dc930610dea565b9050610cc881611d27565b60075481565b6017546301000000900460ff1681565b6001600160a01b031660009081526002602052604090205490565b610e0d6113a5565b6000546001600160a01b03908116911614610e5d576040805162461bcd60e51b8152602060048201819052602482015260008051602061239c833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6010546001600160a01b0316610ebb6113a5565b6001600160a01b031614610ece57600080fd5b6040516001600160a01b038216904780156108fc02916000818181858888f19350505050158015610f03573d6000803e3d6000fd5b5050565b60005b8151811015610f0357600160046000848481518110610f2557fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101610f0a565b6000546001600160a01b031690565b60408051808201909152600381526212d55560ea1b602082015290565b6010546001600160a01b0316610f9f6113a5565b6001600160a01b031614610fb257600080fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000610960610fe16113a5565b8484611495565b60175462010000900460ff1681565b6010546001600160a01b031661100b6113a5565b6001600160a01b03161461101e57600080fd5b601280546001600160a01b0319166001600160a01b0392909216919091179055565b60175460ff1681565b6110516113a5565b6000546001600160a01b039081169116146110a1576040805162461bcd60e51b8152602060048201819052602482015260008051602061239c833981519152604482015290519081900360640190fd5b6017805460ff1916911515919091179055565b600b5481565b6110c26113a5565b6000546001600160a01b03908116911614611112576040805162461bcd60e51b8152602060048201819052602482015260008051602061239c833981519152604482015290519081900360640190fd5b6017546301000000900460ff1615611171576040805162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015290519081900360640190fd5b436016556017805463ff0000001962ff0000199091166201000017166301000000179055565b61119f6113a5565b6000546001600160a01b039081169116146111ef576040805162461bcd60e51b8152602060048201819052602482015260008051602061239c833981519152604482015290519081900360640190fd5b600883850111156111ff57600080fd5b600a93909355600b91909155600855600955565b600a5481565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60095481565b6010546001600160a01b031661125e6113a5565b6001600160a01b03161461127157600080fd5b601555565b61127e6113a5565b6000546001600160a01b039081169116146112ce576040805162461bcd60e51b8152602060048201819052602482015260008051602061239c833981519152604482015290519081900360640190fd5b6001600160a01b0381166113135760405162461bcd60e51b81526004018080602001828103825260268152602001806122a06026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6010546001600160a01b03166113826113a5565b6001600160a01b03161461139557600080fd5b478015610cc857610cc881611dae565b3390565b6001600160a01b0383166113ee5760405162461bcd60e51b815260040180806020018281038252602481526020018061243a6024913960400191505060405180910390fd5b6001600160a01b0382166114335760405162461bcd60e51b81526004018080602001828103825260228152602001806122c66022913960400191505060405180910390fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166114da5760405162461bcd60e51b81526004018080602001828103825260258152602001806124156025913960400191505060405180910390fd5b6001600160a01b03821661151f5760405162461bcd60e51b815260040180806020018281038252602381526020018061227d6023913960400191505060405180910390fd5b6000811161155e5760405162461bcd60e51b81526004018080602001828103825260298152602001806123bc6029913960400191505060405180910390fd5b6017546301000000900460ff16611589576010546001600160a01b0384811691161461158957600080fd5b6014546001600160a01b0384811691161480156115b457506013546001600160a01b03838116911614155b156115f1576016546115c7906002611e8d565b43116115f1576001600160a01b0382166000908152600460205260409020805460ff191660011790555b60016115fb610f5f565b6001600160a01b0316846001600160a01b031614158015611635575061161f610f5f565b6001600160a01b0316836001600160a01b031614155b156117b65760175462010000900460ff161561172e576001600160a01b038416301480159061166d57506001600160a01b0383163014155b801561168757506013546001600160a01b03858116911614155b80156116a157506013546001600160a01b03848116911614155b1561172e576013546001600160a01b03166116ba6113a5565b6001600160a01b031614806116e957506014546001600160a01b03166116de6113a5565b6001600160a01b0316145b61172e576040805162461bcd60e51b81526020600482015260116024820152704552523a20556e6973776170206f6e6c7960781b604482015290519081900360640190fd5b6014546001600160a01b03858116911614801561175957506013546001600160a01b03848116911614155b801561176d575060175462010000900460ff165b156117b6576001600160a01b038316600090815260036020526040902054421161179657600080fd5b6001600160a01b038316600090815260036020526040902061012c420190555b6117be610f5f565b6001600160a01b0316846001600160a01b0316141580156117f857506117e2610f5f565b6001600160a01b0316836001600160a01b031614155b801561180d57506001600160a01b0384163014155b801561182257506001600160a01b0383163014155b15611a22576014546001600160a01b03858116911614801561185257506013546001600160a01b03848116911614155b801561187757506001600160a01b03841660009081526006602052604090205460ff16155b801561189c57506001600160a01b03831660009081526006602052604090205460ff16155b156118f4576007546118b7836118b186610dea565b90611e8d565b11156118f45760405162461bcd60e51b81526004018080602001828103825260418152602001806122e86041913960600191505060405180910390fd5b6014546001600160a01b03858116911614801561191f57506013546001600160a01b03848116911614155b1561193157600854600e55600954600f555b6014546001600160a01b03848116911614801561195c57506013546001600160a01b03858116911614155b156119c45760175460ff16156119b7576001600160a01b03831660009081526004602052604090205460ff161580156119ae57506001600160a01b03841660009081526004602052604090205460ff16155b6119b757600080fd5b600a54600e55600b54600f555b601754610100900460ff161580156119ea57506014546001600160a01b03858116911614155b15611a225760006119fa30610dea565b9050601554811115611a0f57611a0f81611d27565b478015611a1f57611a1f47611dae565b50505b6001600160a01b03841660009081526006602052604090205460ff1680611a6157506001600160a01b03831660009081526006602052604090205460ff165b15611a6a575060005b611a7684848484611ee7565b610c70611eff565b60008184841115611b0d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ad2578181015183820152602001611aba565b50505050905090810190601f168015611aff5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000611b5783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f0d565b9392505050565b6017805461ff0019166101001790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611b9c57fe5b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611bf057600080fd5b505afa158015611c04573d6000803e3d6000fd5b505050506040513d6020811015611c1a57600080fd5b5051815182906001908110611c2b57fe5b6001600160a01b039283166020918202929092010152601354611c5191309116846113a9565b60135460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b83811015611cd7578181015183820152602001611cbf565b505050509050019650505050505050600060405180830381600087803b158015611d0057600080fd5b505af1158015611d14573d6000803e3d6000fd5b50506017805461ff001916905550505050565b6017805461ff001916610100179055600e54600f54600091611d5f91611d4c91611e8d565b600e54611d599085611f72565b90611b15565b90506000611d6e826002611b15565b90506000611d7c8483611fcb565b905047611d8882611b5e565b6000611da283611d5986611d9c4787611fcb565b90611f72565b9050611d14848261200d565b6000611dbb826008611b15565b6011549091506001600160a01b03166108fc611dd8836003611f72565b6040518115909202916000818181858888f19350505050158015611e00573d6000803e3d6000fd5b506012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611e3b573d6000803e3d6000fd5b506010546001600160a01b03166108fc611e60611e59846004611f72565b8590611fcb565b6040518115909202916000818181858888f19350505050158015611e88573d6000803e3d6000fd5b505050565b600082820183811015611b57576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b80611ef457611ef46120c5565b611a768484846120f7565b600c54600e55600d54600f55565b60008183611f5c5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611ad2578181015183820152602001611aba565b506000838581611f6857fe5b0495945050505050565b600082611f8157506000610964565b82820282848281611f8e57fe5b0414611b575760405162461bcd60e51b81526004018080602001828103825260218152602001806123536021913960400191505060405180910390fd5b6000611b5783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a7e565b6013546120259030906001600160a01b0316846113a9565b6013546010546040805163f305d71960e01b81523060048201526024810186905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991849160c48082019260609290919082900301818588803b15801561209a57600080fd5b505af11580156120ae573d6000803e3d6000fd5b50505050506040513d6060811015610c7057600080fd5b600f541580156120d55750600e54155b156120df576120f5565b600f8054600d55600e8054600c55600091829055555b565b6120ff61225b565b6121196064611d59600f5485611f7290919063ffffffff16565b6020820152600e5461213390606490611d59908590611f72565b8082526020820151612151919061214b908590611fcb565b90611fcb565b6040808301919091526001600160a01b03851660009081526002602052205461217a9083611fcb565b6001600160a01b038086166000908152600260205260408082209390935583830151918616815291909120546121af91611e8d565b6001600160a01b0384166000908152600260209081526040909120919091558151908201516121f8916121e29190611e8d565b3060009081526002602052604090205490611e8d565b306000908152600260209081526040918290209290925582810151815190815290516001600160a01b0386811693908816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a350505050565b6040518060600160405280600081526020016000815260200160008152509056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737377616c6c65742062616c616e6365206166746572207472616e73666572206d757374206265206c657373207468616e206d61782077616c6c657420616d6f756e74416d6f756e74206d7573742062652067726561746572207468616e20302e3525206f6620737570706c79536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f416d6f756e74206d757374206265206c657373207468616e206f7220657175616c20746f20746f74616c537570706c7945524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a2646970667358221220a6a1085e7e99313450fbf587f38e79de723c7f7ae80c734cd7955c2e83dfcff964736f6c63430007060033

Deployed Bytecode Sourcemap

7146:14040:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9870:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20452:120;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20452:120:0;-1:-1:-1;;;;;20452:120:0;;:::i;:::-;;;;;;;;;;;;;;;;;;10713:163;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10713:163:0;;;;;;;;:::i;10147:97::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;10884:312;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10884:312:0;;;;;;;;;;;;;;;;;:::i;17279:88::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17279:88:0;-1:-1:-1;;;;;17279:88:0;;:::i;:::-;;19326:352;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19326:352:0;;:::i;8685:25::-;;;;;;;;;;;;;:::i;10056:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7775:37;;;;;;;;;;;;;:::i;20969:210::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20969:210:0;;;;;;;;;;:::i;8648:28::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;8648:28:0;;;;;;;;;;;;;;17375:234;;;;;;;;;;;;;:::i;20303:137::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20303:137:0;-1:-1:-1;;;;;20303:137:0;;:::i;11469:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11469:103:0;;;;:::i;17617:159::-;;;;;;;;;;;;;:::i;7706:47::-;;;;;;;;;;;;;:::i;8869:31::-;;;;;;;;;;;;;:::i;10252:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10252:119:0;-1:-1:-1;;;;;10252:119:0;;:::i;2718:148::-;;;;;;;;;;;;;:::i;20798:163::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20798:163:0;-1:-1:-1;;;;;20798:163:0;;:::i;20135:160::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20135:160:0;;-1:-1:-1;20135:160:0;;-1:-1:-1;;;;;20135:160:0:i;2504:79::-;;;;;;;;;;;;;:::i;9961:87::-;;;;;;;;;;;;;:::i;19686:142::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19686:142:0;-1:-1:-1;;;;;19686:142:0;;:::i;10383:169::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10383:169:0;;;;;;;;:::i;8827:35::-;;;;;;;;;;;;;:::i;19836:148::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19836:148:0;-1:-1:-1;;;;;19836:148:0;;:::i;8753:33::-;;;;;;;;;;;;;:::i;11739:102::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11739:102:0;;;;:::i;7913:39::-;;;;;;;;;;;;;:::i;20580:210::-;;;;;;;;;;;;;:::i;17784:325::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17784:325:0;;;;;;;;;;;;;;;;;:::i;7867:38::-;;;;;;;;;;;;;:::i;10560:145::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10560:145:0;;;;;;;;;;:::i;7820:37::-;;;;;;;;;;;;;:::i;19992:135::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19992:135:0;;:::i;2874:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2874:244:0;-1:-1:-1;;;;;2874:244:0;;:::i;18117:236::-;;;;;;;;;;;;;:::i;9870:83::-;9940:5;;;;;;;;;;;;-1:-1:-1;;;9940:5:0;;;;9870:83;:::o;20452:120::-;-1:-1:-1;;;;;20550:14:0;20526:4;20550:14;;;:4;:14;;;;;;;;;20452:120::o;10713:163::-;10790:4;10807:39;10816:12;:10;:12::i;:::-;10830:7;10839:6;10807:8;:39::i;:::-;-1:-1:-1;10864:4:0;10713:163;;;;;:::o;10147:97::-;7682:15;10147:97;:::o;10884:312::-;10984:4;11001:36;11011:6;11019:9;11030:6;11001:9;:36::i;:::-;11048:118;11057:6;11064:12;:10;:12::i;:::-;11077:88;11115:6;11077:88;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11077:19:0;;;;;;:11;:19;;;;;;11097:12;:10;:12::i;:::-;-1:-1:-1;;;;;11077:33:0;;;;;;;;;;;;-1:-1:-1;11077:33:0;;;:88;:37;:88::i;:::-;11048:8;:118::i;:::-;-1:-1:-1;11184:4:0;10884:312;;;;;:::o;17279:88::-;2641:12;:10;:12::i;:::-;2631:6;;-1:-1:-1;;;;;2631:6:0;;;:22;;;2623:67;;;;;-1:-1:-1;;;2623:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2623:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17339:12:0::1;17354:5;17339:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;17339:20:0::1;::::0;;17279:88::o;19326:352::-;19423:3;;-1:-1:-1;;;;;19423:3:0;19407:12;:10;:12::i;:::-;-1:-1:-1;;;;;19407:19:0;;19399:28;;;;;;19464:16;7682:15;19476:3;19464:11;:16::i;:::-;19446:15;:34;19438:89;;;;-1:-1:-1;;;19438:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7682:15;19546;:26;;19538:87;;;;-1:-1:-1;;;19538:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19636:16;:34;19326:352::o;8685:25::-;;;;:::o;10056:83::-;7358:1;10056:83;:::o;7775:37::-;;;;:::o;20969:210::-;21081:3;;-1:-1:-1;;;;;21081:3:0;21065:12;:10;:12::i;:::-;-1:-1:-1;;;;;21065:19:0;;21057:28;;;;;;21096:12;-1:-1:-1;;;;;21096:21:0;;21118:13;21133:12;-1:-1:-1;;;;;21133:22:0;;21164:4;21133:37;;;;;;;;;;;;;-1:-1:-1;;;;;21133:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21133:37:0;21096:75;;;-1:-1:-1;;;;;;21096:75:0;;;;;;;-1:-1:-1;;;;;21096:75:0;;;;;;;;;;;;;;;;;;;;21133:37;;21096:75;;;;;;;-1:-1:-1;21096:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;20969:210:0:o;8648:28::-;;;-1:-1:-1;;;;;8648:28:0;;:::o;17375:234::-;17441:3;;-1:-1:-1;;;;;17441:3:0;17425:12;:10;:12::i;:::-;-1:-1:-1;;;;;17425:19:0;;17417:28;;;;;;17456:23;17482:24;17500:4;17482:9;:24::i;:::-;17456:50;-1:-1:-1;17521:19:0;;17517:85;;17557:33;17574:15;17557:16;:33::i;:::-;17375:234;:::o;20303:137::-;20395:3;;-1:-1:-1;;;;;20395:3:0;20379:12;:10;:12::i;:::-;-1:-1:-1;;;;;20379:19:0;;20371:28;;;;;11469:103;2641:12;:10;:12::i;:::-;2631:6;;-1:-1:-1;;;;;2631:6:0;;;:22;;;2623:67;;;;;-1:-1:-1;;;2623:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2623:67:0;;;;;;;;;;;;;;;11541:15:::1;:23:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;11541:23:0;;::::1;::::0;;;::::1;::::0;;11469:103::o;17617:159::-;2641:12;:10;:12::i;:::-;2631:6;;-1:-1:-1;;;;;2631:6:0;;;:22;;;2623:67;;;;;-1:-1:-1;;;2623:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2623:67:0;;;;;;;;;;;;;;;17679:20:::1;17702:24;17720:4;17702:9;:24::i;:::-;17679:47;;17737:31;17752:15;17737:14;:31::i;7706:47::-:0;;;;:::o;8869:31::-;;;;;;;;;:::o;10252:119::-;-1:-1:-1;;;;;10345:18:0;10318:7;10345:18;;;:9;:18;;;;;;;10252:119::o;2718:148::-;2641:12;:10;:12::i;:::-;2631:6;;-1:-1:-1;;;;;2631:6:0;;;:22;;;2623:67;;;;;-1:-1:-1;;;2623:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2623:67:0;;;;;;;;;;;;;;;2825:1:::1;2809:6:::0;;2788:40:::1;::::0;-1:-1:-1;;;;;2809:6:0;;::::1;::::0;2788:40:::1;::::0;2825:1;;2788:40:::1;2856:1;2839:19:::0;;-1:-1:-1;;;;;;2839:19:0::1;::::0;;2718:148::o;20798:163::-;20884:3;;-1:-1:-1;;;;;20884:3:0;20868:12;:10;:12::i;:::-;-1:-1:-1;;;;;20868:19:0;;20860:28;;;;;;20899:54;;-1:-1:-1;;;;;20899:31:0;;;20931:21;20899:54;;;;;;;;;20931:21;20899:31;:54;;;;;;;;;;;;;;;;;;;;;20798:163;:::o;20135:160::-;20207:6;20202:86;20223:5;:12;20219:1;:16;20202:86;;;20272:4;20255;:14;20260:5;20266:1;20260:8;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20255:14:0;;;;;;;;;;;-1:-1:-1;20255:14:0;:21;;-1:-1:-1;;20255:21:0;;;;;;;;;;-1:-1:-1;20237:3:0;20202:86;;2504:79;2542:7;2569:6;-1:-1:-1;;;;;2569:6:0;2504:79;:::o;9961:87::-;10033:7;;;;;;;;;;;;-1:-1:-1;;;10033:7:0;;;;9961:87;:::o;19686:142::-;19785:3;;-1:-1:-1;;;;;19785:3:0;19769:12;:10;:12::i;:::-;-1:-1:-1;;;;;19769:19:0;;19761:28;;;;;;19800:4;:20;;-1:-1:-1;;;;;;19800:20:0;-1:-1:-1;;;;;19800:20:0;;;;;;;;;;19686:142::o;10383:169::-;10463:4;10480:42;10490:12;:10;:12::i;:::-;10504:9;10515:6;10480:9;:42::i;8827:35::-;;;;;;;;;:::o;19836:148::-;19938:3;;-1:-1:-1;;;;;19938:3:0;19922:12;:10;:12::i;:::-;-1:-1:-1;;;;;19922:19:0;;19914:28;;;;;;19953:7;:23;;-1:-1:-1;;;;;;19953:23:0;-1:-1:-1;;;;;19953:23:0;;;;;;;;;;19836:148::o;8753:33::-;;;;;;:::o;11739:102::-;2641:12;:10;:12::i;:::-;2631:6;;-1:-1:-1;;;;;2631:6:0;;;:22;;;2623:67;;;;;-1:-1:-1;;;2623:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2623:67:0;;;;;;;;;;;;;;;11812:13:::1;:21:::0;;-1:-1:-1;;11812:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11739:102::o;7913:39::-;;;;:::o;20580:210::-;2641:12;:10;:12::i;:::-;2631:6;;-1:-1:-1;;;;;2631:6:0;;;:22;;;2623:67;;;;;-1:-1:-1;;;2623:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2623:67:0;;;;;;;;;;;;;;;20644:11:::1;::::0;;;::::1;;;20643:12;20635:48;;;::::0;;-1:-1:-1;;;20635:48:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;20708:12;20694:11;:26:::0;20731:15:::1;:22:::0;;-1:-1:-1;;;;20731:22:0;;::::1;::::0;::::1;20764:18;::::0;::::1;::::0;;20580:210::o;17784:325::-;2641:12;:10;:12::i;:::-;2631:6;;-1:-1:-1;;;;;2631:6:0;;;:22;;;2623:67;;;;;-1:-1:-1;;;2623:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2623:67:0;;;;;;;;;;;;;;;17937:1:::1;17925:7;17916:6;:16;17915:23;;17906:33;;;::::0;::::1;;17950:19;:28:::0;;;;17989:19:::1;:29:::0;;;;18029:18:::1;:30:::0;18070:18:::1;:31:::0;17784:325::o;7867:38::-;;;;:::o;10560:145::-;-1:-1:-1;;;;;10670:18:0;;;10643:7;10670:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10560:145::o;7820:37::-;;;;:::o;19992:135::-;20080:3;;-1:-1:-1;;;;;20080:3:0;20064:12;:10;:12::i;:::-;-1:-1:-1;;;;;20064:19:0;;20056:28;;;;;;20095:10;:24;19992:135::o;2874:244::-;2641:12;:10;:12::i;:::-;2631:6;;-1:-1:-1;;;;;2631:6:0;;;:22;;;2623:67;;;;;-1:-1:-1;;;2623:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2623:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;2963:22:0;::::1;2955:73;;;;-1:-1:-1::0;;;2955:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3065:6;::::0;;3044:38:::1;::::0;-1:-1:-1;;;;;3044:38:0;;::::1;::::0;3065:6;::::1;::::0;3044:38:::1;::::0;::::1;3093:6;:17:::0;;-1:-1:-1;;;;;;3093:17:0::1;-1:-1:-1::0;;;;;3093:17:0;;;::::1;::::0;;;::::1;::::0;;2874:244::o;18117:236::-;18183:3;;-1:-1:-1;;;;;18183:3:0;18167:12;:10;:12::i;:::-;-1:-1:-1;;;;;18167:19:0;;18159:28;;;;;;18227:21;18263:22;;18259:87;;18302:32;18315:18;18302:12;:32::i;200:98::-;280:10;200:98;:::o;11849:335::-;-1:-1:-1;;;;;11942:19:0;;11934:68;;;;-1:-1:-1;;;11934:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12021:21:0;;12013:68;;;;-1:-1:-1;;;12013:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12092:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12144:32;;;;;;;;;;;;;;;;;11849:335;;;:::o;12196:2937::-;-1:-1:-1;;;;;12286:18:0;;12278:68;;;;-1:-1:-1;;;12278:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12365:16:0;;12357:64;;;;-1:-1:-1;;;12357:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12449:1;12440:6;:10;12432:64;;;;-1:-1:-1;;;12432:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12513:11;;;;;;;12509:111;;12556:3;;-1:-1:-1;;;;;12548:11:0;;;12556:3;;12548:11;12540:20;;;;;;12645:13;;-1:-1:-1;;;;;12637:21:0;;;12645:13;;12637:21;:55;;;;-1:-1:-1;12676:15:0;;-1:-1:-1;;;;;12662:30:0;;;12676:15;;12662:30;;12637:55;12633:178;;;12729:11;;:18;;12745:1;12729:15;:18::i;:::-;12713:12;:34;12709:90;;-1:-1:-1;;;;;12768:8:0;;;;;;:4;:8;;;;;:15;;-1:-1:-1;;12768:15:0;12779:4;12768:15;;;12709:90;12836:4;12863:7;:5;:7::i;:::-;-1:-1:-1;;;;;12855:15:0;:4;-1:-1:-1;;;;;12855:15:0;;;:32;;;;;12880:7;:5;:7::i;:::-;-1:-1:-1;;;;;12874:13:0;:2;-1:-1:-1;;;;;12874:13:0;;;12855:32;12851:638;;;12908:15;;;;;;;12904:321;;;-1:-1:-1;;;;;12948:21:0;;12964:4;12948:21;;;;:44;;-1:-1:-1;;;;;;12973:19:0;;12987:4;12973:19;;12948:44;:80;;;;-1:-1:-1;13012:15:0;;-1:-1:-1;;;;;12996:32:0;;;13012:15;;12996:32;;12948:80;:114;;;;-1:-1:-1;13046:15:0;;-1:-1:-1;;;;;13032:30:0;;;13046:15;;13032:30;;12948:114;12944:266;;;13119:15;;-1:-1:-1;;;;;13119:15:0;13095:12;:10;:12::i;:::-;-1:-1:-1;;;;;13095:40:0;;:73;;;-1:-1:-1;13155:13:0;;-1:-1:-1;;;;;13155:13:0;13139:12;:10;:12::i;:::-;-1:-1:-1;;;;;13139:29:0;;13095:73;13087:103;;;;;-1:-1:-1;;;13087:103:0;;;;;;;;;;;;-1:-1:-1;;;13087:103:0;;;;;;;;;;;;;;;13273:13;;-1:-1:-1;;;;;13265:21:0;;;13273:13;;13265:21;:55;;;;-1:-1:-1;13304:15:0;;-1:-1:-1;;;;;13290:30:0;;;13304:15;;13290:30;;13265:55;:74;;;;-1:-1:-1;13324:15:0;;;;;;;13265:74;13261:217;;;-1:-1:-1;;;;;13368:12:0;;;;;;:8;:12;;;;;;13383:15;-1:-1:-1;13360:39:0;;;;;;-1:-1:-1;;;;;13418:12:0;;;;;;:8;:12;;;;;13452:9;13433:15;:29;13418:44;;13261:217;13513:7;:5;:7::i;:::-;-1:-1:-1;;;;;13505:15:0;:4;-1:-1:-1;;;;;13505:15:0;;;:32;;;;;13530:7;:5;:7::i;:::-;-1:-1:-1;;;;;13524:13:0;:2;-1:-1:-1;;;;;13524:13:0;;;13505:32;:57;;;;-1:-1:-1;;;;;;13541:21:0;;13557:4;13541:21;;13505:57;:80;;;;-1:-1:-1;;;;;;13566:19:0;;13580:4;13566:19;;13505:80;13501:1427;;;13616:13;;-1:-1:-1;;;;;13608:21:0;;;13616:13;;13608:21;:55;;;;-1:-1:-1;13647:15:0;;-1:-1:-1;;;;;13633:30:0;;;13647:15;;13633:30;;13608:55;:84;;;;-1:-1:-1;;;;;;13668:24:0;;;;;;:18;:24;;;;;;;;13667:25;13608:84;:111;;;;-1:-1:-1;;;;;;13697:22:0;;;;;;:18;:22;;;;;;;;13696:23;13608:111;13604:275;;;13777:16;;13748:25;13766:6;13748:13;13758:2;13748:9;:13::i;:::-;:17;;:25::i;:::-;:45;;13740:123;;;;-1:-1:-1;;;13740:123:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13907:13;;-1:-1:-1;;;;;13899:21:0;;;13907:13;;13899:21;:55;;;;-1:-1:-1;13938:15:0;;-1:-1:-1;;;;;13924:30:0;;;13938:15;;13924:30;;13899:55;13895:183;;;13991:18;;13975:13;:34;14044:18;;14028:13;:34;13895:183;14120:13;;-1:-1:-1;;;;;14114:19:0;;;14120:13;;14114:19;:55;;;;-1:-1:-1;14153:15:0;;-1:-1:-1;;;;;14137:32:0;;;14153:15;;14137:32;;14114:55;14110:294;;;14194:13;;;;14190:91;;;-1:-1:-1;;;;;14237:8:0;;;;;;:4;:8;;;;;;;;14236:9;:24;;;;-1:-1:-1;;;;;;14250:10:0;;;;;;:4;:10;;;;;;;;14249:11;14236:24;14228:33;;;;;;14315:19;;14299:13;:35;14369:19;;14353:13;:35;14110:294;14437:6;;;;;;;14436:7;:32;;;;-1:-1:-1;14455:13:0;;-1:-1:-1;;;;;14447:21:0;;;14455:13;;14447:21;;14436:32;14432:485;;;14491:28;14522:24;14540:4;14522:9;:24::i;:::-;14491:55;;14594:10;;14571:20;:33;14567:118;;;14629:36;14644:20;14629:14;:36::i;:::-;14734:21;14778:22;;14774:106;;14825:35;14838:21;14825:12;:35::i;:::-;14432:485;;;-1:-1:-1;;;;;14944:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;14972:22:0;;;;;;:18;:22;;;;;;;;14944:50;14940:98;;;-1:-1:-1;15021:5:0;14940:98;15058:41;15073:4;15079:2;15083:6;15091:7;15058:14;:41::i;:::-;15110:15;:13;:15::i;1337:190::-;1423:7;1459:12;1451:6;;;;1443:29;;;;-1:-1:-1;;;1443:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1495:5:0;;;1337:190::o;1789:132::-;1847:7;1874:39;1878:1;1881;1874:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1867:46;1789:132;-1:-1:-1;;;1789:132:0:o;15141:407::-;9013:6;:13;;-1:-1:-1;;9013:13:0;;;;;15243:16:::1;::::0;;15257:1:::1;15243:16:::0;;;;;::::1;::::0;;-1:-1:-1;;15243:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;15243:16:0::1;15219:40;;15288:4;15270;15275:1;15270:7;;;;;;;;-1:-1:-1::0;;;;;15270:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;15314:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;15314:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;15270:7;;15314:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15314:22:0;15304:7;;:4;;15309:1:::1;::::0;15304:7;::::1;;;;;-1:-1:-1::0;;;;;15304:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;15379:15:::1;::::0;15347:62:::1;::::0;15364:4:::1;::::0;15379:15:::1;15397:11:::0;15347:8:::1;:62::i;:::-;15420:15;::::0;:120:::1;::::0;-1:-1:-1;;;15420:120:0;;::::1;::::0;::::1;::::0;;;:15:::1;:120:::0;;;;;;15517:4:::1;15420:120:::0;;;;;;15524:15:::1;15420:120:::0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15420:15:0;;::::1;::::0;:66:::1;::::0;15487:11;;15503:4;;15517;15524:15;15420:120;;;;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;:15;:120:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;9049:6:0;:14;;-1:-1:-1;;9049:14:0;;;-1:-1:-1;;;;15141:407:0:o;16026:1014::-;9013:6;:13;;-1:-1:-1;;9013:13:0;;;;;16196::::1;::::0;16178::::1;::::0;9013;;16134:77:::1;::::0;16178:32:::1;::::0;:17:::1;:32::i;:::-;16134:13;::::0;:39:::1;::::0;16152:20;16134:17:::1;:39::i;:::-;:43:::0;::::1;:77::i;:::-;16111:100:::0;-1:-1:-1;16275:12:0::1;16291:19;16111:100:::0;16308:1:::1;16291:16;:19::i;:::-;16275:35:::0;-1:-1:-1;16321:17:0::1;16341:30;:20:::0;16275:35;16341:24:::1;:30::i;:::-;16321:50:::0;-1:-1:-1;16674:21:0::1;16740:27;16321:50:::0;16740:16:::1;:27::i;:::-;16898:18;16919:70;16979:9:::0;16920:53:::1;16968:4:::0;16921:41:::1;:21;16947:14:::0;16921:25:::1;:41::i;:::-;16920:47:::0;::::1;:53::i;16919:70::-;16898:91;;17002:30;17015:4;17021:10;17002:12;:30::i;17048:223::-:0;17105:14;17122:13;:6;17133:1;17122:10;:13::i;:::-;17146:4;;17105:30;;-1:-1:-1;;;;;;17146:4:0;:30;17160:15;17105:30;17173:1;17160:12;:15::i;:::-;17146:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17187:7:0;;:24;;-1:-1:-1;;;;;17187:7:0;;;;:24;;;;;17204:6;;17187:7;:24;:7;:24;17204:6;17187:7;:24;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17222:3:0;;-1:-1:-1;;;;;17222:3:0;:39;17235:25;17246:13;:6;17257:1;17246:10;:13::i;:::-;17235:6;;:10;:25::i;:::-;17222:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17048:223;;:::o;1006:179::-;1064:7;1096:5;;;1120:6;;;;1112:46;;;;;-1:-1:-1;;;1112:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;18361:256;18474:7;18469:60;;18503:14;:12;:14::i;:::-;18539:44;18557:6;18565:9;18576:6;18539:17;:44::i;11584:147::-;11654:21;;11638:13;:37;11702:21;;11686:13;:37;11584:147::o;1929:189::-;2015:7;2050:12;2043:5;2035:28;;;;-1:-1:-1;;;2035:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2074:9;2090:1;2086;:5;;;;;;;1929:189;-1:-1:-1;;;;;1929:189:0:o;1535:246::-;1593:7;1617:6;1613:47;;-1:-1:-1;1647:1:0;1640:8;;1613:47;1682:5;;;1686:1;1682;:5;:1;1706:5;;;;;:10;1698:56;;;;-1:-1:-1;;;1698:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1193:136;1251:7;1278:43;1282:1;1285;1278:43;;;;;;;;;;;;;;;;;:3;:43::i;15560:456::-;15673:15;;15641:62;;15658:4;;-1:-1:-1;;;;;15673:15:0;15691:11;15641:8;:62::i;:::-;15746:15;;15960:3;;15746:262;;;-1:-1:-1;;;15746:262:0;;15820:4;15746:262;;;;;;;;;;:15;:262;;;;;;;;;;-1:-1:-1;;;;;15960:3:0;;;15746:262;;;;15980:15;15746:262;;;;;;:15;;;;;:31;;15785:9;;15746:262;;;;;;;;;;;;;;;15785:9;15746:15;:262;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11204:257;11251:13;;:18;:40;;;;-1:-1:-1;11273:13:0;;:18;11251:40;11247:53;;;11293:7;;11247:53;11334:13;;;11310:21;:37;11382:13;;;11358:21;:37;-1:-1:-1;11408:17:0;;;;11436;11204:257;:::o;18625:652::-;18722:24;;:::i;:::-;18775:34;18805:3;18775:25;18786:13;;18775:6;:10;;:25;;;;:::i;:34::-;18757:15;;;:52;18849:13;;18838:34;;18868:3;;18838:25;;:6;;:10;:25::i;:34::-;18820:52;;;18919:15;;;;18908:48;;18820:52;18908:27;;:6;;:10;:27::i;:::-;:31;;:48::i;:::-;18893:12;;;;:63;;;;-1:-1:-1;;;;;18997:17:0;;;;;;:9;:17;;;;:29;;19019:6;18997:21;:29::i;:::-;-1:-1:-1;;;;;18977:17:0;;;;;;;:9;:17;;;;;;:49;;;;19085:12;;;;19060:20;;;;;;;;;;:38;;:24;:38::i;:::-;-1:-1:-1;;;;;19037:20:0;;;;;;:9;:20;;;;;;;;:61;;;;19185:15;;19165;;;;19136:66;;19165:36;;:15;:19;:36::i;:::-;19154:4;19136:24;;;;:9;:24;;;;;;;:28;:66::i;:::-;19127:4;19109:24;;;;:9;:24;;;;;;;;;:93;;;;19256:12;;;;19228:41;;;;;;;-1:-1:-1;;;;;19228:41:0;;;;;;;;;;;;;;;;;;;18625:652;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

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