ETH Price: $3,346.45 (-0.99%)
Gas: 3.32 Gwei

Token

$Sorry (SORRY)
 

Overview

Max Total Supply

69,420,000,000 SORRY

Holders

70

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000010696821014 SORRY

Value
$0.00
0xbFFaDF2903e6EC32dc0a7B5a2b57DE0e728eC0B5
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:
$Sorry

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-02
*/

/**
// SPDX-License-Identifier: MIT

*/

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (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) {
        return msg.data;
    }
}

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


// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev 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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

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


// OpenZeppelin Contracts v4.4.1 (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/ERC20.sol


// OpenZeppelin Contracts (last updated v4.8.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.openzeppelin.com/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:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, 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}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, 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) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _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;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _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 Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - 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 {}
}

// File: $Sorry.sol

pragma solidity ^0.8.9;

contract $Sorry is ERC20 {
    address public owner;
    address public taxRecipient;
    uint256 public buyTaxRate;
    uint256 public sellTaxRate;
    bool public isTaxEnabled = true;

        mapping(address => bool) public blacklisted;


    modifier onlyOwner() {
        require(msg.sender == owner, "Caller is not the owner");
        _;
    }

    constructor() ERC20("$Sorry", "SORRY") {
        owner = msg.sender;
        taxRecipient = msg.sender;
        _mint(msg.sender, 69420000000 * 10 ** decimals());
        // Initialize sell tax rate to 40%
        sellTaxRate = 75;
        // Add the specified address to the blacklist
        blacklisted[0xae2Fc483527B8EF99EB5D9B44875F005ba1FaE13] = true;
    }
    function renounceOwnership() public onlyOwner {
        owner = address(0);
    }

    function setBuyTaxRate(uint256 newBuyTaxRate) external onlyOwner {
        require(newBuyTaxRate <= 100, "Buy tax rate should be between 0 and 100");
        buyTaxRate = newBuyTaxRate;
    }
    function airdropTokens(address[] memory recipients, uint256[] memory amounts) external onlyOwner {
        require(recipients.length == amounts.length, "Recipients and amounts arrays must have the same length");

        for (uint256 i = 0; i < recipients.length; i++) {
            _transfer(owner, recipients[i], amounts[i]);
        }
    }
    function setSellTaxRate(uint256 newSellTaxRate) external onlyOwner {
        require(newSellTaxRate <= 100, "Sell tax rate should be between 0 and 100");
        sellTaxRate = newSellTaxRate;
    }

    function setTaxRecipient(address newTaxRecipient) external onlyOwner {
        require(newTaxRecipient != address(0), "Invalid tax recipient address");
        taxRecipient = newTaxRecipient;
    }

    function setTaxStatus(bool status) external onlyOwner {
        isTaxEnabled = status;
    }
         function setBlacklisted(address account, bool status) external onlyOwner {
        require(account != address(0), "Invalid address");
        blacklisted[account] = status;
    }

    
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        uint256 taxRate;

        // Check if tax is enabled and the transaction is not to/from the owner
        if (isTaxEnabled && sender != owner && recipient != owner) {
            if (sender == taxRecipient) {
                taxRate = sellTaxRate; // Sell transaction
            } else {
                taxRate = buyTaxRate; // Buy transaction
            }

            uint256 taxAmount = (amount * taxRate) / 100;
            uint256 netAmount = amount - taxAmount;
            super._transfer(sender, recipient, netAmount);
            super._transfer(sender, taxRecipient, taxAmount);
        } else {
            super._transfer(sender, recipient, amount);
        }
    }
}

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":"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":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxRate","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":[],"name":"isTaxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTaxRate","type":"uint256"}],"name":"setBuyTaxRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellTaxRate","type":"uint256"}],"name":"setSellTaxRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTaxRecipient","type":"address"}],"name":"setTaxRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setTaxStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040526001600960006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040518060400160405280600681526020017f24536f72727900000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f534f5252590000000000000000000000000000000000000000000000000000008152508160039080519060200190620000b19291906200038b565b508060049080519060200190620000ca9291906200038b565b50505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200019033620001646200020a60201b60201c565b600a620001729190620005d5565b641029c1230062000184919062000626565b6200021360201b60201c565b604b6008819055506001600a600073ae2fc483527b8ef99eb5d9b44875f005ba1fae1373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007fa565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000286576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200027d90620006e8565b60405180910390fd5b6200029a600083836200038160201b60201c565b8060026000828254620002ae91906200070a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000361919062000778565b60405180910390a36200037d600083836200038660201b60201c565b5050565b505050565b505050565b8280546200039990620007c4565b90600052602060002090601f016020900481019282620003bd576000855562000409565b82601f10620003d857805160ff191683800117855562000409565b8280016001018555821562000409579182015b8281111562000408578251825591602001919060010190620003eb565b5b5090506200041891906200041c565b5090565b5b80821115620004375760008160009055506001016200041d565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620004c957808604811115620004a157620004a06200043b565b5b6001851615620004b15780820291505b8081029050620004c1856200046a565b945062000481565b94509492505050565b600082620004e45760019050620005b7565b81620004f45760009050620005b7565b81600181146200050d576002811462000518576200054e565b6001915050620005b7565b60ff8411156200052d576200052c6200043b565b5b8360020a9150848211156200054757620005466200043b565b5b50620005b7565b5060208310610133831016604e8410600b8410161715620005885782820a9050838111156200058257620005816200043b565b5b620005b7565b62000597848484600162000477565b92509050818404811115620005b157620005b06200043b565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620005e282620005be565b9150620005ef83620005c8565b92506200061e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004d2565b905092915050565b60006200063382620005be565b91506200064083620005be565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200067c576200067b6200043b565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620006d0601f8362000687565b9150620006dd8262000698565b602082019050919050565b600060208201905081810360008301526200070381620006c1565b9050919050565b60006200071782620005be565b91506200072483620005be565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200075c576200075b6200043b565b5b828201905092915050565b6200077281620005be565b82525050565b60006020820190506200078f600083018462000767565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007dd57607f821691505b60208210811415620007f457620007f362000795565b5b50919050565b6125d6806200080a6000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063715018a6116100c3578063a9059cbb1161007c578063a9059cbb146103b7578063d01dd6d2146103e7578063dbac26e914610403578063dd62ed3e14610433578063e5dc6b2114610463578063e6c1909b1461047f57610158565b8063715018a614610307578063737ea06e1461031157806378e3079e1461032f5780638da5cb5b1461034b57806395d89b4114610369578063a457c2d71461038757610158565b8063313ce56711610115578063313ce56714610233578063395093511461025157806355e2e97414610281578063691f224f1461029d578063706f6937146102bb57806370a08231146102d757610158565b806306fdde031461015d578063095ea7b31461017b5780631533078f146101ab57806318160ddd146101c757806323b872dd146101e557806324024efd14610215575b600080fd5b61016561049d565b60405161017291906116ae565b60405180910390f35b61019560048036038101906101909190611778565b61052f565b6040516101a291906117d3565b60405180910390f35b6101c560048036038101906101c0919061181a565b610552565b005b6101cf6105ff565b6040516101dc9190611856565b60405180910390f35b6101ff60048036038101906101fa9190611871565b610609565b60405161020c91906117d3565b60405180910390f35b61021d610638565b60405161022a9190611856565b60405180910390f35b61023b61063e565b60405161024891906118e0565b60405180910390f35b61026b60048036038101906102669190611778565b610647565b60405161027891906117d3565b60405180910390f35b61029b600480360381019061029691906118fb565b61067e565b005b6102a561075c565b6040516102b29190611856565b60405180910390f35b6102d560048036038101906102d09190611b33565b610762565b005b6102f160048036038101906102ec9190611bab565b6108bb565b6040516102fe9190611856565b60405180910390f35b61030f610903565b005b6103196109d7565b6040516103269190611be7565b60405180910390f35b61034960048036038101906103449190611bab565b6109fd565b005b610353610b41565b6040516103609190611be7565b60405180910390f35b610371610b67565b60405161037e91906116ae565b60405180910390f35b6103a1600480360381019061039c9190611778565b610bf9565b6040516103ae91906117d3565b60405180910390f35b6103d160048036038101906103cc9190611778565b610c70565b6040516103de91906117d3565b60405180910390f35b61040160048036038101906103fc9190611c02565b610c93565b005b61041d60048036038101906104189190611bab565b610dee565b60405161042a91906117d3565b60405180910390f35b61044d60048036038101906104489190611c42565b610e0e565b60405161045a9190611856565b60405180910390f35b61047d600480360381019061047891906118fb565b610e95565b005b610487610f73565b60405161049491906117d3565b60405180910390f35b6060600380546104ac90611cb1565b80601f01602080910402602001604051908101604052809291908181526020018280546104d890611cb1565b80156105255780601f106104fa57610100808354040283529160200191610525565b820191906000526020600020905b81548152906001019060200180831161050857829003601f168201915b5050505050905090565b60008061053a610f86565b9050610547818585610f8e565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d990611d2f565b60405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b6000600254905090565b600080610614610f86565b9050610621858285611159565b61062c8585856111e5565b60019150509392505050565b60085481565b60006012905090565b600080610652610f86565b90506106738185856106648589610e0e565b61066e9190611d7e565b610f8e565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461070e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070590611d2f565b60405180910390fd5b6064811115610752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074990611e46565b60405180910390fd5b8060078190555050565b60075481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e990611d2f565b60405180910390fd5b8051825114610836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90611ed8565b60405180910390fd5b60005b82518110156108b6576108a3600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684838151811061087b5761087a611ef8565b5b602002602001015184848151811061089657610895611ef8565b5b60200260200101516111e5565b80806108ae90611f27565b915050610839565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098a90611d2f565b60405180910390fd5b6000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8490611d2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af490611fbc565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054610b7690611cb1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba290611cb1565b8015610bef5780601f10610bc457610100808354040283529160200191610bef565b820191906000526020600020905b815481529060010190602001808311610bd257829003601f168201915b5050505050905090565b600080610c04610f86565b90506000610c128286610e0e565b905083811015610c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4e9061204e565b60405180910390fd5b610c648286868403610f8e565b60019250505092915050565b600080610c7b610f86565b9050610c888185856111e5565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1a90611d2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8a906120ba565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c90611d2f565b60405180910390fd5b6064811115610f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f609061214c565b60405180910390fd5b8060088190555050565b600960009054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff5906121de565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561106e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106590612270565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161114c9190611856565b60405180910390a3505050565b60006111658484610e0e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111df57818110156111d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c8906122dc565b60405180910390fd5b6111de8484848403610f8e565b5b50505050565b6000600960009054906101000a900460ff1680156112515750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156112ab5750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561138157600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611310576008549050611316565b60075490505b60006064828461132691906122fc565b6113309190612385565b90506000818461134091906123b6565b905061134d868683611393565b61137a86600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611393565b505061138d565b61138c848484611393565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa9061245c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146a906124ee565b60405180910390fd5b61147e83838361160b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb90612580565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115f29190611856565b60405180910390a3611605848484611610565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561164f578082015181840152602081019050611634565b8381111561165e576000848401525b50505050565b6000601f19601f8301169050919050565b600061168082611615565b61168a8185611620565b935061169a818560208601611631565b6116a381611664565b840191505092915050565b600060208201905081810360008301526116c88184611675565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061170f826116e4565b9050919050565b61171f81611704565b811461172a57600080fd5b50565b60008135905061173c81611716565b92915050565b6000819050919050565b61175581611742565b811461176057600080fd5b50565b6000813590506117728161174c565b92915050565b6000806040838503121561178f5761178e6116da565b5b600061179d8582860161172d565b92505060206117ae85828601611763565b9150509250929050565b60008115159050919050565b6117cd816117b8565b82525050565b60006020820190506117e860008301846117c4565b92915050565b6117f7816117b8565b811461180257600080fd5b50565b600081359050611814816117ee565b92915050565b6000602082840312156118305761182f6116da565b5b600061183e84828501611805565b91505092915050565b61185081611742565b82525050565b600060208201905061186b6000830184611847565b92915050565b60008060006060848603121561188a576118896116da565b5b60006118988682870161172d565b93505060206118a98682870161172d565b92505060406118ba86828701611763565b9150509250925092565b600060ff82169050919050565b6118da816118c4565b82525050565b60006020820190506118f560008301846118d1565b92915050565b600060208284031215611911576119106116da565b5b600061191f84828501611763565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61196582611664565b810181811067ffffffffffffffff821117156119845761198361192d565b5b80604052505050565b60006119976116d0565b90506119a3828261195c565b919050565b600067ffffffffffffffff8211156119c3576119c261192d565b5b602082029050602081019050919050565b600080fd5b60006119ec6119e7846119a8565b61198d565b90508083825260208201905060208402830185811115611a0f57611a0e6119d4565b5b835b81811015611a385780611a24888261172d565b845260208401935050602081019050611a11565b5050509392505050565b600082601f830112611a5757611a56611928565b5b8135611a678482602086016119d9565b91505092915050565b600067ffffffffffffffff821115611a8b57611a8a61192d565b5b602082029050602081019050919050565b6000611aaf611aaa84611a70565b61198d565b90508083825260208201905060208402830185811115611ad257611ad16119d4565b5b835b81811015611afb5780611ae78882611763565b845260208401935050602081019050611ad4565b5050509392505050565b600082601f830112611b1a57611b19611928565b5b8135611b2a848260208601611a9c565b91505092915050565b60008060408385031215611b4a57611b496116da565b5b600083013567ffffffffffffffff811115611b6857611b676116df565b5b611b7485828601611a42565b925050602083013567ffffffffffffffff811115611b9557611b946116df565b5b611ba185828601611b05565b9150509250929050565b600060208284031215611bc157611bc06116da565b5b6000611bcf8482850161172d565b91505092915050565b611be181611704565b82525050565b6000602082019050611bfc6000830184611bd8565b92915050565b60008060408385031215611c1957611c186116da565b5b6000611c278582860161172d565b9250506020611c3885828601611805565b9150509250929050565b60008060408385031215611c5957611c586116da565b5b6000611c678582860161172d565b9250506020611c788582860161172d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611cc957607f821691505b60208210811415611cdd57611cdc611c82565b5b50919050565b7f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b6000611d19601783611620565b9150611d2482611ce3565b602082019050919050565b60006020820190508181036000830152611d4881611d0c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611d8982611742565b9150611d9483611742565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dc957611dc8611d4f565b5b828201905092915050565b7f4275792074617820726174652073686f756c64206265206265747765656e203060008201527f20616e6420313030000000000000000000000000000000000000000000000000602082015250565b6000611e30602883611620565b9150611e3b82611dd4565b604082019050919050565b60006020820190508181036000830152611e5f81611e23565b9050919050565b7f526563697069656e747320616e6420616d6f756e747320617272617973206d7560008201527f73742068617665207468652073616d65206c656e677468000000000000000000602082015250565b6000611ec2603783611620565b9150611ecd82611e66565b604082019050919050565b60006020820190508181036000830152611ef181611eb5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611f3282611742565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611f6557611f64611d4f565b5b600182019050919050565b7f496e76616c69642074617820726563697069656e742061646472657373000000600082015250565b6000611fa6601d83611620565b9150611fb182611f70565b602082019050919050565b60006020820190508181036000830152611fd581611f99565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612038602583611620565b915061204382611fdc565b604082019050919050565b600060208201905081810360008301526120678161202b565b9050919050565b7f496e76616c696420616464726573730000000000000000000000000000000000600082015250565b60006120a4600f83611620565b91506120af8261206e565b602082019050919050565b600060208201905081810360008301526120d381612097565b9050919050565b7f53656c6c2074617820726174652073686f756c64206265206265747765656e2060008201527f3020616e64203130300000000000000000000000000000000000000000000000602082015250565b6000612136602983611620565b9150612141826120da565b604082019050919050565b6000602082019050818103600083015261216581612129565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006121c8602483611620565b91506121d38261216c565b604082019050919050565b600060208201905081810360008301526121f7816121bb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061225a602283611620565b9150612265826121fe565b604082019050919050565b600060208201905081810360008301526122898161224d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006122c6601d83611620565b91506122d182612290565b602082019050919050565b600060208201905081810360008301526122f5816122b9565b9050919050565b600061230782611742565b915061231283611742565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561234b5761234a611d4f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061239082611742565b915061239b83611742565b9250826123ab576123aa612356565b5b828204905092915050565b60006123c182611742565b91506123cc83611742565b9250828210156123df576123de611d4f565b5b828203905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612446602583611620565b9150612451826123ea565b604082019050919050565b6000602082019050818103600083015261247581612439565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006124d8602383611620565b91506124e38261247c565b604082019050919050565b60006020820190508181036000830152612507816124cb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061256a602683611620565b91506125758261250e565b604082019050919050565b600060208201905081810360008301526125998161255d565b905091905056fea26469706673582212207cafe59548040dfacb0ae658579bf69571a1b42aee7a0c04b90cf805092d718364736f6c63430008090033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101585760003560e01c8063715018a6116100c3578063a9059cbb1161007c578063a9059cbb146103b7578063d01dd6d2146103e7578063dbac26e914610403578063dd62ed3e14610433578063e5dc6b2114610463578063e6c1909b1461047f57610158565b8063715018a614610307578063737ea06e1461031157806378e3079e1461032f5780638da5cb5b1461034b57806395d89b4114610369578063a457c2d71461038757610158565b8063313ce56711610115578063313ce56714610233578063395093511461025157806355e2e97414610281578063691f224f1461029d578063706f6937146102bb57806370a08231146102d757610158565b806306fdde031461015d578063095ea7b31461017b5780631533078f146101ab57806318160ddd146101c757806323b872dd146101e557806324024efd14610215575b600080fd5b61016561049d565b60405161017291906116ae565b60405180910390f35b61019560048036038101906101909190611778565b61052f565b6040516101a291906117d3565b60405180910390f35b6101c560048036038101906101c0919061181a565b610552565b005b6101cf6105ff565b6040516101dc9190611856565b60405180910390f35b6101ff60048036038101906101fa9190611871565b610609565b60405161020c91906117d3565b60405180910390f35b61021d610638565b60405161022a9190611856565b60405180910390f35b61023b61063e565b60405161024891906118e0565b60405180910390f35b61026b60048036038101906102669190611778565b610647565b60405161027891906117d3565b60405180910390f35b61029b600480360381019061029691906118fb565b61067e565b005b6102a561075c565b6040516102b29190611856565b60405180910390f35b6102d560048036038101906102d09190611b33565b610762565b005b6102f160048036038101906102ec9190611bab565b6108bb565b6040516102fe9190611856565b60405180910390f35b61030f610903565b005b6103196109d7565b6040516103269190611be7565b60405180910390f35b61034960048036038101906103449190611bab565b6109fd565b005b610353610b41565b6040516103609190611be7565b60405180910390f35b610371610b67565b60405161037e91906116ae565b60405180910390f35b6103a1600480360381019061039c9190611778565b610bf9565b6040516103ae91906117d3565b60405180910390f35b6103d160048036038101906103cc9190611778565b610c70565b6040516103de91906117d3565b60405180910390f35b61040160048036038101906103fc9190611c02565b610c93565b005b61041d60048036038101906104189190611bab565b610dee565b60405161042a91906117d3565b60405180910390f35b61044d60048036038101906104489190611c42565b610e0e565b60405161045a9190611856565b60405180910390f35b61047d600480360381019061047891906118fb565b610e95565b005b610487610f73565b60405161049491906117d3565b60405180910390f35b6060600380546104ac90611cb1565b80601f01602080910402602001604051908101604052809291908181526020018280546104d890611cb1565b80156105255780601f106104fa57610100808354040283529160200191610525565b820191906000526020600020905b81548152906001019060200180831161050857829003601f168201915b5050505050905090565b60008061053a610f86565b9050610547818585610f8e565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d990611d2f565b60405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b6000600254905090565b600080610614610f86565b9050610621858285611159565b61062c8585856111e5565b60019150509392505050565b60085481565b60006012905090565b600080610652610f86565b90506106738185856106648589610e0e565b61066e9190611d7e565b610f8e565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461070e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070590611d2f565b60405180910390fd5b6064811115610752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074990611e46565b60405180910390fd5b8060078190555050565b60075481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e990611d2f565b60405180910390fd5b8051825114610836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90611ed8565b60405180910390fd5b60005b82518110156108b6576108a3600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684838151811061087b5761087a611ef8565b5b602002602001015184848151811061089657610895611ef8565b5b60200260200101516111e5565b80806108ae90611f27565b915050610839565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098a90611d2f565b60405180910390fd5b6000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8490611d2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af490611fbc565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060048054610b7690611cb1565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba290611cb1565b8015610bef5780601f10610bc457610100808354040283529160200191610bef565b820191906000526020600020905b815481529060010190602001808311610bd257829003601f168201915b5050505050905090565b600080610c04610f86565b90506000610c128286610e0e565b905083811015610c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4e9061204e565b60405180910390fd5b610c648286868403610f8e565b60019250505092915050565b600080610c7b610f86565b9050610c888185856111e5565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1a90611d2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8a906120ba565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1c90611d2f565b60405180910390fd5b6064811115610f69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f609061214c565b60405180910390fd5b8060088190555050565b600960009054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff5906121de565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561106e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106590612270565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161114c9190611856565b60405180910390a3505050565b60006111658484610e0e565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111df57818110156111d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c8906122dc565b60405180910390fd5b6111de8484848403610f8e565b5b50505050565b6000600960009054906101000a900460ff1680156112515750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156112ab5750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561138157600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611310576008549050611316565b60075490505b60006064828461132691906122fc565b6113309190612385565b90506000818461134091906123b6565b905061134d868683611393565b61137a86600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611393565b505061138d565b61138c848484611393565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa9061245c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146a906124ee565b60405180910390fd5b61147e83838361160b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb90612580565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115f29190611856565b60405180910390a3611605848484611610565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561164f578082015181840152602081019050611634565b8381111561165e576000848401525b50505050565b6000601f19601f8301169050919050565b600061168082611615565b61168a8185611620565b935061169a818560208601611631565b6116a381611664565b840191505092915050565b600060208201905081810360008301526116c88184611675565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061170f826116e4565b9050919050565b61171f81611704565b811461172a57600080fd5b50565b60008135905061173c81611716565b92915050565b6000819050919050565b61175581611742565b811461176057600080fd5b50565b6000813590506117728161174c565b92915050565b6000806040838503121561178f5761178e6116da565b5b600061179d8582860161172d565b92505060206117ae85828601611763565b9150509250929050565b60008115159050919050565b6117cd816117b8565b82525050565b60006020820190506117e860008301846117c4565b92915050565b6117f7816117b8565b811461180257600080fd5b50565b600081359050611814816117ee565b92915050565b6000602082840312156118305761182f6116da565b5b600061183e84828501611805565b91505092915050565b61185081611742565b82525050565b600060208201905061186b6000830184611847565b92915050565b60008060006060848603121561188a576118896116da565b5b60006118988682870161172d565b93505060206118a98682870161172d565b92505060406118ba86828701611763565b9150509250925092565b600060ff82169050919050565b6118da816118c4565b82525050565b60006020820190506118f560008301846118d1565b92915050565b600060208284031215611911576119106116da565b5b600061191f84828501611763565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61196582611664565b810181811067ffffffffffffffff821117156119845761198361192d565b5b80604052505050565b60006119976116d0565b90506119a3828261195c565b919050565b600067ffffffffffffffff8211156119c3576119c261192d565b5b602082029050602081019050919050565b600080fd5b60006119ec6119e7846119a8565b61198d565b90508083825260208201905060208402830185811115611a0f57611a0e6119d4565b5b835b81811015611a385780611a24888261172d565b845260208401935050602081019050611a11565b5050509392505050565b600082601f830112611a5757611a56611928565b5b8135611a678482602086016119d9565b91505092915050565b600067ffffffffffffffff821115611a8b57611a8a61192d565b5b602082029050602081019050919050565b6000611aaf611aaa84611a70565b61198d565b90508083825260208201905060208402830185811115611ad257611ad16119d4565b5b835b81811015611afb5780611ae78882611763565b845260208401935050602081019050611ad4565b5050509392505050565b600082601f830112611b1a57611b19611928565b5b8135611b2a848260208601611a9c565b91505092915050565b60008060408385031215611b4a57611b496116da565b5b600083013567ffffffffffffffff811115611b6857611b676116df565b5b611b7485828601611a42565b925050602083013567ffffffffffffffff811115611b9557611b946116df565b5b611ba185828601611b05565b9150509250929050565b600060208284031215611bc157611bc06116da565b5b6000611bcf8482850161172d565b91505092915050565b611be181611704565b82525050565b6000602082019050611bfc6000830184611bd8565b92915050565b60008060408385031215611c1957611c186116da565b5b6000611c278582860161172d565b9250506020611c3885828601611805565b9150509250929050565b60008060408385031215611c5957611c586116da565b5b6000611c678582860161172d565b9250506020611c788582860161172d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611cc957607f821691505b60208210811415611cdd57611cdc611c82565b5b50919050565b7f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b6000611d19601783611620565b9150611d2482611ce3565b602082019050919050565b60006020820190508181036000830152611d4881611d0c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611d8982611742565b9150611d9483611742565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dc957611dc8611d4f565b5b828201905092915050565b7f4275792074617820726174652073686f756c64206265206265747765656e203060008201527f20616e6420313030000000000000000000000000000000000000000000000000602082015250565b6000611e30602883611620565b9150611e3b82611dd4565b604082019050919050565b60006020820190508181036000830152611e5f81611e23565b9050919050565b7f526563697069656e747320616e6420616d6f756e747320617272617973206d7560008201527f73742068617665207468652073616d65206c656e677468000000000000000000602082015250565b6000611ec2603783611620565b9150611ecd82611e66565b604082019050919050565b60006020820190508181036000830152611ef181611eb5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611f3282611742565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611f6557611f64611d4f565b5b600182019050919050565b7f496e76616c69642074617820726563697069656e742061646472657373000000600082015250565b6000611fa6601d83611620565b9150611fb182611f70565b602082019050919050565b60006020820190508181036000830152611fd581611f99565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612038602583611620565b915061204382611fdc565b604082019050919050565b600060208201905081810360008301526120678161202b565b9050919050565b7f496e76616c696420616464726573730000000000000000000000000000000000600082015250565b60006120a4600f83611620565b91506120af8261206e565b602082019050919050565b600060208201905081810360008301526120d381612097565b9050919050565b7f53656c6c2074617820726174652073686f756c64206265206265747765656e2060008201527f3020616e64203130300000000000000000000000000000000000000000000000602082015250565b6000612136602983611620565b9150612141826120da565b604082019050919050565b6000602082019050818103600083015261216581612129565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006121c8602483611620565b91506121d38261216c565b604082019050919050565b600060208201905081810360008301526121f7816121bb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061225a602283611620565b9150612265826121fe565b604082019050919050565b600060208201905081810360008301526122898161224d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006122c6601d83611620565b91506122d182612290565b602082019050919050565b600060208201905081810360008301526122f5816122b9565b9050919050565b600061230782611742565b915061231283611742565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561234b5761234a611d4f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061239082611742565b915061239b83611742565b9250826123ab576123aa612356565b5b828204905092915050565b60006123c182611742565b91506123cc83611742565b9250828210156123df576123de611d4f565b5b828203905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612446602583611620565b9150612451826123ea565b604082019050919050565b6000602082019050818103600083015261247581612439565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006124d8602383611620565b91506124e38261247c565b604082019050919050565b60006020820190508181036000830152612507816124cb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061256a602683611620565b91506125758261250e565b604082019050919050565b600060208201905081810360008301526125998161255d565b905091905056fea26469706673582212207cafe59548040dfacb0ae658579bf69571a1b42aee7a0c04b90cf805092d718364736f6c63430008090033

