ETH Price: $3,879.49 (-1.14%)

Token

ERC-20: Dope (DOPE)
 

Overview

Max Total Supply

1,000,000,000 DOPE

Holders

150

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
defialloddssimp.eth
Balance
1,149,423.450833948509902251 DOPE

Value
$0.00
0x6CFE0f1Cfc110be97C4D5Cc838F26c8f5Ca08f17
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:
Dope

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : Dope.sol
/**
 * 
                               
dddddddddddddddddoodddddddd[ WE ARE ]dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoc:;:coddddd
ddddddddddddl:,'....';ldddddddddddddddddddddddddddddddddddddddddddddddddddddlc::::ccloooool:'.     .,ldddddddd
ddddddddddc'. .';::,.  .:odddddddddddddoolllooddddddddool:;,'''..'',;:lodl;.......   .....   .;ldo;. .cddddddd
ddddddddo;. 'cl;;xkldd,  .:oddddddddl:'..''''.':ldddl;.....''',''..    .'..;dkOOOkxolc:;;::ld0XXNWNo. .ldddddd
dddddddo, .od,..;'. ,kKx,  'ldddddl,..:ok000Odc'.,lo' ;odO0KKXXXKK0kdc'  ,kXXXXXXXXXXXXXXXXXXXXXXNM0' .cdddddd
ddddddd; .dOo' ':..;oOXX0l. .:ddo:..cOXXXXXXNWN0o..,..dNNXXXXXXKxd0XXX0,.dXXXXXXXXXXXXXXXXXXXXXXXWWd. .ldddddd
ddddddl. cKx, ,d,.,cxXXXXXx. .:o; .xXXXXXXXXXNWWNk,  .xNXXXXXXXx..oXXXXo.:KXXXXXXXXXXXXXXXXXXXXXNKo. .:ddddddd
ddddddc..xXXOokXo:loOXXXXXXk'  . .xXXXXXXXXXXXXNWNO, .xNXx::cldc .xNXXXKd,,codx0XXXXXKkdxkOOOkxo:.  'cdddddddd
ddddddl..xXXXXXXX0; 'xXXXXXNk.  .oXXXkd0XXXXXXXXWWNx. lKKx;'...  .:xOXXXWXd.   ;OXXXXO' ......  ..,coddddddddd
ddddddo' :KXXXXXXXx. .xXXXXNNd. .kXXXd''oKXXXXOll0WK: .lkXXXKKd. '...;oOWWX:   'OXXXXx. ..;' .:loooooddddddddd
dddddddl..oXXK0XXXK:  .kXXXNWK:  oXXXXO:.,kXOl. .kWNx. .lXXXXKc ;0Kxc..oNWK;  .oXXXXX0dox0N0'.,,......';lddddd
ddddddddc..xN0okXXXl   ;0XXXNWx. ,0XXXXKo..,..,o0NWW0,  ;KXXXx.'kXXXX00NWNd.  ;0XXXXXX00KX0o.  .,:cc:,. .,lddd
ddddddol:. .:::kXXXo   .dXXXNW0' .kNK0xo;.  .dKXXXWNK:  ,0XX0:,xXXXXXXNWXd.  .dXXXXXX0;.',..'cx0XXXXNNKo. .:dd
ddddl;..';codx0XXXXl .. lXXXNWK; .x0:...'c:..lKXXXNNK:  ,0XXX00XXXXXNWNk:.   'OXXXXXXx.  .;xKXXXXXXXXNWWO' .cd
ddo;..;x0XXXXXXXXX0; '. lXXXNW0, .xKdldOKXK: 'OXXXXX0,  ;KXXXXXXXX0kdl,. .;. ;KXXXXXXl..lOXXXXXXXXXXXXNWWd. ,o
do, .xXXXXXXXXXXXXx..'..xXXXNNx. 'OXXXXXXXX0xkKXXXXXx.  'OXXXXXXX0;  .',col. cXXXXXXX0k0XXXXXXXXKO0XXXNWWx. 'o
d; .xXXXXXXXXXXXXXd. . cKXXNNO,  cXXXXXXXXXXXXXXXXXK:    oXXXXXXNNo. ,odddl. lXXXXXXXXXXXXXXX0o:cd0XXXNWXl  ,d
o' ,0XXXXXXXXXXXXX0l,,o0XXXXk'   :KXXXXXXXXXXXXXXXXo.    'OXXXXXNWK,  :dddc. cXXXXXXXXXXXXX0l.'l0XXXXXNKl. .ld
o' .xXXXXXXXXXXXXXXXXXXXXXOc. .. .lKXXXXXXXXXXXXXXd. ..   ;0XXXXNWNc  'oddl. 'OXXXXXXXXXXKd'  :0XXXXKOo,  'ldd
dc. .o0XXXXXXXXXXXXXXXX0x:.  'co;  ,xKXXXXXXXXXX0c. ,oc,.  'xXXXNMX;  'oddd:  ,kKXXXXXXKd, .'...,;:;'.  .:oddd
ddc.  .,:ldxkOOOOOkxol;.   'coddo:.  ,lkO0000kd:. .;odddc.   ,lxOkc.  ;ddddo:. .,coddoc'  .cdoc;'....,;coddddd
dddo:,..     .....     ..;ldddddddo;.   .....   .,lddddddo:.         ,oddddddo:'.      .'codddddddoddddddddddd
dddddddol:;,''.....',;clddddddddddddoc;'.....',coddddddddddoc;,'..';coddddddddddoc::::codddddddddddddddddddddd
dddddddddddddddddddddddddddddddddddddddddooooddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
*----------------------- [ https://dopextreme.com ] ----- [https://t.me/dopextreme ] ------------------------*                                                                                  
                                                                                                                                                                                      
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.17;

library Address {
    /**
     *
     */
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        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"
        );

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

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

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

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

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

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

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

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

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

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

interface IUniswapFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

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

    function WETH() external pure returns (address);

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

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

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


}

