ETH Price: $2,612.62 (+1.55%)

Token

⬛🟩⬛ (⬛🟩⬛)
 

Overview

Max Total Supply

64 ⬛🟩⬛

Holders

59

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 ⬛🟩⬛
0x3924b7681c6110fcd3628164388c3307f79d1059
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:
_0_

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 10000000 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2022-09-09
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

/// @notice Modern, minimalist, and gas efficient ERC-721 implementation.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)
abstract contract ERC721 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

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

    event Approval(address indexed owner, address indexed spender, uint256 indexed id);

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /*//////////////////////////////////////////////////////////////
                         METADATA STORAGE/LOGIC
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    function tokenURI(uint256 id) external view virtual returns (string memory);

    /*//////////////////////////////////////////////////////////////
                      ERC721 BALANCE/OWNER STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(uint256 => address) internal _ownerOf;

    mapping(address => uint256) internal _balanceOf;

    function ownerOf(uint256 id) public view virtual returns (address owner) {
        require((owner = _ownerOf[id]) != address(0), "NOT_MINTED");
    }

    function balanceOf(address owner) public view virtual returns (uint256) {
        require(owner != address(0), "ZERO_ADDRESS");

        return _balanceOf[owner];
    }

    /*//////////////////////////////////////////////////////////////
                         ERC721 APPROVAL STORAGE
    //////////////////////////////////////////////////////////////*/

    mapping(uint256 => address) public getApproved;

    mapping(address => mapping(address => bool)) public isApprovedForAll;

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(string memory _name, string memory _symbol) {
        name = _name;
        symbol = _symbol;
    }

    /*//////////////////////////////////////////////////////////////
                              ERC721 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 id) public virtual {
        address owner = _ownerOf[id];

        require(msg.sender == owner || isApprovedForAll[owner][msg.sender], "NOT_AUTHORIZED");

        getApproved[id] = spender;

        emit Approval(owner, spender, id);
    }

    function setApprovalForAll(address operator, bool approved) public virtual {
        isApprovedForAll[msg.sender][operator] = approved;

        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function transferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        require(from == _ownerOf[id], "WRONG_FROM");

        require(to != address(0), "INVALID_RECIPIENT");

        require(
            msg.sender == from || isApprovedForAll[from][msg.sender] || msg.sender == getApproved[id],
            "NOT_AUTHORIZED"
        );

        // Underflow of the sender's balance is impossible because we check for
        // ownership above and the recipient's balance can't realistically overflow.
        unchecked {
            _balanceOf[from]--;

            _balanceOf[to]++;
        }

        _ownerOf[id] = to;

        delete getApproved[id];

        emit Transfer(from, to, id);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        transferFrom(from, to, id);

        if (to.code.length != 0)
            require(
                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, "") ==
                    ERC721TokenReceiver.onERC721Received.selector,
                "UNSAFE_RECIPIENT"
            );
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes calldata data
    ) public virtual {
        transferFrom(from, to, id);

        if (to.code.length != 0)
            require(
                ERC721TokenReceiver(to).onERC721Received(msg.sender, from, id, data) ==
                    ERC721TokenReceiver.onERC721Received.selector,
                "UNSAFE_RECIPIENT"
            );
    }

    /*//////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721
            interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 id) internal virtual {
        require(to != address(0), "INVALID_RECIPIENT");

        require(_ownerOf[id] == address(0), "ALREADY_MINTED");

        // Counter overflow is incredibly unrealistic.
        unchecked {
            _balanceOf[to]++;
        }

        _ownerOf[id] = to;

        emit Transfer(address(0), to, id);
    }

    function _burn(uint256 id) internal virtual {
        address owner = _ownerOf[id];

        require(owner != address(0), "NOT_MINTED");

        // Ownership check above ensures no underflow.
        unchecked {
            _balanceOf[owner]--;
        }

        delete _ownerOf[id];

        delete getApproved[id];

        emit Transfer(owner, address(0), id);
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL SAFE MINT LOGIC
    //////////////////////////////////////////////////////////////*/

    function _safeMint(address to, uint256 id) internal virtual {
        _mint(to, id);

        if (to.code.length != 0)
            require(
                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, "") ==
                    ERC721TokenReceiver.onERC721Received.selector,
                "UNSAFE_RECIPIENT"
            );
    }

    function _safeMint(
        address to,
        uint256 id,
        bytes memory data
    ) internal virtual {
        _mint(to, id);

        if (to.code.length != 0)
            require(
                ERC721TokenReceiver(to).onERC721Received(msg.sender, address(0), id, data) ==
                    ERC721TokenReceiver.onERC721Received.selector,
                "UNSAFE_RECIPIENT"
            );
    }
}

/// @notice A generic interface for a contract which properly accepts ERC721 tokens.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC721.sol)
abstract contract ERC721TokenReceiver {
    function onERC721Received(
        address,
        address,
        uint256,
        bytes calldata
    ) external virtual returns (bytes4) {
        return ERC721TokenReceiver.onERC721Received.selector;
    }
}

/// @title Base64
/// @notice Provides a function for encoding some bytes in base64
/// @author Brecht Devos <[email protected]>
library Base64 {
    bytes internal constant TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

    /// @notice Encodes some bytes to the base64 representation
    function encode(bytes memory data) internal pure returns (string memory) {
        uint256 len = data.length;
        if (len == 0) return "";

        // multiply by 4/3 rounded up
        uint256 encodedLen = 4 * ((len + 2) / 3);

        // Add some extra buffer at the end
        bytes memory result = new bytes(encodedLen + 32);

        bytes memory table = TABLE;

        assembly {
            let tablePtr := add(table, 1)
            let resultPtr := add(result, 32)

            for {
                let i := 0
            } lt(i, len) {

            } {
                i := add(i, 3)
                let input := and(mload(add(data, i)), 0xffffff)

                let out := mload(add(tablePtr, and(shr(18, input), 0x3F)))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(shr(12, input), 0x3F))), 0xFF))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(shr(6, input), 0x3F))), 0xFF))
                out := shl(8, out)
                out := add(out, and(mload(add(tablePtr, and(input, 0x3F))), 0xFF))
                out := shl(224, out)

                mstore(resultPtr, out)

                resultPtr := add(resultPtr, 4)
            }

            switch mod(len, 3)
            case 1 {
                mstore(sub(resultPtr, 2), shl(240, 0x3d3d))
            }
            case 2 {
                mstore(sub(resultPtr, 1), shl(248, 0x3d))
            }

            mstore(result, encodedLen)
        }

        return string(result);
    }
}

interface IENS {
    function resolver(bytes32 node) external view returns (IResolver);
}

interface IResolver {
    function addr(bytes32 node) external view returns (address);
}

