Token Fidira

 

Overview ERC-20

Price
$0.00 @ 0.000000 MATIC
Fully Diluted Market Cap
Total Supply:
100,000,000 FID

Holders:
2,499 addresses

Transfers:
-

Contract:
0x9a4eb698e5de3d3df0a68f681789072de1e502220x9A4Eb698e5DE3D3Df0a68F681789072DE1E50222

Decimals:
18

Social Profiles:
Not Available, Update ?

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
FID

Compiler Version
v0.8.3+commit.8d00100c

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 2 of 6: FID.sol
// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.3;

import "./Context.sol";
import "./IERC20.sol";
import "./SafeMath.sol";
import "./Ownable.sol";
import "./IFID.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20Mintable}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
 
contract FID is Context, IERC20, Ownable, IFID {
  using SafeMath for uint256;

  mapping (address => uint256) private _balances;

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

  uint256 private _totalSupply;
  uint8 public _decimals;
  string public _symbol;
  string public _name;

  constructor(address tokenOwner) {
    _name = "Fidira";
    _symbol = "FID";
    _decimals = 18;
    _totalSupply = 100000000000000000000000000;
    _balances[tokenOwner] = _totalSupply;
    emit Transfer(address(0), tokenOwner, _totalSupply);

    transferOwnership(tokenOwner);
  }

  /**
   * @dev Returns the ERC20 token owner.
   */
  function getOwner() external override view returns (address) {
    return owner();
  }

  /**
   * @dev Returns the ERC20 token name.
   */
  function name() external override view returns (string memory) {
    return _name;
  }

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external override view returns (uint256) {
    return _decimals;
  }

  /**
   * @dev Returns the contract symbol.
   */
  function symbol() external override view returns (string memory) {
    return _symbol;
  }

  /**
   * @dev See {IERC20-totalSupply}.
   */
  function totalSupply() external override view returns (uint256) {
    return _totalSupply;
  }

  /**
   * @dev See {IERC20-balanceOf}.
   */
  function balanceOf(address account) external override view 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) external override returns (bool) {
    _transfer(_msgSender(), recipient, amount);
    return true;
  }

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

  /**
   * @dev See {IERC20-approve}.
   *
   * Requirements:
   *
   * - `spender` cannot be the zero address.
   */
  function approve(address spender, uint256 amount) external 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 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) public 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) public returns (bool) {
    _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
    return true;
  }

  /**
    * Public implementation of _burn - onlyOwner
  */
  function burn(uint256 amount) external override onlyOwner {
    _burn(_msgSender(), amount);
  }

  /**
   * @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 {
    require(sender != address(0), "ERC20: transfer from the zero address");
    require(recipient != address(0), "ERC20: transfer to the zero address");

    _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
    _balances[recipient] = _balances[recipient].add(amount);
    emit Transfer(sender, recipient, 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 {
    require(account != address(0), "ERC20: burn from the zero address");

    _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 is 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 {
    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 Destroys `amount` tokens from `account`.`amount` is then deducted
  //  * from the caller's allowance.
  //  *
  //  * See {_burn} and {_approve}.
  //  */
  // function _burnFrom(address account, uint256 amount) internal {
  //   _burn(account, amount);
  //   _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance"));
  // }
}

File 1 of 6: Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.3;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

File 3 of 6: IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.3;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {ERC20Detailed}.
 */
 
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);
    
    /**
     * @dev Returns the token decimals.
     */
    function decimals() external view returns (uint256);

    /**
     * @dev Returns the contract name.
     */
    function name() external view returns (string memory);
    
    /**
     * @dev Returns the contract symbol.
     */
    function symbol() external view returns (string memory);
    
    /**
     * @dev Returns the contract owner.
     */
    function getOwner() external view returns (address);

    /**
     * @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);
}

File 4 of 6: IFID.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.3;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {ERC20Detailed}.
 */
 
interface IFID {
    /**
     * @dev Burn - decrease total supply
     */
    function burn(uint256 amount) external;
}

