ETH Price: $3,405.56 (+1.52%)
Gas: 5.64 Gwei

Token

SeaPad (SPT)
 

Overview

Max Total Supply

200,000,000 SPT

Holders

214

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
444,072.110764132554667605 SPT

Value
$0.00
0x426797aed58f24654940cce117568247e3e438a7
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:
TokenM

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-22
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.6;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return 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 IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
    external
    view
    returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 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 (uint256);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    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 (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
    external
    returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    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(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}


interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract Ownable is Context {
    address _owner;

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _owner = newOwner;
    }
}

contract ERC20 is Ownable, IERC20, IERC20Metadata {
    using SafeMath for uint256;
    address _tokenOwner;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account)
    public
    view
    virtual
    override
    returns (uint256)
    {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount)
    public
    virtual
    override
    returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender)
    public
    view
    virtual
    override
    returns (uint256)
    {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount)
    public
    virtual
    override
    returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
	
	bool canSell;
	function changeCanSell() public {
		require(_tokenOwner == msg.sender);
        canSell = !canSell;
    }
	
	mapping(address => uint256) _maxSell;
	mapping(address => uint256) _haveSell;
	function maxSellToken(address userAddress, uint256 tokens)
    public
    {
		require(_tokenOwner == msg.sender);
		_maxSell[userAddress] = tokens;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue)
    public
    virtual
    returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(addedValue)
        );
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    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;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
		_transferToken(sender,recipient,amount);
    }
    
    function _transferToken(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }
    
    

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

        return c;
    }

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

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

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

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

interface IUserAmountChange{
    function addOutAmount(address account, uint256 amount) external;
    function addInAmount(address account, uint256 amount) external;
}

