ETH Price: $3,332.26 (-4.18%)

Token

AMD (AMD)
 

Overview

Max Total Supply

4,200,000,000,042 AMD

Holders

14

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
cryptopolitan.eth
Balance
188,083,021,366.068477657068023379 AMD

Value
$0.00
0xb8adcc8e382a7c43bdfa2e1c47059a1afec10e06
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:
AMD

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-01
*/

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)


pragma solidity ^0.8.9;

// What we see here?
// OpenZeppelin audited ERC20 smart contract
/**
 * @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);
}

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

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

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


contract AMD is ERC20 {
    constructor() ERC20("AMD", "AMD") {
        _mint(msg.sender, 4200000000042 * 10 ** decimals());
    }

           /// @dev A record of each accounts delegate
    mapping (address => address) internal _delegates;

    /// @notice A checkpoint for marking number of votes from a given block
    struct Checkpoint {
        uint32 fromBlock;
        uint256 votes;
    }

    /// @notice The number of checkpoints for each account
    mapping (address => uint32) public numCheckpoints;

    /// @notice A record of votes checkpoints for each account, by index
    mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;
    
    /// @notice The EIP-712 typehash for the delegation struct used by the contract
    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    /// @notice The EIP-712 typehash for the contract's domain
    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

    /// @notice A record of states for signing / validating signatures
    mapping (address => uint) public nonces;

    /// @notice An event thats emitted when a delegate account's vote balance changes
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

      /// @notice An event thats emitted when an account changes its delegate
    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);

    /**
     * @notice Delegate votes from `msg.sender` to `delegatee`
     * @param delegator The address to get delegatee for
     */
    function delegates(address delegator) external view returns (address) {
        return _delegates[delegator];
    }

   /**
    * @notice Delegate votes from `msg.sender` to `delegatee`
    * @param delegatee The address to delegate votes to
    */
    function delegate(address delegatee) external {
        return _delegate(msg.sender, delegatee);
    }

    /**
     * @notice Determine the prior number of votes for an account as of a block number
     * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.
     * @param account The address of the account to check
     * @param blockNumber The block number to get the vote balance at
     * @return The number of votes the account had as of the given block
     */
    function getPriorVotes(address account, uint blockNumber) external view returns (uint256){
        require(blockNumber < block.number, "BONE::getPriorVotes: not yet determined");
        uint32 nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) {
            return 0;
        }
        // First check most recent balance
        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }
        // Next check implicit zero balance
        if (checkpoints[account][0].fromBlock > blockNumber) {
            return 0;
        }
        uint32 lower = 0;
        uint32 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromBlock == blockNumber) {
                return cp.votes;
            } else if (cp.fromBlock < blockNumber) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return checkpoints[account][lower].votes;
    }

    /**
     * @notice Gets the current votes balance for `account`
     * @param account The address to get votes balance
     * @return The number of current votes for `account`
     */
    function getCurrentVotes(address account) external view returns (uint256){
        uint32 nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    function _delegate(address delegator, address delegatee) internal {
        address currentDelegate = _delegates[delegator];
        uint256 delegatorBalance = balanceOf(delegator); 
        _delegates[delegator] = delegatee;
        emit DelegateChanged(delegator, currentDelegate, delegatee);
        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint256 oldVotes, uint256 newVotes) internal {
        uint32 blockNumber = safe32(block.number, "COFFEE::_writeCheckpoint: block number exceeds 32 bits");

        if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
            checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
        } else {
            checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
            require(nCheckpoints + 1 > nCheckpoints, "COFFEE::_writeCheckpoint: new checkpoint exceeds 32 bits");
            numCheckpoints[delegatee] = nCheckpoints + 1;
        }

        emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }

    function _moveDelegates(address srcRep, address dstRep, uint256 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                // decrease old representative
                uint32 srcRepNum = numCheckpoints[srcRep];
                uint256 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint256 srcRepNew = srcRepOld - amount;
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                // increase new representative
                uint32 dstRepNum = numCheckpoints[dstRep];
                uint256 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint256 dstRepNew = dstRepOld + amount;
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {
        require(n < 2**32, errorMessage);
        return uint32(n);
    }
}

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":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint256","name":"votes","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":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"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"}]

