ETH Price: $3,348.41 (-1.20%)

Token

TRICK OR TREAT (CANDY)
 

Overview

Max Total Supply

100,000,000 CANDY

Holders

31

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
teachmetolockinbro.eth
Balance
807,144.568923293799474583 CANDY

Value
$0.00
0x9447bB342Ec6dE70FeE68b8CdBccF5dDA35c2004
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:
Candy

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 2 : Candy.sol
/**
    Website:  https://www.candytoken.app/
    Twitter:  https://twitter.com/candyerc20
    Telegram: https://t.me/candyerc20
    Docs:     https://docs.candytoken.app
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.18;

import "../IERC20.sol";

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

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

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

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

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

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

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

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

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

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

        (bool success, bytes memory returndata) = target.call{value: weiValue}(
            data
        );
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

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

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

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

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

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

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

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

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

    function allPairs(uint) external view returns (address pair);

    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint);

    function price1CumulativeLast() external view returns (uint);

    function kLast() external view returns (uint);

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    function getAmountsIn(
        uint amountOut,
        address[] calldata path
    ) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);

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

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

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

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

interface IStaking {
    function deposit(address _address, uint amount) external;
}

contract Candy is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    // Stake
    IStaking public stake;

    // Burn Stats

    uint256 public totalBurned = 0;
    uint256 public totalBurnRewards = 0;

    uint256 public burnCapDivisor = 10; // Divisor for burn reward cap per tx
    uint256 public burnSub1EthCap = 100000000000000000; // cap in gwei if rewards < 1 Eth

    string private _name = "TRICK OR TREAT";
    string private _symbol = "CANDY";
    uint8 private _decimals = 18;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    address payable private devMarketingWallet;
    address public immutable deadAddress =
        0x000000000000000000000000000000000000dEaD;

    uint256 public _buyJackpotFees = 10;
    uint256 public _buyDevFees = 5;
    uint256 public _buyBurnFees = 10;

    uint256 public _sellJackpotFees = 10;
    uint256 public _sellDevFees = 5;
    uint256 public _sellBurnFees = 10;

    uint256 public _jackpotShares = 2;
    uint256 public _devShares = 1;
    uint256 public _burnShares = 2;
    uint256 public _totalDistributionShares = 5;

    uint256 public _totalTaxIfBuying = 25;
    uint256 public _totalTaxIfSelling = 25;
    uint public buyCount = 0;

    // Fees / MaxWallet / TxLimit exemption mappings

    mapping(address => bool) public checkExcludedFromFees;
    mapping(address => bool) public checkWalletLimitExcept;
    mapping(address => bool) public checkTxLimitExcept;
    mapping(address => bool) public checkMarketPair;

    // Supply / Max Tx tokenomics

    uint256 private _totalSupply = 100 * 10 ** 6 * 10 ** 18;
    uint256 public _maxTxAmount = 2 * 10 ** 6 * 10 ** 18;
    uint256 public _walletMax = 2 * 10 ** 6 * 10 ** 18;
    uint256 private minimumTokensBeforeSwap = 2 * 10 ** 5 * 10 ** 18;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    // Swap and liquify flags (for taxes)

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

    // events & modifiers

    event BurnedTokensForEth(
        address account,
        uint256 burnAmount,
        uint256 ethRecievedAmount
    );

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

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

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

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

    constructor(address _stakingAddress) {
        devMarketingWallet = payable(msg.sender);
        stake = IStaking(_stakingAddress);

        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        _approve(address(this), address(uniswapV2Router), _totalSupply);

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

        checkExcludedFromFees[owner()] = true;
        checkExcludedFromFees[address(this)] = true;
        checkExcludedFromFees[_stakingAddress] = true;

        _totalTaxIfBuying = _buyJackpotFees.add(_buyDevFees).add(_buyBurnFees);
        _totalTaxIfSelling = _sellJackpotFees.add(_sellDevFees).add(
            _sellBurnFees
        );
        _totalDistributionShares = _jackpotShares.add(_devShares).add(
            _burnShares
        );

        checkWalletLimitExcept[owner()] = true;
        checkWalletLimitExcept[address(uniswapPair)] = true;
        checkWalletLimitExcept[address(this)] = true;
        checkWalletLimitExcept[address(stake)] = true;

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

        checkMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;

        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

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

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

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

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

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

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

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

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    function approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        _approve(_msgSender(), 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 addMarketPair(address account) public onlyOwner {
        checkMarketPair[account] = true;
    }

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

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

    function setDistributionSettings(
        uint256 newLiquidityShare,
        uint256 newDevShare,
        uint256 newBurnShare
    ) external onlyOwner {
        _jackpotShares = newLiquidityShare;
        _devShares = newDevShare;
        _burnShares = newBurnShare;

        _totalDistributionShares = _jackpotShares.add(_devShares).add(
            _burnShares
        );
    }

    function adjustMaxTxAmount(uint256 maxTxAmount) external onlyOwner {
        require(
            maxTxAmount <= (100 * 10 ** 6 * 10 ** 18),
            "Max wallet should be less"
        );
        _maxTxAmount = maxTxAmount;
    }

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

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

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

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

    function setDevMarketingWallet(address newAddress) external onlyOwner {
        devMarketingWallet = payable(newAddress);
    }

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

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

    function openTrading() external onlyOwner {
        require(!enableTrading, "trading opened");
        addLiquidity(balanceOf(address(this)), address(this).balance);
        enableTrading = true;
    }

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

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

    // msg.sender burns tokens and recieve uniswap rate TAX FREE, instead of selling.
    function burnForEth(uint256 amount) public returns (bool) {
        require(balanceOf(_msgSender()) >= amount, "not enough funds to burn");

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uint[] memory a = uniswapV2Router.getAmountsOut(amount, path);

        uint256 cap;
        if (address(this).balance <= 1 ether) {
            cap = burnSub1EthCap;
        } else {
            cap = address(this).balance / burnCapDivisor;
        }

        require(a[a.length - 1] <= cap, "amount greater than cap");
        require(
            address(this).balance >= a[a.length - 1],
            "not enough funds in contract"
        );

        transferToAddressETH(_msgSender(), a[a.length - 1]);
        _burn(_msgSender(), amount);

        totalBurnRewards += a[a.length - 1];
        totalBurned += amount;

        emit BurnedTokensForEth(_msgSender(), amount, a[a.length - 1]);
        return true;
    }

    function transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if ((recipient == address(this)) && (enableTrading)) {
            recipient = address(stake);
            stake.deposit(sender, amount);
        }

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

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

            if (
                overMinimumTokenBalance &&
                !inSwapAndLiquify &&
                !checkMarketPair[sender] &&
                swapAndLiquifyEnabled
            ) {
                if (swapAndLiquifyByLimitOnly && enableTrading)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(
                    amount < contractTokenBalance
                        ? amount
                        : contractTokenBalance
                );
            }

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

            uint256 finalAmount = (checkExcludedFromFees[sender] ||
                checkExcludedFromFees[recipient])
                ? amount
                : takeFee(sender, recipient, amount);
            if (!enableTrading)
                finalAmount = takeFee(sender, recipient, amount);

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

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

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

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

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        if (!enableTrading) return;

        uint256 ethBalanceBeforeSwap = address(this).balance;

        swapTokensForEth(tAmount);
        uint256 amountReceived = address(this).balance.sub(
            ethBalanceBeforeSwap
        );

        uint256 amountETHJackpot = amountReceived.mul(_jackpotShares).div(
            _totalDistributionShares
        );
        uint256 amountETHDev = amountReceived.mul(_devShares).div(
            _totalDistributionShares
        );

        if (amountETHJackpot > 0)
            transferToAddressETH(payable(address(stake)), amountETHJackpot);

        if (amountETHDev > 0)
            transferToAddressETH(devMarketingWallet, amountETHDev);
    }

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

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

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

        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeAmount = 0;

        if (checkMarketPair[sender]) {
            feeAmount = amount.mul(buyCount > 20 ? 5 : _totalTaxIfBuying).div(
                100
            );
            buyCount = buyCount.add(1);
        } else if (checkMarketPair[recipient]) {
            feeAmount = amount.mul(buyCount > 20 ? 5 : _totalTaxIfSelling).div(
                100
            );
        }

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

        return amount.sub(feeAmount);
    }

    function getStats() public view returns (uint256, uint256, uint256) {
        return (totalBurned, totalBurnRewards, address(this).balance);
    }

    function swapBack() external onlyOwner {
        owner().call{value: address(this).balance}("");
    }

    receive() external payable {}

    fallback() external payable {}
}

File 2 of 2 : IERC20.sol
pragma solidity ^0.8.19;

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

Settings
{
  "remappings": [
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "lib/forge-std:ds-test/=lib/forge-std/lib/ds-test/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_stakingAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethRecievedAmount","type":"uint256"}],"name":"BurnedTokensForEth","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"_burnShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyBurnFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDevFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyJackpotFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_jackpotShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellBurnFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDevFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellJackpotFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"adjustMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnCapDivisor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnForEth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnSub1EthCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkTxLimitExcept","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkWalletLimitExcept","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStats","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDevMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newDevShare","type":"uint256"},{"internalType":"uint256","name":"newBurnShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setcheckExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setcheckTxLimitExcept","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setcheckWalletLimitExcept","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stake","outputs":[{"internalType":"contract IStaking","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurnRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60006003819055600455600a60055567016345785d8a000060065560e0604052600e60a09081526d15149250d2c813d488151491505560921b60c0526007906200004a90826200080f565b5060408051808201909152600581526443414e445960d81b60208201526008906200007690826200080f565b5060098054601260ff19909116811790915561dead608052600a600d8190556005600e819055600f829055601082905560118190559155600260138190556001601455601555601655601960178190556018819055600090556a52b7d2dcc80cd2e4000000601e556a01a784379d99db42000000601f819055602055692a5a058fc295ed0000006021556023805462ffffff60a81b19166201000160a81b1790553480156200012457600080fd5b50604051620033ed380380620033ed8339810160408190526200014791620008db565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c8054336001600160a01b0319918216179091556002805482166001600160a01b03841617905560228054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200020b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002319190620008db565b6001600160a01b031663c9c6539630602260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000294573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ba9190620008db565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000308573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032e9190620008db565b602380546001600160a01b0319166001600160a01b03928316179055602254601e546200035f9230921690620005d2565b601e54306000908152600b602090815260408083206022546001600160a01b03168452909152812091909155600190601a90620003a46000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152601a909352818320805485166001908117909155908516835291208054909216179055600f54600e54600d546200041a9291620004139190620006fe565b90620006fe565b601755601254601154601054620004389291620004139190620006fe565b601855601554601454601354620004569291620004139190620006fe565b6016556001601b6000620004726000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560235482168152601b9093528183208054851660019081179091553084528284208054861682179055600254909116835290822080549093168117909255601c90620004f46000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152601c84528281208054861660019081179091556023549092168152601d909352908220805490931617909155601e5490600a90620005603390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601e54604051620005c391815260200190565b60405180910390a35062000928565b6001600160a01b0383166200063a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166200069d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000631565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000806200070d838562000906565b905083811015620007615760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000631565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200079557607f821691505b602082108103620007b657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200080a57600081815260208120601f850160051c81016020861015620007e55750805b601f850160051c820191505b818110156200080657828155600101620007f1565b5050505b505050565b81516001600160401b038111156200082b576200082b6200076a565b62000843816200083c845462000780565b84620007bc565b602080601f8311600181146200087b5760008415620008625750858301515b600019600386901b1c1916600185901b17855562000806565b600085815260208120601f198616915b82811015620008ac578886015182559484019460019091019084016200088b565b5085821015620008cb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620008ee57600080fd5b81516001600160a01b03811681146200076157600080fd5b808201808211156200076457634e487b7160e01b600052601160045260246000fd5b608051612aa26200094b6000396000818161048e0152610c8f0152612aa26000f3fe6080604052600436106103815760003560e01c806382eefb43116101cf578063c59d484711610101578063e207a92b1161009a578063f872858a1161006c578063f872858a14610aad578063fabf706314610ace578063fb34a33614610afe578063fe47e0c914610b1457005b8063e207a92b14610a37578063f0cd1dac14610a57578063f1d5f51714610a6d578063f2fde38b14610a8d57005b8063ca703075116100d3578063ca703075146109a4578063d89135cd146109ba578063da00097d146109d0578063dd62ed3e146109f157005b8063c59d484714610910578063c78a789b1461093f578063c816841b1461096f578063c9567bf91461098f57005b8063a08e671f11610173578063a9059cbb11610145578063a9059cbb14610890578063af254b72146108b0578063c2d4640e146108d0578063c49b9a80146108f057005b8063a08e671f14610824578063a40dcda31461083a578063a457c2d714610850578063a5d69d1f1461087057005b80638e223341116101ac5780638e223341146107c45780638f03aad5146107da578063914eb66a146107fa57806395d89b411461080f57005b806382eefb431461076f5780638a8c523c146107855780638da5cb5b146107a657005b80633d98b9af116102b35780635e2524551161024c57806374e8414e1161021e57806374e8414e1461070d5780637b3a3ec61461072d5780637d1db4a514610743578063807c2d9c1461075957005b80635e2524551461068c578063667b511c146106a25780636ac5eeee146106c257806370a08231146106d757005b80634f1c2aa4116102855780634f1c2aa4146105f6578063526012e81461060c57806355324fa91461063c57806357e6adcb1461066c57005b80633d98b9af146105935780633f251688146105a95780634a728e24146105bf5780634a74bb02146105d557005b80632b112e491161032557806332cd6bcb116102f757806332cd6bcb1461051d57806339509351146105335780633a4b66f1146105535780633b97084a1461057357005b80632b112e49146104b05780632cdae5cb146104c5578063313ce567146104e557806331eca57e1461050757005b806318160ddd1161035e57806318160ddd1461041d57806323b872dd1461043c5780632563ae831461045c57806327c8f8351461047c57005b806306fdde031461038a578063095ea7b3146103b55780631694505e146103e557005b3661038857005b005b34801561039657600080fd5b5061039f610b2a565b6040516103ac9190612572565b60405180910390f35b3480156103c157600080fd5b506103d56103d03660046125d8565b610bbc565b60405190151581526020016103ac565b3480156103f157600080fd5b50602254610405906001600160a01b031681565b6040516001600160a01b0390911681526020016103ac565b34801561042957600080fd5b50601e545b6040519081526020016103ac565b34801561044857600080fd5b506103d5610457366004612604565b610bd3565b34801561046857600080fd5b5061038861047736600461265a565b610c3c565b34801561048857600080fd5b506104057f000000000000000000000000000000000000000000000000000000000000000081565b3480156104bc57600080fd5b5061042e610c8d565b3480156104d157600080fd5b506103886104e0366004612675565b610cd7565b3480156104f157600080fd5b5060095460405160ff90911681526020016103ac565b34801561051357600080fd5b5061042e60065481565b34801561052957600080fd5b5061042e600d5481565b34801561053f57600080fd5b506103d561054e3660046125d8565b610d2c565b34801561055f57600080fd5b50600254610405906001600160a01b031681565b34801561057f57600080fd5b5061038861058e3660046126aa565b610d62565b34801561059f57600080fd5b5061042e60125481565b3480156105b557600080fd5b5061042e60145481565b3480156105cb57600080fd5b5061042e600e5481565b3480156105e157600080fd5b506023546103d590600160a81b900460ff1681565b34801561060257600080fd5b5061042e60155481565b34801561061857600080fd5b506103d56106273660046126c3565b601b6020526000908152604090205460ff1681565b34801561064857600080fd5b506103d56106573660046126c3565b601d6020526000908152604090205460ff1681565b34801561067857600080fd5b50610388610687366004612675565b610d91565b34801561069857600080fd5b5061042e600f5481565b3480156106ae57600080fd5b506103886106bd366004612675565b610de6565b3480156106ce57600080fd5b50610388610e3b565b3480156106e357600080fd5b5061042e6106f23660046126c3565b6001600160a01b03166000908152600a602052604090205490565b34801561071957600080fd5b506103886107283660046126c3565b610ec5565b34801561073957600080fd5b5061042e60055481565b34801561074f57600080fd5b5061042e601f5481565b34801561076557600080fd5b5061042e60205481565b34801561077b57600080fd5b5061042e60185481565b34801561079157600080fd5b506023546103d590600160c01b900460ff1681565b3480156107b257600080fd5b506000546001600160a01b0316610405565b3480156107d057600080fd5b5061042e60135481565b3480156107e657600080fd5b506103886107f53660046126aa565b610f11565b34801561080657600080fd5b50610388610f9b565b34801561081b57600080fd5b5061039f61100f565b34801561083057600080fd5b5061042e60165481565b34801561084657600080fd5b5061042e60115481565b34801561085c57600080fd5b506103d561086b3660046125d8565b61101e565b34801561087c57600080fd5b5061038861088b36600461265a565b61106d565b34801561089c57600080fd5b506103d56108ab3660046125d8565b6110b5565b3480156108bc57600080fd5b506103d56108cb3660046126aa565b6110c2565b3480156108dc57600080fd5b506103886108eb3660046126e0565b611492565b3480156108fc57600080fd5b5061038861090b36600461265a565b6114e7565b34801561091c57600080fd5b5060035460045447604080519384526020840192909252908201526060016103ac565b34801561094b57600080fd5b506103d561095a3660046126c3565b601c6020526000908152604090205460ff1681565b34801561097b57600080fd5b50602354610405906001600160a01b031681565b34801561099b57600080fd5b50610388611569565b3480156109b057600080fd5b5061042e60195481565b3480156109c657600080fd5b5061042e60035481565b3480156109dc57600080fd5b506023546103d590600160b01b900460ff1681565b3480156109fd57600080fd5b5061042e610a0c36600461270c565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b348015610a4357600080fd5b50610388610a523660046126c3565b61160d565b348015610a6357600080fd5b5061042e60175481565b348015610a7957600080fd5b50610388610a883660046126aa565b61165b565b348015610a9957600080fd5b50610388610aa83660046126c3565b61168a565b348015610ab957600080fd5b506023546103d590600160b81b900460ff1681565b348015610ada57600080fd5b506103d5610ae93660046126c3565b601a6020526000908152604090205460ff1681565b348015610b0a57600080fd5b5061042e60045481565b348015610b2057600080fd5b5061042e60105481565b606060078054610b3990612745565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6590612745565b8015610bb25780601f10610b8757610100808354040283529160200191610bb2565b820191906000526020600020905b815481529060010190602001808311610b9557829003601f168201915b5050505050905090565b6000610bc9338484611774565b5060015b92915050565b6000610be0848484611899565b610c328433610c2d85604051806060016040528060288152602001612a00602891396001600160a01b038a166000908152600b602090815260408083203384529091529020549190611d20565b611774565b5060019392505050565b6000546001600160a01b03163314610c6f5760405162461bcd60e51b8152600401610c669061277f565b60405180910390fd5b60238054911515600160b81b0260ff60b81b19909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166000908152600a6020526040812054601e54610cd291611d5a565b905090565b6000546001600160a01b03163314610d015760405162461bcd60e51b8152600401610c669061277f565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b336000818152600b602090815260408083206001600160a01b03871684529091528120549091610bc9918590610c2d9086611da3565b6000546001600160a01b03163314610d8c5760405162461bcd60e51b8152600401610c669061277f565b602155565b6000546001600160a01b03163314610dbb5760405162461bcd60e51b8152600401610c669061277f565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e105760405162461bcd60e51b8152600401610c669061277f565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e655760405162461bcd60e51b8152600401610c669061277f565b6000546001600160a01b03166001600160a01b03164760405160006040518083038185875af1925050503d8060008114610ebb576040519150601f19603f3d011682016040523d82523d6000602084013e505050565b606091505b505050565b6000546001600160a01b03163314610eef5760405162461bcd60e51b8152600401610c669061277f565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f3b5760405162461bcd60e51b8152600401610c669061277f565b6a52b7d2dcc80cd2e4000000811115610f965760405162461bcd60e51b815260206004820152601960248201527f4d61782077616c6c65742073686f756c64206265206c657373000000000000006044820152606401610c66565b601f55565b6000546001600160a01b03163314610fc55760405162461bcd60e51b8152600401610c669061277f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060088054610b3990612745565b6000610bc93384610c2d85604051806060016040528060258152602001612a4860259139336000908152600b602090815260408083206001600160a01b038d1684529091529020549190611d20565b6000546001600160a01b031633146110975760405162461bcd60e51b8152600401610c669061277f565b60238054911515600160b01b0260ff60b01b19909216919091179055565b6000610bc9338484611899565b6000816110ce336106f2565b101561111c5760405162461bcd60e51b815260206004820152601860248201527f6e6f7420656e6f7567682066756e647320746f206275726e00000000000000006044820152606401610c66565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611151576111516127ca565b6001600160a01b03928316602091820292909201810191909152602254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce91906127e0565b816001815181106111e1576111e16127ca565b6001600160a01b03928316602091820292909201015260225460405163d06ca61f60e01b8152600092919091169063d06ca61f906112259087908690600401612841565b600060405180830381865afa158015611242573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261126a9190810190612862565b90506000670de0b6b3a764000047116112865750600654611296565b6005546112939047612936565b90505b8082600184516112a69190612958565b815181106112b6576112b66127ca565b6020026020010151111561130c5760405162461bcd60e51b815260206004820152601760248201527f616d6f756e742067726561746572207468616e206361700000000000000000006044820152606401610c66565b816001835161131b9190612958565b8151811061132b5761132b6127ca565b60200260200101514710156113825760405162461bcd60e51b815260206004820152601c60248201527f6e6f7420656e6f7567682066756e647320696e20636f6e7472616374000000006044820152606401610c66565b6113b23383600185516113959190612958565b815181106113a5576113a56127ca565b6020026020010151611e02565b6113bc3386611e38565b81600183516113cb9190612958565b815181106113db576113db6127ca565b6020026020010151600460008282546113f4919061296b565b92505081905550846003600082825461140d919061296b565b909155507f6ca5c7c2d43ebd8c6d3049382038bb2df58288440912f41fcd488a779ed943819050338684600186516114459190612958565b81518110611455576114556127ca565b602090810291909101810151604080516001600160a01b0390951685529184019290925282015260600160405180910390a1506001949350505050565b6000546001600160a01b031633146114bc5760405162461bcd60e51b8152600401610c669061277f565b6013839055601482905560158190556114df816114d98585611da3565b90611da3565b601655505050565b6000546001600160a01b031633146115115760405162461bcd60e51b8152600401610c669061277f565b60238054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061155e90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146115935760405162461bcd60e51b8152600401610c669061277f565b602354600160c01b900460ff16156115de5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99c81bdc195b995960921b6044820152606401610c66565b306000908152600a60205260409020546115f89047611f6c565b6023805460ff60c01b1916600160c01b179055565b6000546001600160a01b031633146116375760405162461bcd60e51b8152600401610c669061277f565b6001600160a01b03166000908152601d60205260409020805460ff19166001179055565b6000546001600160a01b031633146116855760405162461bcd60e51b8152600401610c669061277f565b602055565b6000546001600160a01b031633146116b45760405162461bcd60e51b8152600401610c669061277f565b6001600160a01b0381166117195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c66565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166117d65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c66565b6001600160a01b0382166118375760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c66565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166118fd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c66565b6001600160a01b03821661195f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c66565b6001600160a01b038216301480156119805750602354600160c01b900460ff165b156119ef576002546040516311f9fbc960e21b81526001600160a01b03858116600483015260248201849052909116925082906347e7ef2490604401600060405180830381600087803b1580156119d657600080fd5b505af11580156119ea573d6000803e3d6000fd5b505050505b602354600160a01b900460ff1615611a1257611a0c838383612041565b50505050565b6001600160a01b0383166000908152601c602052604090205460ff16158015611a5457506001600160a01b0382166000908152601c602052604090205460ff16155b15611abc57601f54811115611abc5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c66565b306000908152600a602052604090205460215481108015908190611aea5750602354600160a01b900460ff16155b8015611b0f57506001600160a01b0385166000908152601d602052604090205460ff16155b8015611b245750602354600160a81b900460ff165b15611b6c57602354600160b01b900460ff168015611b4b5750602354600160c01b900460ff165b15611b565760215491505b611b6c828410611b665782612115565b83612115565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600a9091529190912054611bbe918590611d20565b6001600160a01b0386166000908152600a6020908152604080832093909355601a90529081205460ff1680611c0b57506001600160a01b0385166000908152601a602052604090205460ff165b611c1f57611c1a8686866121e2565b611c21565b835b602354909150600160c01b900460ff16611c4357611c408686866121e2565b90505b602354600160b81b900460ff168015611c7557506001600160a01b0385166000908152601b602052604090205460ff16155b15611cab57602054611ca0826114d9886001600160a01b03166000908152600a602052604090205490565b1115611cab57600080fd5b6001600160a01b0385166000908152600a6020526040902054611cce9082611da3565b6001600160a01b038087166000818152600a60205260409081902093909355915190881690600080516020612a2883398151915290611d109085815260200190565b60405180910390a3505050505050565b60008184841115611d445760405162461bcd60e51b8152600401610c669190612572565b506000611d518486612958565b95945050505050565b6000611d9c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d20565b9392505050565b600080611db0838561296b565b905083811015611d9c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c66565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610ec0573d6000803e3d6000fd5b6001600160a01b038216611e985760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c66565b6001600160a01b0382166000908152600a602052604090205481811015611f0c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610c66565b6001600160a01b0383166000908152600a602052604081208383039055601e8054849290611f3b908490612958565b90915550506040518281526000906001600160a01b03851690600080516020612a288339815191529060200161188c565b602254611f849030906001600160a01b031684611774565b6022546001600160a01b031663f305d719823085600080611fad6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612015573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061203a919061297e565b5050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054612092918490611d20565b6001600160a01b038086166000908152600a602052604080822093909355908516815220546120c19083611da3565b6001600160a01b038085166000818152600a60205260409081902093909355915190861690600080516020612a28833981519152906121039086815260200190565b60405180910390a35060019392505050565b6023805460ff60a01b1916600160a01b1790819055600160c01b900460ff16156121d25747612143826122f2565b600061214f4783611d5a565b9050600061217460165461216e6013548561248590919063ffffffff16565b90612507565b9050600061219360165461216e6014548661248590919063ffffffff16565b905081156121b1576002546121b1906001600160a01b031683611e02565b80156121cd57600c546121cd906001600160a01b031682611e02565b505050505b506023805460ff60a01b19169055565b6001600160a01b0383166000908152601d6020526040812054819060ff161561224257612229606461216e60146019541161221f57601754612222565b60055b8690612485565b60195490915061223a906001611da3565b601955612280565b6001600160a01b0384166000908152601d602052604090205460ff16156122805761227d606461216e60146019541161221f57601854612222565b90505b80156122e857306000908152600a60205260409020546122a09082611da3565b306000818152600a6020526040908190209290925590516001600160a01b03871690600080516020612a28833981519152906122df9085815260200190565b60405180910390a35b611d518382611d5a565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612327576123276127ca565b6001600160a01b03928316602091820292909201810191909152602254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612380573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a491906127e0565b816001815181106123b7576123b76127ca565b6001600160a01b0392831660209182029290920101526022546123dd9130911684611774565b60225460405163791ac94760e01b81526001600160a01b039091169063791ac947906124169085906000908690309042906004016129ac565b600060405180830381600087803b15801561243057600080fd5b505af1158015612444573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612479929190612841565b60405180910390a15050565b60008260000361249757506000610bcd565b60006124a383856129e8565b9050826124b08583612936565b14611d9c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c66565b6000611d9c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836125655760405162461bcd60e51b8152600401610c669190612572565b506000611d518486612936565b600060208083528351808285015260005b8181101561259f57858101830151858201604001528201612583565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146125d557600080fd5b50565b600080604083850312156125eb57600080fd5b82356125f6816125c0565b946020939093013593505050565b60008060006060848603121561261957600080fd5b8335612624816125c0565b92506020840135612634816125c0565b929592945050506040919091013590565b8035801515811461265557600080fd5b919050565b60006020828403121561266c57600080fd5b611d9c82612645565b6000806040838503121561268857600080fd5b8235612693816125c0565b91506126a160208401612645565b90509250929050565b6000602082840312156126bc57600080fd5b5035919050565b6000602082840312156126d557600080fd5b8135611d9c816125c0565b6000806000606084860312156126f557600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561271f57600080fd5b823561272a816125c0565b9150602083013561273a816125c0565b809150509250929050565b600181811c9082168061275957607f821691505b60208210810361277957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156127f257600080fd5b8151611d9c816125c0565b600081518084526020808501945080840160005b838110156128365781516001600160a01b031687529582019590820190600101612811565b509495945050505050565b82815260406020820152600061285a60408301846127fd565b949350505050565b6000602080838503121561287557600080fd5b825167ffffffffffffffff8082111561288d57600080fd5b818501915085601f8301126128a157600080fd5b8151818111156128b3576128b36127b4565b8060051b604051601f19603f830116810181811085821117156128d8576128d86127b4565b6040529182528482019250838101850191888311156128f657600080fd5b938501935b82851015612914578451845293850193928501926128fb565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b60008261295357634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610bcd57610bcd612920565b80820180821115610bcd57610bcd612920565b60008060006060848603121561299357600080fd5b8351925060208401519150604084015190509250925092565b85815284602082015260a0604082015260006129cb60a08301866127fd565b6001600160a01b0394909416606083015250608001529392505050565b8082028115828204841417610bcd57610bcd61292056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cf929460cb3883fb65e7d159730a4b606547ed8a5f4dc67cfbe70f5274930bec64736f6c6343000813003300000000000000000000000044f737a29ee507d2c1c4604426eefa5f424a2d71

Deployed Bytecode

0x6080604052600436106103815760003560e01c806382eefb43116101cf578063c59d484711610101578063e207a92b1161009a578063f872858a1161006c578063f872858a14610aad578063fabf706314610ace578063fb34a33614610afe578063fe47e0c914610b1457005b8063e207a92b14610a37578063f0cd1dac14610a57578063f1d5f51714610a6d578063f2fde38b14610a8d57005b8063ca703075116100d3578063ca703075146109a4578063d89135cd146109ba578063da00097d146109d0578063dd62ed3e146109f157005b8063c59d484714610910578063c78a789b1461093f578063c816841b1461096f578063c9567bf91461098f57005b8063a08e671f11610173578063a9059cbb11610145578063a9059cbb14610890578063af254b72146108b0578063c2d4640e146108d0578063c49b9a80146108f057005b8063a08e671f14610824578063a40dcda31461083a578063a457c2d714610850578063a5d69d1f1461087057005b80638e223341116101ac5780638e223341146107c45780638f03aad5146107da578063914eb66a146107fa57806395d89b411461080f57005b806382eefb431461076f5780638a8c523c146107855780638da5cb5b146107a657005b80633d98b9af116102b35780635e2524551161024c57806374e8414e1161021e57806374e8414e1461070d5780637b3a3ec61461072d5780637d1db4a514610743578063807c2d9c1461075957005b80635e2524551461068c578063667b511c146106a25780636ac5eeee146106c257806370a08231146106d757005b80634f1c2aa4116102855780634f1c2aa4146105f6578063526012e81461060c57806355324fa91461063c57806357e6adcb1461066c57005b80633d98b9af146105935780633f251688146105a95780634a728e24146105bf5780634a74bb02146105d557005b80632b112e491161032557806332cd6bcb116102f757806332cd6bcb1461051d57806339509351146105335780633a4b66f1146105535780633b97084a1461057357005b80632b112e49146104b05780632cdae5cb146104c5578063313ce567146104e557806331eca57e1461050757005b806318160ddd1161035e57806318160ddd1461041d57806323b872dd1461043c5780632563ae831461045c57806327c8f8351461047c57005b806306fdde031461038a578063095ea7b3146103b55780631694505e146103e557005b3661038857005b005b34801561039657600080fd5b5061039f610b2a565b6040516103ac9190612572565b60405180910390f35b3480156103c157600080fd5b506103d56103d03660046125d8565b610bbc565b60405190151581526020016103ac565b3480156103f157600080fd5b50602254610405906001600160a01b031681565b6040516001600160a01b0390911681526020016103ac565b34801561042957600080fd5b50601e545b6040519081526020016103ac565b34801561044857600080fd5b506103d5610457366004612604565b610bd3565b34801561046857600080fd5b5061038861047736600461265a565b610c3c565b34801561048857600080fd5b506104057f000000000000000000000000000000000000000000000000000000000000dead81565b3480156104bc57600080fd5b5061042e610c8d565b3480156104d157600080fd5b506103886104e0366004612675565b610cd7565b3480156104f157600080fd5b5060095460405160ff90911681526020016103ac565b34801561051357600080fd5b5061042e60065481565b34801561052957600080fd5b5061042e600d5481565b34801561053f57600080fd5b506103d561054e3660046125d8565b610d2c565b34801561055f57600080fd5b50600254610405906001600160a01b031681565b34801561057f57600080fd5b5061038861058e3660046126aa565b610d62565b34801561059f57600080fd5b5061042e60125481565b3480156105b557600080fd5b5061042e60145481565b3480156105cb57600080fd5b5061042e600e5481565b3480156105e157600080fd5b506023546103d590600160a81b900460ff1681565b34801561060257600080fd5b5061042e60155481565b34801561061857600080fd5b506103d56106273660046126c3565b601b6020526000908152604090205460ff1681565b34801561064857600080fd5b506103d56106573660046126c3565b601d6020526000908152604090205460ff1681565b34801561067857600080fd5b50610388610687366004612675565b610d91565b34801561069857600080fd5b5061042e600f5481565b3480156106ae57600080fd5b506103886106bd366004612675565b610de6565b3480156106ce57600080fd5b50610388610e3b565b3480156106e357600080fd5b5061042e6106f23660046126c3565b6001600160a01b03166000908152600a602052604090205490565b34801561071957600080fd5b506103886107283660046126c3565b610ec5565b34801561073957600080fd5b5061042e60055481565b34801561074f57600080fd5b5061042e601f5481565b34801561076557600080fd5b5061042e60205481565b34801561077b57600080fd5b5061042e60185481565b34801561079157600080fd5b506023546103d590600160c01b900460ff1681565b3480156107b257600080fd5b506000546001600160a01b0316610405565b3480156107d057600080fd5b5061042e60135481565b3480156107e657600080fd5b506103886107f53660046126aa565b610f11565b34801561080657600080fd5b50610388610f9b565b34801561081b57600080fd5b5061039f61100f565b34801561083057600080fd5b5061042e60165481565b34801561084657600080fd5b5061042e60115481565b34801561085c57600080fd5b506103d561086b3660046125d8565b61101e565b34801561087c57600080fd5b5061038861088b36600461265a565b61106d565b34801561089c57600080fd5b506103d56108ab3660046125d8565b6110b5565b3480156108bc57600080fd5b506103d56108cb3660046126aa565b6110c2565b3480156108dc57600080fd5b506103886108eb3660046126e0565b611492565b3480156108fc57600080fd5b5061038861090b36600461265a565b6114e7565b34801561091c57600080fd5b5060035460045447604080519384526020840192909252908201526060016103ac565b34801561094b57600080fd5b506103d561095a3660046126c3565b601c6020526000908152604090205460ff1681565b34801561097b57600080fd5b50602354610405906001600160a01b031681565b34801561099b57600080fd5b50610388611569565b3480156109b057600080fd5b5061042e60195481565b3480156109c657600080fd5b5061042e60035481565b3480156109dc57600080fd5b506023546103d590600160b01b900460ff1681565b3480156109fd57600080fd5b5061042e610a0c36600461270c565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b348015610a4357600080fd5b50610388610a523660046126c3565b61160d565b348015610a6357600080fd5b5061042e60175481565b348015610a7957600080fd5b50610388610a883660046126aa565b61165b565b348015610a9957600080fd5b50610388610aa83660046126c3565b61168a565b348015610ab957600080fd5b506023546103d590600160b81b900460ff1681565b348015610ada57600080fd5b506103d5610ae93660046126c3565b601a6020526000908152604090205460ff1681565b348015610b0a57600080fd5b5061042e60045481565b348015610b2057600080fd5b5061042e60105481565b606060078054610b3990612745565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6590612745565b8015610bb25780601f10610b8757610100808354040283529160200191610bb2565b820191906000526020600020905b815481529060010190602001808311610b9557829003601f168201915b5050505050905090565b6000610bc9338484611774565b5060015b92915050565b6000610be0848484611899565b610c328433610c2d85604051806060016040528060288152602001612a00602891396001600160a01b038a166000908152600b602090815260408083203384529091529020549190611d20565b611774565b5060019392505050565b6000546001600160a01b03163314610c6f5760405162461bcd60e51b8152600401610c669061277f565b60405180910390fd5b60238054911515600160b81b0260ff60b81b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b03166000908152600a6020526040812054601e54610cd291611d5a565b905090565b6000546001600160a01b03163314610d015760405162461bcd60e51b8152600401610c669061277f565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b336000818152600b602090815260408083206001600160a01b03871684529091528120549091610bc9918590610c2d9086611da3565b6000546001600160a01b03163314610d8c5760405162461bcd60e51b8152600401610c669061277f565b602155565b6000546001600160a01b03163314610dbb5760405162461bcd60e51b8152600401610c669061277f565b6001600160a01b03919091166000908152601b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e105760405162461bcd60e51b8152600401610c669061277f565b6001600160a01b03919091166000908152601c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610e655760405162461bcd60e51b8152600401610c669061277f565b6000546001600160a01b03166001600160a01b03164760405160006040518083038185875af1925050503d8060008114610ebb576040519150601f19603f3d011682016040523d82523d6000602084013e505050565b606091505b505050565b6000546001600160a01b03163314610eef5760405162461bcd60e51b8152600401610c669061277f565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f3b5760405162461bcd60e51b8152600401610c669061277f565b6a52b7d2dcc80cd2e4000000811115610f965760405162461bcd60e51b815260206004820152601960248201527f4d61782077616c6c65742073686f756c64206265206c657373000000000000006044820152606401610c66565b601f55565b6000546001600160a01b03163314610fc55760405162461bcd60e51b8152600401610c669061277f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060088054610b3990612745565b6000610bc93384610c2d85604051806060016040528060258152602001612a4860259139336000908152600b602090815260408083206001600160a01b038d1684529091529020549190611d20565b6000546001600160a01b031633146110975760405162461bcd60e51b8152600401610c669061277f565b60238054911515600160b01b0260ff60b01b19909216919091179055565b6000610bc9338484611899565b6000816110ce336106f2565b101561111c5760405162461bcd60e51b815260206004820152601860248201527f6e6f7420656e6f7567682066756e647320746f206275726e00000000000000006044820152606401610c66565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611151576111516127ca565b6001600160a01b03928316602091820292909201810191909152602254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce91906127e0565b816001815181106111e1576111e16127ca565b6001600160a01b03928316602091820292909201015260225460405163d06ca61f60e01b8152600092919091169063d06ca61f906112259087908690600401612841565b600060405180830381865afa158015611242573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261126a9190810190612862565b90506000670de0b6b3a764000047116112865750600654611296565b6005546112939047612936565b90505b8082600184516112a69190612958565b815181106112b6576112b66127ca565b6020026020010151111561130c5760405162461bcd60e51b815260206004820152601760248201527f616d6f756e742067726561746572207468616e206361700000000000000000006044820152606401610c66565b816001835161131b9190612958565b8151811061132b5761132b6127ca565b60200260200101514710156113825760405162461bcd60e51b815260206004820152601c60248201527f6e6f7420656e6f7567682066756e647320696e20636f6e7472616374000000006044820152606401610c66565b6113b23383600185516113959190612958565b815181106113a5576113a56127ca565b6020026020010151611e02565b6113bc3386611e38565b81600183516113cb9190612958565b815181106113db576113db6127ca565b6020026020010151600460008282546113f4919061296b565b92505081905550846003600082825461140d919061296b565b909155507f6ca5c7c2d43ebd8c6d3049382038bb2df58288440912f41fcd488a779ed943819050338684600186516114459190612958565b81518110611455576114556127ca565b602090810291909101810151604080516001600160a01b0390951685529184019290925282015260600160405180910390a1506001949350505050565b6000546001600160a01b031633146114bc5760405162461bcd60e51b8152600401610c669061277f565b6013839055601482905560158190556114df816114d98585611da3565b90611da3565b601655505050565b6000546001600160a01b031633146115115760405162461bcd60e51b8152600401610c669061277f565b60238054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061155e90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146115935760405162461bcd60e51b8152600401610c669061277f565b602354600160c01b900460ff16156115de5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99c81bdc195b995960921b6044820152606401610c66565b306000908152600a60205260409020546115f89047611f6c565b6023805460ff60c01b1916600160c01b179055565b6000546001600160a01b031633146116375760405162461bcd60e51b8152600401610c669061277f565b6001600160a01b03166000908152601d60205260409020805460ff19166001179055565b6000546001600160a01b031633146116855760405162461bcd60e51b8152600401610c669061277f565b602055565b6000546001600160a01b031633146116b45760405162461bcd60e51b8152600401610c669061277f565b6001600160a01b0381166117195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c66565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166117d65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c66565b6001600160a01b0382166118375760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c66565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166118fd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c66565b6001600160a01b03821661195f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c66565b6001600160a01b038216301480156119805750602354600160c01b900460ff165b156119ef576002546040516311f9fbc960e21b81526001600160a01b03858116600483015260248201849052909116925082906347e7ef2490604401600060405180830381600087803b1580156119d657600080fd5b505af11580156119ea573d6000803e3d6000fd5b505050505b602354600160a01b900460ff1615611a1257611a0c838383612041565b50505050565b6001600160a01b0383166000908152601c602052604090205460ff16158015611a5457506001600160a01b0382166000908152601c602052604090205460ff16155b15611abc57601f54811115611abc5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c66565b306000908152600a602052604090205460215481108015908190611aea5750602354600160a01b900460ff16155b8015611b0f57506001600160a01b0385166000908152601d602052604090205460ff16155b8015611b245750602354600160a81b900460ff165b15611b6c57602354600160b01b900460ff168015611b4b5750602354600160c01b900460ff165b15611b565760215491505b611b6c828410611b665782612115565b83612115565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600a9091529190912054611bbe918590611d20565b6001600160a01b0386166000908152600a6020908152604080832093909355601a90529081205460ff1680611c0b57506001600160a01b0385166000908152601a602052604090205460ff165b611c1f57611c1a8686866121e2565b611c21565b835b602354909150600160c01b900460ff16611c4357611c408686866121e2565b90505b602354600160b81b900460ff168015611c7557506001600160a01b0385166000908152601b602052604090205460ff16155b15611cab57602054611ca0826114d9886001600160a01b03166000908152600a602052604090205490565b1115611cab57600080fd5b6001600160a01b0385166000908152600a6020526040902054611cce9082611da3565b6001600160a01b038087166000818152600a60205260409081902093909355915190881690600080516020612a2883398151915290611d109085815260200190565b60405180910390a3505050505050565b60008184841115611d445760405162461bcd60e51b8152600401610c669190612572565b506000611d518486612958565b95945050505050565b6000611d9c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d20565b9392505050565b600080611db0838561296b565b905083811015611d9c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c66565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610ec0573d6000803e3d6000fd5b6001600160a01b038216611e985760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610c66565b6001600160a01b0382166000908152600a602052604090205481811015611f0c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610c66565b6001600160a01b0383166000908152600a602052604081208383039055601e8054849290611f3b908490612958565b90915550506040518281526000906001600160a01b03851690600080516020612a288339815191529060200161188c565b602254611f849030906001600160a01b031684611774565b6022546001600160a01b031663f305d719823085600080611fad6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612015573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061203a919061297e565b5050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054612092918490611d20565b6001600160a01b038086166000908152600a602052604080822093909355908516815220546120c19083611da3565b6001600160a01b038085166000818152600a60205260409081902093909355915190861690600080516020612a28833981519152906121039086815260200190565b60405180910390a35060019392505050565b6023805460ff60a01b1916600160a01b1790819055600160c01b900460ff16156121d25747612143826122f2565b600061214f4783611d5a565b9050600061217460165461216e6013548561248590919063ffffffff16565b90612507565b9050600061219360165461216e6014548661248590919063ffffffff16565b905081156121b1576002546121b1906001600160a01b031683611e02565b80156121cd57600c546121cd906001600160a01b031682611e02565b505050505b506023805460ff60a01b19169055565b6001600160a01b0383166000908152601d6020526040812054819060ff161561224257612229606461216e60146019541161221f57601754612222565b60055b8690612485565b60195490915061223a906001611da3565b601955612280565b6001600160a01b0384166000908152601d602052604090205460ff16156122805761227d606461216e60146019541161221f57601854612222565b90505b80156122e857306000908152600a60205260409020546122a09082611da3565b306000818152600a6020526040908190209290925590516001600160a01b03871690600080516020612a28833981519152906122df9085815260200190565b60405180910390a35b611d518382611d5a565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612327576123276127ca565b6001600160a01b03928316602091820292909201810191909152602254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612380573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a491906127e0565b816001815181106123b7576123b76127ca565b6001600160a01b0392831660209182029290920101526022546123dd9130911684611774565b60225460405163791ac94760e01b81526001600160a01b039091169063791ac947906124169085906000908690309042906004016129ac565b600060405180830381600087803b15801561243057600080fd5b505af1158015612444573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612479929190612841565b60405180910390a15050565b60008260000361249757506000610bcd565b60006124a383856129e8565b9050826124b08583612936565b14611d9c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c66565b6000611d9c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836125655760405162461bcd60e51b8152600401610c669190612572565b506000611d518486612936565b600060208083528351808285015260005b8181101561259f57858101830151858201604001528201612583565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146125d557600080fd5b50565b600080604083850312156125eb57600080fd5b82356125f6816125c0565b946020939093013593505050565b60008060006060848603121561261957600080fd5b8335612624816125c0565b92506020840135612634816125c0565b929592945050506040919091013590565b8035801515811461265557600080fd5b919050565b60006020828403121561266c57600080fd5b611d9c82612645565b6000806040838503121561268857600080fd5b8235612693816125c0565b91506126a160208401612645565b90509250929050565b6000602082840312156126bc57600080fd5b5035919050565b6000602082840312156126d557600080fd5b8135611d9c816125c0565b6000806000606084860312156126f557600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561271f57600080fd5b823561272a816125c0565b9150602083013561273a816125c0565b809150509250929050565b600181811c9082168061275957607f821691505b60208210810361277957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156127f257600080fd5b8151611d9c816125c0565b600081518084526020808501945080840160005b838110156128365781516001600160a01b031687529582019590820190600101612811565b509495945050505050565b82815260406020820152600061285a60408301846127fd565b949350505050565b6000602080838503121561287557600080fd5b825167ffffffffffffffff8082111561288d57600080fd5b818501915085601f8301126128a157600080fd5b8151818111156128b3576128b36127b4565b8060051b604051601f19603f830116810181811085821117156128d8576128d86127b4565b6040529182528482019250838101850191888311156128f657600080fd5b938501935b82851015612914578451845293850193928501926128fb565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b60008261295357634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610bcd57610bcd612920565b80820180821115610bcd57610bcd612920565b60008060006060848603121561299357600080fd5b8351925060208401519150604084015190509250925092565b85815284602082015260a0604082015260006129cb60a08301866127fd565b6001600160a01b0394909416606083015250608001529392505050565b8082028115828204841417610bcd57610bcd61292056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cf929460cb3883fb65e7d159730a4b606547ed8a5f4dc67cfbe70f5274930bec64736f6c63430008130033

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

00000000000000000000000044f737a29ee507d2c1c4604426eefa5f424a2d71

-----Decoded View---------------
Arg [0] : _stakingAddress (address): 0x44F737A29eE507d2C1c4604426eeFa5F424A2d71

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000044f737a29ee507d2c1c4604426eefa5f424a2d71


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.