ETH Price: $2,674.88 (+1.43%)

Token

MinoTheTaur (MINO)
 

Overview

Max Total Supply

100,000,000,000 MINO

Holders

48

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.9365918 MINO

Value
$0.00
0xe8a80eaaf4bfc5bc3aa7a87463a79b877bd83667
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:
MINOTHETAUR

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

//Visit Our Social Links
// Telegram: http://t.me/MinoTheTaur
// Twitter:  https://twitter.com/TheTaurunishere
//Website:   https://minothetaur.com

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

abstract contract Context {

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

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

interface IERC20 {

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

library SafeMath {

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

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

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

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {

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

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

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

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

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

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

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

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

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {

            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

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

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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }

    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

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

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

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

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

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

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

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

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

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

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

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

contract MINOTHETAUR is Context, IERC20, Ownable {

    using SafeMath for uint256;
    using Address for address;

    string private _name = "MinoTheTaur";
    string private _symbol = "MINO";
    uint8 private _decimals = 18;

    address payable private marketingWalletAddress = payable(0xc740Ec20be35620126E072EA1e1a347335A8791a); // Marketing Address
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;

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

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isMarketPair;

    uint256 public _buyMarketingFee = 1;
    uint256 public _sellMarketingFee = 1;

    uint256 public _marketingShare = 1;

    uint256 public _totalTaxIfBuying = 1;
    uint256 public _totalTaxIfSelling = 1;
    uint256 public _totalDistributionShares = 1;

    uint256 private _totalSupply = 100_000_000_000 * 10**_decimals;
    uint256 public _maxTxAmount = 100_000_000_000 * 10**_decimals;
    uint256 public _walletMax = 100_000_000_000 * 10**_decimals;
    uint256 private minimumTokensBeforeSwap = 10_000_000 * 10**_decimals;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

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

    constructor () {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;

        _totalTaxIfBuying = _buyMarketingFee;
        _totalTaxIfSelling = _sellMarketingFee;
        _totalDistributionShares = _marketingShare;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;

        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

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

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

    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 minimumTokensBeforeSwapAmount() public view returns (uint256) {
        return minimumTokensBeforeSwap;
    }

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

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

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

    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        isMarketPair[account] = newValue;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        isExcludedFromFee[account] = newValue;
    }

    function setBuyTaxes(uint256 newMarketingTax) external onlyOwner() {
        require(newMarketingTax <= 100, 'Max fee is 100%');
        _buyMarketingFee = newMarketingTax;
        _totalTaxIfBuying = newMarketingTax;
    }

    function setSellTaxes(uint256 newMarketingTax) external onlyOwner() {
        require(newMarketingTax <= 100, 'Max fee is 100%');
        _sellMarketingFee = newMarketingTax;
        _totalTaxIfSelling = newMarketingTax;
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount >= 2_500_000, 'Min maxTxAmount error');
        _maxTxAmount = maxTxAmount;
    }

    function enableDisableWalletLimit(bool newValue) external onlyOwner {
        checkWalletLimit = newValue;
    }

    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        require(newAddress != address(0), 'newAddress must not be equal to 0x');
        marketingWalletAddress = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }

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

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress);

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isWalletLimitExempt[address(uniswapPair)] = true;
        isMarketPair[address(uniswapPair)] = true;
    }

    //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, 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 _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if(inSwapAndLiquify)
        {
            return _basicTransfer(sender, recipient, amount);
        }
        else
        {
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;

            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled)
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ?
            amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient])
                require(balanceOf(recipient).add(finalAmount) <= _walletMax);

            _balances[recipient] = _balances[recipient].add(finalAmount);

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

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

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        uint256 tokensForSwap = tAmount;

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;
        if(amountReceived > 0)
            transferToAddressETH(marketingWalletAddress, amountReceived);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );

        emit SwapTokensForETH(tokenAmount, path);
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {

        uint256 feeAmount = 0;

        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }

        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketingTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketingTax","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600b60a08190526a26b4b737aa3432aa30bab960a91b60c09081526200002e916003919062000562565b50604080518082019091526004808252634d494e4f60e01b60209092019182526200005a918162000562565b50600580546001600160a81b03191674c740ec20be35620126e072ea1e1a347335a8791a121790556ddead0000000000000000000000006080526001600c819055600d819055600e819055600f8190556010819055601155620000c06012600a62000681565b620000d19064174876e80062000742565b601255600554620000e79060ff16600a62000681565b620000f89064174876e80062000742565b6013556005546200010e9060ff16600a62000681565b6200011f9064174876e80062000742565b601455600554620001359060ff16600a62000681565b62000144906298968062000742565b6015556017805462ffffff60a81b19166201000160a81b1790553480156200016b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200020057600080fd5b505afa15801562000215573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023b919062000608565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028457600080fd5b505afa15801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000608565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200030857600080fd5b505af11580156200031d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000343919062000608565b601780546001600160a01b039283166001600160a01b03199182161790915560168054928416929091168217905560125430600090815260076020908152604080832094835293905291822055600190600890620003a96000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526008909252812080549092166001908117909255600c54600f55600d54601055600e54601155600990620004146000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556017549091168152600990925280822080548416600190811790915530835290822080549093168117909255600a90620004846000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600a84528281208054861660019081179091556017549092168152600b90935290822080549093161790915560125490600690620004f03390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012546040516200055391815260200190565b60405180910390a350620007b7565b828054620005709062000764565b90600052602060002090601f016020900481019282620005945760008555620005df565b82601f10620005af57805160ff1916838001178555620005df565b82800160010185558215620005df579182015b82811115620005df578251825591602001919060010190620005c2565b50620005ed929150620005f1565b5090565b5b80821115620005ed5760008155600101620005f2565b6000602082840312156200061a578081fd5b81516001600160a01b038116811462000631578182fd5b9392505050565b600181815b80851115620006795781600019048211156200065d576200065d620007a1565b808516156200066b57918102915b93841c93908002906200063d565b509250929050565b60006200063160ff8416836000826200069d575060016200073c565b81620006ac575060006200073c565b8160018114620006c55760028114620006d057620006f0565b60019150506200073c565b60ff841115620006e457620006e4620007a1565b50506001821b6200073c565b5060208310610133831016604e8410600b841016171562000715575081810a6200073c565b62000721838362000638565b8060001904821115620007385762000738620007a1565b0290505b92915050565b60008160001904831182151516156200075f576200075f620007a1565b500290565b600181811c908216806200077957607f821691505b602082108114156200079b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c6125e7620007dd600039600081816104550152610bea01526125e76000f3fe6080604052600436106103035760003560e01c80638b42507f11610190578063c816841b116100dc578063ec28438a11610095578063f1d5f5171161006f578063f1d5f51714610936578063f2fde38b14610956578063f84ba65d14610976578063f872858a1461099657600080fd5b8063ec28438a146108e0578063ef422a1814610900578063f0cd1dac1461092057600080fd5b8063c816841b146107f3578063c860795214610813578063c867d60b14610829578063da00097d14610859578063dd4670641461087a578063dd62ed3e1461089a57600080fd5b8063a3ca847d11610149578063a69df4b511610123578063a69df4b514610788578063a9059cbb1461079d578063c49b9a80146107bd578063c5d24189146107dd57600080fd5b8063a3ca847d14610728578063a457c2d714610748578063a5d69d1f1461076857600080fd5b80638b42507f146106855780638da5cb5b146106b5578063914eb66a146106d357806395d89b41146106e8578063a073d37f146106fd578063a08e671f1461071257600080fd5b80633ecad2711161024f578063602bc62b116102085780637d1db4a5116101e25780637d1db4a514610623578063807c2d9c1461063957806382eefb431461064f578063844d591c1461066557600080fd5b8063602bc62b146105c257806361a23c69146105d757806370a08231146105ed57600080fd5b80633ecad271146104ee5780634a74bb021461051e5780634cb80fd51461053f5780635342acb41461055f578063557ed1ba1461058f5780635881f3ef146105a257600080fd5b806323b872dd116102bc5780632b112e49116102965780632b112e4914610477578063313ce5671461048c57806339509351146104ae5780633b97084a146104ce57600080fd5b806323b872dd146104035780632563ae831461042357806327c8f8351461044357600080fd5b806306fdde031461030f5780630940bbc71461033a578063095ea7b31461035c5780631694505e1461038c57806318160ddd146103c45780632198cf6c146103e357600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b506103246109b7565b6040516103319190612388565b60405180910390f35b34801561034657600080fd5b5061035a61035536600461232d565b610a49565b005b34801561036857600080fd5b5061037c6103773660046122e8565b610ac9565b6040519015158152602001610331565b34801561039857600080fd5b506016546103ac906001600160a01b031681565b6040516001600160a01b039091168152602001610331565b3480156103d057600080fd5b506012545b604051908152602001610331565b3480156103ef57600080fd5b5061035a6103fe3660046122b4565b610ae0565b34801561040f57600080fd5b5061037c61041e366004612274565b610b35565b34801561042f57600080fd5b5061035a61043e366004612313565b610ba0565b34801561044f57600080fd5b506103ac7f000000000000000000000000000000000000000000000000000000000000000081565b34801561048357600080fd5b506103d5610be8565b34801561049857600080fd5b5060055460405160ff9091168152602001610331565b3480156104ba57600080fd5b5061037c6104c93660046122e8565b610c32565b3480156104da57600080fd5b5061035a6104e936600461232d565b610c68565b3480156104fa57600080fd5b5061037c610509366004612204565b600b6020526000908152604090205460ff1681565b34801561052a57600080fd5b5060175461037c90600160a81b900460ff1681565b34801561054b57600080fd5b5061035a61055a366004612204565b610c97565b34801561056b57600080fd5b5061037c61057a366004612204565b60086020526000908152604090205460ff1681565b34801561059b57600080fd5b50426103d5565b3480156105ae57600080fd5b506103ac6105bd366004612204565b610d4a565b3480156105ce57600080fd5b506002546103d5565b3480156105e357600080fd5b506103d5600e5481565b3480156105f957600080fd5b506103d5610608366004612204565b6001600160a01b031660009081526006602052604090205490565b34801561062f57600080fd5b506103d560135481565b34801561064557600080fd5b506103d560145481565b34801561065b57600080fd5b506103d560105481565b34801561067157600080fd5b5061035a6106803660046122b4565b6110dc565b34801561069157600080fd5b5061037c6106a0366004612204565b600a6020526000908152604090205460ff1681565b3480156106c157600080fd5b506000546001600160a01b03166103ac565b3480156106df57600080fd5b5061035a611131565b3480156106f457600080fd5b50610324611193565b34801561070957600080fd5b506015546103d5565b34801561071e57600080fd5b506103d560115481565b34801561073457600080fd5b5061035a61074336600461232d565b6111a2565b34801561075457600080fd5b5061037c6107633660046122e8565b611219565b34801561077457600080fd5b5061035a610783366004612313565b611268565b34801561079457600080fd5b5061035a6112b0565b3480156107a957600080fd5b5061037c6107b83660046122e8565b6113b6565b3480156107c957600080fd5b5061035a6107d8366004612313565b6113c3565b3480156107e957600080fd5b506103d5600c5481565b3480156107ff57600080fd5b506017546103ac906001600160a01b031681565b34801561081f57600080fd5b506103d5600d5481565b34801561083557600080fd5b5061037c610844366004612204565b60096020526000908152604090205460ff1681565b34801561086557600080fd5b5060175461037c90600160b01b900460ff1681565b34801561088657600080fd5b5061035a61089536600461232d565b611445565b3480156108a657600080fd5b506103d56108b536600461223c565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156108ec57600080fd5b5061035a6108fb36600461232d565b6114ca565b34801561090c57600080fd5b5061035a61091b3660046122b4565b611544565b34801561092c57600080fd5b506103d5600f5481565b34801561094257600080fd5b5061035a61095136600461232d565b611599565b34801561096257600080fd5b5061035a610971366004612204565b6115c8565b34801561098257600080fd5b5061035a6109913660046122b4565b6116a0565b3480156109a257600080fd5b5060175461037c90600160b81b900460ff1681565b6060600380546109c6906124db565b80601f01602080910402602001604051908101604052809291908181526020018280546109f2906124db565b8015610a3f5780601f10610a1457610100808354040283529160200191610a3f565b820191906000526020600020905b815481529060010190602001808311610a2257829003601f168201915b5050505050905090565b6000546001600160a01b03163314610a7c5760405162461bcd60e51b8152600401610a73906123db565b60405180910390fd5b6064811115610abf5760405162461bcd60e51b815260206004820152600f60248201526e4d617820666565206973203130302560881b6044820152606401610a73565b600d819055601055565b6000610ad63384846116f5565b5060015b92915050565b6000546001600160a01b03163314610b0a5760405162461bcd60e51b8152600401610a73906123db565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610b42848484611819565b50610b958433610b9085604051806060016040528060288152602001612545602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611bee565b6116f5565b5060015b9392505050565b6000546001600160a01b03163314610bca5760405162461bcd60e51b8152600401610a73906123db565b60178054911515600160b81b0260ff60b81b19909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260066020526040812054601254610c2d91611c28565b905090565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610ad6918590610b909086611c6a565b6000546001600160a01b03163314610c925760405162461bcd60e51b8152600401610a73906123db565b601555565b6000546001600160a01b03163314610cc15760405162461bcd60e51b8152600401610a73906123db565b6001600160a01b038116610d225760405162461bcd60e51b815260206004820152602260248201527f6e657741646472657373206d757374206e6f7420626520657175616c20746f20604482015261060f60f31b6064820152608401610a73565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b03163314610d755760405162461bcd60e51b8152600401610a73906123db565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610db357600080fd5b505afa158015610dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610deb9190612220565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610e3357600080fd5b505afa158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b9190612220565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b158015610eb157600080fd5b505afa158015610ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee99190612220565b91506001600160a01b03821661106d57806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f3257600080fd5b505afa158015610f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6a9190612220565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610fb257600080fd5b505afa158015610fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fea9190612220565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561103257600080fd5b505af1158015611046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106a9190612220565b91505b601780546001600160a01b03199081166001600160a01b03858116918217845560168054909316948116949094179091556000908152600960209081526040808320805460ff19908116600190811790925594549095168352600b909152902080549091169091179055919050565b6000546001600160a01b031633146111065760405162461bcd60e51b8152600401610a73906123db565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461115b5760405162461bcd60e51b8152600401610a73906123db565b600080546040516001600160a01b039091169060008051602061256d833981519152908390a3600080546001600160a01b0319169055565b6060600480546109c6906124db565b6000546001600160a01b031633146111cc5760405162461bcd60e51b8152600401610a73906123db565b606481111561120f5760405162461bcd60e51b815260206004820152600f60248201526e4d617820666565206973203130302560881b6044820152606401610a73565b600c819055600f55565b6000610ad63384610b908560405180606001604052806025815260200161258d602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190611bee565b6000546001600160a01b031633146112925760405162461bcd60e51b8152600401610a73906123db565b60178054911515600160b01b0260ff60b01b19909216919091179055565b6001546001600160a01b031633146113165760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610a73565b60025442116113675760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610a73565b600154600080546040516001600160a01b03938416939091169160008051602061256d83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610b95338484611819565b6000546001600160a01b031633146113ed5760405162461bcd60e51b8152600401610a73906123db565b60178054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061143a90831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461146f5760405162461bcd60e51b8152600401610a73906123db565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561149e814261246d565b600255600080546040516001600160a01b039091169060008051602061256d833981519152908390a350565b6000546001600160a01b031633146114f45760405162461bcd60e51b8152600401610a73906123db565b622625a081101561153f5760405162461bcd60e51b815260206004820152601560248201527426b4b71036b0bc2a3c20b6b7bab73a1032b93937b960591b6044820152606401610a73565b601355565b6000546001600160a01b0316331461156e5760405162461bcd60e51b8152600401610a73906123db565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115c35760405162461bcd60e51b8152600401610a73906123db565b601455565b6000546001600160a01b031633146115f25760405162461bcd60e51b8152600401610a73906123db565b6001600160a01b0381166116575760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a73565b600080546040516001600160a01b038085169392169160008051602061256d83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116ca5760405162461bcd60e51b8152600401610a73906123db565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b0383166117575760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a73565b6001600160a01b0382166117b85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a73565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661187f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a73565b6001600160a01b0383166118e15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a73565b601754600160a01b900460ff1615611905576118fe848484611cc9565b9050610b99565b6001600160a01b0384166000908152600a602052604090205460ff1615801561194757506001600160a01b0383166000908152600a602052604090205460ff16155b156119af576013548211156119af5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a73565b30600090815260066020526040902054601554811080159081906119dd5750601754600160a01b900460ff16155b8015611a0257506001600160a01b0386166000908152600b602052604090205460ff16155b8015611a175750601754600160a81b900460ff165b15611a3d57601754600160b01b900460ff1615611a345760155491505b611a3d82611daf565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260069091529190912054611a8f918690611bee565b6001600160a01b038716600090815260066020908152604080832093909355600890529081205460ff1680611adc57506001600160a01b03861660009081526008602052604090205460ff165b611af057611aeb878787611e00565b611af2565b845b601754909150600160b81b900460ff168015611b2757506001600160a01b03861660009081526009602052604090205460ff16155b15611b6357601454611b5882611b52896001600160a01b031660009081526006602052604090205490565b90611c6a565b1115611b6357600080fd5b6001600160a01b038616600090815260066020526040902054611b869082611c6a565b6001600160a01b0380881660008181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611bda9085815260200190565b60405180910390a360019350505050610b99565b60008184841115611c125760405162461bcd60e51b8152600401610a739190612388565b506000611c1f84866124c4565b95945050505050565b6000610b9983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bee565b600080611c77838561246d565b905083811015610b995760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a73565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054611d1a918490611bee565b6001600160a01b038086166000908152600660205260408082209390935590851681522054611d499083611c6a565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d9d9086815260200190565b60405180910390a35060019392505050565b6017805460ff60a01b1916600160a01b17905580611dcc81611f0c565b478015611dee57600554611dee9061010090046001600160a01b0316826120ca565b50506017805460ff60a01b1916905550565b6001600160a01b0383166000908152600b6020526040812054819060ff1615611e4a57611e436064611e3d600f548661210590919063ffffffff16565b90612184565b9050611e88565b6001600160a01b0384166000908152600b602052604090205460ff1615611e8857611e856064611e3d6010548661210590919063ffffffff16565b90505b8015611f025730600090815260066020526040902054611ea89082611c6a565b30600081815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ef99085815260200190565b60405180910390a35b611c1f8382611c28565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f4f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611fa357600080fd5b505afa158015611fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fdb9190612220565b81600181518110611ffc57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260165461202291309116846116f5565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac9479061205b908590600090869030904290600401612431565b600060405180830381600087803b15801561207557600080fd5b505af1158015612089573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516120be929190612410565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612100573d6000803e3d6000fd5b505050565b60008261211457506000610ada565b600061212083856124a5565b90508261212d8583612485565b14610b995760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a73565b6000610b9983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836121e25760405162461bcd60e51b8152600401610a739190612388565b506000611c1f8486612485565b803580151581146121ff57600080fd5b919050565b600060208284031215612215578081fd5b8135610b998161252c565b600060208284031215612231578081fd5b8151610b998161252c565b6000806040838503121561224e578081fd5b82356122598161252c565b915060208301356122698161252c565b809150509250929050565b600080600060608486031215612288578081fd5b83356122938161252c565b925060208401356122a38161252c565b929592945050506040919091013590565b600080604083850312156122c6578182fd5b82356122d18161252c565b91506122df602084016121ef565b90509250929050565b600080604083850312156122fa578182fd5b82356123058161252c565b946020939093013593505050565b600060208284031215612324578081fd5b610b99826121ef565b60006020828403121561233e578081fd5b5035919050565b6000815180845260208085019450808401835b8381101561237d5781516001600160a01b031687529582019590820190600101612358565b509495945050505050565b6000602080835283518082850152825b818110156123b457858101830151858201604001528201612398565b818111156123c55783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006124296040830184612345565b949350505050565b85815284602082015260a06040820152600061245060a0830186612345565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561248057612480612516565b500190565b6000826124a057634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156124bf576124bf612516565b500290565b6000828210156124d6576124d6612516565b500390565b600181811c908216806124ef57607f821691505b6020821081141561251057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461254157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122056d39e34f538f3bffeb8819481ecc394dd1e827774d208c31582763694ad8e7f64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106103035760003560e01c80638b42507f11610190578063c816841b116100dc578063ec28438a11610095578063f1d5f5171161006f578063f1d5f51714610936578063f2fde38b14610956578063f84ba65d14610976578063f872858a1461099657600080fd5b8063ec28438a146108e0578063ef422a1814610900578063f0cd1dac1461092057600080fd5b8063c816841b146107f3578063c860795214610813578063c867d60b14610829578063da00097d14610859578063dd4670641461087a578063dd62ed3e1461089a57600080fd5b8063a3ca847d11610149578063a69df4b511610123578063a69df4b514610788578063a9059cbb1461079d578063c49b9a80146107bd578063c5d24189146107dd57600080fd5b8063a3ca847d14610728578063a457c2d714610748578063a5d69d1f1461076857600080fd5b80638b42507f146106855780638da5cb5b146106b5578063914eb66a146106d357806395d89b41146106e8578063a073d37f146106fd578063a08e671f1461071257600080fd5b80633ecad2711161024f578063602bc62b116102085780637d1db4a5116101e25780637d1db4a514610623578063807c2d9c1461063957806382eefb431461064f578063844d591c1461066557600080fd5b8063602bc62b146105c257806361a23c69146105d757806370a08231146105ed57600080fd5b80633ecad271146104ee5780634a74bb021461051e5780634cb80fd51461053f5780635342acb41461055f578063557ed1ba1461058f5780635881f3ef146105a257600080fd5b806323b872dd116102bc5780632b112e49116102965780632b112e4914610477578063313ce5671461048c57806339509351146104ae5780633b97084a146104ce57600080fd5b806323b872dd146104035780632563ae831461042357806327c8f8351461044357600080fd5b806306fdde031461030f5780630940bbc71461033a578063095ea7b31461035c5780631694505e1461038c57806318160ddd146103c45780632198cf6c146103e357600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b506103246109b7565b6040516103319190612388565b60405180910390f35b34801561034657600080fd5b5061035a61035536600461232d565b610a49565b005b34801561036857600080fd5b5061037c6103773660046122e8565b610ac9565b6040519015158152602001610331565b34801561039857600080fd5b506016546103ac906001600160a01b031681565b6040516001600160a01b039091168152602001610331565b3480156103d057600080fd5b506012545b604051908152602001610331565b3480156103ef57600080fd5b5061035a6103fe3660046122b4565b610ae0565b34801561040f57600080fd5b5061037c61041e366004612274565b610b35565b34801561042f57600080fd5b5061035a61043e366004612313565b610ba0565b34801561044f57600080fd5b506103ac7f000000000000000000000000000000000000000000000000000000000000dead81565b34801561048357600080fd5b506103d5610be8565b34801561049857600080fd5b5060055460405160ff9091168152602001610331565b3480156104ba57600080fd5b5061037c6104c93660046122e8565b610c32565b3480156104da57600080fd5b5061035a6104e936600461232d565b610c68565b3480156104fa57600080fd5b5061037c610509366004612204565b600b6020526000908152604090205460ff1681565b34801561052a57600080fd5b5060175461037c90600160a81b900460ff1681565b34801561054b57600080fd5b5061035a61055a366004612204565b610c97565b34801561056b57600080fd5b5061037c61057a366004612204565b60086020526000908152604090205460ff1681565b34801561059b57600080fd5b50426103d5565b3480156105ae57600080fd5b506103ac6105bd366004612204565b610d4a565b3480156105ce57600080fd5b506002546103d5565b3480156105e357600080fd5b506103d5600e5481565b3480156105f957600080fd5b506103d5610608366004612204565b6001600160a01b031660009081526006602052604090205490565b34801561062f57600080fd5b506103d560135481565b34801561064557600080fd5b506103d560145481565b34801561065b57600080fd5b506103d560105481565b34801561067157600080fd5b5061035a6106803660046122b4565b6110dc565b34801561069157600080fd5b5061037c6106a0366004612204565b600a6020526000908152604090205460ff1681565b3480156106c157600080fd5b506000546001600160a01b03166103ac565b3480156106df57600080fd5b5061035a611131565b3480156106f457600080fd5b50610324611193565b34801561070957600080fd5b506015546103d5565b34801561071e57600080fd5b506103d560115481565b34801561073457600080fd5b5061035a61074336600461232d565b6111a2565b34801561075457600080fd5b5061037c6107633660046122e8565b611219565b34801561077457600080fd5b5061035a610783366004612313565b611268565b34801561079457600080fd5b5061035a6112b0565b3480156107a957600080fd5b5061037c6107b83660046122e8565b6113b6565b3480156107c957600080fd5b5061035a6107d8366004612313565b6113c3565b3480156107e957600080fd5b506103d5600c5481565b3480156107ff57600080fd5b506017546103ac906001600160a01b031681565b34801561081f57600080fd5b506103d5600d5481565b34801561083557600080fd5b5061037c610844366004612204565b60096020526000908152604090205460ff1681565b34801561086557600080fd5b5060175461037c90600160b01b900460ff1681565b34801561088657600080fd5b5061035a61089536600461232d565b611445565b3480156108a657600080fd5b506103d56108b536600461223c565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b3480156108ec57600080fd5b5061035a6108fb36600461232d565b6114ca565b34801561090c57600080fd5b5061035a61091b3660046122b4565b611544565b34801561092c57600080fd5b506103d5600f5481565b34801561094257600080fd5b5061035a61095136600461232d565b611599565b34801561096257600080fd5b5061035a610971366004612204565b6115c8565b34801561098257600080fd5b5061035a6109913660046122b4565b6116a0565b3480156109a257600080fd5b5060175461037c90600160b81b900460ff1681565b6060600380546109c6906124db565b80601f01602080910402602001604051908101604052809291908181526020018280546109f2906124db565b8015610a3f5780601f10610a1457610100808354040283529160200191610a3f565b820191906000526020600020905b815481529060010190602001808311610a2257829003601f168201915b5050505050905090565b6000546001600160a01b03163314610a7c5760405162461bcd60e51b8152600401610a73906123db565b60405180910390fd5b6064811115610abf5760405162461bcd60e51b815260206004820152600f60248201526e4d617820666565206973203130302560881b6044820152606401610a73565b600d819055601055565b6000610ad63384846116f5565b5060015b92915050565b6000546001600160a01b03163314610b0a5760405162461bcd60e51b8152600401610a73906123db565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000610b42848484611819565b50610b958433610b9085604051806060016040528060288152602001612545602891396001600160a01b038a1660009081526007602090815260408083203384529091529020549190611bee565b6116f5565b5060015b9392505050565b6000546001600160a01b03163314610bca5760405162461bcd60e51b8152600401610a73906123db565b60178054911515600160b81b0260ff60b81b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316600090815260066020526040812054601254610c2d91611c28565b905090565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610ad6918590610b909086611c6a565b6000546001600160a01b03163314610c925760405162461bcd60e51b8152600401610a73906123db565b601555565b6000546001600160a01b03163314610cc15760405162461bcd60e51b8152600401610a73906123db565b6001600160a01b038116610d225760405162461bcd60e51b815260206004820152602260248201527f6e657741646472657373206d757374206e6f7420626520657175616c20746f20604482015261060f60f31b6064820152608401610a73565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b03163314610d755760405162461bcd60e51b8152600401610a73906123db565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610db357600080fd5b505afa158015610dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610deb9190612220565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610e3357600080fd5b505afa158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b9190612220565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b158015610eb157600080fd5b505afa158015610ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee99190612220565b91506001600160a01b03821661106d57806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f3257600080fd5b505afa158015610f46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6a9190612220565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610fb257600080fd5b505afa158015610fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fea9190612220565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561103257600080fd5b505af1158015611046573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106a9190612220565b91505b601780546001600160a01b03199081166001600160a01b03858116918217845560168054909316948116949094179091556000908152600960209081526040808320805460ff19908116600190811790925594549095168352600b909152902080549091169091179055919050565b6000546001600160a01b031633146111065760405162461bcd60e51b8152600401610a73906123db565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461115b5760405162461bcd60e51b8152600401610a73906123db565b600080546040516001600160a01b039091169060008051602061256d833981519152908390a3600080546001600160a01b0319169055565b6060600480546109c6906124db565b6000546001600160a01b031633146111cc5760405162461bcd60e51b8152600401610a73906123db565b606481111561120f5760405162461bcd60e51b815260206004820152600f60248201526e4d617820666565206973203130302560881b6044820152606401610a73565b600c819055600f55565b6000610ad63384610b908560405180606001604052806025815260200161258d602591393360009081526007602090815260408083206001600160a01b038d1684529091529020549190611bee565b6000546001600160a01b031633146112925760405162461bcd60e51b8152600401610a73906123db565b60178054911515600160b01b0260ff60b01b19909216919091179055565b6001546001600160a01b031633146113165760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610a73565b60025442116113675760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610a73565b600154600080546040516001600160a01b03938416939091169160008051602061256d83398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610b95338484611819565b6000546001600160a01b031633146113ed5760405162461bcd60e51b8152600401610a73906123db565b60178054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061143a90831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461146f5760405162461bcd60e51b8152600401610a73906123db565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561149e814261246d565b600255600080546040516001600160a01b039091169060008051602061256d833981519152908390a350565b6000546001600160a01b031633146114f45760405162461bcd60e51b8152600401610a73906123db565b622625a081101561153f5760405162461bcd60e51b815260206004820152601560248201527426b4b71036b0bc2a3c20b6b7bab73a1032b93937b960591b6044820152606401610a73565b601355565b6000546001600160a01b0316331461156e5760405162461bcd60e51b8152600401610a73906123db565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115c35760405162461bcd60e51b8152600401610a73906123db565b601455565b6000546001600160a01b031633146115f25760405162461bcd60e51b8152600401610a73906123db565b6001600160a01b0381166116575760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a73565b600080546040516001600160a01b038085169392169160008051602061256d83398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116ca5760405162461bcd60e51b8152600401610a73906123db565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6001600160a01b0383166117575760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a73565b6001600160a01b0382166117b85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a73565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661187f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a73565b6001600160a01b0383166118e15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a73565b601754600160a01b900460ff1615611905576118fe848484611cc9565b9050610b99565b6001600160a01b0384166000908152600a602052604090205460ff1615801561194757506001600160a01b0383166000908152600a602052604090205460ff16155b156119af576013548211156119af5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a73565b30600090815260066020526040902054601554811080159081906119dd5750601754600160a01b900460ff16155b8015611a0257506001600160a01b0386166000908152600b602052604090205460ff16155b8015611a175750601754600160a81b900460ff165b15611a3d57601754600160b01b900460ff1615611a345760155491505b611a3d82611daf565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260069091529190912054611a8f918690611bee565b6001600160a01b038716600090815260066020908152604080832093909355600890529081205460ff1680611adc57506001600160a01b03861660009081526008602052604090205460ff165b611af057611aeb878787611e00565b611af2565b845b601754909150600160b81b900460ff168015611b2757506001600160a01b03861660009081526009602052604090205460ff16155b15611b6357601454611b5882611b52896001600160a01b031660009081526006602052604090205490565b90611c6a565b1115611b6357600080fd5b6001600160a01b038616600090815260066020526040902054611b869082611c6a565b6001600160a01b0380881660008181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611bda9085815260200190565b60405180910390a360019350505050610b99565b60008184841115611c125760405162461bcd60e51b8152600401610a739190612388565b506000611c1f84866124c4565b95945050505050565b6000610b9983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611bee565b600080611c77838561246d565b905083811015610b995760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a73565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600690915291822054611d1a918490611bee565b6001600160a01b038086166000908152600660205260408082209390935590851681522054611d499083611c6a565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d9d9086815260200190565b60405180910390a35060019392505050565b6017805460ff60a01b1916600160a01b17905580611dcc81611f0c565b478015611dee57600554611dee9061010090046001600160a01b0316826120ca565b50506017805460ff60a01b1916905550565b6001600160a01b0383166000908152600b6020526040812054819060ff1615611e4a57611e436064611e3d600f548661210590919063ffffffff16565b90612184565b9050611e88565b6001600160a01b0384166000908152600b602052604090205460ff1615611e8857611e856064611e3d6010548661210590919063ffffffff16565b90505b8015611f025730600090815260066020526040902054611ea89082611c6a565b30600081815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ef99085815260200190565b60405180910390a35b611c1f8382611c28565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f4f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611fa357600080fd5b505afa158015611fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fdb9190612220565b81600181518110611ffc57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260165461202291309116846116f5565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac9479061205b908590600090869030904290600401612431565b600060405180830381600087803b15801561207557600080fd5b505af1158015612089573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516120be929190612410565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612100573d6000803e3d6000fd5b505050565b60008261211457506000610ada565b600061212083856124a5565b90508261212d8583612485565b14610b995760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a73565b6000610b9983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836121e25760405162461bcd60e51b8152600401610a739190612388565b506000611c1f8486612485565b803580151581146121ff57600080fd5b919050565b600060208284031215612215578081fd5b8135610b998161252c565b600060208284031215612231578081fd5b8151610b998161252c565b6000806040838503121561224e578081fd5b82356122598161252c565b915060208301356122698161252c565b809150509250929050565b600080600060608486031215612288578081fd5b83356122938161252c565b925060208401356122a38161252c565b929592945050506040919091013590565b600080604083850312156122c6578182fd5b82356122d18161252c565b91506122df602084016121ef565b90509250929050565b600080604083850312156122fa578182fd5b82356123058161252c565b946020939093013593505050565b600060208284031215612324578081fd5b610b99826121ef565b60006020828403121561233e578081fd5b5035919050565b6000815180845260208085019450808401835b8381101561237d5781516001600160a01b031687529582019590820190600101612358565b509495945050505050565b6000602080835283518082850152825b818110156123b457858101830151858201604001528201612398565b818111156123c55783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006124296040830184612345565b949350505050565b85815284602082015260a06040820152600061245060a0830186612345565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561248057612480612516565b500190565b6000826124a057634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156124bf576124bf612516565b500290565b6000828210156124d6576124d6612516565b500390565b600181811c908216806124ef57607f821691505b6020821081141561251057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461254157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122056d39e34f538f3bffeb8819481ecc394dd1e827774d208c31582763694ad8e7f64736f6c63430008040033

