ETH Price: $2,440.62 (-0.63%)
Gas: 3.37 Gwei
 

Overview

Max Total Supply

1,000,000,000,000 eTenSHI

Holders

13

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
EtherTenshi

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-17
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.4;

contract Owned {
    address public owner;
    address public proposedOwner;

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() virtual {
        require(msg.sender == owner);
        _;
    }

    /**
     * @dev propeses a new owner
     * Can only be called by the current owner.
     */
    function proposeOwner(address payable _newOwner) external onlyOwner {
        proposedOwner = _newOwner;
    }

    /**
     * @dev claims ownership of the contract
     * Can only be called by the new proposed owner.
     */
    function claimOwnership() external {
        require(msg.sender == proposedOwner);
        emit OwnershipTransferred(owner, proposedOwner);
        owner = proposedOwner;
    }
}
// File: @openzeppelin/contracts/utils/Context.sol



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;
    }
}

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol





pragma solidity ^0.8.0;

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

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol

pragma solidity ^0.8.0;


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol



pragma solidity ^0.8.0;




/**
 * @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, IERC20Metadata {
    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 two 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 override returns (string memory) {
        return _name;
    }

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

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




pragma solidity 0.8.4;
    contract EtherTenshi  is ERC20, Owned {
    uint256 public minSupply;
    address public beneficiary;
    bool public feesEnabled;
    mapping(address => bool) public isExcludedFromFee;

    event MinSupplyUpdated(uint256 oldAmount, uint256 newAmount);
    event BeneficiaryUpdated(address oldBeneficiary, address newBeneficiary);
    event FeesEnabledUpdated(bool enabled);
    event ExcludedFromFeeUpdated(address account, bool excluded);

    constructor() ERC20("EtherTenshi", "eTenSHI") {
        minSupply = 100000000 ether;
        uint256 totalSupply = 1000000000000 ether;
        feesEnabled = false;
        _mint(_msgSender(), totalSupply);
        isExcludedFromFee[msg.sender] = true;
        isExcludedFromFee[0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D] = true;
        beneficiary = msg.sender;
    }

    /**
     * @dev if fees are enabled, subtract 2.25% fee and send it to beneficiary
     * @dev after a certain threshold, try to swap collected fees automatically
     * @dev if automatic swap fails (or beneficiary does not implement swapTokens function) transfer should still succeed
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(
            recipient != address(this),
            "Cannot send tokens to token contract"
        );
        if (
            !feesEnabled ||
            isExcludedFromFee[sender] ||
            isExcludedFromFee[recipient]
        ) {
            ERC20._transfer(sender, recipient, amount);
            return;
        }
        // burn tokens if min supply not reached yet
        uint256 burnedFee = calculateFee(amount, 25);
        if (totalSupply() - burnedFee >= minSupply) {
            _burn(sender, burnedFee);
        } else {
            burnedFee = 0;
        }
        uint256 transferFee = calculateFee(amount, 200);
        ERC20._transfer(sender, beneficiary, transferFee);
        ERC20._transfer(sender, recipient, amount - transferFee - burnedFee);
    }

    function calculateFee(uint256 _amount, uint256 _fee)
        public
        pure
        returns (uint256)
    {
        return (_amount * _fee) / 10000;
    }

    /**
     * @notice allows to burn tokens from own balance
     * @dev only allows burning tokens until minimum supply is reached
     * @param value amount of tokens to burn
     */
    function burn(uint256 value) public {
        _burn(_msgSender(), value);
        require(totalSupply() >= minSupply, "total supply exceeds min supply");
    }

    /**
     * @notice sets minimum supply of the token
     * @dev only callable by owner
     * @param _newMinSupply new minimum supply
     */
    function setMinSupply(uint256 _newMinSupply) public onlyOwner {
        emit MinSupplyUpdated(minSupply, _newMinSupply);
        minSupply = _newMinSupply;
    }

   
    /**
     * @notice sets recipient of transfer fee
     * @dev only callable by owner
     * @param _newBeneficiary new beneficiary
     */
    function setBeneficiary(address _newBeneficiary) public onlyOwner {
        setExcludeFromFee(_newBeneficiary, true);
        emit BeneficiaryUpdated(beneficiary, _newBeneficiary);
        beneficiary = _newBeneficiary;
    }

    /**
     * @notice sets whether account collects fees on token transfer
     * @dev only callable by owner
     * @param _enabled bool whether fees are enabled
     */
    function setFeesEnabled(bool _enabled) public onlyOwner {
        emit FeesEnabledUpdated(_enabled);
        feesEnabled = _enabled;
    }

    /**
     * @notice adds or removes an account that is exempt from fee collection
     * @dev only callable by owner
     * @param _account account to modify
     * @param _excluded new value
     */
    function setExcludeFromFee(address _account, bool _excluded)
        public
        onlyOwner
    {
        isExcludedFromFee[_account] = _excluded;
        emit ExcludedFromFeeUpdated(_account, _excluded);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldBeneficiary","type":"address"},{"indexed":false,"internalType":"address","name":"newBeneficiary","type":"address"}],"name":"BeneficiaryUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludedFromFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"FeesEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"MinSupplyUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"calculateFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","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":[],"name":"feesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newOwner","type":"address"}],"name":"proposeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newBeneficiary","type":"address"}],"name":"setBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setFeesEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMinSupply","type":"uint256"}],"name":"setMinSupply","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"}]

