ETH Price: $2,483.47 (+3.08%)
 

Overview

Max Total Supply

10,000 BBP

Holders

246 (0.00%)

Market

Price

$34.18 @ 0.013763 ETH

Onchain Market Cap

$341,803.84

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: Router 2
Balance
0 BBP

Value
$0.00
0x7a250d5630b4cf539739df2c5dacb4c659f2488d
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Bitbots are algorithmic trading bots that trade cryptocurrency to realize gains with a set of programmed parameters backed up with mathematical probabilities and appropriate actions. It incentivized users who stake LP tokens to fuel bot trading and get rewarded in Ethereum.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BitBotTokenV1

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-01-22
*/

/**
 *Submitted for verification at Etherscan.io on 2021-01-18
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.0;



library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface IERC20 {
    
    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


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

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

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    /**
     * @dev Throws if called by any account other than the _newOwnerowner.
     */
    modifier onlyMidWayOwner() {
        require(_newOwner == _msgSender(), "Ownable: caller is not the Mid Way Owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() external onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _newOwner = newOwner;
    }
    
    /**
     * @dev receive ownership of the contract by _newOwner. Previous owner assigned this _newOwner to receive ownership. 
     * Can only be called by the current _newOwner.
     */
    function recieveOwnership() external onlyMidWayOwner {
        emit OwnershipTransferred(_owner, _newOwner);
        _owner = _newOwner;
    }
}

contract ERC20 is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 public totalSupply;

    string public name;
    string public symbol;
    uint8 public immutable decimals;
    
    uint256 public constant tfees = 5; //0.5% fees 5/1000
    
     mapping(address => bool) public freeSender;
    mapping(address => bool) public freeReciever;
    

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) {
        name = name_;
        symbol = symbol_;
        decimals = 18;
    }

    
    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) external view override returns (uint256) {
        return _balances[account];
    }
    
    function setFeeFreeSender(address _sender, bool _feeFree) external onlyOwner {
        require(_sender != address(0), "ERC20: transfer from the zero address");
        require(!_feeFree || _feeFree, "Input must be a bool");
        freeSender[_sender] = _feeFree;
    }

    function setFeeFreeReciever(address _recipient, bool _feeFree) external onlyOwner {
        require(_recipient != address(0), "ERC20: transfer from the zero address");
        require(!_feeFree || _feeFree, "Input must be a bool");
        freeReciever[_recipient] = _feeFree;
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) external virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) external view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) external virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);
        
        
        (uint256 amounToSend, uint256 feesAmount) = calculateFees(sender, recipient, amount);
        
        if(feesAmount > 0){
            _balances[owner()] = _balances[owner()].add(feesAmount);
            emit Transfer(sender, owner(), feesAmount);
       }
        

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amounToSend);
        emit Transfer(sender, recipient, amounToSend);
    }
    
    // to caclulate the amounts for recipient and distributer after fees have been applied
    function calculateFees(
        address sender,
        address recipient,
        uint256 amount
    ) public view returns (uint256, uint256) {
        
        if(freeSender[sender] || freeReciever[recipient]){
            return (amount, 0);
        }
       
        uint256 fee = amount.mul(tfees).div(1000);
        return (amount.sub(fee), fee);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        totalSupply = totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        totalSupply = totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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);
    }

    
    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

