ETH Price: $3,433.45 (+4.50%)

Token

AISignal (aisig)
 

Overview

Max Total Supply

978,844,626.386 aisig

Holders

1,037

Market

Price

$0.00 @ 0.000000 ETH (+0.35%)

Onchain Market Cap

$441,537.23

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,000 aisig

Value
$2.26 ( ~0.000658230610085714 Eth) [0.0005%]
0xaF184b4cBc73A9Ca2F51c4a4d80eD67a2578E9F4
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:
AISignalToken

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 20000 runs

Other Settings:
paris EvmVersion, MIT license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: MIT

interface IUniswapV2Router02 {
    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 swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) 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 {
    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);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, msg.sender, currentAllowance - amount);
        }

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(msg.sender, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}

    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

pragma solidity ^0.8.17;

/// @notice Simple single owner authorization mixin.
/// @author Solady (https://github.com/vectorized/solady/blob/main/src/auth/Ownable.sol)
///
/// @dev Note:
/// This implementation does NOT auto-initialize the owner to `msg.sender`.
/// You MUST call the `_initializeOwner` in the constructor / initializer.
///
/// While the ownable portion follows
/// [EIP-173](https://eips.ethereum.org/EIPS/eip-173) for compatibility,
/// the nomenclature for the 2-step ownership handover may be unique to this codebase.
abstract contract Ownable {
    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                       CUSTOM ERRORS                        */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev The caller is not authorized to call the function.
    error Unauthorized();

    /// @dev The `newOwner` cannot be the zero address.
    error NewOwnerIsZeroAddress();

    /// @dev The `pendingOwner` does not have a valid handover request.
    error NoHandoverRequest();

    /// @dev Cannot double-initialize.
    error AlreadyInitialized();

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                           EVENTS                           */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev The ownership is transferred from `oldOwner` to `newOwner`.
    /// This event is intentionally kept the same as OpenZeppelin's Ownable to be
    /// compatible with indexers and [EIP-173](https://eips.ethereum.org/EIPS/eip-173),
    /// despite it not being as lightweight as a single argument event.
    event OwnershipTransferred(address indexed oldOwner, address indexed newOwner);

    /// @dev An ownership handover to `pendingOwner` has been requested.
    event OwnershipHandoverRequested(address indexed pendingOwner);

    /// @dev The ownership handover to `pendingOwner` has been canceled.
    event OwnershipHandoverCanceled(address indexed pendingOwner);

    /// @dev `keccak256(bytes("OwnershipTransferred(address,address)"))`.
    uint256 private constant _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE =
        0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0;

    /// @dev `keccak256(bytes("OwnershipHandoverRequested(address)"))`.
    uint256 private constant _OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE =
        0xdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d;

    /// @dev `keccak256(bytes("OwnershipHandoverCanceled(address)"))`.
    uint256 private constant _OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE =
        0xfa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92;

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                          STORAGE                           */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev The owner slot is given by:
    /// `bytes32(~uint256(uint32(bytes4(keccak256("_OWNER_SLOT_NOT")))))`.
    /// It is intentionally chosen to be a high value
    /// to avoid collision with lower slots.
    /// The choice of manual storage layout is to enable compatibility
    /// with both regular and upgradeable contracts.
    bytes32 internal constant _OWNER_SLOT =
        0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927;

    /// The ownership handover slot of `newOwner` is given by:
    /// ```
    ///     mstore(0x00, or(shl(96, user), _HANDOVER_SLOT_SEED))
    ///     let handoverSlot := keccak256(0x00, 0x20)
    /// ```
    /// It stores the expiry timestamp of the two-step ownership handover.
    uint256 private constant _HANDOVER_SLOT_SEED = 0x389a75e1;

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                     INTERNAL FUNCTIONS                     */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Override to return true to make `_initializeOwner` prevent double-initialization.
    function _guardInitializeOwner() internal pure virtual returns (bool guard) {}

    /// @dev Initializes the owner directly without authorization guard.
    /// This function must be called upon initialization,
    /// regardless of whether the contract is upgradeable or not.
    /// This is to enable generalization to both regular and upgradeable contracts,
    /// and to save gas in case the initial owner is not the caller.
    /// For performance reasons, this function will not check if there
    /// is an existing owner.
    function _initializeOwner(address newOwner) internal virtual {
        if (_guardInitializeOwner()) {
            /// @solidity memory-safe-assembly
            assembly {
                let ownerSlot := _OWNER_SLOT
                if sload(ownerSlot) {
                    mstore(0x00, 0x0dc149f0) // `AlreadyInitialized()`.
                    revert(0x1c, 0x04)
                }
                // Clean the upper 96 bits.
                newOwner := shr(96, shl(96, newOwner))
                // Store the new value.
                sstore(ownerSlot, or(newOwner, shl(255, iszero(newOwner))))
                // Emit the {OwnershipTransferred} event.
                log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, 0, newOwner)
            }
        } else {
            /// @solidity memory-safe-assembly
            assembly {
                // Clean the upper 96 bits.
                newOwner := shr(96, shl(96, newOwner))
                // Store the new value.
                sstore(_OWNER_SLOT, newOwner)
                // Emit the {OwnershipTransferred} event.
                log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, 0, newOwner)
            }
        }
    }

    /// @dev Sets the owner directly without authorization guard.
    function _setOwner(address newOwner) internal virtual {
        if (_guardInitializeOwner()) {
            /// @solidity memory-safe-assembly
            assembly {
                let ownerSlot := _OWNER_SLOT
                // Clean the upper 96 bits.
                newOwner := shr(96, shl(96, newOwner))
                // Emit the {OwnershipTransferred} event.
                log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, sload(ownerSlot), newOwner)
                // Store the new value.
                sstore(ownerSlot, or(newOwner, shl(255, iszero(newOwner))))
            }
        } else {
            /// @solidity memory-safe-assembly
            assembly {
                let ownerSlot := _OWNER_SLOT
                // Clean the upper 96 bits.
                newOwner := shr(96, shl(96, newOwner))
                // Emit the {OwnershipTransferred} event.
                log3(0, 0, _OWNERSHIP_TRANSFERRED_EVENT_SIGNATURE, sload(ownerSlot), newOwner)
                // Store the new value.
                sstore(ownerSlot, newOwner)
            }
        }
    }

    /// @dev Throws if the sender is not the owner.
    function _checkOwner() internal view virtual {
        /// @solidity memory-safe-assembly
        assembly {
            // If the caller is not the stored owner, revert.
            if iszero(eq(caller(), sload(_OWNER_SLOT))) {
                mstore(0x00, 0x82b42900) // `Unauthorized()`.
                revert(0x1c, 0x04)
            }
        }
    }

    /// @dev Returns how long a two-step ownership handover is valid for in seconds.
    /// Override to return a different value if needed.
    /// Made internal to conserve bytecode. Wrap it in a public function if needed.
    function _ownershipHandoverValidFor() internal view virtual returns (uint64) {
        return 48 * 3600;
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                  PUBLIC UPDATE FUNCTIONS                   */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Allows the owner to transfer the ownership to `newOwner`.
    function transferOwnership(address newOwner) public payable virtual onlyOwner {
        /// @solidity memory-safe-assembly
        assembly {
            if iszero(shl(96, newOwner)) {
                mstore(0x00, 0x7448fbae) // `NewOwnerIsZeroAddress()`.
                revert(0x1c, 0x04)
            }
        }
        _setOwner(newOwner);
    }

    /// @dev Allows the owner to renounce their ownership.
    function renounceOwnership() public payable virtual onlyOwner {
        _setOwner(address(0));
    }

    /// @dev Request a two-step ownership handover to the caller.
    /// The request will automatically expire in 48 hours (172800 seconds) by default.
    function requestOwnershipHandover() public payable virtual {
        unchecked {
            uint256 expires = block.timestamp + _ownershipHandoverValidFor();
            /// @solidity memory-safe-assembly
            assembly {
                // Compute and set the handover slot to `expires`.
                mstore(0x0c, _HANDOVER_SLOT_SEED)
                mstore(0x00, caller())
                sstore(keccak256(0x0c, 0x20), expires)
                // Emit the {OwnershipHandoverRequested} event.
                log2(0, 0, _OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE, caller())
            }
        }
    }

    /// @dev Cancels the two-step ownership handover to the caller, if any.
    function cancelOwnershipHandover() public payable virtual {
        /// @solidity memory-safe-assembly
        assembly {
            // Compute and set the handover slot to 0.
            mstore(0x0c, _HANDOVER_SLOT_SEED)
            mstore(0x00, caller())
            sstore(keccak256(0x0c, 0x20), 0)
            // Emit the {OwnershipHandoverCanceled} event.
            log2(0, 0, _OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE, caller())
        }
    }

    /// @dev Allows the owner to complete the two-step ownership handover to `pendingOwner`.
    /// Reverts if there is no existing ownership handover requested by `pendingOwner`.
    function completeOwnershipHandover(address pendingOwner) public payable virtual onlyOwner {
        /// @solidity memory-safe-assembly
        assembly {
            // Compute and set the handover slot to 0.
            mstore(0x0c, _HANDOVER_SLOT_SEED)
            mstore(0x00, pendingOwner)
            let handoverSlot := keccak256(0x0c, 0x20)
            // If the handover does not exist, or has expired.
            if gt(timestamp(), sload(handoverSlot)) {
                mstore(0x00, 0x6f5e8818) // `NoHandoverRequest()`.
                revert(0x1c, 0x04)
            }
            // Set the handover slot to 0.
            sstore(handoverSlot, 0)
        }
        _setOwner(pendingOwner);
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                   PUBLIC READ FUNCTIONS                    */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Returns the owner of the contract.
    function owner() public view virtual returns (address result) {
        /// @solidity memory-safe-assembly
        assembly {
            result := sload(_OWNER_SLOT)
        }
    }

    /// @dev Returns the expiry timestamp for the two-step ownership handover to `pendingOwner`.
    function ownershipHandoverExpiresAt(address pendingOwner)
        public
        view
        virtual
        returns (uint256 result)
    {
        /// @solidity memory-safe-assembly
        assembly {
            // Compute the handover slot.
            mstore(0x0c, _HANDOVER_SLOT_SEED)
            mstore(0x00, pendingOwner)
            // Load the handover slot.
            result := sload(keccak256(0x0c, 0x20))
        }
    }

    /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/
    /*                         MODIFIERS                          */
    /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/

    /// @dev Marks a function as only callable by the owner.
    modifier onlyOwner() virtual {
        _checkOwner();
        _;
    }
}

contract AISignalToken is ERC20, Ownable {

    event TradingIsLive();
    event TotalSupplyReached();
    event StakingInitiated(address);
    event NewAutoSwapThreshold(uint256);
    event TokenBurned(address,uint256);

    address private immutable marketingWallet;
    address public immutable presale;
    address public staking;
    bool public live;
    bool public set;
    uint64 private start;
    uint64 private timeend;
    uint256 private max;

    bool private swapping;
    uint256 private swapTokensAtAmount;
    
    address private immutable deadAddress = address(0xdead);
    uint256 private immutable maxSwap;
    
    mapping (address => bool) private isExcluded;
    mapping (address => bool) private isPair;
    mapping (uint256 => uint256) private blockSwaps;

    IUniswapV2Router02 private immutable uniswapV2Router;

    constructor (
        address _presale,
        uint256 _totalSup,
        uint8 _lpAllo,
        address _team
    ) ERC20("AISignal","aisig") { 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        address uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
        presale = _presale;
        max = _totalSup;
        maxSwap = _totalSup * 25 / 1000; //2.5%
        swapTokensAtAmount = max / 20000; //0.005%
        marketingWallet = _team;
        exclude(uniswapV2Pair, true);
        isPair[uniswapV2Pair] = true;
        exclude(address(this),true);
        _mint(_presale, _totalSup * _lpAllo / 100);
        _initializeOwner(msg.sender);
    }

    error token__notLive();
    error token__maxHolding();
    error token__invalidPool();
    error token__swapping();

    /// @dev initiates trading and specifies the main liquidity pool.
    function beginTrading() external onlyOwner {
        require(!live, "Already begun");
        start = uint64(block.timestamp);
        timeend = start + uint64(15 minutes);
        live = true;
        emit TradingIsLive();
    }

    function beginStaking(address _staking) external {
        require(msg.sender == marketingWallet, "Unauthorized");
        staking = _staking;
        exclude(staking, true);
        emit StakingInitiated(_staking);
    }

    /// @dev marketingWallet changes the threshold at which the contract autoswaps
    function editSwapThreshold(uint256 amount) external {
        require(msg.sender == marketingWallet, "Unauthorized");
        require(amount > max / 20000000 && amount < maxSwap); //%.000005 - %2.5
        swapTokensAtAmount = amount;
        emit NewAutoSwapThreshold(amount);
    }

    function manualswap(uint256 amount) external {
        require(msg.sender == marketingWallet, "Unauthorized");
        require(amount <= balanceOf(address(this)) && amount > 0, "Wrong amount");
        if(!swapping){
            swapping = true;
            swapTokensForEth(amount);
            swapping = false;
        }else{
            revert token__swapping();
        }
    }

    /// @dev used by presale contract to mint tokens to claimants in order to avoid presale contract holding more than 2.5% supply
    function presaleDon(address recip, uint256 value ) external returns (bool){
        require(msg.sender == presale, "unauthorized");
        require(set == false, "no more minting");
        require(totalSupply() + value <= max, "exceeds supply");
        _mint(recip,value);
        if(totalSupply() == max){
            complete();
        }
        return true;
    }

    function burn(uint256 value) external {
        _burn(msg.sender, value);
        emit TokenBurned(msg.sender, value);
    }

    function autoSwap(uint256 contractBalance) private {
        if (contractBalance == 0) {
            return;
        }
        if (contractBalance > maxSwap) {
            contractBalance = maxSwap;
        }
        uint256 amountToSwapForETH = contractBalance;
        swapTokensForEth(amountToSwapForETH);
    }

    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,
            marketingWallet,
            block.timestamp
        );
    }

    /// @dev excluded addresses may hold larger than 2.5% and are not taxed on swaps
    function exclude(address add, bool exc) internal {
        isExcluded[add] = exc;
    }

    function complete() internal {
        set = true;
        emit TotalSupplyReached();
    }

    function _calculateTax(uint256 amount, bool isSell) internal view returns (uint256) {
        uint64 end = timeend;
        uint64 time = uint64(block.timestamp);
        uint256 fee = 0;
        if(time < end){
            uint256 bracket = (((end - time) * 100) / (end - start)); // 100 to 0 to determine tax bracket
            if(bracket >= 66){
                fee = amount * 30 / 100;
            } else if (bracket < 66 && bracket > 33){
                if(isSell){
                    fee = amount * 20 / 100;
                }else {
                    fee = amount * 10 / 100;
                }
            } else if (bracket <= 33) {
                if(isSell){
                    fee = amount * 10 / 100;
                }else {
                    fee = amount * 5 / 100;
                }
            }
            return fee;
        } else {
            fee = amount * 5 / 100;
            return fee;
        }
    }

    

    /*
    // @dev overrides transfer function to tax the liquidity pool swaps linearly from 30% to 5% over the cool down period to prevent bot abuse
    // also enforces 2.5% holding cap per wallet
    */
    function _transfer(address from,address to,uint256 amount) internal override {

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        
        if(live){
            bool excludedTo = isExcluded[to];
            bool isSell = isPair[to];

            //maximum 2.5% of supply per wallet enforced
            if(!excludedTo && balanceOf(to) + amount  > totalSupply() * 25 / 1000){
                revert token__maxHolding();
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= swapTokensAtAmount;
            if (
                canSwap && !swapping && isSell //buyers dont pay for autoswap gg
            ) {
                if (blockSwaps[block.number] < 3) {
                    swapping = true;
                    autoSwap(contractTokenBalance);
                    swapping = false;
                    blockSwaps[block.number] = blockSwaps[block.number] + 1;
                }
            }

            if((isSell && !isExcluded[from]) || (isPair[from] && !excludedTo)){
                uint256 fee = _calculateTax(amount, isSell);
                super._transfer(from, address(this), fee);
                amount -= fee;
                super._transfer(from, to, amount);
            }else{
                super._transfer(from, to, amount);
            }
        }else{
            if(from == address(0) || from == presale || to == presale || to == deadAddress ){
                super._transfer(from, to, amount);
            }else{
                revert token__notLive();
            }
        }
        return;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_presale","type":"address"},{"internalType":"uint256","name":"_totalSup","type":"uint256"},{"internalType":"uint8","name":"_lpAllo","type":"uint8"},{"internalType":"address","name":"_team","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyInitialized","type":"error"},{"inputs":[],"name":"NewOwnerIsZeroAddress","type":"error"},{"inputs":[],"name":"NoHandoverRequest","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"token__invalidPool","type":"error"},{"inputs":[],"name":"token__maxHolding","type":"error"},{"inputs":[],"name":"token__notLive","type":"error"},{"inputs":[],"name":"token__swapping","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"NewAutoSwapThreshold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipHandoverRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"StakingInitiated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"TokenBurned","type":"event"},{"anonymous":false,"inputs":[],"name":"TotalSupplyReached","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingIsLive","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":"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":"_staking","type":"address"}],"name":"beginStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"beginTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cancelOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"completeOwnershipHandover","outputs":[],"stateMutability":"payable","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":"uint256","name":"amount","type":"uint256"}],"name":"editSwapThreshold","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":[],"name":"live","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualswap","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":"result","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pendingOwner","type":"address"}],"name":"ownershipHandoverExpiresAt","outputs":[{"internalType":"uint256","name":"result","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presale","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recip","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"presaleDon","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"requestOwnershipHandover","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"set","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"staking","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"payable","type":"function"}]