interface IENSReverseRegistrar {
    function setName(string calldata name) external;
}

/// @author 0age
contract _0_ is ERC721 {
    uint256 public constant totalSupply = 64;

    IENS private constant ens = IENS(
        0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
    );

    bytes32 private immutable authorNode;

    constructor() ERC721(unicode"⬛🟩⬛", unicode"⬛🟩⬛") {
        authorNode = keccak256(abi.encodePacked(
            keccak256(abi.encodePacked(
                bytes32(0), 
                keccak256(abi.encodePacked("eth"))
            )),
            keccak256(abi.encodePacked("0age"))
        ));

        IENSReverseRegistrar _ensReverseRegistrar = IENSReverseRegistrar(
            0x084b1c3C81545d370f3634392De611CaaBFf8148
        );

        _ensReverseRegistrar.setName(unicode"⬛🟩⬛.eth");
    }

    function author() public view returns (address account) {
        IResolver resolver = ens.resolver(authorNode);
        account = resolver.addr(authorNode);
    }

    function mint(uint256[] calldata ids) external returns (bool) {
        address minter = author();

        require(msg.sender == minter, "ONLY_AUTHOR");

        uint256 totalIds = ids.length;

        for (uint256 i = 0; i < totalIds; ++i) {
            uint256 id = ids[i];

            require(id != 0 && id <= totalSupply, "ID_OUT_OF_RANGE");
            
            _safeMint(minter, id);
        }

        return true;
    }

    function imageLocation() public pure returns (string memory) {
        return "ipfs://QmcgEnxwPbfJHXspkZpEdNXRmKKaA8D57xxWZBTp9Hyoc1/";
    }

    function tokenURI(uint256 id) external view override returns (string memory) {
        require(_ownerOf[id] != address(0), "TOKEN_DOES_NOT_EXIST");
        
        string memory idString = _toString(id);
        
        string memory json = Base64.encode(
            bytes(
                string(
                    abi.encodePacked('{',
                        unicode'"name": "⬛🟩⬛ #', idString, '", ',
                        unicode'"description": "⬛🟩⬛ #', idString, '", ',
                        '"image": "', string(abi.encodePacked(
                            imageLocation(),
                            idString,
                            ".png"
                        )), '"',
                    '}')
                )
            )
        );

        return string(abi.encodePacked('data:application/json;base64,', json));
    }

    function contractURI() external pure returns (string memory) {
        string memory json = Base64.encode(
            bytes(
                string(
                    abi.encodePacked('{',
                        unicode'"name": "⬛🟩⬛", ',
                        unicode'"description": "⬛🟩⬛"',
                    '}')
                )
            )
        );

        return string(abi.encodePacked('data:application/json;base64,', json));
    }

    function _toString(uint256 value) internal pure returns (string memory) {
        uint256 digits = value > 9 ? 2 : 1;
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }
}

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":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"author","outputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"imageLocation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"}],"name":"mint","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":"uint256","name":"id","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tokenURI","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":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b50604080518082018252600a80825269e2ac9bf09f9fa9e2ac9b60b01b602080840182905284518086019095529184529083015290600062000054838262000258565b50600162000063828262000258565b5050604051620cae8d60eb1b60208201526000915060230160405160208183030381529060405280519060200120604051602001620000ac929190918252602082015260400190565b60405160208183030381529060405280519060200120604051602001620000dd90633061676560e01b815260040190565b604051602081830303815290604052805190602001206040516020016200010e929190918252602082015260400190565b60408051808303601f1901815290829052805160209182012060805263c47f002760e01b82526004820152600e60248201526d1c55937e13f3f53c559365ccae8d60931b604482015273084b1c3c81545d370f3634392de611caabff814890819063c47f002790606401600060405180830381600087803b1580156200019357600080fd5b505af1158015620001a8573d6000803e3d6000fd5b505050505062000324565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001de57607f821691505b602082108103620001ff57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200025357600081815260208120601f850160051c810160208610156200022e5750805b601f850160051c820191505b818110156200024f578281556001016200023a565b5050505b505050565b81516001600160401b03811115620002745762000274620001b3565b6200028c81620002858454620001c9565b8462000205565b602080601f831160018114620002c45760008415620002ab5750858301515b600019600386901b1c1916600185901b1785556200024f565b600085815260208120601f198616915b82811015620002f557888601518255948401946001909101908401620002d4565b5085821015620003145787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051611fc36200034760003960008181610bd90152610c850152611fc36000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806395d89b41116100b2578063b88d4fde11610081578063e8a3d48511610066578063e8a3d4851461029b578063e985e9c5146102a3578063f8e93ef9146102d157600080fd5b8063b88d4fde14610275578063c87b56dd1461028857600080fd5b806395d89b411461024a578063a22cb46514610252578063a6c3e6b914610265578063aed905551461026d57600080fd5b806318160ddd1161010957806342842e0e116100ee57806342842e0e146102115780636352211e1461022457806370a082311461023757600080fd5b806318160ddd146101e857806323b872dd146101fe57600080fd5b806301ffc9a71461013b57806306fdde0314610163578063081812fc14610178578063095ea7b3146101d3575b600080fd5b61014e6101493660046117de565b6102e4565b60405190151581526020015b60405180910390f35b61016b6103c9565b60405161015a919061181f565b6101ae610186366004611870565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b6101e66101e13660046118ab565b610457565b005b6101f0604081565b60405190815260200161015a565b6101e661020c3660046118d7565b6105a6565b6101e661021f3660046118d7565b61086d565b6101ae610232366004611870565b6109d4565b6101f0610245366004611918565b610a65565b61016b610b0d565b6101e6610260366004611935565b610b1a565b6101ae610bb1565b61016b610d14565b6101e6610283366004611973565b610d34565b61016b610296366004611870565b610e8b565b61016b610fc3565b61014e6102b1366004611a12565b600560209081526000928352604080842090915290825290205460ff1681565b61014e6102df366004611a40565b611097565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061037757507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103c357507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600080546103d690611ab5565b80601f016020809104026020016040519081016040528092919081815260200182805461040290611ab5565b801561044f5780601f106104245761010080835404028352916020019161044f565b820191906000526020600020905b81548152906001019060200180831161043257829003601f168201915b505050505081565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104ba575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b610525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff848116911614610636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d00000000000000000000000000000000000000000000604482015260640161051c565b73ffffffffffffffffffffffffffffffffffffffff82166106b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e54000000000000000000000000000000604482015260640161051c565b3373ffffffffffffffffffffffffffffffffffffffff84161480610707575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b80610735575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b61079b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161051c565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526002825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108788383836105a6565b73ffffffffffffffffffffffffffffffffffffffff82163b156109cf576040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109469190611b08565b7fffffffff0000000000000000000000000000000000000000000000000000000016146109cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161051c565b505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610a60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e54454400000000000000000000000000000000000000000000604482015260640161051c565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610ae4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015260640161051c565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b600180546103d690611ab5565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6040517f0178b8bf0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015260009081906e0c2e074ec69a0dfb2997ba6c7d2e1e90630178b8bf90602401602060405180830381865afa158015610c39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5d9190611b25565b6040517f3b3b57de0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015290915073ffffffffffffffffffffffffffffffffffffffff821690633b3b57de90602401602060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0e9190611b25565b91505090565b6060604051806060016040528060368152602001611f5860369139905090565b610d3f8585856105a6565b73ffffffffffffffffffffffffffffffffffffffff84163b15610e84576040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063150b7a0290610db89033908a90899089908990600401611b42565b6020604051808303816000875af1158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfb9190611b08565b7fffffffff000000000000000000000000000000000000000000000000000000001614610e84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161051c565b5050505050565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16610f19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f544f4b454e5f444f45535f4e4f545f4558495354000000000000000000000000604482015260640161051c565b6000610f24836111eb565b90506000610f988283610f35610d14565b85604051602001610f47929190611bc1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610f84939291602001611c18565b6040516020818303038152906040526112d5565b905080604051602001610fab9190611d79565b60405160208183030381529060405292505050919050565b6060600061106f604051602001610f84907f7b0000000000000000000000000000000000000000000000000000000000000081527f226e616d65223a2022e2ac9bf09f9fa9e2ac9b222c200000000000000000000060018201527f226465736372697074696f6e223a2022e2ac9bf09f9fa9e2ac9b22000000000060178201527f7d00000000000000000000000000000000000000000000000000000000000000603282015260330190565b9050806040516020016110829190611d79565b60405160208183030381529060405291505090565b6000806110a2610bb1565b90503373ffffffffffffffffffffffffffffffffffffffff821614611123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f4e4c595f415554484f52000000000000000000000000000000000000000000604482015260640161051c565b8260005b818110156111df57600086868381811061114357611143611dbe565b9050602002013590508060001415801561115e575060408111155b6111c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f49445f4f55545f4f465f52414e47450000000000000000000000000000000000604482015260640161051c565b6111ce84826114b2565b506111d881611e1c565b9050611127565b50600195945050505050565b60606000600983116111fe576001611201565b60025b60ff16905060008167ffffffffffffffff81111561122157611221611e54565b6040519080825280601f01601f19166020018201604052801561124b576020820181803683370190505b5090505b83156112ce57611260600183611e83565b915061126d600a85611ec5565b611278906030611ed9565b60f81b81838151811061128d5761128d611dbe565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506112c7600a85611eec565b935061124f565b9392505050565b805160609060008190036112f9575050604080516020810190915260008152919050565b60006003611308836002611ed9565b6113129190611eec565b61131d906004611f00565b9050600061132c826020611ed9565b67ffffffffffffffff81111561134457611344611e54565b6040519080825280601f01601f19166020018201604052801561136e576020820181803683370190505b5090506000604051806060016040528060408152602001611f18604091399050600181016020830160005b868110156113fa576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b835260049092019101611399565b506003860660018114611414576002811461145e576114a4565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8301526114a4565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b505050918152949350505050565b6114bc8282611614565b73ffffffffffffffffffffffffffffffffffffffff82163b15611610576040517f150b7a0200000000000000000000000000000000000000000000000000000000808252336004830152600060248301819052604483018490526080606484015260848301529073ffffffffffffffffffffffffffffffffffffffff84169063150b7a029060a4016020604051808303816000875af1158015611563573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115879190611b08565b7fffffffff000000000000000000000000000000000000000000000000000000001614611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161051c565b5050565b73ffffffffffffffffffffffffffffffffffffffff8216611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e54000000000000000000000000000000604482015260640161051c565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff161561171d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e544544000000000000000000000000000000000000604482015260640161051c565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146117db57600080fd5b50565b6000602082840312156117f057600080fd5b81356112ce816117ad565b60005b838110156118165781810151838201526020016117fe565b50506000910152565b602081526000825180602084015261183e8160408501602087016117fb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60006020828403121561188257600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146117db57600080fd5b600080604083850312156118be57600080fd5b82356118c981611889565b946020939093013593505050565b6000806000606084860312156118ec57600080fd5b83356118f781611889565b9250602084013561190781611889565b929592945050506040919091013590565b60006020828403121561192a57600080fd5b81356112ce81611889565b6000806040838503121561194857600080fd5b823561195381611889565b91506020830135801515811461196857600080fd5b809150509250929050565b60008060008060006080868803121561198b57600080fd5b853561199681611889565b945060208601356119a681611889565b935060408601359250606086013567ffffffffffffffff808211156119ca57600080fd5b818801915088601f8301126119de57600080fd5b8135818111156119ed57600080fd5b8960208285010111156119ff57600080fd5b9699959850939650602001949392505050565b60008060408385031215611a2557600080fd5b8235611a3081611889565b9150602083013561196881611889565b60008060208385031215611a5357600080fd5b823567ffffffffffffffff80821115611a6b57600080fd5b818501915085601f830112611a7f57600080fd5b813581811115611a8e57600080fd5b8660208260051b8501011115611aa357600080fd5b60209290920196919550909350505050565b600181811c90821680611ac957607f821691505b602082108103611b02577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215611b1a57600080fd5b81516112ce816117ad565b600060208284031215611b3757600080fd5b81516112ce81611889565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b60008351611bd38184602088016117fb565b835190830190611be78183602088016117fb565b7f2e706e67000000000000000000000000000000000000000000000000000000009101908152600401949350505050565b7f7b0000000000000000000000000000000000000000000000000000000000000081527f226e616d65223a2022e2ac9bf09f9fa9e2ac9b20230000000000000000000000600182015260008451611c768160168501602089016117fb565b80830190507f222c2000000000000000000000000000000000000000000000000000000000008060168301527f226465736372697074696f6e223a2022e2ac9bf09f9fa9e2ac9b20230000000060198301528551611cdb816035850160208a016117fb565b60359201918201527f22696d616765223a20220000000000000000000000000000000000000000000060388201528351611d1c8160428401602088016117fb565b7f2200000000000000000000000000000000000000000000000000000000000000604292909101918201527f7d00000000000000000000000000000000000000000000000000000000000000604382015260440195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251611db181601d8501602087016117fb565b91909101601d0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e4d57611e4d611ded565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b818103818111156103c3576103c3611ded565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611ed457611ed4611e96565b500690565b808201808211156103c3576103c3611ded565b600082611efb57611efb611e96565b500490565b80820281158282048414176103c3576103c3611ded56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f697066733a2f2f516d6367456e78775062664a485873706b5a7045644e58526d4b4b6141384435377878575a4254703948796f63312fa264697066735822122087fb27294935bf0113df4e5d9715c8cf82d53db38ddfc4f8c9bdb818cd81c47d64736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101365760003560e01c806395d89b41116100b2578063b88d4fde11610081578063e8a3d48511610066578063e8a3d4851461029b578063e985e9c5146102a3578063f8e93ef9146102d157600080fd5b8063b88d4fde14610275578063c87b56dd1461028857600080fd5b806395d89b411461024a578063a22cb46514610252578063a6c3e6b914610265578063aed905551461026d57600080fd5b806318160ddd1161010957806342842e0e116100ee57806342842e0e146102115780636352211e1461022457806370a082311461023757600080fd5b806318160ddd146101e857806323b872dd146101fe57600080fd5b806301ffc9a71461013b57806306fdde0314610163578063081812fc14610178578063095ea7b3146101d3575b600080fd5b61014e6101493660046117de565b6102e4565b60405190151581526020015b60405180910390f35b61016b6103c9565b60405161015a919061181f565b6101ae610186366004611870565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b6101e66101e13660046118ab565b610457565b005b6101f0604081565b60405190815260200161015a565b6101e661020c3660046118d7565b6105a6565b6101e661021f3660046118d7565b61086d565b6101ae610232366004611870565b6109d4565b6101f0610245366004611918565b610a65565b61016b610b0d565b6101e6610260366004611935565b610b1a565b6101ae610bb1565b61016b610d14565b6101e6610283366004611973565b610d34565b61016b610296366004611870565b610e8b565b61016b610fc3565b61014e6102b1366004611a12565b600560209081526000928352604080842090915290825290205460ff1681565b61014e6102df366004611a40565b611097565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061037757507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806103c357507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600080546103d690611ab5565b80601f016020809104026020016040519081016040528092919081815260200182805461040290611ab5565b801561044f5780601f106104245761010080835404028352916020019161044f565b820191906000526020600020905b81548152906001019060200180831161043257829003601f168201915b505050505081565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16338114806104ba575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b610525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff848116911614610636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d00000000000000000000000000000000000000000000604482015260640161051c565b73ffffffffffffffffffffffffffffffffffffffff82166106b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e54000000000000000000000000000000604482015260640161051c565b3373ffffffffffffffffffffffffffffffffffffffff84161480610707575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b80610735575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b61079b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a4544000000000000000000000000000000000000604482015260640161051c565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526002825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108788383836105a6565b73ffffffffffffffffffffffffffffffffffffffff82163b156109cf576040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610922573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109469190611b08565b7fffffffff0000000000000000000000000000000000000000000000000000000016146109cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161051c565b505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610a60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e54454400000000000000000000000000000000000000000000604482015260640161051c565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610ae4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f414444524553530000000000000000000000000000000000000000604482015260640161051c565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b600180546103d690611ab5565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6040517f0178b8bf0000000000000000000000000000000000000000000000000000000081527f5be0d7c69b122a7f2a1860fccbecc010039f5bef0f34c5736dce569c6da6d834600482015260009081906e0c2e074ec69a0dfb2997ba6c7d2e1e90630178b8bf90602401602060405180830381865afa158015610c39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5d9190611b25565b6040517f3b3b57de0000000000000000000000000000000000000000000000000000000081527f5be0d7c69b122a7f2a1860fccbecc010039f5bef0f34c5736dce569c6da6d834600482015290915073ffffffffffffffffffffffffffffffffffffffff821690633b3b57de90602401602060405180830381865afa158015610cea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0e9190611b25565b91505090565b6060604051806060016040528060368152602001611f5860369139905090565b610d3f8585856105a6565b73ffffffffffffffffffffffffffffffffffffffff84163b15610e84576040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063150b7a0290610db89033908a90899089908990600401611b42565b6020604051808303816000875af1158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfb9190611b08565b7fffffffff000000000000000000000000000000000000000000000000000000001614610e84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161051c565b5050505050565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16610f19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f544f4b454e5f444f45535f4e4f545f4558495354000000000000000000000000604482015260640161051c565b6000610f24836111eb565b90506000610f988283610f35610d14565b85604051602001610f47929190611bc1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610f84939291602001611c18565b6040516020818303038152906040526112d5565b905080604051602001610fab9190611d79565b60405160208183030381529060405292505050919050565b6060600061106f604051602001610f84907f7b0000000000000000000000000000000000000000000000000000000000000081527f226e616d65223a2022e2ac9bf09f9fa9e2ac9b222c200000000000000000000060018201527f226465736372697074696f6e223a2022e2ac9bf09f9fa9e2ac9b22000000000060178201527f7d00000000000000000000000000000000000000000000000000000000000000603282015260330190565b9050806040516020016110829190611d79565b60405160208183030381529060405291505090565b6000806110a2610bb1565b90503373ffffffffffffffffffffffffffffffffffffffff821614611123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f4e4c595f415554484f52000000000000000000000000000000000000000000604482015260640161051c565b8260005b818110156111df57600086868381811061114357611143611dbe565b9050602002013590508060001415801561115e575060408111155b6111c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f49445f4f55545f4f465f52414e47450000000000000000000000000000000000604482015260640161051c565b6111ce84826114b2565b506111d881611e1c565b9050611127565b50600195945050505050565b60606000600983116111fe576001611201565b60025b60ff16905060008167ffffffffffffffff81111561122157611221611e54565b6040519080825280601f01601f19166020018201604052801561124b576020820181803683370190505b5090505b83156112ce57611260600183611e83565b915061126d600a85611ec5565b611278906030611ed9565b60f81b81838151811061128d5761128d611dbe565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506112c7600a85611eec565b935061124f565b9392505050565b805160609060008190036112f9575050604080516020810190915260008152919050565b60006003611308836002611ed9565b6113129190611eec565b61131d906004611f00565b9050600061132c826020611ed9565b67ffffffffffffffff81111561134457611344611e54565b6040519080825280601f01601f19166020018201604052801561136e576020820181803683370190505b5090506000604051806060016040528060408152602001611f18604091399050600181016020830160005b868110156113fa576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b835260049092019101611399565b506003860660018114611414576002811461145e576114a4565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8301526114a4565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b505050918152949350505050565b6114bc8282611614565b73ffffffffffffffffffffffffffffffffffffffff82163b15611610576040517f150b7a0200000000000000000000000000000000000000000000000000000000808252336004830152600060248301819052604483018490526080606484015260848301529073ffffffffffffffffffffffffffffffffffffffff84169063150b7a029060a4016020604051808303816000875af1158015611563573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115879190611b08565b7fffffffff000000000000000000000000000000000000000000000000000000001614611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e5400000000000000000000000000000000604482015260640161051c565b5050565b73ffffffffffffffffffffffffffffffffffffffff8216611691576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e54000000000000000000000000000000604482015260640161051c565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff161561171d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e544544000000000000000000000000000000000000604482015260640161051c565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146117db57600080fd5b50565b6000602082840312156117f057600080fd5b81356112ce816117ad565b60005b838110156118165781810151838201526020016117fe565b50506000910152565b602081526000825180602084015261183e8160408501602087016117fb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60006020828403121561188257600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146117db57600080fd5b600080604083850312156118be57600080fd5b82356118c981611889565b946020939093013593505050565b6000806000606084860312156118ec57600080fd5b83356118f781611889565b9250602084013561190781611889565b929592945050506040919091013590565b60006020828403121561192a57600080fd5b81356112ce81611889565b6000806040838503121561194857600080fd5b823561195381611889565b91506020830135801515811461196857600080fd5b809150509250929050565b60008060008060006080868803121561198b57600080fd5b853561199681611889565b945060208601356119a681611889565b935060408601359250606086013567ffffffffffffffff808211156119ca57600080fd5b818801915088601f8301126119de57600080fd5b8135818111156119ed57600080fd5b8960208285010111156119ff57600080fd5b9699959850939650602001949392505050565b60008060408385031215611a2557600080fd5b8235611a3081611889565b9150602083013561196881611889565b60008060208385031215611a5357600080fd5b823567ffffffffffffffff80821115611a6b57600080fd5b818501915085601f830112611a7f57600080fd5b813581811115611a8e57600080fd5b8660208260051b8501011115611aa357600080fd5b60209290920196919550909350505050565b600181811c90821680611ac957607f821691505b602082108103611b02577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600060208284031215611b1a57600080fd5b81516112ce816117ad565b600060208284031215611b3757600080fd5b81516112ce81611889565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b60008351611bd38184602088016117fb565b835190830190611be78183602088016117fb565b7f2e706e67000000000000000000000000000000000000000000000000000000009101908152600401949350505050565b7f7b0000000000000000000000000000000000000000000000000000000000000081527f226e616d65223a2022e2ac9bf09f9fa9e2ac9b20230000000000000000000000600182015260008451611c768160168501602089016117fb565b80830190507f222c2000000000000000000000000000000000000000000000000000000000008060168301527f226465736372697074696f6e223a2022e2ac9bf09f9fa9e2ac9b20230000000060198301528551611cdb816035850160208a016117fb565b60359201918201527f22696d616765223a20220000000000000000000000000000000000000000000060388201528351611d1c8160428401602088016117fb565b7f2200000000000000000000000000000000000000000000000000000000000000604292909101918201527f7d00000000000000000000000000000000000000000000000000000000000000604382015260440195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251611db181601d8501602087016117fb565b91909101601d0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611e4d57611e4d611ded565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b818103818111156103c3576103c3611ded565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611ed457611ed4611e96565b500690565b808201808211156103c3576103c3611ded565b600082611efb57611efb611e96565b500490565b80820281158282048414176103c3576103c3611ded56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f697066733a2f2f516d6367456e78775062664a485873706b5a7045644e58526d4b4b6141384435377878575a4254703948796f63312fa264697066735822122087fb27294935bf0113df4e5d9715c8cf82d53db38ddfc4f8c9bdb818cd81c47d64736f6c63430008110033

