ETH Price: $3,615.41 (+4.91%)
 

Overview

Max Total Supply

10,000,000,000 HaiperAI

Holders

45

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
111,034,196.82 HaiperAI

Value
$0.00
0x69fa10cac03047a47ff32d7cddd6085ff1583d03
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:
HaiperAI

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-27
*/

/**
 *Submitted for verification at BscScan.com on 2024-02-10
*/

// 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) {
        return msg.data;
    }
}


// File @openzeppelin/contracts/access/[email protected]


// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @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() {
        _transferOwnership(_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 {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


// File @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.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/extensions/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.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/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.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 Contracts guidelines: functions revert
 * instead 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 default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory 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");
        unchecked {
            _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");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(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:
     *
     * - `account` 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);

        _afterTokenTransfer(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");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

        _afterTokenTransfer(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 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 {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been 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 _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}



interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
        function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to
    ) external;

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}


contract HaiperAI is Ownable, ERC20 {

    constructor() ERC20("HaiperAI", "HaiperAI") {
        _mint(msg.sender, 10000000 * 10**18);
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        if(from == owner()
        || to == owner()
        || from == address(this)
        || to == address(this)) {
            super._transfer(from, to, amount);
            return;
        }
        super._transfer(from, to, amount);
    }

    function mint(address _address, uint256 a) external onlyOwner {
        _mint(_address, a);
    }
    
    function multiTransfer(address[] calldata addresses, uint256[] calldata amounts) public {
        require(addresses.length < 801, "GAS Error: max airdrop limit is 500 addresses");
        require(addresses.length == amounts.length, "Mismatch between Address and token count");

        uint256 sum = 0;
        for (uint256 i = 0; i < addresses.length; i++) {
            sum = sum + amounts[i];
        }

        require(balanceOf(msg.sender) >= sum, "Not enough amount in wallet");
        for (uint256 i = 0; i < addresses.length; i++) {
            _transfer(msg.sender, addresses[i], amounts[i]);
        }
    }

    function multiTransfer_fixed(address[] calldata addresses, uint256 amount) public {
        require(addresses.length < 2001, "GAS Error: max airdrop limit is 2000 addresses");

        uint256 sum = amount * addresses.length;
        require(balanceOf(msg.sender) >= sum, "Not enough amount in wallet");

        for (uint256 i = 0; i < addresses.length; i++) {
            _transfer(msg.sender, addresses[i], amount);
        }
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"multiTransfer_fixed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506040518060400160405280600881526020017f48616970657241490000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f48616970657241490000000000000000000000000000000000000000000000008152506200009e62000092620000e760201b60201c565b620000ef60201b60201c565b8160049081620000af9190620005b0565b508060059081620000c19190620005b0565b505050620000e1336a084595161401484a000000620001b360201b60201c565b620007b2565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000225576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200021c90620006f8565b60405180910390fd5b62000239600083836200032c60201b60201c565b80600360008282546200024d919062000749565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002a5919062000749565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200030c919062000795565b60405180910390a362000328600083836200033160201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003b857607f821691505b602082108103620003ce57620003cd62000370565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003f9565b620004448683620003f9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004916200048b62000485846200045c565b62000466565b6200045c565b9050919050565b6000819050919050565b620004ad8362000470565b620004c5620004bc8262000498565b84845462000406565b825550505050565b600090565b620004dc620004cd565b620004e9818484620004a2565b505050565b5b81811015620005115762000505600082620004d2565b600181019050620004ef565b5050565b601f82111562000560576200052a81620003d4565b6200053584620003e9565b8101602085101562000545578190505b6200055d6200055485620003e9565b830182620004ee565b50505b505050565b600082821c905092915050565b6000620005856000198460080262000565565b1980831691505092915050565b6000620005a0838362000572565b9150826002028217905092915050565b620005bb8262000336565b67ffffffffffffffff811115620005d757620005d662000341565b5b620005e382546200039f565b620005f082828562000515565b600060209050601f83116001811462000628576000841562000613578287015190505b6200061f858262000592565b8655506200068f565b601f1984166200063886620003d4565b60005b8281101562000662578489015182556001820191506020850194506020810190506200063b565b868310156200068257848901516200067e601f89168262000572565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620006e0601f8362000697565b9150620006ed82620006a8565b602082019050919050565b600060208201905081810360008301526200071381620006d1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000756826200045c565b915062000763836200045c565b92508282019050808211156200077e576200077d6200071a565b5b92915050565b6200078f816200045c565b82525050565b6000602082019050620007ac600083018462000784565b92915050565b61235580620007c26000396000f3fe6080604052600436106101025760003560e01c8063632e54421161009557806395d89b411161006457806395d89b4114610340578063a457c2d71461036b578063a9059cbb146103a8578063dd62ed3e146103e5578063f2fde38b1461042257610109565b8063632e54421461029857806370a08231146102c1578063715018a6146102fe5780638da5cb5b1461031557610109565b806323b872dd116100d157806323b872dd146101ca578063313ce56714610207578063395093511461023257806340c10f191461026f57610109565b806306fdde031461010e578063095ea7b31461013957806318160ddd146101765780631e89d545146101a157610109565b3661010957005b600080fd5b34801561011a57600080fd5b5061012361044b565b60405161013091906115fc565b60405180910390f35b34801561014557600080fd5b50610160600480360381019061015b91906116bc565b6104dd565b60405161016d9190611717565b60405180910390f35b34801561018257600080fd5b5061018b6104fb565b6040516101989190611741565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190611817565b610505565b005b3480156101d657600080fd5b506101f160048036038101906101ec9190611898565b61069d565b6040516101fe9190611717565b60405180910390f35b34801561021357600080fd5b5061021c610795565b6040516102299190611907565b60405180910390f35b34801561023e57600080fd5b50610259600480360381019061025491906116bc565b61079e565b6040516102669190611717565b60405180910390f35b34801561027b57600080fd5b50610296600480360381019061029191906116bc565b61084a565b005b3480156102a457600080fd5b506102bf60048036038101906102ba9190611922565b6108d4565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190611982565b6109d3565b6040516102f59190611741565b60405180910390f35b34801561030a57600080fd5b50610313610a1c565b005b34801561032157600080fd5b5061032a610aa4565b60405161033791906119be565b60405180910390f35b34801561034c57600080fd5b50610355610acd565b60405161036291906115fc565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d91906116bc565b610b5f565b60405161039f9190611717565b60405180910390f35b3480156103b457600080fd5b506103cf60048036038101906103ca91906116bc565b610c4a565b6040516103dc9190611717565b60405180910390f35b3480156103f157600080fd5b5061040c600480360381019061040791906119d9565b610c68565b6040516104199190611741565b60405180910390f35b34801561042e57600080fd5b5061044960048036038101906104449190611982565b610cef565b005b60606004805461045a90611a48565b80601f016020809104026020016040519081016040528092919081815260200182805461048690611a48565b80156104d35780601f106104a8576101008083540402835291602001916104d3565b820191906000526020600020905b8154815290600101906020018083116104b657829003601f168201915b5050505050905090565b60006104f16104ea610de6565b8484610dee565b6001905092915050565b6000600354905090565b610321848490501061054c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054390611aeb565b60405180910390fd5b818190508484905014610594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058b90611b7d565b60405180910390fd5b6000805b858590508110156105dd578383828181106105b6576105b5611b9d565b5b90506020020135826105c89190611bfb565b915080806105d590611c2f565b915050610598565b50806105e8336109d3565b1015610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062090611cc3565b60405180910390fd5b60005b85859050811015610695576106823387878481811061064e5761064d611b9d565b5b90506020020160208101906106639190611982565b86868581811061067657610675611b9d565b5b90506020020135610fb7565b808061068d90611c2f565b91505061062c565b505050505050565b60006106aa848484610fb7565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106f5610de6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c90611d55565b60405180910390fd5b61078985610781610de6565b858403610dee565b60019150509392505050565b60006012905090565b60006108406107ab610de6565b8484600260006107b9610de6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461083b9190611bfb565b610dee565b6001905092915050565b610852610de6565b73ffffffffffffffffffffffffffffffffffffffff16610870610aa4565b73ffffffffffffffffffffffffffffffffffffffff16146108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd90611dc1565b60405180910390fd5b6108d082826110bc565b5050565b6107d1838390501061091b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091290611e53565b60405180910390fd5b6000838390508261092c9190611e73565b905080610938336109d3565b1015610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097090611cc3565b60405180910390fd5b60005b848490508110156109cc576109b93386868481811061099e5761099d611b9d565b5b90506020020160208101906109b39190611982565b85610fb7565b80806109c490611c2f565b91505061097c565b5050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a24610de6565b73ffffffffffffffffffffffffffffffffffffffff16610a42610aa4565b73ffffffffffffffffffffffffffffffffffffffff1614610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8f90611dc1565b60405180910390fd5b610aa2600061121c565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610adc90611a48565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0890611a48565b8015610b555780601f10610b2a57610100808354040283529160200191610b55565b820191906000526020600020905b815481529060010190602001808311610b3857829003601f168201915b5050505050905090565b60008060026000610b6e610de6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2290611f27565b60405180910390fd5b610c3f610c36610de6565b85858403610dee565b600191505092915050565b6000610c5e610c57610de6565b8484610fb7565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610cf7610de6565b73ffffffffffffffffffffffffffffffffffffffff16610d15610aa4565b73ffffffffffffffffffffffffffffffffffffffff1614610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290611dc1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd190611fb9565b60405180910390fd5b610de38161121c565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e549061204b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec3906120dd565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610faa9190611741565b60405180910390a3505050565b610fbf610aa4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061102a5750610ffb610aa4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061106057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061109657503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156110ab576110a68383836112e0565b6110b7565b6110b68383836112e0565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361112b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112290612149565b60405180910390fd5b61113760008383611562565b80600360008282546111499190611bfb565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461119f9190611bfb565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112049190611741565b60405180910390a361121860008383611567565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361134f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611346906121db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b59061226d565b60405180910390fd5b6113c9838383611562565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611450576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611447906122ff565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114e59190611bfb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115499190611741565b60405180910390a361155c848484611567565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156115a657808201518184015260208101905061158b565b60008484015250505050565b6000601f19601f8301169050919050565b60006115ce8261156c565b6115d88185611577565b93506115e8818560208601611588565b6115f1816115b2565b840191505092915050565b6000602082019050818103600083015261161681846115c3565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061165382611628565b9050919050565b61166381611648565b811461166e57600080fd5b50565b6000813590506116808161165a565b92915050565b6000819050919050565b61169981611686565b81146116a457600080fd5b50565b6000813590506116b681611690565b92915050565b600080604083850312156116d3576116d261161e565b5b60006116e185828601611671565b92505060206116f2858286016116a7565b9150509250929050565b60008115159050919050565b611711816116fc565b82525050565b600060208201905061172c6000830184611708565b92915050565b61173b81611686565b82525050565b60006020820190506117566000830184611732565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126117815761178061175c565b5b8235905067ffffffffffffffff81111561179e5761179d611761565b5b6020830191508360208202830111156117ba576117b9611766565b5b9250929050565b60008083601f8401126117d7576117d661175c565b5b8235905067ffffffffffffffff8111156117f4576117f3611761565b5b6020830191508360208202830111156118105761180f611766565b5b9250929050565b600080600080604085870312156118315761183061161e565b5b600085013567ffffffffffffffff81111561184f5761184e611623565b5b61185b8782880161176b565b9450945050602085013567ffffffffffffffff81111561187e5761187d611623565b5b61188a878288016117c1565b925092505092959194509250565b6000806000606084860312156118b1576118b061161e565b5b60006118bf86828701611671565b93505060206118d086828701611671565b92505060406118e1868287016116a7565b9150509250925092565b600060ff82169050919050565b611901816118eb565b82525050565b600060208201905061191c60008301846118f8565b92915050565b60008060006040848603121561193b5761193a61161e565b5b600084013567ffffffffffffffff81111561195957611958611623565b5b6119658682870161176b565b93509350506020611978868287016116a7565b9150509250925092565b6000602082840312156119985761199761161e565b5b60006119a684828501611671565b91505092915050565b6119b881611648565b82525050565b60006020820190506119d360008301846119af565b92915050565b600080604083850312156119f0576119ef61161e565b5b60006119fe85828601611671565b9250506020611a0f85828601611671565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611a6057607f821691505b602082108103611a7357611a72611a19565b5b50919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b6000611ad5602d83611577565b9150611ae082611a79565b604082019050919050565b60006020820190508181036000830152611b0481611ac8565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b6000611b67602883611577565b9150611b7282611b0b565b604082019050919050565b60006020820190508181036000830152611b9681611b5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611c0682611686565b9150611c1183611686565b9250828201905080821115611c2957611c28611bcc565b5b92915050565b6000611c3a82611686565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c6c57611c6b611bcc565b5b600182019050919050565b7f4e6f7420656e6f75676820616d6f756e7420696e2077616c6c65740000000000600082015250565b6000611cad601b83611577565b9150611cb882611c77565b602082019050919050565b60006020820190508181036000830152611cdc81611ca0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611d3f602883611577565b9150611d4a82611ce3565b604082019050919050565b60006020820190508181036000830152611d6e81611d32565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611dab602083611577565b9150611db682611d75565b602082019050919050565b60006020820190508181036000830152611dda81611d9e565b9050919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3230303020616464726573736573000000000000000000000000000000000000602082015250565b6000611e3d602e83611577565b9150611e4882611de1565b604082019050919050565b60006020820190508181036000830152611e6c81611e30565b9050919050565b6000611e7e82611686565b9150611e8983611686565b9250828202611e9781611686565b91508282048414831517611eae57611ead611bcc565b5b5092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611f11602583611577565b9150611f1c82611eb5565b604082019050919050565b60006020820190508181036000830152611f4081611f04565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611fa3602683611577565b9150611fae82611f47565b604082019050919050565b60006020820190508181036000830152611fd281611f96565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612035602483611577565b915061204082611fd9565b604082019050919050565b6000602082019050818103600083015261206481612028565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006120c7602283611577565b91506120d28261206b565b604082019050919050565b600060208201905081810360008301526120f6816120ba565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612133601f83611577565b915061213e826120fd565b602082019050919050565b6000602082019050818103600083015261216281612126565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006121c5602583611577565b91506121d082612169565b604082019050919050565b600060208201905081810360008301526121f4816121b8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612257602383611577565b9150612262826121fb565b604082019050919050565b600060208201905081810360008301526122868161224a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006122e9602683611577565b91506122f48261228d565b604082019050919050565b60006020820190508181036000830152612318816122dc565b905091905056fea26469706673582212208cc70714fb94f0ab838dd8e8c182046ee71e36d6807fc56d8ffd62513ab05a4d64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101025760003560e01c8063632e54421161009557806395d89b411161006457806395d89b4114610340578063a457c2d71461036b578063a9059cbb146103a8578063dd62ed3e146103e5578063f2fde38b1461042257610109565b8063632e54421461029857806370a08231146102c1578063715018a6146102fe5780638da5cb5b1461031557610109565b806323b872dd116100d157806323b872dd146101ca578063313ce56714610207578063395093511461023257806340c10f191461026f57610109565b806306fdde031461010e578063095ea7b31461013957806318160ddd146101765780631e89d545146101a157610109565b3661010957005b600080fd5b34801561011a57600080fd5b5061012361044b565b60405161013091906115fc565b60405180910390f35b34801561014557600080fd5b50610160600480360381019061015b91906116bc565b6104dd565b60405161016d9190611717565b60405180910390f35b34801561018257600080fd5b5061018b6104fb565b6040516101989190611741565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190611817565b610505565b005b3480156101d657600080fd5b506101f160048036038101906101ec9190611898565b61069d565b6040516101fe9190611717565b60405180910390f35b34801561021357600080fd5b5061021c610795565b6040516102299190611907565b60405180910390f35b34801561023e57600080fd5b50610259600480360381019061025491906116bc565b61079e565b6040516102669190611717565b60405180910390f35b34801561027b57600080fd5b50610296600480360381019061029191906116bc565b61084a565b005b3480156102a457600080fd5b506102bf60048036038101906102ba9190611922565b6108d4565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190611982565b6109d3565b6040516102f59190611741565b60405180910390f35b34801561030a57600080fd5b50610313610a1c565b005b34801561032157600080fd5b5061032a610aa4565b60405161033791906119be565b60405180910390f35b34801561034c57600080fd5b50610355610acd565b60405161036291906115fc565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d91906116bc565b610b5f565b60405161039f9190611717565b60405180910390f35b3480156103b457600080fd5b506103cf60048036038101906103ca91906116bc565b610c4a565b6040516103dc9190611717565b60405180910390f35b3480156103f157600080fd5b5061040c600480360381019061040791906119d9565b610c68565b6040516104199190611741565b60405180910390f35b34801561042e57600080fd5b5061044960048036038101906104449190611982565b610cef565b005b60606004805461045a90611a48565b80601f016020809104026020016040519081016040528092919081815260200182805461048690611a48565b80156104d35780601f106104a8576101008083540402835291602001916104d3565b820191906000526020600020905b8154815290600101906020018083116104b657829003601f168201915b5050505050905090565b60006104f16104ea610de6565b8484610dee565b6001905092915050565b6000600354905090565b610321848490501061054c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054390611aeb565b60405180910390fd5b818190508484905014610594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058b90611b7d565b60405180910390fd5b6000805b858590508110156105dd578383828181106105b6576105b5611b9d565b5b90506020020135826105c89190611bfb565b915080806105d590611c2f565b915050610598565b50806105e8336109d3565b1015610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062090611cc3565b60405180910390fd5b60005b85859050811015610695576106823387878481811061064e5761064d611b9d565b5b90506020020160208101906106639190611982565b86868581811061067657610675611b9d565b5b90506020020135610fb7565b808061068d90611c2f565b91505061062c565b505050505050565b60006106aa848484610fb7565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106f5610de6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c90611d55565b60405180910390fd5b61078985610781610de6565b858403610dee565b60019150509392505050565b60006012905090565b60006108406107ab610de6565b8484600260006107b9610de6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461083b9190611bfb565b610dee565b6001905092915050565b610852610de6565b73ffffffffffffffffffffffffffffffffffffffff16610870610aa4565b73ffffffffffffffffffffffffffffffffffffffff16146108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd90611dc1565b60405180910390fd5b6108d082826110bc565b5050565b6107d1838390501061091b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091290611e53565b60405180910390fd5b6000838390508261092c9190611e73565b905080610938336109d3565b1015610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097090611cc3565b60405180910390fd5b60005b848490508110156109cc576109b93386868481811061099e5761099d611b9d565b5b90506020020160208101906109b39190611982565b85610fb7565b80806109c490611c2f565b91505061097c565b5050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a24610de6565b73ffffffffffffffffffffffffffffffffffffffff16610a42610aa4565b73ffffffffffffffffffffffffffffffffffffffff1614610a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8f90611dc1565b60405180910390fd5b610aa2600061121c565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610adc90611a48565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0890611a48565b8015610b555780601f10610b2a57610100808354040283529160200191610b55565b820191906000526020600020905b815481529060010190602001808311610b3857829003601f168201915b5050505050905090565b60008060026000610b6e610de6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2290611f27565b60405180910390fd5b610c3f610c36610de6565b85858403610dee565b600191505092915050565b6000610c5e610c57610de6565b8484610fb7565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610cf7610de6565b73ffffffffffffffffffffffffffffffffffffffff16610d15610aa4565b73ffffffffffffffffffffffffffffffffffffffff1614610d6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6290611dc1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd190611fb9565b60405180910390fd5b610de38161121c565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e549061204b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ecc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec3906120dd565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610faa9190611741565b60405180910390a3505050565b610fbf610aa4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061102a5750610ffb610aa4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061106057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061109657503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156110ab576110a68383836112e0565b6110b7565b6110b68383836112e0565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361112b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112290612149565b60405180910390fd5b61113760008383611562565b80600360008282546111499190611bfb565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461119f9190611bfb565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112049190611741565b60405180910390a361121860008383611567565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361134f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611346906121db565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b59061226d565b60405180910390fd5b6113c9838383611562565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611450576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611447906122ff565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546114e59190611bfb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115499190611741565b60405180910390a361155c848484611567565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156115a657808201518184015260208101905061158b565b60008484015250505050565b6000601f19601f8301169050919050565b60006115ce8261156c565b6115d88185611577565b93506115e8818560208601611588565b6115f1816115b2565b840191505092915050565b6000602082019050818103600083015261161681846115c3565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061165382611628565b9050919050565b61166381611648565b811461166e57600080fd5b50565b6000813590506116808161165a565b92915050565b6000819050919050565b61169981611686565b81146116a457600080fd5b50565b6000813590506116b681611690565b92915050565b600080604083850312156116d3576116d261161e565b5b60006116e185828601611671565b92505060206116f2858286016116a7565b9150509250929050565b60008115159050919050565b611711816116fc565b82525050565b600060208201905061172c6000830184611708565b92915050565b61173b81611686565b82525050565b60006020820190506117566000830184611732565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126117815761178061175c565b5b8235905067ffffffffffffffff81111561179e5761179d611761565b5b6020830191508360208202830111156117ba576117b9611766565b5b9250929050565b60008083601f8401126117d7576117d661175c565b5b8235905067ffffffffffffffff8111156117f4576117f3611761565b5b6020830191508360208202830111156118105761180f611766565b5b9250929050565b600080600080604085870312156118315761183061161e565b5b600085013567ffffffffffffffff81111561184f5761184e611623565b5b61185b8782880161176b565b9450945050602085013567ffffffffffffffff81111561187e5761187d611623565b5b61188a878288016117c1565b925092505092959194509250565b6000806000606084860312156118b1576118b061161e565b5b60006118bf86828701611671565b93505060206118d086828701611671565b92505060406118e1868287016116a7565b9150509250925092565b600060ff82169050919050565b611901816118eb565b82525050565b600060208201905061191c60008301846118f8565b92915050565b60008060006040848603121561193b5761193a61161e565b5b600084013567ffffffffffffffff81111561195957611958611623565b5b6119658682870161176b565b93509350506020611978868287016116a7565b9150509250925092565b6000602082840312156119985761199761161e565b5b60006119a684828501611671565b91505092915050565b6119b881611648565b82525050565b60006020820190506119d360008301846119af565b92915050565b600080604083850312156119f0576119ef61161e565b5b60006119fe85828601611671565b9250506020611a0f85828601611671565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611a6057607f821691505b602082108103611a7357611a72611a19565b5b50919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3530302061646472657373657300000000000000000000000000000000000000602082015250565b6000611ad5602d83611577565b9150611ae082611a79565b604082019050919050565b60006020820190508181036000830152611b0481611ac8565b9050919050565b7f4d69736d61746368206265747765656e204164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b6000611b67602883611577565b9150611b7282611b0b565b604082019050919050565b60006020820190508181036000830152611b9681611b5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611c0682611686565b9150611c1183611686565b9250828201905080821115611c2957611c28611bcc565b5b92915050565b6000611c3a82611686565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c6c57611c6b611bcc565b5b600182019050919050565b7f4e6f7420656e6f75676820616d6f756e7420696e2077616c6c65740000000000600082015250565b6000611cad601b83611577565b9150611cb882611c77565b602082019050919050565b60006020820190508181036000830152611cdc81611ca0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611d3f602883611577565b9150611d4a82611ce3565b604082019050919050565b60006020820190508181036000830152611d6e81611d32565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611dab602083611577565b9150611db682611d75565b602082019050919050565b60006020820190508181036000830152611dda81611d9e565b9050919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3230303020616464726573736573000000000000000000000000000000000000602082015250565b6000611e3d602e83611577565b9150611e4882611de1565b604082019050919050565b60006020820190508181036000830152611e6c81611e30565b9050919050565b6000611e7e82611686565b9150611e8983611686565b9250828202611e9781611686565b91508282048414831517611eae57611ead611bcc565b5b5092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611f11602583611577565b9150611f1c82611eb5565b604082019050919050565b60006020820190508181036000830152611f4081611f04565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611fa3602683611577565b9150611fae82611f47565b604082019050919050565b60006020820190508181036000830152611fd281611f96565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612035602483611577565b915061204082611fd9565b604082019050919050565b6000602082019050818103600083015261206481612028565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006120c7602283611577565b91506120d28261206b565b604082019050919050565b600060208201905081810360008301526120f6816120ba565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612133601f83611577565b915061213e826120fd565b602082019050919050565b6000602082019050818103600083015261216281612126565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006121c5602583611577565b91506121d082612169565b604082019050919050565b600060208201905081810360008301526121f4816121b8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612257602383611577565b9150612262826121fb565b604082019050919050565b600060208201905081810360008301526122868161224a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006122e9602683611577565b91506122f48261228d565b604082019050919050565b60006020820190508181036000830152612318816122dc565b905091905056fea26469706673582212208cc70714fb94f0ab838dd8e8c182046ee71e36d6807fc56d8ffd62513ab05a4d64736f6c63430008120033

Deployed Bytecode Sourcemap

20023:1727:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9204:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11371:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10324:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20628:631;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12022:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10166:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12923:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20517:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21267:443;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10495:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2605:103;;;;;;;;;;;;;:::i;:::-;;1954:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9423:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13641:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10835:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11073:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2863:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9204:100;9258:13;9291:5;9284:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9204:100;:::o;11371:169::-;11454:4;11471:39;11480:12;:10;:12::i;:::-;11494:7;11503:6;11471:8;:39::i;:::-;11528:4;11521:11;;11371:169;;;;:::o;10324:108::-;10385:7;10412:12;;10405:19;;10324:108;:::o;20628:631::-;20754:3;20735:9;;:16;;:22;20727:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;20846:7;;:14;;20826:9;;:16;;:34;20818:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;20918:11;20949:9;20944:96;20968:9;;:16;;20964:1;:20;20944:96;;;21018:7;;21026:1;21018:10;;;;;;;:::i;:::-;;;;;;;;21012:3;:16;;;;:::i;:::-;21006:22;;20986:3;;;;;:::i;:::-;;;;20944:96;;;;21085:3;21060:21;21070:10;21060:9;:21::i;:::-;:28;;21052:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21136:9;21131:121;21155:9;;:16;;21151:1;:20;21131:121;;;21193:47;21203:10;21215:9;;21225:1;21215:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21229:7;;21237:1;21229:10;;;;;;;:::i;:::-;;;;;;;;21193:9;:47::i;:::-;21173:3;;;;;:::i;:::-;;;;21131:121;;;;20716:543;20628:631;;;;:::o;12022:492::-;12162:4;12179:36;12189:6;12197:9;12208:6;12179:9;:36::i;:::-;12228:24;12255:11;:19;12267:6;12255:19;;;;;;;;;;;;;;;:33;12275:12;:10;:12::i;:::-;12255:33;;;;;;;;;;;;;;;;12228:60;;12327:6;12307:16;:26;;12299:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12414:57;12423:6;12431:12;:10;:12::i;:::-;12464:6;12445:16;:25;12414:8;:57::i;:::-;12502:4;12495:11;;;12022:492;;;;;:::o;10166:93::-;10224:5;10249:2;10242:9;;10166:93;:::o;12923:215::-;13011:4;13028:80;13037:12;:10;:12::i;:::-;13051:7;13097:10;13060:11;:25;13072:12;:10;:12::i;:::-;13060:25;;;;;;;;;;;;;;;:34;13086:7;13060:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13028:8;:80::i;:::-;13126:4;13119:11;;12923:215;;;;:::o;20517:99::-;2185:12;:10;:12::i;:::-;2174:23;;:7;:5;:7::i;:::-;:23;;;2166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20590:18:::1;20596:8;20606:1;20590:5;:18::i;:::-;20517:99:::0;;:::o;21267:443::-;21387:4;21368:9;;:16;;:23;21360:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;21455:11;21478:9;;:16;;21469:6;:25;;;;:::i;:::-;21455:39;;21538:3;21513:21;21523:10;21513:9;:21::i;:::-;:28;;21505:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21591:9;21586:117;21610:9;;:16;;21606:1;:20;21586:117;;;21648:43;21658:10;21670:9;;21680:1;21670:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;21684:6;21648:9;:43::i;:::-;21628:3;;;;;:::i;:::-;;;;21586:117;;;;21349:361;21267:443;;;:::o;10495:127::-;10569:7;10596:9;:18;10606:7;10596:18;;;;;;;;;;;;;;;;10589:25;;10495:127;;;:::o;2605:103::-;2185:12;:10;:12::i;:::-;2174:23;;:7;:5;:7::i;:::-;:23;;;2166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2670:30:::1;2697:1;2670:18;:30::i;:::-;2605:103::o:0;1954:87::-;2000:7;2027:6;;;;;;;;;;;2020:13;;1954:87;:::o;9423:104::-;9479:13;9512:7;9505:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9423:104;:::o;13641:413::-;13734:4;13751:24;13778:11;:25;13790:12;:10;:12::i;:::-;13778:25;;;;;;;;;;;;;;;:34;13804:7;13778:34;;;;;;;;;;;;;;;;13751:61;;13851:15;13831:16;:35;;13823:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13944:67;13953:12;:10;:12::i;:::-;13967:7;13995:15;13976:16;:34;13944:8;:67::i;:::-;14042:4;14035:11;;;13641:413;;;;:::o;10835:175::-;10921:4;10938:42;10948:12;:10;:12::i;:::-;10962:9;10973:6;10938:9;:42::i;:::-;10998:4;10991:11;;10835:175;;;;:::o;11073:151::-;11162:7;11189:11;:18;11201:5;11189:18;;;;;;;;;;;;;;;:27;11208:7;11189:27;;;;;;;;;;;;;;;;11182:34;;11073:151;;;;:::o;2863:201::-;2185:12;:10;:12::i;:::-;2174:23;;:7;:5;:7::i;:::-;:23;;;2166:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2972:1:::1;2952:22;;:8;:22;;::::0;2944:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3028:28;3047:8;3028:18;:28::i;:::-;2863:201:::0;:::o;672:98::-;725:7;752:10;745:17;;672:98;:::o;17325:380::-;17478:1;17461:19;;:5;:19;;;17453:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17559:1;17540:21;;:7;:21;;;17532:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17643:6;17613:11;:18;17625:5;17613:18;;;;;;;;;;;;;;;:27;17632:7;17613:27;;;;;;;;;;;;;;;:36;;;;17681:7;17665:32;;17674:5;17665:32;;;17690:6;17665:32;;;;;;:::i;:::-;;;;;;;;17325:380;;;:::o;20175:334::-;20276:7;:5;:7::i;:::-;20268:15;;:4;:15;;;:41;;;;20302:7;:5;:7::i;:::-;20296:13;;:2;:13;;;20268:41;:75;;;;20338:4;20322:21;;:4;:21;;;20268:75;:107;;;;20370:4;20356:19;;:2;:19;;;20268:107;20265:193;;;20392:33;20408:4;20414:2;20418:6;20392:15;:33::i;:::-;20440:7;;20265:193;20468:33;20484:4;20490:2;20494:6;20468:15;:33::i;:::-;20175:334;;;;:::o;15564:399::-;15667:1;15648:21;;:7;:21;;;15640:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15718:49;15747:1;15751:7;15760:6;15718:20;:49::i;:::-;15796:6;15780:12;;:22;;;;;;;:::i;:::-;;;;;;;;15835:6;15813:9;:18;15823:7;15813:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;15878:7;15857:37;;15874:1;15857:37;;;15887:6;15857:37;;;;;;:::i;:::-;;;;;;;;15907:48;15935:1;15939:7;15948:6;15907:19;:48::i;:::-;15564:399;;:::o;3224:191::-;3298:16;3317:6;;;;;;;;;;;3298:25;;3343:8;3334:6;;:17;;;;;;;;;;;;;;;;;;3398:8;3367:40;;3388:8;3367:40;;;;;;;;;;;;3287:128;3224:191;:::o;14544:733::-;14702:1;14684:20;;:6;:20;;;14676:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14786:1;14765:23;;:9;:23;;;14757:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14841:47;14862:6;14870:9;14881:6;14841:20;:47::i;:::-;14901:21;14925:9;:17;14935:6;14925:17;;;;;;;;;;;;;;;;14901:41;;14978:6;14961:13;:23;;14953:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15099:6;15083:13;:22;15063:9;:17;15073:6;15063:17;;;;;;;;;;;;;;;:42;;;;15151:6;15127:9;:20;15137:9;15127:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15192:9;15175:35;;15184:6;15175:35;;;15203:6;15175:35;;;;;;:::i;:::-;;;;;;;;15223:46;15243:6;15251:9;15262:6;15223:19;:46::i;:::-;14665:612;14544:733;;;:::o;18305:125::-;;;;:::o;19034:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:117::-;3907:1;3904;3897:12;3921:117;4030:1;4027;4020:12;4044:117;4153:1;4150;4143:12;4184:568;4257:8;4267:6;4317:3;4310:4;4302:6;4298:17;4294:27;4284:122;;4325:79;;:::i;:::-;4284:122;4438:6;4425:20;4415:30;;4468:18;4460:6;4457:30;4454:117;;;4490:79;;:::i;:::-;4454:117;4604:4;4596:6;4592:17;4580:29;;4658:3;4650:4;4642:6;4638:17;4628:8;4624:32;4621:41;4618:128;;;4665:79;;:::i;:::-;4618:128;4184:568;;;;;:::o;4775:::-;4848:8;4858:6;4908:3;4901:4;4893:6;4889:17;4885:27;4875:122;;4916:79;;:::i;:::-;4875:122;5029:6;5016:20;5006:30;;5059:18;5051:6;5048:30;5045:117;;;5081:79;;:::i;:::-;5045:117;5195:4;5187:6;5183:17;5171:29;;5249:3;5241:4;5233:6;5229:17;5219:8;5215:32;5212:41;5209:128;;;5256:79;;:::i;:::-;5209:128;4775:568;;;;;:::o;5349:934::-;5471:6;5479;5487;5495;5544:2;5532:9;5523:7;5519:23;5515:32;5512:119;;;5550:79;;:::i;:::-;5512:119;5698:1;5687:9;5683:17;5670:31;5728:18;5720:6;5717:30;5714:117;;;5750:79;;:::i;:::-;5714:117;5863:80;5935:7;5926:6;5915:9;5911:22;5863:80;:::i;:::-;5845:98;;;;5641:312;6020:2;6009:9;6005:18;5992:32;6051:18;6043:6;6040:30;6037:117;;;6073:79;;:::i;:::-;6037:117;6186:80;6258:7;6249:6;6238:9;6234:22;6186:80;:::i;:::-;6168:98;;;;5963:313;5349:934;;;;;;;:::o;6289:619::-;6366:6;6374;6382;6431:2;6419:9;6410:7;6406:23;6402:32;6399:119;;;6437:79;;:::i;:::-;6399:119;6557:1;6582:53;6627:7;6618:6;6607:9;6603:22;6582:53;:::i;:::-;6572:63;;6528:117;6684:2;6710:53;6755:7;6746:6;6735:9;6731:22;6710:53;:::i;:::-;6700:63;;6655:118;6812:2;6838:53;6883:7;6874:6;6863:9;6859:22;6838:53;:::i;:::-;6828:63;;6783:118;6289:619;;;;;:::o;6914:86::-;6949:7;6989:4;6982:5;6978:16;6967:27;;6914:86;;;:::o;7006:112::-;7089:22;7105:5;7089:22;:::i;:::-;7084:3;7077:35;7006:112;;:::o;7124:214::-;7213:4;7251:2;7240:9;7236:18;7228:26;;7264:67;7328:1;7317:9;7313:17;7304:6;7264:67;:::i;:::-;7124:214;;;;:::o;7344:704::-;7439:6;7447;7455;7504:2;7492:9;7483:7;7479:23;7475:32;7472:119;;;7510:79;;:::i;:::-;7472:119;7658:1;7647:9;7643:17;7630:31;7688:18;7680:6;7677:30;7674:117;;;7710:79;;:::i;:::-;7674:117;7823:80;7895:7;7886:6;7875:9;7871:22;7823:80;:::i;:::-;7805:98;;;;7601:312;7952:2;7978:53;8023:7;8014:6;8003:9;7999:22;7978:53;:::i;:::-;7968:63;;7923:118;7344:704;;;;;:::o;8054:329::-;8113:6;8162:2;8150:9;8141:7;8137:23;8133:32;8130:119;;;8168:79;;:::i;:::-;8130:119;8288:1;8313:53;8358:7;8349:6;8338:9;8334:22;8313:53;:::i;:::-;8303:63;;8259:117;8054:329;;;;:::o;8389:118::-;8476:24;8494:5;8476:24;:::i;:::-;8471:3;8464:37;8389:118;;:::o;8513:222::-;8606:4;8644:2;8633:9;8629:18;8621:26;;8657:71;8725:1;8714:9;8710:17;8701:6;8657:71;:::i;:::-;8513:222;;;;:::o;8741:474::-;8809:6;8817;8866:2;8854:9;8845:7;8841:23;8837:32;8834:119;;;8872:79;;:::i;:::-;8834:119;8992:1;9017:53;9062:7;9053:6;9042:9;9038:22;9017:53;:::i;:::-;9007:63;;8963:117;9119:2;9145:53;9190:7;9181:6;9170:9;9166:22;9145:53;:::i;:::-;9135:63;;9090:118;8741:474;;;;;:::o;9221:180::-;9269:77;9266:1;9259:88;9366:4;9363:1;9356:15;9390:4;9387:1;9380:15;9407:320;9451:6;9488:1;9482:4;9478:12;9468:22;;9535:1;9529:4;9525:12;9556:18;9546:81;;9612:4;9604:6;9600:17;9590:27;;9546:81;9674:2;9666:6;9663:14;9643:18;9640:38;9637:84;;9693:18;;:::i;:::-;9637:84;9458:269;9407:320;;;:::o;9733:232::-;9873:34;9869:1;9861:6;9857:14;9850:58;9942:15;9937:2;9929:6;9925:15;9918:40;9733:232;:::o;9971:366::-;10113:3;10134:67;10198:2;10193:3;10134:67;:::i;:::-;10127:74;;10210:93;10299:3;10210:93;:::i;:::-;10328:2;10323:3;10319:12;10312:19;;9971:366;;;:::o;10343:419::-;10509:4;10547:2;10536:9;10532:18;10524:26;;10596:9;10590:4;10586:20;10582:1;10571:9;10567:17;10560:47;10624:131;10750:4;10624:131;:::i;:::-;10616:139;;10343:419;;;:::o;10768:227::-;10908:34;10904:1;10896:6;10892:14;10885:58;10977:10;10972:2;10964:6;10960:15;10953:35;10768:227;:::o;11001:366::-;11143:3;11164:67;11228:2;11223:3;11164:67;:::i;:::-;11157:74;;11240:93;11329:3;11240:93;:::i;:::-;11358:2;11353:3;11349:12;11342:19;;11001:366;;;:::o;11373:419::-;11539:4;11577:2;11566:9;11562:18;11554:26;;11626:9;11620:4;11616:20;11612:1;11601:9;11597:17;11590:47;11654:131;11780:4;11654:131;:::i;:::-;11646:139;;11373:419;;;:::o;11798:180::-;11846:77;11843:1;11836:88;11943:4;11940:1;11933:15;11967:4;11964:1;11957:15;11984:180;12032:77;12029:1;12022:88;12129:4;12126:1;12119:15;12153:4;12150:1;12143:15;12170:191;12210:3;12229:20;12247:1;12229:20;:::i;:::-;12224:25;;12263:20;12281:1;12263:20;:::i;:::-;12258:25;;12306:1;12303;12299:9;12292:16;;12327:3;12324:1;12321:10;12318:36;;;12334:18;;:::i;:::-;12318:36;12170:191;;;;:::o;12367:233::-;12406:3;12429:24;12447:5;12429:24;:::i;:::-;12420:33;;12475:66;12468:5;12465:77;12462:103;;12545:18;;:::i;:::-;12462:103;12592:1;12585:5;12581:13;12574:20;;12367:233;;;:::o;12606:177::-;12746:29;12742:1;12734:6;12730:14;12723:53;12606:177;:::o;12789:366::-;12931:3;12952:67;13016:2;13011:3;12952:67;:::i;:::-;12945:74;;13028:93;13117:3;13028:93;:::i;:::-;13146:2;13141:3;13137:12;13130:19;;12789:366;;;:::o;13161:419::-;13327:4;13365:2;13354:9;13350:18;13342:26;;13414:9;13408:4;13404:20;13400:1;13389:9;13385:17;13378:47;13442:131;13568:4;13442:131;:::i;:::-;13434:139;;13161:419;;;:::o;13586:227::-;13726:34;13722:1;13714:6;13710:14;13703:58;13795:10;13790:2;13782:6;13778:15;13771:35;13586:227;:::o;13819:366::-;13961:3;13982:67;14046:2;14041:3;13982:67;:::i;:::-;13975:74;;14058:93;14147:3;14058:93;:::i;:::-;14176:2;14171:3;14167:12;14160:19;;13819:366;;;:::o;14191:419::-;14357:4;14395:2;14384:9;14380:18;14372:26;;14444:9;14438:4;14434:20;14430:1;14419:9;14415:17;14408:47;14472:131;14598:4;14472:131;:::i;:::-;14464:139;;14191:419;;;:::o;14616:182::-;14756:34;14752:1;14744:6;14740:14;14733:58;14616:182;:::o;14804:366::-;14946:3;14967:67;15031:2;15026:3;14967:67;:::i;:::-;14960:74;;15043:93;15132:3;15043:93;:::i;:::-;15161:2;15156:3;15152:12;15145:19;;14804:366;;;:::o;15176:419::-;15342:4;15380:2;15369:9;15365:18;15357:26;;15429:9;15423:4;15419:20;15415:1;15404:9;15400:17;15393:47;15457:131;15583:4;15457:131;:::i;:::-;15449:139;;15176:419;;;:::o;15601:233::-;15741:34;15737:1;15729:6;15725:14;15718:58;15810:16;15805:2;15797:6;15793:15;15786:41;15601:233;:::o;15840:366::-;15982:3;16003:67;16067:2;16062:3;16003:67;:::i;:::-;15996:74;;16079:93;16168:3;16079:93;:::i;:::-;16197:2;16192:3;16188:12;16181:19;;15840:366;;;:::o;16212:419::-;16378:4;16416:2;16405:9;16401:18;16393:26;;16465:9;16459:4;16455:20;16451:1;16440:9;16436:17;16429:47;16493:131;16619:4;16493:131;:::i;:::-;16485:139;;16212:419;;;:::o;16637:410::-;16677:7;16700:20;16718:1;16700:20;:::i;:::-;16695:25;;16734:20;16752:1;16734:20;:::i;:::-;16729:25;;16789:1;16786;16782:9;16811:30;16829:11;16811:30;:::i;:::-;16800:41;;16990:1;16981:7;16977:15;16974:1;16971:22;16951:1;16944:9;16924:83;16901:139;;17020:18;;:::i;:::-;16901:139;16685:362;16637:410;;;;:::o;17053:224::-;17193:34;17189:1;17181:6;17177:14;17170:58;17262:7;17257:2;17249:6;17245:15;17238:32;17053:224;:::o;17283:366::-;17425:3;17446:67;17510:2;17505:3;17446:67;:::i;:::-;17439:74;;17522:93;17611:3;17522:93;:::i;:::-;17640:2;17635:3;17631:12;17624:19;;17283:366;;;:::o;17655:419::-;17821:4;17859:2;17848:9;17844:18;17836:26;;17908:9;17902:4;17898:20;17894:1;17883:9;17879:17;17872:47;17936:131;18062:4;17936:131;:::i;:::-;17928:139;;17655:419;;;:::o;18080:225::-;18220:34;18216:1;18208:6;18204:14;18197:58;18289:8;18284:2;18276:6;18272:15;18265:33;18080:225;:::o;18311:366::-;18453:3;18474:67;18538:2;18533:3;18474:67;:::i;:::-;18467:74;;18550:93;18639:3;18550:93;:::i;:::-;18668:2;18663:3;18659:12;18652:19;;18311:366;;;:::o;18683:419::-;18849:4;18887:2;18876:9;18872:18;18864:26;;18936:9;18930:4;18926:20;18922:1;18911:9;18907:17;18900:47;18964:131;19090:4;18964:131;:::i;:::-;18956:139;;18683:419;;;:::o;19108:223::-;19248:34;19244:1;19236:6;19232:14;19225:58;19317:6;19312:2;19304:6;19300:15;19293:31;19108:223;:::o;19337:366::-;19479:3;19500:67;19564:2;19559:3;19500:67;:::i;:::-;19493:74;;19576:93;19665:3;19576:93;:::i;:::-;19694:2;19689:3;19685:12;19678:19;;19337:366;;;:::o;19709:419::-;19875:4;19913:2;19902:9;19898:18;19890:26;;19962:9;19956:4;19952:20;19948:1;19937:9;19933:17;19926:47;19990:131;20116:4;19990:131;:::i;:::-;19982:139;;19709:419;;;:::o;20134:221::-;20274:34;20270:1;20262:6;20258:14;20251:58;20343:4;20338:2;20330:6;20326:15;20319:29;20134:221;:::o;20361:366::-;20503:3;20524:67;20588:2;20583:3;20524:67;:::i;:::-;20517:74;;20600:93;20689:3;20600:93;:::i;:::-;20718:2;20713:3;20709:12;20702:19;;20361:366;;;:::o;20733:419::-;20899:4;20937:2;20926:9;20922:18;20914:26;;20986:9;20980:4;20976:20;20972:1;20961:9;20957:17;20950:47;21014:131;21140:4;21014:131;:::i;:::-;21006:139;;20733:419;;;:::o;21158:181::-;21298:33;21294:1;21286:6;21282:14;21275:57;21158:181;:::o;21345:366::-;21487:3;21508:67;21572:2;21567:3;21508:67;:::i;:::-;21501:74;;21584:93;21673:3;21584:93;:::i;:::-;21702:2;21697:3;21693:12;21686:19;;21345:366;;;:::o;21717:419::-;21883:4;21921:2;21910:9;21906:18;21898:26;;21970:9;21964:4;21960:20;21956:1;21945:9;21941:17;21934:47;21998:131;22124:4;21998:131;:::i;:::-;21990:139;;21717:419;;;:::o;22142:224::-;22282:34;22278:1;22270:6;22266:14;22259:58;22351:7;22346:2;22338:6;22334:15;22327:32;22142:224;:::o;22372:366::-;22514:3;22535:67;22599:2;22594:3;22535:67;:::i;:::-;22528:74;;22611:93;22700:3;22611:93;:::i;:::-;22729:2;22724:3;22720:12;22713:19;;22372:366;;;:::o;22744:419::-;22910:4;22948:2;22937:9;22933:18;22925:26;;22997:9;22991:4;22987:20;22983:1;22972:9;22968:17;22961:47;23025:131;23151:4;23025:131;:::i;:::-;23017:139;;22744:419;;;:::o;23169:222::-;23309:34;23305:1;23297:6;23293:14;23286:58;23378:5;23373:2;23365:6;23361:15;23354:30;23169:222;:::o;23397:366::-;23539:3;23560:67;23624:2;23619:3;23560:67;:::i;:::-;23553:74;;23636:93;23725:3;23636:93;:::i;:::-;23754:2;23749:3;23745:12;23738:19;;23397:366;;;:::o;23769:419::-;23935:4;23973:2;23962:9;23958:18;23950:26;;24022:9;24016:4;24012:20;24008:1;23997:9;23993:17;23986:47;24050:131;24176:4;24050:131;:::i;:::-;24042:139;;23769:419;;;:::o;24194:225::-;24334:34;24330:1;24322:6;24318:14;24311:58;24403:8;24398:2;24390:6;24386:15;24379:33;24194:225;:::o;24425:366::-;24567:3;24588:67;24652:2;24647:3;24588:67;:::i;:::-;24581:74;;24664:93;24753:3;24664:93;:::i;:::-;24782:2;24777:3;24773:12;24766:19;;24425:366;;;:::o;24797:419::-;24963:4;25001:2;24990:9;24986:18;24978:26;;25050:9;25044:4;25040:20;25036:1;25025:9;25021:17;25014:47;25078:131;25204:4;25078:131;:::i;:::-;25070:139;;24797:419;;;:::o

Swarm Source

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