61012060405261dead60c0523480156200001857600080fd5b5060405162002ca138038062002ca18339810160408190526200003b91620003c9565b60405180604001604052806008815260200167105254da59db985b60c21b81525060405180604001604052806005815260200164616973696760d81b81525081600390816200008b9190620004c8565b5060046200009a8282620004c8565b5050737a250d5630b4cf539739df2c5dacb4c659f2488d6101008190526040805163c45a015560e01b81529051919250600091839163c45a01559160048083019260209291908290030181865afa158015620000fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000120919062000594565b6040516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc260248201526001600160a01b03919091169063c9c65396906044016020604051808303816000875af115801562000183573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a9919062000594565b6001600160a01b03871660a052600786905590506103e8620001cd866019620005cf565b620001d99190620005ef565b60e052600754620001ee90614e2090620005ef565b6009556001600160a01b0383811660805281166000908152600a602081815260408084208054600160ff199182168117909255600b8452828620805482168317905530865293909252909220805490911690911790556200026c8660646200025a60ff881689620005cf565b620002669190620005ef565b62000283565b62000277336200036b565b50505050505062000628565b6001600160a01b038216620002de5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620002f2919062000612565b90915550506001600160a01b038216600090815260208190526040812080548392906200032190849062000612565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b505050565b80516001600160a01b0381168114620003c457600080fd5b919050565b60008060008060808587031215620003e057600080fd5b620003eb85620003ac565b935060208501519250604085015160ff811681146200040957600080fd5b91506200041960608601620003ac565b905092959194509250565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200044f57607f821691505b6020821081036200047057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003a757600081815260208120601f850160051c810160208610156200049f5750805b601f850160051c820191505b81811015620004c057828155600101620004ab565b505050505050565b81516001600160401b03811115620004e457620004e462000424565b620004fc81620004f584546200043a565b8462000476565b602080601f8311600181146200053457600084156200051b5750858301515b600019600386901b1c1916600185901b178555620004c0565b600085815260208120601f198616915b82811015620005655788860151825594840194600190910190840162000544565b5085821015620005845787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620005a757600080fd5b620005b282620003ac565b9392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620005e957620005e9620005b9565b92915050565b6000826200060d57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620005e957620005e9620005b9565b60805160a05160c05160e051610100516125ee620006b360003960008181611a2001528181611b000152611b6201526000818161068501528181612043015261206c0152600061169601526000818161056f01528181610dc6015281816115ea01526116400152600081816105dc015281816108e301528181610b1b0152611b9601526125ee6000f3fe6080604052600436106101b75760003560e01c8063881dce60116100ec578063b8e010de1161008a578063f04e283e11610064578063f04e283e14610537578063f2fde38b1461054a578063fdea8e0b1461055d578063fee81cf41461059157600080fd5b8063b8e010de1461049c578063c408c245146104cf578063dd62ed3e146104e457600080fd5b806395d89b41116100c657806395d89b4114610427578063a457c2d71461043c578063a7862c561461045c578063a9059cbb1461047c57600080fd5b8063881dce60146103a15780638da5cb5b146103c1578063957aa58c146103f557600080fd5b8063313ce567116101595780634cf088d9116101335780634cf088d9146102fc57806354d1f13d1461034e57806370a0823114610356578063715018a61461039957600080fd5b8063313ce567146102a057806339509351146102bc57806342966c68146102dc57600080fd5b806318160ddd1161019557806318160ddd1461023957806323b872dd14610258578063256929621461027857806329e6b5861461028057600080fd5b806304c2754d146101bc57806306fdde03146101de578063095ea7b314610209575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046121d2565b6105c4565b005b3480156101ea57600080fd5b506101f36106ec565b60405161020091906121eb565b60405180910390f35b34801561021557600080fd5b50610229610224366004612279565b61077e565b6040519015158152602001610200565b34801561024557600080fd5b506002545b604051908152602001610200565b34801561026457600080fd5b506102296102733660046122a5565b610795565b6101dc61087b565b34801561028c57600080fd5b506101dc61029b3660046122e6565b6108cb565b3480156102ac57600080fd5b5060405160128152602001610200565b3480156102c857600080fd5b506102296102d7366004612279565b610a2a565b3480156102e857600080fd5b506101dc6102f73660046121d2565b610a73565b34801561030857600080fd5b506005546103299073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610200565b6101dc610ab3565b34801561036257600080fd5b5061024a6103713660046122e6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101dc610aef565b3480156103ad57600080fd5b506101dc6103bc3660046121d2565b610b03565b3480156103cd57600080fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610329565b34801561040157600080fd5b506005546102299074010000000000000000000000000000000000000000900460ff1681565b34801561043357600080fd5b506101f3610cc5565b34801561044857600080fd5b50610229610457366004612279565b610cd4565b34801561046857600080fd5b50610229610477366004612279565b610dac565b34801561048857600080fd5b50610229610497366004612279565b610f6f565b3480156104a857600080fd5b50600554610229907501000000000000000000000000000000000000000000900460ff1681565b3480156104db57600080fd5b506101dc610f7c565b3480156104f057600080fd5b5061024a6104ff36600461230a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101dc6105453660046122e6565b611114565b6101dc6105583660046122e6565b611151565b34801561056957600080fd5b506103297f000000000000000000000000000000000000000000000000000000000000000081565b34801561059d57600080fd5b5061024a6105ac3660046122e6565b63389a75e1600c908152600091909152602090205490565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a6564000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6301312d0060075461067a91906123a1565b811180156106a757507f000000000000000000000000000000000000000000000000000000000000000081105b6106b057600080fd5b60098190556040518181527f9b974812a379eb5931633dc2560f78ae5fadaabeee527fcc2a22e8c9fbe40b74906020015b60405180910390a150565b6060600380546106fb906123b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610727906123b5565b80156107745780601f1061074957610100808354040283529160200191610774565b820191906000526020600020905b81548152906001019060200180831161075757829003601f168201915b5050505050905090565b600061078b338484611178565b5060015b92915050565b60006107a284848461132b565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482811015610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000606482015260840161065f565b6108708533858403611178565b506001949350505050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461096a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015260640161065f565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556000908152600a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560405173ffffffffffffffffffffffffffffffffffffffff821681527f9df2188765ac379366bdf3bf48f56bb4f96e2b5b7148371f88cf7149b7742cdd906020016106e1565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161078b918590610a6e908690612408565b611178565b610a7d3382611726565b60408051338152602081018390527f1af5163f80e79b5e554f61e1d052084d3a3fe1166e42a265798c4e2ddce8ffa291016106e1565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b610af7611913565b610b016000611949565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610ba2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015260640161065f565b306000908152602081905260409020548111158015610bc15750600081115b610c27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57726f6e6720616d6f756e740000000000000000000000000000000000000000604482015260640161065f565b60085460ff16610c9057600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610c65816119af565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550565b6040517fc958536a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6060600480546106fb906123b5565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015610d95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161065f565b610da23385858403611178565b5060019392505050565b60003373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610e4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015260640161065f565b6005547501000000000000000000000000000000000000000000900460ff1615610ed3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f206d6f7265206d696e74696e670000000000000000000000000000000000604482015260640161065f565b60075482610ee060025490565b610eea9190612408565b1115610f52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6578636565647320737570706c79000000000000000000000000000000000000604482015260640161065f565b610f5c8383611bf6565b6007546002540361078b5761078b611d17565b600061078b33848461132b565b610f84611913565b60055474010000000000000000000000000000000000000000900460ff1615611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f416c726561647920626567756e00000000000000000000000000000000000000604482015260640161065f565b600580547fffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000004267ffffffffffffffff9081168202929092179283905561106f92610384929190041661241b565b6006805467ffffffffffffffff929092167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909216919091179055600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040517f19eb523ff0a66e6c369d2a0c1e54c8b7d856b16ff8029f75280cf9f65bfc02cd90600090a1565b61111c611913565b63389a75e1600c52806000526020600c20805442111561114457636f5e88186000526004601cfd5b60009055610cc281611949565b611159611913565b8060601b61116f57637448fbae6000526004601cfd5b610cc281611949565b73ffffffffffffffffffffffffffffffffffffffff831661121a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff82166112bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b806000036113445761133f83836000611d82565b505050565b60055474010000000000000000000000000000000000000000900460ff16156115ca5773ffffffffffffffffffffffffffffffffffffffff82166000908152600a6020908152604080832054600b9092529091205460ff91821691168115801561140357506103e86113b560025490565b6113c0906019612443565b6113ca91906123a1565b836113f78673ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6114019190612408565b115b1561143a576040517f424d6cc700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3060009081526020819052604090205460095481108015908190611461575060085460ff16155b801561146a5750825b1561150f57436000908152600c60205260409020546003111561150f57600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556114bb82612036565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055436000908152600c60205260409020546114fe906001612408565b436000908152600c60205260409020555b828015611542575073ffffffffffffffffffffffffffffffffffffffff87166000908152600a602052604090205460ff16155b8061157b575073ffffffffffffffffffffffffffffffffffffffff87166000908152600b602052604090205460ff16801561157b575083155b156115b657600061158c8685612096565b9050611599883083611d82565b6115a3818761245a565b95506115b0888888611d82565b506115c1565b6115c1878787611d82565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316158061163857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061168e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806116e457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156116f45761133f838383611d82565b6040517f16d684f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166117c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020548181101561187f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906118bb90849061245a565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b01576382b429006000526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106119e4576119e461246d565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aad919061249c565b81600181518110611ac057611ac061246d565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b25307f000000000000000000000000000000000000000000000000000000000000000084611178565b6040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611bc090859060009086907f00000000000000000000000000000000000000000000000000000000000000009042906004016124b9565b600060405180830381600087803b158015611bda57600080fd5b505af1158015611bee573d6000803e3d6000fd5b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611c73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161065f565b8060026000828254611c859190612408565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290611cbf908490612408565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050565b600580547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040517f7be9badbf9fba52cc4d59989c81f80d9dd24cef9b8e9ef16c469274ae3809a8790600090a1565b73ffffffffffffffffffffffffffffffffffffffff8316611e25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff8216611ec8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015611f7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290611fc2908490612408565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161202891815260200190565b60405180910390a350505050565b806000036120415750565b7f000000000000000000000000000000000000000000000000000000000000000081111561208c57507f00000000000000000000000000000000000000000000000000000000000000005b80611d13816119af565b60065460009067ffffffffffffffff908116904290839082168311156121b0576005546000906120ea90760100000000000000000000000000000000000000000000900467ffffffffffffffff1685612544565b6120f48486612544565b6120ff906064612565565b6121099190612591565b67ffffffffffffffff1690506042811061213b57606461212a88601e612443565b61213491906123a1565b91506121a5565b60428110801561214b5750602181115b1561217057851561216357606461212a886014612443565b606461212a88600a612443565b602181116121a557851561218b57606461212a88600a612443565b6064612198886005612443565b6121a291906123a1565b91505b50925061078f915050565b60646121bd876005612443565b6121c791906123a1565b935061078f92505050565b6000602082840312156121e457600080fd5b5035919050565b600060208083528351808285015260005b81811015612218578581018301518582016040015282016121fc565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610cc257600080fd5b6000806040838503121561228c57600080fd5b823561229781612257565b946020939093013593505050565b6000806000606084860312156122ba57600080fd5b83356122c581612257565b925060208401356122d581612257565b929592945050506040919091013590565b6000602082840312156122f857600080fd5b813561230381612257565b9392505050565b6000806040838503121561231d57600080fd5b823561232881612257565b9150602083013561233881612257565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000826123b0576123b0612343565b500490565b600181811c908216806123c957607f821691505b602082108103612402577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561078f5761078f612372565b67ffffffffffffffff81811683821601908082111561243c5761243c612372565b5092915050565b808202811582820484141761078f5761078f612372565b8181038181111561078f5761078f612372565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156124ae57600080fd5b815161230381612257565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561251657845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016124e4565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b67ffffffffffffffff82811682821603908082111561243c5761243c612372565b67ffffffffffffffff81811683821602808216919082811461258957612589612372565b505092915050565b600067ffffffffffffffff808416806125ac576125ac612343565b9216919091049291505056fea264697066735822122083762292e5bbbb22085b4757a4cafbdf4be034af262aa316e72d42a948cda45264736f6c63430008140033000000000000000000000000c8b612fa3e2670c4355d510fa572dec1285f86400000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000000000000000000000000000000000000000000034000000000000000000000000321847122142b1ec20df45821464157a0d1cafe4