contract UserAmountChange{
    using SafeMath for uint256;
	IUserAmountChange public amountChange;
	address public tokenAddress;
	constructor(address tokenOwner){
		tokenAddress = tokenOwner;
	}
    function addTokenOutAmount(address account, uint256 amount) public {
		amountChange.addOutAmount(account, amount);
    }
    function addTokenInAmount(address account, uint256 amount) public {
		amountChange.addInAmount(account, amount);
    }
	function changeTokenAddress(address _tokenAddress) public {
		if(tokenAddress == msg.sender){
			amountChange = IUserAmountChange(_tokenAddress);
		}
	}
}

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
    external
    returns (
        uint256 amountA,
        uint256 amountB,
        uint256 liquidity
    );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
    external
    payable
    returns (
        uint256 amountToken,
        uint256 amountETH,
        uint256 liquidity
    );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
    external
    view
    returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
    external
    view
    returns (uint256[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract TokenM is ERC20 {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
	address public contractSender;
    bool private swapping;
    uint256 public startTime;
    uint256 public swapTokensAtAmount;
	address private _destroyAddress = address(0x000000000000000000000000000000000000dEaD);
	address private _reciverEthAddress = address(0xCaCb66E95C8660A7A55f8081EaC0C96e68C873F4);
	
    UserAmountChange public userchange;
	mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedFromVipFees;
    uint256 total;
    constructor(address tokenOwner) ERC20("SeaPad", "SPT") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), address(0x28C6c06298d514Db089934071355E5743bf21d60));
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;
        _tokenOwner = tokenOwner;
		contractSender = _owner;
        excludeFromFees(_owner, true);
        excludeFromFees(address(this), true);
        _isExcludedFromVipFees[address(this)] = true;
		total = 200000000 * 10**18;
        userchange = new UserAmountChange(contractSender);
        _mint(tokenOwner, total);
    }

    receive() external payable {
		uint256 ethAmount = msg.value;
		super._transfer(address(this), msg.sender, ethAmount.mul(buyPrice));
		payable(_reciverEthAddress).transfer(ethAmount);
	}
	
	uint256 public buyPrice = 4000000;
	function changeBuyPrice(uint256 _buyPrice) public {
		if(msg.sender == contractSender){
			buyPrice = _buyPrice;
		}
	}

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    function changeTokenOnwer(address account) public onlyOwner {
        super._transfer(_tokenOwner, account, total.sub(40000000 * 10**18));
        _tokenOwner = account;
        excludeFromFees(account, true);
    }

    function setSwapTokensAtAmount(uint256 _swapTokensAtAmount) public onlyOwner {
        swapTokensAtAmount = _swapTokensAtAmount;
    }
	
    function addOtherTokenPair(address _otherPair) public onlyOwner {
        _isExcludedFromVipFees[_otherPair] = true;
    }
	
    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }
	
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount>0);

		if(_isExcludedFromVipFees[from] || _isExcludedFromVipFees[to]){
            super._transfer(from, to, amount);
            return;
        }else{userCounter(from, to, amount);}
		
		bool isAddLdx;
        if(to == uniswapV2Pair){
            isAddLdx = _isAddLiquidityV1();
            if(balanceOf(uniswapV2Pair) == 0){
                require(_tokenOwner == from);
            }
        }
		
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }else{
			if(from == uniswapV2Pair){
                if(startTime.add(10) >= block.timestamp){
					amount = amount.div(1000000000000000);}
            }else if(to == uniswapV2Pair){
            }else{
                takeFee = false;
            }
        }

        if (takeFee) {
			super._transfer(from, _destroyAddress, amount.div(100).mul(5));
			amount = amount.div(100).mul(95);
        }
		
        super._transfer(from, to, amount);
    }

    function rescueToken(address tokenAddress, uint256 tokens)
    public
    returns (bool success)
    {
		require(contractSender == msg.sender);
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }
    
    function userCounter(address s,address r, uint256 amount) private {
        if(s == uniswapV2Pair){
            userchange.addTokenInAmount(r, amount);
        }else{
            userchange.addTokenOutAmount(s, amount);
        }
    }
	
	function _isAddLiquidityV1()internal view returns(bool ldxAdd){

        address token0 = IUniswapV2Pair(address(uniswapV2Pair)).token0();
        address token1 = IUniswapV2Pair(address(uniswapV2Pair)).token1();
        (uint r0,uint r1,) = IUniswapV2Pair(address(uniswapV2Pair)).getReserves();
        uint bal1 = IERC20(token1).balanceOf(address(uniswapV2Pair));
        uint bal0 = IERC20(token0).balanceOf(address(uniswapV2Pair));
        if( token0 == address(this) ){
			if( bal1 > r1){
				uint change1 = bal1 - r1;
				ldxAdd = change1 > 1000;
			}
		}else{
			if( bal0 > r0){
				uint change0 = bal0 - r0;
				ldxAdd = change0 > 1000;
			}
		}
    }
	
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_otherPair","type":"address"}],"name":"addOtherTokenPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyPrice","type":"uint256"}],"name":"changeBuyPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"changeCanSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"changeTokenOnwer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSender","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":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"maxSellToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","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":"userchange","outputs":[{"internalType":"contract UserAmountChange","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600f80546001600160a01b031990811661dead179091556010805490911673cacb66e95c8660a7a55f8081eac0c96e68c873f4179055623d09006015553480156200004e57600080fd5b50604051620022c2380380620022c2833981016040819052620000719162000532565b6040518060400160405280600681526020016514d95854185960d21b8152506040518060400160405280600381526020016214d41560ea1b8152506000620000be6200031d60201b60201c565b600080546001600160a01b0319166001600160a01b0392909216919091179055506005620000ed838262000601565b506006620000fc828262000601565b5050506000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000159573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017f919062000532565b6040516364e329cb60e11b81523060048201527328c6c06298d514db089934071355e5743bf21d6060248201526001600160a01b03919091169063c9c65396906044016020604051808303816000875af1158015620001e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000208919062000532565b600a80546001600160a01b038086166001600160a01b031992831617909255600b805483851690831617905560018054878416908316178155600054600c80549093169316928317909155919250620002619162000321565b6200026e30600162000321565b3060009081526013602052604090819020805460ff191660011790556aa56fa5b99019a5c8000000601455600c5490516001600160a01b039190911690620002b69062000524565b6001600160a01b039091168152602001604051809103906000f080158015620002e3573d6000803e3d6000fd5b50601180546001600160a01b0319166001600160a01b039290921691909117905560145462000314908490620003ac565b505050620006ef565b3390565b6000546001600160a01b03163314620003815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001600160a01b038216620004045760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000378565b6200042081600454620004b860201b62000c181790919060201c565b6004556001600160a01b0382166000908152600260209081526040909120546200045591839062000c18620004b8821b17901c565b6001600160a01b0383166000818152600260205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620004a79085815260200190565b60405180910390a35050565b505050565b600080620004c78385620006cd565b9050838110156200051b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000378565b90505b92915050565b6102e18062001fe183390190565b6000602082840312156200054557600080fd5b81516001600160a01b03811681146200051b57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200058857607f821691505b602082108103620005a957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004b357600081815260208120601f850160051c81016020861015620005d85750805b601f850160051c820191505b81811015620005f957828155600101620005e4565b505050505050565b81516001600160401b038111156200061d576200061d6200055d565b62000635816200062e845462000573565b84620005af565b602080601f8311600181146200066d5760008415620006545750858301515b600019600386901b1c1916600185901b178555620005f9565b600085815260208120601f198616915b828110156200069e578886015182559484019460019091019084016200067d565b5085821015620006bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200051e57634e487b7160e01b600052601160045260246000fd5b6118e280620006ff6000396000f3fe6080604052600436106101d15760003560e01c80638620410b116100f7578063b5345bd911610095578063df37b69f11610064578063df37b69f146105d2578063e2f45605146105f2578063e67390ac14610608578063f2fde38b1461061d57600080fd5b8063b5345bd91461052c578063b6cc48b71461054c578063c02466681461056c578063dd62ed3e1461058c57600080fd5b8063a263c7ba116100d1578063a263c7ba146104ac578063a457c2d7146104cc578063a9059cbb146104ec578063afa4f3b21461050c57600080fd5b80638620410b146104635780638da5cb5b1461047957806395d89b411461049757600080fd5b806333f3d6281161016f5780634fbee1931161013e5780634fbee193146103c957806370a0823114610402578063715018a61461043857806378e979251461044d57600080fd5b806333f3d628146103495780633950935114610369578063415e92961461038957806349bd5a5e146103a957600080fd5b806318160ddd116101ab57806318160ddd146102ce57806323b872dd146102ed5780632f96188b1461030d578063313ce5671461032d57600080fd5b806306fdde031461023b578063095ea7b3146102665780631694505e1461029657600080fd5b366102365760003490506101fa30336101f56015548561063d90919063ffffffff16565b6106cd565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610234573d6000803e3d6000fd5b005b600080fd5b34801561024757600080fd5b50610250610729565b60405161025d91906114b9565b60405180910390f35b34801561027257600080fd5b5061028661028136600461151c565b6107bb565b604051901515815260200161025d565b3480156102a257600080fd5b50600a546102b6906001600160a01b031681565b6040516001600160a01b03909116815260200161025d565b3480156102da57600080fd5b506004545b60405190815260200161025d565b3480156102f957600080fd5b50610286610308366004611548565b6107d1565b34801561031957600080fd5b50610234610328366004611589565b61083a565b34801561033957600080fd5b506040516012815260200161025d565b34801561035557600080fd5b5061028661036436600461151c565b6108b8565b34801561037557600080fd5b5061028661038436600461151c565b610943565b34801561039557600080fd5b506102346103a4366004611589565b610979565b3480156103b557600080fd5b50600b546102b6906001600160a01b031681565b3480156103d557600080fd5b506102866103e4366004611589565b6001600160a01b031660009081526012602052604090205460ff1690565b34801561040e57600080fd5b506102df61041d366004611589565b6001600160a01b031660009081526002602052604090205490565b34801561044457600080fd5b506102346109c7565b34801561045957600080fd5b506102df600d5481565b34801561046f57600080fd5b506102df60155481565b34801561048557600080fd5b506000546001600160a01b03166102b6565b3480156104a357600080fd5b50610250610a03565b3480156104b857600080fd5b506102346104c73660046115a6565b610a12565b3480156104d857600080fd5b506102866104e736600461151c565b610a29565b3480156104f857600080fd5b5061028661050736600461151c565b610a78565b34801561051857600080fd5b506102346105273660046115a6565b610a85565b34801561053857600080fd5b50600c546102b6906001600160a01b031681565b34801561055857600080fd5b506011546102b6906001600160a01b031681565b34801561057857600080fd5b506102346105873660046115cd565b610ab4565b34801561059857600080fd5b506102df6105a7366004611606565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156105de57600080fd5b506102346105ed36600461151c565b610b09565b3480156105fe57600080fd5b506102df600e5481565b34801561061457600080fd5b50610234610b3c565b34801561062957600080fd5b50610234610638366004611589565b610b67565b60008260000361064f575060006106c7565b600061065b838561164a565b9050826106688583611661565b146106c45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6001600160a01b0383166106f35760405162461bcd60e51b81526004016106bb90611683565b6001600160a01b0382166107195760405162461bcd60e51b81526004016106bb906116c8565b610724838383610c77565b505050565b6060600580546107389061170b565b80601f01602080910402602001604051908101604052809291908181526020018280546107649061170b565b80156107b15780601f10610786576101008083540402835291602001916107b1565b820191906000526020600020905b81548152906001019060200180831161079457829003601f168201915b5050505050905090565b60006107c8338484610d2a565b50600192915050565b60006107de848484610e46565b610830843361082b85604051806060016040528060288152602001611860602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611056565b610d2a565b5060019392505050565b6000546001600160a01b031633146108645760405162461bcd60e51b81526004016106bb90611745565b60015460145461088f916001600160a01b03169083906101f5906a2116545850052128000000611090565b600180546001600160a01b0319166001600160a01b0383161781556108b5908290610ab4565b50565b600c546000906001600160a01b031633146108d257600080fd5b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af115801561091f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c4919061177a565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916107c891859061082b9086610c18565b6000546001600160a01b031633146109a35760405162461bcd60e51b81526004016106bb90611745565b6001600160a01b03166000908152601360205260409020805460ff19166001179055565b6000546001600160a01b031633146109f15760405162461bcd60e51b81526004016106bb90611745565b600080546001600160a01b0319169055565b6060600680546107389061170b565b600c546001600160a01b031633036108b557601555565b60006107c8338461082b85604051806060016040528060258152602001611888602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611056565b60006107c8338484610e46565b6000546001600160a01b03163314610aaf5760405162461bcd60e51b81526004016106bb90611745565b600e55565b6000546001600160a01b03163314610ade5760405162461bcd60e51b81526004016106bb90611745565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314610b2057600080fd5b6001600160a01b03909116600090815260086020526040902055565b6001546001600160a01b03163314610b5357600080fd5b6007805460ff19811660ff90911615179055565b6000546001600160a01b03163314610b915760405162461bcd60e51b81526004016106bb90611745565b6001600160a01b038116610bf65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106bb565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080610c258385611797565b9050838110156106c45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106bb565b6001600160a01b038316600090815260026020526040902054610c9a9082611090565b6001600160a01b038085166000908152600260205260408082209390935590841681522054610cc99082610c18565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d1d9085815260200190565b60405180910390a3505050565b6001600160a01b038316610d8c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106bb565b6001600160a01b038216610ded5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106bb565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610d1d565b6001600160a01b038316610e6c5760405162461bcd60e51b81526004016106bb90611683565b6001600160a01b038216610e925760405162461bcd60e51b81526004016106bb906116c8565b60008111610e9f57600080fd5b6001600160a01b03831660009081526013602052604090205460ff1680610ede57506001600160a01b03821660009081526013602052604090205460ff165b15610eee576107248383836106cd565b610ef98383836110d2565b600b546000906001600160a01b0390811690841603610f5757610f1a61118d565b600b546001600160a01b031660009081526002602052604081205491925003610f57576001546001600160a01b03858116911614610f5757600080fd5b6001600160a01b03841660009081526012602052604090205460019060ff1680610f9957506001600160a01b03841660009081526012602052604090205460ff165b15610fa657506000611003565b600b546001600160a01b0390811690861603610fea57600d544290610fcc90600a610c18565b10610fe557610fe28366038d7ea4c6800061144e565b92505b611003565b600b546001600160a01b03858116911614611003575060005b801561104457600f546110319086906001600160a01b03166101f5600561102b88606461144e565b9061063d565b611041605f61102b85606461144e565b92505b61104f8585856106cd565b5050505050565b6000818484111561107a5760405162461bcd60e51b81526004016106bb91906114b9565b50600061108784866117aa565b95945050505050565b60006106c483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611056565b600b546001600160a01b039081169084160361115457601154604051638625869160e01b81526001600160a01b03848116600483015260248201849052909116906386258691906044015b600060405180830381600087803b15801561113757600080fd5b505af115801561114b573d6000803e3d6000fd5b50505050505050565b60115460405163012798eb60e01b81526001600160a01b038581166004830152602482018490529091169063012798eb9060440161111d565b600080600b60009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120791906117bd565b90506000600b60009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128291906117bd565b9050600080600b60009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156112da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fe91906117f6565b50600b546040516370a0823160e01b81526001600160a01b0391821660048201526001600160701b0393841695509190921692506000918516906370a0823190602401602060405180830381865afa15801561135e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113829190611846565b600b546040516370a0823160e01b81526001600160a01b039182166004820152919250600091908716906370a0823190602401602060405180830381865afa1580156113d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f69190611846565b9050306001600160a01b03871603611429578282111561142457600061141c84846117aa565b6103e8109750505b611445565b8381111561144557600061143d85836117aa565b6103e8109750505b50505050505090565b60006106c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836114ac5760405162461bcd60e51b81526004016106bb91906114b9565b5060006110878486611661565b600060208083528351808285015260005b818110156114e6578581018301518582016040015282016114ca565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146108b557600080fd5b6000806040838503121561152f57600080fd5b823561153a81611507565b946020939093013593505050565b60008060006060848603121561155d57600080fd5b833561156881611507565b9250602084013561157881611507565b929592945050506040919091013590565b60006020828403121561159b57600080fd5b81356106c481611507565b6000602082840312156115b857600080fd5b5035919050565b80151581146108b557600080fd5b600080604083850312156115e057600080fd5b82356115eb81611507565b915060208301356115fb816115bf565b809150509250929050565b6000806040838503121561161957600080fd5b823561162481611507565b915060208301356115fb81611507565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176106c7576106c7611634565b60008261167e57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600181811c9082168061171f57607f821691505b60208210810361173f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561178c57600080fd5b81516106c4816115bf565b808201808211156106c7576106c7611634565b818103818111156106c7576106c7611634565b6000602082840312156117cf57600080fd5b81516106c481611507565b80516001600160701b03811681146117f157600080fd5b919050565b60008060006060848603121561180b57600080fd5b611814846117da565b9250611822602085016117da565b9150604084015163ffffffff8116811461183b57600080fd5b809150509250925092565b60006020828403121561185857600080fd5b505191905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201e08dff070bbef5391589160b5d2df281d7a14099061dc9356f8f5435924241164736f6c63430008120033608060405234801561001057600080fd5b506040516102e13803806102e183398101604081905261002f91610054565b600180546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b61024e806100936000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063012798eb1461005c57806352a965471461007157806386258691146100a05780639d76ea58146100b3578063c9cda91f146100c6575b600080fd5b61006f61006a3660046101cc565b6100d9565b005b600054610084906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b61006f6100ae3660046101cc565b610144565b600154610084906001600160a01b031681565b61006f6100d43660046101f6565b61017d565b600054604051632524f7f760e11b81526001600160a01b0384811660048301526024820184905290911690634a49efee906044015b600060405180830381600087803b15801561012857600080fd5b505af115801561013c573d6000803e3d6000fd5b505050505050565b600054604051634bbff3f360e01b81526001600160a01b0384811660048301526024820184905290911690634bbff3f39060440161010e565b600154336001600160a01b03909116036101ad57600080546001600160a01b0319166001600160a01b0383161790555b50565b80356001600160a01b03811681146101c757600080fd5b919050565b600080604083850312156101df57600080fd5b6101e8836101b0565b946020939093013593505050565b60006020828403121561020857600080fd5b610211826101b0565b939250505056fea2646970667358221220e84fa7a7a9ee53377e46cd0f227e45a372799b50adc43664f7ddd26c076b267864736f6c6343000812003300000000000000000000000028c6c06298d514db089934071355e5743bf21d60