contract BitBotTokenV1 is ERC20 {

    constructor() ERC20("BitBot V1", "BBP") {
        
        _mint(msg.sender, 10000e18);
    }

    function burn(uint256 amount) external {
        _burn(msg.sender, amount);
    }
}

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":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":"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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"calculateFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"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":"","type":"address"}],"name":"freeReciever","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"freeSender","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recieveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"bool","name":"_feeFree","type":"bool"}],"name":"setFeeFreeReciever","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"bool","name":"_feeFree","type":"bool"}],"name":"setFeeFreeSender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tfees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b5060405180604001604052806009815260200168426974426f7420563160b81b8152506040518060400160405280600381526020016204242560ec1b815250620000606200011c60201b60201c565b600080546001600160a01b0319166001600160a01b03929092169190911790556200008a6200011c565b6001600160a01b031660006001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38151620000df9060059060208501906200024e565b508051620000f59060069060208401906200024e565b5050600960f91b60805250620001163369021e19e0c9bab240000062000120565b620003cd565b3390565b6001600160a01b038216620001525760405162461bcd60e51b815260040162000149906200032b565b60405180910390fd5b62000160600083836200020e565b6200017c816004546200021360201b6200092a1790919060201c565b6004556001600160a01b038216600090815260026020908152604090912054620001b19183906200092a62000213821b17901c565b6001600160a01b0383166000818152600260205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200020290859062000362565b60405180910390a35050565b505050565b6000806200022283856200036b565b905083811015620002475760405162461bcd60e51b81526004016200014990620002f4565b9392505050565b8280546200025c9062000390565b90600052602060002090601f016020900481019282620002805760008555620002cb565b82601f106200029b57805160ff1916838001178555620002cb565b82800160010185558215620002cb579182015b82811115620002cb578251825591602001919060010190620002ae565b50620002d9929150620002dd565b5090565b5b80821115620002d95760008155600101620002de565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b600082198211156200038b57634e487b7160e01b81526011600452602481fd5b500190565b600281046001821680620003a557607f821691505b60208210811415620003c757634e487b7160e01b600052602260045260246000fd5b50919050565b60805160f81c611408620003ec60003960006104f001526114086000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063715018a6116100b8578063a7bddbcb1161007c578063a7bddbcb1461028f578063a9059cbb14610297578063ac810084146102aa578063bd876898146102b2578063dd62ed3e146102c5578063f2fde38b146102d857610142565b8063715018a61461023657806373352ad31461023e5780638da5cb5b1461025f57806395d89b4114610274578063a457c2d71461027c57610142565b806327f5cbc71161010a57806327f5cbc7146101c0578063313ce567146101d557806339509351146101ea57806342966c68146101fd5780634e658f1d1461021057806370a082311461022357610142565b806306fdde0314610147578063095ea7b314610165578063096143841461018557806318160ddd1461019857806323b872dd146101ad575b600080fd5b61014f6102eb565b60405161015c9190610f4e565b60405180910390f35b610178610173366004610eee565b610379565b60405161015c9190610f43565b610178610193366004610e2d565b610397565b6101a06103ac565b60405161015c9190611259565b6101786101bb366004610e79565b6103b2565b6101d36101ce366004610eb4565b610439565b005b6101dd6104ee565b60405161015c9190611270565b6101786101f8366004610eee565b610512565b6101d361020b366004610f17565b610560565b6101d361021e366004610eb4565b61056d565b6101a0610231366004610e2d565b610619565b6101d3610638565b61025161024c366004610e79565b6106b7565b60405161015c929190611262565b61026761073a565b60405161015c9190610f2f565b61014f610749565b61017861028a366004610eee565b610756565b6101a06107be565b6101786102a5366004610eee565b6107c3565b6101d36107d7565b6101786102c0366004610e2d565b61086d565b6101a06102d3366004610e47565b610882565b6101d36102e6366004610e2d565b6108ad565b600580546102f8906112ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610324906112ec565b80156103715780601f1061034657610100808354040283529160200191610371565b820191906000526020600020905b81548152906001019060200180831161035457829003601f168201915b505050505081565b600061038d610386610960565b8484610964565b5060015b92915050565b60086020526000908152604090205460ff1681565b60045481565b60006103bf848484610a18565b61042f846103cb610960565b61042a85604051806060016040528060288152602001611386602891396001600160a01b038a16600090815260036020526040812090610409610960565b6001600160a01b031681526020810191909152604001600020549190610bfe565b610964565b5060019392505050565b610441610960565b6000546001600160a01b039081169116146104775760405162461bcd60e51b815260040161046e9061115a565b60405180910390fd5b6001600160a01b03821661049d5760405162461bcd60e51b815260040161046e906111d0565b8015806104a75750805b6104c35760405162461bcd60e51b815260040161046e906110a3565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061038d61051f610960565b8461042a8560036000610530610960565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061092a565b61056a3382610c38565b50565b610575610960565b6000546001600160a01b039081169116146105a25760405162461bcd60e51b815260040161046e9061115a565b6001600160a01b0382166105c85760405162461bcd60e51b815260040161046e906111d0565b8015806105d25750805b6105ee5760405162461bcd60e51b815260040161046e906110a3565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152600260205260409020545b919050565b610640610960565b6000546001600160a01b0390811691161461066d5760405162461bcd60e51b815260040161046e9061115a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001600160a01b038316600090815260076020526040812054819060ff16806106f857506001600160a01b03841660009081526008602052604090205460ff165b1561070857508190506000610732565b60006107216103e861071b866005610d1a565b90610d5f565b905061072d8482610da1565b925090505b935093915050565b6000546001600160a01b031690565b600680546102f8906112ec565b600061038d610763610960565b8461042a856040518060600160405280602581526020016113ae602591396003600061078d610960565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610bfe565b600581565b600061038d6107d0610960565b8484610a18565b6107df610960565b6001546001600160a01b0390811691161461080c5760405162461bcd60e51b815260040161046e906110d1565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b60076020526000908152604090205460ff1681565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6108b5610960565b6000546001600160a01b039081169116146108e25760405162461bcd60e51b815260040161046e9061115a565b6001600160a01b0381166109085760405162461bcd60e51b815260040161046e90610fe4565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080610937838561127e565b9050838110156109595760405162461bcd60e51b815260040161046e9061106c565b9392505050565b3390565b6001600160a01b03831661098a5760405162461bcd60e51b815260040161046e90611215565b6001600160a01b0382166109b05760405162461bcd60e51b815260040161046e9061102a565b6001600160a01b0380841660008181526003602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a0b908590611259565b60405180910390a3505050565b6001600160a01b038316610a3e5760405162461bcd60e51b815260040161046e906111d0565b6001600160a01b038216610a645760405162461bcd60e51b815260040161046e90610fa1565b610a6f838383610de3565b600080610a7d8585856106b7565b90925090508015610b3157610ab88160026000610a9861073a565b6001600160a01b031681526020810191909152604001600020549061092a565b60026000610ac461073a565b6001600160a01b03168152602081019190915260400160002055610ae661073a565b6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b289190611259565b60405180910390a35b610b6e83604051806060016040528060268152602001611360602691396001600160a01b0388166000908152600260205260409020549190610bfe565b6001600160a01b038087166000908152600260205260408082209390935590861681522054610b9d908361092a565b6001600160a01b0380861660008181526002602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bef908690611259565b60405180910390a35050505050565b60008184841115610c225760405162461bcd60e51b815260040161046e9190610f4e565b506000610c2f84866112d5565b95945050505050565b6001600160a01b038216610c5e5760405162461bcd60e51b815260040161046e9061118f565b610c6a82600083610de3565b610ca78160405180606001604052806022815260200161133e602291396001600160a01b0385166000908152600260205260409020549190610bfe565b6001600160a01b038316600090815260026020526040902055600454610ccd9082610da1565b6004556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d0e908590611259565b60405180910390a35050565b600082610d2957506000610391565b6000610d3583856112b6565b905082610d428583611296565b146109595760405162461bcd60e51b815260040161046e90611119565b600061095983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610de8565b600061095983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610bfe565b505050565b60008183610e095760405162461bcd60e51b815260040161046e9190610f4e565b506000610c2f8486611296565b80356001600160a01b038116811461063357600080fd5b600060208284031215610e3e578081fd5b61095982610e16565b60008060408385031215610e59578081fd5b610e6283610e16565b9150610e7060208401610e16565b90509250929050565b600080600060608486031215610e8d578081fd5b610e9684610e16565b9250610ea460208501610e16565b9150604084013590509250925092565b60008060408385031215610ec6578182fd5b610ecf83610e16565b915060208301358015158114610ee3578182fd5b809150509250929050565b60008060408385031215610f00578182fd5b610f0983610e16565b946020939093013593505050565b600060208284031215610f28578081fd5b5035919050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015610f7a57858101830151858201604001528201610f5e565b81811115610f8b5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b602080825260149082015273125b9c1d5d081b5d5cdd081899481848189bdbdb60621b604082015260600190565b60208082526028908201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865204d6964205760408201526730bc9027bbb732b960c11b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b90815260200190565b918252602082015260400190565b60ff91909116815260200190565b6000821982111561129157611291611327565b500190565b6000826112b157634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156112d0576112d0611327565b500290565b6000828210156112e7576112e7611327565b500390565b60028104600182168061130057607f821691505b6020821081141561132157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207d2094ee22a000bab5cb176d4c82fbf3cf0008d50bc58b1f93458c3a79b8e25764736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c8063715018a6116100b8578063a7bddbcb1161007c578063a7bddbcb1461028f578063a9059cbb14610297578063ac810084146102aa578063bd876898146102b2578063dd62ed3e146102c5578063f2fde38b146102d857610142565b8063715018a61461023657806373352ad31461023e5780638da5cb5b1461025f57806395d89b4114610274578063a457c2d71461027c57610142565b806327f5cbc71161010a57806327f5cbc7146101c0578063313ce567146101d557806339509351146101ea57806342966c68146101fd5780634e658f1d1461021057806370a082311461022357610142565b806306fdde0314610147578063095ea7b314610165578063096143841461018557806318160ddd1461019857806323b872dd146101ad575b600080fd5b61014f6102eb565b60405161015c9190610f4e565b60405180910390f35b610178610173366004610eee565b610379565b60405161015c9190610f43565b610178610193366004610e2d565b610397565b6101a06103ac565b60405161015c9190611259565b6101786101bb366004610e79565b6103b2565b6101d36101ce366004610eb4565b610439565b005b6101dd6104ee565b60405161015c9190611270565b6101786101f8366004610eee565b610512565b6101d361020b366004610f17565b610560565b6101d361021e366004610eb4565b61056d565b6101a0610231366004610e2d565b610619565b6101d3610638565b61025161024c366004610e79565b6106b7565b60405161015c929190611262565b61026761073a565b60405161015c9190610f2f565b61014f610749565b61017861028a366004610eee565b610756565b6101a06107be565b6101786102a5366004610eee565b6107c3565b6101d36107d7565b6101786102c0366004610e2d565b61086d565b6101a06102d3366004610e47565b610882565b6101d36102e6366004610e2d565b6108ad565b600580546102f8906112ec565b80601f0160208091040260200160405190810160405280929190818152602001828054610324906112ec565b80156103715780601f1061034657610100808354040283529160200191610371565b820191906000526020600020905b81548152906001019060200180831161035457829003601f168201915b505050505081565b600061038d610386610960565b8484610964565b5060015b92915050565b60086020526000908152604090205460ff1681565b60045481565b60006103bf848484610a18565b61042f846103cb610960565b61042a85604051806060016040528060288152602001611386602891396001600160a01b038a16600090815260036020526040812090610409610960565b6001600160a01b031681526020810191909152604001600020549190610bfe565b610964565b5060019392505050565b610441610960565b6000546001600160a01b039081169116146104775760405162461bcd60e51b815260040161046e9061115a565b60405180910390fd5b6001600160a01b03821661049d5760405162461bcd60e51b815260040161046e906111d0565b8015806104a75750805b6104c35760405162461bcd60e51b815260040161046e906110a3565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b7f000000000000000000000000000000000000000000000000000000000000001281565b600061038d61051f610960565b8461042a8560036000610530610960565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549061092a565b61056a3382610c38565b50565b610575610960565b6000546001600160a01b039081169116146105a25760405162461bcd60e51b815260040161046e9061115a565b6001600160a01b0382166105c85760405162461bcd60e51b815260040161046e906111d0565b8015806105d25750805b6105ee5760405162461bcd60e51b815260040161046e906110a3565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152600260205260409020545b919050565b610640610960565b6000546001600160a01b0390811691161461066d5760405162461bcd60e51b815260040161046e9061115a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001600160a01b038316600090815260076020526040812054819060ff16806106f857506001600160a01b03841660009081526008602052604090205460ff165b1561070857508190506000610732565b60006107216103e861071b866005610d1a565b90610d5f565b905061072d8482610da1565b925090505b935093915050565b6000546001600160a01b031690565b600680546102f8906112ec565b600061038d610763610960565b8461042a856040518060600160405280602581526020016113ae602591396003600061078d610960565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610bfe565b600581565b600061038d6107d0610960565b8484610a18565b6107df610960565b6001546001600160a01b0390811691161461080c5760405162461bcd60e51b815260040161046e906110d1565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b60076020526000908152604090205460ff1681565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6108b5610960565b6000546001600160a01b039081169116146108e25760405162461bcd60e51b815260040161046e9061115a565b6001600160a01b0381166109085760405162461bcd60e51b815260040161046e90610fe4565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080610937838561127e565b9050838110156109595760405162461bcd60e51b815260040161046e9061106c565b9392505050565b3390565b6001600160a01b03831661098a5760405162461bcd60e51b815260040161046e90611215565b6001600160a01b0382166109b05760405162461bcd60e51b815260040161046e9061102a565b6001600160a01b0380841660008181526003602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a0b908590611259565b60405180910390a3505050565b6001600160a01b038316610a3e5760405162461bcd60e51b815260040161046e906111d0565b6001600160a01b038216610a645760405162461bcd60e51b815260040161046e90610fa1565b610a6f838383610de3565b600080610a7d8585856106b7565b90925090508015610b3157610ab88160026000610a9861073a565b6001600160a01b031681526020810191909152604001600020549061092a565b60026000610ac461073a565b6001600160a01b03168152602081019190915260400160002055610ae661073a565b6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b289190611259565b60405180910390a35b610b6e83604051806060016040528060268152602001611360602691396001600160a01b0388166000908152600260205260409020549190610bfe565b6001600160a01b038087166000908152600260205260408082209390935590861681522054610b9d908361092a565b6001600160a01b0380861660008181526002602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bef908690611259565b60405180910390a35050505050565b60008184841115610c225760405162461bcd60e51b815260040161046e9190610f4e565b506000610c2f84866112d5565b95945050505050565b6001600160a01b038216610c5e5760405162461bcd60e51b815260040161046e9061118f565b610c6a82600083610de3565b610ca78160405180606001604052806022815260200161133e602291396001600160a01b0385166000908152600260205260409020549190610bfe565b6001600160a01b038316600090815260026020526040902055600454610ccd9082610da1565b6004556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d0e908590611259565b60405180910390a35050565b600082610d2957506000610391565b6000610d3583856112b6565b905082610d428583611296565b146109595760405162461bcd60e51b815260040161046e90611119565b600061095983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610de8565b600061095983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610bfe565b505050565b60008183610e095760405162461bcd60e51b815260040161046e9190610f4e565b506000610c2f8486611296565b80356001600160a01b038116811461063357600080fd5b600060208284031215610e3e578081fd5b61095982610e16565b60008060408385031215610e59578081fd5b610e6283610e16565b9150610e7060208401610e16565b90509250929050565b600080600060608486031215610e8d578081fd5b610e9684610e16565b9250610ea460208501610e16565b9150604084013590509250925092565b60008060408385031215610ec6578182fd5b610ecf83610e16565b915060208301358015158114610ee3578182fd5b809150509250929050565b60008060408385031215610f00578182fd5b610f0983610e16565b946020939093013593505050565b600060208284031215610f28578081fd5b5035919050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015610f7a57858101830151858201604001528201610f5e565b81811115610f8b5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b602080825260149082015273125b9c1d5d081b5d5cdd081899481848189bdbdb60621b604082015260600190565b60208082526028908201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865204d6964205760408201526730bc9027bbb732b960c11b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b90815260200190565b918252602082015260400190565b60ff91909116815260200190565b6000821982111561129157611291611327565b500190565b6000826112b157634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156112d0576112d0611327565b500290565b6000828210156112e7576112e7611327565b500390565b60028104600182168061130057607f821691505b6020821081141561132157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207d2094ee22a000bab5cb176d4c82fbf3cf0008d50bc58b1f93458c3a79b8e25764736f6c63430008000033