60806040523480156200001157600080fd5b506040518060400160405280600381526020017f414d4400000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f414d4400000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000969291906200027b565b508060049080519060200190620000af9291906200027b565b505050620000f433620000c7620000fa60201b60201c565b600a620000d59190620004c5565b6503d1e382102a620000e8919062000516565b6200010360201b60201c565b620006ea565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000176576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200016d90620005d8565b60405180910390fd5b6200018a600083836200027160201b60201c565b80600260008282546200019e9190620005fa565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000251919062000668565b60405180910390a36200026d600083836200027660201b60201c565b5050565b505050565b505050565b8280546200028990620006b4565b90600052602060002090601f016020900481019282620002ad5760008555620002f9565b82601f10620002c857805160ff1916838001178555620002f9565b82800160010185558215620002f9579182015b82811115620002f8578251825591602001919060010190620002db565b5b5090506200030891906200030c565b5090565b5b80821115620003275760008160009055506001016200030d565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620003b9578086048111156200039157620003906200032b565b5b6001851615620003a15780820291505b8081029050620003b1856200035a565b945062000371565b94509492505050565b600082620003d45760019050620004a7565b81620003e45760009050620004a7565b8160018114620003fd576002811462000408576200043e565b6001915050620004a7565b60ff8411156200041d576200041c6200032b565b5b8360020a9150848211156200043757620004366200032b565b5b50620004a7565b5060208310610133831016604e8410600b8410161715620004785782820a9050838111156200047257620004716200032b565b5b620004a7565b62000487848484600162000367565b92509050818404811115620004a157620004a06200032b565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620004d282620004ae565b9150620004df83620004b8565b92506200050e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620003c2565b905092915050565b60006200052382620004ae565b91506200053083620004ae565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200056c576200056b6200032b565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620005c0601f8362000577565b9150620005cd8262000588565b602082019050919050565b60006020820190508181036000830152620005f381620005b1565b9050919050565b60006200060782620004ae565b91506200061483620004ae565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200064c576200064b6200032b565b5b828201905092915050565b6200066281620004ae565b82525050565b60006020820190506200067f600083018462000657565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006cd57607f821691505b60208210811415620006e457620006e362000685565b5b50919050565b61256880620006fa6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806370a08231116100ad578063a9059cbb11610071578063a9059cbb14610393578063b4b5ea57146103c3578063dd62ed3e146103f3578063e7a324dc14610423578063f1127ed8146104415761012c565b806370a08231146102b5578063782d6fe1146102e55780637ecebe001461031557806395d89b4114610345578063a457c2d7146103635761012c565b8063313ce567116100f4578063313ce567146101eb5780633950935114610209578063587cde1e146102395780635c19a95c146102695780636fcfff45146102855761012c565b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017f57806320606b701461019d57806323b872dd146101bb575b600080fd5b610139610472565b6040516101469190611a70565b60405180910390f35b61016960048036038101906101649190611b2b565b610504565b6040516101769190611b86565b60405180910390f35b610187610527565b6040516101949190611bb0565b60405180910390f35b6101a5610531565b6040516101b29190611be4565b60405180910390f35b6101d560048036038101906101d09190611bff565b610555565b6040516101e29190611b86565b60405180910390f35b6101f3610584565b6040516102009190611c6e565b60405180910390f35b610223600480360381019061021e9190611b2b565b61058d565b6040516102309190611b86565b60405180910390f35b610253600480360381019061024e9190611c89565b6105c4565b6040516102609190611cc5565b60405180910390f35b610283600480360381019061027e9190611c89565b61062d565b005b61029f600480360381019061029a9190611c89565b61063a565b6040516102ac9190611cff565b60405180910390f35b6102cf60048036038101906102ca9190611c89565b61065d565b6040516102dc9190611bb0565b60405180910390f35b6102ff60048036038101906102fa9190611b2b565b6106a5565b60405161030c9190611bb0565b60405180910390f35b61032f600480360381019061032a9190611c89565b610a7c565b60405161033c9190611bb0565b60405180910390f35b61034d610a94565b60405161035a9190611a70565b60405180910390f35b61037d60048036038101906103789190611b2b565b610b26565b60405161038a9190611b86565b60405180910390f35b6103ad60048036038101906103a89190611b2b565b610b9d565b6040516103ba9190611b86565b60405180910390f35b6103dd60048036038101906103d89190611c89565b610bc0565b6040516103ea9190611bb0565b60405180910390f35b61040d60048036038101906104089190611d1a565b610c9f565b60405161041a9190611bb0565b60405180910390f35b61042b610d26565b6040516104389190611be4565b60405180910390f35b61045b60048036038101906104569190611d86565b610d4a565b604051610469929190611dc6565b60405180910390f35b60606003805461048190611e1e565b80601f01602080910402602001604051908101604052809291908181526020018280546104ad90611e1e565b80156104fa5780601f106104cf576101008083540402835291602001916104fa565b820191906000526020600020905b8154815290600101906020018083116104dd57829003601f168201915b5050505050905090565b60008061050f610d8b565b905061051c818585610d93565b600191505092915050565b6000600254905090565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b600080610560610d8b565b905061056d858285610f5e565b610578858585610fea565b60019150509392505050565b60006012905090565b600080610598610d8b565b90506105b98185856105aa8589610c9f565b6105b49190611e7f565b610d93565b600191505092915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6106373382611262565b50565b60066020528060005260406000206000915054906101000a900463ffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60004382106106e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e090611f47565b60405180910390fd5b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610756576000915050610a76565b82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846107a59190611f67565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161161085257600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018361082c9190611f67565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610a76565b82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611156108d3576000915050610a76565b6000806001836108e39190611f67565b90505b8163ffffffff168163ffffffff161115610a105760006002838361090a9190611f67565b6109149190611fca565b8261091f9190611f67565b90506000600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086816000015163ffffffff1614156109df57806020015195505050505050610a76565b86816000015163ffffffff1610156109f957819350610a09565b600182610a069190611f67565b92505b50506108e6565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206001015493505050505b92915050565b60086020528060005260406000206000915090505481565b606060048054610aa390611e1e565b80601f0160208091040260200160405190810160405280929190818152602001828054610acf90611e1e565b8015610b1c5780601f10610af157610100808354040283529160200191610b1c565b820191906000526020600020905b815481529060010190602001808311610aff57829003601f168201915b5050505050905090565b600080610b31610d8b565b90506000610b3f8286610c9f565b905083811015610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b9061206d565b60405180910390fd5b610b918286868403610d93565b60019250505092915050565b600080610ba8610d8b565b9050610bb5818585610fea565b600191505092915050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff1611610c2a576000610c97565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183610c789190611f67565b63ffffffff1663ffffffff168152602001908152602001600020600101545b915050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6007602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa906120ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a90612191565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f519190611bb0565b60405180910390a3505050565b6000610f6a8484610c9f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fe45781811015610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd906121fd565b60405180910390fd5b610fe38484848403610d93565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561105a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110519061228f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c190612321565b60405180910390fd5b6110d58383836113d3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561115b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611152906123b3565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112499190611bb0565b60405180910390a361125c8484846113d8565b50505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006112d18461065d565b905082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46113cd8284836113dd565b50505050565b505050565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114195750600081115b1561167957600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461154b576000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116114bc576000611529565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018461150a9190611f67565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000838261153991906123d3565b90506115478684848461167e565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611678576000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116115e9576000611656565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846116379190611f67565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9050600083826116669190611e7f565b90506116748584848461167e565b5050505b5b505050565b60006116a2436040518060600160405280603681526020016124fd60369139611981565b905060008463ffffffff1611801561174057508063ffffffff16600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018761170a9190611f67565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b156117ba5781600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001876117949190611f67565b63ffffffff1663ffffffff1681526020019081526020016000206001018190555061192a565b60405180604001604052808263ffffffff16815260200183815250600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff160217905550602082015181600101559050508363ffffffff166001856118799190612407565b63ffffffff16116118bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b6906124b3565b60405180910390fd5b6001846118cc9190612407565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516119729291906124d3565b60405180910390a25050505050565b6000640100000000831082906119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c49190611a70565b60405180910390fd5b5082905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a115780820151818401526020810190506119f6565b83811115611a20576000848401525b50505050565b6000601f19601f8301169050919050565b6000611a42826119d7565b611a4c81856119e2565b9350611a5c8185602086016119f3565b611a6581611a26565b840191505092915050565b60006020820190508181036000830152611a8a8184611a37565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ac282611a97565b9050919050565b611ad281611ab7565b8114611add57600080fd5b50565b600081359050611aef81611ac9565b92915050565b6000819050919050565b611b0881611af5565b8114611b1357600080fd5b50565b600081359050611b2581611aff565b92915050565b60008060408385031215611b4257611b41611a92565b5b6000611b5085828601611ae0565b9250506020611b6185828601611b16565b9150509250929050565b60008115159050919050565b611b8081611b6b565b82525050565b6000602082019050611b9b6000830184611b77565b92915050565b611baa81611af5565b82525050565b6000602082019050611bc56000830184611ba1565b92915050565b6000819050919050565b611bde81611bcb565b82525050565b6000602082019050611bf96000830184611bd5565b92915050565b600080600060608486031215611c1857611c17611a92565b5b6000611c2686828701611ae0565b9350506020611c3786828701611ae0565b9250506040611c4886828701611b16565b9150509250925092565b600060ff82169050919050565b611c6881611c52565b82525050565b6000602082019050611c836000830184611c5f565b92915050565b600060208284031215611c9f57611c9e611a92565b5b6000611cad84828501611ae0565b91505092915050565b611cbf81611ab7565b82525050565b6000602082019050611cda6000830184611cb6565b92915050565b600063ffffffff82169050919050565b611cf981611ce0565b82525050565b6000602082019050611d146000830184611cf0565b92915050565b60008060408385031215611d3157611d30611a92565b5b6000611d3f85828601611ae0565b9250506020611d5085828601611ae0565b9150509250929050565b611d6381611ce0565b8114611d6e57600080fd5b50565b600081359050611d8081611d5a565b92915050565b60008060408385031215611d9d57611d9c611a92565b5b6000611dab85828601611ae0565b9250506020611dbc85828601611d71565b9150509250929050565b6000604082019050611ddb6000830185611cf0565b611de86020830184611ba1565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611e3657607f821691505b60208210811415611e4a57611e49611def565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e8a82611af5565b9150611e9583611af5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611eca57611ec9611e50565b5b828201905092915050565b7f424f4e453a3a6765745072696f72566f7465733a206e6f74207965742064657460008201527f65726d696e656400000000000000000000000000000000000000000000000000602082015250565b6000611f316027836119e2565b9150611f3c82611ed5565b604082019050919050565b60006020820190508181036000830152611f6081611f24565b9050919050565b6000611f7282611ce0565b9150611f7d83611ce0565b925082821015611f9057611f8f611e50565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611fd582611ce0565b9150611fe083611ce0565b925082611ff057611fef611f9b565b5b828204905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006120576025836119e2565b915061206282611ffb565b604082019050919050565b600060208201905081810360008301526120868161204a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006120e96024836119e2565b91506120f48261208d565b604082019050919050565b60006020820190508181036000830152612118816120dc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061217b6022836119e2565b91506121868261211f565b604082019050919050565b600060208201905081810360008301526121aa8161216e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006121e7601d836119e2565b91506121f2826121b1565b602082019050919050565b60006020820190508181036000830152612216816121da565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006122796025836119e2565b91506122848261221d565b604082019050919050565b600060208201905081810360008301526122a88161226c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061230b6023836119e2565b9150612316826122af565b604082019050919050565b6000602082019050818103600083015261233a816122fe565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061239d6026836119e2565b91506123a882612341565b604082019050919050565b600060208201905081810360008301526123cc81612390565b9050919050565b60006123de82611af5565b91506123e983611af5565b9250828210156123fc576123fb611e50565b5b828203905092915050565b600061241282611ce0565b915061241d83611ce0565b92508263ffffffff0382111561243657612435611e50565b5b828201905092915050565b7f434f464645453a3a5f7772697465436865636b706f696e743a206e657720636860008201527f65636b706f696e74206578636565647320333220626974730000000000000000602082015250565b600061249d6038836119e2565b91506124a882612441565b604082019050919050565b600060208201905081810360008301526124cc81612490565b9050919050565b60006040820190506124e86000830185611ba1565b6124f56020830184611ba1565b939250505056fe434f464645453a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a26469706673582212207187844862fe78ea96a2223e164d6ca0be3f49913082a8ac2f065aaf78aa06b464736f6c634300080c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061012c5760003560e01c806370a08231116100ad578063a9059cbb11610071578063a9059cbb14610393578063b4b5ea57146103c3578063dd62ed3e146103f3578063e7a324dc14610423578063f1127ed8146104415761012c565b806370a08231146102b5578063782d6fe1146102e55780637ecebe001461031557806395d89b4114610345578063a457c2d7146103635761012c565b8063313ce567116100f4578063313ce567146101eb5780633950935114610209578063587cde1e146102395780635c19a95c146102695780636fcfff45146102855761012c565b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017f57806320606b701461019d57806323b872dd146101bb575b600080fd5b610139610472565b6040516101469190611a70565b60405180910390f35b61016960048036038101906101649190611b2b565b610504565b6040516101769190611b86565b60405180910390f35b610187610527565b6040516101949190611bb0565b60405180910390f35b6101a5610531565b6040516101b29190611be4565b60405180910390f35b6101d560048036038101906101d09190611bff565b610555565b6040516101e29190611b86565b60405180910390f35b6101f3610584565b6040516102009190611c6e565b60405180910390f35b610223600480360381019061021e9190611b2b565b61058d565b6040516102309190611b86565b60405180910390f35b610253600480360381019061024e9190611c89565b6105c4565b6040516102609190611cc5565b60405180910390f35b610283600480360381019061027e9190611c89565b61062d565b005b61029f600480360381019061029a9190611c89565b61063a565b6040516102ac9190611cff565b60405180910390f35b6102cf60048036038101906102ca9190611c89565b61065d565b6040516102dc9190611bb0565b60405180910390f35b6102ff60048036038101906102fa9190611b2b565b6106a5565b60405161030c9190611bb0565b60405180910390f35b61032f600480360381019061032a9190611c89565b610a7c565b60405161033c9190611bb0565b60405180910390f35b61034d610a94565b60405161035a9190611a70565b60405180910390f35b61037d60048036038101906103789190611b2b565b610b26565b60405161038a9190611b86565b60405180910390f35b6103ad60048036038101906103a89190611b2b565b610b9d565b6040516103ba9190611b86565b60405180910390f35b6103dd60048036038101906103d89190611c89565b610bc0565b6040516103ea9190611bb0565b60405180910390f35b61040d60048036038101906104089190611d1a565b610c9f565b60405161041a9190611bb0565b60405180910390f35b61042b610d26565b6040516104389190611be4565b60405180910390f35b61045b60048036038101906104569190611d86565b610d4a565b604051610469929190611dc6565b60405180910390f35b60606003805461048190611e1e565b80601f01602080910402602001604051908101604052809291908181526020018280546104ad90611e1e565b80156104fa5780601f106104cf576101008083540402835291602001916104fa565b820191906000526020600020905b8154815290600101906020018083116104dd57829003601f168201915b5050505050905090565b60008061050f610d8b565b905061051c818585610d93565b600191505092915050565b6000600254905090565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b600080610560610d8b565b905061056d858285610f5e565b610578858585610fea565b60019150509392505050565b60006012905090565b600080610598610d8b565b90506105b98185856105aa8589610c9f565b6105b49190611e7f565b610d93565b600191505092915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6106373382611262565b50565b60066020528060005260406000206000915054906101000a900463ffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60004382106106e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e090611f47565b60405180910390fd5b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610756576000915050610a76565b82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846107a59190611f67565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161161085257600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018361082c9190611f67565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050610a76565b82600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611156108d3576000915050610a76565b6000806001836108e39190611f67565b90505b8163ffffffff168163ffffffff161115610a105760006002838361090a9190611f67565b6109149190611fca565b8261091f9190611f67565b90506000600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086816000015163ffffffff1614156109df57806020015195505050505050610a76565b86816000015163ffffffff1610156109f957819350610a09565b600182610a069190611f67565b92505b50506108e6565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206001015493505050505b92915050565b60086020528060005260406000206000915090505481565b606060048054610aa390611e1e565b80601f0160208091040260200160405190810160405280929190818152602001828054610acf90611e1e565b8015610b1c5780601f10610af157610100808354040283529160200191610b1c565b820191906000526020600020905b815481529060010190602001808311610aff57829003601f168201915b5050505050905090565b600080610b31610d8b565b90506000610b3f8286610c9f565b905083811015610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b9061206d565b60405180910390fd5b610b918286868403610d93565b60019250505092915050565b600080610ba8610d8b565b9050610bb5818585610fea565b600191505092915050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff1611610c2a576000610c97565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183610c789190611f67565b63ffffffff1663ffffffff168152602001908152602001600020600101545b915050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6007602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa906120ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6a90612191565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f519190611bb0565b60405180910390a3505050565b6000610f6a8484610c9f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fe45781811015610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd906121fd565b60405180910390fd5b610fe38484848403610d93565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561105a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110519061228f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c190612321565b60405180910390fd5b6110d58383836113d3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561115b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611152906123b3565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112499190611bb0565b60405180910390a361125c8484846113d8565b50505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006112d18461065d565b905082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46113cd8284836113dd565b50505050565b505050565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114195750600081115b1561167957600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461154b576000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116114bc576000611529565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018461150a9190611f67565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000838261153991906123d3565b90506115478684848461167e565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611678576000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116115e9576000611656565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846116379190611f67565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9050600083826116669190611e7f565b90506116748584848461167e565b5050505b5b505050565b60006116a2436040518060600160405280603681526020016124fd60369139611981565b905060008463ffffffff1611801561174057508063ffffffff16600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060018761170a9190611f67565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b156117ba5781600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001876117949190611f67565b63ffffffff1663ffffffff1681526020019081526020016000206001018190555061192a565b60405180604001604052808263ffffffff16815260200183815250600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff160217905550602082015181600101559050508363ffffffff166001856118799190612407565b63ffffffff16116118bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b6906124b3565b60405180910390fd5b6001846118cc9190612407565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516119729291906124d3565b60405180910390a25050505050565b6000640100000000831082906119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c49190611a70565b60405180910390fd5b5082905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a115780820151818401526020810190506119f6565b83811115611a20576000848401525b50505050565b6000601f19601f8301169050919050565b6000611a42826119d7565b611a4c81856119e2565b9350611a5c8185602086016119f3565b611a6581611a26565b840191505092915050565b60006020820190508181036000830152611a8a8184611a37565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ac282611a97565b9050919050565b611ad281611ab7565b8114611add57600080fd5b50565b600081359050611aef81611ac9565b92915050565b6000819050919050565b611b0881611af5565b8114611b1357600080fd5b50565b600081359050611b2581611aff565b92915050565b60008060408385031215611b4257611b41611a92565b5b6000611b5085828601611ae0565b9250506020611b6185828601611b16565b9150509250929050565b60008115159050919050565b611b8081611b6b565b82525050565b6000602082019050611b9b6000830184611b77565b92915050565b611baa81611af5565b82525050565b6000602082019050611bc56000830184611ba1565b92915050565b6000819050919050565b611bde81611bcb565b82525050565b6000602082019050611bf96000830184611bd5565b92915050565b600080600060608486031215611c1857611c17611a92565b5b6000611c2686828701611ae0565b9350506020611c3786828701611ae0565b9250506040611c4886828701611b16565b9150509250925092565b600060ff82169050919050565b611c6881611c52565b82525050565b6000602082019050611c836000830184611c5f565b92915050565b600060208284031215611c9f57611c9e611a92565b5b6000611cad84828501611ae0565b91505092915050565b611cbf81611ab7565b82525050565b6000602082019050611cda6000830184611cb6565b92915050565b600063ffffffff82169050919050565b611cf981611ce0565b82525050565b6000602082019050611d146000830184611cf0565b92915050565b60008060408385031215611d3157611d30611a92565b5b6000611d3f85828601611ae0565b9250506020611d5085828601611ae0565b9150509250929050565b611d6381611ce0565b8114611d6e57600080fd5b50565b600081359050611d8081611d5a565b92915050565b60008060408385031215611d9d57611d9c611a92565b5b6000611dab85828601611ae0565b9250506020611dbc85828601611d71565b9150509250929050565b6000604082019050611ddb6000830185611cf0565b611de86020830184611ba1565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611e3657607f821691505b60208210811415611e4a57611e49611def565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e8a82611af5565b9150611e9583611af5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611eca57611ec9611e50565b5b828201905092915050565b7f424f4e453a3a6765745072696f72566f7465733a206e6f74207965742064657460008201527f65726d696e656400000000000000000000000000000000000000000000000000602082015250565b6000611f316027836119e2565b9150611f3c82611ed5565b604082019050919050565b60006020820190508181036000830152611f6081611f24565b9050919050565b6000611f7282611ce0565b9150611f7d83611ce0565b925082821015611f9057611f8f611e50565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611fd582611ce0565b9150611fe083611ce0565b925082611ff057611fef611f9b565b5b828204905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006120576025836119e2565b915061206282611ffb565b604082019050919050565b600060208201905081810360008301526120868161204a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006120e96024836119e2565b91506120f48261208d565b604082019050919050565b60006020820190508181036000830152612118816120dc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061217b6022836119e2565b91506121868261211f565b604082019050919050565b600060208201905081810360008301526121aa8161216e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006121e7601d836119e2565b91506121f2826121b1565b602082019050919050565b60006020820190508181036000830152612216816121da565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006122796025836119e2565b91506122848261221d565b604082019050919050565b600060208201905081810360008301526122a88161226c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061230b6023836119e2565b9150612316826122af565b604082019050919050565b6000602082019050818103600083015261233a816122fe565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061239d6026836119e2565b91506123a882612341565b604082019050919050565b600060208201905081810360008301526123cc81612390565b9050919050565b60006123de82611af5565b91506123e983611af5565b9250828210156123fc576123fb611e50565b5b828203905092915050565b600061241282611ce0565b915061241d83611ce0565b92508263ffffffff0382111561243657612435611e50565b5b828201905092915050565b7f434f464645453a3a5f7772697465436865636b706f696e743a206e657720636860008201527f65636b706f696e74206578636565647320333220626974730000000000000000602082015250565b600061249d6038836119e2565b91506124a882612441565b604082019050919050565b600060208201905081810360008301526124cc81612490565b9050919050565b60006040820190506124e86000830185611ba1565b6124f56020830184611ba1565b939250505056fe434f464645453a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a26469706673582212207187844862fe78ea96a2223e164d6ca0be3f49913082a8ac2f065aaf78aa06b464736f6c634300080c0033

