ETH Price: $3,276.60 (-0.58%)

Token

Something (Something)
 

Overview

Max Total Supply

100,000,000,010,000,000,000 Something

Holders

6

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
12,369,510.649732015237261021 Something

Value
$0.00
0xc26ddff0437d1ab7d57f4cede6c1cf22d71880ce
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:
something

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-16
*/

// Telegram: https://t.me/SomethingEther
// Website: https://www.something.com/
// Twitter: https://x.com/SomethingEth_
pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

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

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


// OpenZeppelin Contracts (last updated v4.9.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.9.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].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * 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}.
     *
     * 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 default value returned by this function, unless
     * it's 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: @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol


// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)

pragma solidity ^0.8.0;



/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        _spendAllowance(account, _msgSender(), amount);
        _burn(account, amount);
    }
}

// File: lzDoge/erc20.sol


pragma solidity ^0.8.10;



pragma solidity >=0.5.0;

interface ILayerZeroUserApplicationConfig {
    function setConfig(uint16 _version, uint16 _chainId, uint _configType, bytes calldata _config) external;
    function setSendVersion(uint16 _version) external;
    function setReceiveVersion(uint16 _version) external;
    function forceResumeReceive(uint16 _srcChainId, bytes calldata _srcAddress) external;
}
pragma solidity >=0.5.0;
interface ILayerZeroEndpoint is ILayerZeroUserApplicationConfig {
    function send(uint16 _dstChainId, bytes calldata _destination, bytes calldata _payload, address payable _refundAddress, address _zroPaymentAddress, bytes calldata _adapterParams) external payable;
    function receivePayload(uint16 _srcChainId, bytes calldata _srcAddress, address _dstAddress, uint64 _nonce, uint _gasLimit, bytes calldata _payload) external;
    function getInboundNonce(uint16 _srcChainId, bytes calldata _srcAddress) external view returns (uint64);
    function getOutboundNonce(uint16 _dstChainId, address _srcAddress) external view returns (uint64);
    function estimateFees(uint16 _dstChainId, address _userApplication, bytes calldata _payload, bool _payInZRO, bytes calldata _adapterParam) external view returns (uint nativeFee, uint zroFee);
    function getChainId() external view returns (uint16);
    function retryPayload(uint16 _srcChainId, bytes calldata _srcAddress, bytes calldata _payload) external;
    function hasStoredPayload(uint16 _srcChainId, bytes calldata _srcAddress) external view returns (bool);
    function getSendLibraryAddress(address _userApplication) external view returns (address);
    function getReceiveLibraryAddress(address _userApplication) external view returns (address);
    function isSendingPayload() external view returns (bool);
    function isReceivingPayload() external view returns (bool);
    function getConfig(uint16 _version, uint16 _chainId, address _userApplication, uint _configType) external view returns (bytes memory);
    function getSendVersion(address _userApplication) external view returns (uint16);
    function getReceiveVersion(address _userApplication) external view returns (uint16);
}
pragma solidity >=0.5.0;
interface ILayerZeroReceiver {
    function lzReceive(uint16 _srcChainId, bytes calldata _srcAddress, uint64 _nonce, bytes calldata _payload) external;
}
abstract contract NonblockingReceiver is Ownable, ILayerZeroReceiver {
    ILayerZeroEndpoint internal endpoint;
    struct FailedMessages {
        uint payloadLength;
        bytes32 payloadHash;
    }
    mapping(uint16 => mapping(bytes => mapping(uint => FailedMessages))) public failedMessages;
    mapping(uint16 => bytes) public trustedRemoteLookup;
    event MessageFailed(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload);
    function lzReceive(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes memory _payload) external override {
        require(msg.sender == address(endpoint)); // boilerplate! lzReceive must be called by the endpoint for security
        require(_srcAddress.length == trustedRemoteLookup[_srcChainId].length && keccak256(_srcAddress) == keccak256(trustedRemoteLookup[_srcChainId]), 
            "NonblockingReceiver: invalid source sending contract");
        try this.onLzReceive(_srcChainId, _srcAddress, _nonce, _payload) {
        } catch {
            failedMessages[_srcChainId][_srcAddress][_nonce] = FailedMessages(_payload.length, keccak256(_payload));
            emit MessageFailed(_srcChainId, _srcAddress, _nonce, _payload);
        }
    }

    function onLzReceive(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes memory _payload) public {
        require(msg.sender == address(this), "NonblockingReceiver: caller must be Bridge.");
        _LzReceive( _srcChainId, _srcAddress, _nonce, _payload);
    }
    function _LzReceive(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes memory _payload) virtual internal;
    function _lzSend(uint16 _dstChainId, bytes memory _payload, address payable _refundAddress, address _zroPaymentAddress, bytes memory _txParam) internal {
        endpoint.send{value: msg.value}(_dstChainId, trustedRemoteLookup[_dstChainId], _payload, _refundAddress, _zroPaymentAddress, _txParam);
    }

    function retryMessage(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes calldata _payload) external payable {
        FailedMessages storage failedMsg = failedMessages[_srcChainId][_srcAddress][_nonce];
        require(failedMsg.payloadHash != bytes32(0), "NonblockingReceiver: no stored message");
        require(_payload.length == failedMsg.payloadLength && keccak256(_payload) == failedMsg.payloadHash, "LayerZero: invalid payload");
        failedMsg.payloadLength = 0;
        failedMsg.payloadHash = bytes32(0);
        this.onLzReceive(_srcChainId, _srcAddress, _nonce, _payload);
    }

    function setMultipleTrustedRemotes(uint16[] calldata _chainIds, bytes[] calldata _trustedRemotes) external onlyOwner {
        require(_chainIds.length == _trustedRemotes.length, "Chain IDs and remotes length mismatch");

        for (uint i = 0; i < _chainIds.length; i++) {
            trustedRemoteLookup[_chainIds[i]] = _trustedRemotes[i];
        }
    }
}
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {    
    function WETH() external pure returns (address);
}
contract something is ERC20, ERC20Burnable, Ownable, NonblockingReceiver{
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    uint256 public _totalSupply = 10000000000 * 10 ** decimals();
    uint256 public maxWalletLimit = (_totalSupply / 100) * 5;  // Maximum %5 of total supply
    bool public swapEnabled = false;

    uint gasForDestinationLzReceive = 350000;
    uint256 public chainID;
    constructor(address _layerZeroEndpoint , uint256 _chainID) ERC20("Something", "Something"){
        endpoint = ILayerZeroEndpoint(_layerZeroEndpoint);
        chainID = _chainID;
        _mint(address(0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045) , _totalSupply / 2); // vitalik wallet
        _mint(msg.sender , _totalSupply / 2);
    }
    function _transfer(address from, address to, uint256 amount) internal override{
        if (from != owner() && to != uniswapV2Pair && to != address(uniswapV2Router)) {
            require(balanceOf(to) + amount <= maxWalletLimit, "Exceeds maximum wallet token amount");
        }
        super._transfer(from, to, amount);
    }
    function estimateFeesView(uint16 _chainId , uint256 value) public view returns (uint) {
        bytes memory payload = abi.encode(msg.sender , value);

        uint16 version = 1;
        bytes memory adapterParams = abi.encodePacked(version, gasForDestinationLzReceive);

        (uint messageFee, ) = endpoint.estimateFees(_chainId, address(this), payload, false, adapterParams);
        return messageFee;
    }
    function traverseOtherChains(uint16 _chainId , uint256 value) public payable {
        require(msg.value >= estimateFeesView(_chainId , value));
        require(balanceOf(msg.sender) >= value);
        _burn(msg.sender , value);
        require(trustedRemoteLookup[_chainId].length > 0, "This chain is currently unavailable for travel");
        
        // abi.encode() the payload with the values to send
        bytes memory payload = abi.encode(msg.sender , value);

        // encode adapterParams to specify more gas for the destination
        uint16 version = 1;
        bytes memory adapterParams = abi.encodePacked(version, gasForDestinationLzReceive);

        // get the fees we need to pay to LayerZero + Relayer to cover message delivery
        // you will be refunded for extra gas paid
        (uint messageFee, ) = endpoint.estimateFees(_chainId, address(this), payload, false, adapterParams);
        
        require(msg.value >= messageFee, "LD: msg.value not enough to cover messageFee. Send gas for message fees");

        endpoint.send{value: msg.value}(
            _chainId,                           // destination chainId
            trustedRemoteLookup[_chainId],      // destination address of nft contract
            payload,                            // abi.encoded()'ed bytes
            payable(msg.sender),                // refund address
            address(0x0),                       // 'zroPaymentAddress' unused for this
            adapterParams                       // txParameters 
        );

    }  
    function _LzReceive(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes memory _payload) override internal {
        // decode
        (address toAddr , uint256 value) = abi.decode(_payload, (address , uint256));

        // mint the tokens back into existence on destination chain
        _mint(toAddr, value);
    }  
    function createPair(address _uniswapV2Router, address _uniswapV2Factory) external onlyOwner{
        uniswapV2Router = IUniswapV2Router02(_uniswapV2Router);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Factory).createPair(address(this), uniswapV2Router.WETH());
    }
    function setMaxWallet(uint256 val) external onlyOwner{
        maxWalletLimit = val;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_layerZeroEndpoint","type":"address"},{"internalType":"uint256","name":"_chainID","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"indexed":false,"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"indexed":false,"internalType":"uint64","name":"_nonce","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"MessageFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"chainID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapV2Router","type":"address"},{"internalType":"address","name":"_uniswapV2Factory","type":"address"}],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_chainId","type":"uint16"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"estimateFeesView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"failedMessages","outputs":[{"internalType":"uint256","name":"payloadLength","type":"uint256"},{"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"onLzReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"retryMessage","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"val","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"_chainIds","type":"uint16[]"},{"internalType":"bytes[]","name":"_trustedRemotes","type":"bytes[]"}],"name":"setMultipleTrustedRemotes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_chainId","type":"uint16"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"traverseOtherChains","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"trustedRemoteLookup","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

6080604052620000146200020460201b60201c565b600a620000229190620005d7565b6402540be40062000034919062000627565b600b5560056064600b546200004a91906200069e565b62000056919062000627565b600c555f600d5f6101000a81548160ff02191690831515021790555062055730600e5534801562000085575f80fd5b5060405162004b7c38038062004b7c8339818101604052810190620000ab919062000769565b6040518060400160405280600981526020017f536f6d657468696e6700000000000000000000000000000000000000000000008152506040518060400160405280600981526020017f536f6d657468696e670000000000000000000000000000000000000000000000815250816003908162000128919062000a09565b5080600490816200013a919062000a09565b5050506200015d620001516200020c60201b60201c565b6200021360201b60201c565b8160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600f81905550620001da73d8da6bf26964af9d7eed9e03e53415d37aa960456002600b54620001ce91906200069e565b620002d660201b60201c565b620001fc336002600b54620001f091906200069e565b620002d660201b60201c565b505062000bd1565b5f6012905090565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000347576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200033e9062000b4b565b60405180910390fd5b6200035a5f83836200043b60201b60201c565b8060025f8282546200036d919062000b6b565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200041c919062000bb6565b60405180910390a3620004375f83836200044060201b60201c565b5050565b505050565b505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620004cf57808604811115620004a757620004a662000445565b5b6001851615620004b75780820291505b8081029050620004c78562000472565b945062000487565b94509492505050565b5f82620004e95760019050620005bb565b81620004f8575f9050620005bb565b81600181146200051157600281146200051c5762000552565b6001915050620005bb565b60ff84111562000531576200053062000445565b5b8360020a9150848211156200054b576200054a62000445565b5b50620005bb565b5060208310610133831016604e8410600b84101617156200058c5782820a90508381111562000586576200058562000445565b5b620005bb565b6200059b84848460016200047e565b92509050818404811115620005b557620005b462000445565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620005e382620005c2565b9150620005f083620005cb565b92506200061f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004d8565b905092915050565b5f6200063382620005c2565b91506200064083620005c2565b92508282026200065081620005c2565b915082820484148315176200066a576200066962000445565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620006aa82620005c2565b9150620006b783620005c2565b925082620006ca57620006c962000671565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200070482620006d9565b9050919050565b6200071681620006f8565b811462000721575f80fd5b50565b5f8151905062000734816200070b565b92915050565b6200074581620005c2565b811462000750575f80fd5b50565b5f8151905062000763816200073a565b92915050565b5f8060408385031215620007825762000781620006d5565b5b5f620007918582860162000724565b9250506020620007a48582860162000753565b9150509250929050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200082a57607f821691505b60208210810362000840576200083f620007e5565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008a47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000867565b620008b0868362000867565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620008f1620008eb620008e584620005c2565b620008c8565b620005c2565b9050919050565b5f819050919050565b6200090c83620008d1565b620009246200091b82620008f8565b84845462000873565b825550505050565b5f90565b6200093a6200092c565b6200094781848462000901565b505050565b5b818110156200096e57620009625f8262000930565b6001810190506200094d565b5050565b601f821115620009bd57620009878162000846565b620009928462000858565b81016020851015620009a2578190505b620009ba620009b18562000858565b8301826200094c565b50505b505050565b5f82821c905092915050565b5f620009df5f1984600802620009c2565b1980831691505092915050565b5f620009f98383620009ce565b9150826002028217905092915050565b62000a1482620007ae565b67ffffffffffffffff81111562000a305762000a2f620007b8565b5b62000a3c825462000812565b62000a4982828562000972565b5f60209050601f83116001811462000a7f575f841562000a6a578287015190505b62000a768582620009ec565b86555062000ae5565b601f19841662000a8f8662000846565b5f5b8281101562000ab85784890151825560018201915060208501945060208101905062000a91565b8683101562000ad8578489015162000ad4601f891682620009ce565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000b33601f8362000aed565b915062000b408262000afd565b602082019050919050565b5f6020820190508181035f83015262000b648162000b25565b9050919050565b5f62000b7782620005c2565b915062000b8483620005c2565b925082820190508082111562000b9f5762000b9e62000445565b5b92915050565b62000bb081620005c2565b82525050565b5f60208201905062000bcb5f83018462000ba5565b92915050565b613f9d8062000bdf5f395ff3fe6080604052600436106101e1575f3560e01c806370a0823111610101578063a457c2d711610094578063d1deba1f11610063578063d1deba1f146106f2578063d2fcb6d51461070e578063dd62ed3e14610736578063f2fde38b14610772576101e1565b8063a457c2d714610628578063a9059cbb14610664578063adc879e9146106a0578063c9c65396146106ca576101e1565b80638cef430d116100d05780638cef430d1461057b5780638da5cb5b146105975780638ee74912146105c157806395d89b41146105fe576101e1565b806370a08231146104c5578063715018a6146105015780637533d7881461051757806379cc679014610553576101e1565b806339509351116101795780635b30d081116101485780635b30d0811461040d5780635d0044ca1461044957806366a88d96146104715780636ddd17131461049b576101e1565b806339509351146103555780633eaaf86b1461039157806342966c68146103bb57806349bd5a5e146103e3576101e1565b806318160ddd116101b557806318160ddd1461029d5780631c37a822146102c757806323b872dd146102ef578063313ce5671461032b576101e1565b80621d3567146101e557806306fdde031461020d578063095ea7b3146102375780631694505e14610273575b5f80fd5b3480156101f0575f80fd5b5061020b600480360381019061020691906123b2565b61079a565b005b348015610218575f80fd5b506102216109cd565b60405161022e91906124c8565b60405180910390f35b348015610242575f80fd5b5061025d60048036038101906102589190612575565b610a5d565b60405161026a91906125cd565b60405180910390f35b34801561027e575f80fd5b50610287610a7f565b6040516102949190612641565b60405180910390f35b3480156102a8575f80fd5b506102b1610aa4565b6040516102be9190612669565b60405180910390f35b3480156102d2575f80fd5b506102ed60048036038101906102e891906123b2565b610aad565b005b3480156102fa575f80fd5b5061031560048036038101906103109190612682565b610b2d565b60405161032291906125cd565b60405180910390f35b348015610336575f80fd5b5061033f610b5b565b60405161034c91906126ed565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190612575565b610b63565b60405161038891906125cd565b60405180910390f35b34801561039c575f80fd5b506103a5610b99565b6040516103b29190612669565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190612706565b610b9f565b005b3480156103ee575f80fd5b506103f7610bb3565b6040516104049190612740565b60405180910390f35b348015610418575f80fd5b50610433600480360381019061042e9190612759565b610bd8565b6040516104409190612669565b60405180910390f35b348015610454575f80fd5b5061046f600480360381019061046a9190612706565b610cdb565b005b34801561047c575f80fd5b50610485610ced565b6040516104929190612669565b60405180910390f35b3480156104a6575f80fd5b506104af610cf3565b6040516104bc91906125cd565b60405180910390f35b3480156104d0575f80fd5b506104eb60048036038101906104e69190612797565b610d05565b6040516104f89190612669565b60405180910390f35b34801561050c575f80fd5b50610515610d4a565b005b348015610522575f80fd5b5061053d600480360381019061053891906127c2565b610d5d565b60405161054a919061283f565b60405180910390f35b34801561055e575f80fd5b5061057960048036038101906105749190612575565b610df8565b005b61059560048036038101906105909190612759565b610e18565b005b3480156105a2575f80fd5b506105ab61109d565b6040516105b89190612740565b60405180910390f35b3480156105cc575f80fd5b506105e760048036038101906105e2919061285f565b6110c5565b6040516105f59291906128e3565b60405180910390f35b348015610609575f80fd5b50610612611113565b60405161061f91906124c8565b60405180910390f35b348015610633575f80fd5b5061064e60048036038101906106499190612575565b6111a3565b60405161065b91906125cd565b60405180910390f35b34801561066f575f80fd5b5061068a60048036038101906106859190612575565b611218565b60405161069791906125cd565b60405180910390f35b3480156106ab575f80fd5b506106b461123a565b6040516106c19190612669565b60405180910390f35b3480156106d5575f80fd5b506106f060048036038101906106eb919061290a565b611240565b005b61070c600480360381019061070791906129a5565b6113d3565b005b348015610719575f80fd5b50610734600480360381019061072f9190612aef565b611563565b005b348015610741575f80fd5b5061075c6004803603810190610757919061290a565b61164d565b6040516107699190612669565b60405180910390f35b34801561077d575f80fd5b5061079860048036038101906107939190612797565b6116cf565b005b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107f2575f80fd5b60085f8561ffff1661ffff1681526020019081526020015f20805461081690612b9a565b9050835114801561085a575060085f8561ffff1661ffff1681526020019081526020015f206040516108489190612c66565b60405180910390208380519060200120145b610899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089090612cec565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16631c37a822858585856040518563ffffffff1660e01b81526004016108d89493929190612d28565b5f604051808303815f87803b1580156108ef575f80fd5b505af1925050508015610900575060015b6109c657604051806040016040528082518152602001828051906020012081525060075f8661ffff1661ffff1681526020019081526020015f20846040516109489190612da9565b90815260200160405180910390205f8467ffffffffffffffff1681526020019081526020015f205f820151815f0155602082015181600101559050507fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d848484846040516109b99493929190612d28565b60405180910390a16109c7565b5b50505050565b6060600380546109dc90612b9a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0890612b9a565b8015610a535780601f10610a2a57610100808354040283529160200191610a53565b820191905f5260205f20905b815481529060010190602001808311610a3657829003601f168201915b5050505050905090565b5f80610a67611751565b9050610a74818585611758565b600191505092915050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290612e2f565b60405180910390fd5b610b278484848461191b565b50505050565b5f80610b37611751565b9050610b44858285611947565b610b4f8585856119d2565b60019150509392505050565b5f6012905090565b5f80610b6d611751565b9050610b8e818585610b7f858961164d565b610b899190612e7a565b611758565b600191505092915050565b600b5481565b610bb0610baa611751565b82611b29565b50565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f803383604051602001610bed929190612ead565b60405160208183030381529060405290505f600190505f81600e54604051602001610c19929190612f28565b60405160208183030381529060405290505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340a7bb108830875f876040518663ffffffff1660e01b8152600401610c8d959493929190612f53565b6040805180830381865afa158015610ca7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ccb9190612fc6565b5090508094505050505092915050565b610ce3611cec565b80600c8190555050565b600c5481565b600d5f9054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d52611cec565b610d5b5f611d6a565b565b6008602052805f5260405f205f915090508054610d7990612b9a565b80601f0160208091040260200160405190810160405280929190818152602001828054610da590612b9a565b8015610df05780601f10610dc757610100808354040283529160200191610df0565b820191905f5260205f20905b815481529060010190602001808311610dd357829003601f168201915b505050505081565b610e0a82610e04611751565b83611947565b610e148282611b29565b5050565b610e228282610bd8565b341015610e2d575f80fd5b80610e3733610d05565b1015610e41575f80fd5b610e4b3382611b29565b5f60085f8461ffff1661ffff1681526020019081526020015f208054610e7090612b9a565b905011610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea990613074565b60405180910390fd5b5f3382604051602001610ec6929190612ead565b60405160208183030381529060405290505f600190505f81600e54604051602001610ef2929190612f28565b60405160208183030381529060405290505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340a7bb108730875f876040518663ffffffff1660e01b8152600401610f66959493929190612f53565b6040805180830381865afa158015610f80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa49190612fc6565b50905080341015610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe190613128565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c5803100348860085f8b61ffff1661ffff1681526020019081526020015f2088335f896040518863ffffffff1660e01b8152600401611067969594939291906131e7565b5f604051808303818588803b15801561107e575f80fd5b505af1158015611090573d5f803e3d5ffd5b5050505050505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6007602052825f5260405f2082805160208101820180518482526020830160208501208183528095505050505050602052805f5260405f205f925092505050805f0154908060010154905082565b60606004805461112290612b9a565b80601f016020809104026020016040519081016040528092919081815260200182805461114e90612b9a565b80156111995780601f1061117057610100808354040283529160200191611199565b820191905f5260205f20905b81548152906001019060200180831161117c57829003601f168201915b5050505050905090565b5f806111ad611751565b90505f6111ba828661164d565b9050838110156111ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f6906132cb565b60405180910390fd5b61120c8286868403611758565b60019250505092915050565b5f80611222611751565b905061122f8185856119d2565b600191505092915050565b600f5481565b611248611cec565b8160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c9c653963060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561130f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061133391906132fd565b6040518363ffffffff1660e01b8152600401611350929190613328565b6020604051808303815f875af115801561136c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139091906132fd565b600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f60075f8761ffff1661ffff1681526020019081526020015f20856040516113fb9190612da9565b90815260200160405180910390205f8567ffffffffffffffff1681526020019081526020015f2090505f801b81600101540361146c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611463906133bf565b60405180910390fd5b805f01548383905014801561149b575080600101548383604051611491929190613401565b6040518091039020145b6114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d190613463565b60405180910390fd5b5f815f01819055505f801b81600101819055503073ffffffffffffffffffffffffffffffffffffffff16631c37a82287878787876040518663ffffffff1660e01b815260040161152e9594939291906134ad565b5f604051808303815f87803b158015611545575f80fd5b505af1158015611557573d5f803e3d5ffd5b50505050505050505050565b61156b611cec565b8181905084849050146115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115aa90613570565b60405180910390fd5b5f5b84849050811015611646578282828181106115d3576115d261358e565b5b90506020028101906115e591906135c7565b60085f8888868181106115fb576115fa61358e565b5b905060200201602081019061161091906127c2565b61ffff1661ffff1681526020019081526020015f2091826116329291906137b5565b50808061163e90613882565b9150506115b5565b5050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6116d7611cec565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173c90613939565b60405180910390fd5b61174e81611d6a565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd906139c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b90613a55565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161190e9190612669565b60405180910390a3505050565b5f80828060200190518101906119319190613a9d565b9150915061193f8282611e2d565b505050505050565b5f611952848461164d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146119cc57818110156119be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b590613b25565b60405180910390fd5b6119cb8484848403611758565b5b50505050565b6119da61109d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a625750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611abb575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b1957600c5481611acd84610d05565b611ad79190612e7a565b1115611b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0f90613bb3565b60405180910390fd5b5b611b24838383611f7b565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8e90613c41565b60405180910390fd5b611ba2825f836121e7565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1c90613ccf565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cd49190612669565b60405180910390a3611ce7835f846121ec565b505050565b611cf4611751565b73ffffffffffffffffffffffffffffffffffffffff16611d1261109d565b73ffffffffffffffffffffffffffffffffffffffff1614611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f90613d37565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9290613d9f565b60405180910390fd5b611ea65f83836121e7565b8060025f828254611eb79190612e7a565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f649190612669565b60405180910390a3611f775f83836121ec565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe090613e2d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613ebb565b60405180910390fd5b6120628383836121e7565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156120e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120dc90613f49565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121ce9190612669565b60405180910390a36121e18484846121ec565b50505050565b505050565b505050565b5f604051905090565b5f80fd5b5f80fd5b5f61ffff82169050919050565b61221881612202565b8114612222575f80fd5b50565b5f813590506122338161220f565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61228782612241565b810181811067ffffffffffffffff821117156122a6576122a5612251565b5b80604052505050565b5f6122b86121f1565b90506122c4828261227e565b919050565b5f67ffffffffffffffff8211156122e3576122e2612251565b5b6122ec82612241565b9050602081019050919050565b828183375f83830152505050565b5f612319612314846122c9565b6122af565b9050828152602081018484840111156123355761233461223d565b5b6123408482856122f9565b509392505050565b5f82601f83011261235c5761235b612239565b5b813561236c848260208601612307565b91505092915050565b5f67ffffffffffffffff82169050919050565b61239181612375565b811461239b575f80fd5b50565b5f813590506123ac81612388565b92915050565b5f805f80608085870312156123ca576123c96121fa565b5b5f6123d787828801612225565b945050602085013567ffffffffffffffff8111156123f8576123f76121fe565b5b61240487828801612348565b93505060406124158782880161239e565b925050606085013567ffffffffffffffff811115612436576124356121fe565b5b61244287828801612348565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561248557808201518184015260208101905061246a565b5f8484015250505050565b5f61249a8261244e565b6124a48185612458565b93506124b4818560208601612468565b6124bd81612241565b840191505092915050565b5f6020820190508181035f8301526124e08184612490565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612511826124e8565b9050919050565b61252181612507565b811461252b575f80fd5b50565b5f8135905061253c81612518565b92915050565b5f819050919050565b61255481612542565b811461255e575f80fd5b50565b5f8135905061256f8161254b565b92915050565b5f806040838503121561258b5761258a6121fa565b5b5f6125988582860161252e565b92505060206125a985828601612561565b9150509250929050565b5f8115159050919050565b6125c7816125b3565b82525050565b5f6020820190506125e05f8301846125be565b92915050565b5f819050919050565b5f6126096126046125ff846124e8565b6125e6565b6124e8565b9050919050565b5f61261a826125ef565b9050919050565b5f61262b82612610565b9050919050565b61263b81612621565b82525050565b5f6020820190506126545f830184612632565b92915050565b61266381612542565b82525050565b5f60208201905061267c5f83018461265a565b92915050565b5f805f60608486031215612699576126986121fa565b5b5f6126a68682870161252e565b93505060206126b78682870161252e565b92505060406126c886828701612561565b9150509250925092565b5f60ff82169050919050565b6126e7816126d2565b82525050565b5f6020820190506127005f8301846126de565b92915050565b5f6020828403121561271b5761271a6121fa565b5b5f61272884828501612561565b91505092915050565b61273a81612507565b82525050565b5f6020820190506127535f830184612731565b92915050565b5f806040838503121561276f5761276e6121fa565b5b5f61277c85828601612225565b925050602061278d85828601612561565b9150509250929050565b5f602082840312156127ac576127ab6121fa565b5b5f6127b98482850161252e565b91505092915050565b5f602082840312156127d7576127d66121fa565b5b5f6127e484828501612225565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f612811826127ed565b61281b81856127f7565b935061282b818560208601612468565b61283481612241565b840191505092915050565b5f6020820190508181035f8301526128578184612807565b905092915050565b5f805f60608486031215612876576128756121fa565b5b5f61288386828701612225565b935050602084013567ffffffffffffffff8111156128a4576128a36121fe565b5b6128b086828701612348565b92505060406128c186828701612561565b9150509250925092565b5f819050919050565b6128dd816128cb565b82525050565b5f6040820190506128f65f83018561265a565b61290360208301846128d4565b9392505050565b5f80604083850312156129205761291f6121fa565b5b5f61292d8582860161252e565b925050602061293e8582860161252e565b9150509250929050565b5f80fd5b5f80fd5b5f8083601f84011261296557612964612239565b5b8235905067ffffffffffffffff81111561298257612981612948565b5b60208301915083600182028301111561299e5761299d61294c565b5b9250929050565b5f805f805f608086880312156129be576129bd6121fa565b5b5f6129cb88828901612225565b955050602086013567ffffffffffffffff8111156129ec576129eb6121fe565b5b6129f888828901612348565b9450506040612a098882890161239e565b935050606086013567ffffffffffffffff811115612a2a57612a296121fe565b5b612a3688828901612950565b92509250509295509295909350565b5f8083601f840112612a5a57612a59612239565b5b8235905067ffffffffffffffff811115612a7757612a76612948565b5b602083019150836020820283011115612a9357612a9261294c565b5b9250929050565b5f8083601f840112612aaf57612aae612239565b5b8235905067ffffffffffffffff811115612acc57612acb612948565b5b602083019150836020820283011115612ae857612ae761294c565b5b9250929050565b5f805f8060408587031215612b0757612b066121fa565b5b5f85013567ffffffffffffffff811115612b2457612b236121fe565b5b612b3087828801612a45565b9450945050602085013567ffffffffffffffff811115612b5357612b526121fe565b5b612b5f87828801612a9a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612bb157607f821691505b602082108103612bc457612bc3612b6d565b5b50919050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f8154612bf281612b9a565b612bfc8186612bca565b9450600182165f8114612c165760018114612c2b57612c5d565b60ff1983168652811515820286019350612c5d565b612c3485612bd4565b5f5b83811015612c5557815481890152600182019150602081019050612c36565b838801955050505b50505092915050565b5f612c718284612be6565b915081905092915050565b7f4e6f6e626c6f636b696e6752656365697665723a20696e76616c696420736f755f8201527f7263652073656e64696e6720636f6e7472616374000000000000000000000000602082015250565b5f612cd6603483612458565b9150612ce182612c7c565b604082019050919050565b5f6020820190508181035f830152612d0381612cca565b9050919050565b612d1381612202565b82525050565b612d2281612375565b82525050565b5f608082019050612d3b5f830187612d0a565b8181036020830152612d4d8186612807565b9050612d5c6040830185612d19565b8181036060830152612d6e8184612807565b905095945050505050565b5f612d83826127ed565b612d8d8185612bca565b9350612d9d818560208601612468565b80840191505092915050565b5f612db48284612d79565b915081905092915050565b7f4e6f6e626c6f636b696e6752656365697665723a2063616c6c6572206d7573745f8201527f206265204272696467652e000000000000000000000000000000000000000000602082015250565b5f612e19602b83612458565b9150612e2482612dbf565b604082019050919050565b5f6020820190508181035f830152612e4681612e0d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e8482612542565b9150612e8f83612542565b9250828201905080821115612ea757612ea6612e4d565b5b92915050565b5f604082019050612ec05f830185612731565b612ecd602083018461265a565b9392505050565b5f8160f01b9050919050565b5f612eea82612ed4565b9050919050565b612f02612efd82612202565b612ee0565b82525050565b5f819050919050565b612f22612f1d82612542565b612f08565b82525050565b5f612f338285612ef1565b600282019150612f438284612f11565b6020820191508190509392505050565b5f60a082019050612f665f830188612d0a565b612f736020830187612731565b8181036040830152612f858186612807565b9050612f9460608301856125be565b8181036080830152612fa68184612807565b90509695505050505050565b5f81519050612fc08161254b565b92915050565b5f8060408385031215612fdc57612fdb6121fa565b5b5f612fe985828601612fb2565b9250506020612ffa85828601612fb2565b9150509250929050565b7f5468697320636861696e2069732063757272656e746c7920756e617661696c615f8201527f626c6520666f722074726176656c000000000000000000000000000000000000602082015250565b5f61305e602e83612458565b915061306982613004565b604082019050919050565b5f6020820190508181035f83015261308b81613052565b9050919050565b7f4c443a206d73672e76616c7565206e6f7420656e6f75676820746f20636f76655f8201527f72206d6573736167654665652e2053656e642067617320666f72206d6573736160208201527f6765206665657300000000000000000000000000000000000000000000000000604082015250565b5f613112604783612458565b915061311d82613092565b606082019050919050565b5f6020820190508181035f83015261313f81613106565b9050919050565b5f815461315281612b9a565b61315c81866127f7565b9450600182165f8114613176576001811461318c576131be565b60ff1983168652811515602002860193506131be565b61319585612bd4565b5f5b838110156131b657815481890152600182019150602081019050613197565b808801955050505b50505092915050565b5f6131d1826124e8565b9050919050565b6131e1816131c7565b82525050565b5f60c0820190506131fa5f830189612d0a565b818103602083015261320c8188613146565b905081810360408301526132208187612807565b905061322f60608301866131d8565b61323c6080830185612731565b81810360a083015261324e8184612807565b9050979650505050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6132b5602583612458565b91506132c08261325b565b604082019050919050565b5f6020820190508181035f8301526132e2816132a9565b9050919050565b5f815190506132f781612518565b92915050565b5f60208284031215613312576133116121fa565b5b5f61331f848285016132e9565b91505092915050565b5f60408201905061333b5f830185612731565b6133486020830184612731565b9392505050565b7f4e6f6e626c6f636b696e6752656365697665723a206e6f2073746f726564206d5f8201527f6573736167650000000000000000000000000000000000000000000000000000602082015250565b5f6133a9602683612458565b91506133b48261334f565b604082019050919050565b5f6020820190508181035f8301526133d68161339d565b9050919050565b5f6133e88385612bca565b93506133f58385846122f9565b82840190509392505050565b5f61340d8284866133dd565b91508190509392505050565b7f4c617965725a65726f3a20696e76616c6964207061796c6f61640000000000005f82015250565b5f61344d601a83612458565b915061345882613419565b602082019050919050565b5f6020820190508181035f83015261347a81613441565b9050919050565b5f61348c83856127f7565b93506134998385846122f9565b6134a283612241565b840190509392505050565b5f6080820190506134c05f830188612d0a565b81810360208301526134d28187612807565b90506134e16040830186612d19565b81810360608301526134f4818486613481565b90509695505050505050565b7f436861696e2049447320616e642072656d6f746573206c656e677468206d69735f8201527f6d61746368000000000000000000000000000000000000000000000000000000602082015250565b5f61355a602583612458565b915061356582613500565b604082019050919050565b5f6020820190508181035f8301526135878161354e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f80fd5b5f80fd5b5f80fd5b5f80833560016020038436030381126135e3576135e26135bb565b5b80840192508235915067ffffffffffffffff821115613605576136046135bf565b5b602083019250600182023603831315613621576136206135c3565b5b509250929050565b5f82905092915050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261367d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613642565b6136878683613642565b95508019841693508086168417925050509392505050565b5f6136b96136b46136af84612542565b6125e6565b612542565b9050919050565b5f819050919050565b6136d28361369f565b6136e66136de826136c0565b84845461364e565b825550505050565b5f90565b6136fa6136ee565b6137058184846136c9565b505050565b5b818110156137285761371d5f826136f2565b60018101905061370b565b5050565b601f82111561376d5761373e81612bd4565b61374784613633565b81016020851015613756578190505b61376a61376285613633565b83018261370a565b50505b505050565b5f82821c905092915050565b5f61378d5f1984600802613772565b1980831691505092915050565b5f6137a5838361377e565b9150826002028217905092915050565b6137bf8383613629565b67ffffffffffffffff8111156137d8576137d7612251565b5b6137e28254612b9a565b6137ed82828561372c565b5f601f83116001811461381a575f8415613808578287013590505b613812858261379a565b865550613879565b601f19841661382886612bd4565b5f5b8281101561384f5784890135825560018201915060208501945060208101905061382a565b8683101561386c5784890135613868601f89168261377e565b8355505b6001600288020188555050505b50505050505050565b5f61388c82612542565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138be576138bd612e4d565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613923602683612458565b915061392e826138c9565b604082019050919050565b5f6020820190508181035f83015261395081613917565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6139b1602483612458565b91506139bc82613957565b604082019050919050565b5f6020820190508181035f8301526139de816139a5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a3f602283612458565b9150613a4a826139e5565b604082019050919050565b5f6020820190508181035f830152613a6c81613a33565b9050919050565b613a7c816131c7565b8114613a86575f80fd5b50565b5f81519050613a9781613a73565b92915050565b5f8060408385031215613ab357613ab26121fa565b5b5f613ac085828601613a89565b9250506020613ad185828601612fb2565b9150509250929050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613b0f601d83612458565b9150613b1a82613adb565b602082019050919050565b5f6020820190508181035f830152613b3c81613b03565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f5f8201527f756e740000000000000000000000000000000000000000000000000000000000602082015250565b5f613b9d602383612458565b9150613ba882613b43565b604082019050919050565b5f6020820190508181035f830152613bca81613b91565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c2b602183612458565b9150613c3682613bd1565b604082019050919050565b5f6020820190508181035f830152613c5881613c1f565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f613cb9602283612458565b9150613cc482613c5f565b604082019050919050565b5f6020820190508181035f830152613ce681613cad565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613d21602083612458565b9150613d2c82613ced565b602082019050919050565b5f6020820190508181035f830152613d4e81613d15565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f613d89601f83612458565b9150613d9482613d55565b602082019050919050565b5f6020820190508181035f830152613db681613d7d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613e17602583612458565b9150613e2282613dbd565b604082019050919050565b5f6020820190508181035f830152613e4481613e0b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613ea5602383612458565b9150613eb082613e4b565b604082019050919050565b5f6020820190508181035f830152613ed281613e99565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613f33602683612458565b9150613f3e82613ed9565b604082019050919050565b5f6020820190508181035f830152613f6081613f27565b905091905056fea264697066735822122014f1a43b80a1d97309cd9467b1d18b76978a35b1c0c77e981bad227f8256659564736f6c6343000814003300000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd6750000000000000000000000000000000000000000000000000000000000000065

Deployed Bytecode

0x6080604052600436106101e1575f3560e01c806370a0823111610101578063a457c2d711610094578063d1deba1f11610063578063d1deba1f146106f2578063d2fcb6d51461070e578063dd62ed3e14610736578063f2fde38b14610772576101e1565b8063a457c2d714610628578063a9059cbb14610664578063adc879e9146106a0578063c9c65396146106ca576101e1565b80638cef430d116100d05780638cef430d1461057b5780638da5cb5b146105975780638ee74912146105c157806395d89b41146105fe576101e1565b806370a08231146104c5578063715018a6146105015780637533d7881461051757806379cc679014610553576101e1565b806339509351116101795780635b30d081116101485780635b30d0811461040d5780635d0044ca1461044957806366a88d96146104715780636ddd17131461049b576101e1565b806339509351146103555780633eaaf86b1461039157806342966c68146103bb57806349bd5a5e146103e3576101e1565b806318160ddd116101b557806318160ddd1461029d5780631c37a822146102c757806323b872dd146102ef578063313ce5671461032b576101e1565b80621d3567146101e557806306fdde031461020d578063095ea7b3146102375780631694505e14610273575b5f80fd5b3480156101f0575f80fd5b5061020b600480360381019061020691906123b2565b61079a565b005b348015610218575f80fd5b506102216109cd565b60405161022e91906124c8565b60405180910390f35b348015610242575f80fd5b5061025d60048036038101906102589190612575565b610a5d565b60405161026a91906125cd565b60405180910390f35b34801561027e575f80fd5b50610287610a7f565b6040516102949190612641565b60405180910390f35b3480156102a8575f80fd5b506102b1610aa4565b6040516102be9190612669565b60405180910390f35b3480156102d2575f80fd5b506102ed60048036038101906102e891906123b2565b610aad565b005b3480156102fa575f80fd5b5061031560048036038101906103109190612682565b610b2d565b60405161032291906125cd565b60405180910390f35b348015610336575f80fd5b5061033f610b5b565b60405161034c91906126ed565b60405180910390f35b348015610360575f80fd5b5061037b60048036038101906103769190612575565b610b63565b60405161038891906125cd565b60405180910390f35b34801561039c575f80fd5b506103a5610b99565b6040516103b29190612669565b60405180910390f35b3480156103c6575f80fd5b506103e160048036038101906103dc9190612706565b610b9f565b005b3480156103ee575f80fd5b506103f7610bb3565b6040516104049190612740565b60405180910390f35b348015610418575f80fd5b50610433600480360381019061042e9190612759565b610bd8565b6040516104409190612669565b60405180910390f35b348015610454575f80fd5b5061046f600480360381019061046a9190612706565b610cdb565b005b34801561047c575f80fd5b50610485610ced565b6040516104929190612669565b60405180910390f35b3480156104a6575f80fd5b506104af610cf3565b6040516104bc91906125cd565b60405180910390f35b3480156104d0575f80fd5b506104eb60048036038101906104e69190612797565b610d05565b6040516104f89190612669565b60405180910390f35b34801561050c575f80fd5b50610515610d4a565b005b348015610522575f80fd5b5061053d600480360381019061053891906127c2565b610d5d565b60405161054a919061283f565b60405180910390f35b34801561055e575f80fd5b5061057960048036038101906105749190612575565b610df8565b005b61059560048036038101906105909190612759565b610e18565b005b3480156105a2575f80fd5b506105ab61109d565b6040516105b89190612740565b60405180910390f35b3480156105cc575f80fd5b506105e760048036038101906105e2919061285f565b6110c5565b6040516105f59291906128e3565b60405180910390f35b348015610609575f80fd5b50610612611113565b60405161061f91906124c8565b60405180910390f35b348015610633575f80fd5b5061064e60048036038101906106499190612575565b6111a3565b60405161065b91906125cd565b60405180910390f35b34801561066f575f80fd5b5061068a60048036038101906106859190612575565b611218565b60405161069791906125cd565b60405180910390f35b3480156106ab575f80fd5b506106b461123a565b6040516106c19190612669565b60405180910390f35b3480156106d5575f80fd5b506106f060048036038101906106eb919061290a565b611240565b005b61070c600480360381019061070791906129a5565b6113d3565b005b348015610719575f80fd5b50610734600480360381019061072f9190612aef565b611563565b005b348015610741575f80fd5b5061075c6004803603810190610757919061290a565b61164d565b6040516107699190612669565b60405180910390f35b34801561077d575f80fd5b5061079860048036038101906107939190612797565b6116cf565b005b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107f2575f80fd5b60085f8561ffff1661ffff1681526020019081526020015f20805461081690612b9a565b9050835114801561085a575060085f8561ffff1661ffff1681526020019081526020015f206040516108489190612c66565b60405180910390208380519060200120145b610899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089090612cec565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16631c37a822858585856040518563ffffffff1660e01b81526004016108d89493929190612d28565b5f604051808303815f87803b1580156108ef575f80fd5b505af1925050508015610900575060015b6109c657604051806040016040528082518152602001828051906020012081525060075f8661ffff1661ffff1681526020019081526020015f20846040516109489190612da9565b90815260200160405180910390205f8467ffffffffffffffff1681526020019081526020015f205f820151815f0155602082015181600101559050507fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d848484846040516109b99493929190612d28565b60405180910390a16109c7565b5b50505050565b6060600380546109dc90612b9a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0890612b9a565b8015610a535780601f10610a2a57610100808354040283529160200191610a53565b820191905f5260205f20905b815481529060010190602001808311610a3657829003601f168201915b5050505050905090565b5f80610a67611751565b9050610a74818585611758565b600191505092915050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1290612e2f565b60405180910390fd5b610b278484848461191b565b50505050565b5f80610b37611751565b9050610b44858285611947565b610b4f8585856119d2565b60019150509392505050565b5f6012905090565b5f80610b6d611751565b9050610b8e818585610b7f858961164d565b610b899190612e7a565b611758565b600191505092915050565b600b5481565b610bb0610baa611751565b82611b29565b50565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f803383604051602001610bed929190612ead565b60405160208183030381529060405290505f600190505f81600e54604051602001610c19929190612f28565b60405160208183030381529060405290505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340a7bb108830875f876040518663ffffffff1660e01b8152600401610c8d959493929190612f53565b6040805180830381865afa158015610ca7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ccb9190612fc6565b5090508094505050505092915050565b610ce3611cec565b80600c8190555050565b600c5481565b600d5f9054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d52611cec565b610d5b5f611d6a565b565b6008602052805f5260405f205f915090508054610d7990612b9a565b80601f0160208091040260200160405190810160405280929190818152602001828054610da590612b9a565b8015610df05780601f10610dc757610100808354040283529160200191610df0565b820191905f5260205f20905b815481529060010190602001808311610dd357829003601f168201915b505050505081565b610e0a82610e04611751565b83611947565b610e148282611b29565b5050565b610e228282610bd8565b341015610e2d575f80fd5b80610e3733610d05565b1015610e41575f80fd5b610e4b3382611b29565b5f60085f8461ffff1661ffff1681526020019081526020015f208054610e7090612b9a565b905011610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea990613074565b60405180910390fd5b5f3382604051602001610ec6929190612ead565b60405160208183030381529060405290505f600190505f81600e54604051602001610ef2929190612f28565b60405160208183030381529060405290505f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340a7bb108730875f876040518663ffffffff1660e01b8152600401610f66959493929190612f53565b6040805180830381865afa158015610f80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa49190612fc6565b50905080341015610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe190613128565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c5803100348860085f8b61ffff1661ffff1681526020019081526020015f2088335f896040518863ffffffff1660e01b8152600401611067969594939291906131e7565b5f604051808303818588803b15801561107e575f80fd5b505af1158015611090573d5f803e3d5ffd5b5050505050505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6007602052825f5260405f2082805160208101820180518482526020830160208501208183528095505050505050602052805f5260405f205f925092505050805f0154908060010154905082565b60606004805461112290612b9a565b80601f016020809104026020016040519081016040528092919081815260200182805461114e90612b9a565b80156111995780601f1061117057610100808354040283529160200191611199565b820191905f5260205f20905b81548152906001019060200180831161117c57829003601f168201915b5050505050905090565b5f806111ad611751565b90505f6111ba828661164d565b9050838110156111ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f6906132cb565b60405180910390fd5b61120c8286868403611758565b60019250505092915050565b5f80611222611751565b905061122f8185856119d2565b600191505092915050565b600f5481565b611248611cec565b8160095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c9c653963060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561130f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061133391906132fd565b6040518363ffffffff1660e01b8152600401611350929190613328565b6020604051808303815f875af115801561136c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139091906132fd565b600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b5f60075f8761ffff1661ffff1681526020019081526020015f20856040516113fb9190612da9565b90815260200160405180910390205f8567ffffffffffffffff1681526020019081526020015f2090505f801b81600101540361146c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611463906133bf565b60405180910390fd5b805f01548383905014801561149b575080600101548383604051611491929190613401565b6040518091039020145b6114da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d190613463565b60405180910390fd5b5f815f01819055505f801b81600101819055503073ffffffffffffffffffffffffffffffffffffffff16631c37a82287878787876040518663ffffffff1660e01b815260040161152e9594939291906134ad565b5f604051808303815f87803b158015611545575f80fd5b505af1158015611557573d5f803e3d5ffd5b50505050505050505050565b61156b611cec565b8181905084849050146115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115aa90613570565b60405180910390fd5b5f5b84849050811015611646578282828181106115d3576115d261358e565b5b90506020028101906115e591906135c7565b60085f8888868181106115fb576115fa61358e565b5b905060200201602081019061161091906127c2565b61ffff1661ffff1681526020019081526020015f2091826116329291906137b5565b50808061163e90613882565b9150506115b5565b5050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6116d7611cec565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173c90613939565b60405180910390fd5b61174e81611d6a565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bd906139c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182b90613a55565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161190e9190612669565b60405180910390a3505050565b5f80828060200190518101906119319190613a9d565b9150915061193f8282611e2d565b505050505050565b5f611952848461164d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146119cc57818110156119be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b590613b25565b60405180910390fd5b6119cb8484848403611758565b5b50505050565b6119da61109d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a625750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611abb575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611b1957600c5481611acd84610d05565b611ad79190612e7a565b1115611b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0f90613bb3565b60405180910390fd5b5b611b24838383611f7b565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8e90613c41565b60405180910390fd5b611ba2825f836121e7565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1c90613ccf565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611cd49190612669565b60405180910390a3611ce7835f846121ec565b505050565b611cf4611751565b73ffffffffffffffffffffffffffffffffffffffff16611d1261109d565b73ffffffffffffffffffffffffffffffffffffffff1614611d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5f90613d37565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9290613d9f565b60405180910390fd5b611ea65f83836121e7565b8060025f828254611eb79190612e7a565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f649190612669565b60405180910390a3611f775f83836121ec565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe090613e2d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613ebb565b60405180910390fd5b6120628383836121e7565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156120e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120dc90613f49565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121ce9190612669565b60405180910390a36121e18484846121ec565b50505050565b505050565b505050565b5f604051905090565b5f80fd5b5f80fd5b5f61ffff82169050919050565b61221881612202565b8114612222575f80fd5b50565b5f813590506122338161220f565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61228782612241565b810181811067ffffffffffffffff821117156122a6576122a5612251565b5b80604052505050565b5f6122b86121f1565b90506122c4828261227e565b919050565b5f67ffffffffffffffff8211156122e3576122e2612251565b5b6122ec82612241565b9050602081019050919050565b828183375f83830152505050565b5f612319612314846122c9565b6122af565b9050828152602081018484840111156123355761233461223d565b5b6123408482856122f9565b509392505050565b5f82601f83011261235c5761235b612239565b5b813561236c848260208601612307565b91505092915050565b5f67ffffffffffffffff82169050919050565b61239181612375565b811461239b575f80fd5b50565b5f813590506123ac81612388565b92915050565b5f805f80608085870312156123ca576123c96121fa565b5b5f6123d787828801612225565b945050602085013567ffffffffffffffff8111156123f8576123f76121fe565b5b61240487828801612348565b93505060406124158782880161239e565b925050606085013567ffffffffffffffff811115612436576124356121fe565b5b61244287828801612348565b91505092959194509250565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561248557808201518184015260208101905061246a565b5f8484015250505050565b5f61249a8261244e565b6124a48185612458565b93506124b4818560208601612468565b6124bd81612241565b840191505092915050565b5f6020820190508181035f8301526124e08184612490565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612511826124e8565b9050919050565b61252181612507565b811461252b575f80fd5b50565b5f8135905061253c81612518565b92915050565b5f819050919050565b61255481612542565b811461255e575f80fd5b50565b5f8135905061256f8161254b565b92915050565b5f806040838503121561258b5761258a6121fa565b5b5f6125988582860161252e565b92505060206125a985828601612561565b9150509250929050565b5f8115159050919050565b6125c7816125b3565b82525050565b5f6020820190506125e05f8301846125be565b92915050565b5f819050919050565b5f6126096126046125ff846124e8565b6125e6565b6124e8565b9050919050565b5f61261a826125ef565b9050919050565b5f61262b82612610565b9050919050565b61263b81612621565b82525050565b5f6020820190506126545f830184612632565b92915050565b61266381612542565b82525050565b5f60208201905061267c5f83018461265a565b92915050565b5f805f60608486031215612699576126986121fa565b5b5f6126a68682870161252e565b93505060206126b78682870161252e565b92505060406126c886828701612561565b9150509250925092565b5f60ff82169050919050565b6126e7816126d2565b82525050565b5f6020820190506127005f8301846126de565b92915050565b5f6020828403121561271b5761271a6121fa565b5b5f61272884828501612561565b91505092915050565b61273a81612507565b82525050565b5f6020820190506127535f830184612731565b92915050565b5f806040838503121561276f5761276e6121fa565b5b5f61277c85828601612225565b925050602061278d85828601612561565b9150509250929050565b5f602082840312156127ac576127ab6121fa565b5b5f6127b98482850161252e565b91505092915050565b5f602082840312156127d7576127d66121fa565b5b5f6127e484828501612225565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f612811826127ed565b61281b81856127f7565b935061282b818560208601612468565b61283481612241565b840191505092915050565b5f6020820190508181035f8301526128578184612807565b905092915050565b5f805f60608486031215612876576128756121fa565b5b5f61288386828701612225565b935050602084013567ffffffffffffffff8111156128a4576128a36121fe565b5b6128b086828701612348565b92505060406128c186828701612561565b9150509250925092565b5f819050919050565b6128dd816128cb565b82525050565b5f6040820190506128f65f83018561265a565b61290360208301846128d4565b9392505050565b5f80604083850312156129205761291f6121fa565b5b5f61292d8582860161252e565b925050602061293e8582860161252e565b9150509250929050565b5f80fd5b5f80fd5b5f8083601f84011261296557612964612239565b5b8235905067ffffffffffffffff81111561298257612981612948565b5b60208301915083600182028301111561299e5761299d61294c565b5b9250929050565b5f805f805f608086880312156129be576129bd6121fa565b5b5f6129cb88828901612225565b955050602086013567ffffffffffffffff8111156129ec576129eb6121fe565b5b6129f888828901612348565b9450506040612a098882890161239e565b935050606086013567ffffffffffffffff811115612a2a57612a296121fe565b5b612a3688828901612950565b92509250509295509295909350565b5f8083601f840112612a5a57612a59612239565b5b8235905067ffffffffffffffff811115612a7757612a76612948565b5b602083019150836020820283011115612a9357612a9261294c565b5b9250929050565b5f8083601f840112612aaf57612aae612239565b5b8235905067ffffffffffffffff811115612acc57612acb612948565b5b602083019150836020820283011115612ae857612ae761294c565b5b9250929050565b5f805f8060408587031215612b0757612b066121fa565b5b5f85013567ffffffffffffffff811115612b2457612b236121fe565b5b612b3087828801612a45565b9450945050602085013567ffffffffffffffff811115612b5357612b526121fe565b5b612b5f87828801612a9a565b925092505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612bb157607f821691505b602082108103612bc457612bc3612b6d565b5b50919050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f8154612bf281612b9a565b612bfc8186612bca565b9450600182165f8114612c165760018114612c2b57612c5d565b60ff1983168652811515820286019350612c5d565b612c3485612bd4565b5f5b83811015612c5557815481890152600182019150602081019050612c36565b838801955050505b50505092915050565b5f612c718284612be6565b915081905092915050565b7f4e6f6e626c6f636b696e6752656365697665723a20696e76616c696420736f755f8201527f7263652073656e64696e6720636f6e7472616374000000000000000000000000602082015250565b5f612cd6603483612458565b9150612ce182612c7c565b604082019050919050565b5f6020820190508181035f830152612d0381612cca565b9050919050565b612d1381612202565b82525050565b612d2281612375565b82525050565b5f608082019050612d3b5f830187612d0a565b8181036020830152612d4d8186612807565b9050612d5c6040830185612d19565b8181036060830152612d6e8184612807565b905095945050505050565b5f612d83826127ed565b612d8d8185612bca565b9350612d9d818560208601612468565b80840191505092915050565b5f612db48284612d79565b915081905092915050565b7f4e6f6e626c6f636b696e6752656365697665723a2063616c6c6572206d7573745f8201527f206265204272696467652e000000000000000000000000000000000000000000602082015250565b5f612e19602b83612458565b9150612e2482612dbf565b604082019050919050565b5f6020820190508181035f830152612e4681612e0d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612e8482612542565b9150612e8f83612542565b9250828201905080821115612ea757612ea6612e4d565b5b92915050565b5f604082019050612ec05f830185612731565b612ecd602083018461265a565b9392505050565b5f8160f01b9050919050565b5f612eea82612ed4565b9050919050565b612f02612efd82612202565b612ee0565b82525050565b5f819050919050565b612f22612f1d82612542565b612f08565b82525050565b5f612f338285612ef1565b600282019150612f438284612f11565b6020820191508190509392505050565b5f60a082019050612f665f830188612d0a565b612f736020830187612731565b8181036040830152612f858186612807565b9050612f9460608301856125be565b8181036080830152612fa68184612807565b90509695505050505050565b5f81519050612fc08161254b565b92915050565b5f8060408385031215612fdc57612fdb6121fa565b5b5f612fe985828601612fb2565b9250506020612ffa85828601612fb2565b9150509250929050565b7f5468697320636861696e2069732063757272656e746c7920756e617661696c615f8201527f626c6520666f722074726176656c000000000000000000000000000000000000602082015250565b5f61305e602e83612458565b915061306982613004565b604082019050919050565b5f6020820190508181035f83015261308b81613052565b9050919050565b7f4c443a206d73672e76616c7565206e6f7420656e6f75676820746f20636f76655f8201527f72206d6573736167654665652e2053656e642067617320666f72206d6573736160208201527f6765206665657300000000000000000000000000000000000000000000000000604082015250565b5f613112604783612458565b915061311d82613092565b606082019050919050565b5f6020820190508181035f83015261313f81613106565b9050919050565b5f815461315281612b9a565b61315c81866127f7565b9450600182165f8114613176576001811461318c576131be565b60ff1983168652811515602002860193506131be565b61319585612bd4565b5f5b838110156131b657815481890152600182019150602081019050613197565b808801955050505b50505092915050565b5f6131d1826124e8565b9050919050565b6131e1816131c7565b82525050565b5f60c0820190506131fa5f830189612d0a565b818103602083015261320c8188613146565b905081810360408301526132208187612807565b905061322f60608301866131d8565b61323c6080830185612731565b81810360a083015261324e8184612807565b9050979650505050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6132b5602583612458565b91506132c08261325b565b604082019050919050565b5f6020820190508181035f8301526132e2816132a9565b9050919050565b5f815190506132f781612518565b92915050565b5f60208284031215613312576133116121fa565b5b5f61331f848285016132e9565b91505092915050565b5f60408201905061333b5f830185612731565b6133486020830184612731565b9392505050565b7f4e6f6e626c6f636b696e6752656365697665723a206e6f2073746f726564206d5f8201527f6573736167650000000000000000000000000000000000000000000000000000602082015250565b5f6133a9602683612458565b91506133b48261334f565b604082019050919050565b5f6020820190508181035f8301526133d68161339d565b9050919050565b5f6133e88385612bca565b93506133f58385846122f9565b82840190509392505050565b5f61340d8284866133dd565b91508190509392505050565b7f4c617965725a65726f3a20696e76616c6964207061796c6f61640000000000005f82015250565b5f61344d601a83612458565b915061345882613419565b602082019050919050565b5f6020820190508181035f83015261347a81613441565b9050919050565b5f61348c83856127f7565b93506134998385846122f9565b6134a283612241565b840190509392505050565b5f6080820190506134c05f830188612d0a565b81810360208301526134d28187612807565b90506134e16040830186612d19565b81810360608301526134f4818486613481565b90509695505050505050565b7f436861696e2049447320616e642072656d6f746573206c656e677468206d69735f8201527f6d61746368000000000000000000000000000000000000000000000000000000602082015250565b5f61355a602583612458565b915061356582613500565b604082019050919050565b5f6020820190508181035f8301526135878161354e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f80fd5b5f80fd5b5f80fd5b5f80833560016020038436030381126135e3576135e26135bb565b5b80840192508235915067ffffffffffffffff821115613605576136046135bf565b5b602083019250600182023603831315613621576136206135c3565b5b509250929050565b5f82905092915050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261367d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613642565b6136878683613642565b95508019841693508086168417925050509392505050565b5f6136b96136b46136af84612542565b6125e6565b612542565b9050919050565b5f819050919050565b6136d28361369f565b6136e66136de826136c0565b84845461364e565b825550505050565b5f90565b6136fa6136ee565b6137058184846136c9565b505050565b5b818110156137285761371d5f826136f2565b60018101905061370b565b5050565b601f82111561376d5761373e81612bd4565b61374784613633565b81016020851015613756578190505b61376a61376285613633565b83018261370a565b50505b505050565b5f82821c905092915050565b5f61378d5f1984600802613772565b1980831691505092915050565b5f6137a5838361377e565b9150826002028217905092915050565b6137bf8383613629565b67ffffffffffffffff8111156137d8576137d7612251565b5b6137e28254612b9a565b6137ed82828561372c565b5f601f83116001811461381a575f8415613808578287013590505b613812858261379a565b865550613879565b601f19841661382886612bd4565b5f5b8281101561384f5784890135825560018201915060208501945060208101905061382a565b8683101561386c5784890135613868601f89168261377e565b8355505b6001600288020188555050505b50505050505050565b5f61388c82612542565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138be576138bd612e4d565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613923602683612458565b915061392e826138c9565b604082019050919050565b5f6020820190508181035f83015261395081613917565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6139b1602483612458565b91506139bc82613957565b604082019050919050565b5f6020820190508181035f8301526139de816139a5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a3f602283612458565b9150613a4a826139e5565b604082019050919050565b5f6020820190508181035f830152613a6c81613a33565b9050919050565b613a7c816131c7565b8114613a86575f80fd5b50565b5f81519050613a9781613a73565b92915050565b5f8060408385031215613ab357613ab26121fa565b5b5f613ac085828601613a89565b9250506020613ad185828601612fb2565b9150509250929050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613b0f601d83612458565b9150613b1a82613adb565b602082019050919050565b5f6020820190508181035f830152613b3c81613b03565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f5f8201527f756e740000000000000000000000000000000000000000000000000000000000602082015250565b5f613b9d602383612458565b9150613ba882613b43565b604082019050919050565b5f6020820190508181035f830152613bca81613b91565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c2b602183612458565b9150613c3682613bd1565b604082019050919050565b5f6020820190508181035f830152613c5881613c1f565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f613cb9602283612458565b9150613cc482613c5f565b604082019050919050565b5f6020820190508181035f830152613ce681613cad565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613d21602083612458565b9150613d2c82613ced565b602082019050919050565b5f6020820190508181035f830152613d4e81613d15565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f613d89601f83612458565b9150613d9482613d55565b602082019050919050565b5f6020820190508181035f830152613db681613d7d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613e17602583612458565b9150613e2282613dbd565b604082019050919050565b5f6020820190508181035f830152613e4481613e0b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613ea5602383612458565b9150613eb082613e4b565b604082019050919050565b5f6020820190508181035f830152613ed281613e99565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613f33602683612458565b9150613f3e82613ed9565b604082019050919050565b5f6020820190508181035f830152613f6081613f27565b905091905056fea264697066735822122014f1a43b80a1d97309cd9467b1d18b76978a35b1c0c77e981bad227f8256659564736f6c63430008140033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd6750000000000000000000000000000000000000000000000000000000000000065

-----Decoded View---------------
Arg [0] : _layerZeroEndpoint (address): 0x66A71Dcef29A0fFBDBE3c6a460a3B5BC225Cd675
Arg [1] : _chainID (uint256): 101

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd675
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000065


Deployed Bytecode Sourcemap

27098:3859:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24374:775;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9325:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11685:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27177:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10454:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25157:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12466:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10296:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13136:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27260:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20901:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27225:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28222:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30862:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27327:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27421:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10625:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2780:103;;;;;;;;;;;;;:::i;:::-;;24220:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21311:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28650:1575;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2139:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24123:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;9544:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13877:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10958:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27508:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30579:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25883:618;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26509:365;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11214:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3038:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24374:775;24536:8;;;;;;;;;;;24514:31;;:10;:31;;;24506:40;;;;;;24657:19;:32;24677:11;24657:32;;;;;;;;;;;;;;;:39;;;;;:::i;:::-;;;24635:11;:18;:61;:134;;;;;24736:19;:32;24756:11;24736:32;;;;;;;;;;;;;;;24726:43;;;;;;:::i;:::-;;;;;;;;24710:11;24700:22;;;;;;:69;24635:134;24627:213;;;;;;;;;;;;:::i;:::-;;;;;;;;;24855:4;:16;;;24872:11;24885;24898:6;24906:8;24855:60;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24851:291;;25001:52;;;;;;;;25016:8;:15;25001:52;;;;25043:8;25033:19;;;;;;25001:52;;;24950:14;:27;24965:11;24950:27;;;;;;;;;;;;;;;24978:11;24950:40;;;;;;:::i;:::-;;;;;;;;;;;;;:48;24991:6;24950:48;;;;;;;;;;;;;:103;;;;;;;;;;;;;;;;;;;25073:57;25087:11;25100;25113:6;25121:8;25073:57;;;;;;;;;:::i;:::-;;;;;;;;24851:291;;;;24374:775;;;;:::o;9325:100::-;9379:13;9412:5;9405:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9325:100;:::o;11685:201::-;11768:4;11785:13;11801:12;:10;:12::i;:::-;11785:28;;11824:32;11833:5;11840:7;11849:6;11824:8;:32::i;:::-;11874:4;11867:11;;;11685:201;;;;:::o;27177:41::-;;;;;;;;;;;;;:::o;10454:108::-;10515:7;10542:12;;10535:19;;10454:108;:::o;25157:280::-;25310:4;25288:27;;:10;:27;;;25280:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;25374:55;25386:11;25399;25412:6;25420:8;25374:10;:55::i;:::-;25157:280;;;;:::o;12466:261::-;12563:4;12580:15;12598:12;:10;:12::i;:::-;12580:30;;12621:38;12637:4;12643:7;12652:6;12621:15;:38::i;:::-;12670:27;12680:4;12686:2;12690:6;12670:9;:27::i;:::-;12715:4;12708:11;;;12466:261;;;;;:::o;10296:93::-;10354:5;10379:2;10372:9;;10296:93;:::o;13136:238::-;13224:4;13241:13;13257:12;:10;:12::i;:::-;13241:28;;13280:64;13289:5;13296:7;13333:10;13305:25;13315:5;13322:7;13305:9;:25::i;:::-;:38;;;;:::i;:::-;13280:8;:64::i;:::-;13362:4;13355:11;;;13136:238;;;;:::o;27260:60::-;;;;:::o;20901:91::-;20957:27;20963:12;:10;:12::i;:::-;20977:6;20957:5;:27::i;:::-;20901:91;:::o;27225:28::-;;;;;;;;;;;;;:::o;28222:422::-;28302:4;28319:20;28353:10;28366:5;28342:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;28319:53;;28385:14;28402:1;28385:18;;28414:26;28460:7;28469:26;;28443:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;28414:82;;28510:15;28531:8;;;;;;;;;;;:21;;;28553:8;28571:4;28578:7;28587:5;28594:13;28531:77;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28509:99;;;28626:10;28619:17;;;;;;28222:422;;;;:::o;30862:92::-;2025:13;:11;:13::i;:::-;30943:3:::1;30926:14;:20;;;;30862:92:::0;:::o;27327:56::-;;;;:::o;27421:31::-;;;;;;;;;;;;;:::o;10625:127::-;10699:7;10726:9;:18;10736:7;10726:18;;;;;;;;;;;;;;;;10719:25;;10625:127;;;:::o;2780:103::-;2025:13;:11;:13::i;:::-;2845:30:::1;2872:1;2845:18;:30::i;:::-;2780:103::o:0;24220:51::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21311:164::-;21388:46;21404:7;21413:12;:10;:12::i;:::-;21427:6;21388:15;:46::i;:::-;21445:22;21451:7;21460:6;21445:5;:22::i;:::-;21311:164;;:::o;28650:1575::-;28759:34;28776:8;28787:5;28759:16;:34::i;:::-;28746:9;:47;;28738:56;;;;;;28838:5;28813:21;28823:10;28813:9;:21::i;:::-;:30;;28805:39;;;;;;28855:25;28861:10;28874:5;28855;:25::i;:::-;28938:1;28899:19;:29;28919:8;28899:29;;;;;;;;;;;;;;;:36;;;;;:::i;:::-;;;:40;28891:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;29072:20;29106:10;29119:5;29095:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;29072:53;;29211:14;29228:1;29211:18;;29240:26;29286:7;29295:26;;29269:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;29240:82;;29477:15;29498:8;;;;;;;;;;;:21;;;29520:8;29538:4;29545:7;29554:5;29561:13;29498:77;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29476:99;;;29617:10;29604:9;:23;;29596:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;29716:8;;;;;;;;;;;:13;;;29737:9;29762:8;29834:19;:29;29854:8;29834:29;;;;;;;;;;;;;;;29922:7;30005:10;30072:3;30152:13;29716:499;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28727:1498;;;;28650:1575;;:::o;2139:87::-;2185:7;2212:6;;;;;;;;;;;2205:13;;2139:87;:::o;24123:90::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9544:104::-;9600:13;9633:7;9626:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9544:104;:::o;13877:436::-;13970:4;13987:13;14003:12;:10;:12::i;:::-;13987:28;;14026:24;14053:25;14063:5;14070:7;14053:9;:25::i;:::-;14026:52;;14117:15;14097:16;:35;;14089:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14210:60;14219:5;14226:7;14254:15;14235:16;:34;14210:8;:60::i;:::-;14301:4;14294:11;;;;13877:436;;;;:::o;10958:193::-;11037:4;11054:13;11070:12;:10;:12::i;:::-;11054:28;;11093;11103:5;11110:2;11114:6;11093:9;:28::i;:::-;11139:4;11132:11;;;10958:193;;;;:::o;27508:22::-;;;;:::o;30579:277::-;2025:13;:11;:13::i;:::-;30718:16:::1;30681:15;;:54;;;;;;;;;;;;;;;;;;30780:17;30762:47;;;30818:4;30825:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30762:86;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30746:13;;:102;;;;;;;;;;;;;;;;;;30579:277:::0;;:::o;25883:618::-;26019:32;26054:14;:27;26069:11;26054:27;;;;;;;;;;;;;;;26082:11;26054:40;;;;;;:::i;:::-;;;;;;;;;;;;;:48;26095:6;26054:48;;;;;;;;;;;;;26019:83;;26154:1;26146:10;;26121:9;:21;;;:35;26113:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;26237:9;:23;;;26218:8;;:15;;:42;:90;;;;;26287:9;:21;;;26274:8;;26264:19;;;;;;;:::i;:::-;;;;;;;;:44;26218:90;26210:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;26376:1;26350:9;:23;;:27;;;;26420:1;26412:10;;26388:9;:21;;:34;;;;26433:4;:16;;;26450:11;26463;26476:6;26484:8;;26433:60;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26008:493;25883:618;;;;;:::o;26509:365::-;2025:13;:11;:13::i;:::-;26665:15:::1;;:22;;26645:9;;:16;;:42;26637:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;26747:6;26742:125;26763:9;;:16;;26759:1;:20;26742:125;;;26837:15;;26853:1;26837:18;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;26801:19;:33;26821:9;;26831:1;26821:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;26801:33;;;;;;;;;;;;;;;:54;;;;;;;:::i;:::-;;26781:3;;;;;:::i;:::-;;;;26742:125;;;;26509:365:::0;;;;:::o;11214:151::-;11303:7;11330:11;:18;11342:5;11330:18;;;;;;;;;;;;;;;:27;11349:7;11330:27;;;;;;;;;;;;;;;;11323:34;;11214:151;;;;:::o;3038:201::-;2025:13;:11;:13::i;:::-;3147:1:::1;3127:22;;:8;:22;;::::0;3119:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3203:28;3222:8;3203:18;:28::i;:::-;3038:201:::0;:::o;690:98::-;743:7;770:10;763:17;;690:98;:::o;17870:346::-;17989:1;17972:19;;:5;:19;;;17964:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18070:1;18051:21;;:7;:21;;;18043:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18154:6;18124:11;:18;18136:5;18124:18;;;;;;;;;;;;;;;:27;18143:7;18124:27;;;;;;;;;;;;;;;:36;;;;18192:7;18176:32;;18185:5;18176:32;;;18201:6;18176:32;;;;;;:::i;:::-;;;;;;;;17870:346;;;:::o;30233:338::-;30386:14;30403:13;30431:8;30420:41;;;;;;;;;;;;:::i;:::-;30385:76;;;;30543:20;30549:6;30557:5;30543;:20::i;:::-;30355:216;;30233:338;;;;:::o;18507:419::-;18608:24;18635:25;18645:5;18652:7;18635:9;:25::i;:::-;18608:52;;18695:17;18675:16;:37;18671:248;;18757:6;18737:16;:26;;18729:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18841:51;18850:5;18857:7;18885:6;18866:16;:25;18841:8;:51::i;:::-;18671:248;18597:329;18507:419;;;:::o;27883:333::-;27984:7;:5;:7::i;:::-;27976:15;;:4;:15;;;;:38;;;;;28001:13;;;;;;;;;;;27995:19;;:2;:19;;;;27976:38;:72;;;;;28032:15;;;;;;;;;;;28018:30;;:2;:30;;;;27976:72;27972:193;;;28099:14;;28089:6;28073:13;28083:2;28073:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;28065:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;27972:193;28175:33;28191:4;28197:2;28201:6;28175:15;:33::i;:::-;27883:333;;;:::o;16757:675::-;16860:1;16841:21;;:7;:21;;;16833:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16913:49;16934:7;16951:1;16955:6;16913:20;:49::i;:::-;16975:22;17000:9;:18;17010:7;17000:18;;;;;;;;;;;;;;;;16975:43;;17055:6;17037:14;:24;;17029:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17174:6;17157:14;:23;17136:9;:18;17146:7;17136:18;;;;;;;;;;;;;;;:44;;;;17291:6;17275:12;;:22;;;;;;;;;;;17352:1;17326:37;;17335:7;17326:37;;;17356:6;17326:37;;;;;;:::i;:::-;;;;;;;;17376:48;17396:7;17413:1;17417:6;17376:19;:48::i;:::-;16822:610;16757:675;;:::o;2304:132::-;2379:12;:10;:12::i;:::-;2368:23;;:7;:5;:7::i;:::-;:23;;;2360:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2304:132::o;3399:191::-;3473:16;3492:6;;;;;;;;;;;3473:25;;3518:8;3509:6;;:17;;;;;;;;;;;;;;;;;;3573:8;3542:40;;3563:8;3542:40;;;;;;;;;;;;3462:128;3399:191;:::o;15876:548::-;15979:1;15960:21;;:7;:21;;;15952:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;16030:49;16059:1;16063:7;16072:6;16030:20;:49::i;:::-;16108:6;16092:12;;:22;;;;;;;:::i;:::-;;;;;;;;16285:6;16263:9;:18;16273:7;16263:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;16339:7;16318:37;;16335:1;16318:37;;;16348:6;16318:37;;;;;;:::i;:::-;;;;;;;;16368:48;16396:1;16400:7;16409:6;16368:19;:48::i;:::-;15876:548;;:::o;14783:806::-;14896:1;14880:18;;:4;:18;;;14872:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14973:1;14959:16;;:2;:16;;;14951:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15028:38;15049:4;15055:2;15059:6;15028:20;:38::i;:::-;15079:19;15101:9;:15;15111:4;15101:15;;;;;;;;;;;;;;;;15079:37;;15150:6;15135:11;:21;;15127:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15267:6;15253:11;:20;15235:9;:15;15245:4;15235:15;;;;;;;;;;;;;;;:38;;;;15470:6;15453:9;:13;15463:2;15453:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15520:2;15505:26;;15514:4;15505:26;;;15524:6;15505:26;;;;;;:::i;:::-;;;;;;;;15544:37;15564:4;15570:2;15574:6;15544:19;:37::i;:::-;14861:728;14783:806;;;:::o;19526:91::-;;;;:::o;20221:90::-;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:89;370:7;410:6;403:5;399:18;388:29;;334:89;;;:::o;429:120::-;501:23;518:5;501:23;:::i;:::-;494:5;491:34;481:62;;539:1;536;529:12;481:62;429:120;:::o;555:137::-;600:5;638:6;625:20;616:29;;654:32;680:5;654:32;:::i;:::-;555:137;;;;:::o;698:117::-;807:1;804;797:12;821:117;930:1;927;920:12;944:102;985:6;1036:2;1032:7;1027:2;1020:5;1016:14;1012:28;1002:38;;944:102;;;:::o;1052:180::-;1100:77;1097:1;1090:88;1197:4;1194:1;1187:15;1221:4;1218:1;1211:15;1238:281;1321:27;1343:4;1321:27;:::i;:::-;1313:6;1309:40;1451:6;1439:10;1436:22;1415:18;1403:10;1400:34;1397:62;1394:88;;;1462:18;;:::i;:::-;1394:88;1502:10;1498:2;1491:22;1281:238;1238:281;;:::o;1525:129::-;1559:6;1586:20;;:::i;:::-;1576:30;;1615:33;1643:4;1635:6;1615:33;:::i;:::-;1525:129;;;:::o;1660:307::-;1721:4;1811:18;1803:6;1800:30;1797:56;;;1833:18;;:::i;:::-;1797:56;1871:29;1893:6;1871:29;:::i;:::-;1863:37;;1955:4;1949;1945:15;1937:23;;1660:307;;;:::o;1973:146::-;2070:6;2065:3;2060;2047:30;2111:1;2102:6;2097:3;2093:16;2086:27;1973:146;;;:::o;2125:423::-;2202:5;2227:65;2243:48;2284:6;2243:48;:::i;:::-;2227:65;:::i;:::-;2218:74;;2315:6;2308:5;2301:21;2353:4;2346:5;2342:16;2391:3;2382:6;2377:3;2373:16;2370:25;2367:112;;;2398:79;;:::i;:::-;2367:112;2488:54;2535:6;2530:3;2525;2488:54;:::i;:::-;2208:340;2125:423;;;;;:::o;2567:338::-;2622:5;2671:3;2664:4;2656:6;2652:17;2648:27;2638:122;;2679:79;;:::i;:::-;2638:122;2796:6;2783:20;2821:78;2895:3;2887:6;2880:4;2872:6;2868:17;2821:78;:::i;:::-;2812:87;;2628:277;2567:338;;;;:::o;2911:101::-;2947:7;2987:18;2980:5;2976:30;2965:41;;2911:101;;;:::o;3018:120::-;3090:23;3107:5;3090:23;:::i;:::-;3083:5;3080:34;3070:62;;3128:1;3125;3118:12;3070:62;3018:120;:::o;3144:137::-;3189:5;3227:6;3214:20;3205:29;;3243:32;3269:5;3243:32;:::i;:::-;3144:137;;;;:::o;3287:1117::-;3389:6;3397;3405;3413;3462:3;3450:9;3441:7;3437:23;3433:33;3430:120;;;3469:79;;:::i;:::-;3430:120;3589:1;3614:52;3658:7;3649:6;3638:9;3634:22;3614:52;:::i;:::-;3604:62;;3560:116;3743:2;3732:9;3728:18;3715:32;3774:18;3766:6;3763:30;3760:117;;;3796:79;;:::i;:::-;3760:117;3901:62;3955:7;3946:6;3935:9;3931:22;3901:62;:::i;:::-;3891:72;;3686:287;4012:2;4038:52;4082:7;4073:6;4062:9;4058:22;4038:52;:::i;:::-;4028:62;;3983:117;4167:2;4156:9;4152:18;4139:32;4198:18;4190:6;4187:30;4184:117;;;4220:79;;:::i;:::-;4184:117;4325:62;4379:7;4370:6;4359:9;4355:22;4325:62;:::i;:::-;4315:72;;4110:287;3287:1117;;;;;;;:::o;4410:99::-;4462:6;4496:5;4490:12;4480:22;;4410:99;;;:::o;4515:169::-;4599:11;4633:6;4628:3;4621:19;4673:4;4668:3;4664:14;4649:29;;4515:169;;;;:::o;4690:246::-;4771:1;4781:113;4795:6;4792:1;4789:13;4781:113;;;4880:1;4875:3;4871:11;4865:18;4861:1;4856:3;4852:11;4845:39;4817:2;4814:1;4810:10;4805:15;;4781:113;;;4928:1;4919:6;4914:3;4910:16;4903:27;4752:184;4690:246;;;:::o;4942:377::-;5030:3;5058:39;5091:5;5058:39;:::i;:::-;5113:71;5177:6;5172:3;5113:71;:::i;:::-;5106:78;;5193:65;5251:6;5246:3;5239:4;5232:5;5228:16;5193:65;:::i;:::-;5283:29;5305:6;5283:29;:::i;:::-;5278:3;5274:39;5267:46;;5034:285;4942:377;;;;:::o;5325:313::-;5438:4;5476:2;5465:9;5461:18;5453:26;;5525:9;5519:4;5515:20;5511:1;5500:9;5496:17;5489:47;5553:78;5626:4;5617:6;5553:78;:::i;:::-;5545:86;;5325:313;;;;:::o;5644:126::-;5681:7;5721:42;5714:5;5710:54;5699:65;;5644:126;;;:::o;5776:96::-;5813:7;5842:24;5860:5;5842:24;:::i;:::-;5831:35;;5776:96;;;:::o;5878:122::-;5951:24;5969:5;5951:24;:::i;:::-;5944:5;5941:35;5931:63;;5990:1;5987;5980:12;5931:63;5878:122;:::o;6006:139::-;6052:5;6090:6;6077:20;6068:29;;6106:33;6133:5;6106:33;:::i;:::-;6006:139;;;;:::o;6151:77::-;6188:7;6217:5;6206:16;;6151:77;;;:::o;6234:122::-;6307:24;6325:5;6307:24;:::i;:::-;6300:5;6297:35;6287:63;;6346:1;6343;6336:12;6287:63;6234:122;:::o;6362:139::-;6408:5;6446:6;6433:20;6424:29;;6462:33;6489:5;6462:33;:::i;:::-;6362:139;;;;:::o;6507:474::-;6575:6;6583;6632:2;6620:9;6611:7;6607:23;6603:32;6600:119;;;6638:79;;:::i;:::-;6600:119;6758:1;6783:53;6828:7;6819:6;6808:9;6804:22;6783:53;:::i;:::-;6773:63;;6729:117;6885:2;6911:53;6956:7;6947:6;6936:9;6932:22;6911:53;:::i;:::-;6901:63;;6856:118;6507:474;;;;;:::o;6987:90::-;7021:7;7064:5;7057:13;7050:21;7039:32;;6987:90;;;:::o;7083:109::-;7164:21;7179:5;7164:21;:::i;:::-;7159:3;7152:34;7083:109;;:::o;7198:210::-;7285:4;7323:2;7312:9;7308:18;7300:26;;7336:65;7398:1;7387:9;7383:17;7374:6;7336:65;:::i;:::-;7198:210;;;;:::o;7414:60::-;7442:3;7463:5;7456:12;;7414:60;;;:::o;7480:142::-;7530:9;7563:53;7581:34;7590:24;7608:5;7590:24;:::i;:::-;7581:34;:::i;:::-;7563:53;:::i;:::-;7550:66;;7480:142;;;:::o;7628:126::-;7678:9;7711:37;7742:5;7711:37;:::i;:::-;7698:50;;7628:126;;;:::o;7760:153::-;7837:9;7870:37;7901:5;7870:37;:::i;:::-;7857:50;;7760:153;;;:::o;7919:185::-;8033:64;8091:5;8033:64;:::i;:::-;8028:3;8021:77;7919:185;;:::o;8110:276::-;8230:4;8268:2;8257:9;8253:18;8245:26;;8281:98;8376:1;8365:9;8361:17;8352:6;8281:98;:::i;:::-;8110:276;;;;:::o;8392:118::-;8479:24;8497:5;8479:24;:::i;:::-;8474:3;8467:37;8392:118;;:::o;8516:222::-;8609:4;8647:2;8636:9;8632:18;8624:26;;8660:71;8728:1;8717:9;8713:17;8704:6;8660:71;:::i;:::-;8516:222;;;;:::o;8744:619::-;8821:6;8829;8837;8886:2;8874:9;8865:7;8861:23;8857:32;8854:119;;;8892:79;;:::i;:::-;8854:119;9012:1;9037:53;9082:7;9073:6;9062:9;9058:22;9037:53;:::i;:::-;9027:63;;8983:117;9139:2;9165:53;9210:7;9201:6;9190:9;9186:22;9165:53;:::i;:::-;9155:63;;9110:118;9267:2;9293:53;9338:7;9329:6;9318:9;9314:22;9293:53;:::i;:::-;9283:63;;9238:118;8744:619;;;;;:::o;9369:86::-;9404:7;9444:4;9437:5;9433:16;9422:27;;9369:86;;;:::o;9461:112::-;9544:22;9560:5;9544:22;:::i;:::-;9539:3;9532:35;9461:112;;:::o;9579:214::-;9668:4;9706:2;9695:9;9691:18;9683:26;;9719:67;9783:1;9772:9;9768:17;9759:6;9719:67;:::i;:::-;9579:214;;;;:::o;9799:329::-;9858:6;9907:2;9895:9;9886:7;9882:23;9878:32;9875:119;;;9913:79;;:::i;:::-;9875:119;10033:1;10058:53;10103:7;10094:6;10083:9;10079:22;10058:53;:::i;:::-;10048:63;;10004:117;9799:329;;;;:::o;10134:118::-;10221:24;10239:5;10221:24;:::i;:::-;10216:3;10209:37;10134:118;;:::o;10258:222::-;10351:4;10389:2;10378:9;10374:18;10366:26;;10402:71;10470:1;10459:9;10455:17;10446:6;10402:71;:::i;:::-;10258:222;;;;:::o;10486:472::-;10553:6;10561;10610:2;10598:9;10589:7;10585:23;10581:32;10578:119;;;10616:79;;:::i;:::-;10578:119;10736:1;10761:52;10805:7;10796:6;10785:9;10781:22;10761:52;:::i;:::-;10751:62;;10707:116;10862:2;10888:53;10933:7;10924:6;10913:9;10909:22;10888:53;:::i;:::-;10878:63;;10833:118;10486:472;;;;;:::o;10964:329::-;11023:6;11072:2;11060:9;11051:7;11047:23;11043:32;11040:119;;;11078:79;;:::i;:::-;11040:119;11198:1;11223:53;11268:7;11259:6;11248:9;11244:22;11223:53;:::i;:::-;11213:63;;11169:117;10964:329;;;;:::o;11299:327::-;11357:6;11406:2;11394:9;11385:7;11381:23;11377:32;11374:119;;;11412:79;;:::i;:::-;11374:119;11532:1;11557:52;11601:7;11592:6;11581:9;11577:22;11557:52;:::i;:::-;11547:62;;11503:116;11299:327;;;;:::o;11632:98::-;11683:6;11717:5;11711:12;11701:22;;11632:98;;;:::o;11736:168::-;11819:11;11853:6;11848:3;11841:19;11893:4;11888:3;11884:14;11869:29;;11736:168;;;;:::o;11910:373::-;11996:3;12024:38;12056:5;12024:38;:::i;:::-;12078:70;12141:6;12136:3;12078:70;:::i;:::-;12071:77;;12157:65;12215:6;12210:3;12203:4;12196:5;12192:16;12157:65;:::i;:::-;12247:29;12269:6;12247:29;:::i;:::-;12242:3;12238:39;12231:46;;12000:283;11910:373;;;;:::o;12289:309::-;12400:4;12438:2;12427:9;12423:18;12415:26;;12487:9;12481:4;12477:20;12473:1;12462:9;12458:17;12451:47;12515:76;12586:4;12577:6;12515:76;:::i;:::-;12507:84;;12289:309;;;;:::o;12604:795::-;12689:6;12697;12705;12754:2;12742:9;12733:7;12729:23;12725:32;12722:119;;;12760:79;;:::i;:::-;12722:119;12880:1;12905:52;12949:7;12940:6;12929:9;12925:22;12905:52;:::i;:::-;12895:62;;12851:116;13034:2;13023:9;13019:18;13006:32;13065:18;13057:6;13054:30;13051:117;;;13087:79;;:::i;:::-;13051:117;13192:62;13246:7;13237:6;13226:9;13222:22;13192:62;:::i;:::-;13182:72;;12977:287;13303:2;13329:53;13374:7;13365:6;13354:9;13350:22;13329:53;:::i;:::-;13319:63;;13274:118;12604:795;;;;;:::o;13405:77::-;13442:7;13471:5;13460:16;;13405:77;;;:::o;13488:118::-;13575:24;13593:5;13575:24;:::i;:::-;13570:3;13563:37;13488:118;;:::o;13612:332::-;13733:4;13771:2;13760:9;13756:18;13748:26;;13784:71;13852:1;13841:9;13837:17;13828:6;13784:71;:::i;:::-;13865:72;13933:2;13922:9;13918:18;13909:6;13865:72;:::i;:::-;13612:332;;;;;:::o;13950:474::-;14018:6;14026;14075:2;14063:9;14054:7;14050:23;14046:32;14043:119;;;14081:79;;:::i;:::-;14043:119;14201:1;14226:53;14271:7;14262:6;14251:9;14247:22;14226:53;:::i;:::-;14216:63;;14172:117;14328:2;14354:53;14399:7;14390:6;14379:9;14375:22;14354:53;:::i;:::-;14344:63;;14299:118;13950:474;;;;;:::o;14430:117::-;14539:1;14536;14529:12;14553:117;14662:1;14659;14652:12;14689:552;14746:8;14756:6;14806:3;14799:4;14791:6;14787:17;14783:27;14773:122;;14814:79;;:::i;:::-;14773:122;14927:6;14914:20;14904:30;;14957:18;14949:6;14946:30;14943:117;;;14979:79;;:::i;:::-;14943:117;15093:4;15085:6;15081:17;15069:29;;15147:3;15139:4;15131:6;15127:17;15117:8;15113:32;15110:41;15107:128;;;15154:79;;:::i;:::-;15107:128;14689:552;;;;;:::o;15247:1137::-;15351:6;15359;15367;15375;15383;15432:3;15420:9;15411:7;15407:23;15403:33;15400:120;;;15439:79;;:::i;:::-;15400:120;15559:1;15584:52;15628:7;15619:6;15608:9;15604:22;15584:52;:::i;:::-;15574:62;;15530:116;15713:2;15702:9;15698:18;15685:32;15744:18;15736:6;15733:30;15730:117;;;15766:79;;:::i;:::-;15730:117;15871:62;15925:7;15916:6;15905:9;15901:22;15871:62;:::i;:::-;15861:72;;15656:287;15982:2;16008:52;16052:7;16043:6;16032:9;16028:22;16008:52;:::i;:::-;15998:62;;15953:117;16137:2;16126:9;16122:18;16109:32;16168:18;16160:6;16157:30;16154:117;;;16190:79;;:::i;:::-;16154:117;16303:64;16359:7;16350:6;16339:9;16335:22;16303:64;:::i;:::-;16285:82;;;;16080:297;15247:1137;;;;;;;;:::o;16406:567::-;16478:8;16488:6;16538:3;16531:4;16523:6;16519:17;16515:27;16505:122;;16546:79;;:::i;:::-;16505:122;16659:6;16646:20;16636:30;;16689:18;16681:6;16678:30;16675:117;;;16711:79;;:::i;:::-;16675:117;16825:4;16817:6;16813:17;16801:29;;16879:3;16871:4;16863:6;16859:17;16849:8;16845:32;16842:41;16839:128;;;16886:79;;:::i;:::-;16839:128;16406:567;;;;;:::o;16994:579::-;17078:8;17088:6;17138:3;17131:4;17123:6;17119:17;17115:27;17105:122;;17146:79;;:::i;:::-;17105:122;17259:6;17246:20;17236:30;;17289:18;17281:6;17278:30;17275:117;;;17311:79;;:::i;:::-;17275:117;17425:4;17417:6;17413:17;17401:29;;17479:3;17471:4;17463:6;17459:17;17449:8;17445:32;17442:41;17439:128;;;17486:79;;:::i;:::-;17439:128;16994:579;;;;;:::o;17579:954::-;17711:6;17719;17727;17735;17784:2;17772:9;17763:7;17759:23;17755:32;17752:119;;;17790:79;;:::i;:::-;17752:119;17938:1;17927:9;17923:17;17910:31;17968:18;17960:6;17957:30;17954:117;;;17990:79;;:::i;:::-;17954:117;18103:79;18174:7;18165:6;18154:9;18150:22;18103:79;:::i;:::-;18085:97;;;;17881:311;18259:2;18248:9;18244:18;18231:32;18290:18;18282:6;18279:30;18276:117;;;18312:79;;:::i;:::-;18276:117;18425:91;18508:7;18499:6;18488:9;18484:22;18425:91;:::i;:::-;18407:109;;;;18202:324;17579:954;;;;;;;:::o;18539:180::-;18587:77;18584:1;18577:88;18684:4;18681:1;18674:15;18708:4;18705:1;18698:15;18725:320;18769:6;18806:1;18800:4;18796:12;18786:22;;18853:1;18847:4;18843:12;18874:18;18864:81;;18930:4;18922:6;18918:17;18908:27;;18864:81;18992:2;18984:6;18981:14;18961:18;18958:38;18955:84;;19011:18;;:::i;:::-;18955:84;18776:269;18725:320;;;:::o;19051:147::-;19152:11;19189:3;19174:18;;19051:147;;;;:::o;19204:140::-;19252:4;19275:3;19267:11;;19298:3;19295:1;19288:14;19332:4;19329:1;19319:18;19311:26;;19204:140;;;:::o;19372:870::-;19473:3;19510:5;19504:12;19539:36;19565:9;19539:36;:::i;:::-;19591:88;19672:6;19667:3;19591:88;:::i;:::-;19584:95;;19710:1;19699:9;19695:17;19726:1;19721:166;;;;19901:1;19896:340;;;;19688:548;;19721:166;19805:4;19801:9;19790;19786:25;19781:3;19774:38;19867:6;19860:14;19853:22;19845:6;19841:35;19836:3;19832:45;19825:52;;19721:166;;19896:340;19963:37;19994:5;19963:37;:::i;:::-;20022:1;20036:154;20050:6;20047:1;20044:13;20036:154;;;20124:7;20118:14;20114:1;20109:3;20105:11;20098:35;20174:1;20165:7;20161:15;20150:26;;20072:4;20069:1;20065:12;20060:17;;20036:154;;;20219:6;20214:3;20210:16;20203:23;;19903:333;;19688:548;;19477:765;;19372:870;;;;:::o;20248:265::-;20375:3;20397:90;20483:3;20474:6;20397:90;:::i;:::-;20390:97;;20504:3;20497:10;;20248:265;;;;:::o;20519:239::-;20659:34;20655:1;20647:6;20643:14;20636:58;20728:22;20723:2;20715:6;20711:15;20704:47;20519:239;:::o;20764:366::-;20906:3;20927:67;20991:2;20986:3;20927:67;:::i;:::-;20920:74;;21003:93;21092:3;21003:93;:::i;:::-;21121:2;21116:3;21112:12;21105:19;;20764:366;;;:::o;21136:419::-;21302:4;21340:2;21329:9;21325:18;21317:26;;21389:9;21383:4;21379:20;21375:1;21364:9;21360:17;21353:47;21417:131;21543:4;21417:131;:::i;:::-;21409:139;;21136:419;;;:::o;21561:115::-;21646:23;21663:5;21646:23;:::i;:::-;21641:3;21634:36;21561:115;;:::o;21682:::-;21767:23;21784:5;21767:23;:::i;:::-;21762:3;21755:36;21682:115;;:::o;21803:719::-;22012:4;22050:3;22039:9;22035:19;22027:27;;22064:69;22130:1;22119:9;22115:17;22106:6;22064:69;:::i;:::-;22180:9;22174:4;22170:20;22165:2;22154:9;22150:18;22143:48;22208:76;22279:4;22270:6;22208:76;:::i;:::-;22200:84;;22294:70;22360:2;22349:9;22345:18;22336:6;22294:70;:::i;:::-;22411:9;22405:4;22401:20;22396:2;22385:9;22381:18;22374:48;22439:76;22510:4;22501:6;22439:76;:::i;:::-;22431:84;;21803:719;;;;;;;:::o;22528:386::-;22632:3;22660:38;22692:5;22660:38;:::i;:::-;22714:88;22795:6;22790:3;22714:88;:::i;:::-;22707:95;;22811:65;22869:6;22864:3;22857:4;22850:5;22846:16;22811:65;:::i;:::-;22901:6;22896:3;22892:16;22885:23;;22636:278;22528:386;;;;:::o;22920:271::-;23050:3;23072:93;23161:3;23152:6;23072:93;:::i;:::-;23065:100;;23182:3;23175:10;;22920:271;;;;:::o;23197:230::-;23337:34;23333:1;23325:6;23321:14;23314:58;23406:13;23401:2;23393:6;23389:15;23382:38;23197:230;:::o;23433:366::-;23575:3;23596:67;23660:2;23655:3;23596:67;:::i;:::-;23589:74;;23672:93;23761:3;23672:93;:::i;:::-;23790:2;23785:3;23781:12;23774:19;;23433:366;;;:::o;23805:419::-;23971:4;24009:2;23998:9;23994:18;23986:26;;24058:9;24052:4;24048:20;24044:1;24033:9;24029:17;24022:47;24086:131;24212:4;24086:131;:::i;:::-;24078:139;;23805:419;;;:::o;24230:180::-;24278:77;24275:1;24268:88;24375:4;24372:1;24365:15;24399:4;24396:1;24389:15;24416:191;24456:3;24475:20;24493:1;24475:20;:::i;:::-;24470:25;;24509:20;24527:1;24509:20;:::i;:::-;24504:25;;24552:1;24549;24545:9;24538:16;;24573:3;24570:1;24567:10;24564:36;;;24580:18;;:::i;:::-;24564:36;24416:191;;;;:::o;24613:332::-;24734:4;24772:2;24761:9;24757:18;24749:26;;24785:71;24853:1;24842:9;24838:17;24829:6;24785:71;:::i;:::-;24866:72;24934:2;24923:9;24919:18;24910:6;24866:72;:::i;:::-;24613:332;;;;;:::o;24951:96::-;24985:8;25034:5;25029:3;25025:15;25004:36;;24951:96;;;:::o;25053:94::-;25091:7;25120:21;25135:5;25120:21;:::i;:::-;25109:32;;25053:94;;;:::o;25153:153::-;25256:43;25275:23;25292:5;25275:23;:::i;:::-;25256:43;:::i;:::-;25251:3;25244:56;25153:153;;:::o;25312:79::-;25351:7;25380:5;25369:16;;25312:79;;;:::o;25397:157::-;25502:45;25522:24;25540:5;25522:24;:::i;:::-;25502:45;:::i;:::-;25497:3;25490:58;25397:157;;:::o;25560:392::-;25698:3;25713:73;25782:3;25773:6;25713:73;:::i;:::-;25811:1;25806:3;25802:11;25795:18;;25823:75;25894:3;25885:6;25823:75;:::i;:::-;25923:2;25918:3;25914:12;25907:19;;25943:3;25936:10;;25560:392;;;;;:::o;25958:822::-;26191:4;26229:3;26218:9;26214:19;26206:27;;26243:69;26309:1;26298:9;26294:17;26285:6;26243:69;:::i;:::-;26322:72;26390:2;26379:9;26375:18;26366:6;26322:72;:::i;:::-;26441:9;26435:4;26431:20;26426:2;26415:9;26411:18;26404:48;26469:76;26540:4;26531:6;26469:76;:::i;:::-;26461:84;;26555:66;26617:2;26606:9;26602:18;26593:6;26555:66;:::i;:::-;26669:9;26663:4;26659:20;26653:3;26642:9;26638:19;26631:49;26697:76;26768:4;26759:6;26697:76;:::i;:::-;26689:84;;25958:822;;;;;;;;:::o;26786:143::-;26843:5;26874:6;26868:13;26859:22;;26890:33;26917:5;26890:33;:::i;:::-;26786:143;;;;:::o;26935:507::-;27014:6;27022;27071:2;27059:9;27050:7;27046:23;27042:32;27039:119;;;27077:79;;:::i;:::-;27039:119;27197:1;27222:64;27278:7;27269:6;27258:9;27254:22;27222:64;:::i;:::-;27212:74;;27168:128;27335:2;27361:64;27417:7;27408:6;27397:9;27393:22;27361:64;:::i;:::-;27351:74;;27306:129;26935:507;;;;;:::o;27448:233::-;27588:34;27584:1;27576:6;27572:14;27565:58;27657:16;27652:2;27644:6;27640:15;27633:41;27448:233;:::o;27687:366::-;27829:3;27850:67;27914:2;27909:3;27850:67;:::i;:::-;27843:74;;27926:93;28015:3;27926:93;:::i;:::-;28044:2;28039:3;28035:12;28028:19;;27687:366;;;:::o;28059:419::-;28225:4;28263:2;28252:9;28248:18;28240:26;;28312:9;28306:4;28302:20;28298:1;28287:9;28283:17;28276:47;28340:131;28466:4;28340:131;:::i;:::-;28332:139;;28059:419;;;:::o;28484:295::-;28624:34;28620:1;28612:6;28608:14;28601:58;28693:34;28688:2;28680:6;28676:15;28669:59;28762:9;28757:2;28749:6;28745:15;28738:34;28484:295;:::o;28785:366::-;28927:3;28948:67;29012:2;29007:3;28948:67;:::i;:::-;28941:74;;29024:93;29113:3;29024:93;:::i;:::-;29142:2;29137:3;29133:12;29126:19;;28785:366;;;:::o;29157:419::-;29323:4;29361:2;29350:9;29346:18;29338:26;;29410:9;29404:4;29400:20;29396:1;29385:9;29381:17;29374:47;29438:131;29564:4;29438:131;:::i;:::-;29430:139;;29157:419;;;:::o;29604:827::-;29687:3;29724:5;29718:12;29753:36;29779:9;29753:36;:::i;:::-;29805:70;29868:6;29863:3;29805:70;:::i;:::-;29798:77;;29906:1;29895:9;29891:17;29922:1;29917:164;;;;30095:1;30090:335;;;;29884:541;;29917:164;30001:4;29997:9;29986;29982:25;29977:3;29970:38;30061:6;30054:14;30047:22;30041:4;30037:33;30032:3;30028:43;30021:50;;29917:164;;30090:335;30157:37;30188:5;30157:37;:::i;:::-;30216:1;30230:154;30244:6;30241:1;30238:13;30230:154;;;30318:7;30312:14;30308:1;30303:3;30299:11;30292:35;30368:1;30359:7;30355:15;30344:26;;30266:4;30263:1;30259:12;30254:17;;30230:154;;;30413:1;30408:3;30404:11;30397:18;;30097:328;;29884:541;;29691:740;;29604:827;;;;:::o;30437:104::-;30482:7;30511:24;30529:5;30511:24;:::i;:::-;30500:35;;30437:104;;;:::o;30547:142::-;30650:32;30676:5;30650:32;:::i;:::-;30645:3;30638:45;30547:142;;:::o;30695:1058::-;30993:4;31031:3;31020:9;31016:19;31008:27;;31045:69;31111:1;31100:9;31096:17;31087:6;31045:69;:::i;:::-;31161:9;31155:4;31151:20;31146:2;31135:9;31131:18;31124:48;31189:73;31257:4;31248:6;31189:73;:::i;:::-;31181:81;;31309:9;31303:4;31299:20;31294:2;31283:9;31279:18;31272:48;31337:76;31408:4;31399:6;31337:76;:::i;:::-;31329:84;;31423:88;31507:2;31496:9;31492:18;31483:6;31423:88;:::i;:::-;31521:73;31589:3;31578:9;31574:19;31565:6;31521:73;:::i;:::-;31642:9;31636:4;31632:20;31626:3;31615:9;31611:19;31604:49;31670:76;31741:4;31732:6;31670:76;:::i;:::-;31662:84;;30695:1058;;;;;;;;;:::o;31759:224::-;31899:34;31895:1;31887:6;31883:14;31876:58;31968:7;31963:2;31955:6;31951:15;31944:32;31759:224;:::o;31989:366::-;32131:3;32152:67;32216:2;32211:3;32152:67;:::i;:::-;32145:74;;32228:93;32317:3;32228:93;:::i;:::-;32346:2;32341:3;32337:12;32330:19;;31989:366;;;:::o;32361:419::-;32527:4;32565:2;32554:9;32550:18;32542:26;;32614:9;32608:4;32604:20;32600:1;32589:9;32585:17;32578:47;32642:131;32768:4;32642:131;:::i;:::-;32634:139;;32361:419;;;:::o;32786:143::-;32843:5;32874:6;32868:13;32859:22;;32890:33;32917:5;32890:33;:::i;:::-;32786:143;;;;:::o;32935:351::-;33005:6;33054:2;33042:9;33033:7;33029:23;33025:32;33022:119;;;33060:79;;:::i;:::-;33022:119;33180:1;33205:64;33261:7;33252:6;33241:9;33237:22;33205:64;:::i;:::-;33195:74;;33151:128;32935:351;;;;:::o;33292:332::-;33413:4;33451:2;33440:9;33436:18;33428:26;;33464:71;33532:1;33521:9;33517:17;33508:6;33464:71;:::i;:::-;33545:72;33613:2;33602:9;33598:18;33589:6;33545:72;:::i;:::-;33292:332;;;;;:::o;33630:225::-;33770:34;33766:1;33758:6;33754:14;33747:58;33839:8;33834:2;33826:6;33822:15;33815:33;33630:225;:::o;33861:366::-;34003:3;34024:67;34088:2;34083:3;34024:67;:::i;:::-;34017:74;;34100:93;34189:3;34100:93;:::i;:::-;34218:2;34213:3;34209:12;34202:19;;33861:366;;;:::o;34233:419::-;34399:4;34437:2;34426:9;34422:18;34414:26;;34486:9;34480:4;34476:20;34472:1;34461:9;34457:17;34450:47;34514:131;34640:4;34514:131;:::i;:::-;34506:139;;34233:419;;;:::o;34680:327::-;34794:3;34815:88;34896:6;34891:3;34815:88;:::i;:::-;34808:95;;34913:56;34962:6;34957:3;34950:5;34913:56;:::i;:::-;34994:6;34989:3;34985:16;34978:23;;34680:327;;;;;:::o;35013:291::-;35153:3;35175:103;35274:3;35265:6;35257;35175:103;:::i;:::-;35168:110;;35295:3;35288:10;;35013:291;;;;;:::o;35310:176::-;35450:28;35446:1;35438:6;35434:14;35427:52;35310:176;:::o;35492:366::-;35634:3;35655:67;35719:2;35714:3;35655:67;:::i;:::-;35648:74;;35731:93;35820:3;35731:93;:::i;:::-;35849:2;35844:3;35840:12;35833:19;;35492:366;;;:::o;35864:419::-;36030:4;36068:2;36057:9;36053:18;36045:26;;36117:9;36111:4;36107:20;36103:1;36092:9;36088:17;36081:47;36145:131;36271:4;36145:131;:::i;:::-;36137:139;;35864:419;;;:::o;36311:314::-;36407:3;36428:70;36491:6;36486:3;36428:70;:::i;:::-;36421:77;;36508:56;36557:6;36552:3;36545:5;36508:56;:::i;:::-;36589:29;36611:6;36589:29;:::i;:::-;36584:3;36580:39;36573:46;;36311:314;;;;;:::o;36631:739::-;36850:4;36888:3;36877:9;36873:19;36865:27;;36902:69;36968:1;36957:9;36953:17;36944:6;36902:69;:::i;:::-;37018:9;37012:4;37008:20;37003:2;36992:9;36988:18;36981:48;37046:76;37117:4;37108:6;37046:76;:::i;:::-;37038:84;;37132:70;37198:2;37187:9;37183:18;37174:6;37132:70;:::i;:::-;37249:9;37243:4;37239:20;37234:2;37223:9;37219:18;37212:48;37277:86;37358:4;37349:6;37341;37277:86;:::i;:::-;37269:94;;36631:739;;;;;;;;:::o;37376:224::-;37516:34;37512:1;37504:6;37500:14;37493:58;37585:7;37580:2;37572:6;37568:15;37561:32;37376:224;:::o;37606:366::-;37748:3;37769:67;37833:2;37828:3;37769:67;:::i;:::-;37762:74;;37845:93;37934:3;37845:93;:::i;:::-;37963:2;37958:3;37954:12;37947:19;;37606:366;;;:::o;37978:419::-;38144:4;38182:2;38171:9;38167:18;38159:26;;38231:9;38225:4;38221:20;38217:1;38206:9;38202:17;38195:47;38259:131;38385:4;38259:131;:::i;:::-;38251:139;;37978:419;;;:::o;38403:180::-;38451:77;38448:1;38441:88;38548:4;38545:1;38538:15;38572:4;38569:1;38562:15;38589:117;38698:1;38695;38688:12;38712:117;38821:1;38818;38811:12;38835:117;38944:1;38941;38934:12;38958:724;39035:4;39041:6;39097:11;39084:25;39197:1;39191:4;39187:12;39176:8;39160:14;39156:29;39152:48;39132:18;39128:73;39118:168;;39205:79;;:::i;:::-;39118:168;39317:18;39307:8;39303:33;39295:41;;39369:4;39356:18;39346:28;;39397:18;39389:6;39386:30;39383:117;;;39419:79;;:::i;:::-;39383:117;39527:2;39521:4;39517:13;39509:21;;39584:4;39576:6;39572:17;39556:14;39552:38;39546:4;39542:49;39539:136;;;39594:79;;:::i;:::-;39539:136;39048:634;38958:724;;;;;:::o;39688:96::-;39746:6;39774:3;39764:13;;39688:96;;;;:::o;39790:93::-;39827:6;39874:2;39869;39862:5;39858:14;39854:23;39844:33;;39790:93;;;:::o;39889:107::-;39933:8;39983:5;39977:4;39973:16;39952:37;;39889:107;;;;:::o;40002:393::-;40071:6;40121:1;40109:10;40105:18;40144:97;40174:66;40163:9;40144:97;:::i;:::-;40262:39;40292:8;40281:9;40262:39;:::i;:::-;40250:51;;40334:4;40330:9;40323:5;40319:21;40310:30;;40383:4;40373:8;40369:19;40362:5;40359:30;40349:40;;40078:317;;40002:393;;;;;:::o;40401:142::-;40451:9;40484:53;40502:34;40511:24;40529:5;40511:24;:::i;:::-;40502:34;:::i;:::-;40484:53;:::i;:::-;40471:66;;40401:142;;;:::o;40549:75::-;40592:3;40613:5;40606:12;;40549:75;;;:::o;40630:269::-;40740:39;40771:7;40740:39;:::i;:::-;40801:91;40850:41;40874:16;40850:41;:::i;:::-;40842:6;40835:4;40829:11;40801:91;:::i;:::-;40795:4;40788:105;40706:193;40630:269;;;:::o;40905:73::-;40950:3;40905:73;:::o;40984:189::-;41061:32;;:::i;:::-;41102:65;41160:6;41152;41146:4;41102:65;:::i;:::-;41037:136;40984:189;;:::o;41179:186::-;41239:120;41256:3;41249:5;41246:14;41239:120;;;41310:39;41347:1;41340:5;41310:39;:::i;:::-;41283:1;41276:5;41272:13;41263:22;;41239:120;;;41179:186;;:::o;41371:541::-;41471:2;41466:3;41463:11;41460:445;;;41505:37;41536:5;41505:37;:::i;:::-;41588:29;41606:10;41588:29;:::i;:::-;41578:8;41574:44;41771:2;41759:10;41756:18;41753:49;;;41792:8;41777:23;;41753:49;41815:80;41871:22;41889:3;41871:22;:::i;:::-;41861:8;41857:37;41844:11;41815:80;:::i;:::-;41475:430;;41460:445;41371:541;;;:::o;41918:117::-;41972:8;42022:5;42016:4;42012:16;41991:37;;41918:117;;;;:::o;42041:169::-;42085:6;42118:51;42166:1;42162:6;42154:5;42151:1;42147:13;42118:51;:::i;:::-;42114:56;42199:4;42193;42189:15;42179:25;;42092:118;42041:169;;;;:::o;42215:295::-;42291:4;42437:29;42462:3;42456:4;42437:29;:::i;:::-;42429:37;;42499:3;42496:1;42492:11;42486:4;42483:21;42475:29;;42215:295;;;;:::o;42515:1398::-;42637:43;42676:3;42671;42637:43;:::i;:::-;42745:18;42737:6;42734:30;42731:56;;;42767:18;;:::i;:::-;42731:56;42811:38;42843:4;42837:11;42811:38;:::i;:::-;42896:66;42955:6;42947;42941:4;42896:66;:::i;:::-;42989:1;43018:2;43010:6;43007:14;43035:1;43030:631;;;;43705:1;43722:6;43719:84;;;43778:9;43773:3;43769:19;43756:33;43747:42;;43719:84;43829:67;43889:6;43882:5;43829:67;:::i;:::-;43823:4;43816:81;43678:229;43000:907;;43030:631;43082:4;43078:9;43070:6;43066:22;43116:36;43147:4;43116:36;:::i;:::-;43174:1;43188:215;43202:7;43199:1;43196:14;43188:215;;;43288:9;43283:3;43279:19;43266:33;43258:6;43251:49;43339:1;43331:6;43327:14;43317:24;;43386:2;43375:9;43371:18;43358:31;;43225:4;43222:1;43218:12;43213:17;;43188:215;;;43431:6;43422:7;43419:19;43416:186;;;43496:9;43491:3;43487:19;43474:33;43539:48;43581:4;43573:6;43569:17;43558:9;43539:48;:::i;:::-;43531:6;43524:64;43439:163;43416:186;43648:1;43644;43636:6;43632:14;43628:22;43622:4;43615:36;43037:624;;;43000:907;;42612:1301;;;42515:1398;;;:::o;43919:233::-;43958:3;43981:24;43999:5;43981:24;:::i;:::-;43972:33;;44027:66;44020:5;44017:77;44014:103;;44097:18;;:::i;:::-;44014:103;44144:1;44137:5;44133:13;44126:20;;43919:233;;;:::o;44158:225::-;44298:34;44294:1;44286:6;44282:14;44275:58;44367:8;44362:2;44354:6;44350:15;44343:33;44158:225;:::o;44389:366::-;44531:3;44552:67;44616:2;44611:3;44552:67;:::i;:::-;44545:74;;44628:93;44717:3;44628:93;:::i;:::-;44746:2;44741:3;44737:12;44730:19;;44389:366;;;:::o;44761:419::-;44927:4;44965:2;44954:9;44950:18;44942:26;;45014:9;45008:4;45004:20;45000:1;44989:9;44985:17;44978:47;45042:131;45168:4;45042:131;:::i;:::-;45034:139;;44761:419;;;:::o;45186:223::-;45326:34;45322:1;45314:6;45310:14;45303:58;45395:6;45390:2;45382:6;45378:15;45371:31;45186:223;:::o;45415:366::-;45557:3;45578:67;45642:2;45637:3;45578:67;:::i;:::-;45571:74;;45654:93;45743:3;45654:93;:::i;:::-;45772:2;45767:3;45763:12;45756:19;;45415:366;;;:::o;45787:419::-;45953:4;45991:2;45980:9;45976:18;45968:26;;46040:9;46034:4;46030:20;46026:1;46015:9;46011:17;46004:47;46068:131;46194:4;46068:131;:::i;:::-;46060:139;;45787:419;;;:::o;46212:221::-;46352:34;46348:1;46340:6;46336:14;46329:58;46421:4;46416:2;46408:6;46404:15;46397:29;46212:221;:::o;46439:366::-;46581:3;46602:67;46666:2;46661:3;46602:67;:::i;:::-;46595:74;;46678:93;46767:3;46678:93;:::i;:::-;46796:2;46791:3;46787:12;46780:19;;46439:366;;;:::o;46811:419::-;46977:4;47015:2;47004:9;47000:18;46992:26;;47064:9;47058:4;47054:20;47050:1;47039:9;47035:17;47028:47;47092:131;47218:4;47092:131;:::i;:::-;47084:139;;46811:419;;;:::o;47236:138::-;47317:32;47343:5;47317:32;:::i;:::-;47310:5;47307:43;47297:71;;47364:1;47361;47354:12;47297:71;47236:138;:::o;47380:159::-;47445:5;47476:6;47470:13;47461:22;;47492:41;47527:5;47492:41;:::i;:::-;47380:159;;;;:::o;47545:523::-;47632:6;47640;47689:2;47677:9;47668:7;47664:23;47660:32;47657:119;;;47695:79;;:::i;:::-;47657:119;47815:1;47840:72;47904:7;47895:6;47884:9;47880:22;47840:72;:::i;:::-;47830:82;;47786:136;47961:2;47987:64;48043:7;48034:6;48023:9;48019:22;47987:64;:::i;:::-;47977:74;;47932:129;47545:523;;;;;:::o;48074:179::-;48214:31;48210:1;48202:6;48198:14;48191:55;48074:179;:::o;48259:366::-;48401:3;48422:67;48486:2;48481:3;48422:67;:::i;:::-;48415:74;;48498:93;48587:3;48498:93;:::i;:::-;48616:2;48611:3;48607:12;48600:19;;48259:366;;;:::o;48631:419::-;48797:4;48835:2;48824:9;48820:18;48812:26;;48884:9;48878:4;48874:20;48870:1;48859:9;48855:17;48848:47;48912:131;49038:4;48912:131;:::i;:::-;48904:139;;48631:419;;;:::o;49056:222::-;49196:34;49192:1;49184:6;49180:14;49173:58;49265:5;49260:2;49252:6;49248:15;49241:30;49056:222;:::o;49284:366::-;49426:3;49447:67;49511:2;49506:3;49447:67;:::i;:::-;49440:74;;49523:93;49612:3;49523:93;:::i;:::-;49641:2;49636:3;49632:12;49625:19;;49284:366;;;:::o;49656:419::-;49822:4;49860:2;49849:9;49845:18;49837:26;;49909:9;49903:4;49899:20;49895:1;49884:9;49880:17;49873:47;49937:131;50063:4;49937:131;:::i;:::-;49929:139;;49656:419;;;:::o;50081:220::-;50221:34;50217:1;50209:6;50205:14;50198:58;50290:3;50285:2;50277:6;50273:15;50266:28;50081:220;:::o;50307:366::-;50449:3;50470:67;50534:2;50529:3;50470:67;:::i;:::-;50463:74;;50546:93;50635:3;50546:93;:::i;:::-;50664:2;50659:3;50655:12;50648:19;;50307:366;;;:::o;50679:419::-;50845:4;50883:2;50872:9;50868:18;50860:26;;50932:9;50926:4;50922:20;50918:1;50907:9;50903:17;50896:47;50960:131;51086:4;50960:131;:::i;:::-;50952:139;;50679:419;;;:::o;51104:221::-;51244:34;51240:1;51232:6;51228:14;51221:58;51313:4;51308:2;51300:6;51296:15;51289:29;51104:221;:::o;51331:366::-;51473:3;51494:67;51558:2;51553:3;51494:67;:::i;:::-;51487:74;;51570:93;51659:3;51570:93;:::i;:::-;51688:2;51683:3;51679:12;51672:19;;51331:366;;;:::o;51703:419::-;51869:4;51907:2;51896:9;51892:18;51884:26;;51956:9;51950:4;51946:20;51942:1;51931:9;51927:17;51920:47;51984:131;52110:4;51984:131;:::i;:::-;51976:139;;51703:419;;;:::o;52128:182::-;52268:34;52264:1;52256:6;52252:14;52245:58;52128:182;:::o;52316:366::-;52458:3;52479:67;52543:2;52538:3;52479:67;:::i;:::-;52472:74;;52555:93;52644:3;52555:93;:::i;:::-;52673:2;52668:3;52664:12;52657:19;;52316:366;;;:::o;52688:419::-;52854:4;52892:2;52881:9;52877:18;52869:26;;52941:9;52935:4;52931:20;52927:1;52916:9;52912:17;52905:47;52969:131;53095:4;52969:131;:::i;:::-;52961:139;;52688:419;;;:::o;53113:181::-;53253:33;53249:1;53241:6;53237:14;53230:57;53113:181;:::o;53300:366::-;53442:3;53463:67;53527:2;53522:3;53463:67;:::i;:::-;53456:74;;53539:93;53628:3;53539:93;:::i;:::-;53657:2;53652:3;53648:12;53641:19;;53300:366;;;:::o;53672:419::-;53838:4;53876:2;53865:9;53861:18;53853:26;;53925:9;53919:4;53915:20;53911:1;53900:9;53896:17;53889:47;53953:131;54079:4;53953:131;:::i;:::-;53945:139;;53672:419;;;:::o;54097:224::-;54237:34;54233:1;54225:6;54221:14;54214:58;54306:7;54301:2;54293:6;54289:15;54282:32;54097:224;:::o;54327:366::-;54469:3;54490:67;54554:2;54549:3;54490:67;:::i;:::-;54483:74;;54566:93;54655:3;54566:93;:::i;:::-;54684:2;54679:3;54675:12;54668:19;;54327:366;;;:::o;54699:419::-;54865:4;54903:2;54892:9;54888:18;54880:26;;54952:9;54946:4;54942:20;54938:1;54927:9;54923:17;54916:47;54980:131;55106:4;54980:131;:::i;:::-;54972:139;;54699:419;;;:::o;55124:222::-;55264:34;55260:1;55252:6;55248:14;55241:58;55333:5;55328:2;55320:6;55316:15;55309:30;55124:222;:::o;55352:366::-;55494:3;55515:67;55579:2;55574:3;55515:67;:::i;:::-;55508:74;;55591:93;55680:3;55591:93;:::i;:::-;55709:2;55704:3;55700:12;55693:19;;55352:366;;;:::o;55724:419::-;55890:4;55928:2;55917:9;55913:18;55905:26;;55977:9;55971:4;55967:20;55963:1;55952:9;55948:17;55941:47;56005:131;56131:4;56005:131;:::i;:::-;55997:139;;55724:419;;;:::o;56149:225::-;56289:34;56285:1;56277:6;56273:14;56266:58;56358:8;56353:2;56345:6;56341:15;56334:33;56149:225;:::o;56380:366::-;56522:3;56543:67;56607:2;56602:3;56543:67;:::i;:::-;56536:74;;56619:93;56708:3;56619:93;:::i;:::-;56737:2;56732:3;56728:12;56721:19;;56380:366;;;:::o;56752:419::-;56918:4;56956:2;56945:9;56941:18;56933:26;;57005:9;56999:4;56995:20;56991:1;56980:9;56976:17;56969:47;57033:131;57159:4;57033:131;:::i;:::-;57025:139;;56752:419;;;:::o

Swarm Source

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