ETH Price: $2,525.74 (-0.32%)

Token

MATICPAD (MATPAD)
 

Overview

Max Total Supply

1,000,000,000,000,855,040.352579548309964832 MATPAD

Holders

104

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5 MATPAD

Value
$0.00
0xb2955d218058d9b9c92c82f084aa25915956281c
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:
MATICPAD

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-06-20
*/

// SPDX-License-Identifier: MIT

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

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

pragma solidity ^0.8.0;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: @openzeppelin/contracts/utils/cryptography/ECDSA.sol

pragma solidity ^0.8.0;

/**
 * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.
 *
 * These functions can be used to verify that a message was signed by the holder
 * of the private keys of a given address.
 */
library ECDSA {
    /**
     * @dev Returns the address that signed a hashed message (`hash`) with
     * `signature`. This address can then be used for verification purposes.
     *
     * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:
     * this function rejects them by requiring the `s` value to be in the lower
     * half order, and the `v` value to be either 27 or 28.
     *
     * IMPORTANT: `hash` _must_ be the result of a hash operation for the
     * verification to be secure: it is possible to craft signatures that
     * recover to arbitrary addresses for non-hashed data. A safe way to ensure
     * this is by receiving a hash of the original message (which may otherwise
     * be too long), and then calling {toEthSignedMessageHash} on it.
     */
    function recover(bytes32 hash, bytes memory signature)
        internal
        pure
        returns (address)
    {
        // Check the signature length
        if (signature.length != 65) {
            revert("ECDSA: invalid signature length");
        }

        // Divide the signature in r, s and v variables
        bytes32 r;
        bytes32 s;
        uint8 v;

        // ecrecover takes the signature parameters, and the only way to get them
        // currently is to use assembly.
        // solhint-disable-next-line no-inline-assembly
        assembly {
            r := mload(add(signature, 0x20))
            s := mload(add(signature, 0x40))
            v := byte(0, mload(add(signature, 0x60)))
        }

        return recover(hash, v, r, s);
    }

    /**
     * @dev Overload of {ECDSA-recover} that receives the `v`,
     * `r` and `s` signature fields separately.
     */
    function recover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal pure returns (address) {
        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
        // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most
        // signatures from current libraries generate a unique signature with an s-value in the lower half order.
        //
        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
        // these malleable signatures as well.
        require(
            uint256(s) <=
                0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0,
            "ECDSA: invalid signature 's' value"
        );
        require(v == 27 || v == 28, "ECDSA: invalid signature 'v' value");

        // If the signature is valid (and not malleable), return the signer address
        address signer = ecrecover(hash, v, r, s);
        require(signer != address(0), "ECDSA: invalid signature");

        return signer;
    }

    /**
     * @dev Returns an Ethereum Signed Message, created from a `hash`. This
     * produces hash corresponding to the one signed with the
     * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`]
     * JSON-RPC method as part of EIP-191.
     *
     * See {recover}.
     */
    function toEthSignedMessageHash(bytes32 hash)
        internal
        pure
        returns (bytes32)
    {
        // 32 is the length in bytes of hash,
        // enforced by the type signature above
        return
            keccak256(
                abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)
            );
    }

    /**
     * @dev Returns an Ethereum Signed Typed Data, created from a
     * `domainSeparator` and a `structHash`. This produces hash corresponding
     * to the one signed with the
     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`]
     * JSON-RPC method as part of EIP-712.
     *
     * See {recover}.
     */
    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash)
        internal
        pure
        returns (bytes32)
    {
        return
            keccak256(
                abi.encodePacked("\x19\x01", domainSeparator, structHash)
            );
    }
}

// File: contracts/MaticPadEth.sol

pragma solidity ^0.8.0;