Deployed Bytecode Sourcemap

9881:3303:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4875:340;;;;;;:::i;:::-;;:::i;:::-;;;611:14:1;;604:22;586:41;;574:2;559:18;4875:340:0;;;;;;;;905:18;;;:::i;:::-;;;;;;;:::i;1880:46::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1714:42:1;1702:55;;;1684:74;;1672:2;1657:18;1880:46:0;1538:226:1;2506:290:0;;;;;;:::i;:::-;;:::i;:::-;;9911:40;;9949:2;9911:40;;;;;2394:25:1;;;2382:2;2367:18;9911:40:0;2248:177:1;3019:768:0;;;;;;:::i;:::-;;:::i;3795:423::-;;;;;;:::i;:::-;;:::i;1349:151::-;;;;;;:::i;:::-;;:::i;1508:172::-;;;;;;:::i;:::-;;:::i;932:20::-;;;:::i;2804:207::-;;;;;;:::i;:::-;;:::i;10648:166::-;;;:::i;11279:143::-;;;:::i;4226:455::-;;;;;;:::i;:::-;;:::i;11430:886::-;;;;;;:::i;:::-;;:::i;12324:478::-;;;:::i;1935:68::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;10822:449;;;;;;:::i;:::-;;:::i;4875:340::-;4951:4;4988:25;;;;;;:101;;-1:-1:-1;5064:25:0;;;;;4988:101;:177;;;-1:-1:-1;5140:25:0;;;;;4988:177;4968:197;4875:340;-1:-1:-1;;4875:340:0:o;905:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2506:290::-;2578:13;2594:12;;;:8;:12;;;;;;;;2627:10;:19;;;:58;;-1:-1:-1;2650:23:0;;;;;;;:16;:23;;;;;;;;2674:10;2650:35;;;;;;;;;;2627:58;2619:85;;;;;;;6162:2:1;2619:85:0;;;6144:21:1;6201:2;6181:18;;;6174:30;6240:16;6220:18;;;6213:44;6274:18;;2619:85:0;;;;;;;;;2717:15;;;;:11;:15;;;;;;:25;;;;;;;;;;;;;;2760:28;;2717:15;;2760:28;;;;;;;2567:229;2506:290;;:::o;3019:768::-;3155:12;;;;:8;:12;;;;;;;3147:20;;;3155:12;;3147:20;3139:43;;;;;;;6505:2:1;3139:43:0;;;6487:21:1;6544:2;6524:18;;;6517:30;6583:12;6563:18;;;6556:40;6613:18;;3139:43:0;6303:334:1;3139:43:0;3203:16;;;3195:46;;;;;;;6844:2:1;3195:46:0;;;6826:21:1;6883:2;6863:18;;;6856:30;6922:19;6902:18;;;6895:47;6959:18;;3195:46:0;6642:341:1;3195:46:0;3276:10;:18;;;;;:56;;-1:-1:-1;3298:22:0;;;;;;;:16;:22;;;;;;;;3321:10;3298:34;;;;;;;;;;3276:56;:89;;;-1:-1:-1;3350:15:0;;;;:11;:15;;;;;;;;3336:10;:29;3276:89;3254:153;;;;;;;6162:2:1;3254:153:0;;;6144:21:1;6201:2;6181:18;;;6174:30;6240:16;6220:18;;;6213:44;6274:18;;3254:153:0;5960:338:1;3254:153:0;3612:16;;;;;;;;:10;:16;;;;;;;;:18;;;;;;3647:14;;;;;;;;;:16;;3612:18;3647:16;;;3687:12;;;:8;:12;;;;;:17;;;;;;;;;;;3724:11;:15;;;;;;3717:22;;;;;;;;3757;;3696:2;;3647:14;3612:16;3757:22;;;3019:768;;;:::o;3795:423::-;3919:26;3932:4;3938:2;3942;3919:12;:26::i;:::-;3962:14;;;;:19;3958:252;;4022:66;;4113:45;4022:66;;;4063:10;4022:66;;;7316:34:1;4022:40:0;7386:15:1;;;7366:18;;;7359:43;7418:18;;;7411:34;;;7481:3;7461:18;;;7454:31;-1:-1:-1;7501:19:1;;;7494:30;4113:45:0;;4022:40;;;;4113:45;;7541:19:1;;4022:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:136;;;3996:214;;;;;;;8027:2:1;3996:214:0;;;8009:21:1;8066:2;8046:18;;;8039:30;8105:18;8085;;;8078:46;8141:18;;3996:214:0;7825:340:1;3996:214:0;3795:423;;;:::o;1349:151::-;1407:13;1450:12;;;:8;:12;;;;;;1441:36;1450:12;;1433:59;;;;;;;8372:2:1;1433:59:0;;;8354:21:1;8411:2;8391:18;;;8384:30;8450:12;8430:18;;;8423:40;8480:18;;1433:59:0;8170:334:1;1433:59:0;1349:151;;;:::o;1508:172::-;1571:7;1599:19;;;1591:44;;;;;;;8711:2:1;1591:44:0;;;8693:21:1;8750:2;8730:18;;;8723:30;8789:14;8769:18;;;8762:42;8821:18;;1591:44:0;8509:336:1;1591:44:0;-1:-1:-1;1655:17:0;;;;;;:10;:17;;;;;;;1508:172::o;932:20::-;;;;;;;:::i;2804:207::-;2907:10;2890:28;;;;:16;:28;;;;;;;;;:38;;;;;;;;;;;;:49;;;;;;;;;;;;;2957:46;;586:41:1;;;2890:38:0;;2907:10;2957:46;;559:18:1;2957:46:0;;;;;;;2804:207;;:::o;10648:166::-;10736:24;;;;;10749:10;10736:24;;;2394:25:1;10687:15:0;;;;10003:42;;10736:12;;2367:18:1;;10736:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10781:25;;;;;10795:10;10781:25;;;2394::1;10715:45:0;;-1:-1:-1;10781:13:0;;;;;;2367:18:1;;10781:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10771:35;;10704:110;10648:166;:::o;11279:143::-;11325:13;11351:63;;;;;;;;;;;;;;;;;;;11279:143;:::o;4226:455::-;4380:26;4393:4;4399:2;4403;4380:12;:26::i;:::-;4423:14;;;;:19;4419:254;;4483:68;;4576:45;4483:68;;;4576:45;4483:40;;;;4576:45;;4483:68;;4524:10;;4536:4;;4542:2;;4546:4;;;;4483:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:138;;;4457:216;;;;;;;8027:2:1;4457:216:0;;;8009:21:1;8066:2;8046:18;;;8039:30;8105:18;8085;;;8078:46;8141:18;;4457:216:0;7825:340:1;4457:216:0;4226:455;;;;;:::o;11430:886::-;11550:1;11526:12;;;:8;:12;;;;;;11492:13;;11526:26;:12;11518:59;;;;;;;10512:2:1;11518:59:0;;;10494:21:1;10551:2;10531:18;;;10524:30;10590:22;10570:18;;;10563:50;10630:18;;11518:59:0;10310:344:1;11518:59:0;11598:22;11623:13;11633:2;11623:9;:13::i;:::-;11598:38;;11657:18;11678:547;11838:8;11919;12029:15;:13;:15::i;:::-;12075:8;11982:165;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;11759:421;;;;11982:165;11759:421;;:::i;:::-;;;;;;;;;;;;;11678:13;:547::i;:::-;11657:568;;12302:4;12252:55;;;;;;;;:::i;:::-;;;;;;;;;;;;;12238:70;;;;11430:886;;;:::o;12324:478::-;12370:13;12396:18;12417:294;12498:168;;;;;;14455:3:1;14443:16;;14488:66;14484:1;14475:11;;14468:87;14585:66;14580:2;14571:12;;14564:88;14682:3;14677:2;14668:12;;14661:25;14711:2;14702:12;;13938:782;12417:294:0;12396:315;;12788:4;12738:55;;;;;;;;:::i;:::-;;;;;;;;;;;;;12724:70;;;12324:478;:::o;10822:449::-;10878:4;10895:14;10912:8;:6;:8::i;:::-;10895:25;-1:-1:-1;10941:10:0;:20;;;;10933:44;;;;;;;14927:2:1;10933:44:0;;;14909:21:1;14966:2;14946:18;;;14939:30;15005:13;14985:18;;;14978:41;15036:18;;10933:44:0;14725:335:1;10933:44:0;11009:3;10990:16;11032:208;11056:8;11052:1;:12;11032:208;;;11086:10;11099:3;;11103:1;11099:6;;;;;;;:::i;:::-;;;;;;;11086:19;;11130:2;11136:1;11130:7;;:28;;;;;9949:2;11141;:17;;11130:28;11122:56;;;;;;;15456:2:1;11122:56:0;;;15438:21:1;15495:2;15475:18;;;15468:30;15534:17;15514:18;;;15507:45;15569:18;;11122:56:0;15254:339:1;11122:56:0;11207:21;11217:6;11225:2;11207:9;:21::i;:::-;-1:-1:-1;11066:3:0;;;:::i;:::-;;;11032:208;;;-1:-1:-1;11259:4:0;;10822:449;-1:-1:-1;;;;;10822:449:0:o;12810:371::-;12867:13;12893:14;12918:1;12910:5;:9;:17;;12926:1;12910:17;;;12922:1;12910:17;12893:34;;;;12938:19;12970:6;12960:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12960:17:0;;12938:39;;12988:154;12995:10;;12988:154;;13022:11;13032:1;13022:11;;:::i;:::-;;-1:-1:-1;13091:10:0;13099:2;13091:5;:10;:::i;:::-;13078:24;;:2;:24;:::i;:::-;13065:39;;13048:6;13055;13048:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;13119:11:0;13128:2;13119:11;;:::i;:::-;;;12988:154;;;13166:6;12810:371;-1:-1:-1;;;12810:371:0:o;7967:1607::-;8065:11;;8025:13;;8051:11;8091:8;;;8087:23;;-1:-1:-1;;8101:9:0;;;;;;;;;-1:-1:-1;8101:9:0;;;7967:1607;-1:-1:-1;7967:1607:0:o;8087:23::-;8162:18;8200:1;8189:7;:3;8195:1;8189:7;:::i;:::-;8188:13;;;;:::i;:::-;8183:19;;:1;:19;:::i;:::-;8162:40;-1:-1:-1;8260:19:0;8292:15;8162:40;8305:2;8292:15;:::i;:::-;8282:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8282:26:0;;8260:48;;8321:18;8342:5;;;;;;;;;;;;;;;;;8321:26;;8411:1;8404:5;8400:13;8456:2;8448:6;8444:15;8507:1;8475:777;8530:3;8527:1;8524:10;8475:777;;;8585:1;8628:12;;;;;8622:19;8723:4;8711:2;8707:14;;;;;8689:40;;8683:47;8832:2;8828:14;;;8824:25;;8810:40;;8804:47;8961:1;8957:13;;;8953:24;;8939:39;;8933:46;9081:16;;;;9067:31;;9061:38;8759:1;8755:11;;;8853:4;8800:58;;;8791:68;8884:11;;8929:57;;;8920:67;;;;9012:11;;9057:49;;9048:59;9136:3;9132:13;9165:22;;9235:1;9220:17;;;;8578:9;8475:777;;;8479:44;9284:1;9279:3;9275:11;9305:1;9300:84;;;;9403:1;9398:82;;;;9268:212;;9300:84;9352:16;9333:17;;;9326:43;9300:84;;9398:82;9450:14;9431:17;;;9424:41;9268:212;-1:-1:-1;;;9496:26:0;;;9503:6;7967:1607;-1:-1:-1;;;;7967:1607:0:o;6393:363::-;6464:13;6470:2;6474;6464:5;:13::i;:::-;6494:14;;;;:19;6490:258;;6554:72;;6651:45;6554:72;;;6595:10;6554:72;;;7316:34:1;6615:1:0;7366:18:1;;;7359:43;;;7418:18;;;7411:34;;;7481:3;7461:18;;;7454:31;7501:19;;;7494:30;6651:45:0;6554:40;;;;6651:45;;7541:19:1;;6554:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:142;;;6528:220;;;;;;;8027:2:1;6528:220:0;;;8009:21:1;8066:2;8046:18;;;8039:30;8105:18;8085;;;8078:46;8141:18;;6528:220:0;7825:340:1;6528:220:0;6393:363;;:::o;5415:384::-;5490:16;;;5482:46;;;;;;;6844:2:1;5482:46:0;;;6826:21:1;6883:2;6863:18;;;6856:30;6922:19;6902:18;;;6895:47;6959:18;;5482:46:0;6642:341:1;5482:46:0;5573:1;5549:12;;;:8;:12;;;;;;:26;:12;:26;5541:53;;;;;;;17245:2:1;5541:53:0;;;17227:21:1;17284:2;17264:18;;;17257:30;17323:16;17303:18;;;17296:44;17357:18;;5541:53:0;17043:338:1;5541:53:0;5688:14;;;;;;;:10;:14;;;;;;;;:16;;;;;;5728:12;;;:8;:12;;;;;;:17;;;;;;;;5763:28;5737:2;;5688:14;;5763:28;;5688:14;;5763:28;5415:384;;:::o;14:177:1:-;99:66;92:5;88:78;81:5;78:89;68:117;;181:1;178;171:12;68:117;14:177;:::o;196:245::-;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;638:250::-;723:1;733:113;747:6;744:1;741:13;733:113;;;823:11;;;817:18;804:11;;;797:39;769:2;762:10;733:113;;;-1:-1:-1;;880:1:1;862:16;;855:27;638:250::o;893:455::-;1042:2;1031:9;1024:21;1005:4;1074:6;1068:13;1117:6;1112:2;1101:9;1097:18;1090:34;1133:79;1205:6;1200:2;1189:9;1185:18;1180:2;1172:6;1168:15;1133:79;:::i;:::-;1264:2;1252:15;1269:66;1248:88;1233:104;;;;1339:2;1229:113;;893:455;-1:-1:-1;;893:455:1:o;1353:180::-;1412:6;1465:2;1453:9;1444:7;1440:23;1436:32;1433:52;;;1481:1;1478;1471:12;1433:52;-1:-1:-1;1504:23:1;;1353:180;-1:-1:-1;1353:180:1:o;1769:154::-;1855:42;1848:5;1844:54;1837:5;1834:65;1824:93;;1913:1;1910;1903:12;1928:315;1996:6;2004;2057:2;2045:9;2036:7;2032:23;2028:32;2025:52;;;2073:1;2070;2063:12;2025:52;2112:9;2099:23;2131:31;2156:5;2131:31;:::i;:::-;2181:5;2233:2;2218:18;;;;2205:32;;-1:-1:-1;;;1928:315:1:o;2430:456::-;2507:6;2515;2523;2576:2;2564:9;2555:7;2551:23;2547:32;2544:52;;;2592:1;2589;2582:12;2544:52;2631:9;2618:23;2650:31;2675:5;2650:31;:::i;:::-;2700:5;-1:-1:-1;2757:2:1;2742:18;;2729:32;2770:33;2729:32;2770:33;:::i;:::-;2430:456;;2822:7;;-1:-1:-1;;;2876:2:1;2861:18;;;;2848:32;;2430:456::o;2891:247::-;2950:6;3003:2;2991:9;2982:7;2978:23;2974:32;2971:52;;;3019:1;3016;3009:12;2971:52;3058:9;3045:23;3077:31;3102:5;3077:31;:::i;3143:416::-;3208:6;3216;3269:2;3257:9;3248:7;3244:23;3240:32;3237:52;;;3285:1;3282;3275:12;3237:52;3324:9;3311:23;3343:31;3368:5;3343:31;:::i;:::-;3393:5;-1:-1:-1;3450:2:1;3435:18;;3422:32;3492:15;;3485:23;3473:36;;3463:64;;3523:1;3520;3513:12;3463:64;3546:7;3536:17;;;3143:416;;;;;:::o;3564:936::-;3661:6;3669;3677;3685;3693;3746:3;3734:9;3725:7;3721:23;3717:33;3714:53;;;3763:1;3760;3753:12;3714:53;3802:9;3789:23;3821:31;3846:5;3821:31;:::i;:::-;3871:5;-1:-1:-1;3928:2:1;3913:18;;3900:32;3941:33;3900:32;3941:33;:::i;:::-;3993:7;-1:-1:-1;4047:2:1;4032:18;;4019:32;;-1:-1:-1;4102:2:1;4087:18;;4074:32;4125:18;4155:14;;;4152:34;;;4182:1;4179;4172:12;4152:34;4220:6;4209:9;4205:22;4195:32;;4265:7;4258:4;4254:2;4250:13;4246:27;4236:55;;4287:1;4284;4277:12;4236:55;4327:2;4314:16;4353:2;4345:6;4342:14;4339:34;;;4369:1;4366;4359:12;4339:34;4414:7;4409:2;4400:6;4396:2;4392:15;4388:24;4385:37;4382:57;;;4435:1;4432;4425:12;4382:57;3564:936;;;;-1:-1:-1;3564:936:1;;-1:-1:-1;4466:2:1;4458:11;;4488:6;3564:936;-1:-1:-1;;;3564:936:1:o;4505:388::-;4573:6;4581;4634:2;4622:9;4613:7;4609:23;4605:32;4602:52;;;4650:1;4647;4640:12;4602:52;4689:9;4676:23;4708:31;4733:5;4708:31;:::i;:::-;4758:5;-1:-1:-1;4815:2:1;4800:18;;4787:32;4828:33;4787:32;4828:33;:::i;4898:615::-;4984:6;4992;5045:2;5033:9;5024:7;5020:23;5016:32;5013:52;;;5061:1;5058;5051:12;5013:52;5101:9;5088:23;5130:18;5171:2;5163:6;5160:14;5157:34;;;5187:1;5184;5177:12;5157:34;5225:6;5214:9;5210:22;5200:32;;5270:7;5263:4;5259:2;5255:13;5251:27;5241:55;;5292:1;5289;5282:12;5241:55;5332:2;5319:16;5358:2;5350:6;5347:14;5344:34;;;5374:1;5371;5364:12;5344:34;5427:7;5422:2;5412:6;5409:1;5405:14;5401:2;5397:23;5393:32;5390:45;5387:65;;;5448:1;5445;5438:12;5387:65;5479:2;5471:11;;;;;5501:6;;-1:-1:-1;4898:615:1;;-1:-1:-1;;;;4898:615:1:o;5518:437::-;5597:1;5593:12;;;;5640;;;5661:61;;5715:4;5707:6;5703:17;5693:27;;5661:61;5768:2;5760:6;5757:14;5737:18;5734:38;5731:218;;5805:77;5802:1;5795:88;5906:4;5903:1;5896:15;5934:4;5931:1;5924:15;5731:218;;5518:437;;;:::o;7571:249::-;7640:6;7693:2;7681:9;7672:7;7668:23;7664:32;7661:52;;;7709:1;7706;7699:12;7661:52;7741:9;7735:16;7760:30;7784:5;7760:30;:::i;9032:268::-;9119:6;9172:2;9160:9;9151:7;9147:23;9143:32;9140:52;;;9188:1;9185;9178:12;9140:52;9220:9;9214:16;9239:31;9264:5;9239:31;:::i;9561:744::-;9765:4;9794:42;9875:2;9867:6;9863:15;9852:9;9845:34;9927:2;9919:6;9915:15;9910:2;9899:9;9895:18;9888:43;;9967:6;9962:2;9951:9;9947:18;9940:34;10010:3;10005:2;9994:9;9990:18;9983:31;10051:6;10045:3;10034:9;10030:19;10023:35;10109:6;10101;10095:3;10084:9;10080:19;10067:49;10166:1;10160:3;10151:6;10140:9;10136:22;10132:32;10125:43;10295:3;10225:66;10220:2;10212:6;10208:15;10204:88;10193:9;10189:104;10185:114;10177:122;;9561:744;;;;;;;;:::o;10659:662::-;10939:3;10977:6;10971:13;10993:66;11052:6;11047:3;11040:4;11032:6;11028:17;10993:66;:::i;:::-;11122:13;;11081:16;;;;11144:70;11122:13;11081:16;11191:4;11179:17;;11144:70;:::i;:::-;11279:6;11236:20;;11265:21;;;11313:1;11302:13;;10659:662;-1:-1:-1;;;;10659:662:1:o;11326:2141::-;12391:3;12386;12379:16;12424:66;12420:1;12415:3;12411:11;12404:87;12361:3;12520:6;12514:13;12536:75;12604:6;12599:2;12594:3;12590:12;12583:4;12575:6;12571:17;12536:75;:::i;:::-;12639:6;12634:3;12630:16;12620:26;;12665:66;12760:2;12755;12751;12747:11;12740:23;12792:66;12787:2;12783;12779:11;12772:87;12890:6;12884:13;12906:76;12973:8;12968:2;12964;12960:11;12953:4;12945:6;12941:17;12906:76;:::i;:::-;13042:2;13001:17;;13034:11;;;13027:23;13079:66;13074:2;13066:11;;13059:87;13171:13;;13193:76;13171:13;13255:2;13247:11;;13240:4;13228:17;;13193:76;:::i;:::-;13334:66;13329:2;13288:17;;;;13321:11;;;13314:87;13430:3;13425:2;13417:11;;13410:24;13458:2;13450:11;;11326:2141;-1:-1:-1;;;;;11326:2141:1:o;13472:461::-;13734:31;13729:3;13722:44;13704:3;13795:6;13789:13;13811:75;13879:6;13874:2;13869:3;13865:12;13858:4;13850:6;13846:17;13811:75;:::i;:::-;13906:16;;;;13924:2;13902:25;;13472:461;-1:-1:-1;;13472:461:1:o;15065:184::-;15117:77;15114:1;15107:88;15214:4;15211:1;15204:15;15238:4;15235:1;15228:15;15598:184;15650:77;15647:1;15640:88;15747:4;15744:1;15737:15;15771:4;15768:1;15761:15;15787:195;15826:3;15857:66;15850:5;15847:77;15844:103;;15927:18;;:::i;:::-;-1:-1:-1;15974:1:1;15963:13;;15787:195::o;15987:184::-;16039:77;16036:1;16029:88;16136:4;16133:1;16126:15;16160:4;16157:1;16150:15;16176:128;16243:9;;;16264:11;;;16261:37;;;16278:18;;:::i;16309:184::-;16361:77;16358:1;16351:88;16458:4;16455:1;16448:15;16482:4;16479:1;16472:15;16498:112;16530:1;16556;16546:35;;16561:18;;:::i;:::-;-1:-1:-1;16595:9:1;;16498:112::o;16615:125::-;16680:9;;;16701:10;;;16698:36;;;16714:18;;:::i;16745:120::-;16785:1;16811;16801:35;;16816:18;;:::i;:::-;-1:-1:-1;16850:9:1;;16745:120::o;16870:168::-;16943:9;;;16974;;16991:15;;;16985:22;;16971:37;16961:71;;17012:18;;:::i

Swarm Source

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