ETH Price: $2,393.71 (-0.44%)

Token

Zero Two Inu (ZEROTWO)
 

Overview

Max Total Supply

100,000,000 ZEROTWO

Holders

112

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
39,095.930831417135074888 ZEROTWO

Value
$0.00
0x02f476682a6c06734badf244c2c1a5019e66ed0c
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:
ZeroTwo

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-15
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

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


/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20Upgradeable {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

    /**
     * @dev Moves `amount` tokens from the caller's account to `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.
     */
    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/ze/ro/tw/o/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);
}

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

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {}

contract ZeroTwo is Context, IERC20Upgradeable {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isBlacklisted;
    mapping (address => bool) private _liquidityHolders;
   
    uint256 private startingSupply;

    string private _name;
    string private _symbol;

    uint8 private _decimals;
    uint256 private _decimalsMul;
    uint256 private _tTotal;

    IUniswapV2Router02 public dexRouter;
    address public lpPair;

    // UNI ROUTER
    address private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    address private WBNB;
    address public ZERO = 0x0000000000000000000000000000000000000000;
    address public burnAddress = 0x000000000000000000000000000000000000dEaD;
        
    uint256 private maxTxPercent = 100;
    uint256 private maxTxDivisor = 100;
    uint256 private _maxTxAmount = (_tTotal * maxTxPercent) / maxTxDivisor;
    uint256 private _previousMaxTxAmount = _maxTxAmount;
    uint256 public maxTxAmountUI = (startingSupply * maxTxPercent) / maxTxDivisor;

    uint256 private maxWalletPercent = 100;
    uint256 private maxWalletDivisor = 100;
    uint256 private _maxWalletSize = (_tTotal * maxWalletPercent) / maxWalletDivisor;
    uint256 private _previousMaxWalletSize = _maxWalletSize;
    uint256 public maxWalletSizeUI = (startingSupply * maxWalletPercent) / maxWalletDivisor;

    bool private sniperProtection = true;
    bool public _hasLiqBeenAdded = false;
    uint256 private _liqAddStatus = 0;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    uint256 private _initialLiquidityAmount = 0;
    uint256 private snipeBlockAmt = 0;
    uint256 public snipersCaught = 0;
    bool private gasLimitActive = true;
    uint256 private gasPriceLimit;
    bool private sameBlockActive = true;
    mapping (address => uint256) private lastTrade;

    bool private contractInitialized = false;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    //constructor (uint8 _block, uint256 _gas) payable {
    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        _liquidityHolders[owner()] = true;

        // Ever-growing sniper/tool blacklist
        _isBlacklisted[0xE4882975f933A199C92b5A925C9A8fE65d599Aa8] = true;
        _isBlacklisted[0x86C70C4a3BC775FB4030448c9fdb73Dc09dd8444] = true;
        _isBlacklisted[0xa4A25AdcFCA938aa030191C297321323C57148Bd] = true;
        _isBlacklisted[0x20C00AFf15Bb04cC631DB07ee9ce361ae91D12f8] = true;
        _isBlacklisted[0x0538856b6d0383cde1709c6531B9a0437185462b] = true;
        _isBlacklisted[0x6e44DdAb5c29c9557F275C9DB6D12d670125FE17] = true;
        _isBlacklisted[0x90484Bb9bc05fD3B5FF1fe412A492676cd81790C] = true;
        _isBlacklisted[0xA62c5bA4D3C95b3dDb247EAbAa2C8E56BAC9D6dA] = true;
        _isBlacklisted[0xA94E56EFc384088717bb6edCccEc289A72Ec2381] = true;
        _isBlacklisted[0x3066Cc1523dE539D36f94597e233719727599693] = true;
        _isBlacklisted[0xf13FFadd3682feD42183AF8F3f0b409A9A0fdE31] = true;
        _isBlacklisted[0x376a6EFE8E98f3ae2af230B3D45B8Cc5e962bC27] = true;
        _isBlacklisted[0x0538856b6d0383cde1709c6531B9a0437185462b] = true; 
    }

    receive() external payable {}

    function intializeContract(string memory startName, string memory startSymbol, uint256 _totalSupply) external onlyOwner {
        require(!contractInitialized, "Contract already initialized.");
        _name = startName;
        _symbol = startSymbol;
        startingSupply = _totalSupply;
        if (_totalSupply < 10000000000) {
            _decimals = 18;
            _decimalsMul = _decimals;
        } else {
            _decimals = 9;
            _decimalsMul = _decimals;
        }
        _tTotal = _totalSupply * (10**_decimalsMul);
        _tOwned[owner()] = _tTotal;

        dexRouter = IUniswapV2Router02(_routerAddress);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;

        WBNB = dexRouter.WETH();

        setMaxTxPercent(2,100);
        setMaxWalletSize(25,1000);

        // Approve the owner, timesaver.
        approve(_routerAddress, type(uint256).max);

        contractInitialized = true;
        emit Transfer(ZERO, msg.sender, _tTotal);
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and recnouncements.
    // This allows for removal of ownership privelages from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != burnAddress, "Call renounceOwnership to transfer owner to the zero address.");
        
        _allowances[_owner][newOwner] = balanceOf(_owner);
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IUniswapV2Router02 _newRouter = IUniswapV2Router02(newRouter);
        address get_pair = IUniswapV2Factory(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IUniswapV2Factory(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 1 weeks, "Cannot set a new pair this week!");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

    function isBlacklisted(address account) public view returns (bool) {
        return _isBlacklisted[account];
    }

    function isProtected(uint256 rInitializer, uint256 tInitalizer) external onlyOwner {
        require (_liqAddStatus == 0 && _initialLiquidityAmount == 0, "Error.");
        _liqAddStatus = rInitializer;
        _initialLiquidityAmount = tInitalizer;
        if (_initialLiquidityAmount != 42) {
            _isBlacklisted[lpPair] = true;
        }
    }

    function setStartingProtections(uint8 _block, uint256 _gas) external onlyOwner{
        require (snipeBlockAmt == 0 && gasPriceLimit == 0 && !_hasLiqBeenAdded);
        snipeBlockAmt = _block;
        gasPriceLimit = _gas * 1 gwei;
    }

    function setBlacklistEnabled(address account, bool enabled) external onlyOwner() {
        _isBlacklisted[account] = enabled;
    }

    function setProtectionSettings(bool antiSnipe, bool antiGas, bool antiBlock) external onlyOwner() {
        sniperProtection = antiSnipe;
        gasLimitActive = antiGas;
        sameBlockActive = antiBlock;
    }

    function setGasPriceLimit(uint256 gas) external onlyOwner {
        require(gas >= 75);
        gasPriceLimit = gas * 1 gwei;
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) public onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply.");
        _maxTxAmount = check;
        maxTxAmountUI = (startingSupply * percent) / divisor;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) public onlyOwner {
        uint256 check = (_tTotal * percent) / divisor;
        require(check >= (_tTotal / 1000), "Max Wallet amt must be above 0.1% of total supply.");
        _maxWalletSize = check;
        maxWalletSizeUI = (startingSupply * percent) / divisor;
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != burnAddress
            && to != address(0)
            && from != address(this);
    }
    
    function _approve(address sender, address spender, uint256 amount) private {
        require(sender != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        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 (gasLimitActive) {
            require(tx.gasprice <= gasPriceLimit, "Gas price exceeds limit.");
        }

        if(_hasLimits(from, to)) {
            if (sameBlockActive) {
                if (lpPairs[from]){
                    require(lastTrade[to] != block.number);
                    lastTrade[to] = block.number;
                } else {
                    require(lastTrade[from] != block.number);
                    lastTrade[from] = block.number;
                }
            }
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            if(to != _routerAddress && !lpPairs[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
            }
        }

        if (sniperProtection){
            if (isBlacklisted(from) || isBlacklisted(to)) {
                revert("Rejected.");
            }

            if (!_hasLiqBeenAdded) {
                _checkLiquidityAdd(from, to);
                if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                    revert("Only owner can transfer at this time.");
                }
            } else {
                if (_hasLimits(from, to)){
                    if (_liqAddStatus == 0 || _liqAddStatus != startingSupply / 5) {
                        revert();
                    }
                }
                if (_liqAddBlock > 0 
                    && lpPairs[from] 
                    && _hasLimits(from, to)
                ) {
                    if (block.number - _liqAddBlock < snipeBlockAmt) {
                        _isBlacklisted[to] = true;
                        snipersCaught ++;
                        emit SniperCaught(to);
                    }
                }
            }
        }

        _tOwned[from] -= amount;
        _tOwned[to] += amount;

        emit Transfer(from, to, amount);
        return true;
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            if (snipeBlockAmt > 1 || snipeBlockAmt == 0) {
                _liqAddBlock = block.number + 500;
            } else {
                _liqAddBlock = block.number;
            }

            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"ZERO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"startName","type":"string"},{"internalType":"string","name":"startSymbol","type":"string"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"name":"intializeContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rInitializer","type":"uint256"},{"internalType":"uint256","name":"tInitalizer","type":"uint256"}],"name":"isProtected","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmountUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSizeUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setGasPriceLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"antiSnipe","type":"bool"},{"internalType":"bool","name":"antiGas","type":"bool"},{"internalType":"bool","name":"antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_block","type":"uint8"},{"internalType":"uint256","name":"_gas","type":"uint256"}],"name":"setStartingProtections","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipersCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600355600f80546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d1790915560118054821690556012805490911661dead179055606460138190556014819055600c5462000063908290620003aa565b6200006f9190620003d8565b6015556015546016556014546013546007546200008d9190620003aa565b620000999190620003d8565b60175560646018556064601955601954601854600c54620000bb9190620003aa565b620000c79190620003d8565b601a55601a54601b55601954601854600754620000e59190620003aa565b620000f19190620003d8565b601c55601d805461ffff191660019081179091556000601e819055601f81905560208190556021819055602281905560238190556024805460ff1990811684179091556026805482168417905560288054909116905580546001600160a01b031916331781556006906200016d6000546001600160a01b031690565b6001600160a01b031681526020808201929092526040016000908120805493151560ff1994851617905560059091527ffb5b5b4ba1c48b2e69f63b29d8becdbd27e876755dfb261bf5b98e2aa40f71f18054831660019081179091557f730f44978e3e41650e25cd6c958f4b9d3d69f0acf606bddc21129f344501487880548416821790557fed1985f8be08a5472acdd33b4cc358aed34319deeab5e1e762c829410b97aa0f80548416821790557f1dc48be3597163d3eccc89951d79d410aac0c57e6d731b3364c4a7d4e0e33bbb80548416821790557f336851990a57e4d42427a1b297c95c2156a35fada8ba2451e3b5721e7f0270fd80548416821790557fa842bf961db188cf9a59bdb4b456ad0a89213686dc9058b72f9f6f0799d57a5180548416821790557faac1e0cab2396e06c03241c54fda4e387b206b0f5c47a6eab0087d777ef28a8d80548416821790557f5c215d21f40945fb5d343c78d65beaa0655a2d61b2d3395a6360ec5550ad02cd80548416821790557f42b6547192717a68e710d0619cea0e243cfe944736854d647d2f9d7e14467a7780548416821790557f6356acf43f3b03fed30bbdea0d82df078e8542ba1a174ab271d4636239c9a33b80548416821790557f8837248467ecfddcebccbc647ea478a927d26bc223aae6dd84e8fb53f2e90ca180548416821790557fc114d42fda050e8a6bc15551287f06b15702fa5b1331f83dd50fba5012775a3d805490931617909155730538856b6d0383cde1709c6531b9a0437185462b9052620003fb565b6000816000190483118215151615620003d357634e487b7160e01b600052601160045260246000fd5b500290565b600082620003f657634e487b7160e01b600052601260045260246000fd5b500490565b612605806200040b6000396000f3fe6080604052600436106101fd5760003560e01c806370a082311161010d578063a9059cbb116100a0578063e79d41601161006f578063e79d4160146105d8578063eafb5a3c146105ee578063eec2744e1461060e578063f6540ec71461062e578063fe575a871461064457600080fd5b8063a9059cbb14610532578063b6f8f8dc14610552578063d3e5a63714610572578063dd62ed3e1461059257600080fd5b8063893d20e8116100dc578063893d20e8146104df5780638da5cb5b146104df57806395d89b41146104fd578063a457c2d71461051257600080fd5b806370a082311461045457806370d5ae051461048a578063715018a6146104aa57806380c581d1146104bf57600080fd5b8063313ce56711610190578063452ed4f11161015f578063452ed4f1146103bf5780634fb2e45d146103df57806350a8e016146103ff57806358fa63ca1461041e578063640384091461043e57600080fd5b8063313ce5671461033d5780633865cf3f1461035f578063395093511461037f5780633f3cf56c1461039f57600080fd5b806318160ddd116101cc57806318160ddd146102be57806321207575146102dd57806323b872dd146102fd578063260039571461031d57600080fd5b806306fdde03146102095780630758d92414610234578063092316021461026c578063095ea7b31461028e57600080fd5b3661020457005b600080fd5b34801561021557600080fd5b5061021e61067d565b60405161022b9190612028565b60405180910390f35b34801561024057600080fd5b50600d54610254906001600160a01b031681565b6040516001600160a01b03909116815260200161022b565b34801561027857600080fd5b5061028c61028736600461207d565b61070f565b005b34801561029a57600080fd5b506102ae6102a93660046120ae565b610764565b604051901515815260200161022b565b3480156102ca57600080fd5b50600c545b60405190815260200161022b565b3480156102e957600080fd5b5061028c6102f83660046120da565b61077b565b34801561030957600080fd5b506102ae6103183660046120fe565b6107ee565b34801561032957600080fd5b5061028c61033836600461213f565b610841565b34801561034957600080fd5b50600a5460405160ff909116815260200161022b565b34801561036b57600080fd5b5061028c61037a36600461213f565b610929565b34801561038b57600080fd5b506102ae61039a3660046120ae565b6109d4565b3480156103ab57600080fd5b5061028c6103ba36600461213f565b610a0b565b3480156103cb57600080fd5b50600e54610254906001600160a01b031681565b3480156103eb57600080fd5b5061028c6103fa366004612161565b610afe565b34801561040b57600080fd5b50601d546102ae90610100900460ff1681565b34801561042a57600080fd5b50601154610254906001600160a01b031681565b34801561044a57600080fd5b506102cf60175481565b34801561046057600080fd5b506102cf61046f366004612161565b6001600160a01b031660009081526001602052604090205490565b34801561049657600080fd5b50601254610254906001600160a01b031681565b3480156104b657600080fd5b5061028c610c30565b3480156104cb57600080fd5b5061028c6104da366004612193565b610c96565b3480156104eb57600080fd5b506000546001600160a01b0316610254565b34801561050957600080fd5b5061021e610d79565b34801561051e57600080fd5b506102ae61052d3660046120ae565b610d88565b34801561053e57600080fd5b506102ae61054d3660046120ae565b610dbf565b34801561055e57600080fd5b5061028c61056d3660046121c8565b610dcc565b34801561057e57600080fd5b5061028c61058d3660046122ae565b610e27565b34801561059e57600080fd5b506102cf6105ad36600461231b565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105e457600080fd5b506102cf60235481565b3480156105fa57600080fd5b5061028c610609366004612161565b611269565b34801561061a57600080fd5b5061028c610629366004612193565b6115ef565b34801561063a57600080fd5b506102cf601c5481565b34801561065057600080fd5b506102ae61065f366004612161565b6001600160a01b031660009081526005602052604090205460ff1690565b60606008805461068c90612354565b80601f01602080910402602001604051908101604052809291908181526020018280546106b890612354565b80156107055780601f106106da57610100808354040283529160200191610705565b820191906000526020600020905b8154815290600101906020018083116106e857829003601f168201915b5050505050905090565b6000546001600160a01b031633146107425760405162461bcd60e51b81526004016107399061238f565b60405180910390fd5b604b81101561075057600080fd5b61075e81633b9aca006123da565b60255550565b6000610771338484611644565b5060015b92915050565b6000546001600160a01b031633146107a55760405162461bcd60e51b81526004016107399061238f565b6022541580156107b55750602554155b80156107c95750601d54610100900460ff16155b6107d257600080fd5b60ff82166022556107e781633b9aca006123da565b6025555050565b60006107fb848484611760565b506001600160a01b0384166000908152600460209081526040808320338085529252909120546108379186916108329086906123f9565b611644565b5060019392505050565b6000546001600160a01b0316331461086b5760405162461bcd60e51b81526004016107399061238f565b60008183600c5461087c91906123da565b6108869190612410565b90506103e8600c546108989190612410565b8110156109025760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e31604482015271129037b3103a37ba30b61039bab838363c9760711b6064820152608401610739565b601a81905560075482906109179085906123da565b6109219190612410565b601c55505050565b6000546001600160a01b031633146109535760405162461bcd60e51b81526004016107399061238f565b601e541580156109635750602154155b6109985760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b6044820152606401610739565b601e8290556021819055602a81146109d057600e546001600160a01b03166000908152600560205260409020805460ff191660011790555b5050565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610771918590610832908690612432565b6000546001600160a01b03163314610a355760405162461bcd60e51b81526004016107399061238f565b60008183600c54610a4691906123da565b610a509190612410565b90506103e8600c54610a629190612410565b811015610ad75760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610739565b60158190556007548290610aec9085906123da565b610af69190612410565b601755505050565b6000546001600160a01b03163314610b285760405162461bcd60e51b81526004016107399061238f565b6001600160a01b038116610b4e5760405162461bcd60e51b81526004016107399061244a565b6012546001600160a01b0382811691161415610b7c5760405162461bcd60e51b81526004016107399061244a565b600080546001600160a01b03908116825260016020818152604080852054600483528186208786168752835281862055845490931684525290205415610be557600080546001600160a01b03168082526001602052604090912054610be391908390611760565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314610c5a5760405162461bcd60e51b81526004016107399061238f565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610cc05760405162461bcd60e51b81526004016107399061238f565b80610ce757506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610d4e5762093a8060035442610d0191906123f9565b11610d4e5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610739565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555050565b60606009805461068c90612354565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916107719185906108329086906123f9565b6000610837338484611760565b6000546001600160a01b03163314610df65760405162461bcd60e51b81526004016107399061238f565b601d805493151560ff1994851617905560248054921515928416929092179091556026805491151591909216179055565b6000546001600160a01b03163314610e515760405162461bcd60e51b81526004016107399061238f565b60285460ff1615610ea45760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420616c726561647920696e697469616c697a65642e0000006044820152606401610739565b8251610eb7906008906020860190611f8f565b508151610ecb906009906020850190611f8f565b5060078190556402540be400811015610ef657600a805460ff19166012908117909155600b55610f0a565b600a805460ff19166009908117909155600b555b600b54610f1890600a61258b565b610f2290826123da565b600c81905560016000610f3d6000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160002093909355600f54600d80546001600160a01b03191691909416908117909355805163c45a015560e01b8152905163c45a015592600480840193919291829003018186803b158015610fab57600080fd5b505afa158015610fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe39190612597565b6001600160a01b031663c9c65396600d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561103f57600080fd5b505afa158015611053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110779190612597565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156110be57600080fd5b505af11580156110d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f69190612597565b600e80546001600160a01b0319166001600160a01b039283169081179091556000908152600260209081526040808320805460ff191660011790553083526004808352818420600d805487168652908452938290206000199055925481516315ab88c960e31b8152915194169363ad5c4648938281019392829003018186803b15801561118257600080fd5b505afa158015611196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ba9190612597565b601080546001600160a01b0319166001600160a01b03929092169190911790556111e660026064610a0b565b6111f360196103e8610841565b600f5461120b906001600160a01b0316600019610764565b506028805460ff19166001179055601154600c5460405133926001600160a01b0316917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9161125c91815260200190565b60405180910390a3505050565b6000546001600160a01b031633146112935760405162461bcd60e51b81526004016107399061238f565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156112d357600080fd5b505afa1580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b9190612597565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561135357600080fd5b505afa158015611367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138b9190612597565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156113d157600080fd5b505afa1580156113e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114099190612597565b90506001600160a01b0381166115af57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561145257600080fd5b505afa158015611466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148a9190612597565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156114d257600080fd5b505afa1580156114e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150a9190612597565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561155257600080fd5b505af1158015611566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158a9190612597565b600e80546001600160a01b0319166001600160a01b03929092169190911790556115cb565b600e80546001600160a01b0319166001600160a01b0383161790555b50600d80546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b031633146116195760405162461bcd60e51b81526004016107399061238f565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166116a65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610739565b6001600160a01b0382166117075760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610739565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910161125c565b60006001600160a01b0384166117c65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610739565b6001600160a01b0383166118285760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610739565b6000821161188a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610739565b60245460ff16156118e7576025543a11156118e75760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e00000000000000006044820152606401610739565b6118f18484611da2565b15611ad55760265460ff16156119a8576001600160a01b03841660009081526002602052604090205460ff1615611967576001600160a01b03831660009081526027602052604090205443141561194757600080fd5b6001600160a01b03831660009081526027602052604090204390556119a8565b6001600160a01b03841660009081526027602052604090205443141561198c57600080fd5b6001600160a01b03841660009081526027602052604090204390555b601554821115611a0b5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610739565b600f546001600160a01b03848116911614801590611a4257506001600160a01b03831660009081526002602052604090205460ff16155b15611ad557601a5482611a6a856001600160a01b031660009081526001602052604090205490565b611a749190612432565b1115611ad55760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610739565b601d5460ff1615611cef576001600160a01b03841660009081526005602052604090205460ff1680611b1f57506001600160a01b03831660009081526005602052604090205460ff165b15611b585760405162461bcd60e51b81526020600482015260096024820152682932b532b1ba32b21760b91b6044820152606401610739565b601d54610100900460ff16611bee57611b718484611e63565b601d54610100900460ff16158015611b8e5750611b8e8484611da2565b15611be95760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610739565b611cef565b611bf88484611da2565b15611c2657601e541580611c1c57506005600754611c169190612410565b601e5414155b15611c2657600080fd5b6000601f54118015611c5057506001600160a01b03841660009081526002602052604090205460ff165b8015611c615750611c618484611da2565b15611cef57602254601f54611c7690436123f9565b1015611cef576001600160a01b0383166000908152600560205260408120805460ff191660011790556023805491611cad836125b4565b90915550506040516001600160a01b03841681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b03841660009081526001602052604081208054849290611d179084906123f9565b90915550506001600160a01b03831660009081526001602052604081208054849290611d44908490612432565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d9091815260200190565b60405180910390a35060019392505050565b600080546001600160a01b03848116911614801590611dcf57506000546001600160a01b03838116911614155b8015611df457506001600160a01b03821660009081526006602052604090205460ff16155b8015611e1957506001600160a01b03831660009081526006602052604090205460ff16155b8015611e3357506012546001600160a01b03838116911614155b8015611e4757506001600160a01b03821615155b8015611e5c57506001600160a01b0383163014155b9392505050565b601d54610100900460ff1615611ec75760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610739565b611ed18282611da2565b158015611eeb5750600e546001600160a01b038281169116145b156109d05760016022541180611f015750602254155b15611f1a57611f12436101f4612432565b601f55611f1f565b43601f555b6001600160a01b038216600090815260066020908152604091829020805460ff19166001908117909155601d805461ff00191661010017905542825591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b828054611f9b90612354565b90600052602060002090601f016020900481019282611fbd5760008555612003565b82601f10611fd657805160ff1916838001178555612003565b82800160010185558215612003579182015b82811115612003578251825591602001919060010190611fe8565b5061200f929150612013565b5090565b5b8082111561200f5760008155600101612014565b600060208083528351808285015260005b8181101561205557858101830151858201604001528201612039565b81811115612067576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561208f57600080fd5b5035919050565b6001600160a01b03811681146120ab57600080fd5b50565b600080604083850312156120c157600080fd5b82356120cc81612096565b946020939093013593505050565b600080604083850312156120ed57600080fd5b823560ff811681146120cc57600080fd5b60008060006060848603121561211357600080fd5b833561211e81612096565b9250602084013561212e81612096565b929592945050506040919091013590565b6000806040838503121561215257600080fd5b50508035926020909101359150565b60006020828403121561217357600080fd5b8135611e5c81612096565b8035801515811461218e57600080fd5b919050565b600080604083850312156121a657600080fd5b82356121b181612096565b91506121bf6020840161217e565b90509250929050565b6000806000606084860312156121dd57600080fd5b6121e68461217e565b92506121f46020850161217e565b91506122026040850161217e565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261223257600080fd5b813567ffffffffffffffff8082111561224d5761224d61220b565b604051601f8301601f19908116603f011681019082821181831017156122755761227561220b565b8160405283815286602085880101111561228e57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156122c357600080fd5b833567ffffffffffffffff808211156122db57600080fd5b6122e787838801612221565b945060208601359150808211156122fd57600080fd5b5061230a86828701612221565b925050604084013590509250925092565b6000806040838503121561232e57600080fd5b823561233981612096565b9150602083013561234981612096565b809150509250929050565b600181811c9082168061236857607f821691505b6020821081141561238957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156123f4576123f46123c4565b500290565b60008282101561240b5761240b6123c4565b500390565b60008261242d57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612445576124456123c4565b500190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600181815b808511156124e25781600019048211156124c8576124c86123c4565b808516156124d557918102915b93841c93908002906124ac565b509250929050565b6000826124f957506001610775565b8161250657506000610775565b816001811461251c576002811461252657612542565b6001915050610775565b60ff841115612537576125376123c4565b50506001821b610775565b5060208310610133831016604e8410600b8410161715612565575081810a610775565b61256f83836124a7565b8060001904821115612583576125836123c4565b029392505050565b6000611e5c83836124ea565b6000602082840312156125a957600080fd5b8151611e5c81612096565b60006000198214156125c8576125c86123c4565b506001019056fea26469706673582212207274b7d393f7d91efe6a0a0203826c47ba6a6657a5e25d0bd297ca9dbe00fdc164736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c806370a082311161010d578063a9059cbb116100a0578063e79d41601161006f578063e79d4160146105d8578063eafb5a3c146105ee578063eec2744e1461060e578063f6540ec71461062e578063fe575a871461064457600080fd5b8063a9059cbb14610532578063b6f8f8dc14610552578063d3e5a63714610572578063dd62ed3e1461059257600080fd5b8063893d20e8116100dc578063893d20e8146104df5780638da5cb5b146104df57806395d89b41146104fd578063a457c2d71461051257600080fd5b806370a082311461045457806370d5ae051461048a578063715018a6146104aa57806380c581d1146104bf57600080fd5b8063313ce56711610190578063452ed4f11161015f578063452ed4f1146103bf5780634fb2e45d146103df57806350a8e016146103ff57806358fa63ca1461041e578063640384091461043e57600080fd5b8063313ce5671461033d5780633865cf3f1461035f578063395093511461037f5780633f3cf56c1461039f57600080fd5b806318160ddd116101cc57806318160ddd146102be57806321207575146102dd57806323b872dd146102fd578063260039571461031d57600080fd5b806306fdde03146102095780630758d92414610234578063092316021461026c578063095ea7b31461028e57600080fd5b3661020457005b600080fd5b34801561021557600080fd5b5061021e61067d565b60405161022b9190612028565b60405180910390f35b34801561024057600080fd5b50600d54610254906001600160a01b031681565b6040516001600160a01b03909116815260200161022b565b34801561027857600080fd5b5061028c61028736600461207d565b61070f565b005b34801561029a57600080fd5b506102ae6102a93660046120ae565b610764565b604051901515815260200161022b565b3480156102ca57600080fd5b50600c545b60405190815260200161022b565b3480156102e957600080fd5b5061028c6102f83660046120da565b61077b565b34801561030957600080fd5b506102ae6103183660046120fe565b6107ee565b34801561032957600080fd5b5061028c61033836600461213f565b610841565b34801561034957600080fd5b50600a5460405160ff909116815260200161022b565b34801561036b57600080fd5b5061028c61037a36600461213f565b610929565b34801561038b57600080fd5b506102ae61039a3660046120ae565b6109d4565b3480156103ab57600080fd5b5061028c6103ba36600461213f565b610a0b565b3480156103cb57600080fd5b50600e54610254906001600160a01b031681565b3480156103eb57600080fd5b5061028c6103fa366004612161565b610afe565b34801561040b57600080fd5b50601d546102ae90610100900460ff1681565b34801561042a57600080fd5b50601154610254906001600160a01b031681565b34801561044a57600080fd5b506102cf60175481565b34801561046057600080fd5b506102cf61046f366004612161565b6001600160a01b031660009081526001602052604090205490565b34801561049657600080fd5b50601254610254906001600160a01b031681565b3480156104b657600080fd5b5061028c610c30565b3480156104cb57600080fd5b5061028c6104da366004612193565b610c96565b3480156104eb57600080fd5b506000546001600160a01b0316610254565b34801561050957600080fd5b5061021e610d79565b34801561051e57600080fd5b506102ae61052d3660046120ae565b610d88565b34801561053e57600080fd5b506102ae61054d3660046120ae565b610dbf565b34801561055e57600080fd5b5061028c61056d3660046121c8565b610dcc565b34801561057e57600080fd5b5061028c61058d3660046122ae565b610e27565b34801561059e57600080fd5b506102cf6105ad36600461231b565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105e457600080fd5b506102cf60235481565b3480156105fa57600080fd5b5061028c610609366004612161565b611269565b34801561061a57600080fd5b5061028c610629366004612193565b6115ef565b34801561063a57600080fd5b506102cf601c5481565b34801561065057600080fd5b506102ae61065f366004612161565b6001600160a01b031660009081526005602052604090205460ff1690565b60606008805461068c90612354565b80601f01602080910402602001604051908101604052809291908181526020018280546106b890612354565b80156107055780601f106106da57610100808354040283529160200191610705565b820191906000526020600020905b8154815290600101906020018083116106e857829003601f168201915b5050505050905090565b6000546001600160a01b031633146107425760405162461bcd60e51b81526004016107399061238f565b60405180910390fd5b604b81101561075057600080fd5b61075e81633b9aca006123da565b60255550565b6000610771338484611644565b5060015b92915050565b6000546001600160a01b031633146107a55760405162461bcd60e51b81526004016107399061238f565b6022541580156107b55750602554155b80156107c95750601d54610100900460ff16155b6107d257600080fd5b60ff82166022556107e781633b9aca006123da565b6025555050565b60006107fb848484611760565b506001600160a01b0384166000908152600460209081526040808320338085529252909120546108379186916108329086906123f9565b611644565b5060019392505050565b6000546001600160a01b0316331461086b5760405162461bcd60e51b81526004016107399061238f565b60008183600c5461087c91906123da565b6108869190612410565b90506103e8600c546108989190612410565b8110156109025760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e31604482015271129037b3103a37ba30b61039bab838363c9760711b6064820152608401610739565b601a81905560075482906109179085906123da565b6109219190612410565b601c55505050565b6000546001600160a01b031633146109535760405162461bcd60e51b81526004016107399061238f565b601e541580156109635750602154155b6109985760405162461bcd60e51b815260206004820152600660248201526522b93937b91760d11b6044820152606401610739565b601e8290556021819055602a81146109d057600e546001600160a01b03166000908152600560205260409020805460ff191660011790555b5050565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610771918590610832908690612432565b6000546001600160a01b03163314610a355760405162461bcd60e51b81526004016107399061238f565b60008183600c54610a4691906123da565b610a509190612410565b90506103e8600c54610a629190612410565b811015610ad75760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610739565b60158190556007548290610aec9085906123da565b610af69190612410565b601755505050565b6000546001600160a01b03163314610b285760405162461bcd60e51b81526004016107399061238f565b6001600160a01b038116610b4e5760405162461bcd60e51b81526004016107399061244a565b6012546001600160a01b0382811691161415610b7c5760405162461bcd60e51b81526004016107399061244a565b600080546001600160a01b03908116825260016020818152604080852054600483528186208786168752835281862055845490931684525290205415610be557600080546001600160a01b03168082526001602052604090912054610be391908390611760565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314610c5a5760405162461bcd60e51b81526004016107399061238f565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314610cc05760405162461bcd60e51b81526004016107399061238f565b80610ce757506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415610d4e5762093a8060035442610d0191906123f9565b11610d4e5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f74207365742061206e657720706169722074686973207765656b216044820152606401610739565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555050565b60606009805461068c90612354565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916107719185906108329086906123f9565b6000610837338484611760565b6000546001600160a01b03163314610df65760405162461bcd60e51b81526004016107399061238f565b601d805493151560ff1994851617905560248054921515928416929092179091556026805491151591909216179055565b6000546001600160a01b03163314610e515760405162461bcd60e51b81526004016107399061238f565b60285460ff1615610ea45760405162461bcd60e51b815260206004820152601d60248201527f436f6e747261637420616c726561647920696e697469616c697a65642e0000006044820152606401610739565b8251610eb7906008906020860190611f8f565b508151610ecb906009906020850190611f8f565b5060078190556402540be400811015610ef657600a805460ff19166012908117909155600b55610f0a565b600a805460ff19166009908117909155600b555b600b54610f1890600a61258b565b610f2290826123da565b600c81905560016000610f3d6000546001600160a01b031690565b6001600160a01b039081168252602080830193909352604091820160002093909355600f54600d80546001600160a01b03191691909416908117909355805163c45a015560e01b8152905163c45a015592600480840193919291829003018186803b158015610fab57600080fd5b505afa158015610fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe39190612597565b6001600160a01b031663c9c65396600d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561103f57600080fd5b505afa158015611053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110779190612597565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b1580156110be57600080fd5b505af11580156110d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f69190612597565b600e80546001600160a01b0319166001600160a01b039283169081179091556000908152600260209081526040808320805460ff191660011790553083526004808352818420600d805487168652908452938290206000199055925481516315ab88c960e31b8152915194169363ad5c4648938281019392829003018186803b15801561118257600080fd5b505afa158015611196573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ba9190612597565b601080546001600160a01b0319166001600160a01b03929092169190911790556111e660026064610a0b565b6111f360196103e8610841565b600f5461120b906001600160a01b0316600019610764565b506028805460ff19166001179055601154600c5460405133926001600160a01b0316917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9161125c91815260200190565b60405180910390a3505050565b6000546001600160a01b031633146112935760405162461bcd60e51b81526004016107399061238f565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156112d357600080fd5b505afa1580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b9190612597565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561135357600080fd5b505afa158015611367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138b9190612597565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156113d157600080fd5b505afa1580156113e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114099190612597565b90506001600160a01b0381166115af57816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561145257600080fd5b505afa158015611466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148a9190612597565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156114d257600080fd5b505afa1580156114e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150a9190612597565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561155257600080fd5b505af1158015611566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158a9190612597565b600e80546001600160a01b0319166001600160a01b03929092169190911790556115cb565b600e80546001600160a01b0319166001600160a01b0383161790555b50600d80546001600160a01b0319166001600160a01b039290921691909117905550565b6000546001600160a01b031633146116195760405162461bcd60e51b81526004016107399061238f565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166116a65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610739565b6001600160a01b0382166117075760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610739565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910161125c565b60006001600160a01b0384166117c65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610739565b6001600160a01b0383166118285760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610739565b6000821161188a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610739565b60245460ff16156118e7576025543a11156118e75760405162461bcd60e51b815260206004820152601860248201527f4761732070726963652065786365656473206c696d69742e00000000000000006044820152606401610739565b6118f18484611da2565b15611ad55760265460ff16156119a8576001600160a01b03841660009081526002602052604090205460ff1615611967576001600160a01b03831660009081526027602052604090205443141561194757600080fd5b6001600160a01b03831660009081526027602052604090204390556119a8565b6001600160a01b03841660009081526027602052604090205443141561198c57600080fd5b6001600160a01b03841660009081526027602052604090204390555b601554821115611a0b5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610739565b600f546001600160a01b03848116911614801590611a4257506001600160a01b03831660009081526002602052604090205460ff16155b15611ad557601a5482611a6a856001600160a01b031660009081526001602052604090205490565b611a749190612432565b1115611ad55760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610739565b601d5460ff1615611cef576001600160a01b03841660009081526005602052604090205460ff1680611b1f57506001600160a01b03831660009081526005602052604090205460ff165b15611b585760405162461bcd60e51b81526020600482015260096024820152682932b532b1ba32b21760b91b6044820152606401610739565b601d54610100900460ff16611bee57611b718484611e63565b601d54610100900460ff16158015611b8e5750611b8e8484611da2565b15611be95760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610739565b611cef565b611bf88484611da2565b15611c2657601e541580611c1c57506005600754611c169190612410565b601e5414155b15611c2657600080fd5b6000601f54118015611c5057506001600160a01b03841660009081526002602052604090205460ff165b8015611c615750611c618484611da2565b15611cef57602254601f54611c7690436123f9565b1015611cef576001600160a01b0383166000908152600560205260408120805460ff191660011790556023805491611cad836125b4565b90915550506040516001600160a01b03841681527f18e6e5ce5c121466e41a954e72765d1ea02b8e6919043b61f0dab08b4c6572e59060200160405180910390a15b6001600160a01b03841660009081526001602052604081208054849290611d179084906123f9565b90915550506001600160a01b03831660009081526001602052604081208054849290611d44908490612432565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d9091815260200190565b60405180910390a35060019392505050565b600080546001600160a01b03848116911614801590611dcf57506000546001600160a01b03838116911614155b8015611df457506001600160a01b03821660009081526006602052604090205460ff16155b8015611e1957506001600160a01b03831660009081526006602052604090205460ff16155b8015611e3357506012546001600160a01b03838116911614155b8015611e4757506001600160a01b03821615155b8015611e5c57506001600160a01b0383163014155b9392505050565b601d54610100900460ff1615611ec75760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610739565b611ed18282611da2565b158015611eeb5750600e546001600160a01b038281169116145b156109d05760016022541180611f015750602254155b15611f1a57611f12436101f4612432565b601f55611f1f565b43601f555b6001600160a01b038216600090815260066020908152604091829020805460ff19166001908117909155601d805461ff00191661010017905542825591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15050565b828054611f9b90612354565b90600052602060002090601f016020900481019282611fbd5760008555612003565b82601f10611fd657805160ff1916838001178555612003565b82800160010185558215612003579182015b82811115612003578251825591602001919060010190611fe8565b5061200f929150612013565b5090565b5b8082111561200f5760008155600101612014565b600060208083528351808285015260005b8181101561205557858101830151858201604001528201612039565b81811115612067576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561208f57600080fd5b5035919050565b6001600160a01b03811681146120ab57600080fd5b50565b600080604083850312156120c157600080fd5b82356120cc81612096565b946020939093013593505050565b600080604083850312156120ed57600080fd5b823560ff811681146120cc57600080fd5b60008060006060848603121561211357600080fd5b833561211e81612096565b9250602084013561212e81612096565b929592945050506040919091013590565b6000806040838503121561215257600080fd5b50508035926020909101359150565b60006020828403121561217357600080fd5b8135611e5c81612096565b8035801515811461218e57600080fd5b919050565b600080604083850312156121a657600080fd5b82356121b181612096565b91506121bf6020840161217e565b90509250929050565b6000806000606084860312156121dd57600080fd5b6121e68461217e565b92506121f46020850161217e565b91506122026040850161217e565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261223257600080fd5b813567ffffffffffffffff8082111561224d5761224d61220b565b604051601f8301601f19908116603f011681019082821181831017156122755761227561220b565b8160405283815286602085880101111561228e57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156122c357600080fd5b833567ffffffffffffffff808211156122db57600080fd5b6122e787838801612221565b945060208601359150808211156122fd57600080fd5b5061230a86828701612221565b925050604084013590509250925092565b6000806040838503121561232e57600080fd5b823561233981612096565b9150602083013561234981612096565b809150509250929050565b600181811c9082168061236857607f821691505b6020821081141561238957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156123f4576123f46123c4565b500290565b60008282101561240b5761240b6123c4565b500390565b60008261242d57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612445576124456123c4565b500190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600181815b808511156124e25781600019048211156124c8576124c86123c4565b808516156124d557918102915b93841c93908002906124ac565b509250929050565b6000826124f957506001610775565b8161250657506000610775565b816001811461251c576002811461252657612542565b6001915050610775565b60ff841115612537576125376123c4565b50506001821b610775565b5060208310610133831016604e8410600b8410161715612565575081810a610775565b61256f83836124a7565b8060001904821115612583576125836123c4565b029392505050565b6000611e5c83836124ea565b6000602082840312156125a957600080fd5b8151611e5c81612096565b60006000198214156125c8576125c86123c4565b506001019056fea26469706673582212207274b7d393f7d91efe6a0a0203826c47ba6a6657a5e25d0bd297ca9dbe00fdc164736f6c63430008090033

Deployed Bytecode Sourcemap

6996:15119:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14149:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7666:35;;;;;;;;;;-1:-1:-1;7666:35:0;;;;-1:-1:-1;;;;;7666:35:0;;;;;;-1:-1:-1;;;;;806:32:1;;;788:51;;776:2;761:18;7666:35:0;616:229:1;17678:134:0;;;;;;;;;;-1:-1:-1;17678:134:0;;;;;:::i;:::-;;:::i;:::-;;14730:161;;;;;;;;;;-1:-1:-1;14730:161:0;;;;;:::i;:::-;;:::i;:::-;;;1656:14:1;;1649:22;1631:41;;1619:2;1604:18;14730:161:0;1491:187:1;13902:83:0;;;;;;;;;;-1:-1:-1;13975:7:0;;13902:83;;;1829:25:1;;;1817:2;1802:18;13902:83:0;1683:177:1;17062:241:0;;;;;;;;;;-1:-1:-1;17062:241:0;;;;;:::i;:::-;;:::i;14899:266::-;;;;;;;;;;-1:-1:-1;14899:266:0;;;;;:::i;:::-;;:::i;18166:338::-;;;;;;;;;;-1:-1:-1;18166:338:0;;;;;:::i;:::-;;:::i;13991:71::-;;;;;;;;;;-1:-1:-1;14050:9:0;;13991:71;;14050:9;;;;3063:36:1;;3051:2;3036:18;13991:71:0;2921:184:1;16694:360:0;;;;;;;;;;-1:-1:-1;16694:360:0;;;;;:::i;:::-;;:::i;15173:215::-;;;;;;;;;;-1:-1:-1;15173:215:0;;;;;:::i;:::-;;:::i;17820:338::-;;;;;;;;;;-1:-1:-1;17820:338:0;;;;;:::i;:::-;;:::i;7708:21::-;;;;;;;;;;-1:-1:-1;7708:21:0;;;;-1:-1:-1;;;;;7708:21:0;;;12825:566;;;;;;;;;;-1:-1:-1;12825:566:0;;;;;:::i;:::-;;:::i;8708:36::-;;;;;;;;;;-1:-1:-1;8708:36:0;;;;;;;;;;;7868:64;;;;;;;;;;-1:-1:-1;7868:64:0;;;;-1:-1:-1;;;;;7868:64:0;;;8244:77;;;;;;;;;;;;;;;;14444:103;;;;;;;;;;-1:-1:-1;14444:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;14528:16:0;14510:7;14528:16;;;:7;:16;;;;;;;14444:103;7939:71;;;;;;;;;;-1:-1:-1;7939:71:0;;;;-1:-1:-1;;;;;7939:71:0;;;13399:150;;;;;;;;;;;;;:::i;16138:424::-;;;;;;;;;;-1:-1:-1;16138:424:0;;;;;:::i;:::-;;:::i;14226:71::-;;;;;;;;;;-1:-1:-1;14269:7:0;12803:6;-1:-1:-1;;;;;12803:6:0;14226:71;;14068:75;;;;;;;;;;;;;:::i;15396:225::-;;;;;;;;;;-1:-1:-1;15396:225:0;;;;;:::i;:::-;;:::i;14555:167::-;;;;;;;;;;-1:-1:-1;14555:167:0;;;;;:::i;:::-;;:::i;17452:218::-;;;;;;;;;;-1:-1:-1;17452:218:0;;;;;:::i;:::-;;:::i;11021:1164::-;;;;;;;;;;-1:-1:-1;11021:1164:0;;;;;:::i;:::-;;:::i;14303:133::-;;;;;;;;;;-1:-1:-1;14303:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;14405:19:0;;;14387:7;14405:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;14303:133;8959:32;;;;;;;;;;;;;;;;15629:501;;;;;;;;;;-1:-1:-1;15629:501:0;;;;;:::i;:::-;;:::i;17311:133::-;;;;;;;;;;-1:-1:-1;17311:133:0;;;;;:::i;:::-;;:::i;8569:87::-;;;;;;;;;;;;;;;;16570:116;;;;;;;;;;-1:-1:-1;16570:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;16655:23:0;16631:4;16655:23;;;:14;:23;;;;;;;;;16570:116;14149:71;14188:13;14212:5;14205:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14149:71;:::o;17678:134::-;9657:6;;-1:-1:-1;;;;;9657:6:0;189:10;9657:22;9649:67;;;;-1:-1:-1;;;9649:67:0;;;;;;;:::i;:::-;;;;;;;;;17762:2:::1;17755:3;:9;;17747:18;;;::::0;::::1;;17792:12;:3:::0;17798:6:::1;17792:12;:::i;:::-;17776:13;:28:::0;-1:-1:-1;17678:134:0:o;14730:161::-;14805:4;14822:39;189:10;14845:7;14854:6;14822:8;:39::i;:::-;-1:-1:-1;14879:4:0;14730:161;;;;;:::o;17062:241::-;9657:6;;-1:-1:-1;;;;;9657:6:0;189:10;9657:22;9649:67;;;;-1:-1:-1;;;9649:67:0;;;;;;;:::i;:::-;17160:13:::1;::::0;:18;:40;::::1;;;-1:-1:-1::0;17182:13:0::1;::::0;:18;17160:40:::1;:61;;;;-1:-1:-1::0;17205:16:0::1;::::0;::::1;::::0;::::1;;;17204:17;17160:61;17151:71;;;::::0;::::1;;17233:22;::::0;::::1;:13;:22:::0;17282:13:::1;:4:::0;17289:6:::1;17282:13;:::i;:::-;17266;:29:::0;-1:-1:-1;;17062:241:0:o;14899:266::-;14997:4;15014:36;15024:6;15032:9;15043:6;15014:9;:36::i;:::-;-1:-1:-1;;;;;;15092:19:0;;;;;;:11;:19;;;;;;;;189:10;15092:33;;;;;;;;;15061:74;;15070:6;;15092:42;;15128:6;;15092:42;:::i;:::-;15061:8;:74::i;:::-;-1:-1:-1;15153:4:0;14899:266;;;;;:::o;18166:338::-;9657:6;;-1:-1:-1;;;;;9657:6:0;189:10;9657:22;9649:67;;;;-1:-1:-1;;;9649:67:0;;;;;;;:::i;:::-;18254:13:::1;18292:7;18281;18271;;:17;;;;:::i;:::-;18270:29;;;;:::i;:::-;18254:45;;18338:4;18328:7;;:14;;;;:::i;:::-;18318:5;:25;;18310:88;;;::::0;-1:-1:-1;;;18310:88:0;;7846:2:1;18310:88:0::1;::::0;::::1;7828:21:1::0;7885:2;7865:18;;;7858:30;7924:34;7904:18;;;7897:62;-1:-1:-1;;;7975:18:1;;;7968:48;8033:19;;18310:88:0::1;7644:414:1::0;18310:88:0::1;18409:14;:22:::0;;;18461:14:::1;::::0;18489:7;;18461:24:::1;::::0;18478:7;;18461:24:::1;:::i;:::-;18460:36;;;;:::i;:::-;18442:15;:54:::0;-1:-1:-1;;;18166:338:0:o;16694:360::-;9657:6;;-1:-1:-1;;;;;9657:6:0;189:10;9657:22;9649:67;;;;-1:-1:-1;;;9649:67:0;;;;;;;:::i;:::-;16797:13:::1;::::0;:18;:50;::::1;;;-1:-1:-1::0;16819:23:0::1;::::0;:28;16797:50:::1;16788:70;;;::::0;-1:-1:-1;;;16788:70:0;;8265:2:1;16788:70:0::1;::::0;::::1;8247:21:1::0;8304:1;8284:18;;;8277:29;-1:-1:-1;;;8322:18:1;;;8315:36;8368:18;;16788:70:0::1;8063:329:1::0;16788:70:0::1;16869:13;:28:::0;;;16908:23:::1;:37:::0;;;16987:2:::1;16960:29:::0;::::1;16956:91;;17021:6;::::0;-1:-1:-1;;;;;17021:6:0::1;17006:22;::::0;;;:14:::1;:22;::::0;;;;:29;;-1:-1:-1;;17006:29:0::1;17031:4;17006:29;::::0;;16956:91:::1;16694:360:::0;;:::o;15173:215::-;189:10;15261:4;15310:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15310:34:0;;;;;;;;;;15261:4;;15278:80;;15301:7;;15310:47;;15347:10;;15310:47;:::i;17820:338::-;9657:6;;-1:-1:-1;;;;;9657:6:0;189:10;9657:22;9649:67;;;;-1:-1:-1;;;9649:67:0;;;;;;;:::i;:::-;17907:13:::1;17945:7;17934;17924;;:17;;;;:::i;:::-;17923:29;;;;:::i;:::-;17907:45;;17991:4;17981:7;;:14;;;;:::i;:::-;17971:5;:25;;17963:93;;;::::0;-1:-1:-1;;;17963:93:0;;8732:2:1;17963:93:0::1;::::0;::::1;8714:21:1::0;8771:2;8751:18;;;8744:30;8810:34;8790:18;;;8783:62;8881:25;8861:18;;;8854:53;8924:19;;17963:93:0::1;8530:419:1::0;17963:93:0::1;18067:12;:20:::0;;;18115:14:::1;::::0;18143:7;;18115:24:::1;::::0;18132:7;;18115:24:::1;:::i;:::-;18114:36;;;;:::i;:::-;18098:13;:52:::0;-1:-1:-1;;;17820:338:0:o;12825:566::-;9657:6;;-1:-1:-1;;;;;9657:6:0;189:10;9657:22;9649:67;;;;-1:-1:-1;;;9649:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12906:22:0;::::1;12898:96;;;;-1:-1:-1::0;;;12898:96:0::1;;;;;;;:::i;:::-;13025:11;::::0;-1:-1:-1;;;;;13013:23:0;;::::1;13025:11:::0;::::1;13013:23;;13005:97;;;;-1:-1:-1::0;;;13005:97:0::1;;;;;;;:::i;:::-;13165:6;::::0;;-1:-1:-1;;;;;13165:6:0;;::::1;14528:16:::0;;:7;:16;;;;;;;;;13123:11:::1;:19:::0;;;;;:29;;::::1;::::0;;;;;;;:49;13196:6;;;;::::1;14528:16:::0;;;;;;13186:21;13183:99:::1;;13234:6;::::0;;-1:-1:-1;;;;;13234:6:0::1;14528:16:::0;;;:7;:16;;;;;;;13224:46:::1;::::0;13234:6;13242:8;;13224:9:::1;:46::i;:::-;;13183:99;13302:6;:17:::0;;-1:-1:-1;;;;;;13302:17:0::1;-1:-1:-1::0;;;;;13302:17:0;::::1;::::0;;::::1;::::0;;13335:38:::1;::::0;13302:17;;;;13335:38:::1;::::0;13302:6;13335:38:::1;12825:566:::0;:::o;13399:150::-;9657:6;;-1:-1:-1;;;;;9657:6:0;189:10;9657:22;9649:67;;;;-1:-1:-1;;;9649:67:0;;;;;;;:::i;:::-;13483:1:::1;13466:19:::0;;-1:-1:-1;;;;;;13466:19:0::1;::::0;;13501:40:::1;::::0;13483:1;;13501:40:::1;::::0;13483:1;;13501:40:::1;13399:150::o:0;16138:424::-;9657:6;;-1:-1:-1;;;;;9657:6:0;189:10;9657:22;9649:67;;;;-1:-1:-1;;;9649:67:0;;;;;;;:::i;:::-;16219:16;16215:340:::1;;-1:-1:-1::0;;;;;;16252:13:0::1;16268:5;16252:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;16252:21:0::1;::::0;;16694:360::o;16215:340::-:1;16310:17;::::0;:22;16306:153:::1;;16399:7;16379:17;;16361:15;:35;;;;:::i;:::-;:45;16353:90;;;::::0;-1:-1:-1;;;16353:90:0;;9586:2:1;16353:90:0::1;::::0;::::1;9568:21:1::0;;;9605:18;;;9598:30;9664:34;9644:18;;;9637:62;9716:18;;16353:90:0::1;9384:356:1::0;16353:90:0::1;-1:-1:-1::0;;;;;16473:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;16473:20:0::1;16489:4;16473:20;::::0;;16528:15:::1;16508:17;:35:::0;16138:424;;:::o;14068:75::-;14109:13;14133:7;14126:14;;;;;:::i;15396:225::-;189:10;15489:4;15538:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15538:34:0;;;;;;;;;;15489:4;;15506:85;;15529:7;;15538:52;;15575:15;;15538:52;:::i;14555:167::-;14633:4;14650:42;189:10;14674:9;14685:6;14650:9;:42::i;17452:218::-;9657:6;;-1:-1:-1;;;;;9657:6:0;189:10;9657:22;9649:67;;;;-1:-1:-1;;;9649:67:0;;;;;;;:::i;:::-;17561:16:::1;:28:::0;;;::::1;;-1:-1:-1::0;;17561:28:0;;::::1;;::::0;;17600:14:::1;:24:::0;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;17635:15:::1;:27:::0;;;::::1;;::::0;;;::::1;;::::0;;17452:218::o;11021:1164::-;9657:6;;-1:-1:-1;;;;;9657:6:0;189:10;9657:22;9649:67;;;;-1:-1:-1;;;9649:67:0;;;;;;;:::i;:::-;11161:19:::1;::::0;::::1;;11160:20;11152:62;;;::::0;-1:-1:-1;;;11152:62:0;;9947:2:1;11152:62:0::1;::::0;::::1;9929:21:1::0;9986:2;9966:18;;;9959:30;10025:31;10005:18;;;9998:59;10074:18;;11152:62:0::1;9745:353:1::0;11152:62:0::1;11225:17:::0;;::::1;::::0;:5:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;11253:21:0;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;11285:14:0::1;:29:::0;;;11344:11:::1;11329:26:::0;::::1;11325:197;;;11372:9;:14:::0;;-1:-1:-1;;11372:14:0::1;11384:2;11372:14:::0;;::::1;::::0;;;11401:12:::1;:24:::0;11325:197:::1;;;11458:9;:13:::0;;-1:-1:-1;;11458:13:0::1;11470:1;11458:13:::0;;::::1;::::0;;;11486:12:::1;:24:::0;11325:197:::1;11562:12;::::0;11558:16:::1;::::0;:2:::1;:16;:::i;:::-;11542:33;::::0;:12;:33:::1;:::i;:::-;11532:7;:43:::0;;;11586:7:::1;:16;11594:7;12776::::0;12803:6;-1:-1:-1;;;;;12803:6:0;;12738:79;11594:7:::1;-1:-1:-1::0;;;;;11586:16:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;11586:16:0;:26;;;;11656:14:::1;::::0;11625:9:::1;:46:::0;;-1:-1:-1;;;;;;11625:46:0::1;11656:14:::0;;;::::1;11625:46:::0;;::::1;::::0;;;11709:19;;-1:-1:-1;;;11709:19:0;;;;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;11586:16;;11709:19;;;;;;11656:14;11709:19;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11691:49:0::1;;11741:9;;;;;;;;;-1:-1:-1::0;;;;;11741:9:0::1;-1:-1:-1::0;;;;;11741:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11691:82;::::0;-1:-1:-1;;;;;;11691:82:0::1;::::0;;;;;;-1:-1:-1;;;;;11963:15:1;;;11691:82:0::1;::::0;::::1;11945:34:1::0;11767:4:0::1;11995:18:1::0;;;11988:43;11880:18;;11691:82:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11682:6;:91:::0;;-1:-1:-1;;;;;;11682:91:0::1;-1:-1:-1::0;;;;;11682:91:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;11784:15:0;;;:7:::1;:15;::::0;;;;;;;:22;;-1:-1:-1;;11784:22:0::1;-1:-1:-1::0;11784:22:0::1;::::0;;11837:4:::1;11817:26:::0;;:11:::1;:26:::0;;;;;;11852:9:::1;::::0;;;::::1;11817:46:::0;;;;;;;;;-1:-1:-1;;11817:66:0;;11903:9;;:16;;-1:-1:-1;;;11903:16:0;;;;:9;::::1;::::0;:14:::1;::::0;:16;;::::1;::::0;11784:15;11903:16;;;;;:9;:16;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11896:4;:23:::0;;-1:-1:-1;;;;;;11896:23:0::1;-1:-1:-1::0;;;;;11896:23:0;;;::::1;::::0;;;::::1;::::0;;11932:22:::1;11948:1;11950:3;11932:15;:22::i;:::-;11965:25;11982:2;11985:4;11965:16;:25::i;:::-;12053:14;::::0;12045:42:::1;::::0;-1:-1:-1;;;;;12053:14:0::1;-1:-1:-1::0;;12045:7:0::1;:42::i;:::-;-1:-1:-1::0;12100:19:0::1;:26:::0;;-1:-1:-1;;12100:26:0::1;12122:4;12100:26;::::0;;12151:4:::1;::::0;12169:7:::1;::::0;12142:35:::1;::::0;12157:10:::1;::::0;-1:-1:-1;;;;;12151:4:0::1;::::0;12142:35:::1;::::0;::::1;::::0;1829:25:1;;1817:2;1802:18;;1683:177;12142:35:0::1;;;;;;;;11021:1164:::0;;;:::o;15629:501::-;9657:6;;-1:-1:-1;;;;;9657:6:0;189:10;9657:22;9649:67;;;;-1:-1:-1;;;9649:67:0;;;;;;;:::i;:::-;15700:29:::1;15751:9;15700:61;;15772:16;15809:10;-1:-1:-1::0;;;;;15809:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15791:47:0::1;;15847:4;15854:10;-1:-1:-1::0;;;;;15854:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15791:81;::::0;-1:-1:-1;;;;;;15791:81:0::1;::::0;;;;;;-1:-1:-1;;;;;11963:15:1;;;15791:81:0::1;::::0;::::1;11945:34:1::0;12015:15;;11995:18;;;11988:43;11880:18;;15791:81:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15772:100:::0;-1:-1:-1;;;;;;15887:22:0;::::1;15883:207;;15953:10;-1:-1:-1::0;;;;;15953:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15935:50:0::1;;15994:4;16001:10;-1:-1:-1::0;;;;;16001:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15935:84;::::0;-1:-1:-1;;;;;;15935:84:0::1;::::0;;;;;;-1:-1:-1;;;;;11963:15:1;;;15935:84:0::1;::::0;::::1;11945:34:1::0;12015:15;;11995:18;;;11988:43;11880:18;;15935:84:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15926:6;:93:::0;;-1:-1:-1;;;;;;15926:93:0::1;-1:-1:-1::0;;;;;15926:93:0;;;::::1;::::0;;;::::1;::::0;;15883:207:::1;;;16061:6;:17:::0;;-1:-1:-1;;;;;;16061:17:0::1;-1:-1:-1::0;;;;;16061:17:0;::::1;;::::0;;15883:207:::1;-1:-1:-1::0;16100:9:0::1;:22:::0;;-1:-1:-1;;;;;;16100:22:0::1;-1:-1:-1::0;;;;;16100:22:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;15629:501:0:o;17311:133::-;9657:6;;-1:-1:-1;;;;;9657:6:0;189:10;9657:22;9649:67;;;;-1:-1:-1;;;9649:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17403:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:33;;-1:-1:-1;;17403:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17311:133::o;18854:341::-;-1:-1:-1;;;;;18948:20:0;;18940:69;;;;-1:-1:-1;;;18940:69:0;;12244:2:1;18940:69:0;;;12226:21:1;12283:2;12263:18;;;12256:30;12322:34;12302:18;;;12295:62;-1:-1:-1;;;12373:18:1;;;12366:34;12417:19;;18940:69:0;12042:400:1;18940:69:0;-1:-1:-1;;;;;19028:21:0;;19020:68;;;;-1:-1:-1;;;19020:68:0;;12649:2:1;19020:68:0;;;12631:21:1;12688:2;12668:18;;;12661:30;12727:34;12707:18;;;12700:62;-1:-1:-1;;;12778:18:1;;;12771:32;12820:19;;19020:68:0;12447:398:1;19020:68:0;-1:-1:-1;;;;;19101:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;19154:33;;1829:25:1;;;19154:33:0;;1802:18:1;19154:33:0;1683:177:1;19203:2309:0;19282:4;-1:-1:-1;;;;;19307:18:0;;19299:68;;;;-1:-1:-1;;;19299:68:0;;13052:2:1;19299:68:0;;;13034:21:1;13091:2;13071:18;;;13064:30;13130:34;13110:18;;;13103:62;-1:-1:-1;;;13181:18:1;;;13174:35;13226:19;;19299:68:0;12850:401:1;19299:68:0;-1:-1:-1;;;;;19386:16:0;;19378:64;;;;-1:-1:-1;;;19378:64:0;;13458:2:1;19378:64:0;;;13440:21:1;13497:2;13477:18;;;13470:30;13536:34;13516:18;;;13509:62;-1:-1:-1;;;13587:18:1;;;13580:33;13630:19;;19378:64:0;13256:399:1;19378:64:0;19470:1;19461:6;:10;19453:64;;;;-1:-1:-1;;;19453:64:0;;13862:2:1;19453:64:0;;;13844:21:1;13901:2;13881:18;;;13874:30;13940:34;13920:18;;;13913:62;-1:-1:-1;;;13991:18:1;;;13984:39;14040:19;;19453:64:0;13660:405:1;19453:64:0;19532:14;;;;19528:112;;;19586:13;;19571:11;:28;;19563:65;;;;-1:-1:-1;;;19563:65:0;;14272:2:1;19563:65:0;;;14254:21:1;14311:2;14291:18;;;14284:30;14350:26;14330:18;;;14323:54;14394:18;;19563:65:0;14070:348:1;19563:65:0;19655:20;19666:4;19672:2;19655:10;:20::i;:::-;19652:673;;;19696:15;;;;19692:347;;;-1:-1:-1;;;;;19736:13:0;;;;;;:7;:13;;;;;;;;19732:292;;;-1:-1:-1;;;;;19781:13:0;;;;;;:9;:13;;;;;;19798:12;19781:29;;19773:38;;;;;;-1:-1:-1;;;;;19834:13:0;;;;;;:9;:13;;;;;19850:12;19834:28;;19732:292;;;-1:-1:-1;;;;;19919:15:0;;;;;;:9;:15;;;;;;19938:12;19919:31;;19911:40;;;;;;-1:-1:-1;;;;;19974:15:0;;;;;;:9;:15;;;;;19992:12;19974:30;;19732:292;20071:12;;20061:6;:22;;20053:75;;;;-1:-1:-1;;;20053:75:0;;14625:2:1;20053:75:0;;;14607:21:1;14664:2;14644:18;;;14637:30;14703:34;14683:18;;;14676:62;-1:-1:-1;;;14754:18:1;;;14747:38;14802:19;;20053:75:0;14423:404:1;20053:75:0;20152:14;;-1:-1:-1;;;;;20146:20:0;;;20152:14;;20146:20;;;;:36;;-1:-1:-1;;;;;;20171:11:0;;;;;;:7;:11;;;;;;;;20170:12;20146:36;20143:171;;;20237:14;;20227:6;20211:13;20221:2;-1:-1:-1;;;;;14528:16:0;14510:7;14528:16;;;:7;:16;;;;;;;14444:103;20211:13;:22;;;;:::i;:::-;:40;;20203:95;;;;-1:-1:-1;;;20203:95:0;;15034:2:1;20203:95:0;;;15016:21:1;15073:2;15053:18;;;15046:30;15112:34;15092:18;;;15085:62;-1:-1:-1;;;15163:18:1;;;15156:40;15213:19;;20203:95:0;14832:406:1;20203:95:0;20341:16;;;;20337:1034;;;-1:-1:-1;;;;;16655:23:0;;16631:4;16655:23;;;:14;:23;;;;;;;;20377:40;;;-1:-1:-1;;;;;;16655:23:0;;16631:4;16655:23;;;:14;:23;;;;;;;;20400:17;20373:100;;;20438:19;;-1:-1:-1;;;20438:19:0;;15445:2:1;20438:19:0;;;15427:21:1;15484:1;15464:18;;;15457:29;-1:-1:-1;;;15502:18:1;;;15495:39;15551:18;;20438:19:0;15243:332:1;20373:100:0;20494:16;;;;;;;20489:871;;20531:28;20550:4;20556:2;20531:18;:28::i;:::-;20583:16;;;;;;;20582:17;:41;;;;;20603:20;20614:4;20620:2;20603:10;:20::i;:::-;20578:137;;;20648:47;;-1:-1:-1;;;20648:47:0;;15782:2:1;20648:47:0;;;15764:21:1;15821:2;15801:18;;;15794:30;15860:34;15840:18;;;15833:62;-1:-1:-1;;;15911:18:1;;;15904:35;15956:19;;20648:47:0;15580:401:1;20578:137:0;20489:871;;;20759:20;20770:4;20776:2;20759:10;:20::i;:::-;20755:189;;;20807:13;;:18;;:57;;;20863:1;20846:14;;:18;;;;:::i;:::-;20829:13;;:35;;20807:57;20803:122;;;20893:8;;;20803:122;20981:1;20966:12;;:16;:55;;;;-1:-1:-1;;;;;;21008:13:0;;;;;;:7;:13;;;;;;;;20966:55;:101;;;;;21047:20;21058:4;21064:2;21047:10;:20::i;:::-;20962:383;;;21144:13;;21129:12;;21114:27;;:12;:27;:::i;:::-;:43;21110:216;;;-1:-1:-1;;;;;21186:18:0;;;;;;:14;:18;;;;;:25;;-1:-1:-1;;21186:25:0;21207:4;21186:25;;;21238:13;:16;;;;;;:::i;:::-;;;;-1:-1:-1;;21286:16:0;;-1:-1:-1;;;;;806:32:1;;788:51;;21286:16:0;;776:2:1;761:18;21286:16:0;;;;;;;21110:216;-1:-1:-1;;;;;21383:13:0;;;;;;:7;:13;;;;;:23;;21400:6;;21383:13;:23;;21400:6;;21383:23;:::i;:::-;;;;-1:-1:-1;;;;;;;21417:11:0;;;;;;:7;:11;;;;;:21;;21432:6;;21417:11;:21;;21432:6;;21417:21;:::i;:::-;;;;;;;;21471:2;-1:-1:-1;;;;;21456:26:0;21465:4;-1:-1:-1;;;;;21456:26:0;;21475:6;21456:26;;;;1829:25:1;;1817:2;1802:18;;1683:177;21456:26:0;;;;;;;;-1:-1:-1;21500:4:0;19203:2309;;;;;:::o;18512:330::-;18580:4;12803:6;;-1:-1:-1;;;;;18604:15:0;;;12803:6;;18604:15;;;;:45;;-1:-1:-1;12776:7:0;12803:6;-1:-1:-1;;;;;18636:13:0;;;12803:6;;18636:13;;18604:45;:84;;;;-1:-1:-1;;;;;;18667:21:0;;;;;;:17;:21;;;;;;;;18666:22;18604:84;:125;;;;-1:-1:-1;;;;;;18706:23:0;;;;;;:17;:23;;;;;;;;18705:24;18604:125;:159;;;;-1:-1:-1;18752:11:0;;-1:-1:-1;;;;;18746:17:0;;;18752:11;;18746:17;;18604:159;:192;;;;-1:-1:-1;;;;;;18780:16:0;;;;18604:192;:230;;;;-1:-1:-1;;;;;;18813:21:0;;18829:4;18813:21;;18604:230;18597:237;18512:330;-1:-1:-1;;;18512:330:0:o;21520:592::-;21602:16;;;;;;;21601:17;21593:65;;;;-1:-1:-1;;;21593:65:0;;16328:2:1;21593:65:0;;;16310:21:1;16367:2;16347:18;;;16340:30;16406:34;16386:18;;;16379:62;-1:-1:-1;;;16457:18:1;;;16450:33;16500:19;;21593:65:0;16126:399:1;21593:65:0;21674:20;21685:4;21691:2;21674:10;:20::i;:::-;21673:21;:37;;;;-1:-1:-1;21704:6:0;;-1:-1:-1;;;;;21698:12:0;;;21704:6;;21698:12;21673:37;21669:436;;;21747:1;21731:13;;:17;:39;;;-1:-1:-1;21752:13:0;;:18;21731:39;21727:181;;;21806:18;:12;21821:3;21806:18;:::i;:::-;21791:12;:33;21727:181;;;21880:12;21865;:27;21727:181;-1:-1:-1;;;;;21924:23:0;;;;;;:17;:23;;;;;;;;;:30;;-1:-1:-1;;21924:30:0;21950:4;21924:30;;;;;;21969:16;:23;;-1:-1:-1;;21969:23:0;21924:30;21969:23;;;22022:15;22007:30;;22059:34;;1631:41:1;;;22059:34:0;;1604:18:1;22059:34:0;;;;;;;21520:592;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:597:1;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;850:180::-;909:6;962:2;950:9;941:7;937:23;933:32;930:52;;;978:1;975;968:12;930:52;-1:-1:-1;1001:23:1;;850:180;-1:-1:-1;850:180:1:o;1035:131::-;-1:-1:-1;;;;;1110:31:1;;1100:42;;1090:70;;1156:1;1153;1146:12;1090:70;1035:131;:::o;1171:315::-;1239:6;1247;1300:2;1288:9;1279:7;1275:23;1271:32;1268:52;;;1316:1;1313;1306:12;1268:52;1355:9;1342:23;1374:31;1399:5;1374:31;:::i;:::-;1424:5;1476:2;1461:18;;;;1448:32;;-1:-1:-1;;;1171:315:1:o;1865:337::-;1931:6;1939;1992:2;1980:9;1971:7;1967:23;1963:32;1960:52;;;2008:1;2005;1998:12;1960:52;2047:9;2034:23;2097:4;2090:5;2086:16;2079:5;2076:27;2066:55;;2117:1;2114;2107:12;2207:456;2284:6;2292;2300;2353:2;2341:9;2332:7;2328:23;2324:32;2321:52;;;2369:1;2366;2359:12;2321:52;2408:9;2395:23;2427:31;2452:5;2427:31;:::i;:::-;2477:5;-1:-1:-1;2534:2:1;2519:18;;2506:32;2547:33;2506:32;2547:33;:::i;:::-;2207:456;;2599:7;;-1:-1:-1;;;2653:2:1;2638:18;;;;2625:32;;2207:456::o;2668:248::-;2736:6;2744;2797:2;2785:9;2776:7;2772:23;2768:32;2765:52;;;2813:1;2810;2803:12;2765:52;-1:-1:-1;;2836:23:1;;;2906:2;2891:18;;;2878:32;;-1:-1:-1;2668:248:1:o;3318:247::-;3377:6;3430:2;3418:9;3409:7;3405:23;3401:32;3398:52;;;3446:1;3443;3436:12;3398:52;3485:9;3472:23;3504:31;3529:5;3504:31;:::i;3570:160::-;3635:20;;3691:13;;3684:21;3674:32;;3664:60;;3720:1;3717;3710:12;3664:60;3570:160;;;:::o;3735:315::-;3800:6;3808;3861:2;3849:9;3840:7;3836:23;3832:32;3829:52;;;3877:1;3874;3867:12;3829:52;3916:9;3903:23;3935:31;3960:5;3935:31;:::i;:::-;3985:5;-1:-1:-1;4009:35:1;4040:2;4025:18;;4009:35;:::i;:::-;3999:45;;3735:315;;;;;:::o;4055:316::-;4123:6;4131;4139;4192:2;4180:9;4171:7;4167:23;4163:32;4160:52;;;4208:1;4205;4198:12;4160:52;4231:26;4247:9;4231:26;:::i;:::-;4221:36;;4276:35;4307:2;4296:9;4292:18;4276:35;:::i;:::-;4266:45;;4330:35;4361:2;4350:9;4346:18;4330:35;:::i;:::-;4320:45;;4055:316;;;;;:::o;4376:127::-;4437:10;4432:3;4428:20;4425:1;4418:31;4468:4;4465:1;4458:15;4492:4;4489:1;4482:15;4508:719;4551:5;4604:3;4597:4;4589:6;4585:17;4581:27;4571:55;;4622:1;4619;4612:12;4571:55;4658:6;4645:20;4684:18;4721:2;4717;4714:10;4711:36;;;4727:18;;:::i;:::-;4802:2;4796:9;4770:2;4856:13;;-1:-1:-1;;4852:22:1;;;4876:2;4848:31;4844:40;4832:53;;;4900:18;;;4920:22;;;4897:46;4894:72;;;4946:18;;:::i;:::-;4986:10;4982:2;4975:22;5021:2;5013:6;5006:18;5067:3;5060:4;5055:2;5047:6;5043:15;5039:26;5036:35;5033:55;;;5084:1;5081;5074:12;5033:55;5148:2;5141:4;5133:6;5129:17;5122:4;5114:6;5110:17;5097:54;5195:1;5188:4;5183:2;5175:6;5171:15;5167:26;5160:37;5215:6;5206:15;;;;;;4508:719;;;;:::o;5232:611::-;5329:6;5337;5345;5398:2;5386:9;5377:7;5373:23;5369:32;5366:52;;;5414:1;5411;5404:12;5366:52;5454:9;5441:23;5483:18;5524:2;5516:6;5513:14;5510:34;;;5540:1;5537;5530:12;5510:34;5563:50;5605:7;5596:6;5585:9;5581:22;5563:50;:::i;:::-;5553:60;;5666:2;5655:9;5651:18;5638:32;5622:48;;5695:2;5685:8;5682:16;5679:36;;;5711:1;5708;5701:12;5679:36;;5734:52;5778:7;5767:8;5756:9;5752:24;5734:52;:::i;:::-;5724:62;;;5833:2;5822:9;5818:18;5805:32;5795:42;;5232:611;;;;;:::o;5848:388::-;5916:6;5924;5977:2;5965:9;5956:7;5952:23;5948:32;5945:52;;;5993:1;5990;5983:12;5945:52;6032:9;6019:23;6051:31;6076:5;6051:31;:::i;:::-;6101:5;-1:-1:-1;6158:2:1;6143:18;;6130:32;6171:33;6130:32;6171:33;:::i;:::-;6223:7;6213:17;;;5848:388;;;;;:::o;6241:380::-;6320:1;6316:12;;;;6363;;;6384:61;;6438:4;6430:6;6426:17;6416:27;;6384:61;6491:2;6483:6;6480:14;6460:18;6457:38;6454:161;;;6537:10;6532:3;6528:20;6525:1;6518:31;6572:4;6569:1;6562:15;6600:4;6597:1;6590:15;6454:161;;6241:380;;;:::o;6626:356::-;6828:2;6810:21;;;6847:18;;;6840:30;6906:34;6901:2;6886:18;;6879:62;6973:2;6958:18;;6626:356::o;6987:127::-;7048:10;7043:3;7039:20;7036:1;7029:31;7079:4;7076:1;7069:15;7103:4;7100:1;7093:15;7119:168;7159:7;7225:1;7221;7217:6;7213:14;7210:1;7207:21;7202:1;7195:9;7188:17;7184:45;7181:71;;;7232:18;;:::i;:::-;-1:-1:-1;7272:9:1;;7119:168::o;7292:125::-;7332:4;7360:1;7357;7354:8;7351:34;;;7365:18;;:::i;:::-;-1:-1:-1;7402:9:1;;7292:125::o;7422:217::-;7462:1;7488;7478:132;;7532:10;7527:3;7523:20;7520:1;7513:31;7567:4;7564:1;7557:15;7595:4;7592:1;7585:15;7478:132;-1:-1:-1;7624:9:1;;7422:217::o;8397:128::-;8437:3;8468:1;8464:6;8461:1;8458:13;8455:39;;;8474:18;;:::i;:::-;-1:-1:-1;8510:9:1;;8397:128::o;8954:425::-;9156:2;9138:21;;;9195:2;9175:18;;;9168:30;9234:34;9229:2;9214:18;;9207:62;9305:31;9300:2;9285:18;;9278:59;9369:3;9354:19;;8954:425::o;10103:422::-;10192:1;10235:5;10192:1;10249:270;10270:7;10260:8;10257:21;10249:270;;;10329:4;10325:1;10321:6;10317:17;10311:4;10308:27;10305:53;;;10338:18;;:::i;:::-;10388:7;10378:8;10374:22;10371:55;;;10408:16;;;;10371:55;10487:22;;;;10447:15;;;;10249:270;;;10253:3;10103:422;;;;;:::o;10530:806::-;10579:5;10609:8;10599:80;;-1:-1:-1;10650:1:1;10664:5;;10599:80;10698:4;10688:76;;-1:-1:-1;10735:1:1;10749:5;;10688:76;10780:4;10798:1;10793:59;;;;10866:1;10861:130;;;;10773:218;;10793:59;10823:1;10814:10;;10837:5;;;10861:130;10898:3;10888:8;10885:17;10882:43;;;10905:18;;:::i;:::-;-1:-1:-1;;10961:1:1;10947:16;;10976:5;;10773:218;;11075:2;11065:8;11062:16;11056:3;11050:4;11047:13;11043:36;11037:2;11027:8;11024:16;11019:2;11013:4;11010:12;11006:35;11003:77;11000:159;;;-1:-1:-1;11112:19:1;;;11144:5;;11000:159;11191:34;11216:8;11210:4;11191:34;:::i;:::-;11261:6;11257:1;11253:6;11249:19;11240:7;11237:32;11234:58;;;11272:18;;:::i;:::-;11310:20;;10530:806;-1:-1:-1;;;10530:806:1:o;11341:131::-;11401:5;11430:36;11457:8;11451:4;11430:36;:::i;11477:251::-;11547:6;11600:2;11588:9;11579:7;11575:23;11571:32;11568:52;;;11616:1;11613;11606:12;11568:52;11648:9;11642:16;11667:31;11692:5;11667:31;:::i;15986:135::-;16025:3;-1:-1:-1;;16046:17:1;;16043:43;;;16066:18;;:::i;:::-;-1:-1:-1;16113:1:1;16102:13;;15986:135::o

Swarm Source

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