contract Ownable is Context {
    address private _owner;

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

contract Dope is IERC20, Ownable {
    using Address for address;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Dope";
    string constant _symbol = "DOPE";
    uint8 constant _decimals = 18;

    uint256 _totalSupply = 1_000_000_000 * (10**_decimals);
    uint256  _maxBuyTxAmount = (_totalSupply ) / 50;
    uint256  _maxSellTxAmount = (_totalSupply ) / 100;
    uint256 _maxWallet = (_totalSupply) / 50;

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

    mapping(address => bool) public _isExcludedFromFees;
    mapping(address => bool) public _isExcludedFromMaxTx;
    mapping(address => bool) public _isExcludedFromMaxWallet;

    uint256 buyMarketingFee = 50;
    uint256 buyLiquidityFee = 20;
    uint256 buyTotalFee = buyMarketingFee + buyLiquidityFee;
    uint256 sellMarketingFee = 50;
    uint256 sellLiquidityFee = 20;
    uint256 sellTotalFee = sellMarketingFee + sellLiquidityFee;
    uint256 public swapThreshold = _totalSupply / 200;

    uint256 constant feeDenominator = 1000;

    address payable public liquidityFeeWallet =
        payable(0x050c5Ccd4c8C254E84f7Dd1d57a76f8AcDdC6dD9);
    address payable public marketingWallet =
        payable(0x050c5Ccd4c8C254E84f7Dd1d57a76f8AcDdC6dD9);

    IUniswapRouter public router;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ;

    mapping(address => bool) automatedMarketMakerPairs;

    address public pair;

    uint256 public launchedAt;
    uint256 public deadBlocks;
    bool tradingEnabled = false;
    bool buyFeeEnabled = true;
    bool sellFeeEnabled = true;
    bool public swapEnabled = false;
    bool inSwap;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    event UpdateFees(uint256 buyMarketingFee, uint256 buyLiquidityFee, uint256 sellMarketingFee, uint256 sellLiquidityFee);
    event UpdateFeeReceivers(address indexed newMarketingWallet, address newLiquditiyFeeWallet);
    event UpdateRouter(address indexed newRouterAddress);
    event UpdateMaxTx(uint256 newMaxBuyTxAmount, uint256 newMaxSellTxAmount);
    event UpdateMaxWallet(uint256 newMaxWallet);
    event UpdateAMM(address indexed newAutomatedMarketMaker, bool status);
    event UpdateSwapBackSettings(bool enabled, uint256 denominator);
    event UpdateExcludedFromFees(address indexed holder, bool exempt);
    event UpdateExcludedFromMaxWallet(address indexed holder, bool exempt);
    event UpdateExcludedFromMaxTx(address indexed holder, bool exempt);
    event FundsDistributed(
        uint256 marketingETH,
        uint256 liquidityETH,
        uint256 liquidityTokens
    );
    error InvalidTransfer(string erroString);
    error InvalidTransferAmount(string errorString);
    error InsufficientBalance();
    error InvalidSwapBackSettings(string errorString);
    error InvalidFees(string errorString);
    error InvalidMaxWallet(string errorString);
    error InvalidMaxTxAmount(string errorString);
    error InvalidOpenTrading();

    constructor() {
        router = IUniswapRouter(routerAddress);
        pair = IUniswapFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );

        automatedMarketMakerPairs[pair] = true;
        _allowances[owner()][routerAddress] = type(uint256).max;
        _allowances[address(this)][routerAddress] = type(uint256).max;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[pair] = true;
        _isExcludedFromMaxWallet[pair] = true;    
        _isExcludedFromMaxWallet[DEAD] = true;    
        _isExcludedFromMaxWallet[address(this)] = true;
        _isExcludedFromMaxTx[address(this)] = true;
        _isExcludedFromMaxTx[owner()] = true;
        _isExcludedFromMaxTx[routerAddress] = true;

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

    receive() external payable {}

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool){

        if(sender == address(0))
            revert InvalidTransfer("ERC20: transfer from 0x0");
        if( amount <= 0)
            revert InvalidTransferAmount("Amount must be more than 0");
        if(_balances[sender] < amount)
            revert InsufficientBalance();

        if(!inSwap){
               
            if(
                sender != owner() && !tradingEnabled
            )
                revert InvalidTransfer("Trading not open yet.");


            checkTxLimit(sender, recipient, amount);

            bool isSell = automatedMarketMakerPairs[recipient];
            bool isBuy = automatedMarketMakerPairs[sender]; 
            
            if(isBuy) {
                
                checkWalletLimit(recipient, amount); 
                if( !_isExcludedFromFees[recipient] && buyFeeEnabled){

                    uint256 feeAmount = (amount * getTotalFee(!isBuy)) / feeDenominator ;
                    amount -= feeAmount;
                    _balances[address(this)] += feeAmount;
                    emit Transfer(sender, address(this), feeAmount);
                }           
            }   
            else if (isSell)
            {
                
                if( !_isExcludedFromFees[sender] && sellFeeEnabled){
                    uint256 feeAmount = (amount * getTotalFee(isSell)) / feeDenominator ;
                    amount -= feeAmount;
                    _balances[address(this)] += feeAmount;
                    emit Transfer(sender, address(this), feeAmount);
                }

                if (shouldSwapBack(isSell)) {
                    swapBack();
                }

                return _basicTransfer(sender, recipient,amount);

            }
        
        // for buy and wallet-to-wallet transfers check max wallet
        checkWalletLimit(recipient, amount); 
        
        }
        return _basicTransfer(sender, recipient, amount);
    }


    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkWalletLimit(address recipient, uint256 amount) internal view {

        if (!_isExcludedFromMaxWallet[recipient]) {

            uint256 walletLimit = _maxWallet;
            if(
                _balances[recipient] + amount > walletLimit     
            )
                revert InvalidTransfer("Max Wallet exceeded");
        }

    }

    function checkTxLimit(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {

        if( !_isExcludedFromMaxTx[sender])
        {
            if(  
                amount > _maxBuyTxAmount &&
                automatedMarketMakerPairs[sender]
            )     
                revert InvalidTransfer("Buy TX Limit Exceeded");

            else if(
                amount > _maxSellTxAmount && 
                automatedMarketMakerPairs[recipient] 
            )
                revert InvalidTransfer( "Sell TX Litimt Exceeded");  
        }
    }
        
    
    function getTotalFee(bool isSell) public view returns (uint256) {
        if (launchedAt + deadBlocks >= block.number) {
            return feeDenominator - 1;
        }
        if(isSell)
            return sellTotalFee;

        return buyTotalFee;
    }


    function shouldSwapBack(bool isSell) internal view returns (bool) {
        return
            !automatedMarketMakerPairs[msg.sender] &&
            !inSwap &&
            swapEnabled &&
            isSell &&
            _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 amountToSwap = swapThreshold;
        if (_balances[address(this)] < amountToSwap)
            amountToSwap = _balances[address(this)];

        uint256 amountToLiquify = ((amountToSwap * sellLiquidityFee) / 2) /
            sellTotalFee;
        amountToSwap -= amountToLiquify;

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance - balanceBefore;
        uint256 totalETHFee = sellTotalFee - (sellLiquidityFee / 2);

        uint256 amountETHLiquidity = ((amountETH * sellLiquidityFee) / 2) /
            totalETHFee;
        uint256 amountETHMarketing = amountETH - amountETHLiquidity;

        if (amountETHMarketing > 0)
            marketingWallet.transfer(amountETHMarketing);

        if (amountToLiquify > 0) {
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityFeeWallet,
                block.timestamp
            );
        }

        emit FundsDistributed(
            amountETHMarketing,
            amountETHLiquidity,
            amountToLiquify
        );
    }

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

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

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

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

    function getOwner() external view returns (address) {
        return owner();
    }

    function getMaxTxs() external view returns (uint256 maxBuyTxAmount, uint256 maxSellTxAmount ) {
        return (_maxBuyTxAmount / (10**_decimals), _maxSellTxAmount / (10**_decimals)) ;
    }

    function getMaxWallet() external view returns (uint256) {
        return _maxWallet / (10**_decimals);
    }

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

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

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

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function sweep(uint256 amountPercentage, address adr)
        external
        onlyOwner
    {
        uint256 amountETH = address(this).balance;
        payable(adr).transfer((amountETH * amountPercentage) / 100);
    }

    function sweepTokens(uint256 amountPercentage, address trappedToken)
        external
        onlyOwner
    {
        IERC20 tokenIERC20 = IERC20(trappedToken);
        uint256 amountToken = (tokenIERC20.balanceOf(address(this)) * amountPercentage) / 100;
        tokenIERC20.transfer(marketingWallet, amountToken);    
    }

    function openTrading(
        uint256 _deadBlocks
    ) external onlyOwner {

        if(tradingEnabled || _deadBlocks > 10)
            revert InvalidOpenTrading();
        
        swapEnabled = true;
        deadBlocks = _deadBlocks;
        tradingEnabled = true;
        launchedAt = block.number;
    }

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

    function manualSwapBack() external onlyOwner(){
        swapBack();
    }
    

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

        return _transferFrom(sender, recipient, amount);
    }

    function addAutomatedMarketMaker(address lp, bool isPool) external onlyOwner {
        automatedMarketMakerPairs[lp] = isPool;
        if(isPool){
            _isExcludedFromFees[lp] = true;
        } 
        else{
            _isExcludedFromFees[lp] = false;
        }
        emit UpdateAMM(lp, isPool);
    }

    function setMaxTxAmount(
        uint256 divisorBuy,
        uint256 divisorSell
    ) external 
      onlyOwner 
    {
        if( divisorSell <= 0 || divisorBuy > 200 || divisorBuy <= 0 || divisorSell > 200)
            revert InvalidMaxTxAmount("Max Tx must be > 0.5% total supply");
        _maxBuyTxAmount = _totalSupply / divisorBuy;
        _maxSellTxAmount = _totalSupply / divisorSell;
        emit UpdateMaxTx(_maxBuyTxAmount, _maxSellTxAmount);

    }

    function setMaxWallet(uint256 divisor)
        external
        onlyOwner
    {
        if( divisor <= 0 || divisor > 200)
            revert InvalidMaxWallet("Max wallet must be > 0.5% total supply");
        _maxWallet = _totalSupply / divisor;
        emit UpdateMaxWallet(_maxWallet);
    }

    function setIsExcludedFromFees(address holder, bool exempt) external onlyOwner {
        _isExcludedFromFees[holder] = exempt;
        emit UpdateExcludedFromFees(holder, exempt);
    }

    function setIsExcludedFromMaxTx(address holder, bool exempt)
        external
        onlyOwner
    {
        _isExcludedFromMaxTx[holder] = exempt;
        emit UpdateExcludedFromMaxTx(holder, exempt);

    }

        function setIsExcludedFromMaxWallet(address holder, bool exempt)
        external
        onlyOwner
    {
        _isExcludedFromMaxWallet[holder] = exempt;
        emit UpdateExcludedFromMaxWallet(holder, exempt);
    }

    function setFees(
        uint256 _buyMarketingFee,
        uint256 _buyLiquidityFee,
        uint256 _sellMarketingFee,
        uint256 _sellLiquidityFee,
        bool _buyFeeEnabled,
        bool _sellFeeEnabled
    ) external onlyOwner {
        buyLiquidityFee = _buyLiquidityFee;
        buyMarketingFee = _buyMarketingFee;
        buyTotalFee = _buyMarketingFee + _buyLiquidityFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellMarketingFee = _buyMarketingFee;
        sellTotalFee = _sellMarketingFee + _sellLiquidityFee;
        buyFeeEnabled = _buyFeeEnabled;
        sellFeeEnabled = _sellFeeEnabled;
        if(buyTotalFee + sellTotalFee > 250 )
            revert InvalidFees("Total fees must be lower than 25");
        emit UpdateFees( buyMarketingFee, buyLiquidityFee, sellMarketingFee, sellLiquidityFee);
    }

    function setFeeReceivers(
        address _liquidityFeeWallet,
        address _marketingWallet
    ) external onlyOwner {
        liquidityFeeWallet = payable(_liquidityFeeWallet);
        marketingWallet = payable(_marketingWallet);
        emit UpdateFeeReceivers(liquidityFeeWallet, marketingWallet);
    }

    function setSwapBackSettings(
        bool _enabled,
        uint256 _denominator
    ) external onlyOwner {

        if( _denominator < 100 || _denominator > 10000)
            revert InvalidSwapBackSettings("Max threshod 1% , mininum 0.01%");
        swapEnabled = _enabled;
        swapThreshold = _totalSupply / _denominator;
    }

    function updateRouter( address newRouterAddress) external onlyOwner {
        router = IUniswapRouter(newRouterAddress);
        emit UpdateRouter(newRouterAddress);
    }

    function getCirculatingSupply() external view returns (uint256) {
        return _totalSupply - (balanceOf(DEAD) + balanceOf(ZERO));
    }

    function getFees() external view returns (
        uint256 _buyMarketingFee, 
        uint256 _buyLiquidityFee, 
        uint256 _sellMarketingFee, 
        uint256 _sellLiquidityFee, 
        uint256 _feeDenominator
    ) {
        return ( buyMarketingFee, buyLiquidityFee, 
                 sellMarketingFee, sellLiquidityFee,  
                 feeDenominator
                );
    }


}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InsufficientBalance","type":"error"},{"inputs":[{"internalType":"string","name":"errorString","type":"string"}],"name":"InvalidFees","type":"error"},{"inputs":[{"internalType":"string","name":"errorString","type":"string"}],"name":"InvalidMaxTxAmount","type":"error"},{"inputs":[{"internalType":"string","name":"errorString","type":"string"}],"name":"InvalidMaxWallet","type":"error"},{"inputs":[],"name":"InvalidOpenTrading","type":"error"},{"inputs":[{"internalType":"string","name":"errorString","type":"string"}],"name":"InvalidSwapBackSettings","type":"error"},{"inputs":[{"internalType":"string","name":"erroString","type":"string"}],"name":"InvalidTransfer","type":"error"},{"inputs":[{"internalType":"string","name":"errorString","type":"string"}],"name":"InvalidTransferAmount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketingETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityTokens","type":"uint256"}],"name":"FundsDistributed","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":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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAutomatedMarketMaker","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"UpdateAMM","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"exempt","type":"bool"}],"name":"UpdateExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"exempt","type":"bool"}],"name":"UpdateExcludedFromMaxTx","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"bool","name":"exempt","type":"bool"}],"name":"UpdateExcludedFromMaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newMarketingWallet","type":"address"},{"indexed":false,"internalType":"address","name":"newLiquditiyFeeWallet","type":"address"}],"name":"UpdateFeeReceivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyMarketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellMarketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"}],"name":"UpdateFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMaxBuyTxAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newMaxSellTxAmount","type":"uint256"}],"name":"UpdateMaxTx","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMaxWallet","type":"uint256"}],"name":"UpdateMaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"UpdateRouter","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"UpdateSwapBackSettings","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"lp","type":"address"},{"internalType":"bool","name":"isPool","type":"bool"}],"name":"addAutomatedMarketMaker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFees","outputs":[{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTxs","outputs":[{"internalType":"uint256","name":"maxBuyTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxSellTxAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"isSell","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFeeWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityFeeWallet","type":"address"},{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"},{"internalType":"bool","name":"_buyFeeEnabled","type":"bool"},{"internalType":"bool","name":"_sellFeeEnabled","type":"bool"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsExcludedFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsExcludedFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"divisorBuy","type":"uint256"},{"internalType":"uint256","name":"divisorSell","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"adr","type":"address"}],"name":"sweep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"},{"internalType":"address","name":"trappedToken","type":"address"}],"name":"sweepTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"updateRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b031990811661dead17909155600280549091169055620000326012600a620005a9565b6200004290633b9aca00620005c1565b6003556032600354620000569190620005db565b60045560646003546200006a9190620005db565b60055560326003546200007e9190620005db565b6006556032600c8190556014600d8190556200009a91620005fe565b600e556032600f81905560146010819055620000b691620005fe565b60115560c8600354620000ca9190620005db565b601255601380546001600160a01b031990811673050c5ccd4c8c254e84f7dd1d57a76f8acddc6dd990811790925560148054821690921790915560168054909116737a250d5630b4cf539739df2c5dacb4c659f2488d179055601b805463ffffffff1916620101001790553480156200014257600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601654601580546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000207919062000614565b6001600160a01b031663c9c65396601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000269573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028f919062000614565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620002dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000302919062000614565b601880546001600160a01b0319166001600160a01b039290921691821790556000908152601760205260408120805460ff1916600117905560001990600890620003546000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120601680548416835290855283822095909555308082526008855283822086548416835285528382206000199055815483168252600985528382208054600160ff1991821681179092558284528584208054821683179055601880548616855286852080548316841790555485168452600b8752858420805482168317905581548516845285842080548216831790559183528483208054831682179055600a86528483208054831682179055825484168352848320805483168217905595548316825283822080549091169095179094556003548454821685526007845282852081905584549251908152911692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36200063f565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004eb578160001904821115620004cf57620004cf62000494565b80851615620004dd57918102915b93841c9390800290620004af565b509250929050565b6000826200050457506001620005a3565b816200051357506000620005a3565b81600181146200052c5760028114620005375762000557565b6001915050620005a3565b60ff8411156200054b576200054b62000494565b50506001821b620005a3565b5060208310610133831016604e8410600b84101617156200057c575081810a620005a3565b620005888383620004aa565b80600019048211156200059f576200059f62000494565b0290505b92915050565b6000620005ba60ff841683620004f3565b9392505050565b8082028115828204841417620005a357620005a362000494565b600082620005f957634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620005a357620005a362000494565b6000602082840312156200062757600080fd5b81516001600160a01b0381168114620005ba57600080fd5b612449806200064f6000396000f3fe60806040526004361061026b5760003560e01c80639770393611610144578063d1d7d7ef116100b6578063e0bf7fd11161007a578063e0bf7fd1146107ae578063f1f3bca3146107de578063f2fde38b146107fe578063f887ea401461081e578063f951212e1461083e578063fabb0b4f1461085e57600080fd5b8063d1d7d7ef146106b7578063d2138a6d146106e7578063db8d55f114610707578063dd62ed3e14610748578063df20fd491461078e57600080fd5b8063aaa867a011610108578063aaa867a014610601578063adf1869314610621578063bf56b37114610641578063c851cc3214610657578063cbf9b84b14610677578063d16336491461069757600080fd5b806397703936146105615780639f5bf42514610581578063a4b45c00146105a1578063a8aa1b31146105c1578063a9059cbb146105e157600080fd5b8063571ac8b0116101dd57806370a08231116101a157806370a0823114610493578063715018a6146104c957806375f0a874146104de578063893d20e8146105165780638da5cb5b1461051657806395d89b411461053457600080fd5b8063571ac8b0146103fd5780635d0044ca1461041d57806365acb9a91461043d57806366eb37851461045d5780636ddd17131461047257600080fd5b8063129951b11161022f578063129951b11461034b57806318160ddd1461036d57806323b872dd146103825780632b112e49146103a2578063313ce567146103b75780633b9a30a1146103d357600080fd5b80630445b6671461027757806306fdde03146102a057806307866291146102d6578063095ea7b3146103165780630fa604e41461033657600080fd5b3661027257005b600080fd5b34801561028357600080fd5b5061028d60125481565b6040519081526020015b60405180910390f35b3480156102ac57600080fd5b50604080518082019091526004815263446f706560e01b60208201525b6040516102979190611f10565b3480156102e257600080fd5b506103066102f1366004611f76565b600a6020526000908152604090205460ff1681565b6040519015158152602001610297565b34801561032257600080fd5b50610306610331366004611f93565b610874565b34801561034257600080fd5b5061028d6108e1565b34801561035757600080fd5b5061036b610366366004611fcd565b610901565b005b34801561037957600080fd5b5060035461028d565b34801561038e57600080fd5b5061030661039d36600461202b565b610a3e565b3480156103ae57600080fd5b5061028d610ad3565b3480156103c357600080fd5b5060405160128152602001610297565b3480156103df57600080fd5b506103e8610b14565b60408051928352602083019190915201610297565b34801561040957600080fd5b50610306610418366004611f76565b610b51565b34801561042957600080fd5b5061036b61043836600461206c565b610b5f565b34801561044957600080fd5b5061036b610458366004612085565b610c3c565b34801561046957600080fd5b5061036b610d49565b34801561047e57600080fd5b50601b54610306906301000000900460ff1681565b34801561049f57600080fd5b5061028d6104ae366004611f76565b6001600160a01b031660009081526007602052604090205490565b3480156104d557600080fd5b5061036b610d7d565b3480156104ea57600080fd5b506014546104fe906001600160a01b031681565b6040516001600160a01b039091168152602001610297565b34801561052257600080fd5b506000546001600160a01b03166104fe565b34801561054057600080fd5b50604080518082019091526004815263444f504560e01b60208201526102c9565b34801561056d57600080fd5b506013546104fe906001600160a01b031681565b34801561058d57600080fd5b5061036b61059c3660046120a7565b610df1565b3480156105ad57600080fd5b5061036b6105bc3660046120d7565b610f21565b3480156105cd57600080fd5b506018546104fe906001600160a01b031681565b3480156105ed57600080fd5b506103066105fc366004611f93565b610fb3565b34801561060d57600080fd5b5061036b61061c366004612105565b610fc0565b34801561062d57600080fd5b5061036b61063c366004612105565b611042565b34801561064d57600080fd5b5061028d60195481565b34801561066357600080fd5b5061036b610672366004611f76565b6110c4565b34801561068357600080fd5b5061036b6106923660046120a7565b611138565b3480156106a357600080fd5b5061036b6106b236600461206c565b6111b4565b3480156106c357600080fd5b506103066106d2366004611f76565b600b6020526000908152604090205460ff1681565b3480156106f357600080fd5b5061036b610702366004612105565b61122d565b34801561071357600080fd5b50600c54600d54600f546010546040805194855260208501939093529183015260608201526103e8608082015260a001610297565b34801561075457600080fd5b5061028d6107633660046120d7565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561079a57600080fd5b5061036b6107a9366004612133565b6112af565b3480156107ba57600080fd5b506103066107c9366004611f76565b60096020526000908152604090205460ff1681565b3480156107ea57600080fd5b5061028d6107f9366004612151565b611363565b34801561080a57600080fd5b5061036b610819366004611f76565b61139e565b34801561082a57600080fd5b506015546104fe906001600160a01b031681565b34801561084a57600080fd5b5061036b610859366004612105565b611488565b34801561086a57600080fd5b5061028d601a5481565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108cf9086815260200190565b60405180910390a35060015b92915050565b60006108ef6012600a612268565b6006546108fc9190612277565b905090565b6000546001600160a01b031633146109345760405162461bcd60e51b815260040161092b90612299565b60405180910390fd5b600d859055600c86905561094885876122ce565b600e556010839055600f86905561095f83856122ce565b6011819055601b805462ffff0019166101008515150262ff00001916176201000084151502179055600e5460fa91610996916122ce565b11156109e55760405163344f058b60e11b815260206004820181905260248201527f546f74616c2066656573206d757374206265206c6f776572207468616e203235604482015260640161092b565b600c54600d54600f546010546040805194855260208501939093529183015260608201527f5c3aee3d65f7eb02cded951435d06b06ef307bc7f57b98975c4a41dc116e711c9060800160405180910390a1505050505050565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610abe576001600160a01b0384166000908152600860209081526040808320338452909152902054610a999083906122e1565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610ac9848484611565565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610b07916122ce565b6003546108fc91906122e1565b600080610b236012600a612268565b600454610b309190612277565b610b3c6012600a612268565b600554610b499190612277565b915091509091565b60006108db82600019610874565b6000546001600160a01b03163314610b895760405162461bcd60e51b815260040161092b90612299565b801580610b96575060c881115b15610bf357604051631f3ab60b60e31b815260206004820152602660248201527f4d61782077616c6c6574206d757374206265203e20302e352520746f74616c20604482015265737570706c7960d01b606482015260840161092b565b80600354610c019190612277565b60068190556040519081527fdd4ef051c4c49233ec73abfc2ee1514725d2a818fbcde46ee5d34a49034922f99060200160405180910390a150565b6000546001600160a01b03163314610c665760405162461bcd60e51b815260040161092b90612299565b801580610c73575060c882115b80610c7c575081155b80610c87575060c881115b15610ce0576040516316a844b960e31b815260206004820152602260248201527f4d6178205478206d757374206265203e20302e352520746f74616c20737570706044820152616c7960f01b606482015260840161092b565b81600354610cee9190612277565b600455600354610cff908290612277565b60058190556004546040517fa4a0c48c7ad1c3f2f625f4aa3fad8cc71425ca0146c7eb495b494886c8317e9092610d3d928252602082015260400190565b60405180910390a15050565b6000546001600160a01b03163314610d735760405162461bcd60e51b815260040161092b90612299565b610d7b6118f1565b565b6000546001600160a01b03163314610da75760405162461bcd60e51b815260040161092b90612299565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e1b5760405162461bcd60e51b815260040161092b90612299565b6040516370a0823160e01b8152306004820152819060009060649085906001600160a01b038516906370a0823190602401602060405180830381865afa158015610e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8d91906122f4565b610e97919061230d565b610ea19190612277565b60145460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925083169063a9059cbb906044016020604051808303816000875af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190612324565b5050505050565b6000546001600160a01b03163314610f4b5760405162461bcd60e51b815260040161092b90612299565b601380546001600160a01b038481166001600160a01b03199283168117909355601480549185169190921681179091556040519081527f3a8707a38eb82a54cc7e314a4f6a1b57f8728dea75f05950a9310f71f4068a57906020015b60405180910390a25050565b6000610acc338484611565565b6000546001600160a01b03163314610fea5760405162461bcd60e51b815260040161092b90612299565b6001600160a01b0382166000818152600b6020908152604091829020805460ff191685151590811790915591519182527f9f7d06cb9b03b01b6fb89199a37bd0825030434f6a9f909100d20dfeeb4770879101610fa7565b6000546001600160a01b0316331461106c5760405162461bcd60e51b815260040161092b90612299565b6001600160a01b038216600081815260096020908152604091829020805460ff191685151590811790915591519182527f16789932756b3e9ad3678ce73d5dccbe519b382cda6ac6ae21909510c316a2f39101610fa7565b6000546001600160a01b031633146110ee5760405162461bcd60e51b815260040161092b90612299565b601580546001600160a01b0319166001600160a01b0383169081179091556040517fd5f5b4d616f94f5e10b2955392470790b3fdde7c0c0b68bd1f3ea635e2caa8d790600090a250565b6000546001600160a01b031633146111625760405162461bcd60e51b815260040161092b90612299565b476001600160a01b0382166108fc606461117c868561230d565b6111869190612277565b6040518115909202916000818181858888f193505050501580156111ae573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146111de5760405162461bcd60e51b815260040161092b90612299565b601b5460ff16806111ef5750600a81115b1561120c57604051621ef9a960e21b815260040160405180910390fd5b601b8054601a9290925563ff0000ff19909116630100000117905543601955565b6000546001600160a01b031633146112575760405162461bcd60e51b815260040161092b90612299565b6001600160a01b0382166000818152600a6020908152604091829020805460ff191685151590811790915591519182527f65b985db66ed938ec9e38480d030ac6a175ffe7aaf389975ae0c333ca002d3539101610fa7565b6000546001600160a01b031633146112d95760405162461bcd60e51b815260040161092b90612299565b60648110806112e9575061271081115b15611337576040516310e59e8d60e11b815260206004820152601f60248201527f4d6178207468726573686f64203125202c206d696e696e756d20302e30312500604482015260640161092b565b601b805463ff000000191663010000008415150217905560035461135c908290612277565b6012555050565b600043601a5460195461137691906122ce565b10611388576108db60016103e86122e1565b811561139657505060115490565b5050600e5490565b6000546001600160a01b031633146113c85760405162461bcd60e51b815260040161092b90612299565b6001600160a01b03811661142d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161092b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114b25760405162461bcd60e51b815260040161092b90612299565b6001600160a01b0382166000908152601760205260409020805460ff19168215801591909117909155611507576001600160a01b0382166000908152600960205260409020805460ff19166001179055611528565b6001600160a01b0382166000908152600960205260409020805460ff191690555b816001600160a01b03167fb1e99c778afe37c48795fa4ca546217351f2f8f668639c904f7f3a1697dfd45e82604051610fa7911515815260200190565b60006001600160a01b0384166115be576040516341b02f3b60e01b815260206004820152601860248201527f45524332303a207472616e736665722066726f6d203078300000000000000000604482015260640161092b565b6000821161160f5760405163ecb60f7760e01b815260206004820152601a60248201527f416d6f756e74206d757374206265206d6f7265207468616e2030000000000000604482015260640161092b565b6001600160a01b03841660009081526007602052604090205482111561164857604051631e9acf1760e31b815260040160405180910390fd5b601b54640100000000900460ff166118e6576000546001600160a01b0385811691161480159061167b5750601b5460ff16155b156116c1576040516341b02f3b60e01b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b604482015260640161092b565b6116cc848484611c4e565b6001600160a01b0380841660009081526017602052604080822054928716825290205460ff918216911680156117da576117068585611d59565b6001600160a01b03851660009081526009602052604090205460ff161580156117365750601b54610100900460ff165b156117d55760006103e861174a8315611363565b611754908761230d565b61175e9190612277565b905061176a81866122e1565b3060009081526007602052604081208054929750839290919061178e9084906122ce565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505b6118d9565b81156118d9576001600160a01b03861660009081526009602052604090205460ff161580156118115750601b5462010000900460ff165b156118af5760006103e861182484611363565b61182e908761230d565b6118389190612277565b905061184481866122e1565b306000908152600760205260408120805492975083929091906118689084906122ce565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505b6118b882611deb565b156118c5576118c56118f1565b6118d0868686611e56565b92505050610acc565b6118e38585611d59565b50505b610ac9848484611e56565b601b805464ff000000001916640100000000179055601254306000908152600760205260409020548111156119325750306000908152600760205260409020545b6000601154600260105484611947919061230d565b6119519190612277565b61195b9190612277565b905061196781836122e1565b604080516002808252606082018352929450600092909160208301908036833701905050905030816000815181106119a1576119a1612341565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1e9190612357565b81600181518110611a3157611a31612341565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac94790611a7b908790600090879030904290600401612374565b600060405180830381600087803b158015611a9557600080fd5b505af1158015611aa9573d6000803e3d6000fd5b5050505060008147611abb91906122e1565b905060006002601054611ace9190612277565b601154611adb91906122e1565b9050600081600260105485611af0919061230d565b611afa9190612277565b611b049190612277565b90506000611b1282856122e1565b90508015611b56576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611b54573d6000803e3d6000fd5b505b8615611bf55760155460135460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af1158015611bcc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611bf191906123e5565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a15050601b805464ff0000000019169055505050505050565b6001600160a01b0383166000908152600a602052604090205460ff16611d545760045481118015611c9757506001600160a01b03831660009081526017602052604090205460ff165b15611cdd576040516341b02f3b60e01b8152602060048201526015602482015274109d5e48151608131a5b5a5d08115e18d959591959605a1b604482015260640161092b565b60055481118015611d0657506001600160a01b03821660009081526017602052604090205460ff165b15611d54576040516341b02f3b60e01b815260206004820152601760248201527f53656c6c205458204c6974696d74204578636565646564000000000000000000604482015260640161092b565b505050565b6001600160a01b0382166000908152600b602052604090205460ff16611de7576006546001600160a01b0383166000908152600760205260409020548190611da29084906122ce565b1115611d54576040516341b02f3b60e01b815260206004820152601360248201527213585e0815d85b1b195d08195e18d959591959606a1b604482015260640161092b565b5050565b3360009081526017602052604081205460ff16158015611e165750601b54640100000000900460ff16155b8015611e2b5750601b546301000000900460ff165b8015611e345750815b80156108db575060125430600090815260076020526040902054101592915050565b6001600160a01b038316600090815260076020526040812054611e7a9083906122e1565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611eaa9083906122ce565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611efe9086815260200190565b60405180910390a35060019392505050565b600060208083528351808285015260005b81811015611f3d57858101830151858201604001528201611f21565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611f7357600080fd5b50565b600060208284031215611f8857600080fd5b8135610acc81611f5e565b60008060408385031215611fa657600080fd5b8235611fb181611f5e565b946020939093013593505050565b8015158114611f7357600080fd5b60008060008060008060c08789031215611fe657600080fd5b86359550602087013594506040870135935060608701359250608087013561200d81611fbf565b915060a087013561201d81611fbf565b809150509295509295509295565b60008060006060848603121561204057600080fd5b833561204b81611f5e565b9250602084013561205b81611f5e565b929592945050506040919091013590565b60006020828403121561207e57600080fd5b5035919050565b6000806040838503121561209857600080fd5b50508035926020909101359150565b600080604083850312156120ba57600080fd5b8235915060208301356120cc81611f5e565b809150509250929050565b600080604083850312156120ea57600080fd5b82356120f581611f5e565b915060208301356120cc81611f5e565b6000806040838503121561211857600080fd5b823561212381611f5e565b915060208301356120cc81611fbf565b6000806040838503121561214657600080fd5b8235611fb181611fbf565b60006020828403121561216357600080fd5b8135610acc81611fbf565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156121bf5781600019048211156121a5576121a561216e565b808516156121b257918102915b93841c9390800290612189565b509250929050565b6000826121d6575060016108db565b816121e3575060006108db565b81600181146121f957600281146122035761221f565b60019150506108db565b60ff8411156122145761221461216e565b50506001821b6108db565b5060208310610133831016604e8410600b8410161715612242575081810a6108db565b61224c8383612184565b80600019048211156122605761226061216e565b029392505050565b6000610acc60ff8416836121c7565b60008261229457634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b808201808211156108db576108db61216e565b818103818111156108db576108db61216e565b60006020828403121561230657600080fd5b5051919050565b80820281158282048414176108db576108db61216e565b60006020828403121561233657600080fd5b8151610acc81611fbf565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561236957600080fd5b8151610acc81611f5e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123c45784516001600160a01b03168352938301939183019160010161239f565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156123fa57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122009d486cbfe1889548d2c69830a84150bde3403ed624ab8cc5ad49536acc6b48064736f6c63430008110033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c80639770393611610144578063d1d7d7ef116100b6578063e0bf7fd11161007a578063e0bf7fd1146107ae578063f1f3bca3146107de578063f2fde38b146107fe578063f887ea401461081e578063f951212e1461083e578063fabb0b4f1461085e57600080fd5b8063d1d7d7ef146106b7578063d2138a6d146106e7578063db8d55f114610707578063dd62ed3e14610748578063df20fd491461078e57600080fd5b8063aaa867a011610108578063aaa867a014610601578063adf1869314610621578063bf56b37114610641578063c851cc3214610657578063cbf9b84b14610677578063d16336491461069757600080fd5b806397703936146105615780639f5bf42514610581578063a4b45c00146105a1578063a8aa1b31146105c1578063a9059cbb146105e157600080fd5b8063571ac8b0116101dd57806370a08231116101a157806370a0823114610493578063715018a6146104c957806375f0a874146104de578063893d20e8146105165780638da5cb5b1461051657806395d89b411461053457600080fd5b8063571ac8b0146103fd5780635d0044ca1461041d57806365acb9a91461043d57806366eb37851461045d5780636ddd17131461047257600080fd5b8063129951b11161022f578063129951b11461034b57806318160ddd1461036d57806323b872dd146103825780632b112e49146103a2578063313ce567146103b75780633b9a30a1146103d357600080fd5b80630445b6671461027757806306fdde03146102a057806307866291146102d6578063095ea7b3146103165780630fa604e41461033657600080fd5b3661027257005b600080fd5b34801561028357600080fd5b5061028d60125481565b6040519081526020015b60405180910390f35b3480156102ac57600080fd5b50604080518082019091526004815263446f706560e01b60208201525b6040516102979190611f10565b3480156102e257600080fd5b506103066102f1366004611f76565b600a6020526000908152604090205460ff1681565b6040519015158152602001610297565b34801561032257600080fd5b50610306610331366004611f93565b610874565b34801561034257600080fd5b5061028d6108e1565b34801561035757600080fd5b5061036b610366366004611fcd565b610901565b005b34801561037957600080fd5b5060035461028d565b34801561038e57600080fd5b5061030661039d36600461202b565b610a3e565b3480156103ae57600080fd5b5061028d610ad3565b3480156103c357600080fd5b5060405160128152602001610297565b3480156103df57600080fd5b506103e8610b14565b60408051928352602083019190915201610297565b34801561040957600080fd5b50610306610418366004611f76565b610b51565b34801561042957600080fd5b5061036b61043836600461206c565b610b5f565b34801561044957600080fd5b5061036b610458366004612085565b610c3c565b34801561046957600080fd5b5061036b610d49565b34801561047e57600080fd5b50601b54610306906301000000900460ff1681565b34801561049f57600080fd5b5061028d6104ae366004611f76565b6001600160a01b031660009081526007602052604090205490565b3480156104d557600080fd5b5061036b610d7d565b3480156104ea57600080fd5b506014546104fe906001600160a01b031681565b6040516001600160a01b039091168152602001610297565b34801561052257600080fd5b506000546001600160a01b03166104fe565b34801561054057600080fd5b50604080518082019091526004815263444f504560e01b60208201526102c9565b34801561056d57600080fd5b506013546104fe906001600160a01b031681565b34801561058d57600080fd5b5061036b61059c3660046120a7565b610df1565b3480156105ad57600080fd5b5061036b6105bc3660046120d7565b610f21565b3480156105cd57600080fd5b506018546104fe906001600160a01b031681565b3480156105ed57600080fd5b506103066105fc366004611f93565b610fb3565b34801561060d57600080fd5b5061036b61061c366004612105565b610fc0565b34801561062d57600080fd5b5061036b61063c366004612105565b611042565b34801561064d57600080fd5b5061028d60195481565b34801561066357600080fd5b5061036b610672366004611f76565b6110c4565b34801561068357600080fd5b5061036b6106923660046120a7565b611138565b3480156106a357600080fd5b5061036b6106b236600461206c565b6111b4565b3480156106c357600080fd5b506103066106d2366004611f76565b600b6020526000908152604090205460ff1681565b3480156106f357600080fd5b5061036b610702366004612105565b61122d565b34801561071357600080fd5b50600c54600d54600f546010546040805194855260208501939093529183015260608201526103e8608082015260a001610297565b34801561075457600080fd5b5061028d6107633660046120d7565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561079a57600080fd5b5061036b6107a9366004612133565b6112af565b3480156107ba57600080fd5b506103066107c9366004611f76565b60096020526000908152604090205460ff1681565b3480156107ea57600080fd5b5061028d6107f9366004612151565b611363565b34801561080a57600080fd5b5061036b610819366004611f76565b61139e565b34801561082a57600080fd5b506015546104fe906001600160a01b031681565b34801561084a57600080fd5b5061036b610859366004612105565b611488565b34801561086a57600080fd5b5061028d601a5481565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108cf9086815260200190565b60405180910390a35060015b92915050565b60006108ef6012600a612268565b6006546108fc9190612277565b905090565b6000546001600160a01b031633146109345760405162461bcd60e51b815260040161092b90612299565b60405180910390fd5b600d859055600c86905561094885876122ce565b600e556010839055600f86905561095f83856122ce565b6011819055601b805462ffff0019166101008515150262ff00001916176201000084151502179055600e5460fa91610996916122ce565b11156109e55760405163344f058b60e11b815260206004820181905260248201527f546f74616c2066656573206d757374206265206c6f776572207468616e203235604482015260640161092b565b600c54600d54600f546010546040805194855260208501939093529183015260608201527f5c3aee3d65f7eb02cded951435d06b06ef307bc7f57b98975c4a41dc116e711c9060800160405180910390a1505050505050565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610abe576001600160a01b0384166000908152600860209081526040808320338452909152902054610a999083906122e1565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610ac9848484611565565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610b07916122ce565b6003546108fc91906122e1565b600080610b236012600a612268565b600454610b309190612277565b610b3c6012600a612268565b600554610b499190612277565b915091509091565b60006108db82600019610874565b6000546001600160a01b03163314610b895760405162461bcd60e51b815260040161092b90612299565b801580610b96575060c881115b15610bf357604051631f3ab60b60e31b815260206004820152602660248201527f4d61782077616c6c6574206d757374206265203e20302e352520746f74616c20604482015265737570706c7960d01b606482015260840161092b565b80600354610c019190612277565b60068190556040519081527fdd4ef051c4c49233ec73abfc2ee1514725d2a818fbcde46ee5d34a49034922f99060200160405180910390a150565b6000546001600160a01b03163314610c665760405162461bcd60e51b815260040161092b90612299565b801580610c73575060c882115b80610c7c575081155b80610c87575060c881115b15610ce0576040516316a844b960e31b815260206004820152602260248201527f4d6178205478206d757374206265203e20302e352520746f74616c20737570706044820152616c7960f01b606482015260840161092b565b81600354610cee9190612277565b600455600354610cff908290612277565b60058190556004546040517fa4a0c48c7ad1c3f2f625f4aa3fad8cc71425ca0146c7eb495b494886c8317e9092610d3d928252602082015260400190565b60405180910390a15050565b6000546001600160a01b03163314610d735760405162461bcd60e51b815260040161092b90612299565b610d7b6118f1565b565b6000546001600160a01b03163314610da75760405162461bcd60e51b815260040161092b90612299565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610e1b5760405162461bcd60e51b815260040161092b90612299565b6040516370a0823160e01b8152306004820152819060009060649085906001600160a01b038516906370a0823190602401602060405180830381865afa158015610e69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8d91906122f4565b610e97919061230d565b610ea19190612277565b60145460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925083169063a9059cbb906044016020604051808303816000875af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190612324565b5050505050565b6000546001600160a01b03163314610f4b5760405162461bcd60e51b815260040161092b90612299565b601380546001600160a01b038481166001600160a01b03199283168117909355601480549185169190921681179091556040519081527f3a8707a38eb82a54cc7e314a4f6a1b57f8728dea75f05950a9310f71f4068a57906020015b60405180910390a25050565b6000610acc338484611565565b6000546001600160a01b03163314610fea5760405162461bcd60e51b815260040161092b90612299565b6001600160a01b0382166000818152600b6020908152604091829020805460ff191685151590811790915591519182527f9f7d06cb9b03b01b6fb89199a37bd0825030434f6a9f909100d20dfeeb4770879101610fa7565b6000546001600160a01b0316331461106c5760405162461bcd60e51b815260040161092b90612299565b6001600160a01b038216600081815260096020908152604091829020805460ff191685151590811790915591519182527f16789932756b3e9ad3678ce73d5dccbe519b382cda6ac6ae21909510c316a2f39101610fa7565b6000546001600160a01b031633146110ee5760405162461bcd60e51b815260040161092b90612299565b601580546001600160a01b0319166001600160a01b0383169081179091556040517fd5f5b4d616f94f5e10b2955392470790b3fdde7c0c0b68bd1f3ea635e2caa8d790600090a250565b6000546001600160a01b031633146111625760405162461bcd60e51b815260040161092b90612299565b476001600160a01b0382166108fc606461117c868561230d565b6111869190612277565b6040518115909202916000818181858888f193505050501580156111ae573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146111de5760405162461bcd60e51b815260040161092b90612299565b601b5460ff16806111ef5750600a81115b1561120c57604051621ef9a960e21b815260040160405180910390fd5b601b8054601a9290925563ff0000ff19909116630100000117905543601955565b6000546001600160a01b031633146112575760405162461bcd60e51b815260040161092b90612299565b6001600160a01b0382166000818152600a6020908152604091829020805460ff191685151590811790915591519182527f65b985db66ed938ec9e38480d030ac6a175ffe7aaf389975ae0c333ca002d3539101610fa7565b6000546001600160a01b031633146112d95760405162461bcd60e51b815260040161092b90612299565b60648110806112e9575061271081115b15611337576040516310e59e8d60e11b815260206004820152601f60248201527f4d6178207468726573686f64203125202c206d696e696e756d20302e30312500604482015260640161092b565b601b805463ff000000191663010000008415150217905560035461135c908290612277565b6012555050565b600043601a5460195461137691906122ce565b10611388576108db60016103e86122e1565b811561139657505060115490565b5050600e5490565b6000546001600160a01b031633146113c85760405162461bcd60e51b815260040161092b90612299565b6001600160a01b03811661142d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161092b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114b25760405162461bcd60e51b815260040161092b90612299565b6001600160a01b0382166000908152601760205260409020805460ff19168215801591909117909155611507576001600160a01b0382166000908152600960205260409020805460ff19166001179055611528565b6001600160a01b0382166000908152600960205260409020805460ff191690555b816001600160a01b03167fb1e99c778afe37c48795fa4ca546217351f2f8f668639c904f7f3a1697dfd45e82604051610fa7911515815260200190565b60006001600160a01b0384166115be576040516341b02f3b60e01b815260206004820152601860248201527f45524332303a207472616e736665722066726f6d203078300000000000000000604482015260640161092b565b6000821161160f5760405163ecb60f7760e01b815260206004820152601a60248201527f416d6f756e74206d757374206265206d6f7265207468616e2030000000000000604482015260640161092b565b6001600160a01b03841660009081526007602052604090205482111561164857604051631e9acf1760e31b815260040160405180910390fd5b601b54640100000000900460ff166118e6576000546001600160a01b0385811691161480159061167b5750601b5460ff16155b156116c1576040516341b02f3b60e01b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b604482015260640161092b565b6116cc848484611c4e565b6001600160a01b0380841660009081526017602052604080822054928716825290205460ff918216911680156117da576117068585611d59565b6001600160a01b03851660009081526009602052604090205460ff161580156117365750601b54610100900460ff165b156117d55760006103e861174a8315611363565b611754908761230d565b61175e9190612277565b905061176a81866122e1565b3060009081526007602052604081208054929750839290919061178e9084906122ce565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505b6118d9565b81156118d9576001600160a01b03861660009081526009602052604090205460ff161580156118115750601b5462010000900460ff165b156118af5760006103e861182484611363565b61182e908761230d565b6118389190612277565b905061184481866122e1565b306000908152600760205260408120805492975083929091906118689084906122ce565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505b6118b882611deb565b156118c5576118c56118f1565b6118d0868686611e56565b92505050610acc565b6118e38585611d59565b50505b610ac9848484611e56565b601b805464ff000000001916640100000000179055601254306000908152600760205260409020548111156119325750306000908152600760205260409020545b6000601154600260105484611947919061230d565b6119519190612277565b61195b9190612277565b905061196781836122e1565b604080516002808252606082018352929450600092909160208301908036833701905050905030816000815181106119a1576119a1612341565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156119fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1e9190612357565b81600181518110611a3157611a31612341565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac94790611a7b908790600090879030904290600401612374565b600060405180830381600087803b158015611a9557600080fd5b505af1158015611aa9573d6000803e3d6000fd5b5050505060008147611abb91906122e1565b905060006002601054611ace9190612277565b601154611adb91906122e1565b9050600081600260105485611af0919061230d565b611afa9190612277565b611b049190612277565b90506000611b1282856122e1565b90508015611b56576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611b54573d6000803e3d6000fd5b505b8615611bf55760155460135460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c40160606040518083038185885af1158015611bcc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611bf191906123e5565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a15050601b805464ff0000000019169055505050505050565b6001600160a01b0383166000908152600a602052604090205460ff16611d545760045481118015611c9757506001600160a01b03831660009081526017602052604090205460ff165b15611cdd576040516341b02f3b60e01b8152602060048201526015602482015274109d5e48151608131a5b5a5d08115e18d959591959605a1b604482015260640161092b565b60055481118015611d0657506001600160a01b03821660009081526017602052604090205460ff165b15611d54576040516341b02f3b60e01b815260206004820152601760248201527f53656c6c205458204c6974696d74204578636565646564000000000000000000604482015260640161092b565b505050565b6001600160a01b0382166000908152600b602052604090205460ff16611de7576006546001600160a01b0383166000908152600760205260409020548190611da29084906122ce565b1115611d54576040516341b02f3b60e01b815260206004820152601360248201527213585e0815d85b1b195d08195e18d959591959606a1b604482015260640161092b565b5050565b3360009081526017602052604081205460ff16158015611e165750601b54640100000000900460ff16155b8015611e2b5750601b546301000000900460ff165b8015611e345750815b80156108db575060125430600090815260076020526040902054101592915050565b6001600160a01b038316600090815260076020526040812054611e7a9083906122e1565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611eaa9083906122ce565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611efe9086815260200190565b60405180910390a35060019392505050565b600060208083528351808285015260005b81811015611f3d57858101830151858201604001528201611f21565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611f7357600080fd5b50565b600060208284031215611f8857600080fd5b8135610acc81611f5e565b60008060408385031215611fa657600080fd5b8235611fb181611f5e565b946020939093013593505050565b8015158114611f7357600080fd5b60008060008060008060c08789031215611fe657600080fd5b86359550602087013594506040870135935060608701359250608087013561200d81611fbf565b915060a087013561201d81611fbf565b809150509295509295509295565b60008060006060848603121561204057600080fd5b833561204b81611f5e565b9250602084013561205b81611f5e565b929592945050506040919091013590565b60006020828403121561207e57600080fd5b5035919050565b6000806040838503121561209857600080fd5b50508035926020909101359150565b600080604083850312156120ba57600080fd5b8235915060208301356120cc81611f5e565b809150509250929050565b600080604083850312156120ea57600080fd5b82356120f581611f5e565b915060208301356120cc81611f5e565b6000806040838503121561211857600080fd5b823561212381611f5e565b915060208301356120cc81611fbf565b6000806040838503121561214657600080fd5b8235611fb181611fbf565b60006020828403121561216357600080fd5b8135610acc81611fbf565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156121bf5781600019048211156121a5576121a561216e565b808516156121b257918102915b93841c9390800290612189565b509250929050565b6000826121d6575060016108db565b816121e3575060006108db565b81600181146121f957600281146122035761221f565b60019150506108db565b60ff8411156122145761221461216e565b50506001821b6108db565b5060208310610133831016604e8410600b8410161715612242575081810a6108db565b61224c8383612184565b80600019048211156122605761226061216e565b029392505050565b6000610acc60ff8416836121c7565b60008261229457634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b808201808211156108db576108db61216e565b818103818111156108db576108db61216e565b60006020828403121561230657600080fd5b5051919050565b80820281158282048414176108db576108db61216e565b60006020828403121561233657600080fd5b8151610acc81611fbf565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561236957600080fd5b8151610acc81611f5e565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123c45784516001600160a01b03168352938301939183019160010161239f565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156123fa57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122009d486cbfe1889548d2c69830a84150bde3403ed624ab8cc5ad49536acc6b48064736f6c63430008110033

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.