Deployed Bytecode

0x6080604052600436106101b75760003560e01c8063881dce60116100ec578063b8e010de1161008a578063f04e283e11610064578063f04e283e14610537578063f2fde38b1461054a578063fdea8e0b1461055d578063fee81cf41461059157600080fd5b8063b8e010de1461049c578063c408c245146104cf578063dd62ed3e146104e457600080fd5b806395d89b41116100c657806395d89b4114610427578063a457c2d71461043c578063a7862c561461045c578063a9059cbb1461047c57600080fd5b8063881dce60146103a15780638da5cb5b146103c1578063957aa58c146103f557600080fd5b8063313ce567116101595780634cf088d9116101335780634cf088d9146102fc57806354d1f13d1461034e57806370a0823114610356578063715018a61461039957600080fd5b8063313ce567146102a057806339509351146102bc57806342966c68146102dc57600080fd5b806318160ddd1161019557806318160ddd1461023957806323b872dd14610258578063256929621461027857806329e6b5861461028057600080fd5b806304c2754d146101bc57806306fdde03146101de578063095ea7b314610209575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046121d2565b6105c4565b005b3480156101ea57600080fd5b506101f36106ec565b60405161020091906121eb565b60405180910390f35b34801561021557600080fd5b50610229610224366004612279565b61077e565b6040519015158152602001610200565b34801561024557600080fd5b506002545b604051908152602001610200565b34801561026457600080fd5b506102296102733660046122a5565b610795565b6101dc61087b565b34801561028c57600080fd5b506101dc61029b3660046122e6565b6108cb565b3480156102ac57600080fd5b5060405160128152602001610200565b3480156102c857600080fd5b506102296102d7366004612279565b610a2a565b3480156102e857600080fd5b506101dc6102f73660046121d2565b610a73565b34801561030857600080fd5b506005546103299073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610200565b6101dc610ab3565b34801561036257600080fd5b5061024a6103713660046122e6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101dc610aef565b3480156103ad57600080fd5b506101dc6103bc3660046121d2565b610b03565b3480156103cd57600080fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610329565b34801561040157600080fd5b506005546102299074010000000000000000000000000000000000000000900460ff1681565b34801561043357600080fd5b506101f3610cc5565b34801561044857600080fd5b50610229610457366004612279565b610cd4565b34801561046857600080fd5b50610229610477366004612279565b610dac565b34801561048857600080fd5b50610229610497366004612279565b610f6f565b3480156104a857600080fd5b50600554610229907501000000000000000000000000000000000000000000900460ff1681565b3480156104db57600080fd5b506101dc610f7c565b3480156104f057600080fd5b5061024a6104ff36600461230a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101dc6105453660046122e6565b611114565b6101dc6105583660046122e6565b611151565b34801561056957600080fd5b506103297f000000000000000000000000c8b612fa3e2670c4355d510fa572dec1285f864081565b34801561059d57600080fd5b5061024a6105ac3660046122e6565b63389a75e1600c908152600091909152602090205490565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000321847122142b1ec20df45821464157a0d1cafe41614610668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a6564000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6301312d0060075461067a91906123a1565b811180156106a757507f00000000000000000000000000000000000000000014adf4b7320334b900000081105b6106b057600080fd5b60098190556040518181527f9b974812a379eb5931633dc2560f78ae5fadaabeee527fcc2a22e8c9fbe40b74906020015b60405180910390a150565b6060600380546106fb906123b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610727906123b5565b80156107745780601f1061074957610100808354040283529160200191610774565b820191906000526020600020905b81548152906001019060200180831161075757829003601f168201915b5050505050905090565b600061078b338484611178565b5060015b92915050565b60006107a284848461132b565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033845290915290205482811015610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000606482015260840161065f565b6108708533858403611178565b506001949350505050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000321847122142b1ec20df45821464157a0d1cafe4161461096a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015260640161065f565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556000908152600a6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905560405173ffffffffffffffffffffffffffffffffffffffff821681527f9df2188765ac379366bdf3bf48f56bb4f96e2b5b7148371f88cf7149b7742cdd906020016106e1565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161078b918590610a6e908690612408565b611178565b610a7d3382611726565b60408051338152602081018390527f1af5163f80e79b5e554f61e1d052084d3a3fe1166e42a265798c4e2ddce8ffa291016106e1565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b610af7611913565b610b016000611949565b565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000321847122142b1ec20df45821464157a0d1cafe41614610ba2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015260640161065f565b306000908152602081905260409020548111158015610bc15750600081115b610c27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f57726f6e6720616d6f756e740000000000000000000000000000000000000000604482015260640161065f565b60085460ff16610c9057600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610c65816119af565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550565b6040517fc958536a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6060600480546106fb906123b5565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015610d95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161065f565b610da23385858403611178565b5060019392505050565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c8b612fa3e2670c4355d510fa572dec1285f86401614610e4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015260640161065f565b6005547501000000000000000000000000000000000000000000900460ff1615610ed3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6e6f206d6f7265206d696e74696e670000000000000000000000000000000000604482015260640161065f565b60075482610ee060025490565b610eea9190612408565b1115610f52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6578636565647320737570706c79000000000000000000000000000000000000604482015260640161065f565b610f5c8383611bf6565b6007546002540361078b5761078b611d17565b600061078b33848461132b565b610f84611913565b60055474010000000000000000000000000000000000000000900460ff1615611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f416c726561647920626567756e00000000000000000000000000000000000000604482015260640161065f565b600580547fffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000004267ffffffffffffffff9081168202929092179283905561106f92610384929190041661241b565b6006805467ffffffffffffffff929092167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909216919091179055600580547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040517f19eb523ff0a66e6c369d2a0c1e54c8b7d856b16ff8029f75280cf9f65bfc02cd90600090a1565b61111c611913565b63389a75e1600c52806000526020600c20805442111561114457636f5e88186000526004601cfd5b60009055610cc281611949565b611159611913565b8060601b61116f57637448fbae6000526004601cfd5b610cc281611949565b73ffffffffffffffffffffffffffffffffffffffff831661121a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff82166112bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b806000036113445761133f83836000611d82565b505050565b60055474010000000000000000000000000000000000000000900460ff16156115ca5773ffffffffffffffffffffffffffffffffffffffff82166000908152600a6020908152604080832054600b9092529091205460ff91821691168115801561140357506103e86113b560025490565b6113c0906019612443565b6113ca91906123a1565b836113f78673ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6114019190612408565b115b1561143a576040517f424d6cc700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3060009081526020819052604090205460095481108015908190611461575060085460ff16155b801561146a5750825b1561150f57436000908152600c60205260409020546003111561150f57600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556114bb82612036565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055436000908152600c60205260409020546114fe906001612408565b436000908152600c60205260409020555b828015611542575073ffffffffffffffffffffffffffffffffffffffff87166000908152600a602052604090205460ff16155b8061157b575073ffffffffffffffffffffffffffffffffffffffff87166000908152600b602052604090205460ff16801561157b575083155b156115b657600061158c8685612096565b9050611599883083611d82565b6115a3818761245a565b95506115b0888888611d82565b506115c1565b6115c1878787611d82565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316158061163857507f000000000000000000000000c8b612fa3e2670c4355d510fa572dec1285f864073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061168e57507f000000000000000000000000c8b612fa3e2670c4355d510fa572dec1285f864073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806116e457507f000000000000000000000000000000000000000000000000000000000000dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156116f45761133f838383611d82565b6040517f16d684f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166117c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020548181101561187f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604081208383039055600280548492906118bb90849061245a565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610b01576382b429006000526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106119e4576119e461246d565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aad919061249c565b81600181518110611ac057611ac061246d565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b25307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611178565b6040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611bc090859060009086907f000000000000000000000000321847122142b1ec20df45821464157a0d1cafe49042906004016124b9565b600060405180830381600087803b158015611bda57600080fd5b505af1158015611bee573d6000803e3d6000fd5b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611c73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161065f565b8060026000828254611c859190612408565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290611cbf908490612408565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b5050565b600580547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040517f7be9badbf9fba52cc4d59989c81f80d9dd24cef9b8e9ef16c469274ae3809a8790600090a1565b73ffffffffffffffffffffffffffffffffffffffff8316611e25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff8216611ec8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015611f7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161065f565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290611fc2908490612408565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161202891815260200190565b60405180910390a350505050565b806000036120415750565b7f00000000000000000000000000000000000000000014adf4b7320334b900000081111561208c57507f00000000000000000000000000000000000000000014adf4b7320334b90000005b80611d13816119af565b60065460009067ffffffffffffffff908116904290839082168311156121b0576005546000906120ea90760100000000000000000000000000000000000000000000900467ffffffffffffffff1685612544565b6120f48486612544565b6120ff906064612565565b6121099190612591565b67ffffffffffffffff1690506042811061213b57606461212a88601e612443565b61213491906123a1565b91506121a5565b60428110801561214b5750602181115b1561217057851561216357606461212a886014612443565b606461212a88600a612443565b602181116121a557851561218b57606461212a88600a612443565b6064612198886005612443565b6121a291906123a1565b91505b50925061078f915050565b60646121bd876005612443565b6121c791906123a1565b935061078f92505050565b6000602082840312156121e457600080fd5b5035919050565b600060208083528351808285015260005b81811015612218578581018301518582016040015282016121fc565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610cc257600080fd5b6000806040838503121561228c57600080fd5b823561229781612257565b946020939093013593505050565b6000806000606084860312156122ba57600080fd5b83356122c581612257565b925060208401356122d581612257565b929592945050506040919091013590565b6000602082840312156122f857600080fd5b813561230381612257565b9392505050565b6000806040838503121561231d57600080fd5b823561232881612257565b9150602083013561233881612257565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000826123b0576123b0612343565b500490565b600181811c908216806123c957607f821691505b602082108103612402577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8082018082111561078f5761078f612372565b67ffffffffffffffff81811683821601908082111561243c5761243c612372565b5092915050565b808202811582820484141761078f5761078f612372565b8181038181111561078f5761078f612372565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156124ae57600080fd5b815161230381612257565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561251657845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016124e4565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b67ffffffffffffffff82811682821603908082111561243c5761243c612372565b67ffffffffffffffff81811683821602808216919082811461258957612589612372565b505092915050565b600067ffffffffffffffff808416806125ac576125ac612343565b9216919091049291505056fea264697066735822122083762292e5bbbb22085b4757a4cafbdf4be034af262aa316e72d42a948cda45264736f6c63430008140033

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