Deployed Bytecode Sourcemap

19568:231:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10220:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12476:171;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10431:44::-;;;;;;:::i;:::-;;:::i;10185:26::-;;;:::i;:::-;;;;;;;:::i;13129:323::-;;;;;;:::i;:::-;;:::i;11437:286::-;;;;;;:::i;:::-;;:::i;:::-;;10272:31;;;:::i;:::-;;;;;;;:::i;13861:220::-;;;;;;:::i;:::-;;:::i;19713:83::-;;;;;;:::i;:::-;;:::i;11156:273::-;;;;;;:::i;:::-;;:::i;11023:121::-;;;;;;:::i;:::-;;:::i;9119:142::-;;;:::i;16299:370::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;8235:79::-;;;:::i;:::-;;;;;;;:::i;10245:20::-;;;:::i;14584:271::-;;;;;;:::i;:::-;;:::i;10316:33::-;;;:::i;11936:177::-;;;;;;:::i;:::-;;:::i;9815:145::-;;;:::i;10382:42::-;;;;;;:::i;:::-;;:::i;12176:153::-;;;;;;:::i;:::-;;:::i;9416:193::-;;;;;;:::i;:::-;;:::i;10220:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12476:171::-;12561:4;12578:39;12587:12;:10;:12::i;:::-;12601:7;12610:6;12578:8;:39::i;:::-;-1:-1:-1;12635:4:0;12476:171;;;;;:::o;10431:44::-;;;;;;;;;;;;;;;:::o;10185:26::-;;;;:::o;13129:323::-;13237:4;13254:36;13264:6;13272:9;13283:6;13254:9;:36::i;:::-;13301:121;13310:6;13318:12;:10;:12::i;:::-;13332:89;13370:6;13332:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13332:19:0;;;;;;:11;:19;;;;;;13352:12;:10;:12::i;:::-;-1:-1:-1;;;;;13332:33:0;;;;;;;;;;;;-1:-1:-1;13332:33:0;;;:89;:37;:89::i;:::-;13301:8;:121::i;:::-;-1:-1:-1;13440:4:0;13129:323;;;;;:::o;11437:286::-;8457:12;:10;:12::i;:::-;8447:6;;-1:-1:-1;;;;;8447:6:0;;;:22;;;8439:67;;;;-1:-1:-1;;;8439:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11538:24:0;::::1;11530:74;;;;-1:-1:-1::0;;;11530:74:0::1;;;;;;;:::i;:::-;11624:8;11623:9;:21;;;;11636:8;11623:21;11615:54;;;;-1:-1:-1::0;;;11615:54:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11680:24:0;;;::::1;;::::0;;;:12:::1;:24;::::0;;;;:35;;-1:-1:-1;;11680:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11437:286::o;10272:31::-;;;:::o;13861:220::-;13951:4;13968:83;13977:12;:10;:12::i;:::-;13991:7;14000:50;14039:10;14000:11;:25;14012:12;:10;:12::i;:::-;-1:-1:-1;;;;;14000:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;14000:25:0;;;:34;;;;;;;;;;;:38;:50::i;19713:83::-;19763:25;19769:10;19781:6;19763:5;:25::i;:::-;19713:83;:::o;11156:273::-;8457:12;:10;:12::i;:::-;8447:6;;-1:-1:-1;;;;;8447:6:0;;;:22;;;8439:67;;;;-1:-1:-1;;;8439:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11252:21:0;::::1;11244:71;;;;-1:-1:-1::0;;;11244:71:0::1;;;;;;;:::i;:::-;11335:8;11334:9;:21;;;;11347:8;11334:21;11326:54;;;;-1:-1:-1::0;;;11326:54:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11391:19:0;;;::::1;;::::0;;;:10:::1;:19;::::0;;;;:30;;-1:-1:-1;;11391:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11156:273::o;11023:121::-;-1:-1:-1;;;;;11118:18:0;;11091:7;11118:18;;;:9;:18;;;;;;11023:121;;;;:::o;9119:142::-;8457:12;:10;:12::i;:::-;8447:6;;-1:-1:-1;;;;;8447:6:0;;;:22;;;8439:67;;;;-1:-1:-1;;;8439:67:0;;;;;;;:::i;:::-;9220:1:::1;9204:6:::0;;9183:40:::1;::::0;-1:-1:-1;;;;;9204:6:0;;::::1;::::0;9183:40:::1;::::0;9220:1;;9183:40:::1;9251:1;9234:19:::0;;-1:-1:-1;;;;;;9234:19:0::1;::::0;;9119:142::o;16299:370::-;-1:-1:-1;;;;;16470:18:0;;16428:7;16470:18;;;:10;:18;;;;;;16428:7;;16470:18;;;:45;;-1:-1:-1;;;;;;16492:23:0;;;;;;:12;:23;;;;;;;;16470:45;16467:94;;;-1:-1:-1;16539:6:0;;-1:-1:-1;16547:1:0;16531:18;;16467:94;16580:11;16594:27;16616:4;16594:17;:6;10348:1;16594:10;:17::i;:::-;:21;;:27::i;:::-;16580:41;-1:-1:-1;16640:15:0;:6;16580:41;16640:10;:15::i;:::-;16632:29;-1:-1:-1;16657:3:0;-1:-1:-1;16299:370:0;;;;;;;:::o;8235:79::-;8273:7;8300:6;-1:-1:-1;;;;;8300:6:0;8235:79;:::o;10245:20::-;;;;;;;:::i;14584:271::-;14679:4;14696:129;14705:12;:10;:12::i;:::-;14719:7;14728:96;14767:15;14728:96;;;;;;;;;;;;;;;;;:11;:25;14740:12;:10;:12::i;:::-;-1:-1:-1;;;;;14728:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;14728:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;10316:33::-;10348:1;10316:33;:::o;11936:177::-;12024:4;12041:42;12051:12;:10;:12::i;:::-;12065:9;12076:6;12041:9;:42::i;9815:145::-;8691:12;:10;:12::i;:::-;8678:9;;-1:-1:-1;;;;;8678:9:0;;;:25;;;8670:78;;;;-1:-1:-1;;;8670:78:0;;;;;;;:::i;:::-;9913:9:::1;::::0;::::1;9905:6:::0;;9884:39:::1;::::0;-1:-1:-1;;;;;9913:9:0;;::::1;::::0;9905:6;;::::1;::::0;9884:39:::1;::::0;::::1;9943:9;::::0;::::1;9934:18:::0;;-1:-1:-1;;;;;;9934:18:0::1;-1:-1:-1::0;;;;;9943:9:0;;::::1;9934:18:::0;;;::::1;::::0;;9815:145::o;10382:42::-;;;;;;;;;;;;;;;:::o;12176:153::-;-1:-1:-1;;;;;12294:18:0;;;12267:7;12294:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12176:153::o;9416:193::-;8457:12;:10;:12::i;:::-;8447:6;;-1:-1:-1;;;;;8447:6:0;;;:22;;;8439:67;;;;-1:-1:-1;;;8439:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9505:22:0;::::1;9497:73;;;;-1:-1:-1::0;;;9497:73:0::1;;;;;;;:::i;:::-;9581:9;:20:::0;;-1:-1:-1;;;;;;9581:20:0::1;-1:-1:-1::0;;;;;9581:20:0;;;::::1;::::0;;;::::1;::::0;;9416:193::o;399:181::-;457:7;;489:5;493:1;489;:5;:::i;:::-;477:17;;518:1;513;:6;;505:46;;;;-1:-1:-1;;;505:46:0;;;;;;;:::i;:::-;571:1;399:181;-1:-1:-1;;;399:181:0:o;7402:98::-;7482:10;7402:98;:::o;18514:346::-;-1:-1:-1;;;;;18616:19:0;;18608:68;;;;-1:-1:-1;;;18608:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18695:21:0;;18687:68;;;;-1:-1:-1;;;18687:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18768:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;18820:32;;;;;18798:6;;18820:32;:::i;:::-;;;;;;;;18514:346;;;:::o;15345:850::-;-1:-1:-1;;;;;15451:20:0;;15443:70;;;;-1:-1:-1;;;15443:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15532:23:0;;15524:71;;;;-1:-1:-1;;;15524:71:0;;;;;;;:::i;:::-;15608:47;15629:6;15637:9;15648:6;15608:20;:47::i;:::-;15687:19;15708:18;15730:40;15744:6;15752:9;15763:6;15730:13;:40::i;:::-;15686:84;;-1:-1:-1;15686:84:0;-1:-1:-1;15794:14:0;;15791:156;;15845:34;15868:10;15845:9;:18;15855:7;:5;:7::i;:::-;-1:-1:-1;;;;;15845:18:0;;;;;;;;;;;;-1:-1:-1;15845:18:0;;;:22;:34::i;:::-;15824:9;:18;15834:7;:5;:7::i;:::-;-1:-1:-1;;;;;15824:18:0;;;;;;;;;;;;-1:-1:-1;15824:18:0;:55;15916:7;:5;:7::i;:::-;-1:-1:-1;;;;;15899:37:0;15908:6;-1:-1:-1;;;;;15899:37:0;;15925:10;15899:37;;;;;;:::i;:::-;;;;;;;;15791:156;15989:71;16011:6;15989:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15989:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;15969:17:0;;;;;;;:9;:17;;;;;;:91;;;;16094:20;;;;;;;:37;;16119:11;16094:24;:37::i;:::-;-1:-1:-1;;;;;16071:20:0;;;;;;;:9;:20;;;;;;;:60;;;;16147:40;;;;;;;;;;16175:11;;16147:40;:::i;:::-;;;;;;;;15345:850;;;;;:::o;1302:192::-;1388:7;1424:12;1416:6;;;;1408:29;;;;-1:-1:-1;;;1408:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1448:9:0;1460:5;1464:1;1460;:5;:::i;:::-;1448:17;1302:192;-1:-1:-1;;;;;1302:192:0:o;17660:416::-;-1:-1:-1;;;;;17744:21:0;;17736:67;;;;-1:-1:-1;;;17736:67:0;;;;;;;:::i;:::-;17816:49;17837:7;17854:1;17858:6;17816:20;:49::i;:::-;17899:68;17922:6;17899:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17899:18:0;;;;;;:9;:18;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;17878:18:0;;;;;;:9;:18;;;;;:89;17992:11;;:23;;18008:6;17992:15;:23::i;:::-;17978:11;:37;18031;;18057:1;;-1:-1:-1;;;;;18031:37:0;;;;;;;18061:6;;18031:37;:::i;:::-;;;;;;;;17660:416;;:::o;1753:471::-;1811:7;2056:6;2052:47;;-1:-1:-1;2086:1:0;2079:8;;2052:47;2111:9;2123:5;2127:1;2123;:5;:::i;:::-;2111:17;-1:-1:-1;2156:1:0;2147:5;2151:1;2111:17;2147:5;:::i;:::-;:10;2139:56;;;;-1:-1:-1;;;2139:56:0;;;;;;;:::i;2700:132::-;2758:7;2785:39;2789:1;2792;2785:39;;;;;;;;;;;;;;;;;:3;:39::i;863:136::-;921:7;948:43;952:1;955;948:43;;;;;;;;;;;;;;;;;:3;:43::i;19469:92::-;;;;:::o;3328:278::-;3414:7;3449:12;3442:5;3434:28;;;;-1:-1:-1;;;3434:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3473:9:0;3485:5;3489:1;3485;:5;:::i;14:175:1:-;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:198;;306:2;294:9;285:7;281:23;277:32;274:2;;;327:6;319;312:22;274:2;355:31;376:9;355:31;:::i;397:274::-;;;526:2;514:9;505:7;501:23;497:32;494:2;;;547:6;539;532:22;494:2;575:31;596:9;575:31;:::i;:::-;565:41;;625:40;661:2;650:9;646:18;625:40;:::i;:::-;615:50;;484:187;;;;;:::o;676:342::-;;;;822:2;810:9;801:7;797:23;793:32;790:2;;;843:6;835;828:22;790:2;871:31;892:9;871:31;:::i;:::-;861:41;;921:40;957:2;946:9;942:18;921:40;:::i;:::-;911:50;;1008:2;997:9;993:18;980:32;970:42;;780:238;;;;;:::o;1023:369::-;;;1149:2;1137:9;1128:7;1124:23;1120:32;1117:2;;;1170:6;1162;1155:22;1117:2;1198:31;1219:9;1198:31;:::i;:::-;1188:41;;1279:2;1268:9;1264:18;1251:32;1326:5;1319:13;1312:21;1305:5;1302:32;1292:2;;1353:6;1345;1338:22;1292:2;1381:5;1371:15;;;1107:285;;;;;:::o;1397:266::-;;;1526:2;1514:9;1505:7;1501:23;1497:32;1494:2;;;1547:6;1539;1532:22;1494:2;1575:31;1596:9;1575:31;:::i;:::-;1565:41;1653:2;1638:18;;;;1625:32;;-1:-1:-1;;;1484:179:1:o;1668:190::-;;1780:2;1768:9;1759:7;1755:23;1751:32;1748:2;;;1801:6;1793;1786:22;1748:2;-1:-1:-1;1829:23:1;;1738:120;-1:-1:-1;1738:120:1:o;1863:203::-;-1:-1:-1;;;;;2027:32:1;;;;2009:51;;1997:2;1982:18;;1964:102::o;2071:187::-;2236:14;;2229:22;2211:41;;2199:2;2184:18;;2166:92::o;2263:603::-;;2404:2;2433;2422:9;2415:21;2465:6;2459:13;2508:6;2503:2;2492:9;2488:18;2481:34;2533:4;2546:140;2560:6;2557:1;2554:13;2546:140;;;2655:14;;;2651:23;;2645:30;2621:17;;;2640:2;2617:26;2610:66;2575:10;;2546:140;;;2704:6;2701:1;2698:13;2695:2;;;2774:4;2769:2;2760:6;2749:9;2745:22;2741:31;2734:45;2695:2;-1:-1:-1;2850:2:1;2829:15;-1:-1:-1;;2825:29:1;2810:45;;;;2857:2;2806:54;;2384:482;-1:-1:-1;;;2384:482:1:o;2871:399::-;3073:2;3055:21;;;3112:2;3092:18;;;3085:30;3151:34;3146:2;3131:18;;3124:62;-1:-1:-1;;;3217:2:1;3202:18;;3195:33;3260:3;3245:19;;3045:225::o;3275:402::-;3477:2;3459:21;;;3516:2;3496:18;;;3489:30;3555:34;3550:2;3535:18;;3528:62;-1:-1:-1;;;3621:2:1;3606:18;;3599:36;3667:3;3652:19;;3449:228::o;3682:398::-;3884:2;3866:21;;;3923:2;3903:18;;;3896:30;3962:34;3957:2;3942:18;;3935:62;-1:-1:-1;;;4028:2:1;4013:18;;4006:32;4070:3;4055:19;;3856:224::o;4085:351::-;4287:2;4269:21;;;4326:2;4306:18;;;4299:30;4365:29;4360:2;4345:18;;4338:57;4427:2;4412:18;;4259:177::o;4441:344::-;4643:2;4625:21;;;4682:2;4662:18;;;4655:30;-1:-1:-1;;;4716:2:1;4701:18;;4694:50;4776:2;4761:18;;4615:170::o;4790:404::-;4992:2;4974:21;;;5031:2;5011:18;;;5004:30;5070:34;5065:2;5050:18;;5043:62;-1:-1:-1;;;5136:2:1;5121:18;;5114:38;5184:3;5169:19;;4964:230::o;5199:397::-;5401:2;5383:21;;;5440:2;5420:18;;;5413:30;5479:34;5474:2;5459:18;;5452:62;-1:-1:-1;;;5545:2:1;5530:18;;5523:31;5586:3;5571:19;;5373:223::o;5601:356::-;5803:2;5785:21;;;5822:18;;;5815:30;5881:34;5876:2;5861:18;;5854:62;5948:2;5933:18;;5775:182::o;5962:397::-;6164:2;6146:21;;;6203:2;6183:18;;;6176:30;6242:34;6237:2;6222:18;;6215:62;-1:-1:-1;;;6308:2:1;6293:18;;6286:31;6349:3;6334:19;;6136:223::o;6364:401::-;6566:2;6548:21;;;6605:2;6585:18;;;6578:30;6644:34;6639:2;6624:18;;6617:62;-1:-1:-1;;;6710:2:1;6695:18;;6688:35;6755:3;6740:19;;6538:227::o;6770:400::-;6972:2;6954:21;;;7011:2;6991:18;;;6984:30;7050:34;7045:2;7030:18;;7023:62;-1:-1:-1;;;7116:2:1;7101:18;;7094:34;7160:3;7145:19;;6944:226::o;7175:177::-;7321:25;;;7309:2;7294:18;;7276:76::o;7357:248::-;7531:25;;;7587:2;7572:18;;7565:34;7519:2;7504:18;;7486:119::o;7610:184::-;7782:4;7770:17;;;;7752:36;;7740:2;7725:18;;7707:87::o;7799:128::-;;7870:1;7866:6;7863:1;7860:13;7857:2;;;7876:18;;:::i;:::-;-1:-1:-1;7912:9:1;;7847:80::o;7932:217::-;;7998:1;7988:2;;-1:-1:-1;;;8023:31:1;;8077:4;8074:1;8067:15;8105:4;8030:1;8095:15;7988:2;-1:-1:-1;8134:9:1;;7978:171::o;8154:168::-;;8260:1;8256;8252:6;8248:14;8245:1;8242:21;8237:1;8230:9;8223:17;8219:45;8216:2;;;8267:18;;:::i;:::-;-1:-1:-1;8307:9:1;;8206:116::o;8327:125::-;;8395:1;8392;8389:8;8386:2;;;8400:18;;:::i;:::-;-1:-1:-1;8437:9:1;;8376:76::o;8457:380::-;8542:1;8532:12;;8589:1;8579:12;;;8600:2;;8654:4;8646:6;8642:17;8632:27;;8600:2;8707;8699:6;8696:14;8676:18;8673:38;8670:2;;;8753:10;8748:3;8744:20;8741:1;8734:31;8788:4;8785:1;8778:15;8816:4;8813:1;8806:15;8670:2;;8512:325;;;:::o;8842:127::-;8903:10;8898:3;8894:20;8891:1;8884:31;8934:4;8931:1;8924:15;8958:4;8955:1;8948:15

Swarm Source

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