contract MATICPAD is IERC20, Context {
    using ECDSA for bytes32;

    struct Cross {
        uint256 nonce;
        mapping(uint256 => uint256) amount;
    }

    bytes32 public constant DOMAIN_TYPEHASH =
        keccak256("EIP712Domain(uint256 chainId,address verifyingContract)");

    bytes32 public domainSeparator =
        keccak256(abi.encode(DOMAIN_TYPEHASH, getChainId(), address(this)));

    mapping(address => Cross) private _transferIn;
    mapping(address => Cross) private _transferOut;

    address private _validator;

    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(address validator) {
        _name = "MATICPAD";
        _symbol = "MATPAD";
        _validator = validator;
    }

    function name() public view virtual returns (string memory) {
        return _name;
    }

    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }

    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function getNonceIn(address user) public view returns (uint256) {
        return _transferIn[user].nonce;
    }

    function getNonceOut(address user) public view returns (uint256) {
        return _transferOut[user].nonce;
    }

    function getAmountIn(address user, uint256 nonce)
        public
        view
        returns (uint256)
    {
        return _transferIn[user].amount[nonce];
    }

    function getAmountOut(address user, uint256 nonce)
        public
        view
        returns (uint256)
    {
        return _transferOut[user].amount[nonce];
    }

    function getValidator() public view returns (address) {
        return _validator;
    }

    function setValidator(address validator) public {
        require(_msgSender() == _validator, "Validator wut?");
        _validator = validator;
    }

    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

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

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function getHash(
        address user,
        uint256 nonce,
        uint256 amount
    ) public view returns (bytes32 hash) {
        hash = keccak256(
            abi.encodePacked(domainSeparator, user, nonce, amount)
        );
    }

    function deposit(uint256 amount) public virtual {
        address user = _msgSender();
        _burn(user, amount);
        uint256 nonce = getNonceOut(user);
        _transferOut[user].amount[nonce] = amount;
        _transferOut[user].nonce++;
    }

    function withdraw(uint256 amount, bytes memory signature) public virtual {
        address user = _msgSender();
        uint256 nonce = getNonceIn(user);
        bytes32 hash = getHash(user, nonce, amount);
        require(
            hash.recover(signature) == getValidator(),
            "Bridge: Invalid transaction."
        );
        _transferIn[user].amount[nonce] = amount;
        _transferIn[user].nonce++;
        _mint(_msgSender(), amount);
    }

    function getChainId() internal view returns (uint256) {
        uint256 chainId;
        assembly {
            chainId := chainid()
        }
        return chainId;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"validator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getHash","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNonceIn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNonceOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getValidator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"validator","type":"address"}],"name":"setValidator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040527f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a79469218620000356200017a60201b60201c565b306040516020016200004a93929190620002ad565b604051602081830303815290604052805190602001206000553480156200007057600080fd5b5060405162002b4638038062002b4683398181016040528101906200009691906200024e565b6040518060400160405280600881526020017f4d4154494350414400000000000000000000000000000000000000000000000081525060079080519060200190620000e392919062000187565b506040518060400160405280600681526020017f4d41545041440000000000000000000000000000000000000000000000000000815250600890805190602001906200013192919062000187565b5080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620003b1565b6000804690508091505090565b828054620001959062000332565b90600052602060002090601f016020900481019282620001b9576000855562000205565b82601f10620001d457805160ff191683800117855562000205565b8280016001018555821562000205579182015b8281111562000204578251825591602001919060010190620001e7565b5b50905062000214919062000218565b5090565b5b808211156200023357600081600090555060010162000219565b5090565b600081519050620002488162000397565b92915050565b6000602082840312156200026157600080fd5b6000620002718482850162000237565b91505092915050565b6200028581620002ea565b82525050565b6200029681620002fe565b82525050565b620002a78162000328565b82525050565b6000606082019050620002c460008301866200028b565b620002d360208301856200029c565b620002e260408301846200027a565b949350505050565b6000620002f78262000308565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200034b57607f821691505b6020821081141562000362576200036162000368565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620003a281620002ea565b8114620003ae57600080fd5b50565b61278580620003c16000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb146103b3578063b02004b2146103e3578063b6b55f2514610413578063ca706bcf1461042f578063dd62ed3e1461045f578063f698da251461048f57610142565b806370a08231146102d557806395d89b4114610305578063a00b716c14610323578063a457c2d714610353578063a85b35811461038357610142565b806318160ddd1161010a57806318160ddd146101eb57806320606b701461020957806323b872dd14610227578063313ce567146102575780633950935114610275578063632db21c146102a557610142565b8063030ba25d1461014757806306fdde0314610163578063095ea7b3146101815780631195e07e146101b15780631327d3d8146101cf575b600080fd5b610161600480360381019061015c9190611a20565b6104ad565b005b61016b610624565b60405161017891906121c3565b60405180910390f35b61019b6004803603810190610196919061196c565b6106b6565b6040516101a89190612148565b60405180910390f35b6101b96106d4565b6040516101c6919061212d565b60405180910390f35b6101e960048036038101906101e491906118b8565b6106fe565b005b6101f36107d9565b60405161020091906123e5565b60405180910390f35b6102116107e3565b60405161021e9190612163565b60405180910390f35b610241600480360381019061023c919061191d565b610807565b60405161024e9190612148565b60405180910390f35b61025f610908565b60405161026c9190612400565b60405180910390f35b61028f600480360381019061028a919061196c565b610911565b60405161029c9190612148565b60405180910390f35b6102bf60048036038101906102ba919061196c565b6109bd565b6040516102cc91906123e5565b60405180910390f35b6102ef60048036038101906102ea91906118b8565b610a1b565b6040516102fc91906123e5565b60405180910390f35b61030d610a64565b60405161031a91906121c3565b60405180910390f35b61033d600480360381019061033891906119a8565b610af6565b60405161034a9190612163565b60405180910390f35b61036d6004803603810190610368919061196c565b610b2f565b60405161037a9190612148565b60405180910390f35b61039d600480360381019061039891906118b8565b610c23565b6040516103aa91906123e5565b60405180910390f35b6103cd60048036038101906103c8919061196c565b610c6f565b6040516103da9190612148565b60405180910390f35b6103fd60048036038101906103f891906118b8565b610c8d565b60405161040a91906123e5565b60405180910390f35b61042d600480360381019061042891906119f7565b610cd9565b005b6104496004803603810190610444919061196c565b610db1565b60405161045691906123e5565b60405180910390f35b610479600480360381019061047491906118e1565b610e0f565b60405161048691906123e5565b60405180910390f35b610497610e96565b6040516104a49190612163565b60405180910390f35b60006104b7610e9c565b905060006104c482610c23565b905060006104d3838387610af6565b90506104dd6106d4565b73ffffffffffffffffffffffffffffffffffffffff166105068583610ea490919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff161461055c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055390612285565b60405180910390fd5b84600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600084815260200190815260200160002081905550600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000815480929190610607906125f5565b919050555061061d610617610e9c565b86610f1e565b5050505050565b606060078054610633906125c3565b80601f016020809104026020016040519081016040528092919081815260200182805461065f906125c3565b80156106ac5780601f10610681576101008083540402835291602001916106ac565b820191906000526020600020905b81548152906001019060200180831161068f57829003601f168201915b5050505050905090565b60006106ca6106c3610e9c565b8484611073565b6001905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661073f610e9c565b73ffffffffffffffffffffffffffffffffffffffff1614610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078c906122c5565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600654905090565b7f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921881565b600061081484848461123e565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061085f610e9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156108df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d690612325565b60405180910390fd5b6108fc856108eb610e9c565b85846108f791906124ee565b611073565b60019150509392505050565b60006012905090565b60006109b361091e610e9c565b84846005600061092c610e9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109ae9190612498565b611073565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600083815260200190815260200160002054905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060088054610a73906125c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9f906125c3565b8015610aec5780601f10610ac157610100808354040283529160200191610aec565b820191906000526020600020905b815481529060010190602001808311610acf57829003601f168201915b5050505050905090565b60008054848484604051602001610b1094939291906120df565b6040516020818303038152906040528051906020012090509392505050565b60008060056000610b3e610e9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf2906123a5565b60405180910390fd5b610c18610c06610e9c565b858584610c1391906124ee565b611073565b600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000610c83610c7c610e9c565b848461123e565b6001905092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000610ce3610e9c565b9050610cef81836114c0565b6000610cfa82610c8d565b905082600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600083815260200190815260200160002081905550600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000815480929190610da7906125f5565b9190505550505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600083815260200190815260200160002054905092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60005481565b600033905090565b60006041825114610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190612245565b60405180910390fd5b60008060006020850151925060408501519150606085015160001a9050610f1386828585611696565b935050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f85906123c5565b60405180910390fd5b610f9a60008383611821565b8060066000828254610fac9190612498565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110029190612498565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161106791906123e5565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da90612385565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114a90612265565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161123191906123e5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a590612365565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561131e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131590612205565b60405180910390fd5b611329838383611821565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a7906122a5565b60405180910390fd5b81816113bc91906124ee565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461144e9190612498565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114b291906123e5565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152790612345565b60405180910390fd5b61153c82600083611821565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba90612225565b60405180910390fd5b81816115cf91906124ee565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816006600082825461162491906124ee565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161168991906123e5565b60405180910390a3505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c11156116fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f5906122e5565b60405180910390fd5b601b8460ff1614806117135750601c8460ff16145b611752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174990612305565b60405180910390fd5b600060018686868660405160008152602001604052604051611777949392919061217e565b6020604051602081039080840390855afa158015611799573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c906121e5565b60405180910390fd5b80915050949350505050565b505050565b60006118396118348461244c565b61241b565b90508281526020810184848401111561185157600080fd5b61185c848285612581565b509392505050565b60008135905061187381612721565b92915050565b600082601f83011261188a57600080fd5b813561189a848260208601611826565b91505092915050565b6000813590506118b281612738565b92915050565b6000602082840312156118ca57600080fd5b60006118d884828501611864565b91505092915050565b600080604083850312156118f457600080fd5b600061190285828601611864565b925050602061191385828601611864565b9150509250929050565b60008060006060848603121561193257600080fd5b600061194086828701611864565b935050602061195186828701611864565b9250506040611962868287016118a3565b9150509250925092565b6000806040838503121561197f57600080fd5b600061198d85828601611864565b925050602061199e858286016118a3565b9150509250929050565b6000806000606084860312156119bd57600080fd5b60006119cb86828701611864565b93505060206119dc868287016118a3565b92505060406119ed868287016118a3565b9150509250925092565b600060208284031215611a0957600080fd5b6000611a17848285016118a3565b91505092915050565b60008060408385031215611a3357600080fd5b6000611a41858286016118a3565b925050602083013567ffffffffffffffff811115611a5e57600080fd5b611a6a85828601611879565b9150509250929050565b611a7d81612522565b82525050565b611a94611a8f82612522565b61263e565b82525050565b611aa381612534565b82525050565b611ab281612540565b82525050565b611ac9611ac482612540565b612650565b82525050565b6000611ada8261247c565b611ae48185612487565b9350611af4818560208601612590565b611afd81612703565b840191505092915050565b6000611b15601883612487565b91507f45434453413a20696e76616c6964207369676e617475726500000000000000006000830152602082019050919050565b6000611b55602383612487565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bbb602283612487565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c21601f83612487565b91507f45434453413a20696e76616c6964207369676e6174757265206c656e677468006000830152602082019050919050565b6000611c61602283612487565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611cc7601c83612487565b91507f4272696467653a20496e76616c6964207472616e73616374696f6e2e000000006000830152602082019050919050565b6000611d07602683612487565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d6d600e83612487565b91507f56616c696461746f72207775743f0000000000000000000000000000000000006000830152602082019050919050565b6000611dad602283612487565b91507f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008301527f75650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e13602283612487565b91507f45434453413a20696e76616c6964207369676e6174757265202776272076616c60008301527f75650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e79602883612487565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611edf602183612487565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611f45602583612487565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611fab602483612487565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612011602583612487565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612077601f83612487565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6120b38161256a565b82525050565b6120ca6120c58261256a565b61266c565b82525050565b6120d981612574565b82525050565b60006120eb8287611ab8565b6020820191506120fb8286611a83565b60148201915061210b82856120b9565b60208201915061211b82846120b9565b60208201915081905095945050505050565b60006020820190506121426000830184611a74565b92915050565b600060208201905061215d6000830184611a9a565b92915050565b60006020820190506121786000830184611aa9565b92915050565b60006080820190506121936000830187611aa9565b6121a060208301866120d0565b6121ad6040830185611aa9565b6121ba6060830184611aa9565b95945050505050565b600060208201905081810360008301526121dd8184611acf565b905092915050565b600060208201905081810360008301526121fe81611b08565b9050919050565b6000602082019050818103600083015261221e81611b48565b9050919050565b6000602082019050818103600083015261223e81611bae565b9050919050565b6000602082019050818103600083015261225e81611c14565b9050919050565b6000602082019050818103600083015261227e81611c54565b9050919050565b6000602082019050818103600083015261229e81611cba565b9050919050565b600060208201905081810360008301526122be81611cfa565b9050919050565b600060208201905081810360008301526122de81611d60565b9050919050565b600060208201905081810360008301526122fe81611da0565b9050919050565b6000602082019050818103600083015261231e81611e06565b9050919050565b6000602082019050818103600083015261233e81611e6c565b9050919050565b6000602082019050818103600083015261235e81611ed2565b9050919050565b6000602082019050818103600083015261237e81611f38565b9050919050565b6000602082019050818103600083015261239e81611f9e565b9050919050565b600060208201905081810360008301526123be81612004565b9050919050565b600060208201905081810360008301526123de8161206a565b9050919050565b60006020820190506123fa60008301846120aa565b92915050565b600060208201905061241560008301846120d0565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612442576124416126d4565b5b8060405250919050565b600067ffffffffffffffff821115612467576124666126d4565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b60006124a38261256a565b91506124ae8361256a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156124e3576124e2612676565b5b828201905092915050565b60006124f98261256a565b91506125048361256a565b92508282101561251757612516612676565b5b828203905092915050565b600061252d8261254a565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156125ae578082015181840152602081019050612593565b838111156125bd576000848401525b50505050565b600060028204905060018216806125db57607f821691505b602082108114156125ef576125ee6126a5565b5b50919050565b60006126008261256a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561263357612632612676565b5b600182019050919050565b60006126498261265a565b9050919050565b6000819050919050565b600061266582612714565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b61272a81612522565b811461273557600080fd5b50565b6127418161256a565b811461274c57600080fd5b5056fea2646970667358221220f83ac47d0b282717b8191dd59aa3750039f9031a25292a1afd881f3f35b7fa3e64736f6c63430008000033000000000000000000000000a1f71176b6f37d55c4d0e55bde02ef5f4c6600ea

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a9059cbb1161007c578063a9059cbb146103b3578063b02004b2146103e3578063b6b55f2514610413578063ca706bcf1461042f578063dd62ed3e1461045f578063f698da251461048f57610142565b806370a08231146102d557806395d89b4114610305578063a00b716c14610323578063a457c2d714610353578063a85b35811461038357610142565b806318160ddd1161010a57806318160ddd146101eb57806320606b701461020957806323b872dd14610227578063313ce567146102575780633950935114610275578063632db21c146102a557610142565b8063030ba25d1461014757806306fdde0314610163578063095ea7b3146101815780631195e07e146101b15780631327d3d8146101cf575b600080fd5b610161600480360381019061015c9190611a20565b6104ad565b005b61016b610624565b60405161017891906121c3565b60405180910390f35b61019b6004803603810190610196919061196c565b6106b6565b6040516101a89190612148565b60405180910390f35b6101b96106d4565b6040516101c6919061212d565b60405180910390f35b6101e960048036038101906101e491906118b8565b6106fe565b005b6101f36107d9565b60405161020091906123e5565b60405180910390f35b6102116107e3565b60405161021e9190612163565b60405180910390f35b610241600480360381019061023c919061191d565b610807565b60405161024e9190612148565b60405180910390f35b61025f610908565b60405161026c9190612400565b60405180910390f35b61028f600480360381019061028a919061196c565b610911565b60405161029c9190612148565b60405180910390f35b6102bf60048036038101906102ba919061196c565b6109bd565b6040516102cc91906123e5565b60405180910390f35b6102ef60048036038101906102ea91906118b8565b610a1b565b6040516102fc91906123e5565b60405180910390f35b61030d610a64565b60405161031a91906121c3565b60405180910390f35b61033d600480360381019061033891906119a8565b610af6565b60405161034a9190612163565b60405180910390f35b61036d6004803603810190610368919061196c565b610b2f565b60405161037a9190612148565b60405180910390f35b61039d600480360381019061039891906118b8565b610c23565b6040516103aa91906123e5565b60405180910390f35b6103cd60048036038101906103c8919061196c565b610c6f565b6040516103da9190612148565b60405180910390f35b6103fd60048036038101906103f891906118b8565b610c8d565b60405161040a91906123e5565b60405180910390f35b61042d600480360381019061042891906119f7565b610cd9565b005b6104496004803603810190610444919061196c565b610db1565b60405161045691906123e5565b60405180910390f35b610479600480360381019061047491906118e1565b610e0f565b60405161048691906123e5565b60405180910390f35b610497610e96565b6040516104a49190612163565b60405180910390f35b60006104b7610e9c565b905060006104c482610c23565b905060006104d3838387610af6565b90506104dd6106d4565b73ffffffffffffffffffffffffffffffffffffffff166105068583610ea490919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff161461055c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055390612285565b60405180910390fd5b84600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600084815260200190815260200160002081905550600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000815480929190610607906125f5565b919050555061061d610617610e9c565b86610f1e565b5050505050565b606060078054610633906125c3565b80601f016020809104026020016040519081016040528092919081815260200182805461065f906125c3565b80156106ac5780601f10610681576101008083540402835291602001916106ac565b820191906000526020600020905b81548152906001019060200180831161068f57829003601f168201915b5050505050905090565b60006106ca6106c3610e9c565b8484611073565b6001905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661073f610e9c565b73ffffffffffffffffffffffffffffffffffffffff1614610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078c906122c5565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600654905090565b7f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921881565b600061081484848461123e565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061085f610e9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156108df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d690612325565b60405180910390fd5b6108fc856108eb610e9c565b85846108f791906124ee565b611073565b60019150509392505050565b60006012905090565b60006109b361091e610e9c565b84846005600061092c610e9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109ae9190612498565b611073565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600083815260200190815260200160002054905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060088054610a73906125c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9f906125c3565b8015610aec5780601f10610ac157610100808354040283529160200191610aec565b820191906000526020600020905b815481529060010190602001808311610acf57829003601f168201915b5050505050905090565b60008054848484604051602001610b1094939291906120df565b6040516020818303038152906040528051906020012090509392505050565b60008060056000610b3e610e9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf2906123a5565b60405180910390fd5b610c18610c06610e9c565b858584610c1391906124ee565b611073565b600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000610c83610c7c610e9c565b848461123e565b6001905092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000610ce3610e9c565b9050610cef81836114c0565b6000610cfa82610c8d565b905082600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600083815260200190815260200160002081905550600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000815480929190610da7906125f5565b9190505550505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600083815260200190815260200160002054905092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60005481565b600033905090565b60006041825114610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190612245565b60405180910390fd5b60008060006020850151925060408501519150606085015160001a9050610f1386828585611696565b935050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f85906123c5565b60405180910390fd5b610f9a60008383611821565b8060066000828254610fac9190612498565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110029190612498565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161106791906123e5565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da90612385565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114a90612265565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161123191906123e5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a590612365565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561131e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131590612205565b60405180910390fd5b611329838383611821565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156113b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a7906122a5565b60405180910390fd5b81816113bc91906124ee565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461144e9190612498565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114b291906123e5565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152790612345565b60405180910390fd5b61153c82600083611821565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba90612225565b60405180910390fd5b81816115cf91906124ee565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816006600082825461162491906124ee565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161168991906123e5565b60405180910390a3505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c11156116fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f5906122e5565b60405180910390fd5b601b8460ff1614806117135750601c8460ff16145b611752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174990612305565b60405180910390fd5b600060018686868660405160008152602001604052604051611777949392919061217e565b6020604051602081039080840390855afa158015611799573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c906121e5565b60405180910390fd5b80915050949350505050565b505050565b60006118396118348461244c565b61241b565b90508281526020810184848401111561185157600080fd5b61185c848285612581565b509392505050565b60008135905061187381612721565b92915050565b600082601f83011261188a57600080fd5b813561189a848260208601611826565b91505092915050565b6000813590506118b281612738565b92915050565b6000602082840312156118ca57600080fd5b60006118d884828501611864565b91505092915050565b600080604083850312156118f457600080fd5b600061190285828601611864565b925050602061191385828601611864565b9150509250929050565b60008060006060848603121561193257600080fd5b600061194086828701611864565b935050602061195186828701611864565b9250506040611962868287016118a3565b9150509250925092565b6000806040838503121561197f57600080fd5b600061198d85828601611864565b925050602061199e858286016118a3565b9150509250929050565b6000806000606084860312156119bd57600080fd5b60006119cb86828701611864565b93505060206119dc868287016118a3565b92505060406119ed868287016118a3565b9150509250925092565b600060208284031215611a0957600080fd5b6000611a17848285016118a3565b91505092915050565b60008060408385031215611a3357600080fd5b6000611a41858286016118a3565b925050602083013567ffffffffffffffff811115611a5e57600080fd5b611a6a85828601611879565b9150509250929050565b611a7d81612522565b82525050565b611a94611a8f82612522565b61263e565b82525050565b611aa381612534565b82525050565b611ab281612540565b82525050565b611ac9611ac482612540565b612650565b82525050565b6000611ada8261247c565b611ae48185612487565b9350611af4818560208601612590565b611afd81612703565b840191505092915050565b6000611b15601883612487565b91507f45434453413a20696e76616c6964207369676e617475726500000000000000006000830152602082019050919050565b6000611b55602383612487565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611bbb602283612487565b91507f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c21601f83612487565b91507f45434453413a20696e76616c6964207369676e6174757265206c656e677468006000830152602082019050919050565b6000611c61602283612487565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611cc7601c83612487565b91507f4272696467653a20496e76616c6964207472616e73616374696f6e2e000000006000830152602082019050919050565b6000611d07602683612487565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611d6d600e83612487565b91507f56616c696461746f72207775743f0000000000000000000000000000000000006000830152602082019050919050565b6000611dad602283612487565b91507f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008301527f75650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e13602283612487565b91507f45434453413a20696e76616c6964207369676e6174757265202776272076616c60008301527f75650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611e79602883612487565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611edf602183612487565b91507f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008301527f73000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611f45602583612487565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611fab602483612487565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612011602583612487565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612077601f83612487565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6120b38161256a565b82525050565b6120ca6120c58261256a565b61266c565b82525050565b6120d981612574565b82525050565b60006120eb8287611ab8565b6020820191506120fb8286611a83565b60148201915061210b82856120b9565b60208201915061211b82846120b9565b60208201915081905095945050505050565b60006020820190506121426000830184611a74565b92915050565b600060208201905061215d6000830184611a9a565b92915050565b60006020820190506121786000830184611aa9565b92915050565b60006080820190506121936000830187611aa9565b6121a060208301866120d0565b6121ad6040830185611aa9565b6121ba6060830184611aa9565b95945050505050565b600060208201905081810360008301526121dd8184611acf565b905092915050565b600060208201905081810360008301526121fe81611b08565b9050919050565b6000602082019050818103600083015261221e81611b48565b9050919050565b6000602082019050818103600083015261223e81611bae565b9050919050565b6000602082019050818103600083015261225e81611c14565b9050919050565b6000602082019050818103600083015261227e81611c54565b9050919050565b6000602082019050818103600083015261229e81611cba565b9050919050565b600060208201905081810360008301526122be81611cfa565b9050919050565b600060208201905081810360008301526122de81611d60565b9050919050565b600060208201905081810360008301526122fe81611da0565b9050919050565b6000602082019050818103600083015261231e81611e06565b9050919050565b6000602082019050818103600083015261233e81611e6c565b9050919050565b6000602082019050818103600083015261235e81611ed2565b9050919050565b6000602082019050818103600083015261237e81611f38565b9050919050565b6000602082019050818103600083015261239e81611f9e565b9050919050565b600060208201905081810360008301526123be81612004565b9050919050565b600060208201905081810360008301526123de8161206a565b9050919050565b60006020820190506123fa60008301846120aa565b92915050565b600060208201905061241560008301846120d0565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612442576124416126d4565b5b8060405250919050565b600067ffffffffffffffff821115612467576124666126d4565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b60006124a38261256a565b91506124ae8361256a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156124e3576124e2612676565b5b828201905092915050565b60006124f98261256a565b91506125048361256a565b92508282101561251757612516612676565b5b828203905092915050565b600061252d8261254a565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156125ae578082015181840152602081019050612593565b838111156125bd576000848401525b50505050565b600060028204905060018216806125db57607f821691505b602082108114156125ef576125ee6126a5565b5b50919050565b60006126008261256a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561263357612632612676565b5b600182019050919050565b60006126498261265a565b9050919050565b6000819050919050565b600061266582612714565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b61272a81612522565b811461273557600080fd5b50565b6127418161256a565b811461274c57600080fd5b5056fea2646970667358221220f83ac47d0b282717b8191dd59aa3750039f9031a25292a1afd881f3f35b7fa3e64736f6c63430008000033

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

000000000000000000000000a1f71176b6f37d55c4d0e55bde02ef5f4c6600ea

-----Decoded View---------------
Arg [0] : validator (address): 0xa1f71176b6F37d55c4d0E55bde02eF5f4C6600ea

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a1f71176b6f37d55c4d0e55bde02ef5f4c6600ea


Deployed Bytecode Sourcemap

8836:7521:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15697:471;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9761:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11648:210;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11165:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11263:153;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10055:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9010:119;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11866:493;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9963:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12367:297;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10809:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10171:177;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9860:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15178:246;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12672:446;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10565:113;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11424:216;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10686:115;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15432:257;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10986:171;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10356:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9138:109;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15697:471;15781:12;15796;:10;:12::i;:::-;15781:27;;15819:13;15835:16;15846:4;15835:10;:16::i;:::-;15819:32;;15862:12;15877:28;15885:4;15891:5;15898:6;15877:7;:28::i;:::-;15862:43;;15965:14;:12;:14::i;:::-;15938:41;;:23;15951:9;15938:4;:12;;:23;;;;:::i;:::-;:41;;;15916:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;16080:6;16046:11;:17;16058:4;16046:17;;;;;;;;;;;;;;;:24;;:31;16071:5;16046:31;;;;;;;;;;;:40;;;;16097:11;:17;16109:4;16097:17;;;;;;;;;;;;;;;:23;;;:25;;;;;;;;;:::i;:::-;;;;;;16133:27;16139:12;:10;:12::i;:::-;16153:6;16133:5;:27::i;:::-;15697:471;;;;;:::o;9761:91::-;9806:13;9839:5;9832:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9761:91;:::o;11648:210::-;11767:4;11789:39;11798:12;:10;:12::i;:::-;11812:7;11821:6;11789:8;:39::i;:::-;11846:4;11839:11;;11648:210;;;;:::o;11165:90::-;11210:7;11237:10;;;;;;;;;;;11230:17;;11165:90;:::o;11263:153::-;11346:10;;;;;;;;;;;11330:26;;:12;:10;:12::i;:::-;:26;;;11322:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;11399:9;11386:10;;:22;;;;;;;;;;;;;;;;;;11263:153;:::o;10055:108::-;10116:7;10143:12;;10136:19;;10055:108;:::o;9010:119::-;9061:68;9010:119;:::o;11866:493::-;12006:4;12023:36;12033:6;12041:9;12052:6;12023:9;:36::i;:::-;12072:24;12099:11;:19;12111:6;12099:19;;;;;;;;;;;;;;;:33;12119:12;:10;:12::i;:::-;12099:33;;;;;;;;;;;;;;;;12072:60;;12185:6;12165:16;:26;;12143:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;12270:57;12279:6;12287:12;:10;:12::i;:::-;12320:6;12301:16;:25;;;;:::i;:::-;12270:8;:57::i;:::-;12347:4;12340:11;;;11866:493;;;;;:::o;9963:84::-;10012:5;10037:2;10030:9;;9963:84;:::o;12367:297::-;12482:4;12504:130;12527:12;:10;:12::i;:::-;12554:7;12613:10;12576:11;:25;12588:12;:10;:12::i;:::-;12576:25;;;;;;;;;;;;;;;:34;12602:7;12576:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12504:8;:130::i;:::-;12652:4;12645:11;;12367:297;;;;:::o;10809:169::-;10907:7;10939:11;:17;10951:4;10939:17;;;;;;;;;;;;;;;:24;;:31;10964:5;10939:31;;;;;;;;;;;;10932:38;;10809:169;;;;:::o;10171:177::-;10290:7;10322:9;:18;10332:7;10322:18;;;;;;;;;;;;;;;;10315:25;;10171:177;;;:::o;9860:95::-;9907:13;9940:7;9933:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9860:95;:::o;15178:246::-;15295:12;15368:15;;15385:4;15391:5;15398:6;15351:54;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15327:89;;;;;;15320:96;;15178:246;;;;;:::o;12672:446::-;12792:4;12814:24;12841:11;:25;12853:12;:10;:12::i;:::-;12841:25;;;;;;;;;;;;;;;:34;12867:7;12841:34;;;;;;;;;;;;;;;;12814:61;;12928:15;12908:16;:35;;12886:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;13019:67;13028:12;:10;:12::i;:::-;13042:7;13070:15;13051:16;:34;;;;:::i;:::-;13019:8;:67::i;:::-;13106:4;13099:11;;;12672:446;;;;:::o;10565:113::-;10620:7;10647:11;:17;10659:4;10647:17;;;;;;;;;;;;;;;:23;;;10640:30;;10565:113;;;:::o;11424:216::-;11546:4;11568:42;11578:12;:10;:12::i;:::-;11592:9;11603:6;11568:9;:42::i;:::-;11628:4;11621:11;;11424:216;;;;:::o;10686:115::-;10742:7;10769:12;:18;10782:4;10769:18;;;;;;;;;;;;;;;:24;;;10762:31;;10686:115;;;:::o;15432:257::-;15491:12;15506;:10;:12::i;:::-;15491:27;;15529:19;15535:4;15541:6;15529:5;:19::i;:::-;15559:13;15575:17;15587:4;15575:11;:17::i;:::-;15559:33;;15638:6;15603:12;:18;15616:4;15603:18;;;;;;;;;;;;;;;:25;;:32;15629:5;15603:32;;;;;;;;;;;:41;;;;15655:12;:18;15668:4;15655:18;;;;;;;;;;;;;;;:24;;;:26;;;;;;;;;:::i;:::-;;;;;;15432:257;;;:::o;10986:171::-;11085:7;11117:12;:18;11130:4;11117:18;;;;;;;;;;;;;;;:25;;:32;11143:5;11117:32;;;;;;;;;;;;11110:39;;10986:171;;;;:::o;10356:201::-;10490:7;10522:11;:18;10534:5;10522:18;;;;;;;;;;;;;;;:27;10541:7;10522:27;;;;;;;;;;;;;;;;10515:34;;10356:201;;;;:::o;9138:109::-;;;;:::o;3567:98::-;3620:7;3647:10;3640:17;;3567:98;:::o;5034:793::-;5139:7;5227:2;5207:9;:16;:22;5203:96;;5246:41;;;;;;;;;;:::i;:::-;;;;;;;;5203:96;5368:9;5388;5408:7;5660:4;5649:9;5645:20;5639:27;5634:32;;5706:4;5695:9;5691:20;5685:27;5680:32;;5760:4;5749:9;5745:20;5739:27;5736:1;5731:36;5726:41;;5797:22;5805:4;5811:1;5814;5817;5797:7;:22::i;:::-;5790:29;;;;;5034:793;;;;:::o;13809:338::-;13912:1;13893:21;;:7;:21;;;;13885:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13963:49;13992:1;13996:7;14005:6;13963:20;:49::i;:::-;14041:6;14025:12;;:22;;;;;;;:::i;:::-;;;;;;;;14080:6;14058:9;:18;14068:7;14058:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;14123:7;14102:37;;14119:1;14102:37;;;14132:6;14102:37;;;;;;:::i;:::-;;;;;;;;13809:338;;:::o;14657:380::-;14810:1;14793:19;;:5;:19;;;;14785:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14891:1;14872:21;;:7;:21;;;;14864:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14975:6;14945:11;:18;14957:5;14945:18;;;;;;;;;;;;;;;:27;14964:7;14945:27;;;;;;;;;;;;;;;:36;;;;15013:7;14997:32;;15006:5;14997:32;;;15022:6;14997:32;;;;;;:::i;:::-;;;;;;;;14657:380;;;:::o;13126:675::-;13284:1;13266:20;;:6;:20;;;;13258:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13368:1;13347:23;;:9;:23;;;;13339:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13423:47;13444:6;13452:9;13463:6;13423:20;:47::i;:::-;13483:21;13507:9;:17;13517:6;13507:17;;;;;;;;;;;;;;;;13483:41;;13574:6;13557:13;:23;;13535:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;13693:6;13677:13;:22;;;;:::i;:::-;13657:9;:17;13667:6;13657:17;;;;;;;;;;;;;;;:42;;;;13734:6;13710:9;:20;13720:9;13710:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;13775:9;13758:35;;13767:6;13758:35;;;13786:6;13758:35;;;;;;:::i;:::-;;;;;;;;13126:675;;;;:::o;14155:494::-;14258:1;14239:21;;:7;:21;;;;14231:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14311:49;14332:7;14349:1;14353:6;14311:20;:49::i;:::-;14373:22;14398:9;:18;14408:7;14398:18;;;;;;;;;;;;;;;;14373:43;;14453:6;14435:14;:24;;14427:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14547:6;14530:14;:23;;;;:::i;:::-;14509:9;:18;14519:7;14509:18;;;;;;;;;;;;;;;:44;;;;14580:6;14564:12;;:22;;;;;;;:::i;:::-;;;;;;;;14630:1;14604:37;;14613:7;14604:37;;;14634:6;14604:37;;;;;;:::i;:::-;;;;;;;;14155:494;;;:::o;5966:1529::-;6094:7;7050:66;7027:1;7019:10;;:97;;6997:181;;;;;;;;;;;;:::i;:::-;;;;;;;;;7202:2;7197:1;:7;;;:18;;;;7213:2;7208:1;:7;;;7197:18;7189:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7352:14;7369:24;7379:4;7385:1;7388;7391;7369:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7352:41;;7430:1;7412:20;;:6;:20;;;;7404:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;7481:6;7474:13;;;5966:1529;;;;;;:::o;15045:125::-;;;;:::o;7:342:1:-;;109:64;124:48;165:6;124:48;:::i;:::-;109:64;:::i;:::-;100:73;;196:6;189:5;182:21;234:4;227:5;223:16;272:3;263:6;258:3;254:16;251:25;248:2;;;289:1;286;279:12;248:2;302:41;336:6;331:3;326;302:41;:::i;:::-;90:259;;;;;;:::o;355:139::-;;439:6;426:20;417:29;;455:33;482:5;455:33;:::i;:::-;407:87;;;;:::o;513:271::-;;617:3;610:4;602:6;598:17;594:27;584:2;;635:1;632;625:12;584:2;675:6;662:20;700:78;774:3;766:6;759:4;751:6;747:17;700:78;:::i;:::-;691:87;;574:210;;;;;:::o;790:139::-;;874:6;861:20;852:29;;890:33;917:5;890:33;:::i;:::-;842:87;;;;:::o;935:262::-;;1043:2;1031:9;1022:7;1018:23;1014:32;1011:2;;;1059:1;1056;1049:12;1011:2;1102:1;1127:53;1172:7;1163:6;1152:9;1148:22;1127:53;:::i;:::-;1117:63;;1073:117;1001:196;;;;:::o;1203:407::-;;;1328:2;1316:9;1307:7;1303:23;1299:32;1296:2;;;1344:1;1341;1334:12;1296:2;1387:1;1412:53;1457:7;1448:6;1437:9;1433:22;1412:53;:::i;:::-;1402:63;;1358:117;1514:2;1540:53;1585:7;1576:6;1565:9;1561:22;1540:53;:::i;:::-;1530:63;;1485:118;1286:324;;;;;:::o;1616:552::-;;;;1758:2;1746:9;1737:7;1733:23;1729:32;1726:2;;;1774:1;1771;1764:12;1726:2;1817:1;1842:53;1887:7;1878:6;1867:9;1863:22;1842:53;:::i;:::-;1832:63;;1788:117;1944:2;1970:53;2015:7;2006:6;1995:9;1991:22;1970:53;:::i;:::-;1960:63;;1915:118;2072:2;2098:53;2143:7;2134:6;2123:9;2119:22;2098:53;:::i;:::-;2088:63;;2043:118;1716:452;;;;;:::o;2174:407::-;;;2299:2;2287:9;2278:7;2274:23;2270:32;2267:2;;;2315:1;2312;2305:12;2267:2;2358:1;2383:53;2428:7;2419:6;2408:9;2404:22;2383:53;:::i;:::-;2373:63;;2329:117;2485:2;2511:53;2556:7;2547:6;2536:9;2532:22;2511:53;:::i;:::-;2501:63;;2456:118;2257:324;;;;;:::o;2587:552::-;;;;2729:2;2717:9;2708:7;2704:23;2700:32;2697:2;;;2745:1;2742;2735:12;2697:2;2788:1;2813:53;2858:7;2849:6;2838:9;2834:22;2813:53;:::i;:::-;2803:63;;2759:117;2915:2;2941:53;2986:7;2977:6;2966:9;2962:22;2941:53;:::i;:::-;2931:63;;2886:118;3043:2;3069:53;3114:7;3105:6;3094:9;3090:22;3069:53;:::i;:::-;3059:63;;3014:118;2687:452;;;;;:::o;3145:262::-;;3253:2;3241:9;3232:7;3228:23;3224:32;3221:2;;;3269:1;3266;3259:12;3221:2;3312:1;3337:53;3382:7;3373:6;3362:9;3358:22;3337:53;:::i;:::-;3327:63;;3283:117;3211:196;;;;:::o;3413:518::-;;;3547:2;3535:9;3526:7;3522:23;3518:32;3515:2;;;3563:1;3560;3553:12;3515:2;3606:1;3631:53;3676:7;3667:6;3656:9;3652:22;3631:53;:::i;:::-;3621:63;;3577:117;3761:2;3750:9;3746:18;3733:32;3792:18;3784:6;3781:30;3778:2;;;3824:1;3821;3814:12;3778:2;3852:62;3906:7;3897:6;3886:9;3882:22;3852:62;:::i;:::-;3842:72;;3704:220;3505:426;;;;;:::o;3937:118::-;4024:24;4042:5;4024:24;:::i;:::-;4019:3;4012:37;4002:53;;:::o;4061:157::-;4166:45;4186:24;4204:5;4186:24;:::i;:::-;4166:45;:::i;:::-;4161:3;4154:58;4144:74;;:::o;4224:109::-;4305:21;4320:5;4305:21;:::i;:::-;4300:3;4293:34;4283:50;;:::o;4339:118::-;4426:24;4444:5;4426:24;:::i;:::-;4421:3;4414:37;4404:53;;:::o;4463:157::-;4568:45;4588:24;4606:5;4588:24;:::i;:::-;4568:45;:::i;:::-;4563:3;4556:58;4546:74;;:::o;4626:364::-;;4742:39;4775:5;4742:39;:::i;:::-;4797:71;4861:6;4856:3;4797:71;:::i;:::-;4790:78;;4877:52;4922:6;4917:3;4910:4;4903:5;4899:16;4877:52;:::i;:::-;4954:29;4976:6;4954:29;:::i;:::-;4949:3;4945:39;4938:46;;4718:272;;;;;:::o;4996:322::-;;5159:67;5223:2;5218:3;5159:67;:::i;:::-;5152:74;;5256:26;5252:1;5247:3;5243:11;5236:47;5309:2;5304:3;5300:12;5293:19;;5142:176;;;:::o;5324:367::-;;5487:67;5551:2;5546:3;5487:67;:::i;:::-;5480:74;;5584:34;5580:1;5575:3;5571:11;5564:55;5650:5;5645:2;5640:3;5636:12;5629:27;5682:2;5677:3;5673:12;5666:19;;5470:221;;;:::o;5697:366::-;;5860:67;5924:2;5919:3;5860:67;:::i;:::-;5853:74;;5957:34;5953:1;5948:3;5944:11;5937:55;6023:4;6018:2;6013:3;6009:12;6002:26;6054:2;6049:3;6045:12;6038:19;;5843:220;;;:::o;6069:329::-;;6232:67;6296:2;6291:3;6232:67;:::i;:::-;6225:74;;6329:33;6325:1;6320:3;6316:11;6309:54;6389:2;6384:3;6380:12;6373:19;;6215:183;;;:::o;6404:366::-;;6567:67;6631:2;6626:3;6567:67;:::i;:::-;6560:74;;6664:34;6660:1;6655:3;6651:11;6644:55;6730:4;6725:2;6720:3;6716:12;6709:26;6761:2;6756:3;6752:12;6745:19;;6550:220;;;:::o;6776:326::-;;6939:67;7003:2;6998:3;6939:67;:::i;:::-;6932:74;;7036:30;7032:1;7027:3;7023:11;7016:51;7093:2;7088:3;7084:12;7077:19;;6922:180;;;:::o;7108:370::-;;7271:67;7335:2;7330:3;7271:67;:::i;:::-;7264:74;;7368:34;7364:1;7359:3;7355:11;7348:55;7434:8;7429:2;7424:3;7420:12;7413:30;7469:2;7464:3;7460:12;7453:19;;7254:224;;;:::o;7484:312::-;;7647:67;7711:2;7706:3;7647:67;:::i;:::-;7640:74;;7744:16;7740:1;7735:3;7731:11;7724:37;7787:2;7782:3;7778:12;7771:19;;7630:166;;;:::o;7802:366::-;;7965:67;8029:2;8024:3;7965:67;:::i;:::-;7958:74;;8062:34;8058:1;8053:3;8049:11;8042:55;8128:4;8123:2;8118:3;8114:12;8107:26;8159:2;8154:3;8150:12;8143:19;;7948:220;;;:::o;8174:366::-;;8337:67;8401:2;8396:3;8337:67;:::i;:::-;8330:74;;8434:34;8430:1;8425:3;8421:11;8414:55;8500:4;8495:2;8490:3;8486:12;8479:26;8531:2;8526:3;8522:12;8515:19;;8320:220;;;:::o;8546:372::-;;8709:67;8773:2;8768:3;8709:67;:::i;:::-;8702:74;;8806:34;8802:1;8797:3;8793:11;8786:55;8872:10;8867:2;8862:3;8858:12;8851:32;8909:2;8904:3;8900:12;8893:19;;8692:226;;;:::o;8924:365::-;;9087:67;9151:2;9146:3;9087:67;:::i;:::-;9080:74;;9184:34;9180:1;9175:3;9171:11;9164:55;9250:3;9245:2;9240:3;9236:12;9229:25;9280:2;9275:3;9271:12;9264:19;;9070:219;;;:::o;9295:369::-;;9458:67;9522:2;9517:3;9458:67;:::i;:::-;9451:74;;9555:34;9551:1;9546:3;9542:11;9535:55;9621:7;9616:2;9611:3;9607:12;9600:29;9655:2;9650:3;9646:12;9639:19;;9441:223;;;:::o;9670:368::-;;9833:67;9897:2;9892:3;9833:67;:::i;:::-;9826:74;;9930:34;9926:1;9921:3;9917:11;9910:55;9996:6;9991:2;9986:3;9982:12;9975:28;10029:2;10024:3;10020:12;10013:19;;9816:222;;;:::o;10044:369::-;;10207:67;10271:2;10266:3;10207:67;:::i;:::-;10200:74;;10304:34;10300:1;10295:3;10291:11;10284:55;10370:7;10365:2;10360:3;10356:12;10349:29;10404:2;10399:3;10395:12;10388:19;;10190:223;;;:::o;10419:329::-;;10582:67;10646:2;10641:3;10582:67;:::i;:::-;10575:74;;10679:33;10675:1;10670:3;10666:11;10659:54;10739:2;10734:3;10730:12;10723:19;;10565:183;;;:::o;10754:118::-;10841:24;10859:5;10841:24;:::i;:::-;10836:3;10829:37;10819:53;;:::o;10878:157::-;10983:45;11003:24;11021:5;11003:24;:::i;:::-;10983:45;:::i;:::-;10978:3;10971:58;10961:74;;:::o;11041:112::-;11124:22;11140:5;11124:22;:::i;:::-;11119:3;11112:35;11102:51;;:::o;11159:679::-;;11370:75;11441:3;11432:6;11370:75;:::i;:::-;11470:2;11465:3;11461:12;11454:19;;11483:75;11554:3;11545:6;11483:75;:::i;:::-;11583:2;11578:3;11574:12;11567:19;;11596:75;11667:3;11658:6;11596:75;:::i;:::-;11696:2;11691:3;11687:12;11680:19;;11709:75;11780:3;11771:6;11709:75;:::i;:::-;11809:2;11804:3;11800:12;11793:19;;11829:3;11822:10;;11359:479;;;;;;;:::o;11844:222::-;;11975:2;11964:9;11960:18;11952:26;;11988:71;12056:1;12045:9;12041:17;12032:6;11988:71;:::i;:::-;11942:124;;;;:::o;12072:210::-;;12197:2;12186:9;12182:18;12174:26;;12210:65;12272:1;12261:9;12257:17;12248:6;12210:65;:::i;:::-;12164:118;;;;:::o;12288:222::-;;12419:2;12408:9;12404:18;12396:26;;12432:71;12500:1;12489:9;12485:17;12476:6;12432:71;:::i;:::-;12386:124;;;;:::o;12516:545::-;;12727:3;12716:9;12712:19;12704:27;;12741:71;12809:1;12798:9;12794:17;12785:6;12741:71;:::i;:::-;12822:68;12886:2;12875:9;12871:18;12862:6;12822:68;:::i;:::-;12900:72;12968:2;12957:9;12953:18;12944:6;12900:72;:::i;:::-;12982;13050:2;13039:9;13035:18;13026:6;12982:72;:::i;:::-;12694:367;;;;;;;:::o;13067:313::-;;13218:2;13207:9;13203:18;13195:26;;13267:9;13261:4;13257:20;13253:1;13242:9;13238:17;13231:47;13295:78;13368:4;13359:6;13295:78;:::i;:::-;13287:86;;13185:195;;;;:::o;13386:419::-;;13590:2;13579:9;13575:18;13567:26;;13639:9;13633:4;13629:20;13625:1;13614:9;13610:17;13603:47;13667:131;13793:4;13667:131;:::i;:::-;13659:139;;13557:248;;;:::o;13811:419::-;;14015:2;14004:9;14000:18;13992:26;;14064:9;14058:4;14054:20;14050:1;14039:9;14035:17;14028:47;14092:131;14218:4;14092:131;:::i;:::-;14084:139;;13982:248;;;:::o;14236:419::-;;14440:2;14429:9;14425:18;14417:26;;14489:9;14483:4;14479:20;14475:1;14464:9;14460:17;14453:47;14517:131;14643:4;14517:131;:::i;:::-;14509:139;;14407:248;;;:::o;14661:419::-;;14865:2;14854:9;14850:18;14842:26;;14914:9;14908:4;14904:20;14900:1;14889:9;14885:17;14878:47;14942:131;15068:4;14942:131;:::i;:::-;14934:139;;14832:248;;;:::o;15086:419::-;;15290:2;15279:9;15275:18;15267:26;;15339:9;15333:4;15329:20;15325:1;15314:9;15310:17;15303:47;15367:131;15493:4;15367:131;:::i;:::-;15359:139;;15257:248;;;:::o;15511:419::-;;15715:2;15704:9;15700:18;15692:26;;15764:9;15758:4;15754:20;15750:1;15739:9;15735:17;15728:47;15792:131;15918:4;15792:131;:::i;:::-;15784:139;;15682:248;;;:::o;15936:419::-;;16140:2;16129:9;16125:18;16117:26;;16189:9;16183:4;16179:20;16175:1;16164:9;16160:17;16153:47;16217:131;16343:4;16217:131;:::i;:::-;16209:139;;16107:248;;;:::o;16361:419::-;;16565:2;16554:9;16550:18;16542:26;;16614:9;16608:4;16604:20;16600:1;16589:9;16585:17;16578:47;16642:131;16768:4;16642:131;:::i;:::-;16634:139;;16532:248;;;:::o;16786:419::-;;16990:2;16979:9;16975:18;16967:26;;17039:9;17033:4;17029:20;17025:1;17014:9;17010:17;17003:47;17067:131;17193:4;17067:131;:::i;:::-;17059:139;;16957:248;;;:::o;17211:419::-;;17415:2;17404:9;17400:18;17392:26;;17464:9;17458:4;17454:20;17450:1;17439:9;17435:17;17428:47;17492:131;17618:4;17492:131;:::i;:::-;17484:139;;17382:248;;;:::o;17636:419::-;;17840:2;17829:9;17825:18;17817:26;;17889:9;17883:4;17879:20;17875:1;17864:9;17860:17;17853:47;17917:131;18043:4;17917:131;:::i;:::-;17909:139;;17807:248;;;:::o;18061:419::-;;18265:2;18254:9;18250:18;18242:26;;18314:9;18308:4;18304:20;18300:1;18289:9;18285:17;18278:47;18342:131;18468:4;18342:131;:::i;:::-;18334:139;;18232:248;;;:::o;18486:419::-;;18690:2;18679:9;18675:18;18667:26;;18739:9;18733:4;18729:20;18725:1;18714:9;18710:17;18703:47;18767:131;18893:4;18767:131;:::i;:::-;18759:139;;18657:248;;;:::o;18911:419::-;;19115:2;19104:9;19100:18;19092:26;;19164:9;19158:4;19154:20;19150:1;19139:9;19135:17;19128:47;19192:131;19318:4;19192:131;:::i;:::-;19184:139;;19082:248;;;:::o;19336:419::-;;19540:2;19529:9;19525:18;19517:26;;19589:9;19583:4;19579:20;19575:1;19564:9;19560:17;19553:47;19617:131;19743:4;19617:131;:::i;:::-;19609:139;;19507:248;;;:::o;19761:419::-;;19965:2;19954:9;19950:18;19942:26;;20014:9;20008:4;20004:20;20000:1;19989:9;19985:17;19978:47;20042:131;20168:4;20042:131;:::i;:::-;20034:139;;19932:248;;;:::o;20186:222::-;;20317:2;20306:9;20302:18;20294:26;;20330:71;20398:1;20387:9;20383:17;20374:6;20330:71;:::i;:::-;20284:124;;;;:::o;20414:214::-;;20541:2;20530:9;20526:18;20518:26;;20554:67;20618:1;20607:9;20603:17;20594:6;20554:67;:::i;:::-;20508:120;;;;:::o;20634:283::-;;20700:2;20694:9;20684:19;;20742:4;20734:6;20730:17;20849:6;20837:10;20834:22;20813:18;20801:10;20798:34;20795:62;20792:2;;;20860:18;;:::i;:::-;20792:2;20900:10;20896:2;20889:22;20674:243;;;;:::o;20923:331::-;;21074:18;21066:6;21063:30;21060:2;;;21096:18;;:::i;:::-;21060:2;21181:4;21177:9;21170:4;21162:6;21158:17;21154:33;21146:41;;21242:4;21236;21232:15;21224:23;;20989:265;;;:::o;21260:99::-;;21346:5;21340:12;21330:22;;21319:40;;;:::o;21365:169::-;;21483:6;21478:3;21471:19;21523:4;21518:3;21514:14;21499:29;;21461:73;;;;:::o;21540:305::-;;21599:20;21617:1;21599:20;:::i;:::-;21594:25;;21633:20;21651:1;21633:20;:::i;:::-;21628:25;;21787:1;21719:66;21715:74;21712:1;21709:81;21706:2;;;21793:18;;:::i;:::-;21706:2;21837:1;21834;21830:9;21823:16;;21584:261;;;;:::o;21851:191::-;;21911:20;21929:1;21911:20;:::i;:::-;21906:25;;21945:20;21963:1;21945:20;:::i;:::-;21940:25;;21984:1;21981;21978:8;21975:2;;;21989:18;;:::i;:::-;21975:2;22034:1;22031;22027:9;22019:17;;21896:146;;;;:::o;22048:96::-;;22114:24;22132:5;22114:24;:::i;:::-;22103:35;;22093:51;;;:::o;22150:90::-;;22227:5;22220:13;22213:21;22202:32;;22192:48;;;:::o;22246:77::-;;22312:5;22301:16;;22291:32;;;:::o;22329:126::-;;22406:42;22399:5;22395:54;22384:65;;22374:81;;;:::o;22461:77::-;;22527:5;22516:16;;22506:32;;;:::o;22544:86::-;;22619:4;22612:5;22608:16;22597:27;;22587:43;;;:::o;22636:154::-;22720:6;22715:3;22710;22697:30;22782:1;22773:6;22768:3;22764:16;22757:27;22687:103;;;:::o;22796:307::-;22864:1;22874:113;22888:6;22885:1;22882:13;22874:113;;;22973:1;22968:3;22964:11;22958:18;22954:1;22949:3;22945:11;22938:39;22910:2;22907:1;22903:10;22898:15;;22874:113;;;23005:6;23002:1;22999:13;22996:2;;;23085:1;23076:6;23071:3;23067:16;23060:27;22996:2;22845:258;;;;:::o;23109:320::-;;23190:1;23184:4;23180:12;23170:22;;23237:1;23231:4;23227:12;23258:18;23248:2;;23314:4;23306:6;23302:17;23292:27;;23248:2;23376;23368:6;23365:14;23345:18;23342:38;23339:2;;;23395:18;;:::i;:::-;23339:2;23160:269;;;;:::o;23435:233::-;;23497:24;23515:5;23497:24;:::i;:::-;23488:33;;23543:66;23536:5;23533:77;23530:2;;;23613:18;;:::i;:::-;23530:2;23660:1;23653:5;23649:13;23642:20;;23478:190;;;:::o;23674:100::-;;23742:26;23762:5;23742:26;:::i;:::-;23731:37;;23721:53;;;:::o;23780:79::-;;23848:5;23837:16;;23827:32;;;:::o;23865:94::-;;23933:20;23947:5;23933:20;:::i;:::-;23922:31;;23912:47;;;:::o;23965:79::-;;24033:5;24022:16;;24012:32;;;:::o;24050:180::-;24098:77;24095:1;24088:88;24195:4;24192:1;24185:15;24219:4;24216:1;24209:15;24236:180;24284:77;24281:1;24274:88;24381:4;24378:1;24371:15;24405:4;24402:1;24395:15;24422:180;24470:77;24467:1;24460:88;24567:4;24564:1;24557:15;24591:4;24588:1;24581:15;24608:102;;24700:2;24696:7;24691:2;24684:5;24680:14;24676:28;24666:38;;24656:54;;;:::o;24716:94::-;;24797:5;24793:2;24789:14;24768:35;;24758:52;;;:::o;24816:122::-;24889:24;24907:5;24889:24;:::i;:::-;24882:5;24879:35;24869:2;;24928:1;24925;24918:12;24869:2;24859:79;:::o;24944:122::-;25017:24;25035:5;25017:24;:::i;:::-;25010:5;25007:35;24997:2;;25056:1;25053;25046:12;24997:2;24987:79;:::o

Swarm Source

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