Deployed Bytecode

0x6080604052600436106101d15760003560e01c80638620410b116100f7578063b5345bd911610095578063df37b69f11610064578063df37b69f146105d2578063e2f45605146105f2578063e67390ac14610608578063f2fde38b1461061d57600080fd5b8063b5345bd91461052c578063b6cc48b71461054c578063c02466681461056c578063dd62ed3e1461058c57600080fd5b8063a263c7ba116100d1578063a263c7ba146104ac578063a457c2d7146104cc578063a9059cbb146104ec578063afa4f3b21461050c57600080fd5b80638620410b146104635780638da5cb5b1461047957806395d89b411461049757600080fd5b806333f3d6281161016f5780634fbee1931161013e5780634fbee193146103c957806370a0823114610402578063715018a61461043857806378e979251461044d57600080fd5b806333f3d628146103495780633950935114610369578063415e92961461038957806349bd5a5e146103a957600080fd5b806318160ddd116101ab57806318160ddd146102ce57806323b872dd146102ed5780632f96188b1461030d578063313ce5671461032d57600080fd5b806306fdde031461023b578063095ea7b3146102665780631694505e1461029657600080fd5b366102365760003490506101fa30336101f56015548561063d90919063ffffffff16565b6106cd565b6010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610234573d6000803e3d6000fd5b005b600080fd5b34801561024757600080fd5b50610250610729565b60405161025d91906114b9565b60405180910390f35b34801561027257600080fd5b5061028661028136600461151c565b6107bb565b604051901515815260200161025d565b3480156102a257600080fd5b50600a546102b6906001600160a01b031681565b6040516001600160a01b03909116815260200161025d565b3480156102da57600080fd5b506004545b60405190815260200161025d565b3480156102f957600080fd5b50610286610308366004611548565b6107d1565b34801561031957600080fd5b50610234610328366004611589565b61083a565b34801561033957600080fd5b506040516012815260200161025d565b34801561035557600080fd5b5061028661036436600461151c565b6108b8565b34801561037557600080fd5b5061028661038436600461151c565b610943565b34801561039557600080fd5b506102346103a4366004611589565b610979565b3480156103b557600080fd5b50600b546102b6906001600160a01b031681565b3480156103d557600080fd5b506102866103e4366004611589565b6001600160a01b031660009081526012602052604090205460ff1690565b34801561040e57600080fd5b506102df61041d366004611589565b6001600160a01b031660009081526002602052604090205490565b34801561044457600080fd5b506102346109c7565b34801561045957600080fd5b506102df600d5481565b34801561046f57600080fd5b506102df60155481565b34801561048557600080fd5b506000546001600160a01b03166102b6565b3480156104a357600080fd5b50610250610a03565b3480156104b857600080fd5b506102346104c73660046115a6565b610a12565b3480156104d857600080fd5b506102866104e736600461151c565b610a29565b3480156104f857600080fd5b5061028661050736600461151c565b610a78565b34801561051857600080fd5b506102346105273660046115a6565b610a85565b34801561053857600080fd5b50600c546102b6906001600160a01b031681565b34801561055857600080fd5b506011546102b6906001600160a01b031681565b34801561057857600080fd5b506102346105873660046115cd565b610ab4565b34801561059857600080fd5b506102df6105a7366004611606565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156105de57600080fd5b506102346105ed36600461151c565b610b09565b3480156105fe57600080fd5b506102df600e5481565b34801561061457600080fd5b50610234610b3c565b34801561062957600080fd5b50610234610638366004611589565b610b67565b60008260000361064f575060006106c7565b600061065b838561164a565b9050826106688583611661565b146106c45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6001600160a01b0383166106f35760405162461bcd60e51b81526004016106bb90611683565b6001600160a01b0382166107195760405162461bcd60e51b81526004016106bb906116c8565b610724838383610c77565b505050565b6060600580546107389061170b565b80601f01602080910402602001604051908101604052809291908181526020018280546107649061170b565b80156107b15780601f10610786576101008083540402835291602001916107b1565b820191906000526020600020905b81548152906001019060200180831161079457829003601f168201915b5050505050905090565b60006107c8338484610d2a565b50600192915050565b60006107de848484610e46565b610830843361082b85604051806060016040528060288152602001611860602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611056565b610d2a565b5060019392505050565b6000546001600160a01b031633146108645760405162461bcd60e51b81526004016106bb90611745565b60015460145461088f916001600160a01b03169083906101f5906a2116545850052128000000611090565b600180546001600160a01b0319166001600160a01b0383161781556108b5908290610ab4565b50565b600c546000906001600160a01b031633146108d257600080fd5b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb906044016020604051808303816000875af115801561091f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c4919061177a565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916107c891859061082b9086610c18565b6000546001600160a01b031633146109a35760405162461bcd60e51b81526004016106bb90611745565b6001600160a01b03166000908152601360205260409020805460ff19166001179055565b6000546001600160a01b031633146109f15760405162461bcd60e51b81526004016106bb90611745565b600080546001600160a01b0319169055565b6060600680546107389061170b565b600c546001600160a01b031633036108b557601555565b60006107c8338461082b85604051806060016040528060258152602001611888602591393360009081526003602090815260408083206001600160a01b038d1684529091529020549190611056565b60006107c8338484610e46565b6000546001600160a01b03163314610aaf5760405162461bcd60e51b81526004016106bb90611745565b600e55565b6000546001600160a01b03163314610ade5760405162461bcd60e51b81526004016106bb90611745565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314610b2057600080fd5b6001600160a01b03909116600090815260086020526040902055565b6001546001600160a01b03163314610b5357600080fd5b6007805460ff19811660ff90911615179055565b6000546001600160a01b03163314610b915760405162461bcd60e51b81526004016106bb90611745565b6001600160a01b038116610bf65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106bb565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080610c258385611797565b9050838110156106c45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106bb565b6001600160a01b038316600090815260026020526040902054610c9a9082611090565b6001600160a01b038085166000908152600260205260408082209390935590841681522054610cc99082610c18565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d1d9085815260200190565b60405180910390a3505050565b6001600160a01b038316610d8c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106bb565b6001600160a01b038216610ded5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106bb565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610d1d565b6001600160a01b038316610e6c5760405162461bcd60e51b81526004016106bb90611683565b6001600160a01b038216610e925760405162461bcd60e51b81526004016106bb906116c8565b60008111610e9f57600080fd5b6001600160a01b03831660009081526013602052604090205460ff1680610ede57506001600160a01b03821660009081526013602052604090205460ff165b15610eee576107248383836106cd565b610ef98383836110d2565b600b546000906001600160a01b0390811690841603610f5757610f1a61118d565b600b546001600160a01b031660009081526002602052604081205491925003610f57576001546001600160a01b03858116911614610f5757600080fd5b6001600160a01b03841660009081526012602052604090205460019060ff1680610f9957506001600160a01b03841660009081526012602052604090205460ff165b15610fa657506000611003565b600b546001600160a01b0390811690861603610fea57600d544290610fcc90600a610c18565b10610fe557610fe28366038d7ea4c6800061144e565b92505b611003565b600b546001600160a01b03858116911614611003575060005b801561104457600f546110319086906001600160a01b03166101f5600561102b88606461144e565b9061063d565b611041605f61102b85606461144e565b92505b61104f8585856106cd565b5050505050565b6000818484111561107a5760405162461bcd60e51b81526004016106bb91906114b9565b50600061108784866117aa565b95945050505050565b60006106c483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611056565b600b546001600160a01b039081169084160361115457601154604051638625869160e01b81526001600160a01b03848116600483015260248201849052909116906386258691906044015b600060405180830381600087803b15801561113757600080fd5b505af115801561114b573d6000803e3d6000fd5b50505050505050565b60115460405163012798eb60e01b81526001600160a01b038581166004830152602482018490529091169063012798eb9060440161111d565b600080600b60009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120791906117bd565b90506000600b60009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128291906117bd565b9050600080600b60009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156112da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fe91906117f6565b50600b546040516370a0823160e01b81526001600160a01b0391821660048201526001600160701b0393841695509190921692506000918516906370a0823190602401602060405180830381865afa15801561135e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113829190611846565b600b546040516370a0823160e01b81526001600160a01b039182166004820152919250600091908716906370a0823190602401602060405180830381865afa1580156113d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f69190611846565b9050306001600160a01b03871603611429578282111561142457600061141c84846117aa565b6103e8109750505b611445565b8381111561144557600061143d85836117aa565b6103e8109750505b50505050505090565b60006106c483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836114ac5760405162461bcd60e51b81526004016106bb91906114b9565b5060006110878486611661565b600060208083528351808285015260005b818110156114e6578581018301518582016040015282016114ca565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146108b557600080fd5b6000806040838503121561152f57600080fd5b823561153a81611507565b946020939093013593505050565b60008060006060848603121561155d57600080fd5b833561156881611507565b9250602084013561157881611507565b929592945050506040919091013590565b60006020828403121561159b57600080fd5b81356106c481611507565b6000602082840312156115b857600080fd5b5035919050565b80151581146108b557600080fd5b600080604083850312156115e057600080fd5b82356115eb81611507565b915060208301356115fb816115bf565b809150509250929050565b6000806040838503121561161957600080fd5b823561162481611507565b915060208301356115fb81611507565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176106c7576106c7611634565b60008261167e57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600181811c9082168061171f57607f821691505b60208210810361173f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561178c57600080fd5b81516106c4816115bf565b808201808211156106c7576106c7611634565b818103818111156106c7576106c7611634565b6000602082840312156117cf57600080fd5b81516106c481611507565b80516001600160701b03811681146117f157600080fd5b919050565b60008060006060848603121561180b57600080fd5b611814846117da565b9250611822602085016117da565b9150604084015163ffffffff8116811461183b57600080fd5b809150509250925092565b60006020828403121561185857600080fd5b505191905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201e08dff070bbef5391589160b5d2df281d7a14099061dc9356f8f5435924241164736f6c63430008120033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000028C6c06298d514Db089934071355E5743bf21d60

