ETH Price: $2,028.41 (+1.67%)
 

Overview

Max Total Supply

1,000,000,000 BELAL

Holders

6

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
Tweet3

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 1 : Tweet3.sol
// SPDX-License-Identifier: Unlicensed
/**
BELAL
*/

pragma solidity 0.8.26;

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

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

contract Ownable is Context {
    address public _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() external 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 IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    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 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 InterfaceLP {
    function sync() external;
}

contract Tweet3 is Ownable, ERC20 {

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;

    string constant _name = unicode"Belal";
    string constant _symbol = unicode"BELAL";
    uint8 constant _decimals = 9; 
  

    uint256 constant _totalSupply = 1000000000 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply / 50;
    uint256 public _maxWalletAmount = _totalSupply / 50;

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

    
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    uint256 public  buyFee        = 19;
    uint256 public  sellFee       = 23;

    uint256 constant transferFee  = 0;
    
    uint256 private lastSwap;
    address private marketingFeeReceiver;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address immutable public pair;
    
    bool public TradingOpen = false;    

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 100; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    event maxLimitsRemoved(uint256 indexed maxWalletToken, uint256 indexed maxTxAmount);
    event exemptFees(address indexed holder, bool indexed exempt);
    event exemptTxLimit(address indexed holder, bool indexed exempt);
    event buyFeeUpdated(uint256 indexed buyFee);
    event sellFeeUpdated(uint256 indexed sellFee);
    event feesWalletUpdated(address indexed marketingFeeReceiver);
    event tradingEnabled(bool indexed enabled, uint256 indexed startTime);
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = 0x841d036E9d1FaD13eea87c5ca5d01b36d8A89a09;

        isFeeExempt[msg.sender] = true; 
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[address(this)] = true;
        

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

    }

    receive() external payable { }

    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) {return owner();}
    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) {
        require(spender != address(0), "Spender is the zero address");
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        require(recipient != address(0), "Recipient is the zero address");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(sender != address(0), "Sender is the zero address");
        require(recipient != address(0), "Recipient is the zero address");
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max){
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _allowances[sender][_msgSender()] = currentAllowance - amount;
            }
        }

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

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(sender != owner()){
            require(TradingOpen,"Trading not open yet");
        
        }
        
        checkTxLimit(sender, amount);
        
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        if (sender != owner() && (recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient])){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amountReceived) <= _maxWalletAmount,"Total Holding is currently limited, you can not buy that much.");}

        if(
            lastSwap != block.number &&
            _balances[address(this)] >= swapThreshold &&
            swapEnabled &&
            !inSwap &&
            recipient == pair
        ){ 
            swapBack();
            lastSwap = block.number;
        }

        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "Tx Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

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

        if(recipient == pair) {
            feeAmount = (amount * sellFee) / 100;
        } else if(sender == pair) {
            feeAmount = (amount * buyFee) / 100;
        }else{
            feeAmount = 0;
        }

        if(feeAmount > 0) {
            _balances[address(this)] += feeAmount;
            emit Transfer(sender, address(this), feeAmount);    
            notFeeAmount = amount - feeAmount;
        } else {
            notFeeAmount = amount;
        }
        return notFeeAmount;
    }

    function setFeeExempt(address wallet, bool exempt) external onlyOwner {
    require(wallet != address(0), "Invalid address");
    isFeeExempt[wallet] = exempt;
    emit exemptFees(wallet, exempt);
    }

    function removeMaxLimits() external onlyOwner { 
        _maxWalletAmount = _totalSupply;
        _maxTxAmount = _totalSupply;
        emit maxLimitsRemoved(_maxWalletAmount, _maxTxAmount);
    }

    function enableTrading() external onlyOwner {
        require(!TradingOpen,"Trading already Enabled.");
        TradingOpen = true;
        lastSwap = block.number;
        emit tradingEnabled(TradingOpen, lastSwap);
    }

    function swapBack() internal swapping {
        uint256 amountToSwap = swapThreshold;

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

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

        uint256 totalETHFee = address(this).balance;
        
        (bool tmpSuccess1,) = payable(marketingFeeReceiver).call{value: totalETHFee}("");
        require(tmpSuccess1, "Failed to send ether to Marketing Fee Receiver.");

    }

    function exemptAll(address holder, bool exempt) external onlyOwner {
        require(holder != address(0), "Holder is the zero address");
        isFeeExempt[holder] = exempt;
        isTxLimitExempt[holder] = exempt;
        emit exemptFees(holder, exempt);
    }

    function setTxLimitExempt(address holder, bool exempt) external onlyOwner {
        require(holder != address(0), "Holder is the zero address");
        isTxLimitExempt[holder] = exempt;
        emit exemptTxLimit(holder, exempt);
    }


    function updateBuyFee(uint256 _buyFee) external onlyOwner {
        require( _buyFee <= 5, "Fees can not be more than 5%"); 
        buyFee =_buyFee;
        emit buyFeeUpdated(buyFee);
    }

    function updateSellFee(uint256 _sellFee) external onlyOwner {
        require(_sellFee <= 99, "Fees can not be more than 99%"); 
        sellFee =_sellFee;
        emit sellFeeUpdated(_sellFee);
    }

    function updatefeeWallet( address _marketingFeeReceiver) external onlyOwner {
        require(_marketingFeeReceiver != address(0) , "Marketing fee receiver cannot be zero address");
        marketingFeeReceiver = _marketingFeeReceiver;
        emit feesWalletUpdated(marketingFeeReceiver);
    }


    function isDeployer(address wallet) public view returns (bool) {
        return wallet == marketingFeeReceiver;
    }

    uint256 public burnCounter;
    function triggerBurnCounter() public {
        burnCounter++;
    }

}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[],"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":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":"uint256","name":"buyFee","type":"uint256"}],"name":"buyFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptTxLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"marketingFeeReceiver","type":"address"}],"name":"feesWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxWalletToken","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"maxLimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"sellFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":true,"internalType":"uint256","name":"startTime","type":"uint256"}],"name":"tradingEnabled","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"approveAll","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":"burnCounter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isDeployer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTxLimitExempt","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"triggerBurnCounter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"updatefeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405260326100126009600a61049d565b61002090633b9aca006104b3565b61002a91906104ca565b600155603261003b6009600a61049d565b61004990633b9aca006104b3565b61005391906104ca565b60025560136007556017600855600c805461ffff60a01b1916600160a81b17905560646100826009600a61049d565b61009090633b9aca006104b3565b61009a91906104ca565b600d553480156100a957600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801561014f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017391906104ec565b6001600160a01b03908116608052600b546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156101c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e791906104ec565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af1158015610238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025c91906104ec565b6001600160a01b0390811660a0819052600c80546001600160a01b03199081168317909155306000818152600460209081526040808320600b548816845282528083206000199055600a805490951673841d036e9d1fad13eea87c5ca5d01b36d8a89a0917855533835260058252808320805460ff19908116600190811790925560069093528184208054841682179055958352808320805483168717905584549096168252858220805482168617905591815293909320805490931690911790915561032b9060099061049d565b61033990633b9aca006104b3565b33600081815260036020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61037a6009600a61049d565b61038890633b9aca006104b3565b60405190815260200160405180910390a3610515565b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156103ef578085048111156103d3576103d361039e565b60018416156103e157908102905b60019390931c9280026103b8565b935093915050565b60008261040657506001610497565b8161041357506000610497565b816001811461042957600281146104335761044f565b6001915050610497565b60ff8411156104445761044461039e565b50506001821b610497565b5060208310610133831016604e8410600b8410161715610472575081810a610497565b61047f60001984846103b4565b80600019048211156104935761049361039e565b0290505b92915050565b60006104ac60ff8416836103f7565b9392505050565b80820281158282048414176104975761049761039e565b6000826104e757634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156104fe57600080fd5b81516001600160a01b03811681146104ac57600080fd5b60805160a051611d5f6105566000396000818161057b015281816112a50152818161140a01528181611631015261167d015260006117b50152611d5f6000f3fe6080604052600436106102085760003560e01c806370a0823111610118578063a8aa1b31116100a0578063dd62ed3e1161006f578063dd62ed3e146105fd578063f2fde38b14610643578063f6a78e1714610663578063f887ea4014610678578063fb1c37911461069857600080fd5b8063a8aa1b3114610569578063a9059cbb1461059d578063b2bdfa7b146105bd578063ccf8c036146105dd57600080fd5b80638a8c523c116100e75780638a8c523c146104c85780638d7a8ba7146104dd5780638da5cb5b146104fd5780638ebfc7961461051b57806395d89b411461053b57600080fd5b806370a0823114610435578063715018a61461046b5780637d1db4a514610480578063893d20e81461049657600080fd5b80632b14ca561161019b5780634c99007d1161016a5780634c99007d146103a457806350c358a4146103ba5780635ca30ba2146103e95780636c0a24eb146103fe5780636ddd17131461041457600080fd5b80632b14ca561461033c578063313ce56714610352578063467abe0a1461036e578063470624021461038e57600080fd5b8063095ea7b3116101d7578063095ea7b3146102c557806318160ddd146102e55780631d933a4a146102fa57806323b872dd1461031c57600080fd5b80630445b667146102145780630621472c1461023d57806306fdde031461026d57806308fd3d05146102a457600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b5061022a600d5481565b6040519081526020015b60405180910390f35b34801561024957600080fd5b5061025d61025836600461194a565b6106b8565b6040519015158152602001610234565b34801561027957600080fd5b5060408051808201909152600581526410995b185b60da1b60208201525b6040516102349190611965565b3480156102b057600080fd5b50600c5461025d90600160a01b900460ff1681565b3480156102d157600080fd5b5061025d6102e03660046119b3565b6106cc565b3480156102f157600080fd5b5061022a61078d565b34801561030657600080fd5b5061031a6103153660046119dd565b6107ae565b005b34801561032857600080fd5b5061025d6103373660046119f6565b61085c565b34801561034857600080fd5b5061022a60085481565b34801561035e57600080fd5b5060405160098152602001610234565b34801561037a57600080fd5b5061031a6103893660046119dd565b6109d7565b34801561039a57600080fd5b5061022a60075481565b3480156103b057600080fd5b5061022a600f5481565b3480156103c657600080fd5b5061025d6103d536600461194a565b600a546001600160a01b0391821691161490565b3480156103f557600080fd5b5061031a610a85565b34801561040a57600080fd5b5061022a60025481565b34801561042057600080fd5b50600c5461025d90600160a81b900460ff1681565b34801561044157600080fd5b5061022a61045036600461194a565b6001600160a01b031660009081526003602052604090205490565b34801561047757600080fd5b5061031a610a9c565b34801561048c57600080fd5b5061022a60015481565b3480156104a257600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610234565b3480156104d457600080fd5b5061031a610b10565b3480156104e957600080fd5b5061031a6104f8366004611a33565b610be8565b34801561050957600080fd5b506000546001600160a01b03166104b0565b34801561052757600080fd5b5061031a610536366004611a33565b610cbc565b34801561054757600080fd5b50604080518082019091526005815264109153105360da1b6020820152610297565b34801561057557600080fd5b506104b07f000000000000000000000000000000000000000000000000000000000000000081565b3480156105a957600080fd5b5061025d6105b83660046119b3565b610d82565b3480156105c957600080fd5b506000546104b0906001600160a01b031681565b3480156105e957600080fd5b5061031a6105f8366004611a33565b610de5565b34801561060957600080fd5b5061022a610618366004611a6f565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561064f57600080fd5b5061031a61065e36600461194a565b610ecd565b34801561066f57600080fd5b5061031a610fb7565b34801561068457600080fd5b50600b546104b0906001600160a01b031681565b3480156106a457600080fd5b5061031a6106b336600461194a565b61104b565b60006106c6826000196106cc565b92915050565b60006001600160a01b0383166107295760405162461bcd60e51b815260206004820152601b60248201527f5370656e64657220697320746865207a65726f2061646472657373000000000060448201526064015b60405180910390fd5b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b600061079b6009600a611b9f565b6107a990633b9aca00611bae565b905090565b6000546001600160a01b031633146107d85760405162461bcd60e51b815260040161072090611bc5565b60638111156108295760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e203939250000006044820152606401610720565b600881905560405181907f63d66ef9bcebaeaa6f4eb61e9327d3f4098c923aa98a5fc5326a53f2e145f4f290600090a250565b60006001600160a01b0384166108b45760405162461bcd60e51b815260206004820152601a60248201527f53656e64657220697320746865207a65726f20616464726573730000000000006044820152606401610720565b6001600160a01b03831661090a5760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f20616464726573730000006044820152606401610720565b6001600160a01b038416600090815260046020908152604080832033845290915290205460001981146109c157828110156109985760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610720565b6001600160a01b0385166000908152600460209081526040808320338452909152902083820390555b6109cc85858561112b565b9150505b9392505050565b6000546001600160a01b03163314610a015760405162461bcd60e51b815260040161072090611bc5565b6005811115610a525760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e206e6f74206265206d6f7265207468616e203525000000006044820152606401610720565b600781905560405181907f11953a0453d6e2e337ab856b9de1f4818ffa2a51f3a9c12f924e2a043ae37f6d90600090a250565b600f8054906000610a9583611bfa565b9190505550565b6000546001600160a01b03163314610ac65760405162461bcd60e51b815260040161072090611bc5565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610b3a5760405162461bcd60e51b815260040161072090611bc5565b600c54600160a01b900460ff1615610b945760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920456e61626c65642e00000000000000006044820152606401610720565b600c805460ff60a01b1916600160a01b9081179182905543600981905560405190929190910460ff161515907f07c24843b569ea20bd3c266fb17047bdd751e44ea3afa2150f231b90bc669f4d90600090a3565b6000546001600160a01b03163314610c125760405162461bcd60e51b815260040161072090611bc5565b6001600160a01b038216610c685760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f20616464726573730000000000006044820152606401610720565b6001600160a01b038216600081815260066020526040808220805460ff191685151590811790915590519092917f5422e85d9bcca047954218b93afb25e9bc2afe9bdc19e7297968b2c919c8377591a35050565b6000546001600160a01b03163314610ce65760405162461bcd60e51b815260040161072090611bc5565b6001600160a01b038216610d2e5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610720565b6001600160a01b038216600081815260056020526040808220805460ff191685151590811790915590519092917f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734691a35050565b60006001600160a01b038316610dda5760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f20616464726573730000006044820152606401610720565b6109d033848461112b565b6000546001600160a01b03163314610e0f5760405162461bcd60e51b815260040161072090611bc5565b6001600160a01b038216610e655760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f20616464726573730000000000006044820152606401610720565b6001600160a01b0382166000818152600560209081526040808320805486151560ff199182168117909255600690935281842080549093168117909255519092917f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734691a35050565b6000546001600160a01b03163314610ef75760405162461bcd60e51b815260040161072090611bc5565b6001600160a01b038116610f5c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610720565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610fe15760405162461bcd60e51b815260040161072090611bc5565b610fed6009600a611b9f565b610ffb90633b9aca00611bae565b60025561100a6009600a611b9f565b61101890633b9aca00611bae565b60018190556002546040517fe5ca8724fdb01105b3129a1959a63ecdb2638b93266579bbcca33b66c737faa990600090a3565b6000546001600160a01b031633146110755760405162461bcd60e51b815260040161072090611bc5565b6001600160a01b0381166110e15760405162461bcd60e51b815260206004820152602d60248201527f4d61726b6574696e67206665652072656365697665722063616e6e6f7420626560448201526c207a65726f206164647265737360981b6064820152608401610720565b600a80546001600160a01b0319166001600160a01b0383169081179091556040517f5e6894395320346b3bc32e11af639cec1465f714c0956a0f2ab9c0ec0084364190600090a250565b600e5460009060ff161561114b576111448484846114e7565b90506109d0565b6000546001600160a01b038581169116146111b057600c54600160a01b900460ff166111b05760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610720565b6111ba84836115b6565b6001600160a01b038416600090815260036020526040902054828110156111f35760405162461bcd60e51b815260040161072090611c13565b6001600160a01b03851660009081526005602052604081205460ff168061123257506001600160a01b03851660009081526005602052604090205460ff165b61124657611241868587611623565b611248565b835b905061125c6000546001600160a01b031690565b6001600160a01b0316866001600160a01b03161415801561131957506001600160a01b038516301480159061129c57506001600160a01b03851661dead14155b80156112da57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156112f45750600a546001600160a01b03868116911614155b801561131957506001600160a01b03851660009081526006602052604090205460ff16155b156113ba576001600160a01b0385166000908152600360205260409020546002546113448383611c59565b11156113b85760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610720565b505b43600954141580156113dd5750600d543060009081526003602052604090205410155b80156113f25750600c54600160a81b900460ff165b80156114015750600e5460ff16155b801561143e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b156114505761144b61174e565b436009555b6001600160a01b03808716600090815260036020526040808220878603905591871681529081208054839290611487908490611c59565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114d391815260200190565b60405180910390a350600195945050505050565b6001600160a01b038316600090815260036020526040812054828110156115205760405162461bcd60e51b815260040161072090611c13565b6001600160a01b03808616600090815260036020526040808220868503905591861681529081208054859290611557908490611c59565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115a391815260200190565b60405180910390a3506001949350505050565b600154811115806115df57506001600160a01b03821660009081526006602052604090205460ff165b61161f5760405162461bcd60e51b8152602060048201526011602482015270151e08131a5b5a5d08115e18d959591959607a1b6044820152606401610720565b5050565b600080806001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169085160361167b5760646008548661166a9190611bae565b6116749190611c6c565b91506116c9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316036116c45760646007548661166a9190611bae565b600091505b81156117445730600090815260036020526040812080548492906116ee908490611c59565b909155505060405182815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361173d8286611c8e565b90506109cc565b5092949350505050565b600e805460ff19166001179055600d54604080516002808252606082018352600092602083019080368337019050509050308160008151811061179357611793611ca1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106117e7576117e7611ca1565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac9479061182d908590600090869030904290600401611cb7565b600060405180830381600087803b15801561184757600080fd5b505af115801561185b573d6000803e3d6000fd5b5050600a54604051479350600092506001600160a01b039091169083908381818185875af1925050503d80600081146118b0576040519150601f19603f3d011682016040523d82523d6000602084013e6118b5565b606091505b505090508061191e5760405162461bcd60e51b815260206004820152602f60248201527f4661696c656420746f2073656e6420657468657220746f204d61726b6574696e60448201526e33902332b2902932b1b2b4bb32b91760891b6064820152608401610720565b5050600e805460ff191690555050565b80356001600160a01b038116811461194557600080fd5b919050565b60006020828403121561195c57600080fd5b6109d08261192e565b602081526000825180602084015260005b818110156119935760208186018101516040868401015201611976565b506000604082850101526040601f19601f83011684010191505092915050565b600080604083850312156119c657600080fd5b6119cf8361192e565b946020939093013593505050565b6000602082840312156119ef57600080fd5b5035919050565b600080600060608486031215611a0b57600080fd5b611a148461192e565b9250611a226020850161192e565b929592945050506040919091013590565b60008060408385031215611a4657600080fd5b611a4f8361192e565b915060208301358015158114611a6457600080fd5b809150509250929050565b60008060408385031215611a8257600080fd5b611a8b8361192e565b9150611a996020840161192e565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115611af357808504811115611ad757611ad7611aa2565b6001841615611ae557908102905b60019390931c928002611abc565b935093915050565b600082611b0a575060016106c6565b81611b17575060006106c6565b8160018114611b2d5760028114611b3757611b53565b60019150506106c6565b60ff841115611b4857611b48611aa2565b50506001821b6106c6565b5060208310610133831016604e8410600b8410161715611b76575081810a6106c6565b611b836000198484611ab8565b8060001904821115611b9757611b97611aa2565b029392505050565b60006109d060ff841683611afb565b80820281158282048414176106c6576106c6611aa2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060018201611c0c57611c0c611aa2565b5060010190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b808201808211156106c6576106c6611aa2565b600082611c8957634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156106c6576106c6611aa2565b634e487b7160e01b600052603260045260246000fd5b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b81811015611d095783516001600160a01b0316835260209384019390920191600101611ce2565b50506001600160a01b03959095166060840152505060800152939250505056fea264697066735822122025359ee262377924d006f6088ff685068cb8cc595ce6bc75fd425e0ae2c4370364736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106102085760003560e01c806370a0823111610118578063a8aa1b31116100a0578063dd62ed3e1161006f578063dd62ed3e146105fd578063f2fde38b14610643578063f6a78e1714610663578063f887ea4014610678578063fb1c37911461069857600080fd5b8063a8aa1b3114610569578063a9059cbb1461059d578063b2bdfa7b146105bd578063ccf8c036146105dd57600080fd5b80638a8c523c116100e75780638a8c523c146104c85780638d7a8ba7146104dd5780638da5cb5b146104fd5780638ebfc7961461051b57806395d89b411461053b57600080fd5b806370a0823114610435578063715018a61461046b5780637d1db4a514610480578063893d20e81461049657600080fd5b80632b14ca561161019b5780634c99007d1161016a5780634c99007d146103a457806350c358a4146103ba5780635ca30ba2146103e95780636c0a24eb146103fe5780636ddd17131461041457600080fd5b80632b14ca561461033c578063313ce56714610352578063467abe0a1461036e578063470624021461038e57600080fd5b8063095ea7b3116101d7578063095ea7b3146102c557806318160ddd146102e55780631d933a4a146102fa57806323b872dd1461031c57600080fd5b80630445b667146102145780630621472c1461023d57806306fdde031461026d57806308fd3d05146102a457600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b5061022a600d5481565b6040519081526020015b60405180910390f35b34801561024957600080fd5b5061025d61025836600461194a565b6106b8565b6040519015158152602001610234565b34801561027957600080fd5b5060408051808201909152600581526410995b185b60da1b60208201525b6040516102349190611965565b3480156102b057600080fd5b50600c5461025d90600160a01b900460ff1681565b3480156102d157600080fd5b5061025d6102e03660046119b3565b6106cc565b3480156102f157600080fd5b5061022a61078d565b34801561030657600080fd5b5061031a6103153660046119dd565b6107ae565b005b34801561032857600080fd5b5061025d6103373660046119f6565b61085c565b34801561034857600080fd5b5061022a60085481565b34801561035e57600080fd5b5060405160098152602001610234565b34801561037a57600080fd5b5061031a6103893660046119dd565b6109d7565b34801561039a57600080fd5b5061022a60075481565b3480156103b057600080fd5b5061022a600f5481565b3480156103c657600080fd5b5061025d6103d536600461194a565b600a546001600160a01b0391821691161490565b3480156103f557600080fd5b5061031a610a85565b34801561040a57600080fd5b5061022a60025481565b34801561042057600080fd5b50600c5461025d90600160a81b900460ff1681565b34801561044157600080fd5b5061022a61045036600461194a565b6001600160a01b031660009081526003602052604090205490565b34801561047757600080fd5b5061031a610a9c565b34801561048c57600080fd5b5061022a60015481565b3480156104a257600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610234565b3480156104d457600080fd5b5061031a610b10565b3480156104e957600080fd5b5061031a6104f8366004611a33565b610be8565b34801561050957600080fd5b506000546001600160a01b03166104b0565b34801561052757600080fd5b5061031a610536366004611a33565b610cbc565b34801561054757600080fd5b50604080518082019091526005815264109153105360da1b6020820152610297565b34801561057557600080fd5b506104b07f0000000000000000000000007f77ef5981556c9bc824b8a5be1c7b92149e25f481565b3480156105a957600080fd5b5061025d6105b83660046119b3565b610d82565b3480156105c957600080fd5b506000546104b0906001600160a01b031681565b3480156105e957600080fd5b5061031a6105f8366004611a33565b610de5565b34801561060957600080fd5b5061022a610618366004611a6f565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561064f57600080fd5b5061031a61065e36600461194a565b610ecd565b34801561066f57600080fd5b5061031a610fb7565b34801561068457600080fd5b50600b546104b0906001600160a01b031681565b3480156106a457600080fd5b5061031a6106b336600461194a565b61104b565b60006106c6826000196106cc565b92915050565b60006001600160a01b0383166107295760405162461bcd60e51b815260206004820152601b60248201527f5370656e64657220697320746865207a65726f2061646472657373000000000060448201526064015b60405180910390fd5b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b600061079b6009600a611b9f565b6107a990633b9aca00611bae565b905090565b6000546001600160a01b031633146107d85760405162461bcd60e51b815260040161072090611bc5565b60638111156108295760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e203939250000006044820152606401610720565b600881905560405181907f63d66ef9bcebaeaa6f4eb61e9327d3f4098c923aa98a5fc5326a53f2e145f4f290600090a250565b60006001600160a01b0384166108b45760405162461bcd60e51b815260206004820152601a60248201527f53656e64657220697320746865207a65726f20616464726573730000000000006044820152606401610720565b6001600160a01b03831661090a5760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f20616464726573730000006044820152606401610720565b6001600160a01b038416600090815260046020908152604080832033845290915290205460001981146109c157828110156109985760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610720565b6001600160a01b0385166000908152600460209081526040808320338452909152902083820390555b6109cc85858561112b565b9150505b9392505050565b6000546001600160a01b03163314610a015760405162461bcd60e51b815260040161072090611bc5565b6005811115610a525760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e206e6f74206265206d6f7265207468616e203525000000006044820152606401610720565b600781905560405181907f11953a0453d6e2e337ab856b9de1f4818ffa2a51f3a9c12f924e2a043ae37f6d90600090a250565b600f8054906000610a9583611bfa565b9190505550565b6000546001600160a01b03163314610ac65760405162461bcd60e51b815260040161072090611bc5565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610b3a5760405162461bcd60e51b815260040161072090611bc5565b600c54600160a01b900460ff1615610b945760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920456e61626c65642e00000000000000006044820152606401610720565b600c805460ff60a01b1916600160a01b9081179182905543600981905560405190929190910460ff161515907f07c24843b569ea20bd3c266fb17047bdd751e44ea3afa2150f231b90bc669f4d90600090a3565b6000546001600160a01b03163314610c125760405162461bcd60e51b815260040161072090611bc5565b6001600160a01b038216610c685760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f20616464726573730000000000006044820152606401610720565b6001600160a01b038216600081815260066020526040808220805460ff191685151590811790915590519092917f5422e85d9bcca047954218b93afb25e9bc2afe9bdc19e7297968b2c919c8377591a35050565b6000546001600160a01b03163314610ce65760405162461bcd60e51b815260040161072090611bc5565b6001600160a01b038216610d2e5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610720565b6001600160a01b038216600081815260056020526040808220805460ff191685151590811790915590519092917f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734691a35050565b60006001600160a01b038316610dda5760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f20616464726573730000006044820152606401610720565b6109d033848461112b565b6000546001600160a01b03163314610e0f5760405162461bcd60e51b815260040161072090611bc5565b6001600160a01b038216610e655760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f20616464726573730000000000006044820152606401610720565b6001600160a01b0382166000818152600560209081526040808320805486151560ff199182168117909255600690935281842080549093168117909255519092917f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734691a35050565b6000546001600160a01b03163314610ef75760405162461bcd60e51b815260040161072090611bc5565b6001600160a01b038116610f5c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610720565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610fe15760405162461bcd60e51b815260040161072090611bc5565b610fed6009600a611b9f565b610ffb90633b9aca00611bae565b60025561100a6009600a611b9f565b61101890633b9aca00611bae565b60018190556002546040517fe5ca8724fdb01105b3129a1959a63ecdb2638b93266579bbcca33b66c737faa990600090a3565b6000546001600160a01b031633146110755760405162461bcd60e51b815260040161072090611bc5565b6001600160a01b0381166110e15760405162461bcd60e51b815260206004820152602d60248201527f4d61726b6574696e67206665652072656365697665722063616e6e6f7420626560448201526c207a65726f206164647265737360981b6064820152608401610720565b600a80546001600160a01b0319166001600160a01b0383169081179091556040517f5e6894395320346b3bc32e11af639cec1465f714c0956a0f2ab9c0ec0084364190600090a250565b600e5460009060ff161561114b576111448484846114e7565b90506109d0565b6000546001600160a01b038581169116146111b057600c54600160a01b900460ff166111b05760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610720565b6111ba84836115b6565b6001600160a01b038416600090815260036020526040902054828110156111f35760405162461bcd60e51b815260040161072090611c13565b6001600160a01b03851660009081526005602052604081205460ff168061123257506001600160a01b03851660009081526005602052604090205460ff165b61124657611241868587611623565b611248565b835b905061125c6000546001600160a01b031690565b6001600160a01b0316866001600160a01b03161415801561131957506001600160a01b038516301480159061129c57506001600160a01b03851661dead14155b80156112da57507f0000000000000000000000007f77ef5981556c9bc824b8a5be1c7b92149e25f46001600160a01b0316856001600160a01b031614155b80156112f45750600a546001600160a01b03868116911614155b801561131957506001600160a01b03851660009081526006602052604090205460ff16155b156113ba576001600160a01b0385166000908152600360205260409020546002546113448383611c59565b11156113b85760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610720565b505b43600954141580156113dd5750600d543060009081526003602052604090205410155b80156113f25750600c54600160a81b900460ff165b80156114015750600e5460ff16155b801561143e57507f0000000000000000000000007f77ef5981556c9bc824b8a5be1c7b92149e25f46001600160a01b0316856001600160a01b0316145b156114505761144b61174e565b436009555b6001600160a01b03808716600090815260036020526040808220878603905591871681529081208054839290611487908490611c59565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114d391815260200190565b60405180910390a350600195945050505050565b6001600160a01b038316600090815260036020526040812054828110156115205760405162461bcd60e51b815260040161072090611c13565b6001600160a01b03808616600090815260036020526040808220868503905591861681529081208054859290611557908490611c59565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516115a391815260200190565b60405180910390a3506001949350505050565b600154811115806115df57506001600160a01b03821660009081526006602052604090205460ff165b61161f5760405162461bcd60e51b8152602060048201526011602482015270151e08131a5b5a5d08115e18d959591959607a1b6044820152606401610720565b5050565b600080806001600160a01b037f0000000000000000000000007f77ef5981556c9bc824b8a5be1c7b92149e25f481169085160361167b5760646008548661166a9190611bae565b6116749190611c6c565b91506116c9565b7f0000000000000000000000007f77ef5981556c9bc824b8a5be1c7b92149e25f46001600160a01b0316866001600160a01b0316036116c45760646007548661166a9190611bae565b600091505b81156117445730600090815260036020526040812080548492906116ee908490611c59565b909155505060405182815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361173d8286611c8e565b90506109cc565b5092949350505050565b600e805460ff19166001179055600d54604080516002808252606082018352600092602083019080368337019050509050308160008151811061179357611793611ca1565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106117e7576117e7611ca1565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac9479061182d908590600090869030904290600401611cb7565b600060405180830381600087803b15801561184757600080fd5b505af115801561185b573d6000803e3d6000fd5b5050600a54604051479350600092506001600160a01b039091169083908381818185875af1925050503d80600081146118b0576040519150601f19603f3d011682016040523d82523d6000602084013e6118b5565b606091505b505090508061191e5760405162461bcd60e51b815260206004820152602f60248201527f4661696c656420746f2073656e6420657468657220746f204d61726b6574696e60448201526e33902332b2902932b1b2b4bb32b91760891b6064820152608401610720565b5050600e805460ff191690555050565b80356001600160a01b038116811461194557600080fd5b919050565b60006020828403121561195c57600080fd5b6109d08261192e565b602081526000825180602084015260005b818110156119935760208186018101516040868401015201611976565b506000604082850101526040601f19601f83011684010191505092915050565b600080604083850312156119c657600080fd5b6119cf8361192e565b946020939093013593505050565b6000602082840312156119ef57600080fd5b5035919050565b600080600060608486031215611a0b57600080fd5b611a148461192e565b9250611a226020850161192e565b929592945050506040919091013590565b60008060408385031215611a4657600080fd5b611a4f8361192e565b915060208301358015158114611a6457600080fd5b809150509250929050565b60008060408385031215611a8257600080fd5b611a8b8361192e565b9150611a996020840161192e565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115611af357808504811115611ad757611ad7611aa2565b6001841615611ae557908102905b60019390931c928002611abc565b935093915050565b600082611b0a575060016106c6565b81611b17575060006106c6565b8160018114611b2d5760028114611b3757611b53565b60019150506106c6565b60ff841115611b4857611b48611aa2565b50506001821b6106c6565b5060208310610133831016604e8410600b8410161715611b76575081810a6106c6565b611b836000198484611ab8565b8060001904821115611b9757611b97611aa2565b029392505050565b60006109d060ff841683611afb565b80820281158282048414176106c6576106c6611aa2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060018201611c0c57611c0c611aa2565b5060010190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b808201808211156106c6576106c6611aa2565b600082611c8957634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156106c6576106c6611aa2565b634e487b7160e01b600052603260045260246000fd5b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b81811015611d095783516001600160a01b0316835260209384019390920191600101611ce2565b50506001600160a01b03959095166060840152505060800152939250505056fea264697066735822122025359ee262377924d006f6088ff685068cb8cc595ce6bc75fd425e0ae2c4370364736f6c634300081a0033

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.