MATIC Price: $0.70 (-0.27%)
Gas: 94 GWei
 

Overview

Max Total Supply

100,000,000 iZi

Holders

6,093

Total Transfers

-

Market

Price

$0.01 @ 0.021136 MATIC (+5.13%)

Onchain Market Cap

$1,478,459.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

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

OVERVIEW

izumi Finance is a platform providing programmable Liquidity As A Service (LaaS) on Uniswap V3 and Multi-chains, aimed to become the next-generation LaaS to support the future of on-chain liquidity.

Market

Volume (24H):$414,236.00
Market Capitalization:$0.00
Circulating Supply:0.00 iZi
Market Data Source: Coinmarketcap

Contract Source Code Verified (Exact Match)

Contract Name:
izumiToken

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-10-11
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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


/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
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 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);
}


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

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
  event Pause();
  event Unpause();
  event NotPausable();

  bool public paused = false;
  bool public canPause = true;

  /**
   * @dev Modifier to make a function callable only when the contract is not paused.
   */
  modifier whenNotPaused() {
    require(!paused || msg.sender == owner());
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is paused.
   */
  modifier whenPaused() {
    require(paused);
    _;
  }

  /**
     * @dev called by the owner to pause, triggers stopped state
  **/
  function pause() onlyOwner whenNotPaused public {
    require(canPause == true);
    paused = true;
    emit Pause();
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() onlyOwner whenPaused public {
    require(paused == true);
    paused = false;
    emit Unpause();
  }
  
  /**
   * @dev Prevent the token from ever being paused again
   **/
  function notPausable() onlyOwner public {
    paused = false;
    canPause = false;
    emit NotPausable();
  }
}

/**
 * @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 {ERC20PresetMinterPauser}.
 *
 * 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 ERC20 is Context, IERC20 {
    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual 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
     * overloaded;
     *
     * 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 returns (uint8) {
        return 18;
    }

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

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

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        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 virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + 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 virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

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


contract OperableToken is ERC20, Ownable, Pausable {
  address public operator;
  mapping(address=>bool) public trusted;

  modifier onlyTrusted {
      require(trusted[msg.sender] || msg.sender == owner(), "not trusted");
      _;
  }
  modifier onlyOperator {
      require(msg.sender == operator, "operator only");
      _;
  }

  constructor(string memory name, string memory symbol) ERC20(name, symbol) {
    operator = msg.sender;
  }

  function transferOperator(address newOperator) public onlyOperator {
    require(newOperator != address(0), "zero operator");
    operator = newOperator;
  }

  function addTrusted(address user) public onlyOperator {
      trusted[user] = true;
  }

  function removeTrusted(address user) public onlyOperator {
      trusted[user] = false;
  }

  function mint(address account, uint amount) public onlyTrusted {
    _mint(account, amount);
  }

  function burn(address account, uint amount) public onlyTrusted {
    _burn(account, amount);
  }

  /**
   * @dev Transfer tokens when not paused
   */
  function transfer(address _to, uint256 _value) public whenNotPaused override returns (bool) {
    return super.transfer(_to, _value);
  }
    
  /**
   * @dev transferFrom function to tansfer tokens when token is not paused
   **/
  function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused override returns (bool) {
    return super.transferFrom(_from, _to, _value);
  }
}