000000000000000000000000c8b612fa3e2670c4355d510fa572dec1285f86400000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000000000000000000000000000000000000000000034000000000000000000000000321847122142b1ec20df45821464157a0d1cafe4

-----Decoded View---------------
Arg [0] : _presale (address): 0xc8b612fa3E2670c4355d510Fa572dEc1285f8640
Arg [1] : _totalSup (uint256): 1000000000000000000000000000
Arg [2] : _lpAllo (uint8): 52
Arg [3] : _team (address): 0x321847122142b1eC20Df45821464157A0d1cAfE4

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000c8b612fa3e2670c4355d510fa572dec1285f8640
Arg [1] : 0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000034
Arg [3] : 000000000000000000000000321847122142b1ec20df45821464157a0d1cafe4


Deployed Bytecode Sourcemap

20460:7967:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22964:288;;;;;;;;;;-1:-1:-1;22964:288:0;;;;;:::i;:::-;;:::i;:::-;;3213:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4125:167;;;;;;;;;;-1:-1:-1;4125:167:0;;;;;:::i;:::-;;:::i;:::-;;;1455:14:1;;1448:22;1430:41;;1418:2;1403:18;4125:167:0;1290:187:1;3534:108:0;;;;;;;;;;-1:-1:-1;3622:12:0;;3534:108;;;1628:25:1;;;1616:2;1601:18;3534:108:0;1482:177:1;4300:454:0;;;;;;;;;;-1:-1:-1;4300:454:0;;;;;:::i;:::-;;:::i;16841:630::-;;;:::i;22646:226::-;;;;;;;;;;-1:-1:-1;22646:226:0;;;;;:::i;:::-;;:::i;3433:93::-;;;;;;;;;;-1:-1:-1;3433:93:0;;3516:2;2519:36:1;;2507:2;2492:18;3433:93:0;2377:184:1;4762:211:0;;;;;;;;;;-1:-1:-1;4762:211:0;;;;;:::i;:::-;;:::i;24178:127::-;;;;;;;;;;-1:-1:-1;24178:127:0;;;;;:::i;:::-;;:::i;20781:22::-;;;;;;;;;;-1:-1:-1;20781:22:0;;;;;;;;;;;2742:42:1;2730:55;;;2712:74;;2700:2;2685:18;20781:22:0;2566:226:1;17556:466:0;;;:::i;3650:127::-;;;;;;;;;;-1:-1:-1;3650:127:0;;;;;:::i;:::-;3751:18;;3724:7;3751:18;;;;;;;;;;;;3650:127;16576:102;;;:::i;23260:392::-;;;;;;;;;;-1:-1:-1;23260:392:0;;;;;:::i;:::-;;:::i;19281:187::-;;;;;;;;;;-1:-1:-1;19438:11:0;19432:18;19281:187;;20810:16;;;;;;;;;;-1:-1:-1;20810:16:0;;;;;;;;;;;3321:104;;;;;;;;;;;;;:::i;4981:409::-;;;;;;;;;;-1:-1:-1;4981:409:0;;;;;:::i;:::-;;:::i;23792:378::-;;;;;;;;;;-1:-1:-1;23792:378:0;;;;;:::i;:::-;;:::i;3785:173::-;;;;;;;;;;-1:-1:-1;3785:173:0;;;;;:::i;:::-;;:::i;20833:15::-;;;;;;;;;;-1:-1:-1;20833:15:0;;;;;;;;;;;22403:235;;;;;;;;;;;;;:::i;3966:151::-;;;;;;;;;;-1:-1:-1;3966:151:0;;;;;:::i;:::-;4082:18;;;;4055:7;4082:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3966:151;18213:724;;;;;;:::i;:::-;;:::i;16150:358::-;;;;;;:::i;:::-;;:::i;20742:32::-;;;;;;;;;;;;;;;19574:449;;;;;;;;;;-1:-1:-1;19574:449:0;;;;;:::i;:::-;19853:19;19847:4;19840:33;;;19697:14;19887:26;;;;19999:4;19983:21;;19977:28;;19574:449;22964:288;23035:10;:29;23049:15;23035:29;;23027:54;;;;;;;3392:2:1;23027:54:0;;;3374:21:1;3431:2;3411:18;;;3404:30;3470:14;3450:18;;;3443:42;3502:18;;23027:54:0;;;;;;;;;23115:8;23109:3;;:14;;;;:::i;:::-;23100:6;:23;:43;;;;;23136:7;23127:6;:16;23100:43;23092:52;;;;;;23173:18;:27;;;23216:28;;1628:25:1;;;23216:28:0;;1616:2:1;1601:18;23216:28:0;;;;;;;;22964:288;:::o;3213:100::-;3267:13;3300:5;3293:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3213:100;:::o;4125:167::-;4208:4;4225:37;4234:10;4246:7;4255:6;4225:8;:37::i;:::-;-1:-1:-1;4280:4:0;4125:167;;;;;:::o;4300:454::-;4406:4;4423:36;4433:6;4441:9;4452:6;4423:9;:36::i;:::-;4499:19;;;4472:24;4499:19;;;:11;:19;;;;;;;;4519:10;4499:31;;;;;;;;4549:26;;;;4541:79;;;;;;;4678:2:1;4541:79:0;;;4660:21:1;4717:2;4697:18;;;4690:30;4756:34;4736:18;;;4729:62;4827:10;4807:18;;;4800:38;4855:19;;4541:79:0;4476:404:1;4541:79:0;4656:55;4665:6;4673:10;4704:6;4685:16;:25;4656:8;:55::i;:::-;-1:-1:-1;4742:4:0;;4300:454;-1:-1:-1;;;;4300:454:0:o;16841:630::-;16936:15;15766:9;16954:46;;:15;:46;16936:64;;17172:19;17166:4;17159:33;17223:8;17217:4;17210:22;17280:7;17273:4;17267;17257:21;17250:38;17429:8;17382:45;17379:1;17376;17371:67;17072:381;16841:630::o;22646:226::-;22714:10;:29;22728:15;22714:29;;22706:54;;;;;;;3392:2:1;22706:54:0;;;3374:21:1;3431:2;3411:18;;;3404:30;3470:14;3450:18;;;3443:42;3502:18;;22706:54:0;3190:336:1;22706:54:0;22771:7;:18;;;;;;;;;;;;;-1:-1:-1;25389:15:0;;;:10;:15;;;;;:21;;;;-1:-1:-1;25389:21:0;;;22838:26;;2742:42:1;2730:55;;2712:74;;22838:26:0;;2700:2:1;2685:18;22838:26:0;2566:226:1;4762:211:0;4876:10;4850:4;4897:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;4850:4;;4867:76;;4888:7;;4897:45;;4932:10;;4897:45;:::i;:::-;4867:8;:76::i;24178:127::-;24227:24;24233:10;24245:5;24227;:24::i;:::-;24267:30;;;24279:10;5189:74:1;;5294:2;5279:18;;5272:34;;;24267:30:0;;5162:18:1;24267:30:0;5015:297:1;17556:466:0;17762:19;17756:4;17749:33;17809:8;17803:4;17796:22;17862:1;17855:4;17849;17839:21;17832:32;17995:8;17949:44;17946:1;17943;17938:66;17556:466::o;16576:102::-;20420:13;:11;:13::i;:::-;16649:21:::1;16667:1;16649:9;:21::i;:::-;16576:102::o:0;23260:392::-;23324:10;:29;23338:15;23324:29;;23316:54;;;;;;;3392:2:1;23316:54:0;;;3374:21:1;3431:2;3411:18;;;3404:30;3470:14;3450:18;;;3443:42;3502:18;;23316:54:0;3190:336:1;23316:54:0;23417:4;3724:7;3751:18;;;;;;;;;;;23389:6;:34;;:48;;;;;23436:1;23427:6;:10;23389:48;23381:73;;;;;;;5519:2:1;23381:73:0;;;5501:21:1;5558:2;5538:18;;;5531:30;5597:14;5577:18;;;5570:42;5629:18;;23381:73:0;5317:336:1;23381:73:0;23469:8;;;;23465:180;;23493:8;:15;;;;23504:4;23493:15;;;23523:24;23540:6;23523:16;:24::i;:::-;23562:8;:16;;;;;;23260:392;:::o;23465:180::-;23616:17;;;;;;;;;;;;;;23465:180;23260:392;:::o;3321:104::-;3377:13;3410:7;3403:14;;;;;:::i;4981:409::-;5130:10;5074:4;5118:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;5169:35;;;;5161:85;;;;;;;5860:2:1;5161:85:0;;;5842:21:1;5899:2;5879:18;;;5872:30;5938:34;5918:18;;;5911:62;6009:7;5989:18;;;5982:35;6034:19;;5161:85:0;5658:401:1;5161:85:0;5282:65;5291:10;5303:7;5331:15;5312:16;:34;5282:8;:65::i;:::-;-1:-1:-1;5378:4:0;;4981:409;-1:-1:-1;;;4981:409:0:o;23792:378::-;23861:4;23885:10;:21;23899:7;23885:21;;23877:46;;;;;;;6266:2:1;23877:46:0;;;6248:21:1;6305:2;6285:18;;;6278:30;6344:14;6324:18;;;6317:42;6376:18;;23877:46:0;6064:336:1;23877:46:0;23942:3;;;;;;;:12;23934:40;;;;;;;6607:2:1;23934:40:0;;;6589:21:1;6646:2;6626:18;;;6619:30;6685:17;6665:18;;;6658:45;6720:18;;23934:40:0;6405:339:1;23934:40:0;24018:3;;24009:5;23993:13;3622:12;;;3534:108;23993:13;:21;;;;:::i;:::-;:28;;23985:55;;;;;;;6951:2:1;23985:55:0;;;6933:21:1;6990:2;6970:18;;;6963:30;7029:16;7009:18;;;7002:44;7063:18;;23985:55:0;6749:338:1;23985:55:0;24051:18;24057:5;24063;24051;:18::i;:::-;24100:3;;3622:12;;24083:20;24080:61;;24119:10;:8;:10::i;3785:173::-;3871:4;3888:40;3898:10;3910:9;3921:6;3888:9;:40::i;22403:235::-;20420:13;:11;:13::i;:::-;22466:4:::1;::::0;;;::::1;;;22465:5;22457:31;;;::::0;::::1;::::0;;7294:2:1;22457:31:0::1;::::0;::::1;7276:21:1::0;7333:2;7313:18;;;7306:30;7372:15;7352:18;;;7345:43;7405:18;;22457:31:0::1;7092:337:1::0;22457:31:0::1;22499:5;:31:::0;;;::::1;::::0;22514:15:::1;22499:31;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;22551:26:::1;::::0;22566:10:::1;::::0;22551:5;;::::1;;:26;:::i;:::-;22541:7;:36:::0;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;22588:4:::1;:11:::0;;;::::1;::::0;::::1;::::0;;22615:15:::1;::::0;::::1;::::0;22541:7:::1;::::0;22615:15:::1;22403:235::o:0;18213:724::-;20420:13;:11;:13::i;:::-;18451:19:::1;18445:4;18438:33;18498:12;18492:4;18485:26;18561:4;18555;18545:21;18669:12;18663:19;18650:11;18647:36;18644:160;;;18716:10;18710:4;18703:24;18784:4;18778;18771:18;18644:160;18883:1;18862:23:::0;;18906::::1;18916:12:::0;18906:9:::1;:23::i;16150:358::-:0;20420:13;:11;:13::i;:::-;16325:8:::1;16321:2;16317:17;16307:153;;16368:10;16362:4;16355:24;16440:4;16434;16427:18;16307:153;16481:19;16491:8;16481:9;:19::i;7111:346::-:0;7213:19;;;7205:68;;;;;;;7821:2:1;7205:68:0;;;7803:21:1;7860:2;7840:18;;;7833:30;7899:34;7879:18;;;7872:62;7970:6;7950:18;;;7943:34;7994:19;;7205:68:0;7619:400:1;7205:68:0;7292:21;;;7284:68;;;;;;;8226:2:1;7284:68:0;;;8208:21:1;8265:2;8245:18;;;8238:30;8304:34;8284:18;;;8277:62;8375:4;8355:18;;;8348:32;8397:19;;7284:68:0;8024:398:1;7284:68:0;7365:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7417:32;;1628:25:1;;;7417:32:0;;1601:18:1;7417:32:0;;;;;;;7111:346;;;:::o;26714:1710::-;26808:6;26818:1;26808:11;26804:93;;26836:28;26852:4;26858:2;26862:1;26836:15;:28::i;:::-;26714:1710;;;:::o;26804:93::-;26920:4;;;;;;;26917:1483;;;26958:14;;;26940:15;26958:14;;;:10;:14;;;;;;;;;27001:6;:10;;;;;;;26958:14;;;;;27001:10;27089:11;;:66;;;;;27151:4;27130:13;3622:12;;;3534:108;27130:13;:18;;27146:2;27130:18;:::i;:::-;:25;;;;:::i;:::-;27120:6;27104:13;27114:2;3751:18;;3724:7;3751:18;;;;;;;;;;;;3650:127;27104:13;:22;;;;:::i;:::-;:51;27089:66;27086:131;;;27182:19;;;;;;;;;;;;;;27086:131;27282:4;27233:28;3751:18;;;;;;;;;;;27342;;27318:42;;;;;;;27397:20;;-1:-1:-1;27409:8:0;;;;27408:9;27397:20;:30;;;;;27421:6;27397:30;27375:398;;;27511:12;27500:24;;;;:10;:24;;;;;;27527:1;-1:-1:-1;27496:262:0;;;27553:8;:15;;;;27564:4;27553:15;;;27591:30;27600:20;27591:8;:30::i;:::-;27644:8;:16;;;;;;27721:12;27655:5;27710:24;;;:10;:24;;;;;;:28;;27644:16;27710:28;:::i;:::-;27694:12;27683:24;;;;:10;:24;;;;;:55;27496:262;27793:6;:27;;;;-1:-1:-1;27804:16:0;;;;;;;:10;:16;;;;;;;;27803:17;27793:27;27792:62;;;-1:-1:-1;27826:12:0;;;;;;;:6;:12;;;;;;;;:27;;;;;27843:10;27842:11;27826:27;27789:360;;;27874:11;27888:29;27902:6;27910;27888:13;:29::i;:::-;27874:43;;27936:41;27952:4;27966;27973:3;27936:15;:41::i;:::-;27996:13;28006:3;27996:13;;:::i;:::-;;;28028:33;28044:4;28050:2;28054:6;28028:15;:33::i;:::-;27855:222;27789:360;;;28100:33;28116:4;28122:2;28126:6;28100:15;:33::i;:::-;26925:1235;;;;26714:1710;;;:::o;26917:1483::-;28182:18;;;;;:37;;;28212:7;28204:15;;:4;:15;;;28182:37;:54;;;;28229:7;28223:13;;:2;:13;;;28182:54;:75;;;;28246:11;28240:17;;:2;:17;;;28182:75;28179:210;;;28278:33;28294:4;28300:2;28304:6;28278:15;:33::i;28179:210::-;28357:16;;;;;;;;;;;;;;6512:591;6596:21;;;6588:67;;;;;;;8935:2:1;6588:67:0;;;8917:21:1;8974:2;8954:18;;;8947:30;9013:34;8993:18;;;8986:62;9084:3;9064:18;;;9057:31;9105:19;;6588:67:0;8733:397:1;6588:67:0;6755:18;;;6730:22;6755:18;;;;;;;;;;;6792:24;;;;6784:71;;;;;;;9337:2:1;6784:71:0;;;9319:21:1;9376:2;9356:18;;;9349:30;9415:34;9395:18;;;9388:62;9486:4;9466:18;;;9459:32;9508:19;;6784:71:0;9135:398:1;6784:71:0;6891:18;;;:9;:18;;;;;;;;;;6912:23;;;6891:44;;6957:12;:22;;6929:6;;6891:9;6957:22;;6929:6;;6957:22;:::i;:::-;;;;-1:-1:-1;;6997:37:0;;1628:25:1;;;7023:1:0;;6997:37;;;;;;1616:2:1;1601:18;6997:37:0;;;;;;;26714:1710;;;:::o;15071:364::-;15287:11;15281:18;15271:8;15268:32;15258:159;;15334:10;15328:4;15321:24;15397:4;15391;15384:18;13897:1113;14624:11;14864:16;;14710:26;;;;;;;14824:38;14821:1;;14813:78;14950:27;13897:1113::o;24644:591::-;24794:16;;;24808:1;24794:16;;;;;;;;24770:21;;24794:16;;;;;;;;;;-1:-1:-1;24794:16:0;24770:40;;24839:4;24821;24826:1;24821:7;;;;;;;;:::i;:::-;;;;;;:23;;;;;;;;;;;24865:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24855:4;24860:1;24855:7;;;;;;;;:::i;:::-;;;;;;:32;;;;;;;;;;;24900:62;24917:4;24932:15;24950:11;24900:8;:62::i;:::-;25001:226;;;;;:66;:15;:66;;;;:226;;25082:11;;25108:1;;25152:4;;25171:15;;25201;;25001:226;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24699:536;24644:591;:::o;6105:399::-;6189:21;;;6181:65;;;;;;;11405:2:1;6181:65:0;;;11387:21:1;11444:2;11424:18;;;11417:30;11483:33;11463:18;;;11456:61;11534:18;;6181:65:0;11203:355:1;6181:65:0;6337:6;6321:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;6354:18:0;;;:9;:18;;;;;;;;;;:28;;6376:6;;6354:9;:28;;6376:6;;6354:28;:::i;:::-;;;;-1:-1:-1;;6398:37:0;;1628:25:1;;;6398:37:0;;;;6415:1;;6398:37;;1616:2:1;1601:18;6398:37:0;;;;;;;6448:48;6105:399;;:::o;25426:94::-;25466:3;:10;;;;;;;;25492:20;;;;25466:10;;25492:20;25426:94::o;5398:699::-;5504:20;;;5496:70;;;;;;;11765:2:1;5496:70:0;;;11747:21:1;11804:2;11784:18;;;11777:30;11843:34;11823:18;;;11816:62;11914:7;11894:18;;;11887:35;11939:19;;5496:70:0;11563:401:1;5496:70:0;5585:23;;;5577:71;;;;;;;12171:2:1;5577:71:0;;;12153:21:1;12210:2;12190:18;;;12183:30;12249:34;12229:18;;;12222:62;12320:5;12300:18;;;12293:33;12343:19;;5577:71:0;11969:399:1;5577:71:0;5745:17;;;5721:21;5745:17;;;;;;;;;;;5781:23;;;;5773:74;;;;;;;12575:2:1;5773:74:0;;;12557:21:1;12614:2;12594:18;;;12587:30;12653:34;12633:18;;;12626:62;12724:8;12704:18;;;12697:36;12750:19;;5773:74:0;12373:402:1;5773:74:0;5883:17;;;;:9;:17;;;;;;;;;;;5903:22;;;5883:42;;5947:20;;;;;;;;:30;;5919:6;;5883:9;5947:30;;5919:6;;5947:30;:::i;:::-;;;;;;;;6012:9;5995:35;;6004:6;5995:35;;;6023:6;5995:35;;;;1628:25:1;;1616:2;1601:18;;1482:177;5995:35:0;;;;;;;;5485:612;5398:699;;;:::o;24313:323::-;24379:15;24398:1;24379:20;24375:59;;24313:323;:::o;24375:59::-;24466:7;24448:15;:25;24444:83;;;-1:-1:-1;24508:7:0;24444:83;24566:15;24592:36;24566:15;24592:16;:36::i;25528:960::-;25636:7;;25603;;25636;;;;;25675:15;;25603:7;;25731:10;;;-1:-1:-1;25728:753:0;;;25806:5;;25757:15;;25800:11;;25806:5;;;;;25800:3;:11;:::i;:::-;25778:10;25784:4;25778:3;:10;:::i;:::-;25777:18;;25792:3;25777:18;:::i;:::-;25776:36;;;;:::i;:::-;25757:56;;;;25879:2;25868:7;:13;25865:500;;25921:3;25907:11;:6;25916:2;25907:11;:::i;:::-;:17;;;;:::i;:::-;25901:23;;25865:500;;;25960:2;25950:7;:12;:28;;;;;25976:2;25966:7;:12;25950:28;25946:419;;;26001:6;25998:147;;;26051:3;26037:11;:6;26046:2;26037:11;:::i;25998:147::-;26122:3;26108:11;:6;26117:2;26108:11;:::i;25946:419::-;26181:2;26170:7;:13;26166:199;;26207:6;26204:146;;;26257:3;26243:11;:6;26252:2;26243:11;:::i;26204:146::-;26327:3;26314:10;:6;26323:1;26314:10;:::i;:::-;:16;;;;:::i;:::-;26308:22;;26204:146;-1:-1:-1;26386:3:0;-1:-1:-1;26379:10:0;;-1:-1:-1;;26379:10:0;25728:753;26441:3;26428:10;:6;26437:1;26428:10;:::i;:::-;:16;;;;:::i;:::-;26422:22;-1:-1:-1;26459:10:0;;-1:-1:-1;;;26459:10:0;14:180:1;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;199:607::-;311:4;340:2;369;358:9;351:21;401:6;395:13;444:6;439:2;428:9;424:18;417:34;469:1;479:140;493:6;490:1;487:13;479:140;;;588:14;;;584:23;;578:30;554:17;;;573:2;550:26;543:66;508:10;;479:140;;;483:3;668:1;663:2;654:6;643:9;639:22;635:31;628:42;797:2;727:66;722:2;714:6;710:15;706:88;695:9;691:104;687:113;679:121;;;;199:607;;;;:::o;811:154::-;897:42;890:5;886:54;879:5;876:65;866:93;;955:1;952;945:12;970:315;1038:6;1046;1099:2;1087:9;1078:7;1074:23;1070:32;1067:52;;;1115:1;1112;1105:12;1067:52;1154:9;1141:23;1173:31;1198:5;1173:31;:::i;:::-;1223:5;1275:2;1260:18;;;;1247:32;;-1:-1:-1;;;970:315:1:o;1664:456::-;1741:6;1749;1757;1810:2;1798:9;1789:7;1785:23;1781:32;1778:52;;;1826:1;1823;1816:12;1778:52;1865:9;1852:23;1884:31;1909:5;1884:31;:::i;:::-;1934:5;-1:-1:-1;1991:2:1;1976:18;;1963:32;2004:33;1963:32;2004:33;:::i;:::-;1664:456;;2056:7;;-1:-1:-1;;;2110:2:1;2095:18;;;;2082:32;;1664:456::o;2125:247::-;2184:6;2237:2;2225:9;2216:7;2212:23;2208:32;2205:52;;;2253:1;2250;2243:12;2205:52;2292:9;2279:23;2311:31;2336:5;2311:31;:::i;:::-;2361:5;2125:247;-1:-1:-1;;;2125:247:1:o;2797:388::-;2865:6;2873;2926:2;2914:9;2905:7;2901:23;2897:32;2894:52;;;2942:1;2939;2932:12;2894:52;2981:9;2968:23;3000:31;3025:5;3000:31;:::i;:::-;3050:5;-1:-1:-1;3107:2:1;3092:18;;3079:32;3120:33;3079:32;3120:33;:::i;:::-;3172:7;3162:17;;;2797:388;;;;;:::o;3531:184::-;3583:77;3580:1;3573:88;3680:4;3677:1;3670:15;3704:4;3701:1;3694:15;3720:184;3772:77;3769:1;3762:88;3869:4;3866:1;3859:15;3893:4;3890:1;3883:15;3909:120;3949:1;3975;3965:35;;3980:18;;:::i;:::-;-1:-1:-1;4014:9:1;;3909:120::o;4034:437::-;4113:1;4109:12;;;;4156;;;4177:61;;4231:4;4223:6;4219:17;4209:27;;4177:61;4284:2;4276:6;4273:14;4253:18;4250:38;4247:218;;4321:77;4318:1;4311:88;4422:4;4419:1;4412:15;4450:4;4447:1;4440:15;4247:218;;4034:437;;;:::o;4885:125::-;4950:9;;;4971:10;;;4968:36;;;4984:18;;:::i;7434:180::-;7501:18;7539:10;;;7551;;;7535:27;;7574:11;;;7571:37;;;7588:18;;:::i;:::-;7571:37;7434:180;;;;:::o;8427:168::-;8500:9;;;8531;;8548:15;;;8542:22;;8528:37;8518:71;;8569:18;;:::i;8600:128::-;8667:9;;;8688:11;;;8685:37;;;8702:18;;:::i;9727:184::-;9779:77;9776:1;9769:88;9876:4;9873:1;9866:15;9900:4;9897:1;9890:15;9916:251;9986:6;10039:2;10027:9;10018:7;10014:23;10010:32;10007:52;;;10055:1;10052;10045:12;10007:52;10087:9;10081:16;10106:31;10131:5;10106:31;:::i;10172:1026::-;10434:4;10482:3;10471:9;10467:19;10513:6;10502:9;10495:25;10539:2;10577:6;10572:2;10561:9;10557:18;10550:34;10620:3;10615:2;10604:9;10600:18;10593:31;10644:6;10679;10673:13;10710:6;10702;10695:22;10748:3;10737:9;10733:19;10726:26;;10787:2;10779:6;10775:15;10761:29;;10808:1;10818:218;10832:6;10829:1;10826:13;10818:218;;;10897:13;;10912:42;10893:62;10881:75;;11011:15;;;;10976:12;;;;10854:1;10847:9;10818:218;;;-1:-1:-1;;11104:42:1;11092:55;;;;11087:2;11072:18;;11065:83;-1:-1:-1;;;11179:3:1;11164:19;11157:35;11053:3;10172:1026;-1:-1:-1;;;10172:1026:1:o;12780:183::-;12848:18;12899:10;;;12887;;;12883:27;;12922:12;;;12919:38;;;12937:18;;:::i;12968:257::-;13039:18;13089:10;;;13101;;;13085:27;13132:20;;;;13039:18;13171:24;;;13161:58;;13199:18;;:::i;:::-;13161:58;;12968:257;;;;:::o;13230:199::-;13269:1;13295:18;13340:2;13337:1;13333:10;13362:3;13352:37;;13369:18;;:::i;:::-;13407:10;;13403:20;;;;;13230:199;-1:-1:-1;;13230:199:1:o

Swarm Source

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