Deployed Bytecode Sourcemap

15093:12358:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18262:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20720:230;;;;;;;;;;-1:-1:-1;20720:230:0;;;;;:::i;:::-;;:::i;:::-;;19556:161;;;;;;;;;;-1:-1:-1;19556:161:0;;;;;:::i;:::-;;:::i;:::-;;;3781:14:1;;3774:22;3756:41;;3744:2;3729:18;19556:161:0;3711:92:1;16451:41:0;;;;;;;;;;-1:-1:-1;16451:41:0;;;;-1:-1:-1;;;;;16451:41:0;;;;;;-1:-1:-1;;;;;3263:32:1;;;3245:51;;3233:2;3218:18;16451:41:0;3200:102:1;18539:100:0;;;;;;;;;;-1:-1:-1;18619:12:0;;18539:100;;;10211:25:1;;;10199:2;10184:18;18539:100:0;10166:76:1;21268:135:0;;;;;;;;;;-1:-1:-1;21268:135:0;;;;;:::i;:::-;;:::i;23542:313::-;;;;;;;;;;-1:-1:-1;23542:313:0;;;;;:::i;:::-;;:::i;21146:114::-;;;;;;;;;;-1:-1:-1;21146:114:0;;;;;:::i;:::-;;:::i;15464:81::-;;;;;;;;;;;;;;;22194:128;;;;;;;;;;;;;:::i;18448:83::-;;;;;;;;;;-1:-1:-1;18514:9:0;;18448:83;;18514:9;;;;11313:36:1;;11301:2;11286:18;18448:83:0;11268:87:1;18925:218:0;;;;;;;;;;-1:-1:-1;18925:218:0;;;;;:::i;:::-;;:::i;21521:124::-;;;;;;;;;;-1:-1:-1;21521:124:0;;;;;:::i;:::-;;:::i;15848:45::-;;;;;;;;;;-1:-1:-1;15848:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16562:40;;;;;;;;;;-1:-1:-1;16562:40:0;;;;-1:-1:-1;;;16562:40:0;;;;;;21653:221;;;;;;;;;;-1:-1:-1;21653:221:0;;;;;:::i;:::-;;:::i;15677:50::-;;;;;;;;;;-1:-1:-1;15677:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6661:90;;;;;;;;;;-1:-1:-1;6728:15:0;6661:90;;22464:802;;;;;;;;;;-1:-1:-1;22464:802:0;;;;;:::i;:::-;;:::i;6563:90::-;;;;;;;;;;-1:-1:-1;6636:9:0;;6563:90;;15989:34;;;;;;;;;;;;;;;;18647:119;;;;;;;;;;-1:-1:-1;18647:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;18740:18:0;18713:7;18740:18;;;:9;:18;;;;;;;18647:119;16240:61;;;;;;;;;;;;;;;;16308:59;;;;;;;;;;;;;;;;16075:37;;;;;;;;;;;;;;;;20070:129;;;;;;;;;;-1:-1:-1;20070:129:0;;;;;:::i;:::-;;:::i;15793:48::-;;;;;;;;;;-1:-1:-1;15793:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5944:79;;;;;;;;;;-1:-1:-1;5982:7:0;6009:6;-1:-1:-1;;;;;6009:6:0;5944:79;;6158:145;;;;;;;;;;;;;:::i;18353:87::-;;;;;;;;;;;;;:::i;19428:120::-;;;;;;;;;;-1:-1:-1;19517:23:0;;19428:120;;16119:43;;;;;;;;;;;;;;;;20485:227;;;;;;;;;;-1:-1:-1;20485:227:0;;;;;:::i;:::-;;:::i;19151:269::-;;;;;;;;;;-1:-1:-1;19151:269:0;;;;;:::i;:::-;;:::i;22061:125::-;;;;;;;;;;-1:-1:-1;22061:125:0;;;;;:::i;:::-;;:::i;6993:305::-;;;;;;;;;;;;;:::i;23367:167::-;;;;;;;;;;-1:-1:-1;23367:167:0;;;;;:::i;:::-;;:::i;21882:171::-;;;;;;;;;;-1:-1:-1;21882:171:0;;;;;:::i;:::-;;:::i;15902:35::-;;;;;;;;;;;;;;;;16499:26;;;;;;;;;;-1:-1:-1;16499:26:0;;;;-1:-1:-1;;;;;16499:26:0;;;15944:36;;;;;;;;;;;;;;;;15734:52;;;;;;;;;;-1:-1:-1;15734:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16609:45;;;;;;;;;;-1:-1:-1;16609:45:0;;;;-1:-1:-1;;;16609:45:0;;;;;;6759:226;;;;;;;;;;-1:-1:-1;6759:226:0;;;;;:::i;:::-;;:::i;18774:143::-;;;;;;;;;;-1:-1:-1;18774:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;18882:18:0;;;18855:7;18882:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18774:143;20958:180;;;;;;;;;;-1:-1:-1;20958:180:0;;;;;:::i;:::-;;:::i;20342:135::-;;;;;;;;;;-1:-1:-1;20342:135:0;;;;;:::i;:::-;;:::i;16032:36::-;;;;;;;;;;;;;;;;21411:102;;;;;;;;;;-1:-1:-1;21411:102:0;;;;;:::i;:::-;;:::i;6311:244::-;;;;;;;;;;-1:-1:-1;6311:244:0;;;;;:::i;:::-;;:::i;20207:127::-;;;;;;;;;;-1:-1:-1;20207:127:0;;;;;:::i;:::-;;:::i;16661:35::-;;;;;;;;;;-1:-1:-1;16661:35:0;;;;-1:-1:-1;;;16661:35:0;;;;;;18262:83;18299:13;18332:5;18325:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18262:83;:::o;20720:230::-;6071:6;;-1:-1:-1;;;;;6071:6:0;352:10;6071:22;6063:67;;;;-1:-1:-1;;;6063:67:0;;;;;;;:::i;:::-;;;;;;;;;20826:3:::1;20807:15;:22;;20799:50;;;::::0;-1:-1:-1;;;20799:50:0;;6832:2:1;20799:50:0::1;::::0;::::1;6814:21:1::0;6871:2;6851:18;;;6844:30;-1:-1:-1;;;6890:18:1;;;6883:45;6945:18;;20799:50:0::1;6804:165:1::0;20799:50:0::1;20860:17;:35:::0;;;20906:18:::1;:36:::0;20720:230::o;19556:161::-;19631:4;19648:39;352:10;19671:7;19680:6;19648:8;:39::i;:::-;-1:-1:-1;19705:4:0;19556:161;;;;;:::o;21268:135::-;6071:6;;-1:-1:-1;;;;;6071:6:0;352:10;6071:22;6063:67;;;;-1:-1:-1;;;6063:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21359:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;21359:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21268:135::o;23542:313::-;23640:4;23657:36;23667:6;23675:9;23686:6;23657:9;:36::i;:::-;-1:-1:-1;23704:121:0;23713:6;352:10;23735:89;23773:6;23735:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23735:19:0;;;;;;:11;:19;;;;;;;;352:10;23735:33;;;;;;;;;;:37;:89::i;:::-;23704:8;:121::i;:::-;-1:-1:-1;23843:4:0;23542:313;;;;;;:::o;21146:114::-;6071:6;;-1:-1:-1;;;;;6071:6:0;352:10;6071:22;6063:67;;;;-1:-1:-1;;;6063:67:0;;;;;;;:::i;:::-;21225:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;21225:27:0::1;-1:-1:-1::0;;;;21225:27:0;;::::1;::::0;;;::::1;::::0;;21146:114::o;22194:128::-;22301:11;-1:-1:-1;;;;;18740:18:0;22247:7;18740:18;;;:9;:18;;;;;;22274:12;;:40;;:16;:40::i;:::-;22267:47;;22194:128;:::o;18925:218::-;352:10;19013:4;19062:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19062:34:0;;;;;;;;;;19013:4;;19030:83;;19053:7;;19062:50;;19101:10;19062:38;:50::i;21521:124::-;6071:6;;-1:-1:-1;;;;;6071:6:0;352:10;6071:22;6063:67;;;;-1:-1:-1;;;6063:67:0;;;;;;;:::i;:::-;21603:23:::1;:34:::0;21521:124::o;21653:221::-;6071:6;;-1:-1:-1;;;;;6071:6:0;352:10;6071:22;6063:67;;;;-1:-1:-1;;;6063:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21748:24:0;::::1;21740:71;;;::::0;-1:-1:-1;;;21740:71:0;;8345:2:1;21740:71:0::1;::::0;::::1;8327:21:1::0;8384:2;8364:18;;;8357:30;8423:34;8403:18;;;8396:62;-1:-1:-1;;;8474:18:1;;;8467:32;8516:19;;21740:71:0::1;8317:224:1::0;21740:71:0::1;21822:22;:44:::0;;-1:-1:-1;;;;;21822:44:0;;::::1;;;-1:-1:-1::0;;;;;;21822:44:0;;::::1;::::0;;;::::1;::::0;;21653:221::o;22464:802::-;22544:22;6071:6;;-1:-1:-1;;;;;6071:6:0;352:10;6071:22;6063:67;;;;-1:-1:-1;;;6063:67:0;;;;;;;:::i;:::-;22581:35:::1;22638:16;22581:74;;22703:16;-1:-1:-1::0;;;;;22703:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22685:53:0::1;;22747:4;22754:16;-1:-1:-1::0;;;;;22754:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22685:93;::::0;-1:-1:-1;;;;;;22685:93:0::1;::::0;;;;;;-1:-1:-1;;;;;3537:15:1;;;22685:93:0::1;::::0;::::1;3519:34:1::0;3589:15;;3569:18;;;3562:43;3454:18;;22685:93:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22668:110:::0;-1:-1:-1;;;;;;22794:28:0;::::1;22791:221;;22908:16;-1:-1:-1::0;;;;;22908:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22890:70:0::1;;22969:4;22976:16;-1:-1:-1::0;;;;;22976:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22890:110;::::0;-1:-1:-1;;;;;;22890:110:0::1;::::0;;;;;;-1:-1:-1;;;;;3537:15:1;;;22890:110:0::1;::::0;::::1;3519:34:1::0;3589:15;;3569:18;;;3562:43;3454:18;;22890:110:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22873:127;;22791:221;23024:11;:28:::0;;-1:-1:-1;;;;;;23024:28:0;;::::1;-1:-1:-1::0;;;;;23024:28:0;;::::1;::::0;;::::1;::::0;;23086:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;23158:41:0;;;:19:::1;:41;::::0;;;;;;;:48;;-1:-1:-1;;23158:48:0;;::::1;-1:-1:-1::0;23158:48:0;;::::1;::::0;;;23238:11;;;;::::1;23217:34:::0;;:12:::1;:34:::0;;;;;:41;;;;::::1;::::0;;::::1;::::0;;23024:28;23038:14;-1:-1:-1;22464:802:0:o;20070:129::-;6071:6;;-1:-1:-1;;;;;6071:6:0;352:10;6071:22;6063:67;;;;-1:-1:-1;;;6063:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20159:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;20159:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20070:129::o;6158:145::-;6071:6;;-1:-1:-1;;;;;6071:6:0;352:10;6071:22;6063:67;;;;-1:-1:-1;;;6063:67:0;;;;;;;:::i;:::-;6262:1:::1;6246:6:::0;;6225:40:::1;::::0;-1:-1:-1;;;;;6246:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6225:40:0;6262:1;;6225:40:::1;6293:1;6276:19:::0;;-1:-1:-1;;;;;;6276:19:0::1;::::0;;6158:145::o;18353:87::-;18392:13;18425:7;18418:14;;;;;:::i;20485:227::-;6071:6;;-1:-1:-1;;;;;6071:6:0;352:10;6071:22;6063:67;;;;-1:-1:-1;;;6063:67:0;;;;;;;:::i;:::-;20590:3:::1;20571:15;:22;;20563:50;;;::::0;-1:-1:-1;;;20563:50:0;;6832:2:1;20563:50:0::1;::::0;::::1;6814:21:1::0;6871:2;6851:18;;;6844:30;-1:-1:-1;;;6890:18:1;;;6883:45;6945:18;;20563:50:0::1;6804:165:1::0;20563:50:0::1;20624:16;:34:::0;;;20669:17:::1;:35:::0;20485:227::o;19151:269::-;19244:4;19261:129;352:10;19284:7;19293:96;19332:15;19293:96;;;;;;;;;;;;;;;;;352:10;19293:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19293:34:0;;;;;;;;;;;;:38;:96::i;22061:125::-;6071:6;;-1:-1:-1;;;;;6071:6:0;352:10;6071:22;6063:67;;;;-1:-1:-1;;;6063:67:0;;;;;;;:::i;:::-;22142:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;22142:36:0::1;-1:-1:-1::0;;;;22142:36:0;;::::1;::::0;;;::::1;::::0;;22061:125::o;6993:305::-;7045:14;;-1:-1:-1;;;;;7045:14:0;7063:10;7045:28;7037:76;;;;-1:-1:-1;;;7037:76:0;;9863:2:1;7037:76:0;;;9845:21:1;9902:2;9882:18;;;9875:30;9941:34;9921:18;;;9914:62;-1:-1:-1;;;9992:18:1;;;9985:33;10035:19;;7037:76:0;9835:225:1;7037:76:0;7150:9;;7132:15;:27;7124:72;;;;-1:-1:-1;;;7124:72:0;;9503:2:1;7124:72:0;;;9485:21:1;9542:2;9522:18;;;9515:30;9581:33;9561:18;;;9554:61;9632:18;;7124:72:0;9475:181:1;7124:72:0;7241:14;;;7233:6;;7212:44;;-1:-1:-1;;;;;7241:14:0;;;;7233:6;;;;-1:-1:-1;;;;;;;;;;;7212:44:0;;7276:14;;;7267:23;;-1:-1:-1;;;;;;7267:23:0;-1:-1:-1;;;;;7276:14:0;;;7267:23;;;;;;6993:305::o;23367:167::-;23445:4;23462:42;352:10;23486:9;23497:6;23462:9;:42::i;21882:171::-;6071:6;;-1:-1:-1;;;;;6071:6:0;352:10;6071:22;6063:67;;;;-1:-1:-1;;;6063:67:0;;;;;;;:::i;:::-;21959:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;21959:32:0::1;-1:-1:-1::0;;;;21959:32:0;;::::1;;::::0;;22007:38:::1;::::0;::::1;::::0;::::1;::::0;21983:8;3781:14:1;3774:22;3756:41;;3744:2;3729:18;;3711:92;22007:38:0::1;;;;;;;;21882:171:::0;:::o;6759:226::-;6071:6;;-1:-1:-1;;;;;6071:6:0;352:10;6071:22;6063:67;;;;-1:-1:-1;;;6063:67:0;;;;;;;:::i;:::-;6840:6:::1;::::0;;;6823:23;;-1:-1:-1;;;;;;6823:23:0;;::::1;-1:-1:-1::0;;;;;6840:6:0;::::1;6823:23;::::0;;;6857:19:::1;::::0;;6899:22:::1;6917:4:::0;6899:15:::1;:22;:::i;:::-;6887:9;:34:::0;6974:1:::1;6958:6:::0;;6937:40:::1;::::0;-1:-1:-1;;;;;6958:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6937:40:0;6974:1;;6937:40:::1;6759:226:::0;:::o;20958:180::-;6071:6;;-1:-1:-1;;;;;6071:6:0;352:10;6071:22;6063:67;;;;-1:-1:-1;;;6063:67:0;;;;;;;:::i;:::-;21058:9:::1;21043:11;:24;;21035:58;;;::::0;-1:-1:-1;;;21035:58:0;;9153:2:1;21035:58:0::1;::::0;::::1;9135:21:1::0;9192:2;9172:18;;;9165:30;-1:-1:-1;;;9211:18:1;;;9204:51;9272:18;;21035:58:0::1;9125:171:1::0;21035:58:0::1;21104:12;:26:::0;20958:180::o;20342:135::-;6071:6;;-1:-1:-1;;;;;6071:6:0;352:10;6071:22;6063:67;;;;-1:-1:-1;;;6063:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20432:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;20432:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20342:135::o;21411:102::-;6071:6;;-1:-1:-1;;;;;6071:6:0;352:10;6071:22;6063:67;;;;-1:-1:-1;;;6063:67:0;;;;;;;:::i;:::-;21483:10:::1;:22:::0;21411:102::o;6311:244::-;6071:6;;-1:-1:-1;;;;;6071:6:0;352:10;6071:22;6063:67;;;;-1:-1:-1;;;6063:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6400:22:0;::::1;6392:73;;;::::0;-1:-1:-1;;;6392:73:0;;5257:2:1;6392:73:0::1;::::0;::::1;5239:21:1::0;5296:2;5276:18;;;5269:30;5335:34;5315:18;;;5308:62;-1:-1:-1;;;5386:18:1;;;5379:36;5432:19;;6392:73:0::1;5229:228:1::0;6392:73:0::1;6502:6;::::0;;6481:38:::1;::::0;-1:-1:-1;;;;;6481:38:0;;::::1;::::0;6502:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;6481:38:0;::::1;6530:6;:17:::0;;-1:-1:-1;;;;;;6530:17:0::1;-1:-1:-1::0;;;;;6530:17:0;;;::::1;::::0;;;::::1;::::0;;6311:244::o;20207:127::-;6071:6;;-1:-1:-1;;;;;6071:6:0;352:10;6071:22;6063:67;;;;-1:-1:-1;;;6063:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20294:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;20294:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20207:127::o;19725:337::-;-1:-1:-1;;;;;19818:19:0;;19810:68;;;;-1:-1:-1;;;19810:68:0;;8748:2:1;19810:68:0;;;8730:21:1;8787:2;8767:18;;;8760:30;8826:34;8806:18;;;8799:62;-1:-1:-1;;;8877:18:1;;;8870:34;8921:19;;19810:68:0;8720:226:1;19810:68:0;-1:-1:-1;;;;;19897:21:0;;19889:68;;;;-1:-1:-1;;;19889:68:0;;5664:2:1;19889:68:0;;;5646:21:1;5703:2;5683:18;;;5676:30;5742:34;5722:18;;;5715:62;-1:-1:-1;;;5793:18:1;;;5786:32;5835:19;;19889:68:0;5636:224:1;19889:68:0;-1:-1:-1;;;;;19970:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20022:32;;10211:25:1;;;20022:32:0;;10184:18:1;20022:32:0;;;;;;;19725:337;;;:::o;23863:1646::-;23950:4;-1:-1:-1;;;;;23977:20:0;;23969:70;;;;-1:-1:-1;;;23969:70:0;;7939:2:1;23969:70:0;;;7921:21:1;7978:2;7958:18;;;7951:30;8017:34;7997:18;;;7990:62;-1:-1:-1;;;8068:18:1;;;8061:35;8113:19;;23969:70:0;7911:227:1;23969:70:0;-1:-1:-1;;;;;24058:23:0;;24050:71;;;;-1:-1:-1;;;24050:71:0;;4853:2:1;24050:71:0;;;4835:21:1;4892:2;4872:18;;;4865:30;4931:34;4911:18;;;4904:62;-1:-1:-1;;;4982:18:1;;;4975:33;5025:19;;24050:71:0;4825:225:1;24050:71:0;24137:16;;-1:-1:-1;;;24137:16:0;;;;24134:1368;;;24186:41;24201:6;24209:9;24220:6;24186:14;:41::i;:::-;24179:48;;;;24134:1368;-1:-1:-1;;;;;24282:23:0;;;;;;:15;:23;;;;;;;;24281:24;:55;;;;-1:-1:-1;;;;;;24310:26:0;;;;;;:15;:26;;;;;;;;24309:27;24281:55;24278:170;;;24375:12;;24365:6;:22;;24357:75;;;;-1:-1:-1;;;24357:75:0;;6423:2:1;24357:75:0;;;6405:21:1;6462:2;6442:18;;;6435:30;6501:34;6481:18;;;6474:62;-1:-1:-1;;;6552:18:1;;;6545:38;6600:19;;24357:75:0;6395:230:1;24357:75:0;24513:4;24464:28;18740:18;;;:9;:18;;;;;;24589:23;;24565:47;;;;;;;24633:44;;-1:-1:-1;24661:16:0;;-1:-1:-1;;;24661:16:0;;;;24660:17;24633:44;:69;;;;-1:-1:-1;;;;;;24682:20:0;;;;;;:12;:20;;;;;;;;24681:21;24633:69;:94;;;;-1:-1:-1;24706:21:0;;-1:-1:-1;;;24706:21:0;;;;24633:94;24629:300;;;24764:25;;-1:-1:-1;;;24764:25:0;;;;24761:97;;;24835:23;;24812:46;;24761:97;24877:36;24892:20;24877:14;:36::i;:::-;24965:53;;;;;;;;;;;-1:-1:-1;;;24965:53:0;;;;;;;;-1:-1:-1;;;;;24965:17:0;;-1:-1:-1;24965:17:0;;;:9;:17;;;;;;;;:53;;24987:6;;24965:21;:53::i;:::-;-1:-1:-1;;;;;24945:17:0;;;;;;:9;:17;;;;;;;;:73;;;;25058:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;25087:28:0;;;;;;:17;:28;;;;;;;;25058:57;25057:118;;25141:34;25149:6;25157:9;25168:6;25141:7;:34::i;:::-;25057:118;;;25132:6;25057:118;25195:16;;25035:140;;-1:-1:-1;;;;25195:16:0;;;;:51;;;;-1:-1:-1;;;;;;25216:30:0;;;;;;:19;:30;;;;;;;;25215:31;25195:51;25192:133;;;25314:10;;25273:37;25298:11;25273:20;25283:9;-1:-1:-1;;;;;18740:18:0;18713:7;18740:18;;;:9;:18;;;;;;;18647:119;25273:20;:24;;:37::i;:::-;:51;;25265:60;;;;;;-1:-1:-1;;;;;25365:20:0;;;;;;:9;:20;;;;;;:37;;25390:11;25365:24;:37::i;:::-;-1:-1:-1;;;;;25342:20:0;;;;;;;:9;:20;;;;;;;:60;;;;25424:40;;;;;;;;;;25452:11;10211:25:1;;10199:2;10184:18;;10166:76;25424:40:0;;;;;;;;25486:4;25479:11;;;;;;;1657:192;1743:7;1779:12;1771:6;;;;1763:29;;;;-1:-1:-1;;;1763:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1803:9:0;1815:5;1819:1;1815;:5;:::i;:::-;1803:17;1657:192;-1:-1:-1;;;;;1657:192:0:o;1513:136::-;1571:7;1598:43;1602:1;1605;1598:43;;;;;;;;;;;;;;;;;:3;:43::i;1324:181::-;1382:7;;1414:5;1418:1;1414;:5;:::i;:::-;1402:17;;1443:1;1438;:6;;1430:46;;;;-1:-1:-1;;;1430:46:0;;6067:2:1;1430:46:0;;;6049:21:1;6106:2;6086:18;;;6079:30;6145:29;6125:18;;;6118:57;6192:18;;1430:46:0;6039:177:1;25517:330:0;25647:53;;;;;;;;;;;-1:-1:-1;;;25647:53:0;;;;;;;;-1:-1:-1;;;;;25647:17:0;;25610:4;25647:17;;;:9;:17;;;;;;;:53;;25669:6;;25647:21;:53::i;:::-;-1:-1:-1;;;;;25627:17:0;;;;;;;:9;:17;;;;;;:73;;;;25734:20;;;;;;;:32;;25759:6;25734:24;:32::i;:::-;-1:-1:-1;;;;;25711:20:0;;;;;;;:9;:20;;;;;;;:55;;;;25782:35;;;;;;;;;;25810:6;10211:25:1;;10199:2;10184:18;;10166:76;25782:35:0;;;;;;;;-1:-1:-1;25835:4:0;25517:330;;;;;:::o;25855:319::-;17107:16;:23;;-1:-1:-1;;;;17107:23:0;-1:-1:-1;;;17107:23:0;;;25951:7;25971:31:::1;25951:7:::0;25971:16:::1;:31::i;:::-;26038:21;26073:18:::0;;26070:96:::1;;26127:22;::::0;26106:60:::1;::::0;26127:22:::1;::::0;::::1;-1:-1:-1::0;;;;;26127:22:0::1;26151:14:::0;26106:20:::1;:60::i;:::-;-1:-1:-1::0;;17153:16:0;:24;;-1:-1:-1;;;;17153:24:0;;;-1:-1:-1;25855:319:0:o;26848:598::-;-1:-1:-1;;;;;26993:20:0;;26934:7;26993:20;;;:12;:20;;;;;;26934:7;;26993:20;;26990:223;;;27042:38;27076:3;27042:29;27053:17;;27042:6;:10;;:29;;;;:::i;:::-;:33;;:38::i;:::-;27030:50;;26990:223;;;-1:-1:-1;;;;;27110:23:0;;;;;;:12;:23;;;;;;;;27107:106;;;27162:39;27197:3;27162:30;27173:18;;27162:6;:10;;:30;;;;:::i;:39::-;27150:51;;27107:106;27228:13;;27225:173;;27303:4;27285:24;;;;:9;:24;;;;;;:39;;27314:9;27285:28;:39::i;:::-;27276:4;27258:24;;;;:9;:24;;;;;;;:66;;;;27344:42;;-1:-1:-1;;;;;27344:42:0;;;;;;;27376:9;10211:25:1;;10199:2;10184:18;;10166:76;27344:42:0;;;;;;;;27225:173;27417:21;:6;27428:9;27417:10;:21::i;26182:658::-;26332:16;;;26346:1;26332:16;;;;;;;;26308:21;;26332:16;;;;;;;;;;-1:-1:-1;26332:16:0;26308:40;;26377:4;26359;26364:1;26359:7;;;;;;-1:-1:-1;;;26359:7:0;;;;;;;;;-1:-1:-1;;;;;26359:23:0;;;:7;;;;;;;;;;:23;;;;26403:15;;:22;;;-1:-1:-1;;;26403:22:0;;;;:15;;;;;:20;;:22;;;;;26359:7;;26403:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26393:4;26398:1;26393:7;;;;;;-1:-1:-1;;;26393:7:0;;;;;;;;;-1:-1:-1;;;;;26393:32:0;;;:7;;;;;;;;;:32;26470:15;;26438:62;;26455:4;;26470:15;26488:11;26438:8;:62::i;:::-;26539:15;;:240;;-1:-1:-1;;;26539:240:0;;-1:-1:-1;;;;;26539:15:0;;;;:66;;:240;;26620:11;;26539:15;;26690:4;;26717;;26753:15;;26539:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26797:35;26814:11;26827:4;26797:35;;;;;;;:::i;:::-;;;;;;;;26182:658;;:::o;22330:126::-;22422:26;;-1:-1:-1;;;;;22422:18:0;;;:26;;;;;22441:6;;22422:26;;;;22441:6;22422:18;:26;;;;;;;;;;;;;;;;;;;;;22330:126;;:::o;1857:250::-;1915:7;1939:6;1935:47;;-1:-1:-1;1969:1:0;1962:8;;1935:47;1994:9;2006:5;2010:1;2006;:5;:::i;:::-;1994:17;-1:-1:-1;2039:1:0;2030:5;2034:1;1994:17;2030:5;:::i;:::-;:10;2022:56;;;;-1:-1:-1;;;2022:56:0;;7176:2:1;2022:56:0;;;7158:21:1;7215:2;7195:18;;;7188:30;7254:34;7234:18;;;7227:62;-1:-1:-1;;;7305:18:1;;;7298:31;7346:19;;2022:56:0;7148:223:1;2115:132:0;2173:7;2200:39;2204:1;2207;2200:39;;;;;;;;;;;;;;;;;2341:7;2376:12;2369:5;2361:28;;;;-1:-1:-1;;;2361:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2400:9:0;2412:5;2416:1;2412;:5;:::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;707:398::-;775:6;783;836:2;824:9;815:7;811:23;807:32;804:2;;;857:6;849;842:22;804:2;901:9;888:23;920:31;945:5;920:31;:::i;:::-;970:5;-1:-1:-1;1027:2:1;1012:18;;999:32;1040:33;999:32;1040:33;:::i;:::-;1092:7;1082:17;;;794:311;;;;;:::o;1110:466::-;1187:6;1195;1203;1256:2;1244:9;1235:7;1231:23;1227:32;1224:2;;;1277:6;1269;1262:22;1224:2;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;-1:-1:-1;1447:2:1;1432:18;;1419:32;1460:33;1419:32;1460:33;:::i;:::-;1214:362;;1512:7;;-1:-1:-1;;;1566:2:1;1551:18;;;;1538:32;;1214:362::o;1581:325::-;1646:6;1654;1707:2;1695:9;1686:7;1682:23;1678:32;1675:2;;;1728:6;1720;1713:22;1675:2;1772:9;1759:23;1791:31;1816:5;1791:31;:::i;:::-;1841:5;-1:-1:-1;1865:35:1;1896:2;1881:18;;1865:35;:::i;:::-;1855:45;;1665:241;;;;;:::o;1911:325::-;1979:6;1987;2040:2;2028:9;2019:7;2015:23;2011:32;2008:2;;;2061:6;2053;2046:22;2008:2;2105:9;2092:23;2124:31;2149:5;2124:31;:::i;:::-;2174:5;2226:2;2211:18;;;;2198:32;;-1:-1:-1;;;1998:238:1:o;2241:190::-;2297:6;2350:2;2338:9;2329:7;2325:23;2321:32;2318:2;;;2371:6;2363;2356:22;2318:2;2399:26;2415:9;2399:26;:::i;2436:190::-;2495:6;2548:2;2536:9;2527:7;2523:23;2519:32;2516:2;;;2569:6;2561;2554:22;2516:2;-1:-1:-1;2597:23:1;;2506:120;-1:-1:-1;2506:120:1:o;2631:463::-;2684:3;2722:5;2716:12;2749:6;2744:3;2737:19;2775:4;2804:2;2799:3;2795:12;2788:19;;2841:2;2834:5;2830:14;2862:3;2874:195;2888:6;2885:1;2882:13;2874:195;;;2953:13;;-1:-1:-1;;;;;2949:39:1;2937:52;;3009:12;;;;3044:15;;;;2985:1;2903:9;2874:195;;;-1:-1:-1;3085:3:1;;2692:402;-1:-1:-1;;;;;2692:402:1:o;4043:603::-;4155:4;4184:2;4213;4202:9;4195:21;4245:6;4239:13;4288:6;4283:2;4272:9;4268:18;4261:34;4313:4;4326:140;4340:6;4337:1;4334:13;4326:140;;;4435:14;;;4431:23;;4425:30;4401:17;;;4420:2;4397:26;4390:66;4355:10;;4326:140;;;4484:6;4481:1;4478:13;4475:2;;;4554:4;4549:2;4540:6;4529:9;4525:22;4521:31;4514:45;4475:2;-1:-1:-1;4630:2:1;4609:15;-1:-1:-1;;4605:29:1;4590:45;;;;4637:2;4586:54;;4164:482;-1:-1:-1;;;4164:482:1:o;7376:356::-;7578:2;7560:21;;;7597:18;;;7590:30;7656:34;7651:2;7636:18;;7629:62;7723:2;7708:18;;7550:182::o;10247:332::-;10454:6;10443:9;10436:25;10497:2;10492;10481:9;10477:18;10470:30;10417:4;10517:56;10569:2;10558:9;10554:18;10546:6;10517:56;:::i;:::-;10509:64;10426:153;-1:-1:-1;;;;10426:153:1:o;10584:582::-;10883:6;10872:9;10865:25;10926:6;10921:2;10910:9;10906:18;10899:34;10969:3;10964:2;10953:9;10949:18;10942:31;10846:4;10990:57;11042:3;11031:9;11027:19;11019:6;10990:57;:::i;:::-;-1:-1:-1;;;;;11083:32:1;;;;11078:2;11063:18;;11056:60;-1:-1:-1;11147:3:1;11132:19;11125:35;10982:65;10855:311;-1:-1:-1;;;10855:311:1:o;11360:128::-;11400:3;11431:1;11427:6;11424:1;11421:13;11418:2;;;11437:18;;:::i;:::-;-1:-1:-1;11473:9:1;;11408:80::o;11493:217::-;11533:1;11559;11549:2;;-1:-1:-1;;;11584:31:1;;11638:4;11635:1;11628:15;11666:4;11591:1;11656:15;11549:2;-1:-1:-1;11695:9:1;;11539:171::o;11715:168::-;11755:7;11821:1;11817;11813:6;11809:14;11806:1;11803:21;11798:1;11791:9;11784:17;11780:45;11777:2;;;11828:18;;:::i;:::-;-1:-1:-1;11868:9:1;;11767:116::o;11888:125::-;11928:4;11956:1;11953;11950:8;11947:2;;;11961:18;;:::i;:::-;-1:-1:-1;11998:9:1;;11937:76::o;12018:380::-;12097:1;12093:12;;;;12140;;;12161:2;;12215:4;12207:6;12203:17;12193:27;;12161:2;12268;12260:6;12257:14;12237:18;12234:38;12231:2;;;12314:10;12309:3;12305:20;12302:1;12295:31;12349:4;12346:1;12339:15;12377:4;12374:1;12367:15;12231:2;;12073:325;;;:::o;12403:127::-;12464:10;12459:3;12455:20;12452:1;12445:31;12495:4;12492:1;12485:15;12519:4;12516:1;12509:15;12535:131;-1:-1:-1;;;;;12610:31:1;;12600:42;;12590:2;;12656:1;12653;12646:12;12590:2;12580:86;:::o

Swarm Source

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