ETH Price: $3,010.86 (+4.51%)
Gas: 2 Gwei

Token

Stakify (SIFY)
 

Overview

Max Total Supply

244,000,000 SIFY

Holders

762

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
8,942.0144 SIFY

Value
$0.00
0xe71b0054e63ec01c3074d051d9c28b13377a6084
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Stakify

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 7 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 2 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

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

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

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

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

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

File 3 of 7 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 4 of 7 : IUniswapV2Factory.sol
pragma solidity >=0.5.0;

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

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

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

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

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

File 5 of 7 : IUniswapV2Router01.sol
pragma solidity >=0.6.2;

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

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

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

File 6 of 7 : IUniswapV2Router02.sol
pragma solidity >=0.6.2;

import './IUniswapV2Router01.sol';

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

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

File 7 of 7 : Lock.sol
//SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol";
import "@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol";

contract Stakify is Ownable, IERC20 {
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Stakify";
    string constant _symbol = "SIFY";
    uint8 constant _decimals = 18;

    uint256 _totalSupply; // One hundred billions

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

    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isAuthorized;
    mapping(address => bool) isMaxWalletExcluded;
    mapping(address => bool) isMaxTxExcluded;

    address public treasuryWallet;

    // Fees
    uint256 public buyLiquidityFee;
    uint256 public buyTreasuryFee;
    uint256 public buyBurnFee;
    uint256 public buyStakeFee;
    uint256 public buyTotalFee;

    uint256 public sellLiquidityFee;
    uint256 public sellTreasuryFee;
    uint256 public sellStakeFee;
    uint256 public sellBurnFee;

    uint256 public sellTotalFee;

    bool public isRepellentEnabled;

    uint256 public repellentSellAutoBurnFee;
    uint256 public repellentSellLiquidityFee;
    uint256 public repellentSellTreasuryFee;
    uint256 public repellentSellStakeFee;
    uint256 public repellentSellTotalFee;

    uint256 public repellentBuyAutoBurnFee;
    uint256 public repellentBuyLiquidityFee;
    uint256 public repellentBuyTreasuryFee;
    uint256 public repellentBuyStakeFee;
    uint256 public repellentBuyTotalFee;

    address public stakingWallet;

    uint256 public launchtAt;

    event RepellentFeeActivated(uint256 activatedAmount);
    event RepellentFeeDisabled(uint256 disabledAmount);

    address BUSD;

    enum LPLevels {
        Level1,
        Level2,
        Level3,
        Level4,
        Level5
    }

    LPLevels public currentLpLevel;
    bool public isRepellentFee;

    uint256 public lastLPCheckedAt;
    uint256 public lastLPAmount;
    uint256 public lpCheckFrequency;

    struct LPRange {
        uint256 minLimit;
        uint256 maxLimit;
        uint256 dropLimit;
        uint256 recoverLimit;
    }

    mapping(LPLevels => LPRange) public lpRanges;

    uint256 public repellentFeeActivatedAt;
    uint256 public repellentFeeActivatedAmount;
    uint256 public repellentFeeRecoverAmount;

    uint256 public lastRepellentFeeActivatedAt;
    uint256 public lastRepellentFeeRecoveredAt;

    IUniswapV2Router02 public router;

    address public pair;

    bool public getTransferFees;

    uint256 public swapThreshold; // 0.001% of supply
    uint256 public maxTreansaction;
    uint256 public maxWallet;

    bool public contractSwapEnabled;
    bool public isTradeEnabled;
    bool inContractSwap;
    modifier swapping() {
        inContractSwap = true;
        _;
        inContractSwap = false;
    }

    event SetIsFeeExempt(address holder, bool status);
    event AddAuthorizedWallet(address holder, bool status);
    event SetDoContractSwap(bool status);
    event DoContractSwap(uint256 amount, uint256 time);

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

    constructor() {
        _totalSupply = 244 * 10 ** 6 * (10 ** _decimals);

        buyLiquidityFee = 1;
        buyTreasuryFee = 2;
        buyBurnFee = 1;
        buyStakeFee = 1;
        buyTotalFee = 5;

        sellLiquidityFee = 1;
        sellTreasuryFee = 22;
        sellBurnFee = 1;
        sellStakeFee = 1;
        sellTotalFee = 25;

        repellentSellAutoBurnFee = 15;
        repellentSellLiquidityFee = 5;
        repellentSellTreasuryFee = 10;
        repellentSellTotalFee = 30;

        repellentBuyAutoBurnFee = 0;
        repellentBuyLiquidityFee = 0;
        repellentBuyTreasuryFee = 0;
        repellentBuyTotalFee = 0;

        router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IUniswapV2Factory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );
        _allowances[address(this)][address(router)] = type(uint256).max;

        treasuryWallet = 0xdAb6280d5a87c10250F454EE3AD3b3b0C1A274C0;

        BUSD = 0xdAC17F958D2ee523a2206206994597C13D831ec7;

        lpCheckFrequency = 24 hours;
        getTransferFees = false;
        isRepellentEnabled = true;

        swapThreshold = (_totalSupply * 1) / 10000; // 0.001% of supply
        maxTreansaction = (_totalSupply * 2) / 100;
        maxWallet = (_totalSupply * 2) / 100;

        contractSwapEnabled = true;
        isTradeEnabled = false;

        address newOwner = 0x64Ab7F64187AF212007A3EE9fdF990101DE4Bc16;

        isFeeExempt[newOwner] = true;
        isFeeExempt[address(this)] = true;
        isFeeExempt[treasuryWallet] = true;

        isAuthorized[newOwner] = true;
        isAuthorized[address(this)] = true;
        isAuthorized[ZERO] = true;
        isAuthorized[DEAD] = true;
        isAuthorized[treasuryWallet] = true;

        isMaxWalletExcluded[msg.sender] = true;
        isMaxTxExcluded[msg.sender] = true;

        isMaxWalletExcluded[ZERO] = true;
        isMaxTxExcluded[ZERO] = true;

        isMaxWalletExcluded[DEAD] = true;
        isMaxTxExcluded[DEAD] = true;

        lpRanges[LPLevels.Level1].minLimit = 0;
        lpRanges[LPLevels.Level1].maxLimit = 100000 * 10 ** 6;
        lpRanges[LPLevels.Level1].dropLimit = 1000;
        lpRanges[LPLevels.Level1].recoverLimit = 2000;

        lpRanges[LPLevels.Level2].minLimit = 100000 * 10 ** 6;
        lpRanges[LPLevels.Level2].maxLimit = 200000 * 10 ** 6;
        lpRanges[LPLevels.Level2].dropLimit = 750;
        lpRanges[LPLevels.Level2].recoverLimit = 1500;

        lpRanges[LPLevels.Level3].minLimit = 200000 * 10 ** 6;
        lpRanges[LPLevels.Level3].maxLimit = 500000 * 10 ** 6;
        lpRanges[LPLevels.Level3].dropLimit = 500;
        lpRanges[LPLevels.Level3].recoverLimit = 1000;

        lpRanges[LPLevels.Level4].minLimit = 500000 * 10 ** 6;
        lpRanges[LPLevels.Level4].maxLimit = 1000000 * 10 ** 6;
        lpRanges[LPLevels.Level4].dropLimit = 250;
        lpRanges[LPLevels.Level4].recoverLimit = 500;

        lpRanges[LPLevels.Level5].minLimit = 1000000 * 10 ** 6;
        lpRanges[LPLevels.Level5].maxLimit = 600000 * 10 ** 6;
        lpRanges[LPLevels.Level5].dropLimit = 100;
        lpRanges[LPLevels.Level5].recoverLimit = 200;

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

        transferOwnership(newOwner);
    }

    receive() external payable {}

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

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

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

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

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

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

    function approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    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 approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            require(
                _allowances[sender][msg.sender] >= amount,
                "Insufficient Allowance"
            );
            _allowances[sender][msg.sender] =
                _allowances[sender][msg.sender] -
                amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if (!isTradeEnabled) require(isAuthorized[sender], "Trading disabled");
        if (inContractSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        if (!isMaxTxExcluded[sender])
            require(amount <= maxTreansaction, "Max transaction exceeded");

        if (!isMaxWalletExcluded[recipient] && recipient != pair) {
            require(
                (_balances[recipient] + amount) <= maxWallet,
                "Max wallet exceeded"
            );
        }

        if (
            (lastLPCheckedAt + lpCheckFrequency) < block.timestamp &&
            !isRepellentFee &&
            isTradeEnabled
        ) {
            uint256 lpBnbBalance = IERC20(router.WETH()).balanceOf(
                address(pair)
            );
            lastLPAmount = getBnbPrice(lpBnbBalance);
            lastLPCheckedAt = block.timestamp;
        }

        if (isTradeEnabled) calculateLPStatus();

        if (shouldDoContractSwap()) {
            doContractSwap();
        }

        require(_balances[sender] >= amount, "Insufficient Balance");
        _balances[sender] = _balances[sender] - amount;

        uint256 amountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, amount)
            : amount;
        _balances[recipient] = _balances[recipient] + amountReceived;

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

    function shouldDoContractSwap() internal view returns (bool) {
        return (msg.sender != pair &&
            !inContractSwap &&
            contractSwapEnabled &&
            sellTotalFee > 0 &&
            _balances[address(this)] >= swapThreshold);
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeToken;
        uint256 burnTokens;
        uint256 stakeTokens;

        if (isRepellentFee && isRepellentEnabled) {
            if (recipient == pair && repellentSellTotalFee > 0) {
                feeToken = (amount * repellentSellTotalFee) / 100;

                // get burn tokens
                if (repellentSellAutoBurnFee > 0)
                    burnTokens =
                        (feeToken * repellentSellAutoBurnFee) /
                        repellentSellTotalFee;

                // get sell tokens
                if (repellentSellStakeFee > 0)
                    stakeTokens =
                        (feeToken * repellentSellStakeFee) /
                        repellentSellTotalFee;
            } else if (repellentBuyTotalFee > 0) {
                feeToken = (amount * repellentBuyTotalFee) / 100;
                if (repellentBuyAutoBurnFee > 0)
                    burnTokens =
                        (feeToken * repellentBuyAutoBurnFee) /
                        repellentBuyTotalFee;

                if (repellentBuyStakeFee > 0)
                    stakeTokens =
                        (feeToken * repellentBuyStakeFee) /
                        repellentSellTotalFee;
            }
        } else {
            if (recipient == pair && sellTotalFee > 0) {
                feeToken = (amount * sellTotalFee) / 100;
                if (sellBurnFee > 0)
                    burnTokens = (feeToken * sellBurnFee) / sellTotalFee;

                if (sellStakeFee > 0)
                    stakeTokens = (feeToken * sellStakeFee) / sellTotalFee;
            } else if (buyTotalFee > 0) {
                feeToken = (amount * buyTotalFee) / 100;
                if (buyBurnFee > 0)
                    burnTokens = (feeToken * buyBurnFee) / buyTotalFee;

                if (buyStakeFee > 0)
                    stakeTokens = (feeToken * buyStakeFee) / buyTotalFee;
            }
        }
        if (burnTokens > 0) {
            _balances[DEAD] = _balances[DEAD] + burnTokens;
            emit Transfer(sender, DEAD, burnTokens);
        }
        if (stakeTokens > 0) {
            _balances[stakingWallet] = _balances[stakingWallet] + stakeTokens;
            emit Transfer(sender, stakingWallet, stakeTokens);
        }

        _balances[address(this)] =
            _balances[address(this)] +
            (feeToken - (burnTokens + stakeTokens));
        emit Transfer(
            sender,
            address(this),
            (feeToken - (burnTokens + stakeTokens))
        );

        return (amount - feeToken);
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(_balances[sender] >= amount, "Insufficient Balance");
        _balances[sender] = _balances[sender] - amount;

        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldTakeFee(
        address sender,
        address to
    ) internal view returns (bool) {
        if (!getTransferFees) {
            if (sender != pair && to != pair) return false;
        }
        if (isFeeExempt[sender] || isFeeExempt[to]) {
            return false;
        } else {
            return true;
        }
    }

    function isFeeExcluded(address _wallet) public view returns (bool) {
        return isFeeExempt[_wallet];
    }

    function doContractSwap() internal swapping {
        uint256 contractTokenBalance = _balances[address(this)];

        uint256 tokensToLp = (contractTokenBalance * sellLiquidityFee) /
            sellTotalFee;

        uint256 marketingFee = contractTokenBalance - tokensToLp;

        if (marketingFee > 0) {
            swapTokensForEth(marketingFee);

            uint256 swappedTokens = address(this).balance;

            if (swappedTokens > 0)
                payable(treasuryWallet).transfer(swappedTokens);
        }

        if (tokensToLp > 0) swapAndLiquify(tokensToLp);
    }

    function swapAndLiquify(uint256 tokens) private {
        // split the contract balance into halves
        uint256 half = tokens / 2;
        uint256 otherHalf = tokens - half;

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = address(this).balance - initialBalance;

        // add liquidity to uniswap
        addLiquidity(otherHalf, newBalance);

        emit AutoLiquify(newBalance, otherHalf);
    }

    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] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            DEAD,
            block.timestamp
        );
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;

        emit SetIsFeeExempt(holder, exempt);
    }

    function setDoContractSwap(bool _enabled) external onlyOwner {
        contractSwapEnabled = _enabled;

        emit SetDoContractSwap(_enabled);
    }

    function changeTreasuryWallet(address _wallet) external onlyOwner {
        treasuryWallet = _wallet;
    }

    function changeBuyFees(
        uint256 _liquidityFee,
        uint256 _treasuryFee,
        uint256 _burnFee,
        uint256 _stakeFee
    ) external onlyOwner {
        buyLiquidityFee = _liquidityFee;
        buyTreasuryFee = _treasuryFee;
        buyBurnFee = _burnFee;
        buyStakeFee = _stakeFee;

        buyTotalFee = _liquidityFee + _treasuryFee + _burnFee + _stakeFee;

        require(buyTotalFee <= 10, "Total fees can not greater than 10%");
    }

    function changeSellFees(
        uint256 _liquidityFee,
        uint256 _treasuryFee,
        uint256 _burnFee,
        uint256 _stakeFee
    ) external onlyOwner {
        sellLiquidityFee = _liquidityFee;
        sellTreasuryFee = _treasuryFee;
        sellBurnFee = _burnFee;
        sellStakeFee = _stakeFee;

        sellTotalFee = _liquidityFee + _treasuryFee + _burnFee + _stakeFee;

        if (isTradeEnabled && (launchtAt + 24 hours) < block.timestamp)
            require(sellTotalFee <= 10, "Total fees can not greater than 10%");
    }

    function enableTrading() external onlyOwner {
        isTradeEnabled = true;
        launchtAt = block.timestamp;
    }

    function setAuthorizedWallets(
        address _wallet,
        bool _status
    ) external onlyOwner {
        isAuthorized[_wallet] = _status;
    }

    function rescueEth() external onlyOwner {
        uint256 balance = address(this).balance;
        require(balance > 0, "No enough ETH to transfer");

        payable(msg.sender).transfer(balance);
    }

    function changeGetFeesOnTransfer(bool _status) external onlyOwner {
        getTransferFees = _status;
    }

    function changeLpCheckFrequency(uint256 _hours) external onlyOwner {
        lpCheckFrequency = _hours;
    }

    function changeRepellentSellFees(
        uint256 _autoBurnFee,
        uint256 _liquidityFee,
        uint256 _treasuryFee,
        uint256 _stakeFee
    ) external onlyOwner {
        repellentSellAutoBurnFee = _autoBurnFee;
        repellentSellLiquidityFee = _liquidityFee;
        repellentSellTreasuryFee = _treasuryFee;
        repellentSellStakeFee = _stakeFee;

        repellentSellTotalFee =
            _autoBurnFee +
            _liquidityFee +
            _treasuryFee +
            _stakeFee;

        require(repellentSellTotalFee <= 30, "Fees can not be grater than 30%");
    }

    function changeRepellentBuyFees(
        uint256 _autoBurnFee,
        uint256 _liquidityFee,
        uint256 _treasuryFee,
        uint256 _stakeFee
    ) external onlyOwner {
        repellentBuyAutoBurnFee = _autoBurnFee;
        repellentBuyLiquidityFee = _liquidityFee;
        repellentBuyTreasuryFee = _treasuryFee;
        repellentBuyStakeFee = _stakeFee;

        repellentBuyTotalFee =
            _autoBurnFee +
            _liquidityFee +
            _treasuryFee +
            _stakeFee;

        require(repellentSellTotalFee <= 20, "Fees can not be grater than 20%");
    }

    function setLpRange(
        LPLevels _level,
        uint256 _min,
        uint256 _max,
        uint256 _drop,
        uint256 _recover
    ) external onlyOwner {
        LPRange storage currentRange = lpRanges[_level];

        currentRange.minLimit = _min;
        currentRange.maxLimit = _max;
        currentRange.dropLimit = _drop;
        currentRange.recoverLimit = _recover;
    }

    function calculateLPStatus() internal {
        uint256 lpBnbBalance = IERC20(router.WETH()).balanceOf(address(pair));
        uint256 lpBalance = getBnbPrice(lpBnbBalance);

        if (
            lpBalance >= lpRanges[LPLevels.Level1].minLimit &&
            lpBalance <= lpRanges[LPLevels.Level1].maxLimit
        ) currentLpLevel = LPLevels.Level1;

        if (
            lpBalance >= lpRanges[LPLevels.Level2].minLimit &&
            lpBalance <= lpRanges[LPLevels.Level2].maxLimit
        ) currentLpLevel = LPLevels.Level2;

        if (
            lpBalance >= lpRanges[LPLevels.Level3].minLimit &&
            lpBalance <= lpRanges[LPLevels.Level3].maxLimit
        ) currentLpLevel = LPLevels.Level3;

        if (
            lpBalance >= lpRanges[LPLevels.Level4].minLimit &&
            lpBalance <= lpRanges[LPLevels.Level4].maxLimit
        ) currentLpLevel = LPLevels.Level4;

        if (lpBalance >= lpRanges[LPLevels.Level5].minLimit)
            currentLpLevel = LPLevels.Level5;

        if (lastLPAmount > lpBalance && !isRepellentFee) {
            uint256 lpDifference = lastLPAmount - lpBalance;

            uint256 differencePercentage = ((lpDifference * 10000) /
                lastLPAmount);

            if (differencePercentage > lpRanges[currentLpLevel].dropLimit) {
                isRepellentFee = true;
                repellentFeeActivatedAt = block.timestamp;
                lastRepellentFeeActivatedAt = block.timestamp;
                repellentFeeActivatedAmount = lpBalance;
                repellentFeeRecoverAmount =
                    lpBalance +
                    ((lpBalance * lpRanges[currentLpLevel].recoverLimit) /
                        10000);

                emit RepellentFeeActivated(lpBalance);
            }
        }
        if (isRepellentFee && lpBalance > repellentFeeRecoverAmount) {
            isRepellentFee = false;
            repellentFeeActivatedAt = 0;
            repellentFeeActivatedAmount = 0;
            repellentFeeRecoverAmount = 0;

            lastRepellentFeeRecoveredAt = block.timestamp;

            lastLPAmount = lpBalance;

            emit RepellentFeeDisabled(lpBalance);
        }
    }

    function getBnbPrice(uint256 _amount) public view returns (uint256) {
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = BUSD;

        uint256[] memory amounts = router.getAmountsOut(_amount, path);

        return amounts[1];
    }

    function changeMaxWallet(uint256 _amount) external onlyOwner {
        require(
            _amount >= ((_totalSupply * 2) / 100),
            "Max wallet can not less than 2%"
        );

        maxWallet = _amount;
    }

    function changeMaxTx(uint256 _amount) external onlyOwner {
        require(
            _amount >= ((_totalSupply * 1) / 100),
            "Max wallet can not less than 1%"
        );

        maxTreansaction = _amount;
    }

    function maxWalletExclude(
        address _wallet,
        bool _status
    ) external onlyOwner {
        isMaxWalletExcluded[_wallet] = _status;
    }

    function maxTxExclude(address _wallet, bool _status) external onlyOwner {
        isMaxTxExcluded[_wallet] = _status;
    }

    function toggleReppelent(bool _status) external onlyOwner {
        isRepellentEnabled = _status;
    }

    function changeStakeAddress(address _stakePool) external onlyOwner {
        stakingWallet = _stakePool;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"AddAuthorizedWallet","type":"event"},{"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":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"DoContractSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"activatedAmount","type":"uint256"}],"name":"RepellentFeeActivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"disabledAmount","type":"uint256"}],"name":"RepellentFeeDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SetDoContractSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SetIsFeeExempt","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":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyStakeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_stakeFee","type":"uint256"}],"name":"changeBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"changeGetFeesOnTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_hours","type":"uint256"}],"name":"changeLpCheckFrequency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"changeMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"changeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_autoBurnFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_stakeFee","type":"uint256"}],"name":"changeRepellentBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_autoBurnFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_stakeFee","type":"uint256"}],"name":"changeRepellentSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_stakeFee","type":"uint256"}],"name":"changeSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stakePool","type":"address"}],"name":"changeStakeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"changeTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentLpLevel","outputs":[{"internalType":"enum Stakify.LPLevels","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"getBnbPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTransferFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"isFeeExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRepellentEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRepellentFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLPAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLPCheckedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRepellentFeeActivatedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRepellentFeeRecoveredAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchtAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpCheckFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum Stakify.LPLevels","name":"","type":"uint8"}],"name":"lpRanges","outputs":[{"internalType":"uint256","name":"minLimit","type":"uint256"},{"internalType":"uint256","name":"maxLimit","type":"uint256"},{"internalType":"uint256","name":"dropLimit","type":"uint256"},{"internalType":"uint256","name":"recoverLimit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTreansaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"maxTxExclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"maxWalletExclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"repellentBuyAutoBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"repellentBuyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"repellentBuyStakeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"repellentBuyTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"repellentBuyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"repellentFeeActivatedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"repellentFeeActivatedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"repellentFeeRecoverAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"repellentSellAutoBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"repellentSellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"repellentSellStakeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"repellentSellTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"repellentSellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rescueEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellStakeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setAuthorizedWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setDoContractSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum Stakify.LPLevels","name":"_level","type":"uint8"},{"internalType":"uint256","name":"_min","type":"uint256"},{"internalType":"uint256","name":"_max","type":"uint256"},{"internalType":"uint256","name":"_drop","type":"uint256"},{"internalType":"uint256","name":"_recover","type":"uint256"}],"name":"setLpRange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"toggleReppelent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506200001d336200087b565b6200002b6012600a62000ac1565b6200003b90630e8b250062000ad9565b600190815560098190556002600a908155600b829055600c8290556005600d819055600e8390556016600f81815560118590556010949094556019601281905560149490945560159190915555601e601855600090819055601a819055601b819055601d55602a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000105573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012b919062000af3565b6001600160a01b031663c9c65396602a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b3919062000af3565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000226919062000af3565b602b80546001600160a01b039283166001600160a01b0319918216178255306000908152600360209081526040808320602a549096168352948152939020600019905560088054821673dab6280d5a87c10250f454ee3ad3b3b0c1a274c017905582541673dac17f958d2ee523a2206206994597c13d831ec71790915562015180602355805460ff60a01b191690556013805460ff19166001908117909155805461271091620002d7919062000ad9565b620002e3919062000b1e565b602c55600154606490620002f990600262000ad9565b62000305919062000b1e565b602d556001546064906200031b90600262000ad9565b62000327919062000b1e565b602e55602f805461ffff19166001908117909155600460209081527f0ed789647784a0f81cd8c89dcb96b593fb53e315945a8193827899f71bb75bd4805460ff19908116841790915530600081815260408082208054851687179055600880546001600160a01b0390811684528284208054871689179055600587527f88c544f575e5786f2f72d2c2a128cae28322ddcee65242d87c54592ab3bb47cc805487168917905593835281832080548616881790557f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc80548616881790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805486168817905554909216815281812080548416861790553381526006845281812080548416861790556007845281812080548416861790557f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f880548416861790557f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df80548416861790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280548416861790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d805490931685179092557fb7634ec2165a7280a285aac3ec10cf370eca86d8aa9d3243c90b2151434091ad82905564174876e8007fb7634ec2165a7280a285aac3ec10cf370eca86d8aa9d3243c90b2151434091ae8190556103e87fb7634ec2165a7280a285aac3ec10cf370eca86d8aa9d3243c90b2151434091af8190556107d07fb7634ec2165a7280a285aac3ec10cf370eca86d8aa9d3243c90b2151434091b0557fbbbb3b1da0cb0951f34c5e9db4606f934b7367b5284f29163e9e6fe67e1e97d691909155642e90edd0007fbbbb3b1da0cb0951f34c5e9db4606f934b7367b5284f29163e9e6fe67e1e97d78190556102ee7fbbbb3b1da0cb0951f34c5e9db4606f934b7367b5284f29163e9e6fe67e1e97d8556105dc7fbbbb3b1da0cb0951f34c5e9db4606f934b7367b5284f29163e9e6fe67e1e97d9557f47bb5529a97e2b401b32950f6360fbc9e3f4e70b887dc0f9b9ad1f7402ca11da5564746a5288007f47bb5529a97e2b401b32950f6360fbc9e3f4e70b887dc0f9b9ad1f7402ca11db8190556101f47f47bb5529a97e2b401b32950f6360fbc9e3f4e70b887dc0f9b9ad1f7402ca11dc8190557f47bb5529a97e2b401b32950f6360fbc9e3f4e70b887dc0f9b9ad1f7402ca11dd929092557f8a6809e43cef135a96df89aa3c0800baae7c497913adf6156625c15a6f57cdf05564e8d4a510007f8a6809e43cef135a96df89aa3c0800baae7c497913adf6156625c15a6f57cdf181905560fa7f8a6809e43cef135a96df89aa3c0800baae7c497913adf6156625c15a6f57cdf2557f8a6809e43cef135a96df89aa3c0800baae7c497913adf6156625c15a6f57cdf3919091557fe0059098054d65c76a17a4d86f8572395c4d366a1d067b0643b918330bac9e1555648bb2c970007fe0059098054d65c76a17a4d86f8572395c4d366a1d067b0643b918330bac9e165560647fe0059098054d65c76a17a4d86f8572395c4d366a1d067b0643b918330bac9e175560c87fe0059098054d65c76a17a4d86f8572395c4d366a1d067b0643b918330bac9e185592547364ab7f64187af212007a3ee9fdf990101de4bc16808352600284527fe393f4a9adc67299348ec16f18a5872575ecc629f0675345130072860e3622d58290558451918252935184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef928290030190a36200087481620008cb565b5062000b41565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620008d56200094e565b6001600160a01b038116620009405760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6200094b816200087b565b50565b6000546001600160a01b03163314620009aa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000937565b565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000a03578160001904821115620009e757620009e7620009ac565b80851615620009f557918102915b93841c9390800290620009c7565b509250929050565b60008262000a1c5750600162000abb565b8162000a2b5750600062000abb565b816001811462000a44576002811462000a4f5762000a6f565b600191505062000abb565b60ff84111562000a635762000a63620009ac565b50506001821b62000abb565b5060208310610133831016604e8410600b841016171562000a94575081810a62000abb565b62000aa08383620009c2565b806000190482111562000ab75762000ab7620009ac565b0290505b92915050565b600062000ad260ff84168362000a0b565b9392505050565b808202811582820484141762000abb5762000abb620009ac565b60006020828403121562000b0657600080fd5b81516001600160a01b038116811462000ad257600080fd5b60008262000b3c57634e487b7160e01b600052601260045260246000fd5b500490565b61312f8062000b516000396000f3fe60806040526004361061046b5760003560e01c80638289aaa01161024a578063c5908e4511610139578063ea3a7828116100b6578063f887ea401161007a578063f887ea4014610d6c578063f8b45b0514610d8c578063f9fb1bcf14610da2578063fdb78c0e14610db8578063fe9fbb8014610dd257600080fd5b8063ea3a782814610c9e578063f11a24d314610cbe578063f2fde38b14610cd4578063f38e28e914610cf4578063f637434214610d5657600080fd5b8063ce541494116100fd578063ce54149414610bf6578063cf21e18e14610c16578063cf68145314610c2c578063dd62ed3e14610c42578063e71dc3f514610c8857600080fd5b8063c5908e4514610b6b578063cb611f4614610b8b578063ccf92ba814610bab578063ce2af1ac14610bcb578063ce31a06b14610be157600080fd5b8063910c6735116101c7578063adb873bd1161018b578063adb873bd14610ad0578063b0d9ae1b14610ae6578063b1a9bad514610afc578063ba625bfe14610b1c578063bca238aa14610b3257600080fd5b8063910c673514610a3757806395d89b4114610a4d578063979e958914610a7a578063a8aa1b3114610a90578063a9059cbb14610ab057600080fd5b80638aec2cb21161020e5780638aec2cb2146109a45780638c0a98e3146109c45780638d38a127146109da5780638da5cb5b146109f95780638ed52bbf14610a1757600080fd5b80638289aaa01461092d5780638346a6c214610943578063866e7cf514610959578063889187451461096f5780638a8c523c1461098f57600080fd5b80633705b392116103665780635e54eee2116102e357806370a08231116102a757806370a0823114610896578063715018a6146108cc57806374858e76146108e157806375f62683146108f7578063778c61521461090d57600080fd5b80635e54eee21461081457806361cf9265146108345780636556fce51461084a578063658d4b7f146108605780636b2fb1241461088057600080fd5b8063537c1ac71161032a578063537c1ac714610787578063571ac8b0146107a75780635962b9d7146107c757806359ec45e1146107e85780635c068a8c146107fe57600080fd5b80633705b392146106e75780633f4218e0146106fd5780634626402b1461072d57806346b99ac21461074d5780634b75b7bc1461076d57600080fd5b806318160ddd116103f457806323f4f9f5116103b857806323f4f9f51461065f5780632d1f0b401461067f578063313ce5671461069557806333e75aca146106b15780633683685a146106c757600080fd5b806318160ddd146105de5780631c2d86ad146105f35780631d407b2d146106095780631f55f48d1461061f57806323b872dd1461063f57600080fd5b806306fdde031161043b57806306fdde0314610504578063095ea7b31461053d5780630b006d601461056d5780630ce906071461058f578063122e9715146105b057600080fd5b8062afb325146104775780630445b667146104a057806306273fc7146104b657806306ee6ad8146104cc57600080fd5b3661047257005b600080fd5b34801561048357600080fd5b5061048d60125481565b6040519081526020015b60405180910390f35b3480156104ac57600080fd5b5061048d602c5481565b3480156104c257600080fd5b5061048d60225481565b3480156104d857600080fd5b50601e546104ec906001600160a01b031681565b6040516001600160a01b039091168152602001610497565b34801561051057600080fd5b506040805180820190915260078152665374616b69667960c81b60208201525b6040516104979190612bba565b34801561054957600080fd5b5061055d610558366004612c1d565b610e02565b6040519015158152602001610497565b34801561057957600080fd5b5061058d610588366004612c49565b610e6f565b005b34801561059b57600080fd5b50602b5461055d90600160a01b900460ff1681565b3480156105bc57600080fd5b506020546105d190600160a01b900460ff1681565b6040516104979190612c78565b3480156105ea57600080fd5b5060015461048d565b3480156105ff57600080fd5b5061048d601b5481565b34801561061557600080fd5b5061048d60255481565b34801561062b57600080fd5b5061048d61063a366004612c49565b610eeb565b34801561064b57600080fd5b5061055d61065a366004612ca0565b611072565b34801561066b57600080fd5b5061058d61067a366004612cf6565b611173565b34801561068b57600080fd5b5061048d60185481565b3480156106a157600080fd5b5060405160128152602001610497565b3480156106bd57600080fd5b5061048d601d5481565b3480156106d357600080fd5b5061058d6106e2366004612d11565b611199565b3480156106f357600080fd5b5061048d600d5481565b34801561070957600080fd5b5061055d610718366004612d46565b60046020526000908152604090205460ff1681565b34801561073957600080fd5b506008546104ec906001600160a01b031681565b34801561075957600080fd5b5061058d610768366004612d63565b6111cc565b34801561077957600080fd5b5060135461055d9060ff1681565b34801561079357600080fd5b5061058d6107a2366004612d46565b611263565b3480156107b357600080fd5b5061055d6107c2366004612d46565b61128d565b3480156107d357600080fd5b5060205461055d90600160a81b900460ff1681565b3480156107f457600080fd5b5061048d60105481565b34801561080a57600080fd5b5061048d600a5481565b34801561082057600080fd5b5061058d61082f366004612d63565b61129b565b34801561084057600080fd5b5061048d601a5481565b34801561085657600080fd5b5061048d60165481565b34801561086c57600080fd5b5061058d61087b366004612d11565b611328565b34801561088c57600080fd5b5061048d600f5481565b3480156108a257600080fd5b5061048d6108b1366004612d46565b6001600160a01b031660009081526002602052604090205490565b3480156108d857600080fd5b5061058d611394565b3480156108ed57600080fd5b5061048d60155481565b34801561090357600080fd5b5061048d601f5481565b34801561091957600080fd5b5061058d610928366004612c49565b6113a8565b34801561093957600080fd5b5061048d60265481565b34801561094f57600080fd5b5061048d60235481565b34801561096557600080fd5b5061048d60275481565b34801561097b57600080fd5b5061058d61098a366004612d63565b61141f565b34801561099b57600080fd5b5061058d6114b1565b3480156109b057600080fd5b5061058d6109bf366004612da4565b6114ce565b3480156109d057600080fd5b5061048d600c5481565b3480156109e657600080fd5b50602f5461055d90610100900460ff1681565b348015610a0557600080fd5b506000546001600160a01b03166104ec565b348015610a2357600080fd5b5061058d610a32366004612c49565b611529565b348015610a4357600080fd5b5061048d60295481565b348015610a5957600080fd5b506040805180820190915260048152635349465960e01b6020820152610530565b348015610a8657600080fd5b5061048d60215481565b348015610a9c57600080fd5b50602b546104ec906001600160a01b031681565b348015610abc57600080fd5b5061055d610acb366004612c1d565b611536565b348015610adc57600080fd5b5061048d60115481565b348015610af257600080fd5b5061048d602d5481565b348015610b0857600080fd5b5061058d610b17366004612d11565b611543565b348015610b2857600080fd5b5061048d60285481565b348015610b3e57600080fd5b5061055d610b4d366004612d46565b6001600160a01b031660009081526004602052604090205460ff1690565b348015610b7757600080fd5b5061058d610b86366004612d11565b611576565b348015610b9757600080fd5b5061058d610ba6366004612d46565b6115a9565b348015610bb757600080fd5b5061058d610bc6366004612cf6565b6115d3565b348015610bd757600080fd5b5061048d601c5481565b348015610bed57600080fd5b5061058d6115ee565b348015610c0257600080fd5b5061058d610c11366004612cf6565b611675565b348015610c2257600080fd5b5061048d60195481565b348015610c3857600080fd5b5061048d60145481565b348015610c4e57600080fd5b5061048d610c5d366004612de6565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610c9457600080fd5b5061048d600b5481565b348015610caa57600080fd5b5061058d610cb9366004612d63565b6116c4565b348015610cca57600080fd5b5061048d60095481565b348015610ce057600080fd5b5061058d610cef366004612d46565b611725565b348015610d0057600080fd5b50610d36610d0f366004612e1f565b60246020526000908152604090208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610497565b348015610d6257600080fd5b5061048d600e5481565b348015610d7857600080fd5b50602a546104ec906001600160a01b031681565b348015610d9857600080fd5b5061048d602e5481565b348015610dae57600080fd5b5061048d60175481565b348015610dc457600080fd5b50602f5461055d9060ff1681565b348015610dde57600080fd5b5061055d610ded366004612d46565b60056020526000908152604090205460ff1681565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e5d9086815260200190565b60405180910390a35060015b92915050565b610e7761179e565b60646001546002610e889190612e50565b610e929190612e67565b811015610ee65760405162461bcd60e51b815260206004820152601f60248201527f4d61782077616c6c65742063616e206e6f74206c657373207468616e2032250060448201526064015b60405180910390fd5b602e55565b604080516002808252606082018352600092839291906020830190803683375050602a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7d9190612e9f565b81600081518110610f9057610f90612ebc565b6001600160a01b0392831660209182029290920181019190915254825191169082906001908110610fc357610fc3612ebc565b6001600160a01b039283166020918202929092010152602a5460405163d06ca61f60e01b8152600092919091169063d06ca61f906110079087908690600401612f16565b600060405180830381865afa158015611024573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261104c9190810190612f2f565b90508060018151811061106157611061612ebc565b602002602001015192505050919050565b6001600160a01b03831660009081526003602090815260408083203384529091528120546000191461115e576001600160a01b038416600090815260036020908152604080832033845290915290205482111561110a5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b6044820152606401610edd565b6001600160a01b0384166000908152600360209081526040808320338452909152902054611139908390612fed565b6001600160a01b03851660009081526003602090815260408083203384529091529020555b6111698484846117f8565b90505b9392505050565b61117b61179e565b602b8054911515600160a01b0260ff60a01b19909216919091179055565b6111a161179e565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6111d461179e565b601484905560158390556016829055601781905580826111f48587613000565b6111fe9190613000565b6112089190613000565b6018819055601e101561125d5760405162461bcd60e51b815260206004820152601f60248201527f466565732063616e206e6f7420626520677261746572207468616e20333025006044820152606401610edd565b50505050565b61126b61179e565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e6982600019610e02565b6112a361179e565b600e849055600f8390556011829055601081905580826112c38587613000565b6112cd9190613000565b6112d79190613000565b601255602f54610100900460ff168015611300575042601f54620151806112fe9190613000565b105b1561125d57600a601254111561125d5760405162461bcd60e51b8152600401610edd90613013565b61133061179e565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527f1b92447bfc74f86a82293c184341926a5888220bc498dde33efabf7c3d796d6991015b60405180910390a15050565b61139c61179e565b6113a66000611c37565b565b6113b061179e565b606460015460016113c19190612e50565b6113cb9190612e67565b81101561141a5760405162461bcd60e51b815260206004820152601f60248201527f4d61782077616c6c65742063616e206e6f74206c657373207468616e203125006044820152606401610edd565b602d55565b61142761179e565b6019849055601a839055601b829055601c81905580826114478587613000565b6114519190613000565b61145b9190613000565b601d556018546014101561125d5760405162461bcd60e51b815260206004820152601f60248201527f466565732063616e206e6f7420626520677261746572207468616e20323025006044820152606401610edd565b6114b961179e565b602f805461ff00191661010017905542601f55565b6114d661179e565b6000602460008760048111156114ee576114ee612c62565b60048111156114ff576114ff612c62565b81526020810191909152604001600020948555506001840192909255600283015560039091015550565b61153161179e565b602355565b600061116c3384846117f8565b61154b61179e565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b61157e61179e565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6115b161179e565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6115db61179e565b6013805460ff1916911515919091179055565b6115f661179e565b47806116445760405162461bcd60e51b815260206004820152601960248201527f4e6f20656e6f7567682045544820746f207472616e73666572000000000000006044820152606401610edd565b604051339082156108fc029083906000818181858888f19350505050158015611671573d6000803e3d6000fd5b5050565b61167d61179e565b602f805460ff19168215159081179091556040519081527f0d537fcb73bb9654441eb9bd03c28d4b833e5a2da1f53bf422424cb01bc80fc79060200160405180910390a150565b6116cc61179e565b6009849055600a839055600b829055600c81905580826116ec8587613000565b6116f69190613000565b6117009190613000565b600d819055600a101561125d5760405162461bcd60e51b8152600401610edd90613013565b61172d61179e565b6001600160a01b0381166117925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610edd565b61179b81611c37565b50565b6000546001600160a01b031633146113a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610edd565b602f54600090610100900460ff16611865576001600160a01b03841660009081526005602052604090205460ff166118655760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b6044820152606401610edd565b602f5462010000900460ff161561188857611881848484611c87565b905061116c565b6001600160a01b03841660009081526007602052604090205460ff166118fa57602d548211156118fa5760405162461bcd60e51b815260206004820152601860248201527f4d6178207472616e73616374696f6e20657863656564656400000000000000006044820152606401610edd565b6001600160a01b03831660009081526006602052604090205460ff161580156119315750602b546001600160a01b03848116911614155b156119a157602e546001600160a01b03841660009081526002602052604090205461195d908490613000565b11156119a15760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610edd565b426023546021546119b29190613000565b1080156119c95750602054600160a81b900460ff16155b80156119dc5750602f54610100900460ff165b15611ad057602a54604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa158015611a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4f9190612e9f565b602b546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015611a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abc9190613056565b9050611ac781610eeb565b60225550426021555b602f54610100900460ff1615611ae857611ae8611d8e565b611af0612289565b15611afd57611afd6122ee565b6001600160a01b038416600090815260026020526040902054821115611b5c5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610edd565b6001600160a01b038416600090815260026020526040902054611b80908390612fed565b6001600160a01b038516600090815260026020526040812091909155611ba685856123b0565b611bb05782611bbb565b611bbb858585612451565b6001600160a01b038516600090815260026020526040902054909150611be2908290613000565b6001600160a01b0380861660008181526002602052604090819020939093559151908716906000805160206130da83398151915290611c249085815260200190565b60405180910390a3506001949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316600090815260026020526040812054821115611ce65760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610edd565b6001600160a01b038416600090815260026020526040902054611d0a908390612fed565b6001600160a01b038086166000908152600260205260408082209390935590851681522054611d3a908390613000565b6001600160a01b0380851660008181526002602052604090819020939093559151908616906000805160206130da83398151915290611d7c9086815260200190565b60405180910390a35060019392505050565b602a54604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa158015611dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfc9190612e9f565b602b546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015611e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e699190613056565b90506000611e7682610eeb565b6000805260246020527fb7634ec2165a7280a285aac3ec10cf370eca86d8aa9d3243c90b2151434091ad549091508110801590611edd57506000805260246020527fb7634ec2165a7280a285aac3ec10cf370eca86d8aa9d3243c90b2151434091ae548111155b15611ef0576020805460ff60a01b191690555b600160005260246020527fbbbb3b1da0cb0951f34c5e9db4606f934b7367b5284f29163e9e6fe67e1e97d6548110801590611f565750600160005260246020527fbbbb3b1da0cb0951f34c5e9db4606f934b7367b5284f29163e9e6fe67e1e97d7548111155b15611f6f576020805460ff60a01b1916600160a01b1790555b600260005260246020527f47bb5529a97e2b401b32950f6360fbc9e3f4e70b887dc0f9b9ad1f7402ca11da548110801590611fd55750600260005260246020527f47bb5529a97e2b401b32950f6360fbc9e3f4e70b887dc0f9b9ad1f7402ca11db548111155b15611fee576020805460ff60a01b1916600160a11b1790555b600360005260246020527f8a6809e43cef135a96df89aa3c0800baae7c497913adf6156625c15a6f57cdf05481108015906120545750600360005260246020527f8a6809e43cef135a96df89aa3c0800baae7c497913adf6156625c15a6f57cdf1548111155b1561206d576020805460ff60a01b1916600360a01b1790555b600460005260246020527fe0059098054d65c76a17a4d86f8572395c4d366a1d067b0643b918330bac9e155481106120b3576020805460ff60a01b1916600160a21b1790555b806022541180156120ce5750602054600160a81b900460ff16155b15612217576000816022546120e39190612fed565b90506000602254826127106120f89190612e50565b6121029190612e67565b905060246000602060149054906101000a900460ff16600481111561212957612129612c62565b600481111561213a5761213a612c62565b815260200190815260200160002060020154811115612214576020805460ff60a81b1916600160a81b1790819055426025819055602855602684905561271090602490600090600160a01b900460ff16600481111561219b5761219b612c62565b60048111156121ac576121ac612c62565b815260200190815260200160002060030154846121c99190612e50565b6121d39190612e67565b6121dd9084613000565b6027556040518381527f1c436e00c3e6a4c9fe8c4b06b059a2cc9039fb62142b6512adfe4fe9c44758589060200160405180910390a15b50505b602054600160a81b900460ff168015612231575060275481115b15611671576020805460ff60a81b191681556000602581905560268190556027554260295560228290556040518281527f7a711ba0fefabae0255256a32733d1e8f7500ae03b42aca2a87876c9d38a2a309101611388565b602b546000906001600160a01b031633148015906122b05750602f5462010000900460ff16155b80156122be5750602f5460ff165b80156122cc57506000601254115b80156122e95750602c543060009081526002602052604090205410155b905090565b602f805462ff000019166201000017905530600090815260026020526040812054601254600e549192916123229084612e50565b61232c9190612e67565b9050600061233a8284612fed565b905080156123905761234b8161280b565b47801561238e576008546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561238c573d6000803e3d6000fd5b505b505b811561239f5761239f82612965565b5050602f805462ff00001916905550565b602b54600090600160a01b900460ff166123fd57602b546001600160a01b038481169116148015906123f05750602b546001600160a01b03838116911614155b156123fd57506000610e69565b6001600160a01b03831660009081526004602052604090205460ff168061243c57506001600160a01b03821660009081526004602052604090205460ff165b1561244957506000610e69565b506001610e69565b600080600080602060159054906101000a900460ff168015612475575060135460ff165b1561256c57602b546001600160a01b03878116911614801561249957506000601854115b1561250a576064601854866124ae9190612e50565b6124b89190612e67565b601454909350156124e0576018546014546124d39085612e50565b6124dd9190612e67565b91505b60175415612505576018546017546124f89085612e50565b6125029190612e67565b90505b612659565b601d5415612505576064601d54866125229190612e50565b61252c9190612e67565b6019549093501561255457601d546019546125479085612e50565b6125519190612e67565b91505b601c541561250557601854601c546124f89085612e50565b602b546001600160a01b03878116911614801561258b57506000601254115b156125ea576064601254866125a09190612e50565b6125aa9190612e67565b601154909350156125d2576012546011546125c59085612e50565b6125cf9190612e67565b91505b60105415612505576012546010546124f89085612e50565b600d5415612659576064600d54866126029190612e50565b61260c9190612e67565b600b549093501561263457600d54600b546126279085612e50565b6126319190612e67565b91505b600c541561265957600d54600c5461264c9085612e50565b6126569190612e67565b90505b81156126fd5761dead60005260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54612697908390613000565b61dead600081905260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc919091556040516001600160a01b038916906000805160206130da833981519152906126f49086815260200190565b60405180910390a35b801561277757601e546001600160a01b0316600090815260026020526040902054612729908290613000565b601e80546001600160a01b03908116600090815260026020908152604091829020949094559154915184815291811692908a16916000805160206130da833981519152910160405180910390a35b6127818183613000565b61278b9084612fed565b306000908152600260205260409020546127a59190613000565b306000818152600260205260409020919091556001600160a01b0388166000805160206130da8339815191526127db8486613000565b6127e59087612fed565b60405190815260200160405180910390a36128008386612fed565b979650505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061284057612840612ebc565b6001600160a01b03928316602091820292909201810191909152602a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128bd9190612e9f565b816001815181106128d0576128d0612ebc565b6001600160a01b039283166020918202929092010152602a546128f691309116846129e4565b602a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061292f90859060009086903090429060040161306f565b600060405180830381600087803b15801561294957600080fd5b505af115801561295d573d6000803e3d6000fd5b505050505050565b6000612972600283612e67565b905060006129808284612fed565b90504761298c8361280b565b60006129988247612fed565b90506129a48382612b08565b60408051828152602081018590527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506910160405180910390a15050505050565b6001600160a01b038316612a465760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610edd565b6001600160a01b038216612aa75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610edd565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b602a54612b209030906001600160a01b0316846129e4565b602a5460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612b8e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612bb391906130ab565b5050505050565b600060208083528351808285015260005b81811015612be757858101830151858201604001528201612bcb565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461179b57600080fd5b60008060408385031215612c3057600080fd5b8235612c3b81612c08565b946020939093013593505050565b600060208284031215612c5b57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160058310612c9a57634e487b7160e01b600052602160045260246000fd5b91905290565b600080600060608486031215612cb557600080fd5b8335612cc081612c08565b92506020840135612cd081612c08565b929592945050506040919091013590565b80358015158114612cf157600080fd5b919050565b600060208284031215612d0857600080fd5b61116c82612ce1565b60008060408385031215612d2457600080fd5b8235612d2f81612c08565b9150612d3d60208401612ce1565b90509250929050565b600060208284031215612d5857600080fd5b813561116c81612c08565b60008060008060808587031215612d7957600080fd5b5050823594602084013594506040840135936060013592509050565b803560058110612cf157600080fd5b600080600080600060a08688031215612dbc57600080fd5b612dc586612d95565b97602087013597506040870135966060810135965060800135945092505050565b60008060408385031215612df957600080fd5b8235612e0481612c08565b91506020830135612e1481612c08565b809150509250929050565b600060208284031215612e3157600080fd5b61116c82612d95565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e6957610e69612e3a565b600082612e8457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600060208284031215612eb157600080fd5b815161116c81612c08565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015612f0b5781516001600160a01b031687529582019590820190600101612ee6565b509495945050505050565b8281526040602082015260006111696040830184612ed2565b60006020808385031215612f4257600080fd5b825167ffffffffffffffff80821115612f5a57600080fd5b818501915085601f830112612f6e57600080fd5b815181811115612f8057612f80612e89565b8060051b604051601f19603f83011681018181108582111715612fa557612fa5612e89565b604052918252848201925083810185019188831115612fc357600080fd5b938501935b82851015612fe157845184529385019392850192612fc8565b98975050505050505050565b81810381811115610e6957610e69612e3a565b80820180821115610e6957610e69612e3a565b60208082526023908201527f546f74616c20666565732063616e206e6f742067726561746572207468616e2060408201526231302560e81b606082015260800190565b60006020828403121561306857600080fd5b5051919050565b85815284602082015260a06040820152600061308e60a0830186612ed2565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156130c057600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e737d14f66d7dbefe0dfa361ae1a791b4ba9371627d9e7fa0f83117cdbb5931964736f6c63430008130033

