ETH Price: $3,780.01 (+0.89%)
Gas: 6 Gwei

Token

T2T2 (T2T2)
 

Overview

Max Total Supply

10,000,000,000 T2T2

Holders

2,388

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
T2T2Coin

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT LICENSE

pragma solidity ^0.8.20;
 //0.8.21 9974 shanghai
library SafeMath {
  
  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  /**
  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}


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

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

interface IERC20{
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns(uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
    */
    function balanceOf(address acount) 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);


}

interface IERC20Metadata is IERC20 {
     /**
     * @dev Returns the name of the token.
     */
    function name() external view returns(string memory);
    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns(string memory);
    /**
     * @dev Returns the decimals places of the token.
     */ 
    function decimals() external view returns(uint8);
    
}




contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    uint256 private _totalMintedSupply;
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory sysmbol_) {
        _name = name_;
        _symbol = sysmbol_;
        _decimals=18;
        _totalSupply =10000000000000000000000000000;
        _totalMintedSupply=0;
    }

    /**
     * @dev Retruns the name of the token.
     *
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

  

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */ /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */

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

    function _setDecimals(uint8 decimals_) internal virtual{
        _decimals = decimals_;

    }

    function _resetNameErc20(
        string memory name_,
        string memory symbol_
    ) internal virtual {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }
     /**
     * @dev See {ERC20-totalSupply}.
     */
    function totalMintedSupply() public view   returns (uint256) {
        return _totalMintedSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @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
    ) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(
        address owner,
        address spender
    ) public 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
    ) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

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

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This 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 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            // _balances[sender] = senderBalance - amount;
            _balances[sender] = senderBalance.sub(amount);
        }
        // _balances[recipient] += amount;
        _balances[recipient] = _balances[recipient].add(amount);

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _totalMintedSupply = _totalMintedSupply.add(amount);
        require(_totalMintedSupply<=_totalSupply," totalSupply error ");
        _beforeTokenTransfer(address(0), account, amount);
        _balances[account] = _balances[account].add(amount);
       
        emit Transfer(address(0), account, amount);
        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        // require(_totalSupply>=amount, "ERC20: burn not enough _totalSupply");
        _beforeTokenTransfer(account, address(0), amount);
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            // _balances[account] = accountBalance - amount;
            _balances[account] = accountBalance.sub(amount);
        }
        // _totalSupply -= amount;
        _totalMintedSupply = _totalMintedSupply.sub(amount); 
        _totalSupply = _totalSupply.sub(amount);

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

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

abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

   /**
    * @dev Returns the address of the current owner
    */
   function owner() public view virtual 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 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() public virtual onlyOwner{
     _setOwner(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");
        _setOwner(newOwner);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }



  
}

abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        _requirePaused();
        _;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Throws if the contract is paused.
     */
    function _requireNotPaused() internal view virtual {
        require(!paused(), "Pausable: paused");
    }

    /**
     * @dev Throws if the contract is not paused.
     */
    function _requirePaused() internal view virtual {
        require(paused(), "Pausable: not paused");
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}


contract Utilities is Ownable,Pausable{
    modifier nonZeroAddress(address _address){
        require(address(0)!=_address,"0 address");
        _;
    }

    modifier nonZeroLength(uint[] memory _array){
         require(_array.length > 0, "Empty array");
         _;

    }

     modifier lengthsAreEqual(uint[] memory _array1, uint[] memory _array2) {
        require(_array1.length == _array2.length, "Unequal lengths");
        _;
    }

    modifier onlyEOA(){
        require(msg.sender==tx.origin,"No contracts");
        _;
    }

    function isOwner() internal view returns(bool)
    {
        return owner()==msg.sender;
    }
}

contract Adminable is Utilities{

    mapping(address=>bool) private admins;
    constructor(){
       
    }
    function addAdmin(address _address) external onlyOwner{        
        admins[_address]=true;
        
    }

    function addAdmins(address[] calldata _addresses) external onlyOwner{
        uint256 len = _addresses.length;
        for(uint256 i=0;i<len;i++)
        {            
            admins[_addresses[i]]=true;
        }
    }

    function removeAdmin(address _address) external onlyOwner{
        admins[_address]=false;
    }

    function removeAdmins(address[] calldata _addresses) external onlyOwner{
        uint256 len = _addresses.length;
        for(uint256 i=0;i<len;i++)
        {            
            admins[_addresses[i]]=false;
        }
    }

    function setPause(bool _shouldPause) external onlyAdminOrOwner{
        if(_shouldPause)
        {
            _pause();
        }else
        {
            _unpause();
        }
    }

    function isAdmin(address _address) public view returns(bool){
        return admins[_address];
    }

    modifier onlyAdmin(){
        require(admins[msg.sender], "Not admin");
        _;
    }

    modifier onlyAdminOrOwner(){
        require(admins[msg.sender]||isOwner(), "Not admin or owner");
        _;
    }
}