contract izumiToken is OperableToken {
  constructor() OperableToken("izumi Token", "iZi") {}
}

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":[],"name":"NotPausable","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":[],"name":"Pause","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":[],"name":"Unpause","type":"event"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"addTrusted","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"canPause","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","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":"notPausable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"removeTrusted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"transferOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"trusted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600560146101000a81548160ff0219169083151502179055506001600560156101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280600b81526020017f697a756d6920546f6b656e0000000000000000000000000000000000000000008152506040518060400160405280600381526020017f695a69000000000000000000000000000000000000000000000000000000000081525081818160039080519060200190620000ce929190620001ec565b508060049080519060200190620000e7929190620001ec565b5050506000620000fc620001e460201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000301565b600033905090565b828054620001fa906200029c565b90600052602060002090601f0160209004810192826200021e57600085556200026a565b82601f106200023957805160ff19168380011785556200026a565b828001600101855582156200026a579182015b82811115620002695782518255916020019190600101906200024c565b5b5090506200027991906200027d565b5090565b5b80821115620002985760008160009055506001016200027e565b5090565b60006002820490506001821680620002b557607f821691505b60208210811415620002cc57620002cb620002d2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6128da80620003116000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80636e9821c2116100de5780639dc29fac11610097578063d4d0d6e611610071578063d4d0d6e61461044f578063d55e62a01461046b578063dd62ed3e14610487578063f2fde38b146104b75761018e565b80639dc29fac146103d3578063a457c2d7146103ef578063a9059cbb1461041f5761018e565b80636e9821c21461032357806370a0823114610353578063715018a6146103835780638456cb591461038d5780638da5cb5b1461039757806395d89b41146103b55761018e565b8063323be1c51161014b57806340c10f191161012557806340c10f19146102c15780634be8b05e146102dd578063570ca735146102e75780635c975abb146103055761018e565b8063323be1c51461026957806339509351146102875780633f4ba83a146102b75761018e565b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101e157806323b872dd146101ff57806329605e771461022f578063313ce5671461024b575b600080fd5b61019b6104d3565b6040516101a8919061246f565b60405180910390f35b6101cb60048036038101906101c69190611e4c565b610565565b6040516101d89190612454565b60405180910390f35b6101e9610583565b6040516101f69190612671565b60405180910390f35b61021960048036038101906102149190611dfd565b61058d565b6040516102269190612454565b60405180910390f35b61024960048036038101906102449190611d98565b6105fa565b005b61025361073e565b604051610260919061268c565b60405180910390f35b610271610747565b60405161027e9190612454565b60405180910390f35b6102a1600480360381019061029c9190611e4c565b61075a565b6040516102ae9190612454565b60405180910390f35b6102bf610806565b005b6102db60048036038101906102d69190611e4c565b610904565b005b6102e56109db565b005b6102ef610abb565b6040516102fc9190612439565b60405180910390f35b61030d610ae1565b60405161031a9190612454565b60405180910390f35b61033d60048036038101906103389190611d98565b610af4565b60405161034a9190612454565b60405180910390f35b61036d60048036038101906103689190611d98565b610b14565b60405161037a9190612671565b60405180910390f35b61038b610b5c565b005b610395610c99565b005b61039f610dd5565b6040516103ac9190612439565b60405180910390f35b6103bd610dff565b6040516103ca919061246f565b60405180910390f35b6103ed60048036038101906103e89190611e4c565b610e91565b005b61040960048036038101906104049190611e4c565b610f68565b6040516104169190612454565b60405180910390f35b61043960048036038101906104349190611e4c565b61105c565b6040516104469190612454565b60405180910390f35b61046960048036038101906104649190611d98565b6110c7565b005b61048560048036038101906104809190611d98565b6111b2565b005b6104a1600480360381019061049c9190611dc1565b61129d565b6040516104ae9190612671565b60405180910390f35b6104d160048036038101906104cc9190611d98565b611324565b005b6060600380546104e2906127d5565b80601f016020809104026020016040519081016040528092919081815260200182805461050e906127d5565b801561055b5780601f106105305761010080835404028352916020019161055b565b820191906000526020600020905b81548152906001019060200180831161053e57829003601f168201915b5050505050905090565b60006105796105726114d0565b84846114d8565b6001905092915050565b6000600254905090565b6000600560149054906101000a900460ff1615806105dd57506105ae610dd5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6105e657600080fd5b6105f18484846116a3565b90509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461068a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068190612551565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f1906125b1565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b600560159054906101000a900460ff1681565b60006107fc6107676114d0565b8484600160006107756114d0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107f791906126c3565b6114d8565b6001905092915050565b61080e6114d0565b73ffffffffffffffffffffffffffffffffffffffff1661082c610dd5565b73ffffffffffffffffffffffffffffffffffffffff1614610882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087990612591565b60405180910390fd5b600560149054906101000a900460ff1661089b57600080fd5b60011515600560149054906101000a900460ff161515146108bb57600080fd5b6000600560146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061098e575061095f610dd5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6109cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c490612511565b60405180910390fd5b6109d782826117a4565b5050565b6109e36114d0565b73ffffffffffffffffffffffffffffffffffffffff16610a01610dd5565b73ffffffffffffffffffffffffffffffffffffffff1614610a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4e90612591565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055506000600560156101000a81548160ff0219169083151502179055507faff39f66825d4448497d384dee3f4a3adf00a622960add00806503ae4ccee01c60405160405180910390a1565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560149054906101000a900460ff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b646114d0565b73ffffffffffffffffffffffffffffffffffffffff16610b82610dd5565b73ffffffffffffffffffffffffffffffffffffffff1614610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf90612591565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ca16114d0565b73ffffffffffffffffffffffffffffffffffffffff16610cbf610dd5565b73ffffffffffffffffffffffffffffffffffffffff1614610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c90612591565b60405180910390fd5b600560149054906101000a900460ff161580610d635750610d34610dd5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d6c57600080fd5b60011515600560159054906101000a900460ff16151514610d8c57600080fd5b6001600560146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e0e906127d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3a906127d5565b8015610e875780601f10610e5c57610100808354040283529160200191610e87565b820191906000526020600020905b815481529060010190602001808311610e6a57829003601f168201915b5050505050905090565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610f1b5750610eec610dd5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5190612511565b60405180910390fd5b610f6482826118f8565b5050565b60008060016000610f776114d0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102b90612631565b60405180910390fd5b61105161103f6114d0565b85858461104c9190612719565b6114d8565b600191505092915050565b6000600560149054906101000a900460ff1615806110ac575061107d610dd5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110b557600080fd5b6110bf8383611acc565b905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114e90612551565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123990612551565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61132c6114d0565b73ffffffffffffffffffffffffffffffffffffffff1661134a610dd5565b73ffffffffffffffffffffffffffffffffffffffff16146113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790612591565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611410576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611407906124d1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153f90612611565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115af906124f1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116969190612671565b60405180910390a3505050565b60006116b0848484611aea565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006116fb6114d0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561177b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177290612571565b60405180910390fd5b611798856117876114d0565b85846117939190612719565b6114d8565b60019150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90612651565b60405180910390fd5b61182060008383611d69565b806002600082825461183291906126c3565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461188791906126c3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118ec9190612671565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f906125d1565b60405180910390fd5b61197482600083611d69565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f1906124b1565b60405180910390fd5b8181611a069190612719565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611a5a9190612719565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611abf9190612671565b60405180910390a3505050565b6000611ae0611ad96114d0565b8484611aea565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b51906125f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc190612491565b60405180910390fd5b611bd5838383611d69565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5290612531565b60405180910390fd5b8181611c679190612719565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cf791906126c3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d5b9190612671565b60405180910390a350505050565b505050565b600081359050611d7d81612876565b92915050565b600081359050611d928161288d565b92915050565b600060208284031215611daa57600080fd5b6000611db884828501611d6e565b91505092915050565b60008060408385031215611dd457600080fd5b6000611de285828601611d6e565b9250506020611df385828601611d6e565b9150509250929050565b600080600060608486031215611e1257600080fd5b6000611e2086828701611d6e565b9350506020611e3186828701611d6e565b9250506040611e4286828701611d83565b9150509250925092565b60008060408385031215611e5f57600080fd5b6000611e6d85828601611d6e565b9250506020611e7e85828601611d83565b9150509250929050565b611e918161274d565b82525050565b611ea08161275f565b82525050565b6000611eb1826126a7565b611ebb81856126b2565b9350611ecb8185602086016127a2565b611ed481612865565b840191505092915050565b6000611eec6023836126b2565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611f526022836126b2565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611fb86026836126b2565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061201e6022836126b2565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612084600b836126b2565b91507f6e6f7420747275737465640000000000000000000000000000000000000000006000830152602082019050919050565b60006120c46026836126b2565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061212a600d836126b2565b91507f6f70657261746f72206f6e6c79000000000000000000000000000000000000006000830152602082019050919050565b600061216a6028836126b2565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b60006121d06020836126b2565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612210600d836126b2565b91507f7a65726f206f70657261746f72000000000000000000000000000000000000006000830152602082019050919050565b60006122506021836126b2565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006122b66025836126b2565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061231c6024836126b2565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006123826025836126b2565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006123e8601f836126b2565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6124248161278b565b82525050565b61243381612795565b82525050565b600060208201905061244e6000830184611e88565b92915050565b60006020820190506124696000830184611e97565b92915050565b600060208201905081810360008301526124898184611ea6565b905092915050565b600060208201905081810360008301526124aa81611edf565b9050919050565b600060208201905081810360008301526124ca81611f45565b9050919050565b600060208201905081810360008301526124ea81611fab565b9050919050565b6000602082019050818103600083015261250a81612011565b9050919050565b6000602082019050818103600083015261252a81612077565b9050919050565b6000602082019050818103600083015261254a816120b7565b9050919050565b6000602082019050818103600083015261256a8161211d565b9050919050565b6000602082019050818103600083015261258a8161215d565b9050919050565b600060208201905081810360008301526125aa816121c3565b9050919050565b600060208201905081810360008301526125ca81612203565b9050919050565b600060208201905081810360008301526125ea81612243565b9050919050565b6000602082019050818103600083015261260a816122a9565b9050919050565b6000602082019050818103600083015261262a8161230f565b9050919050565b6000602082019050818103600083015261264a81612375565b9050919050565b6000602082019050818103600083015261266a816123db565b9050919050565b6000602082019050612686600083018461241b565b92915050565b60006020820190506126a1600083018461242a565b92915050565b600081519050919050565b600082825260208201905092915050565b60006126ce8261278b565b91506126d98361278b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561270e5761270d612807565b5b828201905092915050565b60006127248261278b565b915061272f8361278b565b92508282101561274257612741612807565b5b828203905092915050565b60006127588261276b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156127c05780820151818401526020810190506127a5565b838111156127cf576000848401525b50505050565b600060028204905060018216806127ed57607f821691505b6020821081141561280157612800612836565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61287f8161274d565b811461288a57600080fd5b50565b6128968161278b565b81146128a157600080fd5b5056fea2646970667358221220ed9c512af149c90e106a4c4a3966379dee31a523606f82ad086bd6478fafa24864736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80636e9821c2116100de5780639dc29fac11610097578063d4d0d6e611610071578063d4d0d6e61461044f578063d55e62a01461046b578063dd62ed3e14610487578063f2fde38b146104b75761018e565b80639dc29fac146103d3578063a457c2d7146103ef578063a9059cbb1461041f5761018e565b80636e9821c21461032357806370a0823114610353578063715018a6146103835780638456cb591461038d5780638da5cb5b1461039757806395d89b41146103b55761018e565b8063323be1c51161014b57806340c10f191161012557806340c10f19146102c15780634be8b05e146102dd578063570ca735146102e75780635c975abb146103055761018e565b8063323be1c51461026957806339509351146102875780633f4ba83a146102b75761018e565b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101e157806323b872dd146101ff57806329605e771461022f578063313ce5671461024b575b600080fd5b61019b6104d3565b6040516101a8919061246f565b60405180910390f35b6101cb60048036038101906101c69190611e4c565b610565565b6040516101d89190612454565b60405180910390f35b6101e9610583565b6040516101f69190612671565b60405180910390f35b61021960048036038101906102149190611dfd565b61058d565b6040516102269190612454565b60405180910390f35b61024960048036038101906102449190611d98565b6105fa565b005b61025361073e565b604051610260919061268c565b60405180910390f35b610271610747565b60405161027e9190612454565b60405180910390f35b6102a1600480360381019061029c9190611e4c565b61075a565b6040516102ae9190612454565b60405180910390f35b6102bf610806565b005b6102db60048036038101906102d69190611e4c565b610904565b005b6102e56109db565b005b6102ef610abb565b6040516102fc9190612439565b60405180910390f35b61030d610ae1565b60405161031a9190612454565b60405180910390f35b61033d60048036038101906103389190611d98565b610af4565b60405161034a9190612454565b60405180910390f35b61036d60048036038101906103689190611d98565b610b14565b60405161037a9190612671565b60405180910390f35b61038b610b5c565b005b610395610c99565b005b61039f610dd5565b6040516103ac9190612439565b60405180910390f35b6103bd610dff565b6040516103ca919061246f565b60405180910390f35b6103ed60048036038101906103e89190611e4c565b610e91565b005b61040960048036038101906104049190611e4c565b610f68565b6040516104169190612454565b60405180910390f35b61043960048036038101906104349190611e4c565b61105c565b6040516104469190612454565b60405180910390f35b61046960048036038101906104649190611d98565b6110c7565b005b61048560048036038101906104809190611d98565b6111b2565b005b6104a1600480360381019061049c9190611dc1565b61129d565b6040516104ae9190612671565b60405180910390f35b6104d160048036038101906104cc9190611d98565b611324565b005b6060600380546104e2906127d5565b80601f016020809104026020016040519081016040528092919081815260200182805461050e906127d5565b801561055b5780601f106105305761010080835404028352916020019161055b565b820191906000526020600020905b81548152906001019060200180831161053e57829003601f168201915b5050505050905090565b60006105796105726114d0565b84846114d8565b6001905092915050565b6000600254905090565b6000600560149054906101000a900460ff1615806105dd57506105ae610dd5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6105e657600080fd5b6105f18484846116a3565b90509392505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461068a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068190612551565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f1906125b1565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006012905090565b600560159054906101000a900460ff1681565b60006107fc6107676114d0565b8484600160006107756114d0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107f791906126c3565b6114d8565b6001905092915050565b61080e6114d0565b73ffffffffffffffffffffffffffffffffffffffff1661082c610dd5565b73ffffffffffffffffffffffffffffffffffffffff1614610882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087990612591565b60405180910390fd5b600560149054906101000a900460ff1661089b57600080fd5b60011515600560149054906101000a900460ff161515146108bb57600080fd5b6000600560146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061098e575061095f610dd5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6109cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c490612511565b60405180910390fd5b6109d782826117a4565b5050565b6109e36114d0565b73ffffffffffffffffffffffffffffffffffffffff16610a01610dd5565b73ffffffffffffffffffffffffffffffffffffffff1614610a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4e90612591565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055506000600560156101000a81548160ff0219169083151502179055507faff39f66825d4448497d384dee3f4a3adf00a622960add00806503ae4ccee01c60405160405180910390a1565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560149054906101000a900460ff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b646114d0565b73ffffffffffffffffffffffffffffffffffffffff16610b82610dd5565b73ffffffffffffffffffffffffffffffffffffffff1614610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf90612591565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ca16114d0565b73ffffffffffffffffffffffffffffffffffffffff16610cbf610dd5565b73ffffffffffffffffffffffffffffffffffffffff1614610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c90612591565b60405180910390fd5b600560149054906101000a900460ff161580610d635750610d34610dd5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610d6c57600080fd5b60011515600560159054906101000a900460ff16151514610d8c57600080fd5b6001600560146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e0e906127d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3a906127d5565b8015610e875780601f10610e5c57610100808354040283529160200191610e87565b820191906000526020600020905b815481529060010190602001808311610e6a57829003601f168201915b5050505050905090565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610f1b5750610eec610dd5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5190612511565b60405180910390fd5b610f6482826118f8565b5050565b60008060016000610f776114d0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102b90612631565b60405180910390fd5b61105161103f6114d0565b85858461104c9190612719565b6114d8565b600191505092915050565b6000600560149054906101000a900460ff1615806110ac575061107d610dd5565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110b557600080fd5b6110bf8383611acc565b905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114e90612551565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123990612551565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61132c6114d0565b73ffffffffffffffffffffffffffffffffffffffff1661134a610dd5565b73ffffffffffffffffffffffffffffffffffffffff16146113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790612591565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611410576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611407906124d1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153f90612611565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115af906124f1565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116969190612671565b60405180910390a3505050565b60006116b0848484611aea565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006116fb6114d0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561177b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177290612571565b60405180910390fd5b611798856117876114d0565b85846117939190612719565b6114d8565b60019150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90612651565b60405180910390fd5b61182060008383611d69565b806002600082825461183291906126c3565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461188791906126c3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118ec9190612671565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f906125d1565b60405180910390fd5b61197482600083611d69565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156119fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f1906124b1565b60405180910390fd5b8181611a069190612719565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611a5a9190612719565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611abf9190612671565b60405180910390a3505050565b6000611ae0611ad96114d0565b8484611aea565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b51906125f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc190612491565b60405180910390fd5b611bd5838383611d69565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5290612531565b60405180910390fd5b8181611c679190612719565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611cf791906126c3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d5b9190612671565b60405180910390a350505050565b505050565b600081359050611d7d81612876565b92915050565b600081359050611d928161288d565b92915050565b600060208284031215611daa57600080fd5b6000611db884828501611d6e565b91505092915050565b60008060408385031215611dd457600080fd5b6000611de285828601611d6e565b9250506020611df385828601611d6e565b9150509250929050565b600080600060608486031215611e1257600080fd5b6000611e2086828701611d6e565b9350506020611e3186828701611d6e565b9250506040611e4286828701611d83565b9150509250925092565b60008060408385031215611e5f57600080fd5b6000611e6d85828601611d6e565b9250506020611e7e85828601611d83565b9150509250929050565b611e918161274d565b82525050565b611ea08161275f565b82525050565b6000611eb1826126a7565b611ebb81856126b2565b9350611ecb8185602086016127a2565b611ed481612865565b840191505092915050565b6000611eec6023836126b2565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611f526022836126b2565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611fb86026836126b2565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061201e6022836126b2565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612084600b836126b2565b91507f6e6f7420747275737465640000000000000000000000000000000000000000006000830152602082019050919050565b60006120c46026836126b2565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061212a600d836126b2565b91507f6f70657261746f72206f6e6c79000000000000000000000000000000000000006000830152602082019050919050565b600061216a6028836126b2565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b60006121d06020836126b2565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612210600d836126b2565b91507f7a65726f206f70657261746f72000000000000000000000000000000000000006000830152602082019050919050565b60006122506021836126b2565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006122b66025836126b2565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061231c6024836126b2565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006123826025836126b2565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006123e8601f836126b2565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6124248161278b565b82525050565b61243381612795565b82525050565b600060208201905061244e6000830184611e88565b92915050565b60006020820190506124696000830184611e97565b92915050565b600060208201905081810360008301526124898184611ea6565b905092915050565b600060208201905081810360008301526124aa81611edf565b9050919050565b600060208201905081810360008301526124ca81611f45565b9050919050565b600060208201905081810360008301526124ea81611fab565b9050919050565b6000602082019050818103600083015261250a81612011565b9050919050565b6000602082019050818103600083015261252a81612077565b9050919050565b6000602082019050818103600083015261254a816120b7565b9050919050565b6000602082019050818103600083015261256a8161211d565b9050919050565b6000602082019050818103600083015261258a8161215d565b9050919050565b600060208201905081810360008301526125aa816121c3565b9050919050565b600060208201905081810360008301526125ca81612203565b9050919050565b600060208201905081810360008301526125ea81612243565b9050919050565b6000602082019050818103600083015261260a816122a9565b9050919050565b6000602082019050818103600083015261262a8161230f565b9050919050565b6000602082019050818103600083015261264a81612375565b9050919050565b6000602082019050818103600083015261266a816123db565b9050919050565b6000602082019050612686600083018461241b565b92915050565b60006020820190506126a1600083018461242a565b92915050565b600081519050919050565b600082825260208201905092915050565b60006126ce8261278b565b91506126d98361278b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561270e5761270d612807565b5b828201905092915050565b60006127248261278b565b915061272f8361278b565b92508282101561274257612741612807565b5b828203905092915050565b60006127588261276b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156127c05780820151818401526020810190506127a5565b838111156127cf576000848401525b50505050565b600060028204905060018216806127ed57607f821691505b6020821081141561280157612800612836565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b61287f8161274d565b811461288a57600080fd5b50565b6128968161278b565b81146128a157600080fd5b5056fea2646970667358221220ed9c512af149c90e106a4c4a3966379dee31a523606f82ad086bd6478fafa24864736f6c63430008000033