60806040523480156200001157600080fd5b506040518060400160405280600b81526020017f457468657254656e7368690000000000000000000000000000000000000000008152506040518060400160405280600781526020017f6554656e534849000000000000000000000000000000000000000000000000008152508160039080519060200190620000969291906200042c565b508060049080519060200190620000af9291906200042c565b50505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36a52b7d2dcc80cd2e400000060078190555060006c0c9f2c9cd04674edea4000000090506000600860146101000a81548160ff021916908315150217905550620001ae620001a1620002ba60201b60201c565b82620002c260201b60201c565b6001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000688565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000335576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200032c9062000514565b60405180910390fd5b62000349600083836200042760201b60201c565b80600260008282546200035d919062000564565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620003b4919062000564565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200041b919062000536565b60405180910390a35050565b505050565b8280546200043a90620005cb565b90600052602060002090601f0160209004810192826200045e5760008555620004aa565b82601f106200047957805160ff1916838001178555620004aa565b82800160010185558215620004aa579182015b82811115620004a95782518255916020019190600101906200048c565b5b509050620004b99190620004bd565b5090565b5b80821115620004d8576000816000905550600101620004be565b5090565b6000620004eb601f8362000553565b9150620004f8826200065f565b602082019050919050565b6200050e81620005c1565b82525050565b600060208201905081810360008301526200052f81620004dc565b9050919050565b60006020820190506200054d600083018462000503565b92915050565b600082825260208201905092915050565b60006200057182620005c1565b91506200057e83620005c1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005b657620005b562000601565b5b828201905092915050565b6000819050919050565b60006002820490506001821680620005e457607f821691505b60208210811415620005fb57620005fa62000630565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61254080620006986000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80635342acb4116100de578063a64e4f8a11610097578063af9549e011610071578063af9549e014610462578063b5ed298a1461047e578063d153b60c1461049a578063dd62ed3e146104b857610173565b8063a64e4f8a146103f8578063a901dd9214610416578063a9059cbb1461043257610173565b80635342acb41461030e57806370a082311461033e5780638da5cb5b1461036e5780638fe6cae31461038c57806395d89b41146103aa578063a457c2d7146103c857610173565b8063313ce56711610130578063313ce5671461024c57806334e731221461026a57806338af3eed1461029a57806339509351146102b857806342966c68146102e85780634e71e0c81461030457610173565b806306fdde0314610178578063095ea7b31461019657806318160ddd146101c65780631ac2874b146101e45780631c31f7101461020057806323b872dd1461021c575b600080fd5b6101806104e8565b60405161018d9190611cf3565b60405180910390f35b6101b060048036038101906101ab91906119ab565b61057a565b6040516101bd9190611cd8565b60405180910390f35b6101ce610598565b6040516101db9190611e75565b60405180910390f35b6101fe60048036038101906101f99190611a10565b6105a2565b005b61021a60048036038101906102159190611892565b610641565b005b61023660048036038101906102319190611920565b610745565b6040516102439190611cd8565b60405180910390f35b610254610846565b6040516102619190611eb9565b60405180910390f35b610284600480360381019061027f9190611a39565b61084f565b6040516102919190611e75565b60405180910390f35b6102a2610872565b6040516102af9190611c6b565b60405180910390f35b6102d260048036038101906102cd91906119ab565b610898565b6040516102df9190611cd8565b60405180910390f35b61030260048036038101906102fd9190611a10565b610944565b005b61030c6109a4565b005b61032860048036038101906103239190611892565b610b01565b6040516103359190611cd8565b60405180910390f35b61035860048036038101906103539190611892565b610b21565b6040516103659190611e75565b60405180910390f35b610376610b69565b6040516103839190611c6b565b60405180910390f35b610394610b8f565b6040516103a19190611e75565b60405180910390f35b6103b2610b95565b6040516103bf9190611cf3565b60405180910390f35b6103e260048036038101906103dd91906119ab565b610c27565b6040516103ef9190611cd8565b60405180910390f35b610400610d1b565b60405161040d9190611cd8565b60405180910390f35b610430600480360381019061042b91906119e7565b610d2e565b005b61044c600480360381019061044791906119ab565b610ddc565b6040516104599190611cd8565b60405180910390f35b61047c6004803603810190610477919061196f565b610dfa565b005b610498600480360381019061049391906118bb565b610ee8565b005b6104a2610f86565b6040516104af9190611c6b565b60405180910390f35b6104d260048036038101906104cd91906118e4565b610fac565b6040516104df9190611e75565b60405180910390f35b6060600380546104f79061209f565b80601f01602080910402602001604051908101604052809291908181526020018280546105239061209f565b80156105705780601f1061054557610100808354040283529160200191610570565b820191906000526020600020905b81548152906001019060200180831161055357829003601f168201915b5050505050905090565b600061058e610587611033565b848461103b565b6001905092915050565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105fc57600080fd5b7f8e485513f38ca4c23b0c8170161c4fd5c16f934ea7c068b376f646b0194d1b8e6007548260405161062f929190611e90565b60405180910390a18060078190555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461069b57600080fd5b6106a6816001610dfa565b7fe72eaf6addaa195f3c83095031dd08f3a96808dcf047babed1fe4e4f69d6c622600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516106f9929190611c86565b60405180910390a180600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610752848484611206565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061079d611033565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561081d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081490611db5565b60405180910390fd5b61083a85610829611033565b85846108359190611fd1565b61103b565b60019150509392505050565b60006012905090565b600061271082846108609190611f77565b61086a9190611f46565b905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061093a6108a5611033565b8484600160006108b3611033565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109359190611ef0565b61103b565b6001905092915050565b61095561094f611033565b826113e6565b600754610960610598565b10156109a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099890611e35565b60405180910390fd5b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109fe57600080fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60096020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b606060048054610ba49061209f565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd09061209f565b8015610c1d5780601f10610bf257610100808354040283529160200191610c1d565b820191906000526020600020905b815481529060010190602001808311610c0057829003601f168201915b5050505050905090565b60008060016000610c36611033565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cea90611e55565b60405180910390fd5b610d10610cfe611033565b858584610d0b9190611fd1565b61103b565b600191505092915050565b600860149054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d8857600080fd5b7fba500994dffbabeeb9e430f03a978d7b975359a20c5bde3a6ccb5a0c454680c881604051610db79190611cd8565b60405180910390a180600860146101000a81548160ff02191690831515021790555050565b6000610df0610de9611033565b8484611206565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e5457600080fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f318c131114339c004fff0a22fcdbbc0566bb2a7cd3aa1660e636ec5a66784ff28282604051610edc929190611caf565b60405180910390a15050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f4257600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a290611e15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561111b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111290611d55565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111f99190611e75565b60405180910390a3505050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126c90611d95565b60405180910390fd5b600860149054906101000a900460ff1615806112da5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061132e5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156113435761133e8383836115ba565b6113e1565b600061135082601961084f565b90506007548161135e610598565b6113689190611fd1565b1061137c5761137784826113e6565b611381565b600090505b600061138e8360c861084f565b90506113bd85600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836115ba565b6113de85858484876113cf9190611fd1565b6113d99190611fd1565b6115ba565b50505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d90611dd5565b60405180910390fd5b61146282600083611839565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df90611d35565b60405180910390fd5b81816114f49190611fd1565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546115489190611fd1565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115ad9190611e75565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190611df5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190611d15565b60405180910390fd5b6116a5838383611839565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561172b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172290611d75565b60405180910390fd5b81816117379190611fd1565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117c79190611ef0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161182b9190611e75565b60405180910390a350505050565b505050565b60008135905061184d816124ae565b92915050565b600081359050611862816124c5565b92915050565b600081359050611877816124dc565b92915050565b60008135905061188c816124f3565b92915050565b6000602082840312156118a457600080fd5b60006118b28482850161183e565b91505092915050565b6000602082840312156118cd57600080fd5b60006118db84828501611853565b91505092915050565b600080604083850312156118f757600080fd5b60006119058582860161183e565b92505060206119168582860161183e565b9150509250929050565b60008060006060848603121561193557600080fd5b60006119438682870161183e565b93505060206119548682870161183e565b92505060406119658682870161187d565b9150509250925092565b6000806040838503121561198257600080fd5b60006119908582860161183e565b92505060206119a185828601611868565b9150509250929050565b600080604083850312156119be57600080fd5b60006119cc8582860161183e565b92505060206119dd8582860161187d565b9150509250929050565b6000602082840312156119f957600080fd5b6000611a0784828501611868565b91505092915050565b600060208284031215611a2257600080fd5b6000611a308482850161187d565b91505092915050565b60008060408385031215611a4c57600080fd5b6000611a5a8582860161187d565b9250506020611a6b8582860161187d565b9150509250929050565b611a7e81612005565b82525050565b611a8d81612029565b82525050565b6000611a9e82611ed4565b611aa88185611edf565b9350611ab881856020860161206c565b611ac18161215e565b840191505092915050565b6000611ad9602383611edf565b9150611ae48261216f565b604082019050919050565b6000611afc602283611edf565b9150611b07826121be565b604082019050919050565b6000611b1f602283611edf565b9150611b2a8261220d565b604082019050919050565b6000611b42602683611edf565b9150611b4d8261225c565b604082019050919050565b6000611b65602483611edf565b9150611b70826122ab565b604082019050919050565b6000611b88602883611edf565b9150611b93826122fa565b604082019050919050565b6000611bab602183611edf565b9150611bb682612349565b604082019050919050565b6000611bce602583611edf565b9150611bd982612398565b604082019050919050565b6000611bf1602483611edf565b9150611bfc826123e7565b604082019050919050565b6000611c14601f83611edf565b9150611c1f82612436565b602082019050919050565b6000611c37602583611edf565b9150611c428261245f565b604082019050919050565b611c5681612055565b82525050565b611c658161205f565b82525050565b6000602082019050611c806000830184611a75565b92915050565b6000604082019050611c9b6000830185611a75565b611ca86020830184611a75565b9392505050565b6000604082019050611cc46000830185611a75565b611cd16020830184611a84565b9392505050565b6000602082019050611ced6000830184611a84565b92915050565b60006020820190508181036000830152611d0d8184611a93565b905092915050565b60006020820190508181036000830152611d2e81611acc565b9050919050565b60006020820190508181036000830152611d4e81611aef565b9050919050565b60006020820190508181036000830152611d6e81611b12565b9050919050565b60006020820190508181036000830152611d8e81611b35565b9050919050565b60006020820190508181036000830152611dae81611b58565b9050919050565b60006020820190508181036000830152611dce81611b7b565b9050919050565b60006020820190508181036000830152611dee81611b9e565b9050919050565b60006020820190508181036000830152611e0e81611bc1565b9050919050565b60006020820190508181036000830152611e2e81611be4565b9050919050565b60006020820190508181036000830152611e4e81611c07565b9050919050565b60006020820190508181036000830152611e6e81611c2a565b9050919050565b6000602082019050611e8a6000830184611c4d565b92915050565b6000604082019050611ea56000830185611c4d565b611eb26020830184611c4d565b9392505050565b6000602082019050611ece6000830184611c5c565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611efb82612055565b9150611f0683612055565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611f3b57611f3a6120d1565b5b828201905092915050565b6000611f5182612055565b9150611f5c83612055565b925082611f6c57611f6b612100565b5b828204905092915050565b6000611f8282612055565b9150611f8d83612055565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611fc657611fc56120d1565b5b828202905092915050565b6000611fdc82612055565b9150611fe783612055565b925082821015611ffa57611ff96120d1565b5b828203905092915050565b600061201082612035565b9050919050565b600061202282612035565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561208a57808201518184015260208101905061206f565b83811115612099576000848401525b50505050565b600060028204905060018216806120b757607f821691505b602082108114156120cb576120ca61212f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f742073656e6420746f6b656e7320746f20746f6b656e20636f6e7460008201527f7261637400000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f746f74616c20737570706c792065786365656473206d696e20737570706c7900600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6124b781612005565b81146124c257600080fd5b50565b6124ce81612017565b81146124d957600080fd5b50565b6124e581612029565b81146124f057600080fd5b50565b6124fc81612055565b811461250757600080fd5b5056fea2646970667358221220c5804738c5cf30cd56d183d621e537fd6b1ea5122683fe6d536c7290ea3a02f464736f6c63430008040033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101735760003560e01c80635342acb4116100de578063a64e4f8a11610097578063af9549e011610071578063af9549e014610462578063b5ed298a1461047e578063d153b60c1461049a578063dd62ed3e146104b857610173565b8063a64e4f8a146103f8578063a901dd9214610416578063a9059cbb1461043257610173565b80635342acb41461030e57806370a082311461033e5780638da5cb5b1461036e5780638fe6cae31461038c57806395d89b41146103aa578063a457c2d7146103c857610173565b8063313ce56711610130578063313ce5671461024c57806334e731221461026a57806338af3eed1461029a57806339509351146102b857806342966c68146102e85780634e71e0c81461030457610173565b806306fdde0314610178578063095ea7b31461019657806318160ddd146101c65780631ac2874b146101e45780631c31f7101461020057806323b872dd1461021c575b600080fd5b6101806104e8565b60405161018d9190611cf3565b60405180910390f35b6101b060048036038101906101ab91906119ab565b61057a565b6040516101bd9190611cd8565b60405180910390f35b6101ce610598565b6040516101db9190611e75565b60405180910390f35b6101fe60048036038101906101f99190611a10565b6105a2565b005b61021a60048036038101906102159190611892565b610641565b005b61023660048036038101906102319190611920565b610745565b6040516102439190611cd8565b60405180910390f35b610254610846565b6040516102619190611eb9565b60405180910390f35b610284600480360381019061027f9190611a39565b61084f565b6040516102919190611e75565b60405180910390f35b6102a2610872565b6040516102af9190611c6b565b60405180910390f35b6102d260048036038101906102cd91906119ab565b610898565b6040516102df9190611cd8565b60405180910390f35b61030260048036038101906102fd9190611a10565b610944565b005b61030c6109a4565b005b61032860048036038101906103239190611892565b610b01565b6040516103359190611cd8565b60405180910390f35b61035860048036038101906103539190611892565b610b21565b6040516103659190611e75565b60405180910390f35b610376610b69565b6040516103839190611c6b565b60405180910390f35b610394610b8f565b6040516103a19190611e75565b60405180910390f35b6103b2610b95565b6040516103bf9190611cf3565b60405180910390f35b6103e260048036038101906103dd91906119ab565b610c27565b6040516103ef9190611cd8565b60405180910390f35b610400610d1b565b60405161040d9190611cd8565b60405180910390f35b610430600480360381019061042b91906119e7565b610d2e565b005b61044c600480360381019061044791906119ab565b610ddc565b6040516104599190611cd8565b60405180910390f35b61047c6004803603810190610477919061196f565b610dfa565b005b610498600480360381019061049391906118bb565b610ee8565b005b6104a2610f86565b6040516104af9190611c6b565b60405180910390f35b6104d260048036038101906104cd91906118e4565b610fac565b6040516104df9190611e75565b60405180910390f35b6060600380546104f79061209f565b80601f01602080910402602001604051908101604052809291908181526020018280546105239061209f565b80156105705780601f1061054557610100808354040283529160200191610570565b820191906000526020600020905b81548152906001019060200180831161055357829003601f168201915b5050505050905090565b600061058e610587611033565b848461103b565b6001905092915050565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105fc57600080fd5b7f8e485513f38ca4c23b0c8170161c4fd5c16f934ea7c068b376f646b0194d1b8e6007548260405161062f929190611e90565b60405180910390a18060078190555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461069b57600080fd5b6106a6816001610dfa565b7fe72eaf6addaa195f3c83095031dd08f3a96808dcf047babed1fe4e4f69d6c622600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826040516106f9929190611c86565b60405180910390a180600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610752848484611206565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061079d611033565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561081d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081490611db5565b60405180910390fd5b61083a85610829611033565b85846108359190611fd1565b61103b565b60019150509392505050565b60006012905090565b600061271082846108609190611f77565b61086a9190611f46565b905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061093a6108a5611033565b8484600160006108b3611033565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109359190611ef0565b61103b565b6001905092915050565b61095561094f611033565b826113e6565b600754610960610598565b10156109a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099890611e35565b60405180910390fd5b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109fe57600080fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60096020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b606060048054610ba49061209f565b80601f0160208091040260200160405190810160405280929190818152602001828054610bd09061209f565b8015610c1d5780601f10610bf257610100808354040283529160200191610c1d565b820191906000526020600020905b815481529060010190602001808311610c0057829003601f168201915b5050505050905090565b60008060016000610c36611033565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cf3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cea90611e55565b60405180910390fd5b610d10610cfe611033565b858584610d0b9190611fd1565b61103b565b600191505092915050565b600860149054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d8857600080fd5b7fba500994dffbabeeb9e430f03a978d7b975359a20c5bde3a6ccb5a0c454680c881604051610db79190611cd8565b60405180910390a180600860146101000a81548160ff02191690831515021790555050565b6000610df0610de9611033565b8484611206565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e5457600080fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f318c131114339c004fff0a22fcdbbc0566bb2a7cd3aa1660e636ec5a66784ff28282604051610edc929190611caf565b60405180910390a15050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f4257600080fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a290611e15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561111b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111290611d55565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111f99190611e75565b60405180910390a3505050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126c90611d95565b60405180910390fd5b600860149054906101000a900460ff1615806112da5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061132e5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156113435761133e8383836115ba565b6113e1565b600061135082601961084f565b90506007548161135e610598565b6113689190611fd1565b1061137c5761137784826113e6565b611381565b600090505b600061138e8360c861084f565b90506113bd85600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836115ba565b6113de85858484876113cf9190611fd1565b6113d99190611fd1565b6115ba565b50505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d90611dd5565b60405180910390fd5b61146282600083611839565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114df90611d35565b60405180910390fd5b81816114f49190611fd1565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546115489190611fd1565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115ad9190611e75565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561162a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162190611df5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561169a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169190611d15565b60405180910390fd5b6116a5838383611839565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561172b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172290611d75565b60405180910390fd5b81816117379190611fd1565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117c79190611ef0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161182b9190611e75565b60405180910390a350505050565b505050565b60008135905061184d816124ae565b92915050565b600081359050611862816124c5565b92915050565b600081359050611877816124dc565b92915050565b60008135905061188c816124f3565b92915050565b6000602082840312156118a457600080fd5b60006118b28482850161183e565b91505092915050565b6000602082840312156118cd57600080fd5b60006118db84828501611853565b91505092915050565b600080604083850312156118f757600080fd5b60006119058582860161183e565b92505060206119168582860161183e565b9150509250929050565b60008060006060848603121561193557600080fd5b60006119438682870161183e565b93505060206119548682870161183e565b92505060406119658682870161187d565b9150509250925092565b6000806040838503121561198257600080fd5b60006119908582860161183e565b92505060206119a185828601611868565b9150509250929050565b600080604083850312156119be57600080fd5b60006119cc8582860161183e565b92505060206119dd8582860161187d565b9150509250929050565b6000602082840312156119f957600080fd5b6000611a0784828501611868565b91505092915050565b600060208284031215611a2257600080fd5b6000611a308482850161187d565b91505092915050565b60008060408385031215611a4c57600080fd5b6000611a5a8582860161187d565b9250506020611a6b8582860161187d565b9150509250929050565b611a7e81612005565b82525050565b611a8d81612029565b82525050565b6000611a9e82611ed4565b611aa88185611edf565b9350611ab881856020860161206c565b611ac18161215e565b840191505092915050565b6000611ad9602383611edf565b9150611ae48261216f565b604082019050919050565b6000611afc602283611edf565b9150611b07826121be565b604082019050919050565b6000611b1f602283611edf565b9150611b2a8261220d565b604082019050919050565b6000611b42602683611edf565b9150611b4d8261225c565b604082019050919050565b6000611b65602483611edf565b9150611b70826122ab565b604082019050919050565b6000611b88602883611edf565b9150611b93826122fa565b604082019050919050565b6000611bab602183611edf565b9150611bb682612349565b604082019050919050565b6000611bce602583611edf565b9150611bd982612398565b604082019050919050565b6000611bf1602483611edf565b9150611bfc826123e7565b604082019050919050565b6000611c14601f83611edf565b9150611c1f82612436565b602082019050919050565b6000611c37602583611edf565b9150611c428261245f565b604082019050919050565b611c5681612055565b82525050565b611c658161205f565b82525050565b6000602082019050611c806000830184611a75565b92915050565b6000604082019050611c9b6000830185611a75565b611ca86020830184611a75565b9392505050565b6000604082019050611cc46000830185611a75565b611cd16020830184611a84565b9392505050565b6000602082019050611ced6000830184611a84565b92915050565b60006020820190508181036000830152611d0d8184611a93565b905092915050565b60006020820190508181036000830152611d2e81611acc565b9050919050565b60006020820190508181036000830152611d4e81611aef565b9050919050565b60006020820190508181036000830152611d6e81611b12565b9050919050565b60006020820190508181036000830152611d8e81611b35565b9050919050565b60006020820190508181036000830152611dae81611b58565b9050919050565b60006020820190508181036000830152611dce81611b7b565b9050919050565b60006020820190508181036000830152611dee81611b9e565b9050919050565b60006020820190508181036000830152611e0e81611bc1565b9050919050565b60006020820190508181036000830152611e2e81611be4565b9050919050565b60006020820190508181036000830152611e4e81611c07565b9050919050565b60006020820190508181036000830152611e6e81611c2a565b9050919050565b6000602082019050611e8a6000830184611c4d565b92915050565b6000604082019050611ea56000830185611c4d565b611eb26020830184611c4d565b9392505050565b6000602082019050611ece6000830184611c5c565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611efb82612055565b9150611f0683612055565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611f3b57611f3a6120d1565b5b828201905092915050565b6000611f5182612055565b9150611f5c83612055565b925082611f6c57611f6b612100565b5b828204905092915050565b6000611f8282612055565b9150611f8d83612055565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611fc657611fc56120d1565b5b828202905092915050565b6000611fdc82612055565b9150611fe783612055565b925082821015611ffa57611ff96120d1565b5b828203905092915050565b600061201082612035565b9050919050565b600061202282612035565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561208a57808201518184015260208101905061206f565b83811115612099576000848401525b50505050565b600060028204905060018216806120b757607f821691505b602082108114156120cb576120ca61212f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f742073656e6420746f6b656e7320746f20746f6b656e20636f6e7460008201527f7261637400000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f746f74616c20737570706c792065786365656473206d696e20737570706c7900600082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6124b781612005565b81146124c257600080fd5b50565b6124ce81612017565b81146124d957600080fd5b50565b6124e581612029565b81146124f057600080fd5b50565b6124fc81612055565b811461250757600080fd5b5056fea2646970667358221220c5804738c5cf30cd56d183d621e537fd6b1ea5122683fe6d536c7290ea3a02f464736f6c63430008040033