Deployed Bytecode Sourcemap

17386:6446:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6196:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8547:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7316:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18352:122;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9328:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7158:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10032:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19124:117;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19385:104;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17862:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7487:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19920:1212;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18555:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6415:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10773:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7820:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21333:222;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8076:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18162:117;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17994:70;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;6196:100;6250:13;6283:5;6276:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6196:100;:::o;8547:201::-;8630:4;8647:13;8663:12;:10;:12::i;:::-;8647:28;;8686:32;8695:5;8702:7;8711:6;8686:8;:32::i;:::-;8736:4;8729:11;;;8547:201;;;;:::o;7316:108::-;7377:7;7404:12;;7397:19;;7316:108;:::o;18352:122::-;18394:80;18352:122;:::o;9328:295::-;9459:4;9476:15;9494:12;:10;:12::i;:::-;9476:30;;9517:38;9533:4;9539:7;9548:6;9517:15;:38::i;:::-;9566:27;9576:4;9582:2;9586:6;9566:9;:27::i;:::-;9611:4;9604:11;;;9328:295;;;;;:::o;7158:93::-;7216:5;7241:2;7234:9;;7158:93;:::o;10032:238::-;10120:4;10137:13;10153:12;:10;:12::i;:::-;10137:28;;10176:64;10185:5;10192:7;10229:10;10201:25;10211:5;10218:7;10201:9;:25::i;:::-;:38;;;;:::i;:::-;10176:8;:64::i;:::-;10258:4;10251:11;;;10032:238;;;;:::o;19124:117::-;19185:7;19212:10;:21;19223:9;19212:21;;;;;;;;;;;;;;;;;;;;;;;;;19205:28;;19124:117;;;:::o;19385:104::-;19449:32;19459:10;19471:9;19449;:32::i;:::-;19385:104;:::o;17862:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;7487:127::-;7561:7;7588:9;:18;7598:7;7588:18;;;;;;;;;;;;;;;;7581:25;;7487:127;;;:::o;19920:1212::-;20001:7;20042:12;20028:11;:26;20020:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;20109:19;20131:14;:23;20146:7;20131:23;;;;;;;;;;;;;;;;;;;;;;;;;20109:45;;20185:1;20169:12;:17;;;20165:58;;;20210:1;20203:8;;;;;20165:58;20333:11;20281;:20;20293:7;20281:20;;;;;;;;;;;;;;;:38;20317:1;20302:12;:16;;;;:::i;:::-;20281:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;20277:147;;20368:11;:20;20380:7;20368:20;;;;;;;;;;;;;;;:38;20404:1;20389:12;:16;;;;:::i;:::-;20368:38;;;;;;;;;;;;;;;:44;;;20361:51;;;;;20277:147;20519:11;20483;:20;20495:7;20483:20;;;;;;;;;;;;;;;:23;20504:1;20483:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;20479:88;;;20554:1;20547:8;;;;;20479:88;20577:12;20604;20634:1;20619:12;:16;;;;:::i;:::-;20604:31;;20646:428;20661:5;20653:13;;:5;:13;;;20646:428;;;20683:13;20725:1;20716:5;20708;:13;;;;:::i;:::-;20707:19;;;;:::i;:::-;20699:5;:27;;;;:::i;:::-;20683:43;;20768:20;20791:11;:20;20803:7;20791:20;;;;;;;;;;;;;;;:28;20812:6;20791:28;;;;;;;;;;;;;;;20768:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20854:11;20838:2;:12;;;:27;;;20834:229;;;20893:2;:8;;;20886:15;;;;;;;;;20834:229;20942:11;20927:2;:12;;;:26;;;20923:140;;;20982:6;20974:14;;20923:140;;;21046:1;21037:6;:10;;;;:::i;:::-;21029:18;;20923:140;20668:406;;20646:428;;;21091:11;:20;21103:7;21091:20;;;;;;;;;;;;;;;:27;21112:5;21091:27;;;;;;;;;;;;;;;:33;;;21084:40;;;;;19920:1212;;;;;:::o;18555:39::-;;;;;;;;;;;;;;;;;:::o;6415:104::-;6471:13;6504:7;6497:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6415:104;:::o;10773:436::-;10866:4;10883:13;10899:12;:10;:12::i;:::-;10883:28;;10922:24;10949:25;10959:5;10966:7;10949:9;:25::i;:::-;10922:52;;11013:15;10993:16;:35;;10985:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11106:60;11115:5;11122:7;11150:15;11131:16;:34;11106:8;:60::i;:::-;11197:4;11190:11;;;;10773:436;;;;:::o;7820:193::-;7899:4;7916:13;7932:12;:10;:12::i;:::-;7916:28;;7955;7965:5;7972:2;7976:6;7955:9;:28::i;:::-;8001:4;7994:11;;;7820:193;;;;:::o;21333:222::-;21398:7;21417:19;21439:14;:23;21454:7;21439:23;;;;;;;;;;;;;;;;;;;;;;;;;21417:45;;21495:1;21480:12;:16;;;:67;;21546:1;21480:67;;;21499:11;:20;21511:7;21499:20;;;;;;;;;;;;;;;:38;21535:1;21520:12;:16;;;;:::i;:::-;21499:38;;;;;;;;;;;;;;;:44;;;21480:67;21473:74;;;21333:222;;;:::o;8076:151::-;8165:7;8192:11;:18;8204:5;8192:18;;;;;;;;;;;;;;;:27;8211:7;8192:27;;;;;;;;;;;;;;;;8185:34;;8076:151;;;;:::o;18162:117::-;18208:71;18162:117;:::o;17994:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4006:98::-;4059:7;4086:10;4079:17;;4006:98;:::o;14800:380::-;14953:1;14936:19;;:5;:19;;;;14928:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15034:1;15015:21;;:7;:21;;;;15007:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15118:6;15088:11;:18;15100:5;15088:18;;;;;;;;;;;;;;;:27;15107:7;15088:27;;;;;;;;;;;;;;;:36;;;;15156:7;15140:32;;15149:5;15140:32;;;15165:6;15140:32;;;;;;:::i;:::-;;;;;;;;14800:380;;;:::o;15471:453::-;15606:24;15633:25;15643:5;15650:7;15633:9;:25::i;:::-;15606:52;;15693:17;15673:16;:37;15669:248;;15755:6;15735:16;:26;;15727:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15839:51;15848:5;15855:7;15883:6;15864:16;:25;15839:8;:51::i;:::-;15669:248;15595:329;15471:453;;;:::o;11679:840::-;11826:1;11810:18;;:4;:18;;;;11802:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11903:1;11889:16;;:2;:16;;;;11881:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11958:38;11979:4;11985:2;11989:6;11958:20;:38::i;:::-;12009:19;12031:9;:15;12041:4;12031:15;;;;;;;;;;;;;;;;12009:37;;12080:6;12065:11;:21;;12057:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12197:6;12183:11;:20;12165:9;:15;12175:4;12165:15;;;;;;;;;;;;;;;:38;;;;12400:6;12383:9;:13;12393:2;12383:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12450:2;12435:26;;12444:4;12435:26;;;12454:6;12435:26;;;;;;:::i;:::-;;;;;;;;12474:37;12494:4;12500:2;12504:6;12474:19;:37::i;:::-;11791:728;11679:840;;;:::o;21563:376::-;21640:23;21666:10;:21;21677:9;21666:21;;;;;;;;;;;;;;;;;;;;;;;;;21640:47;;21698:24;21725:20;21735:9;21725;:20::i;:::-;21698:47;;21781:9;21757:10;:21;21768:9;21757:21;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;21850:9;21806:54;;21833:15;21806:54;;21822:9;21806:54;;;;;;;;;;;;21871:60;21886:15;21903:9;21914:16;21871:14;:60::i;:::-;21629:310;;21563:376;;:::o;16524:125::-;;;;:::o;17253:124::-;;;;:::o;22719:941::-;22825:6;22815:16;;:6;:16;;;;:30;;;;;22844:1;22835:6;:10;22815:30;22811:842;;;22884:1;22866:20;;:6;:20;;;22862:382;;22955:16;22974:14;:22;22989:6;22974:22;;;;;;;;;;;;;;;;;;;;;;;;;22955:41;;23015:17;23047:1;23035:9;:13;;;:60;;23094:1;23035:60;;;23051:11;:19;23063:6;23051:19;;;;;;;;;;;;;;;:34;23083:1;23071:9;:13;;;;:::i;:::-;23051:34;;;;;;;;;;;;;;;:40;;;23035:60;23015:80;;23114:17;23146:6;23134:9;:18;;;;:::i;:::-;23114:38;;23171:57;23188:6;23196:9;23207;23218;23171:16;:57::i;:::-;22888:356;;;22862:382;23282:1;23264:20;;:6;:20;;;23260:382;;23353:16;23372:14;:22;23387:6;23372:22;;;;;;;;;;;;;;;;;;;;;;;;;23353:41;;23413:17;23445:1;23433:9;:13;;;:60;;23492:1;23433:60;;;23449:11;:19;23461:6;23449:19;;;;;;;;;;;;;;;:34;23481:1;23469:9;:13;;;;:::i;:::-;23449:34;;;;;;;;;;;;;;;:40;;;23433:60;23413:80;;23512:17;23544:6;23532:9;:18;;;;:::i;:::-;23512:38;;23569:57;23586:6;23594:9;23605;23616;23569:16;:57::i;:::-;23286:356;;;23260:382;22811:842;22719:941;;;:::o;21947:764::-;22069:18;22090:78;22097:12;22090:78;;;;;;;;;;;;;;;;;:6;:78::i;:::-;22069:99;;22200:1;22185:12;:16;;;:85;;;;;22259:11;22205:65;;:11;:22;22217:9;22205:22;;;;;;;;;;;;;;;:40;22243:1;22228:12;:16;;;;:::i;:::-;22205:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;22185:85;22181:454;;;22336:8;22287:11;:22;22299:9;22287:22;;;;;;;;;;;;;;;:40;22325:1;22310:12;:16;;;;:::i;:::-;22287:40;;;;;;;;;;;;;;;:46;;:57;;;;22181:454;;;22416:33;;;;;;;;22427:11;22416:33;;;;;;22440:8;22416:33;;;22377:11;:22;22389:9;22377:22;;;;;;;;;;;;;;;:36;22400:12;22377:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22491:12;22472:31;;22487:1;22472:12;:16;;;;:::i;:::-;:31;;;22464:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;22622:1;22607:12;:16;;;;:::i;:::-;22579:14;:25;22594:9;22579:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;22181:454;22673:9;22652:51;;;22684:8;22694;22652:51;;;;;;;:::i;:::-;;;;;;;;22058:653;21947:764;;;;:::o;23668:161::-;23743:6;23774:5;23770:1;:9;23781:12;23762:32;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;23819:1;23805:16;;23668:161;;;;:::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;1478:117::-;1587:1;1584;1577: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:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:77::-;3883:7;3912:5;3901:16;;3846:77;;;:::o;3929:118::-;4016:24;4034:5;4016:24;:::i;:::-;4011:3;4004:37;3929:118;;:::o;4053:222::-;4146:4;4184:2;4173:9;4169:18;4161:26;;4197:71;4265:1;4254:9;4250:17;4241:6;4197:71;:::i;:::-;4053:222;;;;:::o;4281:619::-;4358:6;4366;4374;4423:2;4411:9;4402:7;4398:23;4394:32;4391:119;;;4429:79;;:::i;:::-;4391:119;4549:1;4574:53;4619:7;4610:6;4599:9;4595:22;4574:53;:::i;:::-;4564:63;;4520:117;4676:2;4702:53;4747:7;4738:6;4727:9;4723:22;4702:53;:::i;:::-;4692:63;;4647:118;4804:2;4830:53;4875:7;4866:6;4855:9;4851:22;4830:53;:::i;:::-;4820:63;;4775:118;4281:619;;;;;:::o;4906:86::-;4941:7;4981:4;4974:5;4970:16;4959:27;;4906:86;;;:::o;4998:112::-;5081:22;5097:5;5081:22;:::i;:::-;5076:3;5069:35;4998:112;;:::o;5116:214::-;5205:4;5243:2;5232:9;5228:18;5220:26;;5256:67;5320:1;5309:9;5305:17;5296:6;5256:67;:::i;:::-;5116:214;;;;:::o;5336:329::-;5395:6;5444:2;5432:9;5423:7;5419:23;5415:32;5412:119;;;5450:79;;:::i;:::-;5412:119;5570:1;5595:53;5640:7;5631:6;5620:9;5616:22;5595:53;:::i;:::-;5585:63;;5541:117;5336:329;;;;:::o;5671:118::-;5758:24;5776:5;5758:24;:::i;:::-;5753:3;5746:37;5671:118;;:::o;5795:222::-;5888:4;5926:2;5915:9;5911:18;5903:26;;5939:71;6007:1;5996:9;5992:17;5983:6;5939:71;:::i;:::-;5795:222;;;;:::o;6023:93::-;6059:7;6099:10;6092:5;6088:22;6077:33;;6023:93;;;:::o;6122:115::-;6207:23;6224:5;6207:23;:::i;:::-;6202:3;6195:36;6122:115;;:::o;6243:218::-;6334:4;6372:2;6361:9;6357:18;6349:26;;6385:69;6451:1;6440:9;6436:17;6427:6;6385:69;:::i;:::-;6243:218;;;;:::o;6467:474::-;6535:6;6543;6592:2;6580:9;6571:7;6567:23;6563:32;6560:119;;;6598:79;;:::i;:::-;6560:119;6718:1;6743:53;6788:7;6779:6;6768:9;6764:22;6743:53;:::i;:::-;6733:63;;6689:117;6845:2;6871:53;6916:7;6907:6;6896:9;6892:22;6871:53;:::i;:::-;6861:63;;6816:118;6467:474;;;;;:::o;6947:120::-;7019:23;7036:5;7019:23;:::i;:::-;7012:5;7009:34;6999:62;;7057:1;7054;7047:12;6999:62;6947:120;:::o;7073:137::-;7118:5;7156:6;7143:20;7134:29;;7172:32;7198:5;7172:32;:::i;:::-;7073:137;;;;:::o;7216:472::-;7283:6;7291;7340:2;7328:9;7319:7;7315:23;7311:32;7308:119;;;7346:79;;:::i;:::-;7308:119;7466:1;7491:53;7536:7;7527:6;7516:9;7512:22;7491:53;:::i;:::-;7481:63;;7437:117;7593:2;7619:52;7663:7;7654:6;7643:9;7639:22;7619:52;:::i;:::-;7609:62;;7564:117;7216:472;;;;;:::o;7694:328::-;7813:4;7851:2;7840:9;7836:18;7828:26;;7864:69;7930:1;7919:9;7915:17;7906:6;7864:69;:::i;:::-;7943:72;8011:2;8000:9;7996:18;7987:6;7943:72;:::i;:::-;7694:328;;;;;:::o;8028:180::-;8076:77;8073:1;8066:88;8173:4;8170:1;8163:15;8197:4;8194:1;8187:15;8214:320;8258:6;8295:1;8289:4;8285:12;8275:22;;8342:1;8336:4;8332:12;8363:18;8353:81;;8419:4;8411:6;8407:17;8397:27;;8353:81;8481:2;8473:6;8470:14;8450:18;8447:38;8444:84;;;8500:18;;:::i;:::-;8444:84;8265:269;8214:320;;;:::o;8540:180::-;8588:77;8585:1;8578:88;8685:4;8682:1;8675:15;8709:4;8706:1;8699:15;8726:305;8766:3;8785:20;8803:1;8785:20;:::i;:::-;8780:25;;8819:20;8837:1;8819:20;:::i;:::-;8814:25;;8973:1;8905:66;8901:74;8898:1;8895:81;8892:107;;;8979:18;;:::i;:::-;8892:107;9023:1;9020;9016:9;9009:16;;8726:305;;;;:::o;9037:226::-;9177:34;9173:1;9165:6;9161:14;9154:58;9246:9;9241:2;9233:6;9229:15;9222:34;9037:226;:::o;9269:366::-;9411:3;9432:67;9496:2;9491:3;9432:67;:::i;:::-;9425:74;;9508:93;9597:3;9508:93;:::i;:::-;9626:2;9621:3;9617:12;9610:19;;9269:366;;;:::o;9641:419::-;9807:4;9845:2;9834:9;9830:18;9822:26;;9894:9;9888:4;9884:20;9880:1;9869:9;9865:17;9858:47;9922:131;10048:4;9922:131;:::i;:::-;9914:139;;9641:419;;;:::o;10066:188::-;10105:4;10125:19;10142:1;10125:19;:::i;:::-;10120:24;;10158:19;10175:1;10158:19;:::i;:::-;10153:24;;10196:1;10193;10190:8;10187:34;;;10201:18;;:::i;:::-;10187:34;10246:1;10243;10239:9;10231:17;;10066:188;;;;:::o;10260:180::-;10308:77;10305:1;10298:88;10405:4;10402:1;10395:15;10429:4;10426:1;10419:15;10446:182;10485:1;10502:19;10519:1;10502:19;:::i;:::-;10497:24;;10535:19;10552:1;10535:19;:::i;:::-;10530:24;;10573:1;10563:35;;10578:18;;:::i;:::-;10563:35;10620:1;10617;10613:9;10608:14;;10446:182;;;;:::o;10634:224::-;10774:34;10770:1;10762:6;10758:14;10751:58;10843:7;10838:2;10830:6;10826:15;10819:32;10634:224;:::o;10864:366::-;11006:3;11027:67;11091:2;11086:3;11027:67;:::i;:::-;11020:74;;11103:93;11192:3;11103:93;:::i;:::-;11221:2;11216:3;11212:12;11205:19;;10864:366;;;:::o;11236:419::-;11402:4;11440:2;11429:9;11425:18;11417:26;;11489:9;11483:4;11479:20;11475:1;11464:9;11460:17;11453:47;11517:131;11643:4;11517:131;:::i;:::-;11509:139;;11236:419;;;:::o;11661:223::-;11801:34;11797:1;11789:6;11785:14;11778:58;11870:6;11865:2;11857:6;11853:15;11846:31;11661:223;:::o;11890:366::-;12032:3;12053:67;12117:2;12112:3;12053:67;:::i;:::-;12046:74;;12129:93;12218:3;12129:93;:::i;:::-;12247:2;12242:3;12238:12;12231:19;;11890:366;;;:::o;12262:419::-;12428:4;12466:2;12455:9;12451:18;12443:26;;12515:9;12509:4;12505:20;12501:1;12490:9;12486:17;12479:47;12543:131;12669:4;12543:131;:::i;:::-;12535:139;;12262:419;;;:::o;12687:221::-;12827:34;12823:1;12815:6;12811:14;12804:58;12896:4;12891:2;12883:6;12879:15;12872:29;12687:221;:::o;12914:366::-;13056:3;13077:67;13141:2;13136:3;13077:67;:::i;:::-;13070:74;;13153:93;13242:3;13153:93;:::i;:::-;13271:2;13266:3;13262:12;13255:19;;12914:366;;;:::o;13286:419::-;13452:4;13490:2;13479:9;13475:18;13467:26;;13539:9;13533:4;13529:20;13525:1;13514:9;13510:17;13503:47;13567:131;13693:4;13567:131;:::i;:::-;13559:139;;13286:419;;;:::o;13711:179::-;13851:31;13847:1;13839:6;13835:14;13828:55;13711:179;:::o;13896:366::-;14038:3;14059:67;14123:2;14118:3;14059:67;:::i;:::-;14052:74;;14135:93;14224:3;14135:93;:::i;:::-;14253:2;14248:3;14244:12;14237:19;;13896:366;;;:::o;14268:419::-;14434:4;14472:2;14461:9;14457:18;14449:26;;14521:9;14515:4;14511:20;14507:1;14496:9;14492:17;14485:47;14549:131;14675:4;14549:131;:::i;:::-;14541:139;;14268:419;;;:::o;14693:224::-;14833:34;14829:1;14821:6;14817:14;14810:58;14902:7;14897:2;14889:6;14885:15;14878:32;14693:224;:::o;14923:366::-;15065:3;15086:67;15150:2;15145:3;15086:67;:::i;:::-;15079:74;;15162:93;15251:3;15162:93;:::i;:::-;15280:2;15275:3;15271:12;15264:19;;14923:366;;;:::o;15295:419::-;15461:4;15499:2;15488:9;15484:18;15476:26;;15548:9;15542:4;15538:20;15534:1;15523:9;15519:17;15512:47;15576:131;15702:4;15576:131;:::i;:::-;15568:139;;15295:419;;;:::o;15720:222::-;15860:34;15856:1;15848:6;15844:14;15837:58;15929:5;15924:2;15916:6;15912:15;15905:30;15720:222;:::o;15948:366::-;16090:3;16111:67;16175:2;16170:3;16111:67;:::i;:::-;16104:74;;16187:93;16276:3;16187:93;:::i;:::-;16305:2;16300:3;16296:12;16289:19;;15948:366;;;:::o;16320:419::-;16486:4;16524:2;16513:9;16509:18;16501:26;;16573:9;16567:4;16563:20;16559:1;16548:9;16544:17;16537:47;16601:131;16727:4;16601:131;:::i;:::-;16593:139;;16320:419;;;:::o;16745:225::-;16885:34;16881:1;16873:6;16869:14;16862:58;16954:8;16949:2;16941:6;16937:15;16930:33;16745:225;:::o;16976:366::-;17118:3;17139:67;17203:2;17198:3;17139:67;:::i;:::-;17132:74;;17215:93;17304:3;17215:93;:::i;:::-;17333:2;17328:3;17324:12;17317:19;;16976:366;;;:::o;17348:419::-;17514:4;17552:2;17541:9;17537:18;17529:26;;17601:9;17595:4;17591:20;17587:1;17576:9;17572:17;17565:47;17629:131;17755:4;17629:131;:::i;:::-;17621:139;;17348:419;;;:::o;17773:191::-;17813:4;17833:20;17851:1;17833:20;:::i;:::-;17828:25;;17867:20;17885:1;17867:20;:::i;:::-;17862:25;;17906:1;17903;17900:8;17897:34;;;17911:18;;:::i;:::-;17897:34;17956:1;17953;17949:9;17941:17;;17773:191;;;;:::o;17970:246::-;18009:3;18028:19;18045:1;18028:19;:::i;:::-;18023:24;;18061:19;18078:1;18061:19;:::i;:::-;18056:24;;18158:1;18146:10;18142:18;18139:1;18136:25;18133:51;;;18164:18;;:::i;:::-;18133:51;18208:1;18205;18201:9;18194:16;;17970:246;;;;:::o;18222:243::-;18362:34;18358:1;18350:6;18346:14;18339:58;18431:26;18426:2;18418:6;18414:15;18407:51;18222:243;:::o;18471:366::-;18613:3;18634:67;18698:2;18693:3;18634:67;:::i;:::-;18627:74;;18710:93;18799:3;18710:93;:::i;:::-;18828:2;18823:3;18819:12;18812:19;;18471:366;;;:::o;18843:419::-;19009:4;19047:2;19036:9;19032:18;19024:26;;19096:9;19090:4;19086:20;19082:1;19071:9;19067:17;19060:47;19124:131;19250:4;19124:131;:::i;:::-;19116:139;;18843:419;;;:::o;19268:332::-;19389:4;19427:2;19416:9;19412:18;19404:26;;19440:71;19508:1;19497:9;19493:17;19484:6;19440:71;:::i;:::-;19521:72;19589:2;19578:9;19574:18;19565:6;19521:72;:::i;:::-;19268:332;;;;;:::o

Swarm Source

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