contract T2T2Coin is ERC20,Adminable {

  // address => allowedToCallFunctions
  mapping(address => bool) private admins;
  
  constructor() ERC20("T2T2", "T2T2") {    
     
  }


  function setDecimals(uint8 decimals_) external  onlyOwner{
      _setDecimals(decimals_);
  }
 
  function resetNameCoin(string calldata name_,string calldata symbol_) external onlyOwner{
      _resetNameErc20(name_,symbol_);
  }
 


 

  /**
   * mints $T2T2 to a recipient
   * @param to the recipient of the $T2T2
   * @param amount the amount of $T2T2 to mint
   */
  function mint(address to, uint256 amount) external  whenNotPaused onlyAdminOrOwner {    
    require(isAdmin(msg.sender), "T2T2: Only admins can mint");
    _mint(to, amount);
  }



  /**
    * @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 to,
      uint256 amount
  ) public override  whenNotPaused returns (bool) {
  
    return super.transferFrom(sender, to, amount);
  }


  function balanceOf(address account) public view virtual override   returns (uint256) {
    
    return super.balanceOf(account);
  }

  function transfer(address recipient, uint256 amount) public virtual override  whenNotPaused returns (bool) {   
    return super.transfer(recipient, amount);
  }

  // Not ensuring state changed in this block as it would needlessly increase gas
  function allowance(address owner, address spender) public view virtual override whenNotPaused returns (uint256) {
    return super.allowance(owner, spender);
  }

  // Not ensuring state changed in this block as it would needlessly increase gas
  function approve(address spender, uint256 amount) public virtual override whenNotPaused returns (bool) {
    return super.approve(spender, amount);
  }

  // Not ensuring state changed in this block as it would needlessly increase gas
  function increaseAllowance(address spender, uint256 addedValue) public virtual override whenNotPaused returns (bool) {
    return super.increaseAllowance(spender, addedValue);
  }

  // Not ensuring state changed in this block as it would needlessly increase gas
  function decreaseAllowance(address spender, uint256 subtractedValue) public virtual override whenNotPaused returns (bool) {
    return super.decreaseAllowance(spender, subtractedValue);
  }


}

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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"addAdmins","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"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":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"removeAdmins","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"name":"resetNameCoin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"decimals_","type":"uint8"}],"name":"setDecimals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_shouldPause","type":"bool"}],"name":"setPause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMintedSupply","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801562000010575f80fd5b506040805180820182526004808252632a192a1960e11b602080840182905284518086019095528285528401529091906200004c83826200019d565b5060056200005b82826200019d565b50506006805460ff19166012179055506b204fce5e3e250261100000006002555f600355620000916200008b3390565b620000a4565b6006805460ff60a81b1916905562000265565b600680546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200012657607f821691505b6020821081036200014557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000198575f81815260208120601f850160051c81016020861015620001735750805b601f850160051c820191505b8181101562000194578281556001016200017f565b5050505b505050565b81516001600160401b03811115620001b957620001b9620000fd565b620001d181620001ca845462000111565b846200014b565b602080601f83116001811462000207575f8415620001ef5750858301515b5f19600386901b1c1916600185901b17855562000194565b5f85815260208120601f198616915b82811015620002375788860151825594840194600190910190840162000216565b50858210156200025557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b61163a80620002735f395ff3fe608060405234801561000f575f80fd5b506004361061016d575f3560e01c806370480275116100d95780639c54df6411610093578063a9059cbb1161006e578063a9059cbb1461032a578063bedb86fb1461033d578063dd62ed3e14610350578063f2fde38b14610363575f80fd5b80639c54df64146102f15780639ef87d5414610304578063a457c2d714610317575f80fd5b8063704802751461027f57806370a0823114610292578063715018a6146102a55780637a1395aa146102ad5780638da5cb5b146102c057806395d89b41146102e9575f80fd5b8063313ce5671161012a578063313ce56714610217578063377e11e01461022c578063395093511461023f57806340c10f19146102525780635c975abb14610265578063601e260314610277575f80fd5b806306fdde0314610171578063095ea7b31461018f5780631785f53c146101b257806318160ddd146101c757806323b872dd146101d957806324d7806c146101ec575b5f80fd5b610179610376565b6040516101869190611195565b60405180910390f35b6101a261019d3660046111fb565b610406565b6040519015158152602001610186565b6101c56101c0366004611223565b610422565b005b6002545b604051908152602001610186565b6101a26101e736600461123c565b61047b565b6101a26101fa366004611223565b6001600160a01b03165f9081526007602052604090205460ff1690565b60065460405160ff9091168152602001610186565b6101c561023a366004611275565b610497565b6101a261024d3660046111fb565b61053c565b6101c56102603660046111fb565b61054f565b600654600160a81b900460ff166101a2565b6003546101cb565b6101c561028d366004611223565b610624565b6101cb6102a0366004611223565b610677565b6101c5610694565b6101c56102bb3660046112e4565b6106cf565b60065461010090046001600160a01b03166040516001600160a01b039091168152602001610186565b610179610714565b6101c56102ff366004611275565b610723565b6101c5610312366004611349565b6107c3565b6101a26103253660046111fb565b610864565b6101a26103383660046111fb565b610877565b6101c561034b3660046113b0565b61088a565b6101cb61035e3660046113cf565b610901565b6101c5610371366004611223565b610934565b60606004805461038590611400565b80601f01602080910402602001604051908101604052809291908181526020018280546103b190611400565b80156103fc5780601f106103d3576101008083540402835291602001916103fc565b820191905f5260205f20905b8154815290600101906020018083116103df57829003601f168201915b5050505050905090565b5f61040f6109d2565b6104198383610a1f565b90505b92915050565b6006546001600160a01b0361010090910416331461045b5760405162461bcd60e51b815260040161045290611438565b60405180910390fd5b6001600160a01b03165f908152600760205260409020805460ff19169055565b5f6104846109d2565b61048f848484610a34565b949350505050565b6006546001600160a01b036101009091041633146104c75760405162461bcd60e51b815260040161045290611438565b805f5b81811015610536575f60075f8686858181106104e8576104e861146d565b90506020020160208101906104fd9190611223565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061052e81611495565b9150506104ca565b50505050565b5f6105456109d2565b6104198383610adc565b6105576109d2565b335f9081526007602052604090205460ff16806105775750610577610b17565b6105b85760405162461bcd60e51b81526020600482015260126024820152712737ba1030b236b4b71037b91037bbb732b960711b6044820152606401610452565b335f9081526007602052604090205460ff166106165760405162461bcd60e51b815260206004820152601a60248201527f543254323a204f6e6c792061646d696e732063616e206d696e740000000000006044820152606401610452565b6106208282610b40565b5050565b6006546001600160a01b036101009091041633146106545760405162461bcd60e51b815260040161045290611438565b6001600160a01b03165f908152600760205260409020805460ff19166001179055565b6001600160a01b0381165f9081526020819052604081205461041c565b6006546001600160a01b036101009091041633146106c45760405162461bcd60e51b815260040161045290611438565b6106cd5f610c65565b565b6006546001600160a01b036101009091041633146106ff5760405162461bcd60e51b815260040161045290611438565b6006805460ff191660ff831617905550565b50565b60606005805461038590611400565b6006546001600160a01b036101009091041633146107535760405162461bcd60e51b815260040161045290611438565b805f5b8181101561053657600160075f8686858181106107755761077561146d565b905060200201602081019061078a9190611223565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806107bb81611495565b915050610756565b6006546001600160a01b036101009091041633146107f35760405162461bcd60e51b815260040161045290611438565b61053684848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f880181900481028201810190925286815292508691508590819084018382808284375f92019190915250610cbe92505050565b5f61086d6109d2565b6104198383610cdc565b5f6108806109d2565b6104198383610d74565b335f9081526007602052604090205460ff16806108aa57506108aa610b17565b6108eb5760405162461bcd60e51b81526020600482015260126024820152712737ba1030b236b4b71037b91037bbb732b960711b6044820152606401610452565b80156108f957610711610d80565b610711610de0565b5f61090a6109d2565b6001600160a01b038084165f90815260016020908152604080832093861683529290522054610419565b6006546001600160a01b036101009091041633146109645760405162461bcd60e51b815260040161045290611438565b6001600160a01b0381166109c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610452565b61071181610c65565b600654600160a81b900460ff16156106cd5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610452565b5f610a2b338484610e1c565b50600192915050565b5f610a40848484610f3f565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610ac45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610452565b610ad18533858403610e1c565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610a2b918590610b129086906114ad565b610e1c565b5f33610b316006546001600160a01b036101009091041690565b6001600160a01b031614905090565b6001600160a01b038216610b965760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610452565b600354610ba3908261110c565b60038190556002541015610bef5760405162461bcd60e51b81526020600482015260136024820152720103a37ba30b629bab838363c9032b93937b91606d1b6044820152606401610452565b6001600160a01b0382165f90815260208190526040902054610c11908261110c565b6001600160a01b0383165f81815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600680546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6004610cca8382611521565b506005610cd78282611521565b505050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610d5d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610452565b610d6a3385858403610e1c565b5060019392505050565b5f610a2b338484610f3f565b610d886109d2565b6006805460ff60a81b1916600160a81b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610dc33390565b6040516001600160a01b03909116815260200160405180910390a1565b610de861112a565b6006805460ff60a81b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33610dc3565b6001600160a01b038316610e7e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610452565b6001600160a01b038216610edf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610452565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fa35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610452565b6001600160a01b0382166110055760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610452565b6001600160a01b0383165f908152602081905260409020548181101561107c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610452565b611086818361117a565b6001600160a01b038086165f9081526020819052604080822093909355908516815220546110b4908361110c565b6001600160a01b038481165f818152602081815260409182902094909455518581529092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610536565b5f8061111883856114ad565b905083811015610419576104196115dd565b600654600160a81b900460ff166106cd5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610452565b5f8282111561118b5761118b6115dd565b61041982846115f1565b5f6020808352835180828501525f5b818110156111c0578581018301518582016040015282016111a4565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146111f6575f80fd5b919050565b5f806040838503121561120c575f80fd5b611215836111e0565b946020939093013593505050565b5f60208284031215611233575f80fd5b610419826111e0565b5f805f6060848603121561124e575f80fd5b611257846111e0565b9250611265602085016111e0565b9150604084013590509250925092565b5f8060208385031215611286575f80fd5b823567ffffffffffffffff8082111561129d575f80fd5b818501915085601f8301126112b0575f80fd5b8135818111156112be575f80fd5b8660208260051b85010111156112d2575f80fd5b60209290920196919550909350505050565b5f602082840312156112f4575f80fd5b813560ff81168114610419575f80fd5b5f8083601f840112611314575f80fd5b50813567ffffffffffffffff81111561132b575f80fd5b602083019150836020828501011115611342575f80fd5b9250929050565b5f805f806040858703121561135c575f80fd5b843567ffffffffffffffff80821115611373575f80fd5b61137f88838901611304565b90965094506020870135915080821115611397575f80fd5b506113a487828801611304565b95989497509550505050565b5f602082840312156113c0575f80fd5b81358015158114610419575f80fd5b5f80604083850312156113e0575f80fd5b6113e9836111e0565b91506113f7602084016111e0565b90509250929050565b600181811c9082168061141457607f821691505b60208210810361143257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016114a6576114a6611481565b5060010190565b8082018082111561041c5761041c611481565b634e487b7160e01b5f52604160045260245ffd5b601f821115610cd7575f81815260208120601f850160051c810160208610156114fa5750805b601f850160051c820191505b8181101561151957828155600101611506565b505050505050565b815167ffffffffffffffff81111561153b5761153b6114c0565b61154f816115498454611400565b846114d4565b602080601f831160018114611582575f841561156b5750858301515b5f19600386901b1c1916600185901b178555611519565b5f85815260208120601f198616915b828110156115b057888601518255948401946001909101908401611591565b50858210156115cd57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52600160045260245ffd5b8181038181111561041c5761041c61148156fea2646970667358221220f7715dde9bd29c0f55f2f003a4d7786a5463a332ed9639e7e83745d5f9c85a8a64736f6c63430008150033

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061016d575f3560e01c806370480275116100d95780639c54df6411610093578063a9059cbb1161006e578063a9059cbb1461032a578063bedb86fb1461033d578063dd62ed3e14610350578063f2fde38b14610363575f80fd5b80639c54df64146102f15780639ef87d5414610304578063a457c2d714610317575f80fd5b8063704802751461027f57806370a0823114610292578063715018a6146102a55780637a1395aa146102ad5780638da5cb5b146102c057806395d89b41146102e9575f80fd5b8063313ce5671161012a578063313ce56714610217578063377e11e01461022c578063395093511461023f57806340c10f19146102525780635c975abb14610265578063601e260314610277575f80fd5b806306fdde0314610171578063095ea7b31461018f5780631785f53c146101b257806318160ddd146101c757806323b872dd146101d957806324d7806c146101ec575b5f80fd5b610179610376565b6040516101869190611195565b60405180910390f35b6101a261019d3660046111fb565b610406565b6040519015158152602001610186565b6101c56101c0366004611223565b610422565b005b6002545b604051908152602001610186565b6101a26101e736600461123c565b61047b565b6101a26101fa366004611223565b6001600160a01b03165f9081526007602052604090205460ff1690565b60065460405160ff9091168152602001610186565b6101c561023a366004611275565b610497565b6101a261024d3660046111fb565b61053c565b6101c56102603660046111fb565b61054f565b600654600160a81b900460ff166101a2565b6003546101cb565b6101c561028d366004611223565b610624565b6101cb6102a0366004611223565b610677565b6101c5610694565b6101c56102bb3660046112e4565b6106cf565b60065461010090046001600160a01b03166040516001600160a01b039091168152602001610186565b610179610714565b6101c56102ff366004611275565b610723565b6101c5610312366004611349565b6107c3565b6101a26103253660046111fb565b610864565b6101a26103383660046111fb565b610877565b6101c561034b3660046113b0565b61088a565b6101cb61035e3660046113cf565b610901565b6101c5610371366004611223565b610934565b60606004805461038590611400565b80601f01602080910402602001604051908101604052809291908181526020018280546103b190611400565b80156103fc5780601f106103d3576101008083540402835291602001916103fc565b820191905f5260205f20905b8154815290600101906020018083116103df57829003601f168201915b5050505050905090565b5f61040f6109d2565b6104198383610a1f565b90505b92915050565b6006546001600160a01b0361010090910416331461045b5760405162461bcd60e51b815260040161045290611438565b60405180910390fd5b6001600160a01b03165f908152600760205260409020805460ff19169055565b5f6104846109d2565b61048f848484610a34565b949350505050565b6006546001600160a01b036101009091041633146104c75760405162461bcd60e51b815260040161045290611438565b805f5b81811015610536575f60075f8686858181106104e8576104e861146d565b90506020020160208101906104fd9190611223565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790558061052e81611495565b9150506104ca565b50505050565b5f6105456109d2565b6104198383610adc565b6105576109d2565b335f9081526007602052604090205460ff16806105775750610577610b17565b6105b85760405162461bcd60e51b81526020600482015260126024820152712737ba1030b236b4b71037b91037bbb732b960711b6044820152606401610452565b335f9081526007602052604090205460ff166106165760405162461bcd60e51b815260206004820152601a60248201527f543254323a204f6e6c792061646d696e732063616e206d696e740000000000006044820152606401610452565b6106208282610b40565b5050565b6006546001600160a01b036101009091041633146106545760405162461bcd60e51b815260040161045290611438565b6001600160a01b03165f908152600760205260409020805460ff19166001179055565b6001600160a01b0381165f9081526020819052604081205461041c565b6006546001600160a01b036101009091041633146106c45760405162461bcd60e51b815260040161045290611438565b6106cd5f610c65565b565b6006546001600160a01b036101009091041633146106ff5760405162461bcd60e51b815260040161045290611438565b6006805460ff191660ff831617905550565b50565b60606005805461038590611400565b6006546001600160a01b036101009091041633146107535760405162461bcd60e51b815260040161045290611438565b805f5b8181101561053657600160075f8686858181106107755761077561146d565b905060200201602081019061078a9190611223565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055806107bb81611495565b915050610756565b6006546001600160a01b036101009091041633146107f35760405162461bcd60e51b815260040161045290611438565b61053684848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f880181900481028201810190925286815292508691508590819084018382808284375f92019190915250610cbe92505050565b5f61086d6109d2565b6104198383610cdc565b5f6108806109d2565b6104198383610d74565b335f9081526007602052604090205460ff16806108aa57506108aa610b17565b6108eb5760405162461bcd60e51b81526020600482015260126024820152712737ba1030b236b4b71037b91037bbb732b960711b6044820152606401610452565b80156108f957610711610d80565b610711610de0565b5f61090a6109d2565b6001600160a01b038084165f90815260016020908152604080832093861683529290522054610419565b6006546001600160a01b036101009091041633146109645760405162461bcd60e51b815260040161045290611438565b6001600160a01b0381166109c95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610452565b61071181610c65565b600654600160a81b900460ff16156106cd5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610452565b5f610a2b338484610e1c565b50600192915050565b5f610a40848484610f3f565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610ac45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610452565b610ad18533858403610e1c565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610a2b918590610b129086906114ad565b610e1c565b5f33610b316006546001600160a01b036101009091041690565b6001600160a01b031614905090565b6001600160a01b038216610b965760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610452565b600354610ba3908261110c565b60038190556002541015610bef5760405162461bcd60e51b81526020600482015260136024820152720103a37ba30b629bab838363c9032b93937b91606d1b6044820152606401610452565b6001600160a01b0382165f90815260208190526040902054610c11908261110c565b6001600160a01b0383165f81815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600680546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6004610cca8382611521565b506005610cd78282611521565b505050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610d5d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610452565b610d6a3385858403610e1c565b5060019392505050565b5f610a2b338484610f3f565b610d886109d2565b6006805460ff60a81b1916600160a81b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610dc33390565b6040516001600160a01b03909116815260200160405180910390a1565b610de861112a565b6006805460ff60a81b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33610dc3565b6001600160a01b038316610e7e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610452565b6001600160a01b038216610edf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610452565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fa35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610452565b6001600160a01b0382166110055760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610452565b6001600160a01b0383165f908152602081905260409020548181101561107c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610452565b611086818361117a565b6001600160a01b038086165f9081526020819052604080822093909355908516815220546110b4908361110c565b6001600160a01b038481165f818152602081815260409182902094909455518581529092918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610536565b5f8061111883856114ad565b905083811015610419576104196115dd565b600654600160a81b900460ff166106cd5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610452565b5f8282111561118b5761118b6115dd565b61041982846115f1565b5f6020808352835180828501525f5b818110156111c0578581018301518582016040015282016111a4565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146111f6575f80fd5b919050565b5f806040838503121561120c575f80fd5b611215836111e0565b946020939093013593505050565b5f60208284031215611233575f80fd5b610419826111e0565b5f805f6060848603121561124e575f80fd5b611257846111e0565b9250611265602085016111e0565b9150604084013590509250925092565b5f8060208385031215611286575f80fd5b823567ffffffffffffffff8082111561129d575f80fd5b818501915085601f8301126112b0575f80fd5b8135818111156112be575f80fd5b8660208260051b85010111156112d2575f80fd5b60209290920196919550909350505050565b5f602082840312156112f4575f80fd5b813560ff81168114610419575f80fd5b5f8083601f840112611314575f80fd5b50813567ffffffffffffffff81111561132b575f80fd5b602083019150836020828501011115611342575f80fd5b9250929050565b5f805f806040858703121561135c575f80fd5b843567ffffffffffffffff80821115611373575f80fd5b61137f88838901611304565b90965094506020870135915080821115611397575f80fd5b506113a487828801611304565b95989497509550505050565b5f602082840312156113c0575f80fd5b81358015158114610419575f80fd5b5f80604083850312156113e0575f80fd5b6113e9836111e0565b91506113f7602084016111e0565b90509250929050565b600181811c9082168061141457607f821691505b60208210810361143257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f600182016114a6576114a6611481565b5060010190565b8082018082111561041c5761041c611481565b634e487b7160e01b5f52604160045260245ffd5b601f821115610cd7575f81815260208120601f850160051c810160208610156114fa5750805b601f850160051c820191505b8181101561151957828155600101611506565b505050505050565b815167ffffffffffffffff81111561153b5761153b6114c0565b61154f816115498454611400565b846114d4565b602080601f831160018114611582575f841561156b5750858301515b5f19600386901b1c1916600185901b178555611519565b5f85815260208120601f198616915b828110156115b057888601518255948401946001909101908401611591565b50858210156115cd57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52600160045260245ffd5b8181038181111561041c5761041c61148156fea2646970667358221220f7715dde9bd29c0f55f2f003a4d7786a5463a332ed9639e7e83745d5f9c85a8a64736f6c63430008150033

Deployed Bytecode Sourcemap

19562:2797:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5468:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21649:153;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;21649:153:0;1004:187:1;18681:98:0;;;;;;:::i;:::-;;:::i;:::-;;7513:108;7601:12;;7513:108;;;1533:25:1;;;1521:2;1506:18;7513:108:0;1387:177:1;20796:200:0;;;;;;:::i;:::-;;:::i;19228:102::-;;;;;;:::i;:::-;-1:-1:-1;;;;;19306:16:0;19283:4;19306:16;;;:6;:16;;;;;;;;;19228:102;7064:100;7147:9;;7064:100;;7147:9;;;;2044:36:1;;2032:2;2017:18;7064:100:0;1902:184:1;18787:233:0;;;;;;:::i;:::-;;:::i;21891:181::-;;;;;;:::i;:::-;;:::i;20144:182::-;;;;;;:::i;:::-;;:::i;16549:86::-;16620:7;;-1:-1:-1;;;16620:7:0;;;;16549:86;;7684:105;7763:18;;7684:105;;18324:112;;;;;;:::i;:::-;;:::i;21004:135::-;;;;;;:::i;:::-;;:::i;14779:89::-;;;:::i;19755:95::-;;;;;;:::i;:::-;;:::i;14137:84::-;14208:6;;;;;-1:-1:-1;;;;;14208:6:0;14137:84;;-1:-1:-1;;;;;3149:32:1;;;3131:51;;3119:2;3104:18;14137:84:0;2985:203:1;5687:104:0;;;:::i;18444:229::-;;;;;;:::i;:::-;;:::i;19857:133::-;;;;;;:::i;:::-;;:::i;22161:191::-;;;;;;:::i;:::-;;:::i;21145:163::-;;;;;;:::i;:::-;;:::i;19028:192::-;;;;;;:::i;:::-;;:::i;21397:163::-;;;;;;:::i;:::-;;:::i;15026:192::-;;;;;;:::i;:::-;;:::i;5468:100::-;5522:13;5555:5;5548:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5468:100;:::o;21649:153::-;21746:4;16154:19;:17;:19::i;:::-;21766:30:::1;21780:7;21789:6;21766:13;:30::i;:::-;21759:37;;16184:1;21649:153:::0;;;;:::o;18681:98::-;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;1277:10;14352:21;14344:65;;;;-1:-1:-1;;;14344:65:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;18749:16:0::1;18766:5;18749:16:::0;;;:6:::1;:16;::::0;;;;:22;;-1:-1:-1;;18749:22:0::1;::::0;;18681:98::o;20796:200::-;20928:4;16154:19;:17;:19::i;:::-;20952:38:::1;20971:6;20979:2;20983:6;20952:18;:38::i;:::-;20945:45:::0;20796:200;-1:-1:-1;;;;20796:200:0:o;18787:233::-;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;1277:10;14352:21;14344:65;;;;-1:-1:-1;;;14344:65:0;;;;;;;:::i;:::-;18883:10;18869:11:::1;18911:102;18929:3;18927:1;:5;18911:102;;;18996:5;18974:6;:21;18981:10;;18992:1;18981:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18974:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18974:21:0;:27;;-1:-1:-1;;18974:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18933:3;::::1;::::0;::::1;:::i;:::-;;;;18911:102;;;;18858:162;18787:233:::0;;:::o;21891:181::-;22002:4;16154:19;:17;:19::i;:::-;22022:44:::1;22046:7;22055:10;22022:23;:44::i;20144:182::-:0;16154:19;:17;:19::i;:::-;19490:10:::1;19483:18;::::0;;;:6:::1;:18;::::0;;;;;::::1;;::::0;:29:::1;;;19503:9;:7;:9::i;:::-;19475:60;;;::::0;-1:-1:-1;;;19475:60:0;;6167:2:1;19475:60:0::1;::::0;::::1;6149:21:1::0;6206:2;6186:18;;;6179:30;-1:-1:-1;;;6225:18:1;;;6218:48;6283:18;;19475:60:0::1;5965:342:1::0;19475:60:0::1;20254:10:::2;19283:4:::0;19306:16;;;:6;:16;;;;;;;;20238:58:::2;;;::::0;-1:-1:-1;;;20238:58:0;;6514:2:1;20238:58:0::2;::::0;::::2;6496:21:1::0;6553:2;6533:18;;;6526:30;6592:28;6572:18;;;6565:56;6638:18;;20238:58:0::2;6312:350:1::0;20238:58:0::2;20303:17;20309:2;20313:6;20303:5;:17::i;:::-;20144:182:::0;;:::o;18324:112::-;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;1277:10;14352:21;14344:65;;;;-1:-1:-1;;;14344:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18397:16:0::1;;::::0;;;:6:::1;:16;::::0;;;;:21;;-1:-1:-1;;18397:21:0::1;18414:4;18397:21;::::0;;18324:112::o;21004:135::-;-1:-1:-1;;;;;7969:18:0;;21080:7;7969:18;;;;;;;;;;;21109:24;7852:143;14779:89;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;1277:10;14352:21;14344:65;;;;-1:-1:-1;;;14344:65:0;;;;;;;:::i;:::-;14840:21:::1;14858:1;14840:9;:21::i;:::-;14779:89::o:0;19755:95::-;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;1277:10;14352:21;14344:65;;;;-1:-1:-1;;;14344:65:0;;;;;;;:::i;:::-;7238:9;:21;;-1:-1:-1;;7238:21:0;;;;;;;19755:95;:::o;19821:23::-:1;19755:95:::0;:::o;5687:104::-;5743:13;5776:7;5769:14;;;;;:::i;18444:229::-;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;1277:10;14352:21;14344:65;;;;-1:-1:-1;;;14344:65:0;;;;;;;:::i;:::-;18537:10;18523:11:::1;18565:101;18583:3;18581:1;:5;18565:101;;;18650:4;18628:6;:21;18635:10;;18646:1;18635:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18628:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18628:21:0;:26;;-1:-1:-1;;18628:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18587:3;::::1;::::0;::::1;:::i;:::-;;;;18565:101;;19857:133:::0;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;1277:10;14352:21;14344:65;;;;-1:-1:-1;;;14344:65:0;;;;;;;:::i;:::-;19954:30:::1;19970:5;;19954:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;19954:30:0::1;::::0;;::::1;;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;19976:7:0;;-1:-1:-1;19976:7:0;;;;19954:30;::::1;19976:7:::0;;;;19954:30;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;19954:15:0::1;::::0;-1:-1:-1;;;19954:30:0:i:1;22161:191::-:0;22277:4;16154:19;:17;:19::i;:::-;22297:49:::1;22321:7;22330:15;22297:23;:49::i;21145:163::-:0;21246:4;16154:19;:17;:19::i;:::-;21269:33:::1;21284:9;21295:6;21269:14;:33::i;19028:192::-:0;19490:10;19483:18;;;;:6;:18;;;;;;;;;:29;;;19503:9;:7;:9::i;:::-;19475:60;;;;-1:-1:-1;;;19475:60:0;;6167:2:1;19475:60:0;;;6149:21:1;6206:2;6186:18;;;6179:30;-1:-1:-1;;;6225:18:1;;;6218:48;6283:18;;19475:60:0;5965:342:1;19475:60:0;19104:12:::1;19101:112;;;19142:8;:6;:8::i;19101:112::-;19191:10;:8;:10::i;21397:163::-:0;21500:7;16154:19;:17;:19::i;:::-;-1:-1:-1;;;;;8612:18:0;;;8585:7;8612:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;21523:31:::1;8471:176:::0;15026:192;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;1277:10;14352:21;14344:65;;;;-1:-1:-1;;;14344:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15115:22:0;::::1;15107:73;;;::::0;-1:-1:-1;;;15107:73:0;;6869:2:1;15107:73:0::1;::::0;::::1;6851:21:1::0;6908:2;6888:18;;;6881:30;6947:34;6927:18;;;6920:62;-1:-1:-1;;;6998:18:1;;;6991:36;7044:19;;15107:73:0::1;6667:402:1::0;15107:73:0::1;15191:19;15201:8;15191:9;:19::i;16708:108::-:0;16620:7;;-1:-1:-1;;;16620:7:0;;;;16778:9;16770:38;;;;-1:-1:-1;;;16770:38:0;;7276:2:1;16770:38:0;;;7258:21:1;7315:2;7295:18;;;7288:30;-1:-1:-1;;;7334:18:1;;;7327:46;7390:18;;16770:38:0;7074:340:1;8794:194:0;8902:4;8919:39;1277:10;8942:7;8951:6;8919:8;:39::i;:::-;-1:-1:-1;8976:4:0;8794:194;;;;:::o;8996:527::-;9136:4;9153:36;9163:6;9171:9;9182:6;9153:9;:36::i;:::-;-1:-1:-1;;;;;9227:19:0;;9200:24;9227:19;;;:11;:19;;;;;;;;1277:10;9227:33;;;;;;;;9293:26;;;;9271:116;;;;-1:-1:-1;;;9271:116:0;;7621:2:1;9271:116:0;;;7603:21:1;7660:2;7640:18;;;7633:30;7699:34;7679:18;;;7672:62;-1:-1:-1;;;7750:18:1;;;7743:38;7798:19;;9271:116:0;7419:404:1;9271:116:0;9423:57;9432:6;1277:10;9473:6;9454:16;:25;9423:8;:57::i;:::-;-1:-1:-1;9511:4:0;;8996:527;-1:-1:-1;;;;8996:527:0:o;9531:290::-;1277:10;9644:4;9733:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9733:34:0;;;;;;;;;;9644:4;;9661:130;;9711:7;;9733:47;;9770:10;;9733:47;:::i;:::-;9661:8;:130::i;18100:97::-;18141:4;18179:10;18170:7;14208:6;;-1:-1:-1;;;;;14208:6:0;;;;;;14137:84;18170:7;-1:-1:-1;;;;;18170:19:0;;18163:26;;18100:97;:::o;11704:528::-;-1:-1:-1;;;;;11788:21:0;;11780:65;;;;-1:-1:-1;;;11780:65:0;;8160:2:1;11780:65:0;;;8142:21:1;8199:2;8179:18;;;8172:30;8238:33;8218:18;;;8211:61;8289:18;;11780:65:0;7958:355:1;11780:65:0;11877:18;;:30;;11900:6;11877:22;:30::i;:::-;11856:18;:51;;;11946:12;;-1:-1:-1;11926:32:0;11918:63;;;;-1:-1:-1;;;11918:63:0;;8520:2:1;11918:63:0;;;8502:21:1;8559:2;8539:18;;;8532:30;-1:-1:-1;;;8578:18:1;;;8571:49;8637:18;;11918:63:0;8318:343:1;11918:63:0;-1:-1:-1;;;;;12073:18:0;;:9;:18;;;;;;;;;;;:30;;12096:6;12073:22;:30::i;:::-;-1:-1:-1;;;;;12052:18:0;;:9;:18;;;;;;;;;;;:51;;;;12128:37;;1533:25:1;;;12052:18:0;;:9;;12128:37;;1506:18:1;12128:37:0;;;;;;;20144:182;;:::o;15299:173::-;15374:6;;;-1:-1:-1;;;;;15391:17:0;;;15374:6;15391:17;;;-1:-1:-1;;;;;;15391:17:0;;;;;;15424:40;;15374:6;;;;;;;;15424:40;;15355:16;;15424:40;15344:128;15299:173;:::o;7277:171::-;7399:5;:13;7407:5;7399;:13;:::i;:::-;-1:-1:-1;7423:7:0;:17;7433:7;7423;:17;:::i;:::-;;7277:171;;:::o;9829:475::-;1277:10;9947:4;9991:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9991:34:0;;;;;;;;;;10058:35;;;;10036:122;;;;-1:-1:-1;;;10036:122:0;;11204:2:1;10036:122:0;;;11186:21:1;11243:2;11223:18;;;11216:30;11282:34;11262:18;;;11255:62;-1:-1:-1;;;11333:18:1;;;11326:35;11378:19;;10036:122:0;11002:401:1;10036:122:0;10194:67;1277:10;10217:7;10245:15;10226:16;:34;10194:8;:67::i;:::-;-1:-1:-1;10292:4:0;;9829:475;-1:-1:-1;;;9829:475:0:o;8208:200::-;8319:4;8336:42;1277:10;8360:9;8371:6;8336:9;:42::i;17145:118::-;16154:19;:17;:19::i;:::-;17205:7:::1;:14:::0;;-1:-1:-1;;;;17205:14:0::1;-1:-1:-1::0;;;17205:14:0::1;::::0;;17235:20:::1;17242:12;1277:10:::0;;1197:98;17242:12:::1;17235:20;::::0;-1:-1:-1;;;;;3149:32:1;;;3131:51;;3119:2;3104:18;17235:20:0::1;;;;;;;17145:118::o:0;17404:120::-;16413:16;:14;:16::i;:::-;17463:7:::1;:15:::0;;-1:-1:-1;;;;17463:15:0::1;::::0;;17494:22:::1;1277:10:::0;17503:12:::1;1197:98:::0;13098:380;-1:-1:-1;;;;;13234:19:0;;13226:68;;;;-1:-1:-1;;;13226:68:0;;11610:2:1;13226:68:0;;;11592:21:1;11649:2;11629:18;;;11622:30;11688:34;11668:18;;;11661:62;-1:-1:-1;;;11739:18:1;;;11732:34;11783:19;;13226:68:0;11408:400:1;13226:68:0;-1:-1:-1;;;;;13313:21:0;;13305:68;;;;-1:-1:-1;;;13305:68:0;;12015:2:1;13305:68:0;;;11997:21:1;12054:2;12034:18;;;12027:30;12093:34;12073:18;;;12066:62;-1:-1:-1;;;12144:18:1;;;12137:32;12186:19;;13305:68:0;11813:398:1;13305:68:0;-1:-1:-1;;;;;13386:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13438:32;;1533:25:1;;;13438:32:0;;1506:18:1;13438:32:0;;;;;;;13098:380;;;:::o;10796:900::-;-1:-1:-1;;;;;10936:20:0;;10928:70;;;;-1:-1:-1;;;10928:70:0;;12418:2:1;10928:70:0;;;12400:21:1;12457:2;12437:18;;;12430:30;12496:34;12476:18;;;12469:62;-1:-1:-1;;;12547:18:1;;;12540:35;12592:19;;10928:70:0;12216:401:1;10928:70:0;-1:-1:-1;;;;;11017:23:0;;11009:71;;;;-1:-1:-1;;;11009:71:0;;12824:2:1;11009:71:0;;;12806:21:1;12863:2;12843:18;;;12836:30;12902:34;12882:18;;;12875:62;-1:-1:-1;;;12953:18:1;;;12946:33;12996:19;;11009:71:0;12622:399:1;11009:71:0;-1:-1:-1;;;;;11175:17:0;;11151:21;11175:17;;;;;;;;;;;11225:23;;;;11203:111;;;;-1:-1:-1;;;11203:111:0;;13228:2:1;11203:111:0;;;13210:21:1;13267:2;13247:18;;;13240:30;13306:34;13286:18;;;13279:62;-1:-1:-1;;;13357:18:1;;;13350:36;13403:19;;11203:111:0;13026:402:1;11203:111:0;11430:25;:13;11448:6;11430:17;:25::i;:::-;-1:-1:-1;;;;;11410:17:0;;;:9;:17;;;;;;;;;;;:45;;;;11544:20;;;;;;;:32;;11569:6;11544:24;:32::i;:::-;-1:-1:-1;;;;;11521:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;11594:35;1533:25:1;;;11521:20:0;;11594:35;;;;;;1506:18:1;11594:35:0;;;;;;;11642:46;7277:171;1022:133;1080:7;;1108:5;1112:1;1108;:5;:::i;:::-;1096:17;;1132:1;1127;:6;;1120:14;;;;:::i;16893:108::-;16620:7;;-1:-1:-1;;;16620:7:0;;;;16952:41;;;;-1:-1:-1;;;16952:41:0;;13767:2:1;16952:41:0;;;13749:21:1;13806:2;13786:18;;;13779:30;-1:-1:-1;;;13825:18:1;;;13818:50;13885:18;;16952:41:0;13565:344:1;842:113:0;900:7;928:1;923;:6;;916:14;;;;:::i;:::-;944:5;948:1;944;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1196:186::-;1255:6;1308:2;1296:9;1287:7;1283:23;1279:32;1276:52;;;1324:1;1321;1314:12;1276:52;1347:29;1366:9;1347:29;:::i;1569:328::-;1646:6;1654;1662;1715:2;1703:9;1694:7;1690:23;1686:32;1683:52;;;1731:1;1728;1721:12;1683:52;1754:29;1773:9;1754:29;:::i;:::-;1744:39;;1802:38;1836:2;1825:9;1821:18;1802:38;:::i;:::-;1792:48;;1887:2;1876:9;1872:18;1859:32;1849:42;;1569:328;;;;;:::o;2091:615::-;2177:6;2185;2238:2;2226:9;2217:7;2213:23;2209:32;2206:52;;;2254:1;2251;2244:12;2206:52;2294:9;2281:23;2323:18;2364:2;2356:6;2353:14;2350:34;;;2380:1;2377;2370:12;2350:34;2418:6;2407:9;2403:22;2393:32;;2463:7;2456:4;2452:2;2448:13;2444:27;2434:55;;2485:1;2482;2475:12;2434:55;2525:2;2512:16;2551:2;2543:6;2540:14;2537:34;;;2567:1;2564;2557:12;2537:34;2620:7;2615:2;2605:6;2602:1;2598:14;2594:2;2590:23;2586:32;2583:45;2580:65;;;2641:1;2638;2631:12;2580:65;2672:2;2664:11;;;;;2694:6;;-1:-1:-1;2091:615:1;;-1:-1:-1;;;;2091:615:1:o;2711:269::-;2768:6;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2876:9;2863:23;2926:4;2919:5;2915:16;2908:5;2905:27;2895:55;;2946:1;2943;2936:12;3193:348;3245:8;3255:6;3309:3;3302:4;3294:6;3290:17;3286:27;3276:55;;3327:1;3324;3317:12;3276:55;-1:-1:-1;3350:20:1;;3393:18;3382:30;;3379:50;;;3425:1;3422;3415:12;3379:50;3462:4;3454:6;3450:17;3438:29;;3514:3;3507:4;3498:6;3490;3486:19;3482:30;3479:39;3476:59;;;3531:1;3528;3521:12;3476:59;3193:348;;;;;:::o;3546:721::-;3638:6;3646;3654;3662;3715:2;3703:9;3694:7;3690:23;3686:32;3683:52;;;3731:1;3728;3721:12;3683:52;3771:9;3758:23;3800:18;3841:2;3833:6;3830:14;3827:34;;;3857:1;3854;3847:12;3827:34;3896:59;3947:7;3938:6;3927:9;3923:22;3896:59;:::i;:::-;3974:8;;-1:-1:-1;3870:85:1;-1:-1:-1;4062:2:1;4047:18;;4034:32;;-1:-1:-1;4078:16:1;;;4075:36;;;4107:1;4104;4097:12;4075:36;;4146:61;4199:7;4188:8;4177:9;4173:24;4146:61;:::i;:::-;3546:721;;;;-1:-1:-1;4226:8:1;-1:-1:-1;;;;3546:721:1:o;4272:273::-;4328:6;4381:2;4369:9;4360:7;4356:23;4352:32;4349:52;;;4397:1;4394;4387:12;4349:52;4436:9;4423:23;4489:5;4482:13;4475:21;4468:5;4465:32;4455:60;;4511:1;4508;4501:12;4550:260;4618:6;4626;4679:2;4667:9;4658:7;4654:23;4650:32;4647:52;;;4695:1;4692;4685:12;4647:52;4718:29;4737:9;4718:29;:::i;:::-;4708:39;;4766:38;4800:2;4789:9;4785:18;4766:38;:::i;:::-;4756:48;;4550:260;;;;;:::o;4815:380::-;4894:1;4890:12;;;;4937;;;4958:61;;5012:4;5004:6;5000:17;4990:27;;4958:61;5065:2;5057:6;5054:14;5034:18;5031:38;5028:161;;5111:10;5106:3;5102:20;5099:1;5092:31;5146:4;5143:1;5136:15;5174:4;5171:1;5164:15;5028:161;;4815:380;;;:::o;5200:356::-;5402:2;5384:21;;;5421:18;;;5414:30;5480:34;5475:2;5460:18;;5453:62;5547:2;5532:18;;5200:356::o;5561:127::-;5622:10;5617:3;5613:20;5610:1;5603:31;5653:4;5650:1;5643:15;5677:4;5674:1;5667:15;5693:127;5754:10;5749:3;5745:20;5742:1;5735:31;5785:4;5782:1;5775:15;5809:4;5806:1;5799:15;5825:135;5864:3;5885:17;;;5882:43;;5905:18;;:::i;:::-;-1:-1:-1;5952:1:1;5941:13;;5825:135::o;7828:125::-;7893:9;;;7914:10;;;7911:36;;;7927:18;;:::i;8666:127::-;8727:10;8722:3;8718:20;8715:1;8708:31;8758:4;8755:1;8748:15;8782:4;8779:1;8772:15;8924:545;9026:2;9021:3;9018:11;9015:448;;;9062:1;9087:5;9083:2;9076:17;9132:4;9128:2;9118:19;9202:2;9190:10;9186:19;9183:1;9179:27;9173:4;9169:38;9238:4;9226:10;9223:20;9220:47;;;-1:-1:-1;9261:4:1;9220:47;9316:2;9311:3;9307:12;9304:1;9300:20;9294:4;9290:31;9280:41;;9371:82;9389:2;9382:5;9379:13;9371:82;;;9434:17;;;9415:1;9404:13;9371:82;;;9375:3;;;8924:545;;;:::o;9645:1352::-;9771:3;9765:10;9798:18;9790:6;9787:30;9784:56;;;9820:18;;:::i;:::-;9849:97;9939:6;9899:38;9931:4;9925:11;9899:38;:::i;:::-;9893:4;9849:97;:::i;:::-;10001:4;;10065:2;10054:14;;10082:1;10077:663;;;;10784:1;10801:6;10798:89;;;-1:-1:-1;10853:19:1;;;10847:26;10798:89;-1:-1:-1;;9602:1:1;9598:11;;;9594:24;9590:29;9580:40;9626:1;9622:11;;;9577:57;10900:81;;10047:944;;10077:663;8871:1;8864:14;;;8908:4;8895:18;;-1:-1:-1;;10113:20:1;;;10231:236;10245:7;10242:1;10239:14;10231:236;;;10334:19;;;10328:26;10313:42;;10426:27;;;;10394:1;10382:14;;;;10261:19;;10231:236;;;10235:3;10495:6;10486:7;10483:19;10480:201;;;10556:19;;;10550:26;-1:-1:-1;;10639:1:1;10635:14;;;10651:3;10631:24;10627:37;10623:42;10608:58;10593:74;;10480:201;-1:-1:-1;;;;;10727:1:1;10711:14;;;10707:22;10694:36;;-1:-1:-1;9645:1352:1:o;13433:127::-;13494:10;13489:3;13485:20;13482:1;13475:31;13525:4;13522:1;13515:15;13549:4;13546:1;13539:15;13914:128;13981:9;;;14002:11;;;13999:37;;;14016:18;;:::i

Swarm Source

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