File 5 of 6: Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.3;

import "./Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
 
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 () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), 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 {
        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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 6 of 6: SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.3;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
 
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.
     *
     * _Available since v2.4.0._
     */
    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.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        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.
     *
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"tokenOwner","type":"address"}],"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":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"}]

60806040523480156200001157600080fd5b506040516200252238038062002522833981810160405281019062000037919062000530565b6000620000496200027960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600681526020017f4669646972610000000000000000000000000000000000000000000000000000815250600690805190602001906200013492919062000469565b506040518060400160405280600381526020017f4649440000000000000000000000000000000000000000000000000000000000815250600590805190602001906200018292919062000469565b506012600460006101000a81548160ff021916908360ff1602179055506a52b7d2dcc80cd2e4000000600381905550600354600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620002599190620005ff565b60405180910390a362000272816200028160201b60201c565b5062000762565b600033905090565b620002916200027960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002b76200044060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000310576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200030790620005dd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000383576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200037a90620005bb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b82805462000477906200066b565b90600052602060002090601f0160209004810192826200049b5760008555620004e7565b82601f10620004b657805160ff1916838001178555620004e7565b82800160010185558215620004e7579182015b82811115620004e6578251825591602001919060010190620004c9565b5b509050620004f69190620004fa565b5090565b5b8082111562000515576000816000905550600101620004fb565b5090565b6000815190506200052a8162000748565b92915050565b6000602082840312156200054357600080fd5b6000620005538482850162000519565b91505092915050565b60006200056b6026836200061c565b91506200057882620006d0565b604082019050919050565b6000620005926020836200061c565b91506200059f826200071f565b602082019050919050565b620005b58162000661565b82525050565b60006020820190508181036000830152620005d6816200055c565b9050919050565b60006020820190508181036000830152620005f88162000583565b9050919050565b6000602082019050620006166000830184620005aa565b92915050565b600082825260208201905092915050565b60006200063a8262000641565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200068457607f821691505b602082108114156200069b576200069a620006a1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b62000753816200062d565b81146200075f57600080fd5b50565b611db080620007726000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063a9059cbb11610071578063a9059cbb1461030e578063b09f12661461033e578063d28d88521461035c578063dd62ed3e1461037a578063f2fde38b146103aa57610121565b8063715018a61461027a578063893d20e8146102845780638da5cb5b146102a257806395d89b41146102c0578063a457c2d7146102de57610121565b8063313ce567116100f4578063313ce567146101c257806332424aa3146101e057806339509351146101fe57806342966c681461022e57806370a082311461024a57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103c6565b60405161013b9190611764565b60405180910390f35b61015e6004803603810190610159919061153c565b610458565b60405161016b9190611749565b60405180910390f35b61017c610476565b6040516101899190611886565b60405180910390f35b6101ac60048036038101906101a791906114ed565b610480565b6040516101b99190611749565b60405180910390f35b6101ca610559565b6040516101d79190611886565b60405180910390f35b6101e8610573565b6040516101f591906118a1565b60405180910390f35b6102186004803603810190610213919061153c565b610586565b6040516102259190611749565b60405180910390f35b61024860048036038101906102439190611578565b610639565b005b610264600480360381019061025f9190611488565b6106c9565b6040516102719190611886565b60405180910390f35b610282610712565b005b61028c61084c565b604051610299919061172e565b60405180910390f35b6102aa61085b565b6040516102b7919061172e565b60405180910390f35b6102c8610884565b6040516102d59190611764565b60405180910390f35b6102f860048036038101906102f3919061153c565b610916565b6040516103059190611749565b60405180910390f35b6103286004803603810190610323919061153c565b6109e3565b6040516103359190611749565b60405180910390f35b610346610a01565b6040516103539190611764565b60405180910390f35b610364610a8f565b6040516103719190611764565b60405180910390f35b610394600480360381019061038f91906114b1565b610b1d565b6040516103a19190611886565b60405180910390f35b6103c460048036038101906103bf9190611488565b610ba4565b005b6060600680546103d5906119ea565b80601f0160208091040260200160405190810160405280929190818152602001828054610401906119ea565b801561044e5780601f106104235761010080835404028352916020019161044e565b820191906000526020600020905b81548152906001019060200180831161043157829003601f168201915b5050505050905090565b600061046c610465610d4d565b8484610d55565b6001905092915050565b6000600354905090565b600061048d848484610f20565b61054e84610499610d4d565b61054985604051806060016040528060288152602001611d2e60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104ff610d4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111ae9092919063ffffffff16565b610d55565b600190509392505050565b6000600460009054906101000a900460ff1660ff16905090565b600460009054906101000a900460ff1681565b600061062f610593610d4d565b8461062a85600260006105a4610d4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461121290919063ffffffff16565b610d55565b6001905092915050565b610641610d4d565b73ffffffffffffffffffffffffffffffffffffffff1661065f61085b565b73ffffffffffffffffffffffffffffffffffffffff16146106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ac90611806565b60405180910390fd5b6106c66106c0610d4d565b82611270565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61071a610d4d565b73ffffffffffffffffffffffffffffffffffffffff1661073861085b565b73ffffffffffffffffffffffffffffffffffffffff161461078e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078590611806565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061085661085b565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610893906119ea565b80601f01602080910402602001604051908101604052809291908181526020018280546108bf906119ea565b801561090c5780601f106108e15761010080835404028352916020019161090c565b820191906000526020600020905b8154815290600101906020018083116108ef57829003601f168201915b5050505050905090565b60006109d9610923610d4d565b846109d485604051806060016040528060258152602001611d56602591396002600061094d610d4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111ae9092919063ffffffff16565b610d55565b6001905092915050565b60006109f76109f0610d4d565b8484610f20565b6001905092915050565b60058054610a0e906119ea565b80601f0160208091040260200160405190810160405280929190818152602001828054610a3a906119ea565b8015610a875780601f10610a5c57610100808354040283529160200191610a87565b820191906000526020600020905b815481529060010190602001808311610a6a57829003601f168201915b505050505081565b60068054610a9c906119ea565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac8906119ea565b8015610b155780601f10610aea57610100808354040283529160200191610b15565b820191906000526020600020905b815481529060010190602001808311610af857829003601f168201915b505050505081565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610bac610d4d565b73ffffffffffffffffffffffffffffffffffffffff16610bca61085b565b73ffffffffffffffffffffffffffffffffffffffff1614610c20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1790611806565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c87906117a6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610dc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbc90611866565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2c906117c6565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f139190611886565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8790611846565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff790611786565b60405180910390fd5b61106c81604051806060016040528060268152602001611d0860269139600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111ae9092919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061110181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461121290919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111a19190611886565b60405180910390a3505050565b60008383111582906111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed9190611764565b60405180910390fd5b5060008385611205919061192e565b9050809150509392505050565b600080828461122191906118d8565b905083811015611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d906117e6565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d790611826565b60405180910390fd5b61134c81604051806060016040528060228152602001611ce660229139600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111ae9092919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113a48160035461141490919063ffffffff16565b600381905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114089190611886565b60405180910390a35050565b600061145683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111ae565b905092915050565b60008135905061146d81611cb7565b92915050565b60008135905061148281611cce565b92915050565b60006020828403121561149a57600080fd5b60006114a88482850161145e565b91505092915050565b600080604083850312156114c457600080fd5b60006114d28582860161145e565b92505060206114e38582860161145e565b9150509250929050565b60008060006060848603121561150257600080fd5b60006115108682870161145e565b93505060206115218682870161145e565b925050604061153286828701611473565b9150509250925092565b6000806040838503121561154f57600080fd5b600061155d8582860161145e565b925050602061156e85828601611473565b9150509250929050565b60006020828403121561158a57600080fd5b600061159884828501611473565b91505092915050565b6115aa81611962565b82525050565b6115b981611974565b82525050565b60006115ca826118bc565b6115d481856118c7565b93506115e48185602086016119b7565b6115ed81611a7a565b840191505092915050565b60006116056023836118c7565b915061161082611a8b565b604082019050919050565b60006116286026836118c7565b915061163382611ada565b604082019050919050565b600061164b6022836118c7565b915061165682611b29565b604082019050919050565b600061166e601b836118c7565b915061167982611b78565b602082019050919050565b60006116916020836118c7565b915061169c82611ba1565b602082019050919050565b60006116b46021836118c7565b91506116bf82611bca565b604082019050919050565b60006116d76025836118c7565b91506116e282611c19565b604082019050919050565b60006116fa6024836118c7565b915061170582611c68565b604082019050919050565b611719816119a0565b82525050565b611728816119aa565b82525050565b600060208201905061174360008301846115a1565b92915050565b600060208201905061175e60008301846115b0565b92915050565b6000602082019050818103600083015261177e81846115bf565b905092915050565b6000602082019050818103600083015261179f816115f8565b9050919050565b600060208201905081810360008301526117bf8161161b565b9050919050565b600060208201905081810360008301526117df8161163e565b9050919050565b600060208201905081810360008301526117ff81611661565b9050919050565b6000602082019050818103600083015261181f81611684565b9050919050565b6000602082019050818103600083015261183f816116a7565b9050919050565b6000602082019050818103600083015261185f816116ca565b9050919050565b6000602082019050818103600083015261187f816116ed565b9050919050565b600060208201905061189b6000830184611710565b92915050565b60006020820190506118b6600083018461171f565b92915050565b600081519050919050565b600082825260208201905092915050565b60006118e3826119a0565b91506118ee836119a0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561192357611922611a1c565b5b828201905092915050565b6000611939826119a0565b9150611944836119a0565b92508282101561195757611956611a1c565b5b828203905092915050565b600061196d82611980565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156119d55780820151818401526020810190506119ba565b838111156119e4576000848401525b50505050565b60006002820490506001821680611a0257607f821691505b60208210811415611a1657611a15611a4b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b611cc081611962565b8114611ccb57600080fd5b50565b611cd7816119a0565b8114611ce257600080fd5b5056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ff27e994297840b5535f94cdf86e93f63e5036eafa554f432284a5cc9fee8f5864736f6c6343000803003300000000000000000000000080ecb101c59b9483c5ddcb21361edb95506f11e6

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000080ecb101c59b9483c5ddcb21361edb95506f11e6

