ETH Price: $2,406.65 (+1.70%)

Token

ECCO INU (ECCO)
 

Overview

Max Total Supply

10,000,000,000,000 ECCO

Holders

137

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,164,296,164.134726611144909805 ECCO

Value
$0.00
0x916154efb7323226497f7f79266e275819b0f08b
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:
ECCOINU

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-11-16
*/

// File: serviceScripts/EccoHelp.sol


pragma solidity ^0.8.7;

abstract contract ECCOHELP {
    function createdByECCO() public pure {
    }
}
// File: serviceScripts/SafeMath.sol



pragma solidity ^0.8.7;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}
// File: serviceScripts/IUniswapV2Factory.sol


pragma solidity ^0.8.7;

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

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

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
// File: serviceScripts/IERC20.sol


pragma solidity ^0.8.7;

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

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

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}
// File: serviceScripts/IUniswapV2Router02.sol


pragma solidity ^0.8.7;

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

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



pragma solidity ^0.8.7;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
// File: serviceScripts/ERC20Ownable.sol


pragma solidity ^0.8.7;


abstract contract ERC20Ownable is Context {
    address private _owner;

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

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

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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "ERC20Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
// File: contracts/EccoInu.sol










/*
website: https://eccoinu.com/
twitter: https://twitter.com/eccoinu
telegram: https://t.me/EccoInu
**/

pragma solidity ^0.8.7;

contract ECCOINU is IERC20, Context, ERC20Ownable, ECCOHELP {
    using SafeMath for uint256;
    address dead = 0x000000000000000000000000000000000000dEaD;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping (address => uint) private _setCoolDown;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;
    address[] private _excluded;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e13 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _maxTxAmount = _tTotal;
    uint256 private _tFeeTotal;
    string private constant _name = "ECCO INU";
    string private constant _symbol = "ECCO";
    uint8 private constant _decimals = 18;
    uint8 private _refTax = 2; // Fee for Reflection
    uint8 private _previousRefTax = _refTax;
    uint8 private _liqTax = 2; // Fee for Liquidity
    uint8 private _previousLiqTax = _liqTax;
    uint8 private _devTax = 6; // Fee to marketing/charity wallet
    uint8 private _previousDevTax = _devTax;
    IUniswapV2Router02 private pcsV2Router;
    address private pcsV2Pair;
    address payable private feeWallet;
    bool inSwapAndLiquify;
    bool private swapAndLiquifyEnabled = true;
    bool private coolDownEnabled = true;
    bool private _firstTrans = true;
    bool private _limitBuys = false;
    uint256 private numTokensSellToAddToLiquidity;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity);
    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    constructor() {
        _rOwned[_msgSender()] = _rTotal;
        feeWallet = payable(0xb818EFE183c98Ec1d78c394eD970aC9A3149165a);
        numTokensSellToAddToLiquidity = _tTotal.mul(1).div(1000);
        _isExcludedFromFee[_msgSender()] = true;
        _isExcludedFromFee[address(this)] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    function name() public pure override returns (string memory) {
        return _name;
    }
    function symbol() public pure override returns (string memory) {
        return _symbol;
    }
    function decimals() public pure override returns (uint8) {
        return _decimals;
    }
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function transferFrom(address sender,address recipient,uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender,_msgSender(),
        _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")
        );
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")
        );
        return true;
    }
    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        coolDownEnabled = onoff;
    }
    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount, , , , , ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }
    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) {
        require(tAmount <= _tTotal, "Amt must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount, , , , , ) = _getValues(tAmount);
            return rAmount;
        } else {
            (, uint256 rTransferAmount, , , , ) = _getValues(tAmount);
            return rTransferAmount;
        }
    }
    function tokenFromReflection(uint256 rAmount) public view returns (uint256) {
        require(rAmount <= _rTotal, "Amt must be less than tot refl");
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
    function failSafe() external onlyOwner {
        IUniswapV2Router02 _pcsV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pcsV2Router = _pcsV2Router;
        pcsV2Pair = IUniswapV2Factory(_pcsV2Router.factory()).getPair(address(this), _pcsV2Router.WETH());
    }
    receive() external payable {}
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
    function _getValues(uint256 tAmount) private view returns (uint256,uint256,uint256,uint256,uint256,uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity);
    }
    function _getTValues(uint256 tAmount)private view returns (uint256,uint256,uint256) {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }
    function _getRValues(uint256 tAmount,uint256 tFee,uint256 tLiquidity,uint256 currentRate) private pure returns (uint256,uint256,uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate = _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }
    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_refTax).div(10**2);
    }
    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liqTax + _devTax).div(10**2);
    }
    function removeAllFee() private {
        if (_refTax == 0 && _liqTax == 0 && _devTax == 0) return;

        _previousRefTax = _refTax;
        _previousLiqTax = _liqTax;
        _previousDevTax = _devTax;

        _refTax = 0;
        _liqTax = 0;
        _devTax = 0;
    }
    function restoreAllFee() private {
        _refTax = _previousRefTax;
        _liqTax = _previousLiqTax;
        _devTax = _previousDevTax;
    }
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }
    function _approve(address owner,address spender,uint256 amount) private {
        require(owner != address(0), "ERC20: approve from zero address");
        require(spender != address(0), "ERC20: approve to zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function _transfer(address from,address to,uint256 amount) private {
        require(from != address(0), "ERC20: transfer from zero address");
        require(to != address(0), "ERC20: transfer to zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (_limitBuys == true) {
            require(amount <= 50000000000 * 10**18);
        }
        if (from == pcsV2Pair && to != address(pcsV2Router) && ! _isExcludedFromFee[to] && coolDownEnabled) {
                require(amount <= _maxTxAmount);
                require(_setCoolDown[to] < block.timestamp);
                _setCoolDown[to] = block.timestamp + (30 seconds);
            }
        if(_firstTrans == true) {
            IUniswapV2Router02 _pcsV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            pcsV2Router = _pcsV2Router;
            pcsV2Pair = IUniswapV2Factory(_pcsV2Router.factory()).getPair(address(this), _pcsV2Router.WETH());
            _firstTrans = false;
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        if (!inSwapAndLiquify && to == pcsV2Pair && swapAndLiquifyEnabled) {
            if (contractTokenBalance >= numTokensSellToAddToLiquidity) {
                swapAndLiquify(contractTokenBalance);
            }
        }
        bool takeFee = true;
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        _tokenTransfer(from, to, amount, takeFee);
    }
    function firstTransferON() external onlyOwner {
        _firstTrans = true;
    }
    function SwapEnable() external onlyOwner {
        swapAndLiquifyEnabled = true;
    }
    function SwapDisable() external onlyOwner {
        swapAndLiquifyEnabled = false;
    }
    function LimitBuysOn() external onlyOwner {
        _limitBuys = true;
    }
    function LimitBuysOff() external onlyOwner {
        _limitBuys = false;
    }
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 spentAmount = 0;
        uint256 totSpentAmount = 0;
        if (_devTax != 0) {
            spentAmount = contractTokenBalance.mul(50).div(100);
            swapTokensForETH(spentAmount);
            sendTax(address(this).balance);
            totSpentAmount = totSpentAmount + spentAmount;
        }
        if (_liqTax != 0) {
            contractTokenBalance = contractTokenBalance.sub(totSpentAmount).mul(_liqTax).div(100);
            uint256 half = contractTokenBalance.div(2);
            uint256 otherHalf = contractTokenBalance.sub(half);
            uint256 initialBalance = address(this).balance;
            swapTokensForETH(half);
            uint256 newBalance = address(this).balance.sub(initialBalance);
            addLiquidity(otherHalf, newBalance);
            emit SwapAndLiquify(half, newBalance, otherHalf);
        }
    }
    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = pcsV2Router.WETH();
        _approve(address(this), address(pcsV2Router), tokenAmount);
        pcsV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp.add(300)
        );
    }
    function sendTax(uint256 amount) private {
        feeWallet.transfer(amount);
        block.timestamp.add(300);
    }
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(pcsV2Router), tokenAmount);
        pcsV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            dead,
            block.timestamp.add(300)
        );
    }
    function _tokenTransfer(address sender,address recipient,uint256 amount,bool takeFee) private {
        if (!takeFee) removeAllFee();
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        if (!takeFee) restoreAllFee();
    }
    function _transferStandard(address sender,address recipient,uint256 tAmount) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferToExcluded(address sender,address recipient,uint256 tAmount) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferFromExcluded(address sender,address recipient,uint256 tAmount) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _transferBothExcluded(address sender,address recipient,uint256 tAmount) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    function _tokenTransferNoFee(address sender,address recipient,uint256 amount) private {
        _rOwned[sender] = _rOwned[sender].sub(amount);
        _rOwned[recipient] = _rOwned[recipient].add(amount);

        if (_isExcluded[sender]) {
            _tOwned[sender] = _tOwned[sender].sub(amount);
        }
        if (_isExcluded[recipient]) {
            _tOwned[recipient] = _tOwned[recipient].add(amount);
        }
        emit Transfer(sender, recipient, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"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":"LimitBuysOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LimitBuysOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createdByECCO","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"failSafe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firstTransferON","outputs":[],"stateMutability":"nonpayable","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":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b03191661dead179055620000336c7e37be2022c0914b268000000060001962000292565b620000419060001962000278565b6009556c7e37be2022c0914b2680000000600a55600c80546501000000000064010000000064060000000060ff60201b196301000000620100006202020262ffffff19881681179190910460ff9081169290920263ffffffff19909716969096179095179081168217929092049093169190910261ffff60201b1990911617179055600e805463ffffffff60a81b19166201010160a81b179055348015620000e857600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060095433600090815260026020908152604090912091909155600e80546001600160a01b03191673b818efe183c98ec1d78c394ed970ac9a3149165a179055620001ac906103e89062000198906c7e37be2022c0914b26800000009060019062000e2962000222821b17901c565b6200023760201b62000e351790919060201c565b600f553360008181526006602090815260408083208054600160ff19918216811790925530855282852080549091169091179055516c7e37be2022c0914b268000000081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620002d5565b600062000230828462000256565b9392505050565b6000620002308284600082620002515762000251620002bf565b500490565b6000816000190483118215151615620002735762000273620002a9565b500290565b6000828210156200028d576200028d620002a9565b500390565b600082620002a457620002a4620002bf565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b61251180620002e56000396000f3fe6080604052600436106101bb5760003560e01c80635932ead1116100ec57806395d89b411161008a578063b8578bfd11610064578063b8578bfd14610507578063dd2a96771461051c578063dd62ed3e1461052b578063f2fde38b1461057157600080fd5b806395d89b411461049a578063a457c2d7146104c7578063a9059cbb146104e757600080fd5b80637b7141e4116100c65780637b7141e41461040f57806388f82020146104245780638da5cb5b1461045d5780638dd45fb21461048557600080fd5b80635932ead1146103ba57806370a08231146103da578063715018a6146103fa57600080fd5b8063395093511161015957806342fd8b121161013357806342fd8b121461032c578063437823ec146103415780634549b039146103615780635342acb41461038157600080fd5b806339509351146102d75780633bd5d173146102f75780633f97d3f41461031757600080fd5b806318160ddd1161019557806318160ddd1461025157806323b872dd1461027b5780632d8381191461029b578063313ce567146102bb57600080fd5b806306fdde03146101c7578063095ea7b31461020a5780630bc6c96e1461023a57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506040805180820190915260088152674543434f20494e5560c01b60208201525b604051610201919061228f565b60405180910390f35b34801561021657600080fd5b5061022a6102253660046121d5565b610591565b6040519015158152602001610201565b34801561024657600080fd5b5061024f6105a8565b005b34801561025d57600080fd5b506c7e37be2022c0914b26800000005b604051908152602001610201565b34801561028757600080fd5b5061022a610296366004612194565b6107b4565b3480156102a757600080fd5b5061026d6102b636600461221c565b61081d565b3480156102c757600080fd5b5060405160128152602001610201565b3480156102e357600080fd5b5061022a6102f23660046121d5565b61088e565b34801561030357600080fd5b5061024f61031236600461221c565b6108c4565b34801561032357600080fd5b5061024f6109ae565b34801561033857600080fd5b5061024f6109ed565b34801561034d57600080fd5b5061024f61035c366004612121565b610a2c565b34801561036d57600080fd5b5061026d61037c366004612235565b610a7a565b34801561038d57600080fd5b5061022a61039c366004612121565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156103c657600080fd5b5061024f6103d5366004612201565b610b12565b3480156103e657600080fd5b5061026d6103f5366004612121565b610b5a565b34801561040657600080fd5b5061024f610bb9565b34801561041b57600080fd5b5061024f610c2d565b34801561043057600080fd5b5061022a61043f366004612121565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561046957600080fd5b506000546040516001600160a01b039091168152602001610201565b34801561049157600080fd5b5061024f610c66565b3480156104a657600080fd5b506040805180820190915260048152634543434f60e01b60208201526101f4565b3480156104d357600080fd5b5061022a6104e23660046121d5565b610c9f565b3480156104f357600080fd5b5061022a6105023660046121d5565b610cee565b34801561051357600080fd5b5061024f610cfb565b34801561052857600080fd5b50005b34801561053757600080fd5b5061026d61054636600461215b565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561057d57600080fd5b5061024f61058c366004612121565b610d3a565b600061059e338484610e41565b5060015b92915050565b6000546001600160a01b031633146105db5760405162461bcd60e51b81526004016105d2906122e4565b60405180910390fd5b600c80546601000000000000600160d01b031916797a250d5630b4cf539739df2c5dacb4c659f2488d0000000000001790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a015591600480820192602092909190829003018186803b15801561065b57600080fd5b505afa15801561066f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610693919061213e565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156106db57600080fd5b505afa1580156106ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610713919061213e565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561075957600080fd5b505afa15801561076d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610791919061213e565b600d80546001600160a01b0319166001600160a01b039290921691909117905550565b60006107c1848484610f4e565b610813843361080e8560405180606001604052806028815260200161248f602891396001600160a01b038a166000908152600460209081526040808320338452909152902054919061141a565b610e41565b5060019392505050565b60006009548211156108715760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c000060448201526064016105d2565b600061087b611446565b90506108878382610e35565b9392505050565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161059e91859061080e9086611469565b3360008181526007602052604090205460ff16156109395760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016105d2565b600061094483611475565b505050506001600160a01b038416600090815260026020526040902054919250610970919050826114c4565b6001600160a01b03831660009081526002602052604090205560095461099690826114c4565b600955600b546109a69084611469565b600b55505050565b6000546001600160a01b031633146109d85760405162461bcd60e51b81526004016105d2906122e4565b600e805460ff60c01b1916600160c01b179055565b6000546001600160a01b03163314610a175760405162461bcd60e51b81526004016105d2906122e4565b600e805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610a565760405162461bcd60e51b81526004016105d2906122e4565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b60006c7e37be2022c0914b2680000000831115610ad95760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c790000000060448201526064016105d2565b81610af8576000610ae984611475565b509395506105a2945050505050565b6000610b0384611475565b509295506105a2945050505050565b6000546001600160a01b03163314610b3c5760405162461bcd60e51b81526004016105d2906122e4565b600e8054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b03811660009081526007602052604081205460ff1615610b9757506001600160a01b031660009081526003602052604090205490565b6001600160a01b0382166000908152600260205260409020546105a29061081d565b6000546001600160a01b03163314610be35760405162461bcd60e51b81526004016105d2906122e4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c575760405162461bcd60e51b81526004016105d2906122e4565b600e805460ff60c01b19169055565b6000546001600160a01b03163314610c905760405162461bcd60e51b81526004016105d2906122e4565b600e805460ff60a81b19169055565b600061059e338461080e856040518060600160405280602581526020016124b7602591393360009081526004602090815260408083206001600160a01b038d168452909152902054919061141a565b600061059e338484610f4e565b6000546001600160a01b03163314610d255760405162461bcd60e51b81526004016105d2906122e4565b600e805460ff60a81b1916600160a81b179055565b6000546001600160a01b03163314610d645760405162461bcd60e51b81526004016105d2906122e4565b6001600160a01b038116610dce5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016105d2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600061088782846123f9565b600061088782846123d7565b6001600160a01b038316610e975760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f206164647265737360448201526064016105d2565b6001600160a01b038216610eed5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f2061646472657373000060448201526064016105d2565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fae5760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b60648201526084016105d2565b6001600160a01b0382166110045760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f20616464726573730060448201526064016105d2565b600081116110665760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105d2565b600e54600160c01b900460ff16151560011415611096576ba18f07d736b90be55000000081111561109657600080fd5b600d546001600160a01b0384811691161480156110c85750600c546001600160a01b03838116600160301b9092041614155b80156110ed57506001600160a01b03821660009081526006602052604090205460ff16155b80156111025750600e54600160b01b900460ff165b1561115f57600a5481111561111657600080fd5b6001600160a01b038216600090815260056020526040902054421161113a57600080fd5b61114542601e61239a565b6001600160a01b0383166000908152600560205260409020555b600e54600160b81b900460ff1615156001141561135b57600c80546601000000000000600160d01b031916797a250d5630b4cf539739df2c5dacb4c659f2488d0000000000001790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a015591600480820192602092909190829003018186803b1580156111f657600080fd5b505afa15801561120a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122e919061213e565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561127657600080fd5b505afa15801561128a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ae919061213e565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156112f457600080fd5b505afa158015611308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132c919061213e565b600d80546001600160a01b0319166001600160a01b039290921691909117905550600e805460ff60b81b191690555b600061136630610b5a565b600e54909150600160a01b900460ff161580156113905750600d546001600160a01b038481169116145b80156113a55750600e54600160a81b900460ff165b156113bc57600f5481106113bc576113bc816114d0565b6001600160a01b03841660009081526006602052604090205460019060ff16806113fe57506001600160a01b03841660009081526006602052604090205460ff165b15611407575060005b61141385858584611603565b5050505050565b6000818484111561143e5760405162461bcd60e51b81526004016105d2919061228f565b505050900390565b60008060006114536117c4565b90925090506114628282610e35565b9250505090565b6000610887828461239a565b600080600080600080600080600061148c8a611970565b92509250925060008060006114aa8d86866114a5611446565b6119b2565b919f909e50909c50959a5093985091965092945050505050565b60006108878284612418565b600e805460ff60a01b1916600160a01b179055600c546000908190640100000000900460ff161561153257611511606461150b856032610e29565b90610e35565b915061151c82611a02565b61152547611b9c565b61152f828261239a565b90505b600c5462010000900460ff16156115f157600c5461156a9060649061150b9062010000900460ff1661156487866114c4565b90610e29565b92506000611579846002610e35565b9050600061158785836114c4565b90504761159383611a02565b600061159f47836114c4565b90506115ab8382611be7565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1505050505b5050600e805460ff60a01b1916905550565b8061161057611610611cde565b6001600160a01b03841660009081526007602052604090205460ff16801561165157506001600160a01b03831660009081526007602052604090205460ff16155b1561166657611661848484611d86565b611764565b6001600160a01b03841660009081526007602052604090205460ff161580156116a757506001600160a01b03831660009081526007602052604090205460ff165b156116b757611661848484611eac565b6001600160a01b03841660009081526007602052604090205460ff161580156116f957506001600160a01b03831660009081526007602052604090205460ff16155b1561170957611661848484611f55565b6001600160a01b03841660009081526007602052604090205460ff16801561174957506001600160a01b03831660009081526007602052604090205460ff165b1561175957611661848484611f99565b611764848484611f55565b806117be57600c805464ff000000001962ff00ff198216610100830460ff908116918217630100000060ff199095169290921793909304831662010000021790811665010000000000909104909116640100000000021790555b50505050565b60095460009081906c7e37be2022c0914b2680000000825b60085481101561192b578260026000600884815481106117fe576117fe612460565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611869575081600360006008848154811061184257611842612460565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611889575050600954936c7e37be2022c0914b26800000009350915050565b6118cf60026000600884815481106118a3576118a3612460565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906114c4565b925061191760036000600884815481106118eb576118eb612460565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906114c4565b9150806119238161242f565b9150506117dc565b50600954611946906c7e37be2022c0914b2680000000610e35565b821015611967575050600954926c7e37be2022c0914b268000000092509050565b90939092509050565b60008060008061197f8561200c565b9050600061198c86612027565b905060006119a48261199e89866114c4565b906114c4565b979296509094509092505050565b60008080806119c18886610e29565b905060006119cf8887610e29565b905060006119dd8888610e29565b905060006119ef8261199e86866114c4565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611a3757611a37612460565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611aa557600080fd5b505afa158015611ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611add919061213e565b81600181518110611af057611af0612460565b6001600160a01b039283166020918202929092010152600c54611b1d913091600160301b90041684610e41565b600c54600160301b90046001600160a01b031663791ac9478360008430611b464261012c611469565b6040518663ffffffff1660e01b8152600401611b66959493929190612329565b600060405180830381600087803b158015611b8057600080fd5b505af1158015611b94573d6000803e3d6000fd5b505050505050565b600e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611bd6573d6000803e3d6000fd5b50611be34261012c611469565b5050565b600c54611c06903090600160301b90046001600160a01b031684610e41565b600c546001546001600160a01b03600160301b90920482169163f305d71991849130918791600091829116611c3d4261012c611469565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b158015611ca557600080fd5b505af1158015611cb9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114139190612261565b600c5460ff16158015611cfa5750600c5462010000900460ff16155b8015611d115750600c54640100000000900460ff16155b15611d1857565b600c805464ff00ff00ff196501000000000064010000000063010000006201000060ff8087166101000261ff0019881681179290920481169290920263ff0000001990911663ff00ff00199096169590951794909417908104909316021665ffff00ff00ff19909116179055565b600080600080600080611d9887611475565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150611dca90886114c4565b6001600160a01b038a16600090815260036020908152604080832093909355600290522054611df990876114c4565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611e289086611469565b6001600160a01b038916600090815260026020526040902055611e4a8161205f565b611e5484836120e8565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611e9991815260200190565b60405180910390a3505050505050505050565b600080600080600080611ebe87611475565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611ef090876114c4565b6001600160a01b03808b16600090815260026020908152604080832094909455918b16815260039091522054611f269084611469565b6001600160a01b038916600090815260036020908152604080832093909355600290522054611e289086611469565b600080600080600080611f6787611475565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611df990876114c4565b600080600080600080611fab87611475565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150611fdd90886114c4565b6001600160a01b038a16600090815260036020908152604080832093909355600290522054611ef090876114c4565b600c546000906105a29060649061150b90859060ff16610e29565b600c546000906105a29060649061150b906120559060ff6401000000008204811691620100009004166123b2565b859060ff16610e29565b6000612069611446565b905060006120778383610e29565b306000908152600260205260409020549091506120949082611469565b3060009081526002602090815260408083209390935560079052205460ff16156120e357306000908152600360205260409020546120d29084611469565b306000908152600360205260409020555b505050565b6009546120f590836114c4565b600955600b546121059082611469565b600b555050565b8035801515811461211c57600080fd5b919050565b60006020828403121561213357600080fd5b813561088781612476565b60006020828403121561215057600080fd5b815161088781612476565b6000806040838503121561216e57600080fd5b823561217981612476565b9150602083013561218981612476565b809150509250929050565b6000806000606084860312156121a957600080fd5b83356121b481612476565b925060208401356121c481612476565b929592945050506040919091013590565b600080604083850312156121e857600080fd5b82356121f381612476565b946020939093013593505050565b60006020828403121561221357600080fd5b6108878261210c565b60006020828403121561222e57600080fd5b5035919050565b6000806040838503121561224857600080fd5b823591506122586020840161210c565b90509250929050565b60008060006060848603121561227657600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156122bc578581018301518582016040015282016122a0565b818111156122ce576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123795784516001600160a01b031683529383019391830191600101612354565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156123ad576123ad61244a565b500190565b600060ff821660ff84168060ff038211156123cf576123cf61244a565b019392505050565b6000826123f457634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156124135761241361244a565b500290565b60008282101561242a5761242a61244a565b500390565b60006000198214156124435761244361244a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461248b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206d2c96ea8e5acc04dcadddb81556e9b15a6b2bc4cd97ccb1f883a72fb325496064736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c80635932ead1116100ec57806395d89b411161008a578063b8578bfd11610064578063b8578bfd14610507578063dd2a96771461051c578063dd62ed3e1461052b578063f2fde38b1461057157600080fd5b806395d89b411461049a578063a457c2d7146104c7578063a9059cbb146104e757600080fd5b80637b7141e4116100c65780637b7141e41461040f57806388f82020146104245780638da5cb5b1461045d5780638dd45fb21461048557600080fd5b80635932ead1146103ba57806370a08231146103da578063715018a6146103fa57600080fd5b8063395093511161015957806342fd8b121161013357806342fd8b121461032c578063437823ec146103415780634549b039146103615780635342acb41461038157600080fd5b806339509351146102d75780633bd5d173146102f75780633f97d3f41461031757600080fd5b806318160ddd1161019557806318160ddd1461025157806323b872dd1461027b5780632d8381191461029b578063313ce567146102bb57600080fd5b806306fdde03146101c7578063095ea7b31461020a5780630bc6c96e1461023a57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506040805180820190915260088152674543434f20494e5560c01b60208201525b604051610201919061228f565b60405180910390f35b34801561021657600080fd5b5061022a6102253660046121d5565b610591565b6040519015158152602001610201565b34801561024657600080fd5b5061024f6105a8565b005b34801561025d57600080fd5b506c7e37be2022c0914b26800000005b604051908152602001610201565b34801561028757600080fd5b5061022a610296366004612194565b6107b4565b3480156102a757600080fd5b5061026d6102b636600461221c565b61081d565b3480156102c757600080fd5b5060405160128152602001610201565b3480156102e357600080fd5b5061022a6102f23660046121d5565b61088e565b34801561030357600080fd5b5061024f61031236600461221c565b6108c4565b34801561032357600080fd5b5061024f6109ae565b34801561033857600080fd5b5061024f6109ed565b34801561034d57600080fd5b5061024f61035c366004612121565b610a2c565b34801561036d57600080fd5b5061026d61037c366004612235565b610a7a565b34801561038d57600080fd5b5061022a61039c366004612121565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156103c657600080fd5b5061024f6103d5366004612201565b610b12565b3480156103e657600080fd5b5061026d6103f5366004612121565b610b5a565b34801561040657600080fd5b5061024f610bb9565b34801561041b57600080fd5b5061024f610c2d565b34801561043057600080fd5b5061022a61043f366004612121565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561046957600080fd5b506000546040516001600160a01b039091168152602001610201565b34801561049157600080fd5b5061024f610c66565b3480156104a657600080fd5b506040805180820190915260048152634543434f60e01b60208201526101f4565b3480156104d357600080fd5b5061022a6104e23660046121d5565b610c9f565b3480156104f357600080fd5b5061022a6105023660046121d5565b610cee565b34801561051357600080fd5b5061024f610cfb565b34801561052857600080fd5b50005b34801561053757600080fd5b5061026d61054636600461215b565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561057d57600080fd5b5061024f61058c366004612121565b610d3a565b600061059e338484610e41565b5060015b92915050565b6000546001600160a01b031633146105db5760405162461bcd60e51b81526004016105d2906122e4565b60405180910390fd5b600c80546601000000000000600160d01b031916797a250d5630b4cf539739df2c5dacb4c659f2488d0000000000001790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a015591600480820192602092909190829003018186803b15801561065b57600080fd5b505afa15801561066f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610693919061213e565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156106db57600080fd5b505afa1580156106ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610713919061213e565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561075957600080fd5b505afa15801561076d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610791919061213e565b600d80546001600160a01b0319166001600160a01b039290921691909117905550565b60006107c1848484610f4e565b610813843361080e8560405180606001604052806028815260200161248f602891396001600160a01b038a166000908152600460209081526040808320338452909152902054919061141a565b610e41565b5060019392505050565b60006009548211156108715760405162461bcd60e51b815260206004820152601e60248201527f416d74206d757374206265206c657373207468616e20746f74207265666c000060448201526064016105d2565b600061087b611446565b90506108878382610e35565b9392505050565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161059e91859061080e9086611469565b3360008181526007602052604090205460ff16156109395760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016105d2565b600061094483611475565b505050506001600160a01b038416600090815260026020526040902054919250610970919050826114c4565b6001600160a01b03831660009081526002602052604090205560095461099690826114c4565b600955600b546109a69084611469565b600b55505050565b6000546001600160a01b031633146109d85760405162461bcd60e51b81526004016105d2906122e4565b600e805460ff60c01b1916600160c01b179055565b6000546001600160a01b03163314610a175760405162461bcd60e51b81526004016105d2906122e4565b600e805460ff60b81b1916600160b81b179055565b6000546001600160a01b03163314610a565760405162461bcd60e51b81526004016105d2906122e4565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b60006c7e37be2022c0914b2680000000831115610ad95760405162461bcd60e51b815260206004820152601c60248201527f416d74206d757374206265206c657373207468616e20737570706c790000000060448201526064016105d2565b81610af8576000610ae984611475565b509395506105a2945050505050565b6000610b0384611475565b509295506105a2945050505050565b6000546001600160a01b03163314610b3c5760405162461bcd60e51b81526004016105d2906122e4565b600e8054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b03811660009081526007602052604081205460ff1615610b9757506001600160a01b031660009081526003602052604090205490565b6001600160a01b0382166000908152600260205260409020546105a29061081d565b6000546001600160a01b03163314610be35760405162461bcd60e51b81526004016105d2906122e4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610c575760405162461bcd60e51b81526004016105d2906122e4565b600e805460ff60c01b19169055565b6000546001600160a01b03163314610c905760405162461bcd60e51b81526004016105d2906122e4565b600e805460ff60a81b19169055565b600061059e338461080e856040518060600160405280602581526020016124b7602591393360009081526004602090815260408083206001600160a01b038d168452909152902054919061141a565b600061059e338484610f4e565b6000546001600160a01b03163314610d255760405162461bcd60e51b81526004016105d2906122e4565b600e805460ff60a81b1916600160a81b179055565b6000546001600160a01b03163314610d645760405162461bcd60e51b81526004016105d2906122e4565b6001600160a01b038116610dce5760405162461bcd60e51b815260206004820152602b60248201527f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016105d2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600061088782846123f9565b600061088782846123d7565b6001600160a01b038316610e975760405162461bcd60e51b815260206004820181905260248201527f45524332303a20617070726f76652066726f6d207a65726f206164647265737360448201526064016105d2565b6001600160a01b038216610eed5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20617070726f766520746f207a65726f2061646472657373000060448201526064016105d2565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fae5760405162461bcd60e51b815260206004820152602160248201527f45524332303a207472616e736665722066726f6d207a65726f206164647265736044820152607360f81b60648201526084016105d2565b6001600160a01b0382166110045760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220746f207a65726f20616464726573730060448201526064016105d2565b600081116110665760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105d2565b600e54600160c01b900460ff16151560011415611096576ba18f07d736b90be55000000081111561109657600080fd5b600d546001600160a01b0384811691161480156110c85750600c546001600160a01b03838116600160301b9092041614155b80156110ed57506001600160a01b03821660009081526006602052604090205460ff16155b80156111025750600e54600160b01b900460ff165b1561115f57600a5481111561111657600080fd5b6001600160a01b038216600090815260056020526040902054421161113a57600080fd5b61114542601e61239a565b6001600160a01b0383166000908152600560205260409020555b600e54600160b81b900460ff1615156001141561135b57600c80546601000000000000600160d01b031916797a250d5630b4cf539739df2c5dacb4c659f2488d0000000000001790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a015591600480820192602092909190829003018186803b1580156111f657600080fd5b505afa15801561120a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122e919061213e565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561127657600080fd5b505afa15801561128a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ae919061213e565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156112f457600080fd5b505afa158015611308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132c919061213e565b600d80546001600160a01b0319166001600160a01b039290921691909117905550600e805460ff60b81b191690555b600061136630610b5a565b600e54909150600160a01b900460ff161580156113905750600d546001600160a01b038481169116145b80156113a55750600e54600160a81b900460ff165b156113bc57600f5481106113bc576113bc816114d0565b6001600160a01b03841660009081526006602052604090205460019060ff16806113fe57506001600160a01b03841660009081526006602052604090205460ff165b15611407575060005b61141385858584611603565b5050505050565b6000818484111561143e5760405162461bcd60e51b81526004016105d2919061228f565b505050900390565b60008060006114536117c4565b90925090506114628282610e35565b9250505090565b6000610887828461239a565b600080600080600080600080600061148c8a611970565b92509250925060008060006114aa8d86866114a5611446565b6119b2565b919f909e50909c50959a5093985091965092945050505050565b60006108878284612418565b600e805460ff60a01b1916600160a01b179055600c546000908190640100000000900460ff161561153257611511606461150b856032610e29565b90610e35565b915061151c82611a02565b61152547611b9c565b61152f828261239a565b90505b600c5462010000900460ff16156115f157600c5461156a9060649061150b9062010000900460ff1661156487866114c4565b90610e29565b92506000611579846002610e35565b9050600061158785836114c4565b90504761159383611a02565b600061159f47836114c4565b90506115ab8382611be7565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a1505050505b5050600e805460ff60a01b1916905550565b8061161057611610611cde565b6001600160a01b03841660009081526007602052604090205460ff16801561165157506001600160a01b03831660009081526007602052604090205460ff16155b1561166657611661848484611d86565b611764565b6001600160a01b03841660009081526007602052604090205460ff161580156116a757506001600160a01b03831660009081526007602052604090205460ff165b156116b757611661848484611eac565b6001600160a01b03841660009081526007602052604090205460ff161580156116f957506001600160a01b03831660009081526007602052604090205460ff16155b1561170957611661848484611f55565b6001600160a01b03841660009081526007602052604090205460ff16801561174957506001600160a01b03831660009081526007602052604090205460ff165b1561175957611661848484611f99565b611764848484611f55565b806117be57600c805464ff000000001962ff00ff198216610100830460ff908116918217630100000060ff199095169290921793909304831662010000021790811665010000000000909104909116640100000000021790555b50505050565b60095460009081906c7e37be2022c0914b2680000000825b60085481101561192b578260026000600884815481106117fe576117fe612460565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611869575081600360006008848154811061184257611842612460565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611889575050600954936c7e37be2022c0914b26800000009350915050565b6118cf60026000600884815481106118a3576118a3612460565b60009182526020808320909101546001600160a01b0316835282019290925260400190205484906114c4565b925061191760036000600884815481106118eb576118eb612460565b60009182526020808320909101546001600160a01b0316835282019290925260400190205483906114c4565b9150806119238161242f565b9150506117dc565b50600954611946906c7e37be2022c0914b2680000000610e35565b821015611967575050600954926c7e37be2022c0914b268000000092509050565b90939092509050565b60008060008061197f8561200c565b9050600061198c86612027565b905060006119a48261199e89866114c4565b906114c4565b979296509094509092505050565b60008080806119c18886610e29565b905060006119cf8887610e29565b905060006119dd8888610e29565b905060006119ef8261199e86866114c4565b939b939a50919850919650505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611a3757611a37612460565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611aa557600080fd5b505afa158015611ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611add919061213e565b81600181518110611af057611af0612460565b6001600160a01b039283166020918202929092010152600c54611b1d913091600160301b90041684610e41565b600c54600160301b90046001600160a01b031663791ac9478360008430611b464261012c611469565b6040518663ffffffff1660e01b8152600401611b66959493929190612329565b600060405180830381600087803b158015611b8057600080fd5b505af1158015611b94573d6000803e3d6000fd5b505050505050565b600e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611bd6573d6000803e3d6000fd5b50611be34261012c611469565b5050565b600c54611c06903090600160301b90046001600160a01b031684610e41565b600c546001546001600160a01b03600160301b90920482169163f305d71991849130918791600091829116611c3d4261012c611469565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b158015611ca557600080fd5b505af1158015611cb9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114139190612261565b600c5460ff16158015611cfa5750600c5462010000900460ff16155b8015611d115750600c54640100000000900460ff16155b15611d1857565b600c805464ff00ff00ff196501000000000064010000000063010000006201000060ff8087166101000261ff0019881681179290920481169290920263ff0000001990911663ff00ff00199096169590951794909417908104909316021665ffff00ff00ff19909116179055565b600080600080600080611d9887611475565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150611dca90886114c4565b6001600160a01b038a16600090815260036020908152604080832093909355600290522054611df990876114c4565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611e289086611469565b6001600160a01b038916600090815260026020526040902055611e4a8161205f565b611e5484836120e8565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611e9991815260200190565b60405180910390a3505050505050505050565b600080600080600080611ebe87611475565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611ef090876114c4565b6001600160a01b03808b16600090815260026020908152604080832094909455918b16815260039091522054611f269084611469565b6001600160a01b038916600090815260036020908152604080832093909355600290522054611e289086611469565b600080600080600080611f6787611475565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611df990876114c4565b600080600080600080611fab87611475565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150611fdd90886114c4565b6001600160a01b038a16600090815260036020908152604080832093909355600290522054611ef090876114c4565b600c546000906105a29060649061150b90859060ff16610e29565b600c546000906105a29060649061150b906120559060ff6401000000008204811691620100009004166123b2565b859060ff16610e29565b6000612069611446565b905060006120778383610e29565b306000908152600260205260409020549091506120949082611469565b3060009081526002602090815260408083209390935560079052205460ff16156120e357306000908152600360205260409020546120d29084611469565b306000908152600360205260409020555b505050565b6009546120f590836114c4565b600955600b546121059082611469565b600b555050565b8035801515811461211c57600080fd5b919050565b60006020828403121561213357600080fd5b813561088781612476565b60006020828403121561215057600080fd5b815161088781612476565b6000806040838503121561216e57600080fd5b823561217981612476565b9150602083013561218981612476565b809150509250929050565b6000806000606084860312156121a957600080fd5b83356121b481612476565b925060208401356121c481612476565b929592945050506040919091013590565b600080604083850312156121e857600080fd5b82356121f381612476565b946020939093013593505050565b60006020828403121561221357600080fd5b6108878261210c565b60006020828403121561222e57600080fd5b5035919050565b6000806040838503121561224857600080fd5b823591506122586020840161210c565b90509250929050565b60008060006060848603121561227657600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156122bc578581018301518582016040015282016122a0565b818111156122ce576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526025908201527f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123795784516001600160a01b031683529383019391830191600101612354565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156123ad576123ad61244a565b500190565b600060ff821660ff84168060ff038211156123cf576123cf61244a565b019392505050565b6000826123f457634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156124135761241361244a565b500290565b60008282101561242a5761242a61244a565b500390565b60006000198214156124435761244361244a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461248b57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206d2c96ea8e5acc04dcadddb81556e9b15a6b2bc4cd97ccb1f883a72fb325496064736f6c63430008070033

Deployed Bytecode Sourcemap

14353:17580:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16635:92;;;;;;;;;;-1:-1:-1;16714:5:0;;;;;;;;;;;;-1:-1:-1;;;16714:5:0;;;;16635:92;;;;;;;:::i;:::-;;;;;;;;17560:161;;;;;;;;;;-1:-1:-1;17560:161:0;;;;;:::i;:::-;;:::i;:::-;;;4089:14:1;;4082:22;4064:41;;4052:2;4037:18;17560:161:0;3924:187:1;19933:299:0;;;;;;;;;;;;;:::i;:::-;;16933:95;;;;;;;;;;-1:-1:-1;14971:13:0;16933:95;;;8703:25:1;;;8691:2;8676:18;16933:95:0;8557:177:1;17727:329:0;;;;;;;;;;-1:-1:-1;17727:329:0;;;;;:::i;:::-;;:::i;19686:241::-;;;;;;;;;;-1:-1:-1;19686:241:0;;;;;:::i;:::-;;:::i;16835:92::-;;;;;;;;;;-1:-1:-1;16835:92:0;;15256:2;10190:36:1;;10178:2;10163:18;16835:92:0;10048:184:1;18062:218:0;;;;;;;;;;-1:-1:-1;18062:218:0;;;;;:::i;:::-;;:::i;18848:382::-;;;;;;;;;;-1:-1:-1;18848:382:0;;;;;:::i;:::-;;:::i;25821:78::-;;;;;;;;;;;;;:::i;25542:83::-;;;;;;;;;;;;;:::i;23423:111::-;;;;;;;;;;-1:-1:-1;23423:111:0;;;;;:::i;:::-;;:::i;19236:444::-;;;;;;;;;;-1:-1:-1;19236:444:0;;;;;:::i;:::-;;:::i;23540:124::-;;;;;;;;;;-1:-1:-1;23540:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;23629:27:0;23605:4;23629:27;;;:18;:27;;;;;;;;;23540:124;18739:103;;;;;;;;;;-1:-1:-1;18739:103:0;;;;;:::i;:::-;;:::i;17034:198::-;;;;;;;;;;-1:-1:-1;17034:198:0;;;;;:::i;:::-;;:::i;13752:148::-;;;;;;;;;;;;;:::i;25905:80::-;;;;;;;;;;;;;:::i;18611:120::-;;;;;;;;;;-1:-1:-1;18611:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;18703:20:0;18679:4;18703:20;;;:11;:20;;;;;;;;;18611:120;13524:87;;;;;;;;;;-1:-1:-1;13570:7:0;13597:6;13524:87;;-1:-1:-1;;;;;13597:6:0;;;2941:51:1;;2929:2;2914:18;13524:87:0;2795:203:1;25725:90:0;;;;;;;;;;;;;:::i;16733:96::-;;;;;;;;;;-1:-1:-1;16814:7:0;;;;;;;;;;;;-1:-1:-1;;;16814:7:0;;;;16733:96;;18286:319;;;;;;;;;;-1:-1:-1;18286:319:0;;;;;:::i;:::-;;:::i;17238:167::-;;;;;;;;;;-1:-1:-1;17238:167:0;;;;;:::i;:::-;;:::i;25631:88::-;;;;;;;;;;;;;:::i;103:45::-;;;;;;;;;;;19933:299;17411:143;;;;;;;;;;-1:-1:-1;17411:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;17519:18:0;;;17492:7;17519:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;17411:143;13908:249;;;;;;;;;;-1:-1:-1;13908:249:0;;;;;:::i;:::-;;:::i;17560:161::-;17635:4;17652:39;13093:10;17675:7;17684:6;17652:8;:39::i;:::-;-1:-1:-1;17709:4:0;17560:161;;;;;:::o;19933:299::-;13570:7;13597:6;-1:-1:-1;;;;;13597:6:0;13093:10;13659:23;13651:73;;;;-1:-1:-1;;;13651:73:0;;;;;;;:::i;:::-;;;;;;;;;20090:11:::1;:26:::0;;-1:-1:-1;;;;;;20090:26:0::1;::::0;::::1;::::0;;20157:22:::1;::::0;;-1:-1:-1;;;20157:22:0;;;;20036:42:::1;::::0;;;20157:20:::1;::::0;:22:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;20036:42;20157:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20139:49:0::1;;20197:4;20204:12;-1:-1:-1::0;;;;;20204:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20139:85;::::0;-1:-1:-1;;;;;;20139:85:0::1;::::0;;;;;;-1:-1:-1;;;;;3233:15:1;;;20139:85:0::1;::::0;::::1;3215:34:1::0;3285:15;;3265:18;;;3258:43;3150:18;;20139:85:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20127:9;:97:::0;;-1:-1:-1;;;;;;20127:97:0::1;-1:-1:-1::0;;;;;20127:97:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;19933:299:0:o;17727:329::-;17823:4;17840:36;17850:6;17858:9;17869:6;17840:9;:36::i;:::-;17887:139;17896:6;13093:10;17926:89;17964:6;17926:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17926:19:0;;;;;;:11;:19;;;;;;;;13093:10;17926:33;;;;;;;;;;:37;:89::i;:::-;17887:8;:139::i;:::-;-1:-1:-1;18044:4:0;17727:329;;;;;:::o;19686:241::-;19753:7;19792;;19781;:18;;19773:61;;;;-1:-1:-1;;;19773:61:0;;6398:2:1;19773:61:0;;;6380:21:1;6437:2;6417:18;;;6410:30;6476:32;6456:18;;;6449:60;6526:18;;19773:61:0;6196:354:1;19773:61:0;19845:19;19867:10;:8;:10::i;:::-;19845:32;-1:-1:-1;19895:24:0;:7;19845:32;19895:11;:24::i;:::-;19888:31;19686:241;-1:-1:-1;;;19686:241:0:o;18062:218::-;13093:10;18150:4;18199:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18199:34:0;;;;;;;;;;18150:4;;18167:83;;18190:7;;18199:50;;18238:10;18199:38;:50::i;18848:382::-;13093:10;18900:14;18949:19;;;:11;:19;;;;;;;;18948:20;18940:77;;;;-1:-1:-1;;;18940:77:0;;7985:2:1;18940:77:0;;;7967:21:1;8024:2;8004:18;;;7997:30;8063:34;8043:18;;;8036:62;-1:-1:-1;;;8114:18:1;;;8107:42;8166:19;;18940:77:0;7783:408:1;18940:77:0;19029:15;19058:19;19069:7;19058:10;:19::i;:::-;-1:-1:-1;;;;;;;;;19106:15:0;;;;;;:7;:15;;;;;;19028:49;;-1:-1:-1;19106:28:0;;:15;-1:-1:-1;19028:49:0;19106:19;:28::i;:::-;-1:-1:-1;;;;;19088:15:0;;;;;;:7;:15;;;;;:46;19155:7;;:20;;19167:7;19155:11;:20::i;:::-;19145:7;:30;19199:10;;:23;;19214:7;19199:14;:23::i;:::-;19186:10;:36;-1:-1:-1;;;18848:382:0:o;25821:78::-;13570:7;13597:6;-1:-1:-1;;;;;13597:6:0;13093:10;13659:23;13651:73;;;;-1:-1:-1;;;13651:73:0;;;;;;;:::i;:::-;25874:10:::1;:17:::0;;-1:-1:-1;;;;25874:17:0::1;-1:-1:-1::0;;;25874:17:0::1;::::0;;25821:78::o;25542:83::-;13570:7;13597:6;-1:-1:-1;;;;;13597:6:0;13093:10;13659:23;13651:73;;;;-1:-1:-1;;;13651:73:0;;;;;;;:::i;:::-;25599:11:::1;:18:::0;;-1:-1:-1;;;;25599:18:0::1;-1:-1:-1::0;;;25599:18:0::1;::::0;;25542:83::o;23423:111::-;13570:7;13597:6;-1:-1:-1;;;;;13597:6:0;13093:10;13659:23;13651:73;;;;-1:-1:-1;;;13651:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23492:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;23492:34:0::1;23522:4;23492:34;::::0;;23423:111::o;19236:444::-;19327:7;14971:13;19355:7;:18;;19347:59;;;;-1:-1:-1;;;19347:59:0;;5279:2:1;19347:59:0;;;5261:21:1;5318:2;5298:18;;;5291:30;5357;5337:18;;;5330:58;5405:18;;19347:59:0;5077:352:1;19347:59:0;19422:17;19417:256;;19457:15;19486:19;19497:7;19486:10;:19::i;:::-;-1:-1:-1;19456:49:0;;-1:-1:-1;19520:14:0;;-1:-1:-1;;;;;19520:14:0;19417:256;19570:23;19605:19;19616:7;19605:10;:19::i;:::-;-1:-1:-1;19567:57:0;;-1:-1:-1;19639:22:0;;-1:-1:-1;;;;;19639:22:0;18739:103;13570:7;13597:6;-1:-1:-1;;;;;13597:6:0;13093:10;13659:23;13651:73;;;;-1:-1:-1;;;13651:73:0;;;;;;;:::i;:::-;18811:15:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;18811:23:0::1;-1:-1:-1::0;;;;18811:23:0;;::::1;::::0;;;::::1;::::0;;18739:103::o;17034:198::-;-1:-1:-1;;;;;17124:20:0;;17100:7;17124:20;;;:11;:20;;;;;;;;17120:49;;;-1:-1:-1;;;;;;17153:16:0;;;;;:7;:16;;;;;;;17034:198::o;17120:49::-;-1:-1:-1;;;;;17207:16:0;;;;;;:7;:16;;;;;;17187:37;;:19;:37::i;13752:148::-;13570:7;13597:6;-1:-1:-1;;;;;13597:6:0;13093:10;13659:23;13651:73;;;;-1:-1:-1;;;13651:73:0;;;;;;;:::i;:::-;13859:1:::1;13843:6:::0;;13822:40:::1;::::0;-1:-1:-1;;;;;13843:6:0;;::::1;::::0;13822:40:::1;::::0;13859:1;;13822:40:::1;13890:1;13873:19:::0;;-1:-1:-1;;;;;;13873:19:0::1;::::0;;13752:148::o;25905:80::-;13570:7;13597:6;-1:-1:-1;;;;;13597:6:0;13093:10;13659:23;13651:73;;;;-1:-1:-1;;;13651:73:0;;;;;;;:::i;:::-;25959:10:::1;:18:::0;;-1:-1:-1;;;;25959:18:0::1;::::0;;25905:80::o;25725:90::-;13570:7;13597:6;-1:-1:-1;;;;;13597:6:0;13093:10;13659:23;13651:73;;;;-1:-1:-1;;;13651:73:0;;;;;;;:::i;:::-;25778:21:::1;:29:::0;;-1:-1:-1;;;;25778:29:0::1;::::0;;25725:90::o;18286:319::-;18379:4;18396:179;13093:10;18446:7;18468:96;18507:15;18468:96;;;;;;;;;;;;;;;;;13093:10;18468:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18468:34:0;;;;;;;;;;;;:38;:96::i;17238:167::-;17316:4;17333:42;13093:10;17357:9;17368:6;17333:9;:42::i;25631:88::-;13570:7;13597:6;-1:-1:-1;;;;;13597:6:0;13093:10;13659:23;13651:73;;;;-1:-1:-1;;;13651:73:0;;;;;;;:::i;:::-;25683:21:::1;:28:::0;;-1:-1:-1;;;;25683:28:0::1;-1:-1:-1::0;;;25683:28:0::1;::::0;;25631:88::o;13908:249::-;13570:7;13597:6;-1:-1:-1;;;;;13597:6:0;13093:10;13659:23;13651:73;;;;-1:-1:-1;;;13651:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13997:22:0;::::1;13989:78;;;::::0;-1:-1:-1;;;13989:78:0;;6757:2:1;13989:78:0::1;::::0;::::1;6739:21:1::0;6796:2;6776:18;;;6769:30;6835:34;6815:18;;;6808:62;-1:-1:-1;;;6886:18:1;;;6879:41;6937:19;;13989:78:0::1;6555:407:1::0;13989:78:0::1;14104:6;::::0;;14083:38:::1;::::0;-1:-1:-1;;;;;14083:38:0;;::::1;::::0;14104:6;::::1;::::0;14083:38:::1;::::0;::::1;14132:6;:17:::0;;-1:-1:-1;;;;;;14132:17:0::1;-1:-1:-1::0;;;;;14132:17:0;;;::::1;::::0;;;::::1;::::0;;13908:249::o;3663:98::-;3721:7;3748:5;3752:1;3748;:5;:::i;4062:98::-;4120:7;4147:5;4151:1;4147;:5;:::i;23670:325::-;-1:-1:-1;;;;;23761:19:0;;23753:64;;;;-1:-1:-1;;;23753:64:0;;8398:2:1;23753:64:0;;;8380:21:1;;;8417:18;;;8410:30;8476:34;8456:18;;;8449:62;8528:18;;23753:64:0;8196:356:1;23753:64:0;-1:-1:-1;;;;;23836:21:0;;23828:64;;;;-1:-1:-1;;;23828:64:0;;4920:2:1;23828:64:0;;;4902:21:1;4959:2;4939:18;;;4932:30;4998:32;4978:18;;;4971:60;5048:18;;23828:64:0;4718:354:1;23828:64:0;-1:-1:-1;;;;;23903:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23955:32;;8703:25:1;;;23955:32:0;;8676:18:1;23955:32:0;;;;;;;23670:325;;;:::o;24001:1535::-;-1:-1:-1;;;;;24087:18:0;;24079:64;;;;-1:-1:-1;;;24079:64:0;;5636:2:1;24079:64:0;;;5618:21:1;5675:2;5655:18;;;5648:30;5714:34;5694:18;;;5687:62;-1:-1:-1;;;5765:18:1;;;5758:31;5806:19;;24079:64:0;5434:397:1;24079:64:0;-1:-1:-1;;;;;24162:16:0;;24154:60;;;;-1:-1:-1;;;24154:60:0;;6038:2:1;24154:60:0;;;6020:21:1;6077:2;6057:18;;;6050:30;6116:33;6096:18;;;6089:61;6167:18;;24154:60:0;5836:355:1;24154:60:0;24242:1;24233:6;:10;24225:64;;;;-1:-1:-1;;;24225:64:0;;7575:2:1;24225:64:0;;;7557:21:1;7614:2;7594:18;;;7587:30;7653:34;7633:18;;;7626:62;-1:-1:-1;;;7704:18:1;;;7697:39;7753:19;;24225:64:0;7373:405:1;24225:64:0;24304:10;;-1:-1:-1;;;24304:10:0;;;;:18;;24318:4;24304:18;24300:90;;;24357:20;24347:6;:30;;24339:39;;;;;;24412:9;;-1:-1:-1;;;;;24404:17:0;;;24412:9;;24404:17;:47;;;;-1:-1:-1;24439:11:0;;-1:-1:-1;;;;;24425:26:0;;;-1:-1:-1;;;24439:11:0;;;;24425:26;;24404:47;:75;;;;-1:-1:-1;;;;;;24457:22:0;;;;;;:18;:22;;;;;;;;24455:24;24404:75;:94;;;;-1:-1:-1;24483:15:0;;-1:-1:-1;;;24483:15:0;;;;24404:94;24400:296;;;24537:12;;24527:6;:22;;24519:31;;;;;;-1:-1:-1;;;;;24577:16:0;;;;;;:12;:16;;;;;;24596:15;-1:-1:-1;24569:43:0;;;;;;24650:30;:15;24669:10;24650:30;:::i;:::-;-1:-1:-1;;;;;24631:16:0;;;;;;:12;:16;;;;;:49;24400:296;24709:11;;-1:-1:-1;;;24709:11:0;;;;:19;;24724:4;24709:19;24706:334;;;24856:11;:26;;-1:-1:-1;;;;;;24856:26:0;;;;;24927:22;;;-1:-1:-1;;;24927:22:0;;;;24798:42;;;;24927:20;;:22;;;;;;;;;;;;;;;24798:42;24927:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24909:49:0;;24967:4;24974:12;-1:-1:-1;;;;;24974:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24909:85;;-1:-1:-1;;;;;;24909:85:0;;;;;;;-1:-1:-1;;;;;3233:15:1;;;24909:85:0;;;3215:34:1;3285:15;;3265:18;;;3258:43;3150:18;;24909:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24897:9;:97;;-1:-1:-1;;;;;;24897:97:0;-1:-1:-1;;;;;24897:97:0;;;;;;;;;;-1:-1:-1;25009:11:0;:19;;-1:-1:-1;;;;25009:19:0;;;24706:334;25050:28;25081:24;25099:4;25081:9;:24::i;:::-;25121:16;;25050:55;;-1:-1:-1;;;;25121:16:0;;;;25120:17;:36;;;;-1:-1:-1;25147:9:0;;-1:-1:-1;;;;;25141:15:0;;;25147:9;;25141:15;25120:36;:61;;;;-1:-1:-1;25160:21:0;;-1:-1:-1;;;25160:21:0;;;;25120:61;25116:223;;;25226:29;;25202:20;:53;25198:130;;25276:36;25291:20;25276:14;:36::i;:::-;-1:-1:-1;;;;;25383:24:0;;25349:12;25383:24;;;:18;:24;;;;;;25364:4;;25383:24;;;:50;;-1:-1:-1;;;;;;25411:22:0;;;;;;:18;:22;;;;;;;;25383:50;25379:98;;;-1:-1:-1;25460:5:0;25379:98;25487:41;25502:4;25508:2;25512:6;25520:7;25487:14;:41::i;:::-;24068:1468;;24001:1535;;;:::o;5204:206::-;5290:7;5351:12;5343:6;;;;5335:29;;;;-1:-1:-1;;;5335:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;5386:5:0;;;5204:206::o;21609:164::-;21651:7;21672:15;21689;21708:19;:17;:19::i;:::-;21671:56;;-1:-1:-1;21671:56:0;-1:-1:-1;21745:20:0;21671:56;;21745:11;:20::i;:::-;21738:27;;;;21609:164;:::o;2925:98::-;2983:7;3010:5;3014:1;3010;:5;:::i;20426:414::-;20485:7;20493;20501;20509;20517;20525;20546:23;20571:12;20585:18;20607:20;20619:7;20607:11;:20::i;:::-;20545:82;;;;;;20639:15;20656:23;20681:12;20697:50;20709:7;20718:4;20724:10;20736;:8;:10::i;:::-;20697:11;:50::i;:::-;20638:109;;;;-1:-1:-1;20638:109:0;;-1:-1:-1;20798:15:0;;-1:-1:-1;20815:4:0;;-1:-1:-1;20821:10:0;;-1:-1:-1;20426:414:0;;-1:-1:-1;;;;;20426:414:0:o;3306:98::-;3364:7;3391:5;3395:1;3391;:5;:::i;25991:958::-;16178:16;:23;;-1:-1:-1;;;;16178:23:0;-1:-1:-1;;;16178:23:0;;;26151:7:::1;::::0;16178:23;;;;26151:7;;::::1;16178:23:::0;26151:7:::1;:12:::0;26147:245:::1;;26194:37;26227:3;26194:28;:20:::0;26219:2:::1;26194:24;:28::i;:::-;:32:::0;::::1;:37::i;:::-;26180:51;;26246:29;26263:11;26246:16;:29::i;:::-;26290:30;26298:21;26290:7;:30::i;:::-;26352:28;26369:11:::0;26352:14;:28:::1;:::i;:::-;26335:45;;26147:245;26406:7;::::0;;;::::1;;;:12:::0;26402:540:::1;;26503:7;::::0;26458:62:::1;::::0;26516:3:::1;::::0;26458:53:::1;::::0;26503:7;;::::1;;;26458:40;:20:::0;26483:14;26458:24:::1;:40::i;:::-;:44:::0;::::1;:53::i;:62::-;26435:85:::0;-1:-1:-1;26535:12:0::1;26550:27;26435:85:::0;26575:1:::1;26550:24;:27::i;:::-;26535:42:::0;-1:-1:-1;26592:17:0::1;26612:30;:20:::0;26535:42;26612:24:::1;:30::i;:::-;26592:50:::0;-1:-1:-1;26682:21:0::1;26718:22;26735:4:::0;26718:16:::1;:22::i;:::-;26755:18;26776:41;:21;26802:14:::0;26776:25:::1;:41::i;:::-;26755:62;;26832:35;26845:9;26856:10;26832:12;:35::i;:::-;26887:43;::::0;;9926:25:1;;;9982:2;9967:18;;9960:34;;;10010:18;;;10003:34;;;26887:43:0::1;::::0;9914:2:1;9899:18;26887:43:0::1;;;;;;;26420:522;;;;26402:540;-1:-1:-1::0;;16224:16:0;:24;;-1:-1:-1;;;;16224:24:0;;;-1:-1:-1;25991:958:0:o;28002:788::-;28112:7;28107:28;;28121:14;:12;:14::i;:::-;-1:-1:-1;;;;;28150:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;28174:22:0;;;;;;:11;:22;;;;;;;;28173:23;28150:46;28146:597;;;28213:48;28235:6;28243:9;28254:6;28213:21;:48::i;:::-;28146:597;;;-1:-1:-1;;;;;28284:19:0;;;;;;:11;:19;;;;;;;;28283:20;:46;;;;-1:-1:-1;;;;;;28307:22:0;;;;;;:11;:22;;;;;;;;28283:46;28279:464;;;28346:46;28366:6;28374:9;28385:6;28346:19;:46::i;28279:464::-;-1:-1:-1;;;;;28415:19:0;;;;;;:11;:19;;;;;;;;28414:20;:47;;;;-1:-1:-1;;;;;;28439:22:0;;;;;;:11;:22;;;;;;;;28438:23;28414:47;28410:333;;;28478:44;28496:6;28504:9;28515:6;28478:17;:44::i;28410:333::-;-1:-1:-1;;;;;28544:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;28567:22:0;;;;;;:11;:22;;;;;;;;28544:45;28540:203;;;28606:48;28628:6;28636:9;28647:6;28606:21;:48::i;28540:203::-;28687:44;28705:6;28713:9;28724:6;28687:17;:44::i;:::-;28758:7;28753:29;;23322:15;;;-1:-1:-1;;;;23348:25:0;;23322:15;;;;;;;23348:25;;;23358:15;-1:-1:-1;;23312:25:0;;;;;;;23358:15;;;;;;23348:25;;;23384;;;23394:15;;;;;;;23384:25;;;;;28767:15;28002:788;;;;:::o;21779:556::-;21877:7;;21830;;;;14971:13;21830:7;21931:289;21955:9;:16;21951:20;;21931:289;;;22021:7;21997;:21;22005:9;22015:1;22005:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22005:12:0;21997:21;;;;;;;;;;;;;:31;;:66;;;22056:7;22032;:21;22040:9;22050:1;22040:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22040:12:0;22032:21;;;;;;;;;;;;;:31;21997:66;21993:97;;;-1:-1:-1;;22073:7:0;;;14971:13;;-1:-1:-1;21779:556:0;-1:-1:-1;;21779:556:0:o;21993:97::-;22115:34;22127:7;:21;22135:9;22145:1;22135:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22135:12:0;22127:21;;;;;;;;;;;;;22115:7;;:11;:34::i;:::-;22105:44;;22174:34;22186:7;:21;22194:9;22204:1;22194:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22194:12:0;22186:21;;;;;;;;;;;;;22174:7;;:11;:34::i;:::-;22164:44;-1:-1:-1;21973:3:0;;;;:::i;:::-;;;;21931:289;;;-1:-1:-1;22244:7:0;;:20;;14971:13;22244:11;:20::i;:::-;22234:7;:30;22230:61;;;-1:-1:-1;;22274:7:0;;;14971:13;;-1:-1:-1;21779:556:0;-1:-1:-1;21779:556:0:o;22230:61::-;22310:7;;22319;;-1:-1:-1;21779:556:0;-1:-1:-1;21779:556:0:o;20846:327::-;20905:7;20913;20921;20941:12;20956:24;20972:7;20956:15;:24::i;:::-;20941:39;;20991:18;21012:30;21034:7;21012:21;:30::i;:::-;20991:51;-1:-1:-1;21053:23:0;21079:33;20991:51;21079:17;:7;21091:4;21079:11;:17::i;:::-;:21;;:33::i;:::-;21053:59;21148:4;;-1:-1:-1;21154:10:0;;-1:-1:-1;20846:327:0;;-1:-1:-1;;;20846:327:0:o;21179:424::-;21291:7;;;;21345:24;:7;21357:11;21345;:24::i;:::-;21327:42;-1:-1:-1;21380:12:0;21395:21;:4;21404:11;21395:8;:21::i;:::-;21380:36;-1:-1:-1;21427:18:0;21448:27;:10;21463:11;21448:14;:27::i;:::-;21427:48;-1:-1:-1;21486:23:0;21512:33;21427:48;21512:17;:7;21524:4;21512:11;:17::i;:33::-;21564:7;;;;-1:-1:-1;21590:4:0;;-1:-1:-1;21179:424:0;;-1:-1:-1;;;;;;;21179:424:0:o;26955:496::-;27045:16;;;27059:1;27045:16;;;;;;;;27021:21;;27045:16;;;;;;;;;;-1:-1:-1;27045:16:0;27021:40;;27090:4;27072;27077:1;27072:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;27072:23:0;;;-1:-1:-1;;;;;27072:23:0;;;;;27116:11;;;;;;;;;-1:-1:-1;;;;;27116:11:0;-1:-1:-1;;;;;27116:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27106:4;27111:1;27106:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27106:28:0;;;:7;;;;;;;;;:28;27177:11;;27145:58;;27162:4;;-1:-1:-1;;;27177:11:0;;;27191;27145:8;:58::i;:::-;27214:11;;-1:-1:-1;;;27214:11:0;;-1:-1:-1;;;;;27214:11:0;:62;27291:11;27317:1;27361:4;27388;27408:24;:15;27428:3;27408:19;:24::i;:::-;27214:229;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27010:441;26955:496;:::o;27457:121::-;27509:9;;:26;;-1:-1:-1;;;;;27509:9:0;;;;:26;;;;;27528:6;;27509:9;:26;:9;:26;27528:6;27509:9;:26;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27546:24:0;:15;27566:3;27546:19;:24::i;:::-;;27457:121;:::o;27584:412::-;27697:11;;27665:58;;27682:4;;-1:-1:-1;;;27697:11:0;;-1:-1:-1;;;;;27697:11:0;27711;27665:8;:58::i;:::-;27734:11;;27934:4;;-1:-1:-1;;;;;;;;27734:11:0;;;;;;:27;;27769:9;;27802:4;;27822:11;;27848:1;;;;27934:4;27953:24;:15;27973:3;27953:19;:24::i;:::-;27734:254;;;;;;-1:-1:-1;;;;;;27734:254:0;;;-1:-1:-1;;;;;3671:15:1;;;27734:254:0;;;3653:34:1;3703:18;;;3696:34;;;;3746:18;;;3739:34;;;;3789:18;;;3782:34;;;;3853:15;;;3832:19;;;3825:44;3885:19;;;3878:35;;;;3587:19;;27734:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;22977:285::-;23024:7;;;;:12;:28;;;;-1:-1:-1;23040:7:0;;;;;;;:12;23024:28;:44;;;;-1:-1:-1;23056:7:0;;;;;;;:12;23024:44;23020:57;;;22977:285::o;23020:57::-;23107:7;;;-1:-1:-1;;23161:25:0;23179:7;23125:25;23143:7;23107;;;;;23089:25;-1:-1:-1;;23089:25:0;;;;23143:7;;;;;;23125:25;;;;-1:-1:-1;;23125:25:0;;;-1:-1:-1;;23125:25:0;;;;;;;;;;;23179:7;;;;;;23161:25;23243:11;-1:-1:-1;;23243:11:0;;;;;;22977:285::o;30059:650::-;30174:15;30204:23;30242:12;30269:23;30307:12;30334:18;30366:19;30377:7;30366:10;:19::i;:::-;-1:-1:-1;;;;;30414:15:0;;;;;;:7;:15;;;;;;30159:226;;-1:-1:-1;30159:226:0;;-1:-1:-1;30159:226:0;;-1:-1:-1;30159:226:0;-1:-1:-1;30159:226:0;-1:-1:-1;30159:226:0;-1:-1:-1;30414:28:0;;30434:7;30414:19;:28::i;:::-;-1:-1:-1;;;;;30396:15:0;;;;;;:7;:15;;;;;;;;:46;;;;30471:7;:15;;;;:28;;30491:7;30471:19;:28::i;:::-;-1:-1:-1;;;;;30453:15:0;;;;;;;:7;:15;;;;;;:46;;;;30531:18;;;;;;;:39;;30554:15;30531:22;:39::i;:::-;-1:-1:-1;;;;;30510:18:0;;;;;;:7;:18;;;;;:60;30581:26;30596:10;30581:14;:26::i;:::-;30618:23;30630:4;30636;30618:11;:23::i;:::-;30674:9;-1:-1:-1;;;;;30657:44:0;30666:6;-1:-1:-1;;;;;30657:44:0;;30685:15;30657:44;;;;8703:25:1;;8691:2;8676:18;;8557:177;30657:44:0;;;;;;;;30148:561;;;;;;30059:650;;;:::o;29391:662::-;29504:15;29534:23;29572:12;29599:23;29637:12;29664:18;29696:19;29707:7;29696:10;:19::i;:::-;-1:-1:-1;;;;;29744:15:0;;;;;;:7;:15;;;;;;29489:226;;-1:-1:-1;29489:226:0;;-1:-1:-1;29489:226:0;;-1:-1:-1;29489:226:0;-1:-1:-1;29489:226:0;-1:-1:-1;29489:226:0;-1:-1:-1;29744:28:0;;29489:226;29744:19;:28::i;:::-;-1:-1:-1;;;;;29726:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;29804:18;;;;;:7;:18;;;;;:39;;29827:15;29804:22;:39::i;:::-;-1:-1:-1;;;;;29783:18:0;;;;;;:7;:18;;;;;;;;:60;;;;29875:7;:18;;;;:39;;29898:15;29875:22;:39::i;28796:589::-;28907:15;28937:23;28975:12;29002:23;29040:12;29067:18;29099:19;29110:7;29099:10;:19::i;:::-;-1:-1:-1;;;;;29147:15:0;;;;;;:7;:15;;;;;;28892:226;;-1:-1:-1;28892:226:0;;-1:-1:-1;28892:226:0;;-1:-1:-1;28892:226:0;-1:-1:-1;28892:226:0;-1:-1:-1;28892:226:0;-1:-1:-1;29147:28:0;;28892:226;29147:19;:28::i;30715:721::-;30830:15;30860:23;30898:12;30925:23;30963:12;30990:18;31022:19;31033:7;31022:10;:19::i;:::-;-1:-1:-1;;;;;31070:15:0;;;;;;:7;:15;;;;;;30815:226;;-1:-1:-1;30815:226:0;;-1:-1:-1;30815:226:0;;-1:-1:-1;30815:226:0;-1:-1:-1;30815:226:0;-1:-1:-1;30815:226:0;-1:-1:-1;31070:28:0;;31090:7;31070:19;:28::i;:::-;-1:-1:-1;;;;;31052:15:0;;;;;;:7;:15;;;;;;;;:46;;;;31127:7;:15;;;;:28;;31147:7;31127:19;:28::i;22689:130::-;22792:7;;22753;;22780:31;;22805:5;;22780:20;;:7;;22792;;22780:11;:20::i;22825:146::-;22944:7;;22895;;22922:41;;22957:5;;22922:30;;22934:17;;22944:7;;;;;;;22934;;;;:17;:::i;:::-;22922:7;;:30;;:11;:30::i;22341:342::-;22404:19;22426:10;:8;:10::i;:::-;22404:32;-1:-1:-1;22447:18:0;22468:27;:10;22404:32;22468:14;:27::i;:::-;22547:4;22531:22;;;;:7;:22;;;;;;22447:48;;-1:-1:-1;22531:38:0;;22447:48;22531:26;:38::i;:::-;22522:4;22506:22;;;;:7;:22;;;;;;;;:63;;;;22584:11;:26;;;;;;22580:95;;;22653:4;22637:22;;;;:7;:22;;;;;;:38;;22664:10;22637:26;:38::i;:::-;22628:4;22612:22;;;;:7;:22;;;;;:63;22580:95;22393:290;;22341:342;:::o;20273:147::-;20351:7;;:17;;20363:4;20351:11;:17::i;:::-;20341:7;:27;20392:10;;:20;;20407:4;20392:14;:20::i;:::-;20379:10;:33;-1:-1:-1;;20273:147:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:52;;;570:1;567;560:12;522:52;602:9;596:16;621:31;646:5;621:31;:::i;687:388::-;755:6;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;871:9;858:23;890:31;915:5;890:31;:::i;:::-;940:5;-1:-1:-1;997:2:1;982:18;;969:32;1010:33;969:32;1010:33;:::i;:::-;1062:7;1052:17;;;687:388;;;;;:::o;1080:456::-;1157:6;1165;1173;1226:2;1214:9;1205:7;1201:23;1197:32;1194:52;;;1242:1;1239;1232:12;1194:52;1281:9;1268:23;1300:31;1325:5;1300:31;:::i;:::-;1350:5;-1:-1:-1;1407:2:1;1392:18;;1379:32;1420:33;1379:32;1420:33;:::i;:::-;1080:456;;1472:7;;-1:-1:-1;;;1526:2:1;1511:18;;;;1498:32;;1080:456::o;1541:315::-;1609:6;1617;1670:2;1658:9;1649:7;1645:23;1641:32;1638:52;;;1686:1;1683;1676:12;1638:52;1725:9;1712:23;1744:31;1769:5;1744:31;:::i;:::-;1794:5;1846:2;1831:18;;;;1818:32;;-1:-1:-1;;;1541:315:1:o;1861:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2009:26;2025:9;2009:26;:::i;2046:180::-;2105:6;2158:2;2146:9;2137:7;2133:23;2129:32;2126:52;;;2174:1;2171;2164:12;2126:52;-1:-1:-1;2197:23:1;;2046:180;-1:-1:-1;2046:180:1:o;2231:248::-;2296:6;2304;2357:2;2345:9;2336:7;2332:23;2328:32;2325:52;;;2373:1;2370;2363:12;2325:52;2409:9;2396:23;2386:33;;2438:35;2469:2;2458:9;2454:18;2438:35;:::i;:::-;2428:45;;2231:248;;;;;:::o;2484:306::-;2572:6;2580;2588;2641:2;2629:9;2620:7;2616:23;2612:32;2609:52;;;2657:1;2654;2647:12;2609:52;2686:9;2680:16;2670:26;;2736:2;2725:9;2721:18;2715:25;2705:35;;2780:2;2769:9;2765:18;2759:25;2749:35;;2484:306;;;;;:::o;4116:597::-;4228:4;4257:2;4286;4275:9;4268:21;4318:6;4312:13;4361:6;4356:2;4345:9;4341:18;4334:34;4386:1;4396:140;4410:6;4407:1;4404:13;4396:140;;;4505:14;;;4501:23;;4495:30;4471:17;;;4490:2;4467:26;4460:66;4425:10;;4396:140;;;4554:6;4551:1;4548:13;4545:91;;;4624:1;4619:2;4610:6;4599:9;4595:22;4591:31;4584:42;4545:91;-1:-1:-1;4697:2:1;4676:15;-1:-1:-1;;4672:29:1;4657:45;;;;4704:2;4653:54;;4116:597;-1:-1:-1;;;4116:597:1:o;6967:401::-;7169:2;7151:21;;;7208:2;7188:18;;;7181:30;7247:34;7242:2;7227:18;;7220:62;-1:-1:-1;;;7313:2:1;7298:18;;7291:35;7358:3;7343:19;;6967:401::o;8739:980::-;9001:4;9049:3;9038:9;9034:19;9080:6;9069:9;9062:25;9106:2;9144:6;9139:2;9128:9;9124:18;9117:34;9187:3;9182:2;9171:9;9167:18;9160:31;9211:6;9246;9240:13;9277:6;9269;9262:22;9315:3;9304:9;9300:19;9293:26;;9354:2;9346:6;9342:15;9328:29;;9375:1;9385:195;9399:6;9396:1;9393:13;9385:195;;;9464:13;;-1:-1:-1;;;;;9460:39:1;9448:52;;9555:15;;;;9520:12;;;;9496:1;9414:9;9385:195;;;-1:-1:-1;;;;;;;9636:32:1;;;;9631:2;9616:18;;9609:60;-1:-1:-1;;;9700:3:1;9685:19;9678:35;9597:3;8739:980;-1:-1:-1;;;8739:980:1:o;10237:128::-;10277:3;10308:1;10304:6;10301:1;10298:13;10295:39;;;10314:18;;:::i;:::-;-1:-1:-1;10350:9:1;;10237:128::o;10370:204::-;10408:3;10444:4;10441:1;10437:12;10476:4;10473:1;10469:12;10511:3;10505:4;10501:14;10496:3;10493:23;10490:49;;;10519:18;;:::i;:::-;10555:13;;10370:204;-1:-1:-1;;;10370:204:1:o;10579:217::-;10619:1;10645;10635:132;;10689:10;10684:3;10680:20;10677:1;10670:31;10724:4;10721:1;10714:15;10752:4;10749:1;10742:15;10635:132;-1:-1:-1;10781:9:1;;10579:217::o;10801:168::-;10841:7;10907:1;10903;10899:6;10895:14;10892:1;10889:21;10884:1;10877:9;10870:17;10866:45;10863:71;;;10914:18;;:::i;:::-;-1:-1:-1;10954:9:1;;10801:168::o;10974:125::-;11014:4;11042:1;11039;11036:8;11033:34;;;11047:18;;:::i;:::-;-1:-1:-1;11084:9:1;;10974:125::o;11104:135::-;11143:3;-1:-1:-1;;11164:17:1;;11161:43;;;11184:18;;:::i;:::-;-1:-1:-1;11231:1:1;11220:13;;11104:135::o;11244:127::-;11305:10;11300:3;11296:20;11293:1;11286:31;11336:4;11333:1;11326:15;11360:4;11357:1;11350:15;11376:127;11437:10;11432:3;11428:20;11425:1;11418:31;11468:4;11465:1;11458:15;11492:4;11489:1;11482:15;11640:131;-1:-1:-1;;;;;11715:31:1;;11705:42;;11695:70;;11761:1;11758;11751:12;11695:70;11640:131;:::o

Swarm Source

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