Deployed Bytecode

0x60806040526004361061046b5760003560e01c80638289aaa01161024a578063c5908e4511610139578063ea3a7828116100b6578063f887ea401161007a578063f887ea4014610d6c578063f8b45b0514610d8c578063f9fb1bcf14610da2578063fdb78c0e14610db8578063fe9fbb8014610dd257600080fd5b8063ea3a782814610c9e578063f11a24d314610cbe578063f2fde38b14610cd4578063f38e28e914610cf4578063f637434214610d5657600080fd5b8063ce541494116100fd578063ce54149414610bf6578063cf21e18e14610c16578063cf68145314610c2c578063dd62ed3e14610c42578063e71dc3f514610c8857600080fd5b8063c5908e4514610b6b578063cb611f4614610b8b578063ccf92ba814610bab578063ce2af1ac14610bcb578063ce31a06b14610be157600080fd5b8063910c6735116101c7578063adb873bd1161018b578063adb873bd14610ad0578063b0d9ae1b14610ae6578063b1a9bad514610afc578063ba625bfe14610b1c578063bca238aa14610b3257600080fd5b8063910c673514610a3757806395d89b4114610a4d578063979e958914610a7a578063a8aa1b3114610a90578063a9059cbb14610ab057600080fd5b80638aec2cb21161020e5780638aec2cb2146109a45780638c0a98e3146109c45780638d38a127146109da5780638da5cb5b146109f95780638ed52bbf14610a1757600080fd5b80638289aaa01461092d5780638346a6c214610943578063866e7cf514610959578063889187451461096f5780638a8c523c1461098f57600080fd5b80633705b392116103665780635e54eee2116102e357806370a08231116102a757806370a0823114610896578063715018a6146108cc57806374858e76146108e157806375f62683146108f7578063778c61521461090d57600080fd5b80635e54eee21461081457806361cf9265146108345780636556fce51461084a578063658d4b7f146108605780636b2fb1241461088057600080fd5b8063537c1ac71161032a578063537c1ac714610787578063571ac8b0146107a75780635962b9d7146107c757806359ec45e1146107e85780635c068a8c146107fe57600080fd5b80633705b392146106e75780633f4218e0146106fd5780634626402b1461072d57806346b99ac21461074d5780634b75b7bc1461076d57600080fd5b806318160ddd116103f457806323f4f9f5116103b857806323f4f9f51461065f5780632d1f0b401461067f578063313ce5671461069557806333e75aca146106b15780633683685a146106c757600080fd5b806318160ddd146105de5780631c2d86ad146105f35780631d407b2d146106095780631f55f48d1461061f57806323b872dd1461063f57600080fd5b806306fdde031161043b57806306fdde0314610504578063095ea7b31461053d5780630b006d601461056d5780630ce906071461058f578063122e9715146105b057600080fd5b8062afb325146104775780630445b667146104a057806306273fc7146104b657806306ee6ad8146104cc57600080fd5b3661047257005b600080fd5b34801561048357600080fd5b5061048d60125481565b6040519081526020015b60405180910390f35b3480156104ac57600080fd5b5061048d602c5481565b3480156104c257600080fd5b5061048d60225481565b3480156104d857600080fd5b50601e546104ec906001600160a01b031681565b6040516001600160a01b039091168152602001610497565b34801561051057600080fd5b506040805180820190915260078152665374616b69667960c81b60208201525b6040516104979190612bba565b34801561054957600080fd5b5061055d610558366004612c1d565b610e02565b6040519015158152602001610497565b34801561057957600080fd5b5061058d610588366004612c49565b610e6f565b005b34801561059b57600080fd5b50602b5461055d90600160a01b900460ff1681565b3480156105bc57600080fd5b506020546105d190600160a01b900460ff1681565b6040516104979190612c78565b3480156105ea57600080fd5b5060015461048d565b3480156105ff57600080fd5b5061048d601b5481565b34801561061557600080fd5b5061048d60255481565b34801561062b57600080fd5b5061048d61063a366004612c49565b610eeb565b34801561064b57600080fd5b5061055d61065a366004612ca0565b611072565b34801561066b57600080fd5b5061058d61067a366004612cf6565b611173565b34801561068b57600080fd5b5061048d60185481565b3480156106a157600080fd5b5060405160128152602001610497565b3480156106bd57600080fd5b5061048d601d5481565b3480156106d357600080fd5b5061058d6106e2366004612d11565b611199565b3480156106f357600080fd5b5061048d600d5481565b34801561070957600080fd5b5061055d610718366004612d46565b60046020526000908152604090205460ff1681565b34801561073957600080fd5b506008546104ec906001600160a01b031681565b34801561075957600080fd5b5061058d610768366004612d63565b6111cc565b34801561077957600080fd5b5060135461055d9060ff1681565b34801561079357600080fd5b5061058d6107a2366004612d46565b611263565b3480156107b357600080fd5b5061055d6107c2366004612d46565b61128d565b3480156107d357600080fd5b5060205461055d90600160a81b900460ff1681565b3480156107f457600080fd5b5061048d60105481565b34801561080a57600080fd5b5061048d600a5481565b34801561082057600080fd5b5061058d61082f366004612d63565b61129b565b34801561084057600080fd5b5061048d601a5481565b34801561085657600080fd5b5061048d60165481565b34801561086c57600080fd5b5061058d61087b366004612d11565b611328565b34801561088c57600080fd5b5061048d600f5481565b3480156108a257600080fd5b5061048d6108b1366004612d46565b6001600160a01b031660009081526002602052604090205490565b3480156108d857600080fd5b5061058d611394565b3480156108ed57600080fd5b5061048d60155481565b34801561090357600080fd5b5061048d601f5481565b34801561091957600080fd5b5061058d610928366004612c49565b6113a8565b34801561093957600080fd5b5061048d60265481565b34801561094f57600080fd5b5061048d60235481565b34801561096557600080fd5b5061048d60275481565b34801561097b57600080fd5b5061058d61098a366004612d63565b61141f565b34801561099b57600080fd5b5061058d6114b1565b3480156109b057600080fd5b5061058d6109bf366004612da4565b6114ce565b3480156109d057600080fd5b5061048d600c5481565b3480156109e657600080fd5b50602f5461055d90610100900460ff1681565b348015610a0557600080fd5b506000546001600160a01b03166104ec565b348015610a2357600080fd5b5061058d610a32366004612c49565b611529565b348015610a4357600080fd5b5061048d60295481565b348015610a5957600080fd5b506040805180820190915260048152635349465960e01b6020820152610530565b348015610a8657600080fd5b5061048d60215481565b348015610a9c57600080fd5b50602b546104ec906001600160a01b031681565b348015610abc57600080fd5b5061055d610acb366004612c1d565b611536565b348015610adc57600080fd5b5061048d60115481565b348015610af257600080fd5b5061048d602d5481565b348015610b0857600080fd5b5061058d610b17366004612d11565b611543565b348015610b2857600080fd5b5061048d60285481565b348015610b3e57600080fd5b5061055d610b4d366004612d46565b6001600160a01b031660009081526004602052604090205460ff1690565b348015610b7757600080fd5b5061058d610b86366004612d11565b611576565b348015610b9757600080fd5b5061058d610ba6366004612d46565b6115a9565b348015610bb757600080fd5b5061058d610bc6366004612cf6565b6115d3565b348015610bd757600080fd5b5061048d601c5481565b348015610bed57600080fd5b5061058d6115ee565b348015610c0257600080fd5b5061058d610c11366004612cf6565b611675565b348015610c2257600080fd5b5061048d60195481565b348015610c3857600080fd5b5061048d60145481565b348015610c4e57600080fd5b5061048d610c5d366004612de6565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610c9457600080fd5b5061048d600b5481565b348015610caa57600080fd5b5061058d610cb9366004612d63565b6116c4565b348015610cca57600080fd5b5061048d60095481565b348015610ce057600080fd5b5061058d610cef366004612d46565b611725565b348015610d0057600080fd5b50610d36610d0f366004612e1f565b60246020526000908152604090208054600182015460028301546003909301549192909184565b604080519485526020850193909352918301526060820152608001610497565b348015610d6257600080fd5b5061048d600e5481565b348015610d7857600080fd5b50602a546104ec906001600160a01b031681565b348015610d9857600080fd5b5061048d602e5481565b348015610dae57600080fd5b5061048d60175481565b348015610dc457600080fd5b50602f5461055d9060ff1681565b348015610dde57600080fd5b5061055d610ded366004612d46565b60056020526000908152604090205460ff1681565b3360008181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e5d9086815260200190565b60405180910390a35060015b92915050565b610e7761179e565b60646001546002610e889190612e50565b610e929190612e67565b811015610ee65760405162461bcd60e51b815260206004820152601f60248201527f4d61782077616c6c65742063616e206e6f74206c657373207468616e2032250060448201526064015b60405180910390fd5b602e55565b604080516002808252606082018352600092839291906020830190803683375050602a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7d9190612e9f565b81600081518110610f9057610f90612ebc565b6001600160a01b0392831660209182029290920181019190915254825191169082906001908110610fc357610fc3612ebc565b6001600160a01b039283166020918202929092010152602a5460405163d06ca61f60e01b8152600092919091169063d06ca61f906110079087908690600401612f16565b600060405180830381865afa158015611024573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261104c9190810190612f2f565b90508060018151811061106157611061612ebc565b602002602001015192505050919050565b6001600160a01b03831660009081526003602090815260408083203384529091528120546000191461115e576001600160a01b038416600090815260036020908152604080832033845290915290205482111561110a5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420416c6c6f77616e636560501b6044820152606401610edd565b6001600160a01b0384166000908152600360209081526040808320338452909152902054611139908390612fed565b6001600160a01b03851660009081526003602090815260408083203384529091529020555b6111698484846117f8565b90505b9392505050565b61117b61179e565b602b8054911515600160a01b0260ff60a01b19909216919091179055565b6111a161179e565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6111d461179e565b601484905560158390556016829055601781905580826111f48587613000565b6111fe9190613000565b6112089190613000565b6018819055601e101561125d5760405162461bcd60e51b815260206004820152601f60248201527f466565732063616e206e6f7420626520677261746572207468616e20333025006044820152606401610edd565b50505050565b61126b61179e565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e6982600019610e02565b6112a361179e565b600e849055600f8390556011829055601081905580826112c38587613000565b6112cd9190613000565b6112d79190613000565b601255602f54610100900460ff168015611300575042601f54620151806112fe9190613000565b105b1561125d57600a601254111561125d5760405162461bcd60e51b8152600401610edd90613013565b61133061179e565b6001600160a01b038216600081815260046020908152604091829020805460ff19168515159081179091558251938452908301527f1b92447bfc74f86a82293c184341926a5888220bc498dde33efabf7c3d796d6991015b60405180910390a15050565b61139c61179e565b6113a66000611c37565b565b6113b061179e565b606460015460016113c19190612e50565b6113cb9190612e67565b81101561141a5760405162461bcd60e51b815260206004820152601f60248201527f4d61782077616c6c65742063616e206e6f74206c657373207468616e203125006044820152606401610edd565b602d55565b61142761179e565b6019849055601a839055601b829055601c81905580826114478587613000565b6114519190613000565b61145b9190613000565b601d556018546014101561125d5760405162461bcd60e51b815260206004820152601f60248201527f466565732063616e206e6f7420626520677261746572207468616e20323025006044820152606401610edd565b6114b961179e565b602f805461ff00191661010017905542601f55565b6114d661179e565b6000602460008760048111156114ee576114ee612c62565b60048111156114ff576114ff612c62565b81526020810191909152604001600020948555506001840192909255600283015560039091015550565b61153161179e565b602355565b600061116c3384846117f8565b61154b61179e565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b61157e61179e565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6115b161179e565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6115db61179e565b6013805460ff1916911515919091179055565b6115f661179e565b47806116445760405162461bcd60e51b815260206004820152601960248201527f4e6f20656e6f7567682045544820746f207472616e73666572000000000000006044820152606401610edd565b604051339082156108fc029083906000818181858888f19350505050158015611671573d6000803e3d6000fd5b5050565b61167d61179e565b602f805460ff19168215159081179091556040519081527f0d537fcb73bb9654441eb9bd03c28d4b833e5a2da1f53bf422424cb01bc80fc79060200160405180910390a150565b6116cc61179e565b6009849055600a839055600b829055600c81905580826116ec8587613000565b6116f69190613000565b6117009190613000565b600d819055600a101561125d5760405162461bcd60e51b8152600401610edd90613013565b61172d61179e565b6001600160a01b0381166117925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610edd565b61179b81611c37565b50565b6000546001600160a01b031633146113a65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610edd565b602f54600090610100900460ff16611865576001600160a01b03841660009081526005602052604090205460ff166118655760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b6044820152606401610edd565b602f5462010000900460ff161561188857611881848484611c87565b905061116c565b6001600160a01b03841660009081526007602052604090205460ff166118fa57602d548211156118fa5760405162461bcd60e51b815260206004820152601860248201527f4d6178207472616e73616374696f6e20657863656564656400000000000000006044820152606401610edd565b6001600160a01b03831660009081526006602052604090205460ff161580156119315750602b546001600160a01b03848116911614155b156119a157602e546001600160a01b03841660009081526002602052604090205461195d908490613000565b11156119a15760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610edd565b426023546021546119b29190613000565b1080156119c95750602054600160a81b900460ff16155b80156119dc5750602f54610100900460ff165b15611ad057602a54604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa158015611a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4f9190612e9f565b602b546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015611a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611abc9190613056565b9050611ac781610eeb565b60225550426021555b602f54610100900460ff1615611ae857611ae8611d8e565b611af0612289565b15611afd57611afd6122ee565b6001600160a01b038416600090815260026020526040902054821115611b5c5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610edd565b6001600160a01b038416600090815260026020526040902054611b80908390612fed565b6001600160a01b038516600090815260026020526040812091909155611ba685856123b0565b611bb05782611bbb565b611bbb858585612451565b6001600160a01b038516600090815260026020526040902054909150611be2908290613000565b6001600160a01b0380861660008181526002602052604090819020939093559151908716906000805160206130da83398151915290611c249085815260200190565b60405180910390a3506001949350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316600090815260026020526040812054821115611ce65760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742042616c616e636560601b6044820152606401610edd565b6001600160a01b038416600090815260026020526040902054611d0a908390612fed565b6001600160a01b038086166000908152600260205260408082209390935590851681522054611d3a908390613000565b6001600160a01b0380851660008181526002602052604090819020939093559151908616906000805160206130da83398151915290611d7c9086815260200190565b60405180910390a35060019392505050565b602a54604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa158015611dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfc9190612e9f565b602b546040516370a0823160e01b81526001600160a01b0391821660048201529116906370a0823190602401602060405180830381865afa158015611e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e699190613056565b90506000611e7682610eeb565b6000805260246020527fb7634ec2165a7280a285aac3ec10cf370eca86d8aa9d3243c90b2151434091ad549091508110801590611edd57506000805260246020527fb7634ec2165a7280a285aac3ec10cf370eca86d8aa9d3243c90b2151434091ae548111155b15611ef0576020805460ff60a01b191690555b600160005260246020527fbbbb3b1da0cb0951f34c5e9db4606f934b7367b5284f29163e9e6fe67e1e97d6548110801590611f565750600160005260246020527fbbbb3b1da0cb0951f34c5e9db4606f934b7367b5284f29163e9e6fe67e1e97d7548111155b15611f6f576020805460ff60a01b1916600160a01b1790555b600260005260246020527f47bb5529a97e2b401b32950f6360fbc9e3f4e70b887dc0f9b9ad1f7402ca11da548110801590611fd55750600260005260246020527f47bb5529a97e2b401b32950f6360fbc9e3f4e70b887dc0f9b9ad1f7402ca11db548111155b15611fee576020805460ff60a01b1916600160a11b1790555b600360005260246020527f8a6809e43cef135a96df89aa3c0800baae7c497913adf6156625c15a6f57cdf05481108015906120545750600360005260246020527f8a6809e43cef135a96df89aa3c0800baae7c497913adf6156625c15a6f57cdf1548111155b1561206d576020805460ff60a01b1916600360a01b1790555b600460005260246020527fe0059098054d65c76a17a4d86f8572395c4d366a1d067b0643b918330bac9e155481106120b3576020805460ff60a01b1916600160a21b1790555b806022541180156120ce5750602054600160a81b900460ff16155b15612217576000816022546120e39190612fed565b90506000602254826127106120f89190612e50565b6121029190612e67565b905060246000602060149054906101000a900460ff16600481111561212957612129612c62565b600481111561213a5761213a612c62565b815260200190815260200160002060020154811115612214576020805460ff60a81b1916600160a81b1790819055426025819055602855602684905561271090602490600090600160a01b900460ff16600481111561219b5761219b612c62565b60048111156121ac576121ac612c62565b815260200190815260200160002060030154846121c99190612e50565b6121d39190612e67565b6121dd9084613000565b6027556040518381527f1c436e00c3e6a4c9fe8c4b06b059a2cc9039fb62142b6512adfe4fe9c44758589060200160405180910390a15b50505b602054600160a81b900460ff168015612231575060275481115b15611671576020805460ff60a81b191681556000602581905560268190556027554260295560228290556040518281527f7a711ba0fefabae0255256a32733d1e8f7500ae03b42aca2a87876c9d38a2a309101611388565b602b546000906001600160a01b031633148015906122b05750602f5462010000900460ff16155b80156122be5750602f5460ff165b80156122cc57506000601254115b80156122e95750602c543060009081526002602052604090205410155b905090565b602f805462ff000019166201000017905530600090815260026020526040812054601254600e549192916123229084612e50565b61232c9190612e67565b9050600061233a8284612fed565b905080156123905761234b8161280b565b47801561238e576008546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561238c573d6000803e3d6000fd5b505b505b811561239f5761239f82612965565b5050602f805462ff00001916905550565b602b54600090600160a01b900460ff166123fd57602b546001600160a01b038481169116148015906123f05750602b546001600160a01b03838116911614155b156123fd57506000610e69565b6001600160a01b03831660009081526004602052604090205460ff168061243c57506001600160a01b03821660009081526004602052604090205460ff165b1561244957506000610e69565b506001610e69565b600080600080602060159054906101000a900460ff168015612475575060135460ff165b1561256c57602b546001600160a01b03878116911614801561249957506000601854115b1561250a576064601854866124ae9190612e50565b6124b89190612e67565b601454909350156124e0576018546014546124d39085612e50565b6124dd9190612e67565b91505b60175415612505576018546017546124f89085612e50565b6125029190612e67565b90505b612659565b601d5415612505576064601d54866125229190612e50565b61252c9190612e67565b6019549093501561255457601d546019546125479085612e50565b6125519190612e67565b91505b601c541561250557601854601c546124f89085612e50565b602b546001600160a01b03878116911614801561258b57506000601254115b156125ea576064601254866125a09190612e50565b6125aa9190612e67565b601154909350156125d2576012546011546125c59085612e50565b6125cf9190612e67565b91505b60105415612505576012546010546124f89085612e50565b600d5415612659576064600d54866126029190612e50565b61260c9190612e67565b600b549093501561263457600d54600b546126279085612e50565b6126319190612e67565b91505b600c541561265957600d54600c5461264c9085612e50565b6126569190612e67565b90505b81156126fd5761dead60005260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54612697908390613000565b61dead600081905260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc919091556040516001600160a01b038916906000805160206130da833981519152906126f49086815260200190565b60405180910390a35b801561277757601e546001600160a01b0316600090815260026020526040902054612729908290613000565b601e80546001600160a01b03908116600090815260026020908152604091829020949094559154915184815291811692908a16916000805160206130da833981519152910160405180910390a35b6127818183613000565b61278b9084612fed565b306000908152600260205260409020546127a59190613000565b306000818152600260205260409020919091556001600160a01b0388166000805160206130da8339815191526127db8486613000565b6127e59087612fed565b60405190815260200160405180910390a36128008386612fed565b979650505050505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061284057612840612ebc565b6001600160a01b03928316602091820292909201810191909152602a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612899573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128bd9190612e9f565b816001815181106128d0576128d0612ebc565b6001600160a01b039283166020918202929092010152602a546128f691309116846129e4565b602a5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061292f90859060009086903090429060040161306f565b600060405180830381600087803b15801561294957600080fd5b505af115801561295d573d6000803e3d6000fd5b505050505050565b6000612972600283612e67565b905060006129808284612fed565b90504761298c8361280b565b60006129988247612fed565b90506129a48382612b08565b60408051828152602081018590527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506910160405180910390a15050505050565b6001600160a01b038316612a465760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610edd565b6001600160a01b038216612aa75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610edd565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b602a54612b209030906001600160a01b0316846129e4565b602a5460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612b8e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612bb391906130ab565b5050505050565b600060208083528351808285015260005b81811015612be757858101830151858201604001528201612bcb565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461179b57600080fd5b60008060408385031215612c3057600080fd5b8235612c3b81612c08565b946020939093013593505050565b600060208284031215612c5b57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b6020810160058310612c9a57634e487b7160e01b600052602160045260246000fd5b91905290565b600080600060608486031215612cb557600080fd5b8335612cc081612c08565b92506020840135612cd081612c08565b929592945050506040919091013590565b80358015158114612cf157600080fd5b919050565b600060208284031215612d0857600080fd5b61116c82612ce1565b60008060408385031215612d2457600080fd5b8235612d2f81612c08565b9150612d3d60208401612ce1565b90509250929050565b600060208284031215612d5857600080fd5b813561116c81612c08565b60008060008060808587031215612d7957600080fd5b5050823594602084013594506040840135936060013592509050565b803560058110612cf157600080fd5b600080600080600060a08688031215612dbc57600080fd5b612dc586612d95565b97602087013597506040870135966060810135965060800135945092505050565b60008060408385031215612df957600080fd5b8235612e0481612c08565b91506020830135612e1481612c08565b809150509250929050565b600060208284031215612e3157600080fd5b61116c82612d95565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e6957610e69612e3a565b600082612e8457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600060208284031215612eb157600080fd5b815161116c81612c08565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015612f0b5781516001600160a01b031687529582019590820190600101612ee6565b509495945050505050565b8281526040602082015260006111696040830184612ed2565b60006020808385031215612f4257600080fd5b825167ffffffffffffffff80821115612f5a57600080fd5b818501915085601f830112612f6e57600080fd5b815181811115612f8057612f80612e89565b8060051b604051601f19603f83011681018181108582111715612fa557612fa5612e89565b604052918252848201925083810185019188831115612fc357600080fd5b938501935b82851015612fe157845184529385019392850192612fc8565b98975050505050505050565b81810381811115610e6957610e69612e3a565b80820180821115610e6957610e69612e3a565b60208082526023908201527f546f74616c20666565732063616e206e6f742067726561746572207468616e2060408201526231302560e81b606082015260800190565b60006020828403121561306857600080fd5b5051919050565b85815284602082015260a06040820152600061308e60a0830186612ed2565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156130c057600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e737d14f66d7dbefe0dfa361ae1a791b4ba9371627d9e7fa0f83117cdbb5931964736f6c63430008130033

Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.