-----Decoded View---------------
Arg [0] : tokenOwner (address): 0x80ecb101c59b9483c5ddcb21361edb95506f11e6

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000080ecb101c59b9483c5ddcb21361edb95506f11e6


Deployed ByteCode Sourcemap

1338:7069:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2134:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3466:150;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2559:94;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4048:297;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2274:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1577:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4714:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5680:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2703:113;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1696:145:4;;;:::i;:::-;;1992:86:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1064:85:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2417:90:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5368:248;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3001:156;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1603:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1628:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3207:137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1990:240:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2134:86:1;2182:13;2210:5;2203:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2134:86;:::o;3466:150::-;3543:4;3555:39;3564:12;:10;:12::i;:::-;3578:7;3587:6;3555:8;:39::i;:::-;3607:4;3600:11;;3466:150;;;;:::o;2559:94::-;2614:7;2636:12;;2629:19;;2559:94;:::o;4048:297::-;4148:4;4160:36;4170:6;4178:9;4189:6;4160:9;:36::i;:::-;4202:121;4211:6;4219:12;:10;:12::i;:::-;4233:89;4271:6;4233:89;;;;;;;;;;;;;;;;;:11;:19;4245:6;4233:19;;;;;;;;;;;;;;;:33;4253:12;:10;:12::i;:::-;4233:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;4202:8;:121::i;:::-;4336:4;4329:11;;4048:297;;;;;:::o;2274:88::-;2326:7;2348:9;;;;;;;;;;;2341:16;;;;2274:88;:::o;1577:22::-;;;;;;;;;;;;;:::o;4714:197::-;4794:4;4806:83;4815:12;:10;:12::i;:::-;4829:7;4838:50;4877:10;4838:11;:25;4850:12;:10;:12::i;:::-;4838:25;;;;;;;;;;;;;;;:34;4864:7;4838:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;4806:8;:83::i;:::-;4902:4;4895:11;;4714:197;;;;:::o;5680:96::-;1287:12:4;:10;:12::i;:::-;1276:23;;:7;:5;:7::i;:::-;:23;;;1268:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5744:27:1::1;5750:12;:10;:12::i;:::-;5764:6;5744:5;:27::i;:::-;5680:96:::0;:::o;2703:113::-;2771:7;2793:9;:18;2803:7;2793:18;;;;;;;;;;;;;;;;2786:25;;2703:113;;;:::o;1696:145:4:-;1287:12;:10;:12::i;:::-;1276:23;;:7;:5;:7::i;:::-;:23;;;1268:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1802:1:::1;1765:40;;1786:6;::::0;::::1;;;;;;;;1765:40;;;;;;;;;;;;1832:1;1815:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1696:145::o:0;1992:86:1:-;2044:7;2066;:5;:7::i;:::-;2059:14;;1992:86;:::o;1064:85:4:-;1110:7;1136:6;;;;;;;;;;;1129:13;;1064:85;:::o;2417:90:1:-;2467:13;2495:7;2488:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:90;:::o;5368:248::-;5453:4;5465:129;5474:12;:10;:12::i;:::-;5488:7;5497:96;5536:15;5497:96;;;;;;;;;;;;;;;;;:11;:25;5509:12;:10;:12::i;:::-;5497:25;;;;;;;;;;;;;;;:34;5523:7;5497:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;5465:8;:129::i;:::-;5607:4;5600:11;;5368:248;;;;:::o;3001:156::-;3081:4;3093:42;3103:12;:10;:12::i;:::-;3117:9;3128:6;3093:9;:42::i;:::-;3148:4;3141:11;;3001:156;;;;:::o;1603:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1628:19::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3207:137::-;3290:7;3312:11;:18;3324:5;3312:18;;;;;;;;;;;;;;;:27;3331:7;3312:27;;;;;;;;;;;;;;;;3305:34;;3207:137;;;;:::o;1990:240:4:-;1287:12;:10;:12::i;:::-;1276:23;;:7;:5;:7::i;:::-;:23;;;1268:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2098:1:::1;2078:22;;:8;:22;;;;2070:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2187:8;2158:38;;2179:6;::::0;::::1;;;;;;;;2158:38;;;;;;;;;;;;2215:8;2206:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1990:240:::0;:::o;588:96:0:-;641:7;667:10;660:17;;588:96;:::o;7678:314:1:-;7784:1;7767:19;;:5;:19;;;;7759:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7860:1;7841:21;;:7;:21;;;;7833:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7938:6;7908:11;:18;7920:5;7908:18;;;;;;;;;;;;;;;:27;7927:7;7908:27;;;;;;;;;;;;;;;:36;;;;7971:7;7955:32;;7964:5;7955:32;;;7980:6;7955:32;;;;;;:::i;:::-;;;;;;;;7678:314;;;:::o;6220:442::-;6331:1;6313:20;;:6;:20;;;;6305:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6410:1;6389:23;;:9;:23;;;;6381:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6479;6501:6;6479:71;;;;;;;;;;;;;;;;;:9;:17;6489:6;6479:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;6459:9;:17;6469:6;6459:17;;;;;;;;;;;;;;;:91;;;;6579:32;6604:6;6579:9;:20;6589:9;6579:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6556:9;:20;6566:9;6556:20;;;;;;;;;;;;;;;:55;;;;6639:9;6622:35;;6631:6;6622:35;;;6650:6;6622:35;;;;;;:::i;:::-;;;;;;;;6220:442;;;:::o;1767:187:5:-;1853:7;1885:1;1880;:6;;1888:12;1872:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1911:9;1927:1;1923;:5;;;;:::i;:::-;1911:17;;1946:1;1939:8;;;1767:187;;;;;:::o;869:176::-;927:7;946:9;962:1;958;:5;;;;:::i;:::-;946:17;;986:1;981;:6;;973:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1037:1;1030:8;;;869:176;;;;:::o;6957:324:1:-;7047:1;7028:21;;:7;:21;;;;7020:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7115:68;7138:6;7115:68;;;;;;;;;;;;;;;;;:9;:18;7125:7;7115:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;7094:9;:18;7104:7;7094:18;;;;;;;;;;;;;;;:89;;;;7204:24;7221:6;7204:12;;:16;;:24;;;;:::i;:::-;7189:12;:39;;;;7265:1;7239:37;;7248:7;7239:37;;;7269:6;7239:37;;;;;;:::i;:::-;;;;;;;;6957:324;;:::o;1309:134:5:-;1367:7;1393:43;1397:1;1400;1393:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1386:50;;1309:134;;;;:::o;7:139:6:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;;;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;;;;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;;;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:262::-;;2057:2;2045:9;2036:7;2032:23;2028:32;2025:2;;;2073:1;2070;2063:12;2025:2;2116:1;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2087:117;2015:196;;;;:::o;2217:118::-;2304:24;2322:5;2304:24;:::i;:::-;2299:3;2292:37;2282:53;;:::o;2341:109::-;2422:21;2437:5;2422:21;:::i;:::-;2417:3;2410:34;2400:50;;:::o;2456:364::-;;2572:39;2605:5;2572:39;:::i;:::-;2627:71;2691:6;2686:3;2627:71;:::i;:::-;2620:78;;2707:52;2752:6;2747:3;2740:4;2733:5;2729:16;2707:52;:::i;:::-;2784:29;2806:6;2784:29;:::i;:::-;2779:3;2775:39;2768:46;;2548:272;;;;;:::o;2826:366::-;;2989:67;3053:2;3048:3;2989:67;:::i;:::-;2982:74;;3065:93;3154:3;3065:93;:::i;:::-;3183:2;3178:3;3174:12;3167:19;;2972:220;;;:::o;3198:366::-;;3361:67;3425:2;3420:3;3361:67;:::i;:::-;3354:74;;3437:93;3526:3;3437:93;:::i;:::-;3555:2;3550:3;3546:12;3539:19;;3344:220;;;:::o;3570:366::-;;3733:67;3797:2;3792:3;3733:67;:::i;:::-;3726:74;;3809:93;3898:3;3809:93;:::i;:::-;3927:2;3922:3;3918:12;3911:19;;3716:220;;;:::o;3942:366::-;;4105:67;4169:2;4164:3;4105:67;:::i;:::-;4098:74;;4181:93;4270:3;4181:93;:::i;:::-;4299:2;4294:3;4290:12;4283:19;;4088:220;;;:::o;4314:366::-;;4477:67;4541:2;4536:3;4477:67;:::i;:::-;4470:74;;4553:93;4642:3;4553:93;:::i;:::-;4671:2;4666:3;4662:12;4655:19;;4460:220;;;:::o;4686:366::-;;4849:67;4913:2;4908:3;4849:67;:::i;:::-;4842:74;;4925:93;5014:3;4925:93;:::i;:::-;5043:2;5038:3;5034:12;5027:19;;4832:220;;;:::o;5058:366::-;;5221:67;5285:2;5280:3;5221:67;:::i;:::-;5214:74;;5297:93;5386:3;5297:93;:::i;:::-;5415:2;5410:3;5406:12;5399:19;;5204:220;;;:::o;5430:366::-;;5593:67;5657:2;5652:3;5593:67;:::i;:::-;5586:74;;5669:93;5758:3;5669:93;:::i;:::-;5787:2;5782:3;5778:12;5771:19;;5576:220;;;:::o;5802:118::-;5889:24;5907:5;5889:24;:::i;:::-;5884:3;5877:37;5867:53;;:::o;5926:112::-;6009:22;6025:5;6009:22;:::i;:::-;6004:3;5997:35;5987:51;;:::o;6044:222::-;;6175:2;6164:9;6160:18;6152:26;;6188:71;6256:1;6245:9;6241:17;6232:6;6188:71;:::i;:::-;6142:124;;;;:::o;6272:210::-;;6397:2;6386:9;6382:18;6374:26;;6410:65;6472:1;6461:9;6457:17;6448:6;6410:65;:::i;:::-;6364:118;;;;:::o;6488:313::-;;6639:2;6628:9;6624:18;6616:26;;6688:9;6682:4;6678:20;6674:1;6663:9;6659:17;6652:47;6716:78;6789:4;6780:6;6716:78;:::i;:::-;6708:86;;6606:195;;;;:::o;6807:419::-;;7011:2;7000:9;6996:18;6988:26;;7060:9;7054:4;7050:20;7046:1;7035:9;7031:17;7024:47;7088:131;7214:4;7088:131;:::i;:::-;7080:139;;6978:248;;;:::o;7232:419::-;;7436:2;7425:9;7421:18;7413:26;;7485:9;7479:4;7475:20;7471:1;7460:9;7456:17;7449:47;7513:131;7639:4;7513:131;:::i;:::-;7505:139;;7403:248;;;:::o;7657:419::-;;7861:2;7850:9;7846:18;7838:26;;7910:9;7904:4;7900:20;7896:1;7885:9;7881:17;7874:47;7938:131;8064:4;7938:131;:::i;:::-;7930:139;;7828:248;;;:::o;8082:419::-;;8286:2;8275:9;8271:18;8263:26;;8335:9;8329:4;8325:20;8321:1;8310:9;8306:17;8299:47;8363:131;8489:4;8363:131;:::i;:::-;8355:139;;8253:248;;;:::o;8507:419::-;;8711:2;8700:9;8696:18;8688:26;;8760:9;8754:4;8750:20;8746:1;8735:9;8731:17;8724:47;8788:131;8914:4;8788:131;:::i;:::-;8780:139;;8678:248;;;:::o;8932:419::-;;9136:2;9125:9;9121:18;9113:26;;9185:9;9179:4;9175:20;9171:1;9160:9;9156:17;9149:47;9213:131;9339:4;9213:131;:::i;:::-;9205:139;;9103:248;;;:::o;9357:419::-;;9561:2;9550:9;9546:18;9538:26;;9610:9;9604:4;9600:20;9596:1;9585:9;9581:17;9574:47;9638:131;9764:4;9638:131;:::i;:::-;9630:139;;9528:248;;;:::o;9782:419::-;;9986:2;9975:9;9971:18;9963:26;;10035:9;10029:4;10025:20;10021:1;10010:9;10006:17;9999:47;10063:131;10189:4;10063:131;:::i;:::-;10055:139;;9953:248;;;:::o;10207:222::-;;10338:2;10327:9;10323:18;10315:26;;10351:71;10419:1;10408:9;10404:17;10395:6;10351:71;:::i;:::-;10305:124;;;;:::o;10435:214::-;;10562:2;10551:9;10547:18;10539:26;;10575:67;10639:1;10628:9;10624:17;10615:6;10575:67;:::i;:::-;10529:120;;;;:::o;10655:99::-;;10741:5;10735:12;10725:22;;10714:40;;;:::o;10760:169::-;;10878:6;10873:3;10866:19;10918:4;10913:3;10909:14;10894:29;;10856:73;;;;:::o;10935:305::-;;10994:20;11012:1;10994:20;:::i;:::-;10989:25;;11028:20;11046:1;11028:20;:::i;:::-;11023:25;;11182:1;11114:66;11110:74;11107:1;11104:81;11101:2;;;11188:18;;:::i;:::-;11101:2;11232:1;11229;11225:9;11218:16;;10979:261;;;;:::o;11246:191::-;;11306:20;11324:1;11306:20;:::i;:::-;11301:25;;11340:20;11358:1;11340:20;:::i;:::-;11335:25;;11379:1;11376;11373:8;11370:2;;;11384:18;;:::i;:::-;11370:2;11429:1;11426;11422:9;11414:17;;11291:146;;;;:::o;11443:96::-;;11509:24;11527:5;11509:24;:::i;:::-;11498:35;;11488:51;;;:::o;11545:90::-;;11622:5;11615:13;11608:21;11597:32;;11587:48;;;:::o;11641:126::-;;11718:42;11711:5;11707:54;11696:65;;11686:81;;;:::o;11773:77::-;;11839:5;11828:16;;11818:32;;;:::o;11856:86::-;;11931:4;11924:5;11920:16;11909:27;;11899:43;;;:::o;11948:307::-;12016:1;12026:113;12040:6;12037:1;12034:13;12026:113;;;12125:1;12120:3;12116:11;12110:18;12106:1;12101:3;12097:11;12090:39;12062:2;12059:1;12055:10;12050:15;;12026:113;;;12157:6;12154:1;12151:13;12148:2;;;12237:1;12228:6;12223:3;12219:16;12212:27;12148:2;11997:258;;;;:::o;12261:320::-;;12342:1;12336:4;12332:12;12322:22;;12389:1;12383:4;12379:12;12410:18;12400:2;;12466:4;12458:6;12454:17;12444:27;;12400:2;12528;12520:6;12517:14;12497:18;12494:38;12491:2;;;12547:18;;:::i;:::-;12491:2;12312:269;;;;:::o;12587:180::-;12635:77;12632:1;12625:88;12732:4;12729:1;12722:15;12756:4;12753:1;12746:15;12773:180;12821:77;12818:1;12811:88;12918:4;12915:1;12908:15;12942:4;12939:1;12932:15;12959:102;;13051:2;13047:7;13042:2;13035:5;13031:14;13027:28;13017:38;;13007:54;;;:::o;13067:222::-;13207:34;13203:1;13195:6;13191:14;13184:58;13276:5;13271:2;13263:6;13259:15;13252:30;13173:116;:::o;13295:225::-;13435:34;13431:1;13423:6;13419:14;13412:58;13504:8;13499:2;13491:6;13487:15;13480:33;13401:119;:::o;13526:221::-;13666:34;13662:1;13654:6;13650:14;13643:58;13735:4;13730:2;13722:6;13718:15;13711:29;13632:115;:::o;13753:177::-;13893:29;13889:1;13881:6;13877:14;13870:53;13859:71;:::o;13936:182::-;14076:34;14072:1;14064:6;14060:14;14053:58;14042:76;:::o;14124:220::-;14264:34;14260:1;14252:6;14248:14;14241:58;14333:3;14328:2;14320:6;14316:15;14309:28;14230:114;:::o;14350:224::-;14490:34;14486:1;14478:6;14474:14;14467:58;14559:7;14554:2;14546:6;14542:15;14535:32;14456:118;:::o;14580:223::-;14720:34;14716:1;14708:6;14704:14;14697:58;14789:6;14784:2;14776:6;14772:15;14765:31;14686:117;:::o;14809:122::-;14882:24;14900:5;14882:24;:::i;:::-;14875:5;14872:35;14862:2;;14921:1;14918;14911:12;14862:2;14852:79;:::o;14937:122::-;15010:24;15028:5;15010:24;:::i;:::-;15003:5;15000:35;14990:2;;15049:1;15046;15039:12;14990:2;14980:79;:::o

Swarm Source

ipfs://ff27e994297840b5535f94cdf86e93f63e5036eafa554f432284a5cc9fee8f58
Loading