Deployed Bytecode Sourcemap

19336:97:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9088:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11228:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10181:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19160:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18295:160;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10032:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6125:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12710:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6804:125;;;:::i;:::-;;18655:98;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7010:115;;;:::i;:::-;;17890:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6094:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17918:37;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10352:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5325:148;;;:::i;:::-;;6592:125;;;:::i;:::-;;4674:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9298:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18759:98;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13428:377;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18920:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18461:89;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18556:93;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10930:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5628:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9088:91;9133:13;9166:5;9159:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9088:91;:::o;11228:169::-;11311:4;11328:39;11337:12;:10;:12::i;:::-;11351:7;11360:6;11328:8;:39::i;:::-;11385:4;11378:11;;11228:169;;;;:::o;10181:108::-;10242:7;10269:12;;10262:19;;10181:108;:::o;19160:169::-;19265:4;6300:6;;;;;;;;;;;6299:7;:32;;;;6324:7;:5;:7::i;:::-;6310:21;;:10;:21;;;6299:32;6291:41;;;;;;19285:38:::1;19304:5;19311:3;19316:6;19285:18;:38::i;:::-;19278:45;;19160:169:::0;;;;;:::o;18295:160::-;18133:8;;;;;;;;;;;18119:22;;:10;:22;;;18111:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18400:1:::1;18377:25;;:11;:25;;;;18369:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;18438:11;18427:8;;:22;;;;;;;;;;;;;;;;;;18295:160:::0;:::o;10032:84::-;10081:5;10106:2;10099:9;;10032:84;:::o;6125:27::-;;;;;;;;;;;;;:::o;12710:215::-;12798:4;12815:80;12824:12;:10;:12::i;:::-;12838:7;12884:10;12847:11;:25;12859:12;:10;:12::i;:::-;12847:25;;;;;;;;;;;;;;;:34;12873:7;12847:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12815:8;:80::i;:::-;12913:4;12906:11;;12710:215;;;;:::o;6804:125::-;4905:12;:10;:12::i;:::-;4894:23;;:7;:5;:7::i;:::-;:23;;;4886:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6485:6:::1;;;;;;;;;;;6477:15;;;::::0;::::1;;6876:4:::2;6866:14;;:6;;;;;;;;;;;:14;;;6858:23;;;::::0;::::2;;6897:5;6888:6;;:14;;;;;;;;;;;;;;;;;;6914:9;;;;;;;;;;6804:125::o:0;18655:98::-;18000:7;:19;18008:10;18000:19;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;18037:7;:5;:7::i;:::-;18023:21;;:10;:21;;;18000:44;17992:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18725:22:::1;18731:7;18740:6;18725:5;:22::i;:::-;18655:98:::0;;:::o;7010:115::-;4905:12;:10;:12::i;:::-;4894:23;;:7;:5;:7::i;:::-;:23;;;4886:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7066:5:::1;7057:6;;:14;;;;;;;;;;;;;;;;;;7089:5;7078:8;;:16;;;;;;;;;;;;;;;;;;7106:13;;;;;;;;;;7010:115::o:0;17890:23::-;;;;;;;;;;;;;:::o;6094:26::-;;;;;;;;;;;;;:::o;17918:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;10352:127::-;10426:7;10453:9;:18;10463:7;10453:18;;;;;;;;;;;;;;;;10446:25;;10352:127;;;:::o;5325:148::-;4905:12;:10;:12::i;:::-;4894:23;;:7;:5;:7::i;:::-;:23;;;4886:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5432:1:::1;5395:40;;5416:6;;;;;;;;;;;5395:40;;;;;;;;;;;;5463:1;5446:6;;:19;;;;;;;;;;;;;;;;;;5325:148::o:0;6592:125::-;4905:12;:10;:12::i;:::-;4894:23;;:7;:5;:7::i;:::-;:23;;;4886:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6300:6:::1;;;;;;;;;;;6299:7;:32;;;;6324:7;:5;:7::i;:::-;6310:21;;:10;:21;;;6299:32;6291:41;;;::::0;::::1;;6667:4:::2;6655:16;;:8;;;;;;;;;;;:16;;;6647:25;;;::::0;::::2;;6688:4;6679:6;;:13;;;;;;;;;;;;;;;;;;6704:7;;;;;;;;;;6592:125::o:0;4674:87::-;4720:7;4747:6;;;;;;;;;;;4740:13;;4674:87;:::o;9298:95::-;9345:13;9378:7;9371:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9298:95;:::o;18759:98::-;18000:7;:19;18008:10;18000:19;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;;18037:7;:5;:7::i;:::-;18023:21;;:10;:21;;;18000:44;17992:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18829:22:::1;18835:7;18844:6;18829:5;:22::i;:::-;18759:98:::0;;:::o;13428:377::-;13521:4;13538:24;13565:11;:25;13577:12;:10;:12::i;:::-;13565:25;;;;;;;;;;;;;;;:34;13591:7;13565:34;;;;;;;;;;;;;;;;13538:61;;13638:15;13618:16;:35;;13610:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13706:67;13715:12;:10;:12::i;:::-;13729:7;13757:15;13738:16;:34;;;;:::i;:::-;13706:8;:67::i;:::-;13793:4;13786:11;;;13428:377;;;;:::o;18920:139::-;19006:4;6300:6;;;;;;;;;;;6299:7;:32;;;;6324:7;:5;:7::i;:::-;6310:21;;:10;:21;;;6299:32;6291:41;;;;;;19026:27:::1;19041:3;19046:6;19026:14;:27::i;:::-;19019:34;;18920:139:::0;;;;:::o;18461:89::-;18133:8;;;;;;;;;;;18119:22;;:10;:22;;;18111:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18540:4:::1;18524:7;:13;18532:4;18524:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;18461:89:::0;:::o;18556:93::-;18133:8;;;;;;;;;;;18119:22;;:10;:22;;;18111:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;18638:5:::1;18622:7;:13;18630:4;18622:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;18556:93:::0;:::o;10930:151::-;11019:7;11046:11;:18;11058:5;11046:18;;;;;;;;;;;;;;;:27;11065:7;11046:27;;;;;;;;;;;;;;;;11039:34;;10930:151;;;;:::o;5628:244::-;4905:12;:10;:12::i;:::-;4894:23;;:7;:5;:7::i;:::-;:23;;;4886:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5737:1:::1;5717:22;;:8;:22;;;;5709:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;5827:8;5798:38;;5819:6;;;;;;;;;;;5798:38;;;;;;;;;;;;5856:8;5847:6;;:17;;;;;;;;;;;;;;;;;;5628:244:::0;:::o;601:98::-;654:7;681:10;674:17;;601:98;:::o;16784:346::-;16903:1;16886:19;;:5;:19;;;;16878:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16984:1;16965:21;;:7;:21;;;;16957:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17068:6;17038:11;:18;17050:5;17038:18;;;;;;;;;;;;;;;:27;17057:7;17038:27;;;;;;;;;;;;;;;:36;;;;17106:7;17090:32;;17099:5;17090:32;;;17115:6;17090:32;;;;;;:::i;:::-;;;;;;;;16784:346;;;:::o;11879:422::-;11985:4;12002:36;12012:6;12020:9;12031:6;12002:9;:36::i;:::-;12051:24;12078:11;:19;12090:6;12078:19;;;;;;;;;;;;;;;:33;12098:12;:10;:12::i;:::-;12078:33;;;;;;;;;;;;;;;;12051:60;;12150:6;12130:16;:26;;12122:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12212:57;12221:6;12229:12;:10;:12::i;:::-;12262:6;12243:16;:25;;;;:::i;:::-;12212:8;:57::i;:::-;12289:4;12282:11;;;11879:422;;;;;:::o;15181:338::-;15284:1;15265:21;;:7;:21;;;;15257:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15335:49;15364:1;15368:7;15377:6;15335:20;:49::i;:::-;15413:6;15397:12;;:22;;;;;;;:::i;:::-;;;;;;;;15452:6;15430:9;:18;15440:7;15430:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;15495:7;15474:37;;15491:1;15474:37;;;15504:6;15474:37;;;;;;:::i;:::-;;;;;;;;15181:338;;:::o;15852:494::-;15955:1;15936:21;;:7;:21;;;;15928:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16008:49;16029:7;16046:1;16050:6;16008:20;:49::i;:::-;16070:22;16095:9;:18;16105:7;16095:18;;;;;;;;;;;;;;;;16070:43;;16150:6;16132:14;:24;;16124:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16244:6;16227:14;:23;;;;:::i;:::-;16206:9;:18;16216:7;16206:18;;;;;;;;;;;;;;;:44;;;;16277:6;16261:12;;:22;;;;;;;:::i;:::-;;;;;;;;16327:1;16301:37;;16310:7;16301:37;;;16331:6;16301:37;;;;;;:::i;:::-;;;;;;;;15852:494;;;:::o;10692:175::-;10778:4;10795:42;10805:12;:10;:12::i;:::-;10819:9;10830:6;10795:9;:42::i;:::-;10855:4;10848:11;;10692:175;;;;:::o;14295:604::-;14419:1;14401:20;;:6;:20;;;;14393:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14503:1;14482:23;;:9;:23;;;;14474:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14558:47;14579:6;14587:9;14598:6;14558:20;:47::i;:::-;14618:21;14642:9;:17;14652:6;14642:17;;;;;;;;;;;;;;;;14618:41;;14695:6;14678:13;:23;;14670:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14791:6;14775:13;:22;;;;:::i;:::-;14755:9;:17;14765:6;14755:17;;;;;;;;;;;;;;;:42;;;;14832:6;14808:9;:20;14818:9;14808:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;14873:9;14856:35;;14865:6;14856:35;;;14884:6;14856:35;;;;;;:::i;:::-;;;;;;;;14295:604;;;;:::o;17733:92::-;;;;:::o;7:139:1:-;;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:118::-;2036:24;2054:5;2036:24;:::i;:::-;2031:3;2024:37;2014:53;;:::o;2073:109::-;2154:21;2169:5;2154:21;:::i;:::-;2149:3;2142:34;2132:50;;:::o;2188:364::-;;2304:39;2337:5;2304:39;:::i;:::-;2359:71;2423:6;2418:3;2359:71;:::i;:::-;2352:78;;2439:52;2484:6;2479:3;2472:4;2465:5;2461:16;2439:52;:::i;:::-;2516:29;2538:6;2516:29;:::i;:::-;2511:3;2507:39;2500:46;;2280:272;;;;;:::o;2558:367::-;;2721:67;2785:2;2780:3;2721:67;:::i;:::-;2714:74;;2818:34;2814:1;2809:3;2805:11;2798:55;2884:5;2879:2;2874:3;2870:12;2863:27;2916:2;2911:3;2907:12;2900:19;;2704:221;;;:::o;2931:366::-;;3094:67;3158:2;3153:3;3094:67;:::i;:::-;3087:74;;3191:34;3187:1;3182:3;3178:11;3171:55;3257:4;3252:2;3247:3;3243:12;3236:26;3288:2;3283:3;3279:12;3272:19;;3077:220;;;:::o;3303:370::-;;3466:67;3530:2;3525:3;3466:67;:::i;:::-;3459:74;;3563:34;3559:1;3554:3;3550:11;3543:55;3629:8;3624:2;3619:3;3615:12;3608:30;3664:2;3659:3;3655:12;3648:19;;3449:224;;;:::o;3679:366::-;;3842:67;3906:2;3901:3;3842:67;:::i;:::-;3835:74;;3939:34;3935:1;3930:3;3926:11;3919:55;4005:4;4000:2;3995:3;3991:12;3984:26;4036:2;4031:3;4027:12;4020:19;;3825:220;;;:::o;4051:309::-;;4214:67;4278:2;4273:3;4214:67;:::i;:::-;4207:74;;4311:13;4307:1;4302:3;4298:11;4291:34;4351:2;4346:3;4342:12;4335:19;;4197:163;;;:::o;4366:370::-;;4529:67;4593:2;4588:3;4529:67;:::i;:::-;4522:74;;4626:34;4622:1;4617:3;4613:11;4606:55;4692:8;4687:2;4682:3;4678:12;4671:30;4727:2;4722:3;4718:12;4711:19;;4512:224;;;:::o;4742:311::-;;4905:67;4969:2;4964:3;4905:67;:::i;:::-;4898:74;;5002:15;4998:1;4993:3;4989:11;4982:36;5044:2;5039:3;5035:12;5028:19;;4888:165;;;:::o;5059:372::-;;5222:67;5286:2;5281:3;5222:67;:::i;:::-;5215:74;;5319:34;5315:1;5310:3;5306:11;5299:55;5385:10;5380:2;5375:3;5371:12;5364:32;5422:2;5417:3;5413:12;5406:19;;5205:226;;;:::o;5437:330::-;;5600:67;5664:2;5659:3;5600:67;:::i;:::-;5593:74;;5697:34;5693:1;5688:3;5684:11;5677:55;5758:2;5753:3;5749:12;5742:19;;5583:184;;;:::o;5773:311::-;;5936:67;6000:2;5995:3;5936:67;:::i;:::-;5929:74;;6033:15;6029:1;6024:3;6020:11;6013:36;6075:2;6070:3;6066:12;6059:19;;5919:165;;;:::o;6090:365::-;;6253:67;6317:2;6312:3;6253:67;:::i;:::-;6246:74;;6350:34;6346:1;6341:3;6337:11;6330:55;6416:3;6411:2;6406:3;6402:12;6395:25;6446:2;6441:3;6437:12;6430:19;;6236:219;;;:::o;6461:369::-;;6624:67;6688:2;6683:3;6624:67;:::i;:::-;6617:74;;6721:34;6717:1;6712:3;6708:11;6701:55;6787:7;6782:2;6777:3;6773:12;6766:29;6821:2;6816:3;6812:12;6805:19;;6607:223;;;:::o;6836:368::-;;6999:67;7063:2;7058:3;6999:67;:::i;:::-;6992:74;;7096:34;7092:1;7087:3;7083:11;7076:55;7162:6;7157:2;7152:3;7148:12;7141:28;7195:2;7190:3;7186:12;7179:19;;6982:222;;;:::o;7210:369::-;;7373:67;7437:2;7432:3;7373:67;:::i;:::-;7366:74;;7470:34;7466:1;7461:3;7457:11;7450:55;7536:7;7531:2;7526:3;7522:12;7515:29;7570:2;7565:3;7561:12;7554:19;;7356:223;;;:::o;7585:329::-;;7748:67;7812:2;7807:3;7748:67;:::i;:::-;7741:74;;7845:33;7841:1;7836:3;7832:11;7825:54;7905:2;7900:3;7896:12;7889:19;;7731:183;;;:::o;7920:118::-;8007:24;8025:5;8007:24;:::i;:::-;8002:3;7995:37;7985:53;;:::o;8044:112::-;8127:22;8143:5;8127:22;:::i;:::-;8122:3;8115:35;8105:51;;:::o;8162:222::-;;8293:2;8282:9;8278:18;8270:26;;8306:71;8374:1;8363:9;8359:17;8350:6;8306:71;:::i;:::-;8260:124;;;;:::o;8390:210::-;;8515:2;8504:9;8500:18;8492:26;;8528:65;8590:1;8579:9;8575:17;8566:6;8528:65;:::i;:::-;8482:118;;;;:::o;8606:313::-;;8757:2;8746:9;8742:18;8734:26;;8806:9;8800:4;8796:20;8792:1;8781:9;8777:17;8770:47;8834:78;8907:4;8898:6;8834:78;:::i;:::-;8826:86;;8724:195;;;;:::o;8925:419::-;;9129:2;9118:9;9114:18;9106:26;;9178:9;9172:4;9168:20;9164:1;9153:9;9149:17;9142:47;9206:131;9332:4;9206:131;:::i;:::-;9198:139;;9096:248;;;:::o;9350:419::-;;9554:2;9543:9;9539:18;9531:26;;9603:9;9597:4;9593:20;9589:1;9578:9;9574:17;9567:47;9631:131;9757:4;9631:131;:::i;:::-;9623:139;;9521:248;;;:::o;9775:419::-;;9979:2;9968:9;9964:18;9956:26;;10028:9;10022:4;10018:20;10014:1;10003:9;9999:17;9992:47;10056:131;10182:4;10056:131;:::i;:::-;10048:139;;9946:248;;;:::o;10200:419::-;;10404:2;10393:9;10389:18;10381:26;;10453:9;10447:4;10443:20;10439:1;10428:9;10424:17;10417:47;10481:131;10607:4;10481:131;:::i;:::-;10473:139;;10371:248;;;:::o;10625:419::-;;10829:2;10818:9;10814:18;10806:26;;10878:9;10872:4;10868:20;10864:1;10853:9;10849:17;10842:47;10906:131;11032:4;10906:131;:::i;:::-;10898:139;;10796:248;;;:::o;11050:419::-;;11254:2;11243:9;11239:18;11231:26;;11303:9;11297:4;11293:20;11289:1;11278:9;11274:17;11267:47;11331:131;11457:4;11331:131;:::i;:::-;11323:139;;11221:248;;;:::o;11475:419::-;;11679:2;11668:9;11664:18;11656:26;;11728:9;11722:4;11718:20;11714:1;11703:9;11699:17;11692:47;11756:131;11882:4;11756:131;:::i;:::-;11748:139;;11646:248;;;:::o;11900:419::-;;12104:2;12093:9;12089:18;12081:26;;12153:9;12147:4;12143:20;12139:1;12128:9;12124:17;12117:47;12181:131;12307:4;12181:131;:::i;:::-;12173:139;;12071:248;;;:::o;12325:419::-;;12529:2;12518:9;12514:18;12506:26;;12578:9;12572:4;12568:20;12564:1;12553:9;12549:17;12542:47;12606:131;12732:4;12606:131;:::i;:::-;12598:139;;12496:248;;;:::o;12750:419::-;;12954:2;12943:9;12939:18;12931:26;;13003:9;12997:4;12993:20;12989:1;12978:9;12974:17;12967:47;13031:131;13157:4;13031:131;:::i;:::-;13023:139;;12921:248;;;:::o;13175:419::-;;13379:2;13368:9;13364:18;13356:26;;13428:9;13422:4;13418:20;13414:1;13403:9;13399:17;13392:47;13456:131;13582:4;13456:131;:::i;:::-;13448:139;;13346:248;;;:::o;13600:419::-;;13804:2;13793:9;13789:18;13781:26;;13853:9;13847:4;13843:20;13839:1;13828:9;13824:17;13817:47;13881:131;14007:4;13881:131;:::i;:::-;13873:139;;13771:248;;;:::o;14025:419::-;;14229:2;14218:9;14214:18;14206:26;;14278:9;14272:4;14268:20;14264:1;14253:9;14249:17;14242:47;14306:131;14432:4;14306:131;:::i;:::-;14298:139;;14196:248;;;:::o;14450:419::-;;14654:2;14643:9;14639:18;14631:26;;14703:9;14697:4;14693:20;14689:1;14678:9;14674:17;14667:47;14731:131;14857:4;14731:131;:::i;:::-;14723:139;;14621:248;;;:::o;14875:419::-;;15079:2;15068:9;15064:18;15056:26;;15128:9;15122:4;15118:20;15114:1;15103:9;15099:17;15092:47;15156:131;15282:4;15156:131;:::i;:::-;15148:139;;15046:248;;;:::o;15300:222::-;;15431:2;15420:9;15416:18;15408:26;;15444:71;15512:1;15501:9;15497:17;15488:6;15444:71;:::i;:::-;15398:124;;;;:::o;15528:214::-;;15655:2;15644:9;15640:18;15632:26;;15668:67;15732:1;15721:9;15717:17;15708:6;15668:67;:::i;:::-;15622:120;;;;:::o;15748:99::-;;15834:5;15828:12;15818:22;;15807:40;;;:::o;15853:169::-;;15971:6;15966:3;15959:19;16011:4;16006:3;16002:14;15987:29;;15949:73;;;;:::o;16028:305::-;;16087:20;16105:1;16087:20;:::i;:::-;16082:25;;16121:20;16139:1;16121:20;:::i;:::-;16116:25;;16275:1;16207:66;16203:74;16200:1;16197:81;16194:2;;;16281:18;;:::i;:::-;16194:2;16325:1;16322;16318:9;16311:16;;16072:261;;;;:::o;16339:191::-;;16399:20;16417:1;16399:20;:::i;:::-;16394:25;;16433:20;16451:1;16433:20;:::i;:::-;16428:25;;16472:1;16469;16466:8;16463:2;;;16477:18;;:::i;:::-;16463:2;16522:1;16519;16515:9;16507:17;;16384:146;;;;:::o;16536:96::-;;16602:24;16620:5;16602:24;:::i;:::-;16591:35;;16581:51;;;:::o;16638:90::-;;16715:5;16708:13;16701:21;16690:32;;16680:48;;;:::o;16734:126::-;;16811:42;16804:5;16800:54;16789:65;;16779:81;;;:::o;16866:77::-;;16932:5;16921:16;;16911:32;;;:::o;16949:86::-;;17024:4;17017:5;17013:16;17002:27;;16992:43;;;:::o;17041:307::-;17109:1;17119:113;17133:6;17130:1;17127:13;17119:113;;;17218:1;17213:3;17209:11;17203:18;17199:1;17194:3;17190:11;17183:39;17155:2;17152:1;17148:10;17143:15;;17119:113;;;17250:6;17247:1;17244:13;17241:2;;;17330:1;17321:6;17316:3;17312:16;17305:27;17241:2;17090:258;;;;:::o;17354:320::-;;17435:1;17429:4;17425:12;17415:22;;17482:1;17476:4;17472:12;17503:18;17493:2;;17559:4;17551:6;17547:17;17537:27;;17493:2;17621;17613:6;17610:14;17590:18;17587:38;17584:2;;;17640:18;;:::i;:::-;17584:2;17405:269;;;;:::o;17680:180::-;17728:77;17725:1;17718:88;17825:4;17822:1;17815:15;17849:4;17846:1;17839:15;17866:180;17914:77;17911:1;17904:88;18011:4;18008:1;18001:15;18035:4;18032:1;18025:15;18052:102;;18144:2;18140:7;18135:2;18128:5;18124:14;18120:28;18110:38;;18100:54;;;:::o;18160:122::-;18233:24;18251:5;18233:24;:::i;:::-;18226:5;18223:35;18213:2;;18272:1;18269;18262:12;18213:2;18203:79;:::o;18288:122::-;18361:24;18379:5;18361:24;:::i;:::-;18354:5;18351:35;18341:2;;18400:1;18397;18390:12;18341:2;18331:79;:::o

Swarm Source

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