Deployed Bytecode Sourcemap

16487:4095:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7682:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9849:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8802:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19264:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19589:229;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10500:422;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8644:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18579:165;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16563:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11331:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18943:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1000:180;;;:::i;:::-;;16626:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8973:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;81:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16532:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7901:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12049:377;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16596:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20003:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9313:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20361:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;762:112;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;108:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9551:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7682:100;7736:13;7769:5;7762:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7682:100;:::o;9849:169::-;9932:4;9949:39;9958:12;:10;:12::i;:::-;9972:7;9981:6;9949:8;:39::i;:::-;10006:4;9999:11;;9849:169;;;;:::o;8802:108::-;8863:7;8890:12;;8883:19;;8802:108;:::o;19264:164::-;627:5;;;;;;;;;;;613:19;;:10;:19;;;605:28;;;;;;19342:42:::1;19359:9;;19370:13;19342:42;;;;;;;:::i;:::-;;;;;;;;19407:13;19395:9;:25;;;;19264:164:::0;:::o;19589:229::-;627:5;;;;;;;;;;;613:19;;:10;:19;;;605:28;;;;;;19666:40:::1;19684:15;19701:4;19666:17;:40::i;:::-;19722:48;19741:11;;;;;;;;;;;19754:15;19722:48;;;;;;;:::i;:::-;;;;;;;;19795:15;19781:11;;:29;;;;;;;;;;;;;;;;;;19589:229:::0;:::o;10500:422::-;10606:4;10623:36;10633:6;10641:9;10652:6;10623:9;:36::i;:::-;10672:24;10699:11;:19;10711:6;10699:19;;;;;;;;;;;;;;;:33;10719:12;:10;:12::i;:::-;10699:33;;;;;;;;;;;;;;;;10672:60;;10771:6;10751:16;:26;;10743:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10833:57;10842:6;10850:12;:10;:12::i;:::-;10883:6;10864:16;:25;;;;:::i;:::-;10833:8;:57::i;:::-;10910:4;10903:11;;;10500:422;;;;;:::o;8644:93::-;8702:5;8727:2;8720:9;;8644:93;:::o;18579:165::-;18680:7;18731:5;18723:4;18713:7;:14;;;;:::i;:::-;18712:24;;;;:::i;:::-;18705:31;;18579:165;;;;:::o;16563:26::-;;;;;;;;;;;;;:::o;11331:215::-;11419:4;11436:80;11445:12;:10;:12::i;:::-;11459:7;11505:10;11468:11;:25;11480:12;:10;:12::i;:::-;11468:25;;;;;;;;;;;;;;;:34;11494:7;11468:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;11436:8;:80::i;:::-;11534:4;11527:11;;11331:215;;;;:::o;18943:162::-;18990:26;18996:12;:10;:12::i;:::-;19010:5;18990;:26::i;:::-;19052:9;;19035:13;:11;:13::i;:::-;:26;;19027:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;18943:162;:::o;1000:180::-;1068:13;;;;;;;;;;;1054:27;;:10;:27;;;1046:36;;;;;;1126:13;;;;;;;;;;;1098:42;;1119:5;;;;;;;;;;;1098:42;;;;;;;;;;;;1159:13;;;;;;;;;;;1151:5;;:21;;;;;;;;;;;;;;;;;;1000:180::o;16626:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;8973:127::-;9047:7;9074:9;:18;9084:7;9074:18;;;;;;;;;;;;;;;;9067:25;;8973:127;;;:::o;81:20::-;;;;;;;;;;;;;:::o;16532:24::-;;;;:::o;7901:104::-;7957:13;7990:7;7983:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7901:104;:::o;12049:377::-;12142:4;12159:24;12186:11;:25;12198:12;:10;:12::i;:::-;12186:25;;;;;;;;;;;;;;;:34;12212:7;12186:34;;;;;;;;;;;;;;;;12159:61;;12259:15;12239:16;:35;;12231:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12327:67;12336:12;:10;:12::i;:::-;12350:7;12378:15;12359:16;:34;;;;:::i;:::-;12327:8;:67::i;:::-;12414:4;12407:11;;;12049:377;;;;:::o;16596:23::-;;;;;;;;;;;;;:::o;20003:141::-;627:5;;;;;;;;;;;613:19;;:10;:19;;;605:28;;;;;;20075::::1;20094:8;20075:28;;;;;;:::i;:::-;;;;;;;;20128:8;20114:11;;:22;;;;;;;;;;;;;;;;;;20003:141:::0;:::o;9313:175::-;9399:4;9416:42;9426:12;:10;:12::i;:::-;9440:9;9451:6;9416:9;:42::i;:::-;9476:4;9469:11;;9313:175;;;;:::o;20361:218::-;627:5;;;;;;;;;;;613:19;;:10;:19;;;605:28;;;;;;20503:9:::1;20473:17;:27;20491:8;20473:27;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20528:43;20551:8;20561:9;20528:43;;;;;;;:::i;:::-;;;;;;;;20361:218:::0;;:::o;762:112::-;627:5;;;;;;;;;;;613:19;;:10;:19;;;605:28;;;;;;857:9:::1;841:13;;:25;;;;;;;;;;;;;;;;;;762:112:::0;:::o;108:28::-;;;;;;;;;;;;;:::o;9551:151::-;9640:7;9667:11;:18;9679:5;9667:18;;;;;;;;;;;;;;;:27;9686:7;9667:27;;;;;;;;;;;;;;;;9660:34;;9551:151;;;;:::o;1809:98::-;1862:7;1889:10;1882:17;;1809:98;:::o;15405:346::-;15524:1;15507:19;;:5;:19;;;;15499:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15605:1;15586:21;;:7;:21;;;;15578:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15689:6;15659:11;:18;15671:5;15659:18;;;;;;;;;;;;;;;:27;15678:7;15659:27;;;;;;;;;;;;;;;:36;;;;15727:7;15711:32;;15720:5;15711:32;;;15736:6;15711:32;;;;;;:::i;:::-;;;;;;;;15405:346;;;:::o;17632:939::-;17808:4;17787:26;;:9;:26;;;;17765:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;17907:11;;;;;;;;;;;17906:12;:54;;;;17935:17;:25;17953:6;17935:25;;;;;;;;;;;;;;;;;;;;;;;;;17906:54;:99;;;;17977:17;:28;17995:9;17977:28;;;;;;;;;;;;;;;;;;;;;;;;;17906:99;17888:219;;;18032:42;18048:6;18056:9;18067:6;18032:15;:42::i;:::-;18089:7;;17888:219;18171:17;18191:24;18204:6;18212:2;18191:12;:24::i;:::-;18171:44;;18259:9;;18246;18230:13;:11;:13::i;:::-;:25;;;;:::i;:::-;:38;18226:141;;18285:24;18291:6;18299:9;18285:5;:24::i;:::-;18226:141;;;18354:1;18342:13;;18226:141;18377:19;18399:25;18412:6;18420:3;18399:12;:25::i;:::-;18377:47;;18435:49;18451:6;18459:11;;;;;;;;;;;18472;18435:15;:49::i;:::-;18495:68;18511:6;18519:9;18553;18539:11;18530:6;:20;;;;:::i;:::-;:32;;;;:::i;:::-;18495:15;:68::i;:::-;17632:939;;;;;;:::o;14473:494::-;14576:1;14557:21;;:7;:21;;;;14549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14629:49;14650:7;14667:1;14671:6;14629:20;:49::i;:::-;14691:22;14716:9;:18;14726:7;14716:18;;;;;;;;;;;;;;;;14691:43;;14771:6;14753:14;:24;;14745:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14865:6;14848:14;:23;;;;:::i;:::-;14827:9;:18;14837:7;14827:18;;;;;;;;;;;;;;;:44;;;;14898:6;14882:12;;:22;;;;;;;:::i;:::-;;;;;;;;14948:1;14922:37;;14931:7;14922:37;;;14952:6;14922:37;;;;;;:::i;:::-;;;;;;;;14473:494;;;:::o;12916:604::-;13040:1;13022:20;;:6;:20;;;;13014:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13124:1;13103:23;;:9;:23;;;;13095:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13179:47;13200:6;13208:9;13219:6;13179:20;:47::i;:::-;13239:21;13263:9;:17;13273:6;13263:17;;;;;;;;;;;;;;;;13239:41;;13316:6;13299:13;:23;;13291:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13412:6;13396:13;:22;;;;:::i;:::-;13376:9;:17;13386:6;13376:17;;;;;;;;;;;;;;;:42;;;;13453:6;13429:9;:20;13439:9;13429:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;13494:9;13477:35;;13486:6;13477:35;;;13505:6;13477:35;;;;;;:::i;:::-;;;;;;;;12916:604;;;;:::o;16354:92::-;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:155::-;206:5;244:6;231:20;222:29;;260:41;295:5;260:41;:::i;:::-;212:95;;;;:::o;313:133::-;356:5;394:6;381:20;372:29;;410:30;434:5;410:30;:::i;:::-;362:84;;;;:::o;452:139::-;498:5;536:6;523:20;514:29;;552:33;579:5;552:33;:::i;:::-;504:87;;;;:::o;597:262::-;656:6;705:2;693:9;684:7;680:23;676:32;673:2;;;721:1;718;711:12;673:2;764:1;789:53;834:7;825:6;814:9;810:22;789:53;:::i;:::-;779:63;;735:117;663:196;;;;:::o;865:278::-;932:6;981:2;969:9;960:7;956:23;952:32;949:2;;;997:1;994;987:12;949:2;1040:1;1065:61;1118:7;1109:6;1098:9;1094:22;1065:61;:::i;:::-;1055:71;;1011:125;939:204;;;;:::o;1149:407::-;1217:6;1225;1274:2;1262:9;1253:7;1249:23;1245:32;1242:2;;;1290:1;1287;1280:12;1242:2;1333:1;1358:53;1403:7;1394:6;1383:9;1379:22;1358:53;:::i;:::-;1348:63;;1304:117;1460:2;1486:53;1531:7;1522:6;1511:9;1507:22;1486:53;:::i;:::-;1476:63;;1431:118;1232:324;;;;;:::o;1562:552::-;1639:6;1647;1655;1704:2;1692:9;1683:7;1679:23;1675:32;1672:2;;;1720:1;1717;1710:12;1672:2;1763:1;1788:53;1833:7;1824:6;1813:9;1809:22;1788:53;:::i;:::-;1778:63;;1734:117;1890:2;1916:53;1961:7;1952:6;1941:9;1937:22;1916:53;:::i;:::-;1906:63;;1861:118;2018:2;2044:53;2089:7;2080:6;2069:9;2065:22;2044:53;:::i;:::-;2034:63;;1989:118;1662:452;;;;;:::o;2120:401::-;2185:6;2193;2242:2;2230:9;2221:7;2217:23;2213:32;2210:2;;;2258:1;2255;2248:12;2210:2;2301:1;2326:53;2371:7;2362:6;2351:9;2347:22;2326:53;:::i;:::-;2316:63;;2272:117;2428:2;2454:50;2496:7;2487:6;2476:9;2472:22;2454:50;:::i;:::-;2444:60;;2399:115;2200:321;;;;;:::o;2527:407::-;2595:6;2603;2652:2;2640:9;2631:7;2627:23;2623:32;2620:2;;;2668:1;2665;2658:12;2620:2;2711:1;2736:53;2781:7;2772:6;2761:9;2757:22;2736:53;:::i;:::-;2726:63;;2682:117;2838:2;2864:53;2909:7;2900:6;2889:9;2885:22;2864:53;:::i;:::-;2854:63;;2809:118;2610:324;;;;;:::o;2940:256::-;2996:6;3045:2;3033:9;3024:7;3020:23;3016:32;3013:2;;;3061:1;3058;3051:12;3013:2;3104:1;3129:50;3171:7;3162:6;3151:9;3147:22;3129:50;:::i;:::-;3119:60;;3075:114;3003:193;;;;:::o;3202:262::-;3261:6;3310:2;3298:9;3289:7;3285:23;3281:32;3278:2;;;3326:1;3323;3316:12;3278:2;3369:1;3394:53;3439:7;3430:6;3419:9;3415:22;3394:53;:::i;:::-;3384:63;;3340:117;3268:196;;;;:::o;3470:407::-;3538:6;3546;3595:2;3583:9;3574:7;3570:23;3566:32;3563:2;;;3611:1;3608;3601:12;3563:2;3654:1;3679:53;3724:7;3715:6;3704:9;3700:22;3679:53;:::i;:::-;3669:63;;3625:117;3781:2;3807:53;3852:7;3843:6;3832:9;3828:22;3807:53;:::i;:::-;3797:63;;3752:118;3553:324;;;;;:::o;3883:118::-;3970:24;3988:5;3970:24;:::i;:::-;3965:3;3958:37;3948:53;;:::o;4007:109::-;4088:21;4103:5;4088:21;:::i;:::-;4083:3;4076:34;4066:50;;:::o;4122:364::-;4210:3;4238:39;4271:5;4238:39;:::i;:::-;4293:71;4357:6;4352:3;4293:71;:::i;:::-;4286:78;;4373:52;4418:6;4413:3;4406:4;4399:5;4395:16;4373:52;:::i;:::-;4450:29;4472:6;4450:29;:::i;:::-;4445:3;4441:39;4434:46;;4214:272;;;;;:::o;4492:366::-;4634:3;4655:67;4719:2;4714:3;4655:67;:::i;:::-;4648:74;;4731:93;4820:3;4731:93;:::i;:::-;4849:2;4844:3;4840:12;4833:19;;4638:220;;;:::o;4864:366::-;5006:3;5027:67;5091:2;5086:3;5027:67;:::i;:::-;5020:74;;5103:93;5192:3;5103:93;:::i;:::-;5221:2;5216:3;5212:12;5205:19;;5010:220;;;:::o;5236:366::-;5378:3;5399:67;5463:2;5458:3;5399:67;:::i;:::-;5392:74;;5475:93;5564:3;5475:93;:::i;:::-;5593:2;5588:3;5584:12;5577:19;;5382:220;;;:::o;5608:366::-;5750:3;5771:67;5835:2;5830:3;5771:67;:::i;:::-;5764:74;;5847:93;5936:3;5847:93;:::i;:::-;5965:2;5960:3;5956:12;5949:19;;5754:220;;;:::o;5980:366::-;6122:3;6143:67;6207:2;6202:3;6143:67;:::i;:::-;6136:74;;6219:93;6308:3;6219:93;:::i;:::-;6337:2;6332:3;6328:12;6321:19;;6126:220;;;:::o;6352:366::-;6494:3;6515:67;6579:2;6574:3;6515:67;:::i;:::-;6508:74;;6591:93;6680:3;6591:93;:::i;:::-;6709:2;6704:3;6700:12;6693:19;;6498:220;;;:::o;6724:366::-;6866:3;6887:67;6951:2;6946:3;6887:67;:::i;:::-;6880:74;;6963:93;7052:3;6963:93;:::i;:::-;7081:2;7076:3;7072:12;7065:19;;6870:220;;;:::o;7096:366::-;7238:3;7259:67;7323:2;7318:3;7259:67;:::i;:::-;7252:74;;7335:93;7424:3;7335:93;:::i;:::-;7453:2;7448:3;7444:12;7437:19;;7242:220;;;:::o;7468:366::-;7610:3;7631:67;7695:2;7690:3;7631:67;:::i;:::-;7624:74;;7707:93;7796:3;7707:93;:::i;:::-;7825:2;7820:3;7816:12;7809:19;;7614:220;;;:::o;7840:366::-;7982:3;8003:67;8067:2;8062:3;8003:67;:::i;:::-;7996:74;;8079:93;8168:3;8079:93;:::i;:::-;8197:2;8192:3;8188:12;8181:19;;7986:220;;;:::o;8212:366::-;8354:3;8375:67;8439:2;8434:3;8375:67;:::i;:::-;8368:74;;8451:93;8540:3;8451:93;:::i;:::-;8569:2;8564:3;8560:12;8553:19;;8358:220;;;:::o;8584:118::-;8671:24;8689:5;8671:24;:::i;:::-;8666:3;8659:37;8649:53;;:::o;8708:112::-;8791:22;8807:5;8791:22;:::i;:::-;8786:3;8779:35;8769:51;;:::o;8826:222::-;8919:4;8957:2;8946:9;8942:18;8934:26;;8970:71;9038:1;9027:9;9023:17;9014:6;8970:71;:::i;:::-;8924:124;;;;:::o;9054:332::-;9175:4;9213:2;9202:9;9198:18;9190:26;;9226:71;9294:1;9283:9;9279:17;9270:6;9226:71;:::i;:::-;9307:72;9375:2;9364:9;9360:18;9351:6;9307:72;:::i;:::-;9180:206;;;;;:::o;9392:320::-;9507:4;9545:2;9534:9;9530:18;9522:26;;9558:71;9626:1;9615:9;9611:17;9602:6;9558:71;:::i;:::-;9639:66;9701:2;9690:9;9686:18;9677:6;9639:66;:::i;:::-;9512:200;;;;;:::o;9718:210::-;9805:4;9843:2;9832:9;9828:18;9820:26;;9856:65;9918:1;9907:9;9903:17;9894:6;9856:65;:::i;:::-;9810:118;;;;:::o;9934:313::-;10047:4;10085:2;10074:9;10070:18;10062:26;;10134:9;10128:4;10124:20;10120:1;10109:9;10105:17;10098:47;10162:78;10235:4;10226:6;10162:78;:::i;:::-;10154:86;;10052:195;;;;:::o;10253:419::-;10419:4;10457:2;10446:9;10442:18;10434:26;;10506:9;10500:4;10496:20;10492:1;10481:9;10477:17;10470:47;10534:131;10660:4;10534:131;:::i;:::-;10526:139;;10424:248;;;:::o;10678:419::-;10844:4;10882:2;10871:9;10867:18;10859:26;;10931:9;10925:4;10921:20;10917:1;10906:9;10902:17;10895:47;10959:131;11085:4;10959:131;:::i;:::-;10951:139;;10849:248;;;:::o;11103:419::-;11269:4;11307:2;11296:9;11292:18;11284:26;;11356:9;11350:4;11346:20;11342:1;11331:9;11327:17;11320:47;11384:131;11510:4;11384:131;:::i;:::-;11376:139;;11274:248;;;:::o;11528:419::-;11694:4;11732:2;11721:9;11717:18;11709:26;;11781:9;11775:4;11771:20;11767:1;11756:9;11752:17;11745:47;11809:131;11935:4;11809:131;:::i;:::-;11801:139;;11699:248;;;:::o;11953:419::-;12119:4;12157:2;12146:9;12142:18;12134:26;;12206:9;12200:4;12196:20;12192:1;12181:9;12177:17;12170:47;12234:131;12360:4;12234:131;:::i;:::-;12226:139;;12124:248;;;:::o;12378:419::-;12544:4;12582:2;12571:9;12567:18;12559:26;;12631:9;12625:4;12621:20;12617:1;12606:9;12602:17;12595:47;12659:131;12785:4;12659:131;:::i;:::-;12651:139;;12549:248;;;:::o;12803:419::-;12969:4;13007:2;12996:9;12992:18;12984:26;;13056:9;13050:4;13046:20;13042:1;13031:9;13027:17;13020:47;13084:131;13210:4;13084:131;:::i;:::-;13076:139;;12974:248;;;:::o;13228:419::-;13394:4;13432:2;13421:9;13417:18;13409:26;;13481:9;13475:4;13471:20;13467:1;13456:9;13452:17;13445:47;13509:131;13635:4;13509:131;:::i;:::-;13501:139;;13399:248;;;:::o;13653:419::-;13819:4;13857:2;13846:9;13842:18;13834:26;;13906:9;13900:4;13896:20;13892:1;13881:9;13877:17;13870:47;13934:131;14060:4;13934:131;:::i;:::-;13926:139;;13824:248;;;:::o;14078:419::-;14244:4;14282:2;14271:9;14267:18;14259:26;;14331:9;14325:4;14321:20;14317:1;14306:9;14302:17;14295:47;14359:131;14485:4;14359:131;:::i;:::-;14351:139;;14249:248;;;:::o;14503:419::-;14669:4;14707:2;14696:9;14692:18;14684:26;;14756:9;14750:4;14746:20;14742:1;14731:9;14727:17;14720:47;14784:131;14910:4;14784:131;:::i;:::-;14776:139;;14674:248;;;:::o;14928:222::-;15021:4;15059:2;15048:9;15044:18;15036:26;;15072:71;15140:1;15129:9;15125:17;15116:6;15072:71;:::i;:::-;15026:124;;;;:::o;15156:332::-;15277:4;15315:2;15304:9;15300:18;15292:26;;15328:71;15396:1;15385:9;15381:17;15372:6;15328:71;:::i;:::-;15409:72;15477:2;15466:9;15462:18;15453:6;15409:72;:::i;:::-;15282:206;;;;;:::o;15494:214::-;15583:4;15621:2;15610:9;15606:18;15598:26;;15634:67;15698:1;15687:9;15683:17;15674:6;15634:67;:::i;:::-;15588:120;;;;:::o;15714:99::-;15766:6;15800:5;15794:12;15784:22;;15773:40;;;:::o;15819:169::-;15903:11;15937:6;15932:3;15925:19;15977:4;15972:3;15968:14;15953:29;;15915:73;;;;:::o;15994:305::-;16034:3;16053:20;16071:1;16053:20;:::i;:::-;16048:25;;16087:20;16105:1;16087:20;:::i;:::-;16082:25;;16241:1;16173:66;16169:74;16166:1;16163:81;16160:2;;;16247:18;;:::i;:::-;16160:2;16291:1;16288;16284:9;16277:16;;16038:261;;;;:::o;16305:185::-;16345:1;16362:20;16380:1;16362:20;:::i;:::-;16357:25;;16396:20;16414:1;16396:20;:::i;:::-;16391:25;;16435:1;16425:2;;16440:18;;:::i;:::-;16425:2;16482:1;16479;16475:9;16470:14;;16347:143;;;;:::o;16496:348::-;16536:7;16559:20;16577:1;16559:20;:::i;:::-;16554:25;;16593:20;16611:1;16593:20;:::i;:::-;16588:25;;16781:1;16713:66;16709:74;16706:1;16703:81;16698:1;16691:9;16684:17;16680:105;16677:2;;;16788:18;;:::i;:::-;16677:2;16836:1;16833;16829:9;16818:20;;16544:300;;;;:::o;16850:191::-;16890:4;16910:20;16928:1;16910:20;:::i;:::-;16905:25;;16944:20;16962:1;16944:20;:::i;:::-;16939:25;;16983:1;16980;16977:8;16974:2;;;16988:18;;:::i;:::-;16974:2;17033:1;17030;17026:9;17018:17;;16895:146;;;;:::o;17047:96::-;17084:7;17113:24;17131:5;17113:24;:::i;:::-;17102:35;;17092:51;;;:::o;17149:104::-;17194:7;17223:24;17241:5;17223:24;:::i;:::-;17212:35;;17202:51;;;:::o;17259:90::-;17293:7;17336:5;17329:13;17322:21;17311:32;;17301:48;;;:::o;17355:126::-;17392:7;17432:42;17425:5;17421:54;17410:65;;17400:81;;;:::o;17487:77::-;17524:7;17553:5;17542:16;;17532:32;;;:::o;17570:86::-;17605:7;17645:4;17638:5;17634:16;17623:27;;17613:43;;;:::o;17662:307::-;17730:1;17740:113;17754:6;17751:1;17748:13;17740:113;;;17839:1;17834:3;17830:11;17824:18;17820:1;17815:3;17811:11;17804:39;17776:2;17773:1;17769:10;17764:15;;17740:113;;;17871:6;17868:1;17865:13;17862:2;;;17951:1;17942:6;17937:3;17933:16;17926:27;17862:2;17711:258;;;;:::o;17975:320::-;18019:6;18056:1;18050:4;18046:12;18036:22;;18103:1;18097:4;18093:12;18124:18;18114:2;;18180:4;18172:6;18168:17;18158:27;;18114:2;18242;18234:6;18231:14;18211:18;18208:38;18205:2;;;18261:18;;:::i;:::-;18205:2;18026:269;;;;:::o;18301:180::-;18349:77;18346:1;18339:88;18446:4;18443:1;18436:15;18470:4;18467:1;18460:15;18487:180;18535:77;18532:1;18525:88;18632:4;18629:1;18622:15;18656:4;18653:1;18646:15;18673:180;18721:77;18718:1;18711:88;18818:4;18815:1;18808:15;18842:4;18839:1;18832:15;18859:102;18900:6;18951:2;18947:7;18942:2;18935:5;18931:14;18927:28;18917:38;;18907:54;;;:::o;18967:222::-;19107:34;19103:1;19095:6;19091:14;19084:58;19176:5;19171:2;19163:6;19159:15;19152:30;19073:116;:::o;19195:221::-;19335:34;19331:1;19323:6;19319:14;19312:58;19404:4;19399:2;19391:6;19387:15;19380:29;19301:115;:::o;19422:221::-;19562:34;19558:1;19550:6;19546:14;19539:58;19631:4;19626:2;19618:6;19614:15;19607:29;19528:115;:::o;19649:225::-;19789:34;19785:1;19777:6;19773:14;19766:58;19858:8;19853:2;19845:6;19841:15;19834:33;19755:119;:::o;19880:223::-;20020:34;20016:1;20008:6;20004:14;19997:58;20089:6;20084:2;20076:6;20072:15;20065:31;19986:117;:::o;20109:227::-;20249:34;20245:1;20237:6;20233:14;20226:58;20318:10;20313:2;20305:6;20301:15;20294:35;20215:121;:::o;20342:220::-;20482:34;20478:1;20470:6;20466:14;20459:58;20551:3;20546:2;20538:6;20534:15;20527:28;20448:114;:::o;20568:224::-;20708:34;20704:1;20696:6;20692:14;20685:58;20777:7;20772:2;20764:6;20760:15;20753:32;20674:118;:::o;20798:223::-;20938:34;20934:1;20926:6;20922:14;20915:58;21007:6;21002:2;20994:6;20990:15;20983:31;20904:117;:::o;21027:181::-;21167:33;21163:1;21155:6;21151:14;21144:57;21133:75;:::o;21214:224::-;21354:34;21350:1;21342:6;21338:14;21331:58;21423:7;21418:2;21410:6;21406:15;21399:32;21320:118;:::o;21444:122::-;21517:24;21535:5;21517:24;:::i;:::-;21510:5;21507:35;21497:2;;21556:1;21553;21546:12;21497:2;21487:79;:::o;21572:138::-;21653:32;21679:5;21653:32;:::i;:::-;21646:5;21643:43;21633:2;;21700:1;21697;21690:12;21633:2;21623:87;:::o;21716:116::-;21786:21;21801:5;21786:21;:::i;:::-;21779:5;21776:32;21766:2;;21822:1;21819;21812:12;21766:2;21756:76;:::o;21838:122::-;21911:24;21929:5;21911:24;:::i;:::-;21904:5;21901:35;21891:2;;21950:1;21947;21940:12;21891:2;21881:79;:::o

Swarm Source

ipfs://c5804738c5cf30cd56d183d621e537fd6b1ea5122683fe6d536c7290ea3a02f4
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.