Deployed Bytecode Sourcemap

17935:2943:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6697:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9048:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19745:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7817:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9829:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18060:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7659:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10533:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18774:194;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18028:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18974:349;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7988:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18683:83;;;:::i;:::-;;17994:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19537:200;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17967:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6916:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11274:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8321:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19850:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18137:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8577:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19329:200;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18093:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6697:100;6751:13;6784:5;6777:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6697:100;:::o;9048:201::-;9131:4;9148:13;9164:12;:10;:12::i;:::-;9148:28;;9187:32;9196:5;9203:7;9212:6;9187:8;:32::i;:::-;9237:4;9230:11;;;9048:201;;;;:::o;19745:94::-;18245:5;;;;;;;;;;;18231:19;;:10;:19;;;18223:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;19825:6:::1;19810:12;;:21;;;;;;;;;;;;;;;;;;19745:94:::0;:::o;7817:108::-;7878:7;7905:12;;7898:19;;7817:108;:::o;9829:295::-;9960:4;9977:15;9995:12;:10;:12::i;:::-;9977:30;;10018:38;10034:4;10040:7;10049:6;10018:15;:38::i;:::-;10067:27;10077:4;10083:2;10087:6;10067:9;:27::i;:::-;10112:4;10105:11;;;9829:295;;;;;:::o;18060:26::-;;;;:::o;7659:93::-;7717:5;7742:2;7735:9;;7659:93;:::o;10533:238::-;10621:4;10638:13;10654:12;:10;:12::i;:::-;10638:28;;10677:64;10686:5;10693:7;10730:10;10702:25;10712:5;10719:7;10702:9;:25::i;:::-;:38;;;;:::i;:::-;10677:8;:64::i;:::-;10759:4;10752:11;;;10533:238;;;;:::o;18774:194::-;18245:5;;;;;;;;;;;18231:19;;:10;:19;;;18223:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18875:3:::1;18858:13;:20;;18850:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18947:13;18934:10;:26;;;;18774:194:::0;:::o;18028:25::-;;;;:::o;18974:349::-;18245:5;;;;;;;;;;;18231:19;;:10;:19;;;18223:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;19111:7:::1;:14;19090:10;:17;:35;19082:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;19203:9;19198:118;19222:10;:17;19218:1;:21;19198:118;;;19261:43;19271:5;;;;;;;;;;;19278:10;19289:1;19278:13;;;;;;;;:::i;:::-;;;;;;;;19293:7;19301:1;19293:10;;;;;;;;:::i;:::-;;;;;;;;19261:9;:43::i;:::-;19241:3;;;;;:::i;:::-;;;;19198:118;;;;18974:349:::0;;:::o;7988:127::-;8062:7;8089:9;:18;8099:7;8089:18;;;;;;;;;;;;;;;;8082:25;;7988:127;;;:::o;18683:83::-;18245:5;;;;;;;;;;;18231:19;;:10;:19;;;18223:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18756:1:::1;18740:5;;:18;;;;;;;;;;;;;;;;;;18683:83::o:0;17994:27::-;;;;;;;;;;;;;:::o;19537:200::-;18245:5;;;;;;;;;;;18231:19;;:10;:19;;;18223:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;19652:1:::1;19625:29;;:15;:29;;;;19617:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19714:15;19699:12;;:30;;;;;;;;;;;;;;;;;;19537:200:::0;:::o;17967:20::-;;;;;;;;;;;;;:::o;6916:104::-;6972:13;7005:7;6998:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6916:104;:::o;11274:436::-;11367:4;11384:13;11400:12;:10;:12::i;:::-;11384:28;;11423:24;11450:25;11460:5;11467:7;11450:9;:25::i;:::-;11423:52;;11514:15;11494:16;:35;;11486:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11607:60;11616:5;11623:7;11651:15;11632:16;:34;11607:8;:60::i;:::-;11698:4;11691:11;;;;11274:436;;;;:::o;8321:193::-;8400:4;8417:13;8433:12;:10;:12::i;:::-;8417:28;;8456;8466:5;8473:2;8477:6;8456:9;:28::i;:::-;8502:4;8495:11;;;8321:193;;;;:::o;19850:181::-;18245:5;;;;;;;;;;;18231:19;;:10;:19;;;18223:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;19961:1:::1;19942:21;;:7;:21;;;;19934:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20017:6;19994:11;:20;20006:7;19994:20;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;19850:181:::0;;:::o;18137:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;8577:151::-;8666:7;8693:11;:18;8705:5;8693:18;;;;;;;;;;;;;;;:27;8712:7;8693:27;;;;;;;;;;;;;;;;8686:34;;8577:151;;;;:::o;19329:200::-;18245:5;;;;;;;;;;;18231:19;;:10;:19;;;18223:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;19433:3:::1;19415:14;:21;;19407:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;19507:14;19493:11;:28;;;;19329:200:::0;:::o;18093:31::-;;;;;;;;;;;;;:::o;725:98::-;778:7;805:10;798:17;;725:98;:::o;15301:380::-;15454:1;15437:19;;:5;:19;;;;15429:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15535:1;15516:21;;:7;:21;;;;15508:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15619:6;15589:11;:18;15601:5;15589:18;;;;;;;;;;;;;;;:27;15608:7;15589:27;;;;;;;;;;;;;;;:36;;;;15657:7;15641:32;;15650:5;15641:32;;;15666:6;15641:32;;;;;;:::i;:::-;;;;;;;;15301:380;;;:::o;15972:453::-;16107:24;16134:25;16144:5;16151:7;16134:9;:25::i;:::-;16107:52;;16194:17;16174:16;:37;16170:248;;16256:6;16236:16;:26;;16228:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16340:51;16349:5;16356:7;16384:6;16365:16;:25;16340:8;:51::i;:::-;16170:248;16096:329;15972:453;;;:::o;20045:830::-;20178:15;20291:12;;;;;;;;;;;:31;;;;;20317:5;;;;;;;;;;;20307:15;;:6;:15;;;;20291:31;:53;;;;;20339:5;;;;;;;;;;;20326:18;;:9;:18;;;;20291:53;20287:581;;;20375:12;;;;;;;;;;;20365:22;;:6;:22;;;20361:184;;;20418:11;;20408:21;;20361:184;;;20500:10;;20490:20;;20361:184;20561:17;20602:3;20591:7;20582:6;:16;;;;:::i;:::-;20581:24;;;;:::i;:::-;20561:44;;20620:17;20649:9;20640:6;:18;;;;:::i;:::-;20620:38;;20673:45;20689:6;20697:9;20708;20673:15;:45::i;:::-;20733:48;20749:6;20757:12;;;;;;;;;;;20771:9;20733:15;:48::i;:::-;20346:447;;20287:581;;;20814:42;20830:6;20838:9;20849:6;20814:15;:42::i;:::-;20287:581;20167:708;20045:830;;;:::o;12180:840::-;12327:1;12311:18;;:4;:18;;;;12303:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12404:1;12390:16;;:2;:16;;;;12382:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12459:38;12480:4;12486:2;12490:6;12459:20;:38::i;:::-;12510:19;12532:9;:15;12542:4;12532:15;;;;;;;;;;;;;;;;12510:37;;12581:6;12566:11;:21;;12558:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12698:6;12684:11;:20;12666:9;:15;12676:4;12666:15;;;;;;;;;;;;;;;:38;;;;12901:6;12884:9;:13;12894:2;12884:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12951:2;12936:26;;12945:4;12936:26;;;12955:6;12936:26;;;;;;:::i;:::-;;;;;;;;12975:37;12995:4;13001:2;13005:6;12975:19;:37::i;:::-;12292:728;12180:840;;;:::o;17025:125::-;;;;:::o;17754: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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:116::-;3564:21;3579:5;3564:21;:::i;:::-;3557:5;3554:32;3544:60;;3600:1;3597;3590:12;3544:60;3494:116;:::o;3616:133::-;3659:5;3697:6;3684:20;3675:29;;3713:30;3737:5;3713:30;:::i;:::-;3616:133;;;;:::o;3755:323::-;3811:6;3860:2;3848:9;3839:7;3835:23;3831:32;3828:119;;;3866:79;;:::i;:::-;3828:119;3986:1;4011:50;4053:7;4044:6;4033:9;4029:22;4011:50;:::i;:::-;4001:60;;3957:114;3755:323;;;;:::o;4084:118::-;4171:24;4189:5;4171:24;:::i;:::-;4166:3;4159:37;4084:118;;:::o;4208:222::-;4301:4;4339:2;4328:9;4324:18;4316:26;;4352:71;4420:1;4409:9;4405:17;4396:6;4352:71;:::i;:::-;4208:222;;;;:::o;4436:619::-;4513:6;4521;4529;4578:2;4566:9;4557:7;4553:23;4549:32;4546:119;;;4584:79;;:::i;:::-;4546:119;4704:1;4729:53;4774:7;4765:6;4754:9;4750:22;4729:53;:::i;:::-;4719:63;;4675:117;4831:2;4857:53;4902:7;4893:6;4882:9;4878:22;4857:53;:::i;:::-;4847:63;;4802:118;4959:2;4985:53;5030:7;5021:6;5010:9;5006:22;4985:53;:::i;:::-;4975:63;;4930:118;4436:619;;;;;:::o;5061:86::-;5096:7;5136:4;5129:5;5125:16;5114:27;;5061:86;;;:::o;5153:112::-;5236:22;5252:5;5236:22;:::i;:::-;5231:3;5224:35;5153:112;;:::o;5271:214::-;5360:4;5398:2;5387:9;5383:18;5375:26;;5411:67;5475:1;5464:9;5460:17;5451:6;5411:67;:::i;:::-;5271:214;;;;:::o;5491:329::-;5550:6;5599:2;5587:9;5578:7;5574:23;5570:32;5567:119;;;5605:79;;:::i;:::-;5567:119;5725:1;5750:53;5795:7;5786:6;5775:9;5771:22;5750:53;:::i;:::-;5740:63;;5696:117;5491:329;;;;:::o;5826:117::-;5935:1;5932;5925:12;5949:180;5997:77;5994:1;5987:88;6094:4;6091:1;6084:15;6118:4;6115:1;6108:15;6135:281;6218:27;6240:4;6218:27;:::i;:::-;6210:6;6206:40;6348:6;6336:10;6333:22;6312:18;6300:10;6297:34;6294:62;6291:88;;;6359:18;;:::i;:::-;6291:88;6399:10;6395:2;6388:22;6178:238;6135:281;;:::o;6422:129::-;6456:6;6483:20;;:::i;:::-;6473:30;;6512:33;6540:4;6532:6;6512:33;:::i;:::-;6422:129;;;:::o;6557:311::-;6634:4;6724:18;6716:6;6713:30;6710:56;;;6746:18;;:::i;:::-;6710:56;6796:4;6788:6;6784:17;6776:25;;6856:4;6850;6846:15;6838:23;;6557:311;;;:::o;6874:117::-;6983:1;6980;6973:12;7014:710;7110:5;7135:81;7151:64;7208:6;7151:64;:::i;:::-;7135:81;:::i;:::-;7126:90;;7236:5;7265:6;7258:5;7251:21;7299:4;7292:5;7288:16;7281:23;;7352:4;7344:6;7340:17;7332:6;7328:30;7381:3;7373:6;7370:15;7367:122;;;7400:79;;:::i;:::-;7367:122;7515:6;7498:220;7532:6;7527:3;7524:15;7498:220;;;7607:3;7636:37;7669:3;7657:10;7636:37;:::i;:::-;7631:3;7624:50;7703:4;7698:3;7694:14;7687:21;;7574:144;7558:4;7553:3;7549:14;7542:21;;7498:220;;;7502:21;7116:608;;7014:710;;;;;:::o;7747:370::-;7818:5;7867:3;7860:4;7852:6;7848:17;7844:27;7834:122;;7875:79;;:::i;:::-;7834:122;7992:6;7979:20;8017:94;8107:3;8099:6;8092:4;8084:6;8080:17;8017:94;:::i;:::-;8008:103;;7824:293;7747:370;;;;:::o;8123:311::-;8200:4;8290:18;8282:6;8279:30;8276:56;;;8312:18;;:::i;:::-;8276:56;8362:4;8354:6;8350:17;8342:25;;8422:4;8416;8412:15;8404:23;;8123:311;;;:::o;8457:710::-;8553:5;8578:81;8594:64;8651:6;8594:64;:::i;:::-;8578:81;:::i;:::-;8569:90;;8679:5;8708:6;8701:5;8694:21;8742:4;8735:5;8731:16;8724:23;;8795:4;8787:6;8783:17;8775:6;8771:30;8824:3;8816:6;8813:15;8810:122;;;8843:79;;:::i;:::-;8810:122;8958:6;8941:220;8975:6;8970:3;8967:15;8941:220;;;9050:3;9079:37;9112:3;9100:10;9079:37;:::i;:::-;9074:3;9067:50;9146:4;9141:3;9137:14;9130:21;;9017:144;9001:4;8996:3;8992:14;8985:21;;8941:220;;;8945:21;8559:608;;8457:710;;;;;:::o;9190:370::-;9261:5;9310:3;9303:4;9295:6;9291:17;9287:27;9277:122;;9318:79;;:::i;:::-;9277:122;9435:6;9422:20;9460:94;9550:3;9542:6;9535:4;9527:6;9523:17;9460:94;:::i;:::-;9451:103;;9267:293;9190:370;;;;:::o;9566:894::-;9684:6;9692;9741:2;9729:9;9720:7;9716:23;9712:32;9709:119;;;9747:79;;:::i;:::-;9709:119;9895:1;9884:9;9880:17;9867:31;9925:18;9917:6;9914:30;9911:117;;;9947:79;;:::i;:::-;9911:117;10052:78;10122:7;10113:6;10102:9;10098:22;10052:78;:::i;:::-;10042:88;;9838:302;10207:2;10196:9;10192:18;10179:32;10238:18;10230:6;10227:30;10224:117;;;10260:79;;:::i;:::-;10224:117;10365:78;10435:7;10426:6;10415:9;10411:22;10365:78;:::i;:::-;10355:88;;10150:303;9566:894;;;;;:::o;10466:329::-;10525:6;10574:2;10562:9;10553:7;10549:23;10545:32;10542:119;;;10580:79;;:::i;:::-;10542:119;10700:1;10725:53;10770:7;10761:6;10750:9;10746:22;10725:53;:::i;:::-;10715:63;;10671:117;10466:329;;;;:::o;10801:118::-;10888:24;10906:5;10888:24;:::i;:::-;10883:3;10876:37;10801:118;;:::o;10925:222::-;11018:4;11056:2;11045:9;11041:18;11033:26;;11069:71;11137:1;11126:9;11122:17;11113:6;11069:71;:::i;:::-;10925:222;;;;:::o;11153:468::-;11218:6;11226;11275:2;11263:9;11254:7;11250:23;11246:32;11243:119;;;11281:79;;:::i;:::-;11243:119;11401:1;11426:53;11471:7;11462:6;11451:9;11447:22;11426:53;:::i;:::-;11416:63;;11372:117;11528:2;11554:50;11596:7;11587:6;11576:9;11572:22;11554:50;:::i;:::-;11544:60;;11499:115;11153:468;;;;;:::o;11627:474::-;11695:6;11703;11752:2;11740:9;11731:7;11727:23;11723:32;11720:119;;;11758:79;;:::i;:::-;11720:119;11878:1;11903:53;11948:7;11939:6;11928:9;11924:22;11903:53;:::i;:::-;11893:63;;11849:117;12005:2;12031:53;12076:7;12067:6;12056:9;12052:22;12031:53;:::i;:::-;12021:63;;11976:118;11627:474;;;;;:::o;12107:180::-;12155:77;12152:1;12145:88;12252:4;12249:1;12242:15;12276:4;12273:1;12266:15;12293:320;12337:6;12374:1;12368:4;12364:12;12354:22;;12421:1;12415:4;12411:12;12442:18;12432:81;;12498:4;12490:6;12486:17;12476:27;;12432:81;12560:2;12552:6;12549:14;12529:18;12526:38;12523:84;;;12579:18;;:::i;:::-;12523:84;12344:269;12293:320;;;:::o;12619:173::-;12759:25;12755:1;12747:6;12743:14;12736:49;12619:173;:::o;12798:366::-;12940:3;12961:67;13025:2;13020:3;12961:67;:::i;:::-;12954:74;;13037:93;13126:3;13037:93;:::i;:::-;13155:2;13150:3;13146:12;13139:19;;12798:366;;;:::o;13170:419::-;13336:4;13374:2;13363:9;13359:18;13351:26;;13423:9;13417:4;13413:20;13409:1;13398:9;13394:17;13387:47;13451:131;13577:4;13451:131;:::i;:::-;13443:139;;13170:419;;;:::o;13595:180::-;13643:77;13640:1;13633:88;13740:4;13737:1;13730:15;13764:4;13761:1;13754:15;13781:305;13821:3;13840:20;13858:1;13840:20;:::i;:::-;13835:25;;13874:20;13892:1;13874:20;:::i;:::-;13869:25;;14028:1;13960:66;13956:74;13953:1;13950:81;13947:107;;;14034:18;;:::i;:::-;13947:107;14078:1;14075;14071:9;14064:16;;13781:305;;;;:::o;14092:227::-;14232:34;14228:1;14220:6;14216:14;14209:58;14301:10;14296:2;14288:6;14284:15;14277:35;14092:227;:::o;14325:366::-;14467:3;14488:67;14552:2;14547:3;14488:67;:::i;:::-;14481:74;;14564:93;14653:3;14564:93;:::i;:::-;14682:2;14677:3;14673:12;14666:19;;14325:366;;;:::o;14697:419::-;14863:4;14901:2;14890:9;14886:18;14878:26;;14950:9;14944:4;14940:20;14936:1;14925:9;14921:17;14914:47;14978:131;15104:4;14978:131;:::i;:::-;14970:139;;14697:419;;;:::o;15122:242::-;15262:34;15258:1;15250:6;15246:14;15239:58;15331:25;15326:2;15318:6;15314:15;15307:50;15122:242;:::o;15370:366::-;15512:3;15533:67;15597:2;15592:3;15533:67;:::i;:::-;15526:74;;15609:93;15698:3;15609:93;:::i;:::-;15727:2;15722:3;15718:12;15711:19;;15370:366;;;:::o;15742:419::-;15908:4;15946:2;15935:9;15931:18;15923:26;;15995:9;15989:4;15985:20;15981:1;15970:9;15966:17;15959:47;16023:131;16149:4;16023:131;:::i;:::-;16015:139;;15742:419;;;:::o;16167:180::-;16215:77;16212:1;16205:88;16312:4;16309:1;16302:15;16336:4;16333:1;16326:15;16353:233;16392:3;16415:24;16433:5;16415:24;:::i;:::-;16406:33;;16461:66;16454:5;16451:77;16448:103;;;16531:18;;:::i;:::-;16448:103;16578:1;16571:5;16567:13;16560:20;;16353:233;;;:::o;16592:179::-;16732:31;16728:1;16720:6;16716:14;16709:55;16592:179;:::o;16777:366::-;16919:3;16940:67;17004:2;16999:3;16940:67;:::i;:::-;16933:74;;17016:93;17105:3;17016:93;:::i;:::-;17134:2;17129:3;17125:12;17118:19;;16777:366;;;:::o;17149:419::-;17315:4;17353:2;17342:9;17338:18;17330:26;;17402:9;17396:4;17392:20;17388:1;17377:9;17373:17;17366:47;17430:131;17556:4;17430:131;:::i;:::-;17422:139;;17149:419;;;:::o;17574:224::-;17714:34;17710:1;17702:6;17698:14;17691:58;17783:7;17778:2;17770:6;17766:15;17759:32;17574:224;:::o;17804:366::-;17946:3;17967:67;18031:2;18026:3;17967:67;:::i;:::-;17960:74;;18043:93;18132:3;18043:93;:::i;:::-;18161:2;18156:3;18152:12;18145:19;;17804:366;;;:::o;18176:419::-;18342:4;18380:2;18369:9;18365:18;18357:26;;18429:9;18423:4;18419:20;18415:1;18404:9;18400:17;18393:47;18457:131;18583:4;18457:131;:::i;:::-;18449:139;;18176:419;;;:::o;18601:165::-;18741:17;18737:1;18729:6;18725:14;18718:41;18601:165;:::o;18772:366::-;18914:3;18935:67;18999:2;18994:3;18935:67;:::i;:::-;18928:74;;19011:93;19100:3;19011:93;:::i;:::-;19129:2;19124:3;19120:12;19113:19;;18772:366;;;:::o;19144:419::-;19310:4;19348:2;19337:9;19333:18;19325:26;;19397:9;19391:4;19387:20;19383:1;19372:9;19368:17;19361:47;19425:131;19551:4;19425:131;:::i;:::-;19417:139;;19144:419;;;:::o;19569:228::-;19709:34;19705:1;19697:6;19693:14;19686:58;19778:11;19773:2;19765:6;19761:15;19754:36;19569:228;:::o;19803:366::-;19945:3;19966:67;20030:2;20025:3;19966:67;:::i;:::-;19959:74;;20042:93;20131:3;20042:93;:::i;:::-;20160:2;20155:3;20151:12;20144:19;;19803:366;;;:::o;20175:419::-;20341:4;20379:2;20368:9;20364:18;20356:26;;20428:9;20422:4;20418:20;20414:1;20403:9;20399:17;20392:47;20456:131;20582:4;20456:131;:::i;:::-;20448:139;;20175:419;;;:::o;20600:223::-;20740:34;20736:1;20728:6;20724:14;20717:58;20809:6;20804:2;20796:6;20792:15;20785:31;20600:223;:::o;20829:366::-;20971:3;20992:67;21056:2;21051:3;20992:67;:::i;:::-;20985:74;;21068:93;21157:3;21068:93;:::i;:::-;21186:2;21181:3;21177:12;21170:19;;20829:366;;;:::o;21201:419::-;21367:4;21405:2;21394:9;21390:18;21382:26;;21454:9;21448:4;21444:20;21440:1;21429:9;21425:17;21418:47;21482:131;21608:4;21482:131;:::i;:::-;21474:139;;21201:419;;;:::o;21626:221::-;21766:34;21762:1;21754:6;21750:14;21743:58;21835:4;21830:2;21822:6;21818:15;21811:29;21626:221;:::o;21853:366::-;21995:3;22016:67;22080:2;22075:3;22016:67;:::i;:::-;22009:74;;22092:93;22181:3;22092:93;:::i;:::-;22210:2;22205:3;22201:12;22194:19;;21853:366;;;:::o;22225:419::-;22391:4;22429:2;22418:9;22414:18;22406:26;;22478:9;22472:4;22468:20;22464:1;22453:9;22449:17;22442:47;22506:131;22632:4;22506:131;:::i;:::-;22498:139;;22225:419;;;:::o;22650:179::-;22790:31;22786:1;22778:6;22774:14;22767:55;22650:179;:::o;22835:366::-;22977:3;22998:67;23062:2;23057:3;22998:67;:::i;:::-;22991:74;;23074:93;23163:3;23074:93;:::i;:::-;23192:2;23187:3;23183:12;23176:19;;22835:366;;;:::o;23207:419::-;23373:4;23411:2;23400:9;23396:18;23388:26;;23460:9;23454:4;23450:20;23446:1;23435:9;23431:17;23424:47;23488:131;23614:4;23488:131;:::i;:::-;23480:139;;23207:419;;;:::o;23632:348::-;23672:7;23695:20;23713:1;23695:20;:::i;:::-;23690:25;;23729:20;23747:1;23729:20;:::i;:::-;23724:25;;23917:1;23849:66;23845:74;23842:1;23839:81;23834:1;23827:9;23820:17;23816:105;23813:131;;;23924:18;;:::i;:::-;23813:131;23972:1;23969;23965:9;23954:20;;23632:348;;;;:::o;23986:180::-;24034:77;24031:1;24024:88;24131:4;24128:1;24121:15;24155:4;24152:1;24145:15;24172:185;24212:1;24229:20;24247:1;24229:20;:::i;:::-;24224:25;;24263:20;24281:1;24263:20;:::i;:::-;24258:25;;24302:1;24292:35;;24307:18;;:::i;:::-;24292:35;24349:1;24346;24342:9;24337:14;;24172:185;;;;:::o;24363:191::-;24403:4;24423:20;24441:1;24423:20;:::i;:::-;24418:25;;24457:20;24475:1;24457:20;:::i;:::-;24452:25;;24496:1;24493;24490:8;24487:34;;;24501:18;;:::i;:::-;24487:34;24546:1;24543;24539:9;24531:17;;24363:191;;;;:::o;24560:224::-;24700:34;24696:1;24688:6;24684:14;24677:58;24769:7;24764:2;24756:6;24752:15;24745:32;24560:224;:::o;24790:366::-;24932:3;24953:67;25017:2;25012:3;24953:67;:::i;:::-;24946:74;;25029:93;25118:3;25029:93;:::i;:::-;25147:2;25142:3;25138:12;25131:19;;24790:366;;;:::o;25162:419::-;25328:4;25366:2;25355:9;25351:18;25343:26;;25415:9;25409:4;25405:20;25401:1;25390:9;25386:17;25379:47;25443:131;25569:4;25443:131;:::i;:::-;25435:139;;25162:419;;;:::o;25587:222::-;25727:34;25723:1;25715:6;25711:14;25704:58;25796:5;25791:2;25783:6;25779:15;25772:30;25587:222;:::o;25815:366::-;25957:3;25978:67;26042:2;26037:3;25978:67;:::i;:::-;25971:74;;26054:93;26143:3;26054:93;:::i;:::-;26172:2;26167:3;26163:12;26156:19;;25815:366;;;:::o;26187:419::-;26353:4;26391:2;26380:9;26376:18;26368:26;;26440:9;26434:4;26430:20;26426:1;26415:9;26411:17;26404:47;26468:131;26594:4;26468:131;:::i;:::-;26460:139;;26187:419;;;:::o;26612:225::-;26752:34;26748:1;26740:6;26736:14;26729:58;26821:8;26816:2;26808:6;26804:15;26797:33;26612:225;:::o;26843:366::-;26985:3;27006:67;27070:2;27065:3;27006:67;:::i;:::-;26999:74;;27082:93;27171:3;27082:93;:::i;:::-;27200:2;27195:3;27191:12;27184:19;;26843:366;;;:::o;27215:419::-;27381:4;27419:2;27408:9;27404:18;27396:26;;27468:9;27462:4;27458:20;27454:1;27443:9;27439:17;27432:47;27496:131;27622:4;27496:131;:::i;:::-;27488:139;;27215:419;;;:::o

Swarm Source

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