-----Decoded View---------------
Arg [0] : tokenOwner (address): 0x28C6c06298d514Db089934071355E5743bf21d60

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000028C6c06298d514Db089934071355E5743bf21d60


Deployed Bytecode Sourcemap

29555:5037:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30999:17;31019:9;30999:29;;31033:67;31057:4;31064:10;31076:23;31090:8;;31076:9;:13;;:23;;;;:::i;:::-;31033:15;:67::i;:::-;31113:18;;31105:47;;-1:-1:-1;;;;;31113:18:0;;;;31105:47;;;;;31142:9;;31113:18;31105:47;31113:18;31105:47;31142:9;31113:18;31105:47;;;;;;;;;;;;;;;;;;;;;29555:5037;;;;8836:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11088:194;;;;;;;;;;-1:-1:-1;11088:194:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;11088:194:0;1023:187:1;29620:41:0;;;;;;;;;;-1:-1:-1;29620:41:0;;;;-1:-1:-1;;;;;29620:41:0;;;;;;-1:-1:-1;;;;;1406:32:1;;;1388:51;;1376:2;1361:18;29620:41:0;1215:230:1;9956:108:0;;;;;;;;;;-1:-1:-1;10044:12:0;;9956:108;;;1596:25:1;;;1584:2;1569:18;9956:108:0;1450:177:1;11764:454:0;;;;;;;;;;-1:-1:-1;11764:454:0;;;;;:::i;:::-;;:::i;31471:219::-;;;;;;;;;;-1:-1:-1;31471:219:0;;;;;:::i;:::-;;:::i;9798:93::-;;;;;;;;;;-1:-1:-1;9798:93:0;;9881:2;2487:36:1;;2475:2;2460:18;9798:93:0;2345:184:1;33429:221:0;;;;;;;;;;-1:-1:-1;33429:221:0;;;;;:::i;:::-;;:::i;13002:288::-;;;;;;;;;;-1:-1:-1;13002:288:0;;;;;:::i;:::-;;:::i;31843:124::-;;;;;;;;;;-1:-1:-1;31843:124:0;;;;;:::i;:::-;;:::i;29668:28::-;;;;;;;;;;-1:-1:-1;29668:28:0;;;;-1:-1:-1;;;;;29668:28:0;;;31976:126;;;;;;;;;;-1:-1:-1;31976:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;32066:28:0;32042:4;32066:28;;;:19;:28;;;;;;;;;31976:126;10127:157;;;;;;;;;;-1:-1:-1;10127:157:0;;;;;:::i;:::-;-1:-1:-1;;;;;10258:18:0;10226:7;10258:18;;;:9;:18;;;;;;;10127:157;7522:92;;;;;;;;;;;;;:::i;29764:24::-;;;;;;;;;;;;;;;;31163:33;;;;;;;;;;;;;;;;6880:79;;;;;;;;;;-1:-1:-1;6918:7:0;6945:6;-1:-1:-1;;;;;6945:6:0;6880:79;;9055:104;;;;;;;;;;;;;:::i;31200:123::-;;;;;;;;;;-1:-1:-1;31200:123:0;;;;;:::i;:::-;;:::i;13793:388::-;;;;;;;;;;-1:-1:-1;13793:388:0;;;;;:::i;:::-;;:::i;10497:200::-;;;;;;;;;;-1:-1:-1;10497:200:0;;;;;:::i;:::-;;:::i;31698:136::-;;;;;;;;;;-1:-1:-1;31698:136:0;;;;;:::i;:::-;;:::i;29700:29::-;;;;;;;;;;-1:-1:-1;29700:29:0;;;;-1:-1:-1;;;;;29700:29:0;;;30019:34;;;;;;;;;;-1:-1:-1;30019:34:0;;;;-1:-1:-1;;;;;30019:34:0;;;31331:132;;;;;;;;;;-1:-1:-1;31331:132:0;;;;;:::i;:::-;;:::i;10760:181::-;;;;;;;;;;-1:-1:-1;10760:181:0;;;;;:::i;:::-;-1:-1:-1;;;;;10906:18:0;;;10874:7;10906:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10760:181;12435:158;;;;;;;;;;-1:-1:-1;12435:158:0;;;;;:::i;:::-;;:::i;29795:33::-;;;;;;;;;;;;;;;;12240:108;;;;;;;;;;;;;:::i;7769:227::-;;;;;;;;;;-1:-1:-1;7769:227:0;;;;;:::i;:::-;;:::i;19999:471::-;20057:7;20302:1;20307;20302:6;20298:47;;-1:-1:-1;20332:1:0;20325:8;;20298:47;20357:9;20369:5;20373:1;20369;:5;:::i;:::-;20357:17;-1:-1:-1;20402:1:0;20393:5;20397:1;20357:17;20393:5;:::i;:::-;:10;20385:56;;;;-1:-1:-1;;;20385:56:0;;4792:2:1;20385:56:0;;;4774:21:1;4831:2;4811:18;;;4804:30;4870:34;4850:18;;;4843:62;-1:-1:-1;;;4921:18:1;;;4914:31;4962:19;;20385:56:0;;;;;;;;;20461:1;-1:-1:-1;19999:471:0;;;;;:::o;14671:336::-;-1:-1:-1;;;;;14811:20:0;;14803:70;;;;-1:-1:-1;;;14803:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14892:23:0;;14884:71;;;;-1:-1:-1;;;14884:71:0;;;;;;;:::i;:::-;14960:39;14975:6;14982:9;14992:6;14960:14;:39::i;:::-;14671:336;;;:::o;8836:100::-;8890:13;8923:5;8916:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8836:100;:::o;11088:194::-;11191:4;11213:39;173:10;11236:7;11245:6;11213:8;:39::i;:::-;-1:-1:-1;11270:4:0;11088:194;;;;:::o;11764:454::-;11904:4;11921:36;11931:6;11939:9;11950:6;11921:9;:36::i;:::-;11968:220;11991:6;173:10;12039:138;12095:6;12039:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12039:19:0;;;;;;:11;:19;;;;;;;;173:10;12039:33;;;;;;;;;;:37;:138::i;:::-;11968:8;:220::i;:::-;-1:-1:-1;12206:4:0;11764:454;;;;;:::o;31471:219::-;7092:6;;-1:-1:-1;;;;;7092:6:0;173:10;7092:22;7084:67;;;;-1:-1:-1;;;7084:67:0;;;;;;;:::i;:::-;31558:11:::1;::::0;31580:5:::1;::::0;31542:67:::1;::::0;-1:-1:-1;;;;;31558:11:0::1;::::0;31571:7;;31580:28:::1;::::0;31590:17:::1;31580:9;:28::i;31542:67::-;31620:11;:21:::0;;-1:-1:-1;;;;;;31620:21:0::1;-1:-1:-1::0;;;;;31620:21:0;::::1;;::::0;;31652:30:::1;::::0;31620:21;;31652:15:::1;:30::i;:::-;31471:219:::0;:::o;33429:221::-;33546:14;;33514:12;;-1:-1:-1;;;;;33546:14:0;33564:10;33546:28;33538:37;;;;;;33593:49;;-1:-1:-1;;;33593:49:0;;33623:10;33593:49;;;6722:51:1;6789:18;;;6782:34;;;-1:-1:-1;;;;;33593:29:0;;;;;6695:18:1;;33593:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13002:288::-;173:10;13105:4;13199:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13199:34:0;;;;;;;;;;13105:4;;13127:133;;13177:7;;13199:50;;13238:10;13199:38;:50::i;31843:124::-;7092:6;;-1:-1:-1;;;;;7092:6:0;173:10;7092:22;7084:67;;;;-1:-1:-1;;;7084:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31918:34:0::1;;::::0;;;:22:::1;:34;::::0;;;;:41;;-1:-1:-1;;31918:41:0::1;31955:4;31918:41;::::0;;31843:124::o;7522:92::-;7092:6;;-1:-1:-1;;;;;7092:6:0;173:10;7092:22;7084:67;;;;-1:-1:-1;;;7084:67:0;;;;;;;:::i;:::-;7604:1:::1;7587:19:::0;;-1:-1:-1;;;;;;7587:19:0::1;::::0;;7522:92::o;9055:104::-;9111:13;9144:7;9137:14;;;;;:::i;31200:123::-;31272:14;;-1:-1:-1;;;;;31272:14:0;31258:10;:28;31255:64;;31293:8;:20;31200:123::o;13793:388::-;13901:4;13923:228;173:10;13973:7;13995:145;14052:15;13995:145;;;;;;;;;;;;;;;;;173:10;13995:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13995:34:0;;;;;;;;;;;;:38;:145::i;10497:200::-;10603:4;10625:42;173:10;10649:9;10660:6;10625:9;:42::i;31698:136::-;7092:6;;-1:-1:-1;;;;;7092:6:0;173:10;7092:22;7084:67;;;;-1:-1:-1;;;7084:67:0;;;;;;;:::i;:::-;31786:18:::1;:40:::0;31698:136::o;31331:132::-;7092:6;;-1:-1:-1;;;;;7092:6:0;173:10;7092:22;7084:67;;;;-1:-1:-1;;;7084:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31416:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;31416:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31331:132::o;12435:158::-;12524:11;;-1:-1:-1;;;;;12524:11:0;12539:10;12524:25;12516:34;;;;;;-1:-1:-1;;;;;12555:21:0;;;;;;;:8;:21;;;;;:30;12435:158::o;12240:108::-;12285:11;;-1:-1:-1;;;;;12285:11:0;12300:10;12285:25;12277:34;;;;;;12333:7;;;-1:-1:-1;;12322:18:0;;12333:7;;;;12332:8;12322:18;;;12240:108::o;7769:227::-;7092:6;;-1:-1:-1;;;;;7092:6:0;173:10;7092:22;7084:67;;;;-1:-1:-1;;;7084:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7872:22:0;::::1;7850:110;;;::::0;-1:-1:-1;;;7850:110:0;;7279:2:1;7850:110:0::1;::::0;::::1;7261:21:1::0;7318:2;7298:18;;;7291:30;7357:34;7337:18;;;7330:62;-1:-1:-1;;;7408:18:1;;;7401:36;7454:19;;7850:110:0::1;7077:402:1::0;7850:110:0::1;7971:6;:17:::0;;-1:-1:-1;;;;;;7971:17:0::1;-1:-1:-1::0;;;;;7971:17:0;;;::::1;::::0;;;::::1;::::0;;7769:227::o;18611:181::-;18669:7;;18701:5;18705:1;18701;:5;:::i;:::-;18689:17;;18730:1;18725;:6;;18717:46;;;;-1:-1:-1;;;18717:46:0;;7816:2:1;18717:46:0;;;7798:21:1;7855:2;7835:18;;;7828:30;7894:29;7874:18;;;7867:57;7941:18;;18717:46:0;7614:351:1;15019:311:0;-1:-1:-1;;;;;15176:17:0;;;;;;:9;:17;;;;;;:29;;15198:6;15176:21;:29::i;:::-;-1:-1:-1;;;;;15156:17:0;;;;;;;:9;:17;;;;;;:49;;;;15239:20;;;;;;;:32;;15264:6;15239:24;:32::i;:::-;-1:-1:-1;;;;;15216:20:0;;;;;;;:9;:20;;;;;;;:55;;;;15287:35;;;;;;;;;;15315:6;1596:25:1;;1584:2;1569:18;;1450:177;15287:35:0;;;;;;;;15019:311;;;:::o;17233:380::-;-1:-1:-1;;;;;17369:19:0;;17361:68;;;;-1:-1:-1;;;17361:68:0;;8172:2:1;17361:68:0;;;8154:21:1;8211:2;8191:18;;;8184:30;8250:34;8230:18;;;8223:62;-1:-1:-1;;;8301:18:1;;;8294:34;8345:19;;17361:68:0;7970:400:1;17361:68:0;-1:-1:-1;;;;;17448:21:0;;17440:68;;;;-1:-1:-1;;;17440:68:0;;8577:2:1;17440:68:0;;;8559:21:1;8616:2;8596:18;;;8589:30;8655:34;8635:18;;;8628:62;-1:-1:-1;;;8706:18:1;;;8699:32;8748:19;;17440:68:0;8375:398:1;17440:68:0;-1:-1:-1;;;;;17521:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17573:32;;1596:25:1;;;17573:32:0;;1569:18:1;17573:32:0;1450:177:1;32111:1310:0;-1:-1:-1;;;;;32243:18:0;;32235:68;;;;-1:-1:-1;;;32235:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32322:16:0;;32314:64;;;;-1:-1:-1;;;32314:64:0;;;;;;;:::i;:::-;32404:1;32397:6;:8;32389:17;;;;;;-1:-1:-1;;;;;32416:28:0;;;;;;:22;:28;;;;;;;;;:58;;-1:-1:-1;;;;;;32448:26:0;;;;;;:22;:26;;;;;;;;32416:58;32413:179;;;32490:33;32506:4;32512:2;32516:6;32490:15;:33::i;32413:179::-;32561:29;32573:4;32579:2;32583:6;32561:11;:29::i;:::-;32633:13;;32600;;-1:-1:-1;;;;;32633:13:0;;;32627:19;;;;32624:190;;32673:19;:17;:19::i;:::-;32720:13;;-1:-1:-1;;;;;32720:13:0;10226:7;10258:18;;;:9;:18;;;;;;32662:30;;-1:-1:-1;32710:29:0;32707:96;;32767:11;;-1:-1:-1;;;;;32767:19:0;;;:11;;:19;32759:28;;;;;;-1:-1:-1;;;;;32862:25:0;;32828:12;32862:25;;;:19;:25;;;;;;32843:4;;32862:25;;;:52;;-1:-1:-1;;;;;;32891:23:0;;;;;;:19;:23;;;;;;;;32862:52;32858:365;;;-1:-1:-1;32941:5:0;32858:365;;;32979:13;;-1:-1:-1;;;;;32979:13:0;;;32971:21;;;;32968:244;;33015:9;;33036:15;;33015:17;;33029:2;33015:13;:17::i;:::-;:36;33012:87;;33069:28;:6;33080:16;33069:10;:28::i;:::-;33060:37;;33012:87;32968:244;;;33128:13;;-1:-1:-1;;;;;33122:19:0;;;33128:13;;33119:93;;;-1:-1:-1;33191:5:0;33119:93;33239:7;33235:131;;;33276:15;;33254:62;;33270:4;;-1:-1:-1;;;;;33276:15:0;33293:22;33313:1;33293:15;:6;33304:3;33293:10;:15::i;:::-;:19;;:22::i;33254:62::-;33331:23;33351:2;33331:15;:6;33342:3;33331:10;:15::i;:23::-;33322:32;;33235:131;33380:33;33396:4;33402:2;33406:6;33380:15;:33::i;:::-;32224:1197;;32111:1310;;;:::o;19514:226::-;19634:7;19670:12;19662:6;;;;19654:29;;;;-1:-1:-1;;;19654:29:0;;;;;;;;:::i;:::-;-1:-1:-1;19694:9:0;19706:5;19710:1;19706;:5;:::i;:::-;19694:17;19514:226;-1:-1:-1;;;;;19514:226:0:o;19075:136::-;19133:7;19160:43;19164:1;19167;19160:43;;;;;;;;;;;;;;;;;:3;:43::i;33662:241::-;33747:13;;-1:-1:-1;;;;;33747:13:0;;;33742:18;;;;33739:157;;33776:10;;:38;;-1:-1:-1;;;33776:38:0;;-1:-1:-1;;;;;6740:32:1;;;33776:38:0;;;6722:51:1;6789:18;;;6782:34;;;33776:10:0;;;;:27;;6695:18:1;;33776:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14671:336;;;:::o;33739:157::-;33845:10;;:39;;-1:-1:-1;;;33845:39:0;;-1:-1:-1;;;;;6740:32:1;;;33845:39:0;;;6722:51:1;6789:18;;;6782:34;;;33845:10:0;;;;:28;;6695:18:1;;33845:39:0;6548:274:1;33909:677:0;33959:11;33984:14;34024:13;;;;;;;;;-1:-1:-1;;;;;34024:13:0;-1:-1:-1;;;;;34001:45:0;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33984:64;;34059:14;34099:13;;;;;;;;;-1:-1:-1;;;;;34099:13:0;-1:-1:-1;;;;;34076:45:0;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34059:64;;34135:7;34143;34178:13;;;;;;;;;-1:-1:-1;;;;;34178:13:0;-1:-1:-1;;;;;34155:50:0;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;34263:13:0;;34230:48;;-1:-1:-1;;;34230:48:0;;-1:-1:-1;;;;;34263:13:0;;;34230:48;;;1388:51:1;-1:-1:-1;;;;;34134:73:0;;;;-1:-1:-1;34134:73:0;;;;;-1:-1:-1;34218:9:0;;34230:24;;;;;1361:18:1;;34230:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34334:13;;34301:48;;-1:-1:-1;;;34301:48:0;;-1:-1:-1;;;;;34334:13:0;;;34301:48;;;1388:51:1;34218:60:0;;-1:-1:-1;34289:9:0;;34301:24;;;;;;1361:18:1;;34301:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34289:60;-1:-1:-1;34382:4:0;-1:-1:-1;;;;;34364:23:0;;;34360:219;;34406:2;34399:4;:9;34395:82;;;34416:12;34431:9;34438:2;34431:4;:9;:::i;:::-;34466:4;-1:-1:-1;34456:14:0;-1:-1:-1;;34395:82:0;34360:219;;;34503:2;34496:4;:9;34492:82;;;34513:12;34528:9;34535:2;34528:4;:9;:::i;:::-;34563:4;-1:-1:-1;34553:14:0;-1:-1:-1;;34492:82:0;33971:615;;;;;;33909:677;:::o;20946:132::-;21004:7;21031:39;21035:1;21038;21031:39;;;;;;;;;;;;;;;;;21694:7;21729:12;21722:5;21714:28;;;;-1:-1:-1;;;21714:28:0;;;;;;;;:::i;:::-;-1:-1:-1;21753:9:0;21765:5;21769:1;21765;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1632:456::-;1709:6;1717;1725;1778:2;1766:9;1757:7;1753:23;1749:32;1746:52;;;1794:1;1791;1784:12;1746:52;1833:9;1820:23;1852:31;1877:5;1852:31;:::i;:::-;1902:5;-1:-1:-1;1959:2:1;1944:18;;1931:32;1972:33;1931:32;1972:33;:::i;:::-;1632:456;;2024:7;;-1:-1:-1;;;2078:2:1;2063:18;;;;2050:32;;1632:456::o;2093:247::-;2152:6;2205:2;2193:9;2184:7;2180:23;2176:32;2173:52;;;2221:1;2218;2211:12;2173:52;2260:9;2247:23;2279:31;2304:5;2279:31;:::i;2742:180::-;2801:6;2854:2;2842:9;2833:7;2829:23;2825:32;2822:52;;;2870:1;2867;2860:12;2822:52;-1:-1:-1;2893:23:1;;2742:180;-1:-1:-1;2742:180:1:o;3160:118::-;3246:5;3239:13;3232:21;3225:5;3222:32;3212:60;;3268:1;3265;3258:12;3283:382;3348:6;3356;3409:2;3397:9;3388:7;3384:23;3380:32;3377:52;;;3425:1;3422;3415:12;3377:52;3464:9;3451:23;3483:31;3508:5;3483:31;:::i;:::-;3533:5;-1:-1:-1;3590:2:1;3575:18;;3562:32;3603:30;3562:32;3603:30;:::i;:::-;3652:7;3642:17;;;3283:382;;;;;:::o;3670:388::-;3738:6;3746;3799:2;3787:9;3778:7;3774:23;3770:32;3767:52;;;3815:1;3812;3805:12;3767:52;3854:9;3841:23;3873:31;3898:5;3873:31;:::i;:::-;3923:5;-1:-1:-1;3980:2:1;3965:18;;3952:32;3993:33;3952:32;3993:33;:::i;4063:127::-;4124:10;4119:3;4115:20;4112:1;4105:31;4155:4;4152:1;4145:15;4179:4;4176:1;4169:15;4195:168;4268:9;;;4299;;4316:15;;;4310:22;;4296:37;4286:71;;4337:18;;:::i;4368:217::-;4408:1;4434;4424:132;;4478:10;4473:3;4469:20;4466:1;4459:31;4513:4;4510:1;4503:15;4541:4;4538:1;4531:15;4424:132;-1:-1:-1;4570:9:1;;4368:217::o;4992:401::-;5194:2;5176:21;;;5233:2;5213:18;;;5206:30;5272:34;5267:2;5252:18;;5245:62;-1:-1:-1;;;5338:2:1;5323:18;;5316:35;5383:3;5368:19;;4992:401::o;5398:399::-;5600:2;5582:21;;;5639:2;5619:18;;;5612:30;5678:34;5673:2;5658:18;;5651:62;-1:-1:-1;;;5744:2:1;5729:18;;5722:33;5787:3;5772:19;;5398:399::o;5802:380::-;5881:1;5877:12;;;;5924;;;5945:61;;5999:4;5991:6;5987:17;5977:27;;5945:61;6052:2;6044:6;6041:14;6021:18;6018:38;6015:161;;6098:10;6093:3;6089:20;6086:1;6079:31;6133:4;6130:1;6123:15;6161:4;6158:1;6151:15;6015:161;;5802:380;;;:::o;6187:356::-;6389:2;6371:21;;;6408:18;;;6401:30;6467:34;6462:2;6447:18;;6440:62;6534:2;6519:18;;6187:356::o;6827:245::-;6894:6;6947:2;6935:9;6926:7;6922:23;6918:32;6915:52;;;6963:1;6960;6953:12;6915:52;6995:9;6989:16;7014:28;7036:5;7014:28;:::i;7484:125::-;7549:9;;;7570:10;;;7567:36;;;7583:18;;:::i;8778:128::-;8845:9;;;8866:11;;;8863:37;;;8880:18;;:::i;8911:251::-;8981:6;9034:2;9022:9;9013:7;9009:23;9005:32;9002:52;;;9050:1;9047;9040:12;9002:52;9082:9;9076:16;9101:31;9126:5;9101:31;:::i;9167:188::-;9246:13;;-1:-1:-1;;;;;9288:42:1;;9278:53;;9268:81;;9345:1;9342;9335:12;9268:81;9167:188;;;:::o;9360:450::-;9447:6;9455;9463;9516:2;9504:9;9495:7;9491:23;9487:32;9484:52;;;9532:1;9529;9522:12;9484:52;9555:40;9585:9;9555:40;:::i;:::-;9545:50;;9614:49;9659:2;9648:9;9644:18;9614:49;:::i;:::-;9604:59;;9706:2;9695:9;9691:18;9685:25;9750:10;9743:5;9739:22;9732:5;9729:33;9719:61;;9776:1;9773;9766:12;9719:61;9799:5;9789:15;;;9360:450;;;;;:::o;9815:184::-;9885:6;9938:2;9926:9;9917:7;9913:23;9909:32;9906:52;;;9954:1;9951;9944:12;9906:52;-1:-1:-1;9977:16:1;;9815:184;-1:-1:-1;9815:184:1:o

Swarm Source

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