ETH Price: $2,122.05 (+7.21%)
Gas: 0.09 Gwei

Contract

0x508B27902C6c14972a10a4e413B9cFA449e9ceDB
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

AISignal (aisig) ($0.0001)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve245187742026-02-23 9:44:479 days ago1771839887IN
0x508B2790...449e9ceDB
0 ETH0.000100912.18011429
Approve245056292026-02-21 13:46:2311 days ago1771681583IN
0x508B2790...449e9ceDB
0 ETH0.000003050.06615725
Approve244848752026-02-18 16:19:5914 days ago1771431599IN
0x508B2790...449e9ceDB
0 ETH0.000003990.16464812
Transfer244554852026-02-14 13:59:4718 days ago1771077587IN
0x508B2790...449e9ceDB
0 ETH0.000132032.04141089
Approve244553692026-02-14 13:36:3518 days ago1771076195IN
0x508B2790...449e9ceDB
0 ETH0.000049482.04186646
Approve244553442026-02-14 13:31:1118 days ago1771075871IN
0x508B2790...449e9ceDB
0 ETH0.000049642.04362404
Approve244553172026-02-14 13:25:4718 days ago1771075547IN
0x508B2790...449e9ceDB
0 ETH0.000049542.03959606
Approve244553112026-02-14 13:24:3518 days ago1771075475IN
0x508B2790...449e9ceDB
0 ETH0.000049672.04457211
Approve244553092026-02-14 13:24:1118 days ago1771075451IN
0x508B2790...449e9ceDB
0 ETH0.000049372.03730724
Approve244552912026-02-14 13:20:3518 days ago1771075235IN
0x508B2790...449e9ceDB
0 ETH0.000049332.03584876
Transfer242486072026-01-16 16:52:5947 days ago1768582379IN
0x508B2790...449e9ceDB
0 ETH0.000007970.16759777
Approve242452482026-01-16 5:39:1147 days ago1768541951IN
0x508B2790...449e9ceDB
0 ETH0.000048111.0345285
Transfer242442882026-01-16 2:26:2348 days ago1768530383IN
0x508B2790...449e9ceDB
0 ETH0.000097192.04323143
Approve242431492026-01-15 22:38:2348 days ago1768516703IN
0x508B2790...449e9ceDB
0 ETH0.00009492.0490789
Transfer242175362026-01-12 8:47:5951 days ago1768207679IN
0x508B2790...449e9ceDB
0 ETH0.000146022.10348964
Approve242086892026-01-11 3:10:2352 days ago1768101023IN
0x508B2790...449e9ceDB
0 ETH0.00009422.03343196
Transfer241536632026-01-03 10:57:1160 days ago1767437831IN
0x508B2790...449e9ceDB
0 ETH0.000106412.03255296
Approve241180172025-12-29 11:30:5965 days ago1767007859IN
0x508B2790...449e9ceDB
0 ETH0.000095332.0578097
Approve241155802025-12-29 3:21:3565 days ago1766978495IN
0x508B2790...449e9ceDB
0 ETH0.000094612.04397247
Approve241148532025-12-29 0:55:3566 days ago1766969735IN
0x508B2790...449e9ceDB
0 ETH0.000094252.036105
Approve241147602025-12-29 0:36:5966 days ago1766968619IN
0x508B2790...449e9ceDB
0 ETH0.000100592.17381378
Approve241101732025-12-28 9:16:2366 days ago1766913383IN
0x508B2790...449e9ceDB
0 ETH0.000001860.0403081
Transfer240912622025-12-25 17:54:1169 days ago1766685251IN
0x508B2790...449e9ceDB
0 ETH0.000106132.02771756
Transfer240779322025-12-23 21:14:5971 days ago1766524499IN
0x508B2790...449e9ceDB
0 ETH0.000140932.03025978
Approve240742912025-12-23 9:02:3571 days ago1766480555IN
0x508B2790...449e9ceDB
0 ETH0.000098912.13515023
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

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
/**
 *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

API
[{"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

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.