ETH Price: $3,326.40 (-9.31%)

Token

UnderTheRock (ROCK)
 

Overview

Max Total Supply

888 ROCK

Holders

783

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 ROCK
0x819e46d93a78dc7da19954b0ebb1ba42a91aa8b9
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:
UnderTheRock

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-22
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;
interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
pragma solidity ^0.8.0;
interface IERC721Receiver {
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}
pragma solidity ^0.8.0;
interface IERC721 is IERC165 {
    event Transfer(
        address indexed from,
        address indexed to,
        uint256 indexed tokenId
    );
    event Approval(
        address indexed owner,
        address indexed approved,
        uint256 indexed tokenId
    );
    event ApprovalForAll(
        address indexed owner,
        address indexed operator,
        bool approved
    );
    function balanceOf(address owner) external view returns (uint256 balance);
    function ownerOf(uint256 tokenId) external view returns (address owner);
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;
    function approve(address to, uint256 tokenId) external;
    function getApproved(uint256 tokenId)
        external
        view
        returns (address operator);
    function setApprovalForAll(address operator, bool _approved) external;
    function isApprovedForAll(address owner, address operator)
        external
        view
        returns (bool);
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}
pragma solidity ^0.8.0;
interface IERC721Metadata is IERC721 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function tokenURI(uint256 tokenId) external view returns (string memory);
}
pragma solidity ^0.8.0;
interface IERC721Enumerable is IERC721 {
    function totalSupply() external view returns (uint256);
    function tokenOfOwnerByIndex(address owner, uint256 index)
        external
        view
        returns (uint256);
    function tokenByIndex(uint256 index) external view returns (uint256);
}
pragma solidity ^0.8.1;
library Address {
    function isContract(address account) internal view returns (bool) {

        return account.code.length > 0;
    }
    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"
        );
    }
    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    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"
            );
    }
    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"
        );
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data)
        internal
        view
        returns (bytes memory)
    {
        return
            functionStaticCall(
                target,
                data,
                "Address: low-level static call failed"
            );
    }
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return
            functionDelegateCall(
                target,
                data,
                "Address: low-level delegate call failed"
            );
    }
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

pragma solidity ^0.8.0;

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    constructor() {
        _setOwner(_msgSender());
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)
pragma solidity ^0.8.0;
library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";
    function toString(uint256 value) internal pure returns (string memory) {
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }
    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }
    function toHexString(uint256 value, uint256 length)
        internal
        pure
        returns (string memory)
    {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)
pragma solidity ^0.8.0;
abstract contract ERC165 is IERC165 {
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override
        returns (bool)
    {
        return interfaceId == type(IERC165).interfaceId;
    }
}

pragma solidity ^0.8.0;

abstract contract ReentrancyGuard {
    // word because each write operation emits an extra SLOAD to first read the
    // back. This is the compiler's defense against contract upgrades and

    // but in exchange the refund on every call to nonReentrant will be lower in
    // transaction's gas, it is best to keep them low in cases like this one, to
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }
    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;

        _;
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

pragma solidity ^0.8.0;
contract ERC721A is
    Context,
    ERC165,
    IERC721,
    IERC721Metadata,
    IERC721Enumerable
{
    using Address for address;
    using Strings for uint256;

    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
    }

    struct AddressData {
        uint128 balance;
        uint128 numberMinted;
    }

    uint256 private currentIndex = 1;

    uint256 internal immutable collectionSize;
    uint256 internal immutable maxBatchSize;
    string private _name;
    string private _symbol;
    // An empty struct value does not necessarily mean the token is unowned. See ownershipOf implementation for details.
    mapping(uint256 => TokenOwnership) private _ownerships;
    mapping(address => AddressData) private _addressData;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;
    constructor(
        string memory name_,
        string memory symbol_,
        uint256 maxBatchSize_,
        uint256 collectionSize_
    ) {
        require(
            collectionSize_ > 0,
            "ERC721A: collection must have a nonzero supply"
        );
        require(maxBatchSize_ > 0, "ERC721A: max batch size must be nonzero");
        _name = name_;
        _symbol = symbol_;
        maxBatchSize = maxBatchSize_;
        collectionSize = collectionSize_;
    }
    function totalSupply() public view override returns (uint256) {
        return currentIndex -1;
    }
    function tokenByIndex(uint256 index)
        public
        view
        override
        returns (uint256)
    {
        require(index < totalSupply(), "ERC721A: global index out of bounds");
        return index;
    }
    function tokenOfOwnerByIndex(address owner, uint256 index)
        public
        view
        override
        returns (uint256)
    {
        require(index < balanceOf(owner), "ERC721A: owner index out of bounds");
        uint256 numMintedSoFar = totalSupply();
        uint256 tokenIdsIdx = 0;
        address currOwnershipAddr = address(0);
        for (uint256 i = 0; i < numMintedSoFar; i++) {
            TokenOwnership memory ownership = _ownerships[i];
            if (ownership.addr != address(0)) {
                currOwnershipAddr = ownership.addr;
            }
            if (currOwnershipAddr == owner) {
                if (tokenIdsIdx == index) {
                    return i;
                }
                tokenIdsIdx++;
            }
        }
        revert("ERC721A: unable to get token of owner by index");
    }
    function supportsInterface(bytes4 interfaceId)
        public
        view
        virtual
        override(ERC165, IERC165)
        returns (bool)
    {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            interfaceId == type(IERC721Enumerable).interfaceId ||
            super.supportsInterface(interfaceId);
    }
    function balanceOf(address owner) public view override returns (uint256) {
        require(
            owner != address(0),
            "ERC721A: balance query for the zero address"
        );
        return uint256(_addressData[owner].balance);
    }

    function _numberMinted(address owner) internal view returns (uint256) {
        require(
            owner != address(0),
            "ERC721A: number minted query for the zero address"
        );
        return uint256(_addressData[owner].numberMinted);
    }

    function ownershipOf(uint256 tokenId)
        internal
        view
        returns (TokenOwnership memory)
    {
        require(_exists(tokenId), "ERC721A: owner query for nonexistent token");

        uint256 lowestTokenToCheck;
        if (tokenId >= maxBatchSize) {
            lowestTokenToCheck = tokenId - maxBatchSize + 1;
        }

        for (uint256 curr = tokenId; curr >= lowestTokenToCheck; curr--) {
            TokenOwnership memory ownership = _ownerships[curr];
            if (ownership.addr != address(0)) {
                return ownership;
            }
        }

        revert("ERC721A: unable to determine the owner of token");
    }
    function ownerOf(uint256 tokenId) public view override returns (address) {
        return ownershipOf(tokenId).addr;
    }
    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function tokenURI(uint256 tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        require(
            _exists(tokenId),
            "ERC721Metadata: URI query for nonexistent token"
        );

        string memory baseURI = _baseURI();
        return
            bytes(baseURI).length > 0
                ? string(abi.encodePacked(baseURI, tokenId.toString()))
                : "";
    }
    function _baseURI() internal view virtual returns (string memory) {
        return "";
    }
    function approve(address to, uint256 tokenId) public override {
        address owner = ERC721A.ownerOf(tokenId);
        require(to != owner, "ERC721A: approval to current owner");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721A: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId, owner);
    }
    function getApproved(uint256 tokenId)
        public
        view
        override
        returns (address)
    {
        require(
            _exists(tokenId),
            "ERC721A: approved query for nonexistent token"
        );

        return _tokenApprovals[tokenId];
    }
    function setApprovalForAll(address operator, bool approved)
        public
        override
    {
        require(operator != _msgSender(), "ERC721A: approve to caller");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }
    function isApprovedForAll(address owner, address operator)
        public
        view
        virtual
        override
        returns (bool)
    {
        return _operatorApprovals[owner][operator];
    }
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public override {
        _transfer(from, to, tokenId);
    }
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public override {
        safeTransferFrom(from, to, tokenId, "");
    }
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public override {
        _transfer(from, to, tokenId);
        require(
            _checkOnERC721Received(from, to, tokenId, _data),
            "ERC721A: transfer to non ERC721Receiver implementer"
        );
    }
    function _exists(uint256 tokenId) internal view returns (bool) {
        return tokenId < currentIndex;
    }

    function _safeMint(address to, uint256 quantity) internal {
        _safeMint(to, quantity, "");
    }
    function _safeMint(
        address to,
        uint256 quantity,
        bytes memory _data
    ) internal {
        uint256 startTokenId = currentIndex;
        require(to != address(0), "ERC721A: mint to the zero address");
        require(!_exists(startTokenId), "ERC721A: token already minted");
        require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high");

        _beforeTokenTransfers(address(0), to, startTokenId, quantity);

        AddressData memory addressData = _addressData[to];
        _addressData[to] = AddressData(
            addressData.balance + uint128(quantity),
            addressData.numberMinted + uint128(quantity)
        );
        _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp));

        uint256 updatedIndex = startTokenId;

        for (uint256 i = 0; i < quantity; i++) {
            emit Transfer(address(0), to, updatedIndex);
            require(
                _checkOnERC721Received(address(0), to, updatedIndex, _data),
                "ERC721A: transfer to non ERC721Receiver implementer"
            );
            updatedIndex++;
        }

        currentIndex = updatedIndex;
        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }
    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) private {
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);

        bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
            getApproved(tokenId) == _msgSender() ||
            isApprovedForAll(prevOwnership.addr, _msgSender()));

        require(
            isApprovedOrOwner,
            "ERC721A: transfer caller is not owner nor approved"
        );

        require(
            prevOwnership.addr == from,
            "ERC721A: transfer from incorrect owner"
        );
        require(to != address(0), "ERC721A: transfer to the zero address");

        _beforeTokenTransfers(from, to, tokenId, 1);
        _approve(address(0), tokenId, prevOwnership.addr);

        _addressData[from].balance -= 1;
        _addressData[to].balance += 1;
        _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp));
        // Set the slot of tokenId+1 explicitly in storage to maintain correctness for ownerOf(tokenId+1) calls.
        uint256 nextTokenId = tokenId + 1;
        if (_ownerships[nextTokenId].addr == address(0)) {
            if (_exists(nextTokenId)) {
                _ownerships[nextTokenId] = TokenOwnership(
                    prevOwnership.addr,
                    prevOwnership.startTimestamp
                );
            }
        }

        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }
    function _approve(
        address to,
        uint256 tokenId,
        address owner
    ) private {
        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    uint256 public nextOwnerToExplicitlySet = 0;
    function _setOwnersExplicit(uint256 quantity) internal {
        uint256 oldNextOwnerToSet = nextOwnerToExplicitlySet;
        require(quantity > 0, "quantity must be nonzero");
        uint256 endIndex = oldNextOwnerToSet + quantity - 1;
        if (endIndex > collectionSize - 1) {
            endIndex = collectionSize - 1;
        }
        require(_exists(endIndex), "not enough minted yet for this cleanup");
        for (uint256 i = oldNextOwnerToSet; i <= endIndex; i++) {
            if (_ownerships[i].addr == address(0)) {
                TokenOwnership memory ownership = ownershipOf(i);
                _ownerships[i] = TokenOwnership(
                    ownership.addr,
                    ownership.startTimestamp
                );
            }
        }
        nextOwnerToExplicitlySet = endIndex + 1;
    }
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.isContract()) {
            try
                IERC721Receiver(to).onERC721Received(
                    _msgSender(),
                    from,
                    tokenId,
                    _data
                )
            returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert(
                        "ERC721A: transfer to non ERC721Receiver implementer"
                    );
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }
    function _beforeTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
    function _afterTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
}

pragma solidity ^0.8.0;
library MerkleProof {
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }
    function processProof(bytes32[] memory proof, bytes32 leaf)
        internal
        pure
        returns (bytes32)
    {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                computedHash = _efficientHash(computedHash, proofElement);
            } else {
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }
        return computedHash;
    }

    function _efficientHash(bytes32 a, bytes32 b)
        private
        pure
        returns (bytes32 value)
    {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

contract UnderTheRock is Ownable, ERC721A, ReentrancyGuard {

    bool public publicSale = false;
    bool public whitelistSale = false;

    uint256 public maxPerTx = 3;
    uint256 public maxPerAddress = 3;
    uint256 public maxToken = 888;
    uint256 public price = 0.0222 ether;

    string private _baseTokenURI = "";

    bytes32 root;

    constructor(string memory _NAME, string memory _SYMBOL)
        ERC721A(_NAME, _SYMBOL, 1000, maxToken)
        
    {}

    modifier callerIsUser() {
        require(tx.origin == msg.sender, "The caller is another contract");
        _;
    }

    function numberMinted(address owner) public view returns (uint256) {
        return _numberMinted(owner);
    }

    function getOwnershipData(uint256 tokenId)
        external
        view
        returns (TokenOwnership memory)
    {
        return ownershipOf(tokenId);
    }

    function tokenURI(uint256 tokenId)
        public
        view
        virtual
        override
        returns (string memory)
    {
        require(
            _exists(tokenId),
            "ERC721Metadata: URI query for nonexistent token"
        );

        string memory _tokenURI = super.tokenURI(tokenId);
        return
            bytes(_tokenURI).length > 0
                ? string(abi.encodePacked(_tokenURI, ".json"))
                : "";
    }

    function verify(bytes32[] memory proof) internal view returns (bool) {
        bytes32 leaf = keccak256(abi.encodePacked(msg.sender));
        return MerkleProof.verify(proof, root, leaf);
    }

    function mint(uint256 quantity, bytes32[] memory proof) external payable callerIsUser {
        require(whitelistSale || publicSale, "SALE_HAS_NOT_STARTED_YET");
        require(numberMinted(msg.sender) + quantity <= maxPerAddress, "PER_WALLET_LIMIT_REACHED");
        require(quantity > 0, "INVALID_QUANTITY");
        require(quantity <= maxPerTx, "CANNOT_MINT_THAT_MANY");
        require(totalSupply() + quantity <= maxToken, "NOT_ENOUGH_SUPPLY_TO_MINT_DESIRED_AMOUNT");
        if(whitelistSale){
            require(verify(proof), "ADDRESS_NOT_WHITELISTED");
        }
        if(numberMinted(msg.sender) > 0){
            require(msg.value >= price * quantity, "INVALID_ETH");
        }else{
            require(msg.value >= (price * quantity) - price, "INVALID_ETH");
        }
        _safeMint(msg.sender, quantity);
    }

    function teamAllocationMint(address _address, uint256 quantity) external onlyOwner {
        require(totalSupply() + quantity <= maxToken, "NOT_ENOUGH_SUPPLY_TO_GIVEAWAY_DESIRED_AMOUNT");
        _safeMint(_address, quantity);
    }

    function _baseURI() internal view virtual override returns (string memory) {
        return _baseTokenURI;
    }
   
    

    function setPrice(uint256 _PriceInWEI) external onlyOwner {
        price = _PriceInWEI;
    }

    function setRoot(bytes32 _root) external onlyOwner {
        root = _root;
    }

    function flipPublicSaleState() external onlyOwner {
        publicSale = !publicSale;
    }

    function flipWhitelistState() external onlyOwner {
        whitelistSale = !whitelistSale;
    }

    function setBaseURI(string calldata baseURI) external onlyOwner {
        _baseTokenURI = baseURI;
    }

    function withdraw() external onlyOwner {
        payable(msg.sender).transfer(address(this).balance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_NAME","type":"string"},{"internalType":"string","name":"_SYMBOL","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flipPublicSaleState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipWhitelistState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","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":"tokenId","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":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_PriceInWEI","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"setRoot","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":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"teamAllocationMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","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":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c06040526001805560006008556000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055506003600b556003600c55610378600d55664edec84a038000600e5560405180602001604052806000815250600f9080519060200190620000859291906200028f565b503480156200009357600080fd5b5060405162005785380380620057858339818101604052810190620000b99190620003bd565b81816103e8600d54620000e1620000d5620001c360201b60201c565b620001cb60201b60201c565b6000811162000127576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200011e90620004b2565b60405180910390fd5b600082116200016d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001649062000490565b60405180910390fd5b8360029080519060200190620001859291906200028f565b5082600390805190602001906200019e9291906200028f565b508160a081815250508060808181525050505050506001600981905550505062000707565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200029d906200057a565b90600052602060002090601f016020900481019282620002c157600085556200030d565b82601f10620002dc57805160ff19168380011785556200030d565b828001600101855582156200030d579182015b828111156200030c578251825591602001919060010190620002ef565b5b5090506200031c919062000320565b5090565b5b808211156200033b57600081600090555060010162000321565b5090565b6000620003566200035084620004fd565b620004d4565b90508281526020810184848401111562000375576200037462000649565b5b6200038284828562000544565b509392505050565b600082601f830112620003a257620003a162000644565b5b8151620003b48482602086016200033f565b91505092915050565b60008060408385031215620003d757620003d662000653565b5b600083015167ffffffffffffffff811115620003f857620003f76200064e565b5b62000406858286016200038a565b925050602083015167ffffffffffffffff8111156200042a57620004296200064e565b5b62000438858286016200038a565b9150509250929050565b60006200045160278362000533565b91506200045e8262000669565b604082019050919050565b600062000478602e8362000533565b91506200048582620006b8565b604082019050919050565b60006020820190508181036000830152620004ab8162000442565b9050919050565b60006020820190508181036000830152620004cd8162000469565b9050919050565b6000620004e0620004f3565b9050620004ee8282620005b0565b919050565b6000604051905090565b600067ffffffffffffffff8211156200051b576200051a62000615565b5b620005268262000658565b9050602081019050919050565b600082825260208201905092915050565b60005b838110156200056457808201518184015260208101905062000547565b8381111562000574576000848401525b50505050565b600060028204905060018216806200059357607f821691505b60208210811415620005aa57620005a9620005e6565b5b50919050565b620005bb8262000658565b810181811067ffffffffffffffff82111715620005dd57620005dc62000615565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206d61782062617463682073697a65206d7573742062652060008201527f6e6f6e7a65726f00000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060008201527f6e6f6e7a65726f20737570706c79000000000000000000000000000000000000602082015250565b60805160a05161504d62000738600039600081816124540152818161247d0152612af101526000505061504d6000f3fe60806040526004361061020f5760003560e01c80638da5cb5b11610118578063c87b56dd116100a0578063dc33e6811161006f578063dc33e6811461077c578063e985e9c5146107b9578063f2fde38b146107f6578063f6fa26ab1461081f578063f968adbe146108365761020f565b8063c87b56dd146106c0578063ca69e323146106fd578063d7224ba014610728578063dab5f340146107535761020f565b8063a035b1fe116100e7578063a035b1fe14610610578063a10866ef1461063b578063a22cb46514610652578063b88d4fde1461067b578063ba41b0c6146106a45761020f565b80638da5cb5b1461055457806391b7f5ed1461057f5780639231ab2a146105a857806395d89b41146105e55761020f565b806333bc1c5c1161019b57806355f804b31161016a57806355f804b31461046f5780636352211e14610498578063639814e0146104d557806370a0823114610500578063715018a61461053d5761020f565b806333bc1c5c146103c75780633ccfd60b146103f257806342842e0e146104095780634f6ccce7146104325761020f565b80630aada278116101e25780630aada278146102e257806318160ddd1461030b57806323b872dd146103365780632f745c591461035f57806331ffd6f11461039c5761020f565b806301ffc9a71461021457806306fdde0314610251578063081812fc1461027c578063095ea7b3146102b9575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190613683565b610861565b6040516102489190613dec565b60405180910390f35b34801561025d57600080fd5b506102666109ab565b6040516102739190613e07565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e919061372a565b610a3d565b6040516102b09190613d85565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db9190613616565b610ac2565b005b3480156102ee57600080fd5b5061030960048036038101906103049190613616565b610bdb565b005b34801561031757600080fd5b50610320610cbc565b60405161032d9190614204565b60405180910390f35b34801561034257600080fd5b5061035d60048036038101906103589190613500565b610cd1565b005b34801561036b57600080fd5b5061038660048036038101906103819190613616565b610ce1565b6040516103939190614204565b60405180910390f35b3480156103a857600080fd5b506103b1610edf565b6040516103be9190613dec565b60405180910390f35b3480156103d357600080fd5b506103dc610ef2565b6040516103e99190613dec565b60405180910390f35b3480156103fe57600080fd5b50610407610f05565b005b34801561041557600080fd5b50610430600480360381019061042b9190613500565b610fca565b005b34801561043e57600080fd5b506104596004803603810190610454919061372a565b610fea565b6040516104669190614204565b60405180910390f35b34801561047b57600080fd5b50610496600480360381019061049191906136dd565b61103d565b005b3480156104a457600080fd5b506104bf60048036038101906104ba919061372a565b6110cf565b6040516104cc9190613d85565b60405180910390f35b3480156104e157600080fd5b506104ea6110e5565b6040516104f79190614204565b60405180910390f35b34801561050c57600080fd5b5061052760048036038101906105229190613493565b6110eb565b6040516105349190614204565b60405180910390f35b34801561054957600080fd5b506105526111d4565b005b34801561056057600080fd5b5061056961125c565b6040516105769190613d85565b60405180910390f35b34801561058b57600080fd5b506105a660048036038101906105a1919061372a565b611285565b005b3480156105b457600080fd5b506105cf60048036038101906105ca919061372a565b61130b565b6040516105dc91906141e9565b60405180910390f35b3480156105f157600080fd5b506105fa611323565b6040516106079190613e07565b60405180910390f35b34801561061c57600080fd5b506106256113b5565b6040516106329190614204565b60405180910390f35b34801561064757600080fd5b506106506113bb565b005b34801561065e57600080fd5b50610679600480360381019061067491906135d6565b611463565b005b34801561068757600080fd5b506106a2600480360381019061069d9190613553565b6115e4565b005b6106be60048036038101906106b99190613757565b611640565b005b3480156106cc57600080fd5b506106e760048036038101906106e2919061372a565b61197b565b6040516106f49190613e07565b60405180910390f35b34801561070957600080fd5b50610712611a19565b60405161071f9190614204565b60405180910390f35b34801561073457600080fd5b5061073d611a1f565b60405161074a9190614204565b60405180910390f35b34801561075f57600080fd5b5061077a60048036038101906107759190613656565b611a25565b005b34801561078857600080fd5b506107a3600480360381019061079e9190613493565b611aab565b6040516107b09190614204565b60405180910390f35b3480156107c557600080fd5b506107e060048036038101906107db91906134c0565b611abd565b6040516107ed9190613dec565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190613493565b611b51565b005b34801561082b57600080fd5b50610834611c49565b005b34801561084257600080fd5b5061084b611cf1565b6040516108589190614204565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061092c57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061099457507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109a457506109a382611cf7565b5b9050919050565b6060600280546109ba9061458d565b80601f01602080910402602001604051908101604052809291908181526020018280546109e69061458d565b8015610a335780601f10610a0857610100808354040283529160200191610a33565b820191906000526020600020905b815481529060010190602001808311610a1657829003601f168201915b5050505050905090565b6000610a4882611d61565b610a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e906141a9565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610acd826110cf565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3590614089565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b5d611d6f565b73ffffffffffffffffffffffffffffffffffffffff161480610b8c5750610b8b81610b86611d6f565b611abd565b5b610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc290613f89565b60405180910390fd5b610bd6838383611d77565b505050565b610be3611d6f565b73ffffffffffffffffffffffffffffffffffffffff16610c0161125c565b73ffffffffffffffffffffffffffffffffffffffff1614610c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4e90613fe9565b60405180910390fd5b600d5481610c63610cbc565b610c6d919061432a565b1115610cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca590614129565b60405180910390fd5b610cb88282611e29565b5050565b600060018054610ccc919061443f565b905090565b610cdc838383611e47565b505050565b6000610cec836110eb565b8210610d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2490613e29565b60405180910390fd5b6000610d37610cbc565b905060008060005b83811015610e9d576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610e3157806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e895786841415610e7a578195505050505050610ed9565b8380610e85906145f0565b9450505b508080610e95906145f0565b915050610d3f565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed090614169565b60405180910390fd5b92915050565b600a60019054906101000a900460ff1681565b600a60009054906101000a900460ff1681565b610f0d611d6f565b73ffffffffffffffffffffffffffffffffffffffff16610f2b61125c565b73ffffffffffffffffffffffffffffffffffffffff1614610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7890613fe9565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610fc7573d6000803e3d6000fd5b50565b610fe5838383604051806020016040528060008152506115e4565b505050565b6000610ff4610cbc565b8210611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c90613ee9565b60405180910390fd5b819050919050565b611045611d6f565b73ffffffffffffffffffffffffffffffffffffffff1661106361125c565b73ffffffffffffffffffffffffffffffffffffffff16146110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b090613fe9565b60405180910390fd5b8181600f91906110ca9291906131d4565b505050565b60006110da82612400565b600001519050919050565b600c5481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390613fa9565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6111dc611d6f565b73ffffffffffffffffffffffffffffffffffffffff166111fa61125c565b73ffffffffffffffffffffffffffffffffffffffff1614611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790613fe9565b60405180910390fd5b61125a6000612603565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61128d611d6f565b73ffffffffffffffffffffffffffffffffffffffff166112ab61125c565b73ffffffffffffffffffffffffffffffffffffffff1614611301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f890613fe9565b60405180910390fd5b80600e8190555050565b61131361325a565b61131c82612400565b9050919050565b6060600380546113329061458d565b80601f016020809104026020016040519081016040528092919081815260200182805461135e9061458d565b80156113ab5780601f10611380576101008083540402835291602001916113ab565b820191906000526020600020905b81548152906001019060200180831161138e57829003601f168201915b5050505050905090565b600e5481565b6113c3611d6f565b73ffffffffffffffffffffffffffffffffffffffff166113e161125c565b73ffffffffffffffffffffffffffffffffffffffff1614611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e90613fe9565b60405180910390fd5b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550565b61146b611d6f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d090614029565b60405180910390fd5b80600760006114e6611d6f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611593611d6f565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115d89190613dec565b60405180910390a35050565b6115ef848484611e47565b6115fb848484846126c7565b61163a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611631906140c9565b60405180910390fd5b50505050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a590613f49565b60405180910390fd5b600a60019054906101000a900460ff16806116d55750600a60009054906101000a900460ff165b611714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170b906140a9565b60405180910390fd5b600c548261172133611aab565b61172b919061432a565b111561176c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176390613f69565b60405180910390fd5b600082116117af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a690614149565b60405180910390fd5b600b548211156117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117eb90613e49565b60405180910390fd5b600d5482611800610cbc565b61180a919061432a565b111561184b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184290614069565b60405180910390fd5b600a60019054906101000a900460ff16156118a9576118698161285e565b6118a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189f90613ec9565b60405180910390fd5b5b60006118b433611aab565b111561190f5781600e546118c891906143b1565b34101561190a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190190613e89565b60405180910390fd5b61196d565b600e5482600e5461192091906143b1565b61192a919061443f565b34101561196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390613e89565b60405180910390fd5b5b6119773383611e29565b5050565b606061198682611d61565b6119c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bc90614009565b60405180910390fd5b60006119d08361289f565b905060008151116119f05760405180602001604052806000815250611a11565b80604051602001611a019190613d63565b6040516020818303038152906040525b915050919050565b600d5481565b60085481565b611a2d611d6f565b73ffffffffffffffffffffffffffffffffffffffff16611a4b61125c565b73ffffffffffffffffffffffffffffffffffffffff1614611aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9890613fe9565b60405180910390fd5b8060108190555050565b6000611ab682612946565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611b59611d6f565b73ffffffffffffffffffffffffffffffffffffffff16611b7761125c565b73ffffffffffffffffffffffffffffffffffffffff1614611bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc490613fe9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613e69565b60405180910390fd5b611c4681612603565b50565b611c51611d6f565b73ffffffffffffffffffffffffffffffffffffffff16611c6f61125c565b73ffffffffffffffffffffffffffffffffffffffff1614611cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbc90613fe9565b60405180910390fd5b600a60019054906101000a900460ff1615600a60016101000a81548160ff021916908315150217905550565b600b5481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600060015482109050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b611e43828260405180602001604052806000815250612a2f565b5050565b6000611e5282612400565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611e79611d6f565b73ffffffffffffffffffffffffffffffffffffffff161480611ed55750611e9e611d6f565b73ffffffffffffffffffffffffffffffffffffffff16611ebd84610a3d565b73ffffffffffffffffffffffffffffffffffffffff16145b80611ef15750611ef08260000151611eeb611d6f565b611abd565b5b905080611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a90614049565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c90613fc9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200c90613f09565b60405180910390fd5b6120228585856001612f0f565b6120326000848460000151611d77565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166120a0919061440b565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661214491906142e4565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600060018461224a919061432a565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612390576122c081611d61565b1561238f576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123f88686866001612f15565b505050505050565b61240861325a565b61241182611d61565b612450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244790613ea9565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000083106124b45760017f0000000000000000000000000000000000000000000000000000000000000000846124a7919061443f565b6124b1919061432a565b90505b60008390505b8181106125c2576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146125ae578093505050506125fe565b5080806125ba90614563565b9150506124ba565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f590614189565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006126e88473ffffffffffffffffffffffffffffffffffffffff16612f1b565b15612851578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612711611d6f565b8786866040518563ffffffff1660e01b81526004016127339493929190613da0565b602060405180830381600087803b15801561274d57600080fd5b505af192505050801561277e57506040513d601f19601f8201168201806040525081019061277b91906136b0565b60015b612801573d80600081146127ae576040519150601f19603f3d011682016040523d82523d6000602084013e6127b3565b606091505b506000815114156127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f0906140c9565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612856565b600190505b949350505050565b600080336040516020016128729190613d24565b6040516020818303038152906040528051906020012090506128978360105483612f3e565b915050919050565b60606128aa82611d61565b6128e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e090614009565b60405180910390fd5b60006128f3612f55565b90506000815111612913576040518060200160405280600081525061293e565b8061291d84612fe7565b60405160200161292e929190613d3f565b6040516020818303038152906040525b915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ae90613f29565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9d90614109565b60405180910390fd5b612aaf81611d61565b15612aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae6906140e9565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000831115612b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b49906141c9565b60405180910390fd5b612b5f6000858386612f0f565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612c5c91906142e4565b6fffffffffffffffffffffffffffffffff168152602001858360200151612c8391906142e4565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b85811015612ef257818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612e9260008884886126c7565b612ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec8906140c9565b60405180910390fd5b8180612edc906145f0565b9250508080612eea906145f0565b915050612e21565b5080600181905550612f076000878588612f15565b505050505050565b50505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082612f4b8584613148565b1490509392505050565b6060600f8054612f649061458d565b80601f0160208091040260200160405190810160405280929190818152602001828054612f909061458d565b8015612fdd5780601f10612fb257610100808354040283529160200191612fdd565b820191906000526020600020905b815481529060010190602001808311612fc057829003601f168201915b5050505050905090565b6060600082141561302f576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613143565b600082905060005b6000821461306157808061304a906145f0565b915050600a8261305a9190614380565b9150613037565b60008167ffffffffffffffff81111561307d5761307c61474a565b5b6040519080825280601f01601f1916602001820160405280156130af5781602001600182028036833780820191505090505b5090505b6000851461313c576001826130c8919061443f565b9150600a856130d7919061465d565b60306130e3919061432a565b60f81b8183815181106130f9576130f861471b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856131359190614380565b94506130b3565b8093505050505b919050565b60008082905060005b84518110156131b257600085828151811061316f5761316e61471b565b5b602002602001015190508083116131915761318a83826131bd565b925061319e565b61319b81846131bd565b92505b5080806131aa906145f0565b915050613151565b508091505092915050565b600082600052816020526040600020905092915050565b8280546131e09061458d565b90600052602060002090601f0160209004810192826132025760008555613249565b82601f1061321b57803560ff1916838001178555613249565b82800160010185558215613249579182015b8281111561324857823582559160200191906001019061322d565b5b5090506132569190613294565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156132ad576000816000905550600101613295565b5090565b60006132c46132bf84614244565b61421f565b905080838252602082019050828560208602820111156132e7576132e6614783565b5b60005b8581101561331757816132fd88826133bb565b8452602084019350602083019250506001810190506132ea565b5050509392505050565b600061333461332f84614270565b61421f565b9050828152602081018484840111156133505761334f614788565b5b61335b848285614521565b509392505050565b60008135905061337281614fa4565b92915050565b600082601f83011261338d5761338c61477e565b5b813561339d8482602086016132b1565b91505092915050565b6000813590506133b581614fbb565b92915050565b6000813590506133ca81614fd2565b92915050565b6000813590506133df81614fe9565b92915050565b6000815190506133f481614fe9565b92915050565b600082601f83011261340f5761340e61477e565b5b813561341f848260208601613321565b91505092915050565b60008083601f84011261343e5761343d61477e565b5b8235905067ffffffffffffffff81111561345b5761345a614779565b5b60208301915083600182028301111561347757613476614783565b5b9250929050565b60008135905061348d81615000565b92915050565b6000602082840312156134a9576134a8614792565b5b60006134b784828501613363565b91505092915050565b600080604083850312156134d7576134d6614792565b5b60006134e585828601613363565b92505060206134f685828601613363565b9150509250929050565b60008060006060848603121561351957613518614792565b5b600061352786828701613363565b935050602061353886828701613363565b92505060406135498682870161347e565b9150509250925092565b6000806000806080858703121561356d5761356c614792565b5b600061357b87828801613363565b945050602061358c87828801613363565b935050604061359d8782880161347e565b925050606085013567ffffffffffffffff8111156135be576135bd61478d565b5b6135ca878288016133fa565b91505092959194509250565b600080604083850312156135ed576135ec614792565b5b60006135fb85828601613363565b925050602061360c858286016133a6565b9150509250929050565b6000806040838503121561362d5761362c614792565b5b600061363b85828601613363565b925050602061364c8582860161347e565b9150509250929050565b60006020828403121561366c5761366b614792565b5b600061367a848285016133bb565b91505092915050565b60006020828403121561369957613698614792565b5b60006136a7848285016133d0565b91505092915050565b6000602082840312156136c6576136c5614792565b5b60006136d4848285016133e5565b91505092915050565b600080602083850312156136f4576136f3614792565b5b600083013567ffffffffffffffff8111156137125761371161478d565b5b61371e85828601613428565b92509250509250929050565b6000602082840312156137405761373f614792565b5b600061374e8482850161347e565b91505092915050565b6000806040838503121561376e5761376d614792565b5b600061377c8582860161347e565b925050602083013567ffffffffffffffff81111561379d5761379c61478d565b5b6137a985828601613378565b9150509250929050565b6137bc81614473565b82525050565b6137cb81614473565b82525050565b6137e26137dd82614473565b614639565b82525050565b6137f181614485565b82525050565b6000613802826142a1565b61380c81856142b7565b935061381c818560208601614530565b61382581614797565b840191505092915050565b600061383b826142ac565b61384581856142c8565b9350613855818560208601614530565b61385e81614797565b840191505092915050565b6000613874826142ac565b61387e81856142d9565b935061388e818560208601614530565b80840191505092915050565b60006138a76022836142c8565b91506138b2826147b5565b604082019050919050565b60006138ca6015836142c8565b91506138d582614804565b602082019050919050565b60006138ed6026836142c8565b91506138f88261482d565b604082019050919050565b6000613910600b836142c8565b915061391b8261487c565b602082019050919050565b6000613933602a836142c8565b915061393e826148a5565b604082019050919050565b60006139566017836142c8565b9150613961826148f4565b602082019050919050565b60006139796023836142c8565b91506139848261491d565b604082019050919050565b600061399c6025836142c8565b91506139a78261496c565b604082019050919050565b60006139bf6031836142c8565b91506139ca826149bb565b604082019050919050565b60006139e2601e836142c8565b91506139ed82614a0a565b602082019050919050565b6000613a056018836142c8565b9150613a1082614a33565b602082019050919050565b6000613a286039836142c8565b9150613a3382614a5c565b604082019050919050565b6000613a4b602b836142c8565b9150613a5682614aab565b604082019050919050565b6000613a6e6026836142c8565b9150613a7982614afa565b604082019050919050565b6000613a916005836142d9565b9150613a9c82614b49565b600582019050919050565b6000613ab46020836142c8565b9150613abf82614b72565b602082019050919050565b6000613ad7602f836142c8565b9150613ae282614b9b565b604082019050919050565b6000613afa601a836142c8565b9150613b0582614bea565b602082019050919050565b6000613b1d6032836142c8565b9150613b2882614c13565b604082019050919050565b6000613b406028836142c8565b9150613b4b82614c62565b604082019050919050565b6000613b636022836142c8565b9150613b6e82614cb1565b604082019050919050565b6000613b866018836142c8565b9150613b9182614d00565b602082019050919050565b6000613ba96033836142c8565b9150613bb482614d29565b604082019050919050565b6000613bcc601d836142c8565b9150613bd782614d78565b602082019050919050565b6000613bef6021836142c8565b9150613bfa82614da1565b604082019050919050565b6000613c12602c836142c8565b9150613c1d82614df0565b604082019050919050565b6000613c356010836142c8565b9150613c4082614e3f565b602082019050919050565b6000613c58602e836142c8565b9150613c6382614e68565b604082019050919050565b6000613c7b602f836142c8565b9150613c8682614eb7565b604082019050919050565b6000613c9e602d836142c8565b9150613ca982614f06565b604082019050919050565b6000613cc16022836142c8565b9150613ccc82614f55565b604082019050919050565b604082016000820151613ced60008501826137b3565b506020820151613d006020850182613d15565b50505050565b613d0f81614503565b82525050565b613d1e8161450d565b82525050565b6000613d3082846137d1565b60148201915081905092915050565b6000613d4b8285613869565b9150613d578284613869565b91508190509392505050565b6000613d6f8284613869565b9150613d7a82613a84565b915081905092915050565b6000602082019050613d9a60008301846137c2565b92915050565b6000608082019050613db560008301876137c2565b613dc260208301866137c2565b613dcf6040830185613d06565b8181036060830152613de181846137f7565b905095945050505050565b6000602082019050613e0160008301846137e8565b92915050565b60006020820190508181036000830152613e218184613830565b905092915050565b60006020820190508181036000830152613e428161389a565b9050919050565b60006020820190508181036000830152613e62816138bd565b9050919050565b60006020820190508181036000830152613e82816138e0565b9050919050565b60006020820190508181036000830152613ea281613903565b9050919050565b60006020820190508181036000830152613ec281613926565b9050919050565b60006020820190508181036000830152613ee281613949565b9050919050565b60006020820190508181036000830152613f028161396c565b9050919050565b60006020820190508181036000830152613f228161398f565b9050919050565b60006020820190508181036000830152613f42816139b2565b9050919050565b60006020820190508181036000830152613f62816139d5565b9050919050565b60006020820190508181036000830152613f82816139f8565b9050919050565b60006020820190508181036000830152613fa281613a1b565b9050919050565b60006020820190508181036000830152613fc281613a3e565b9050919050565b60006020820190508181036000830152613fe281613a61565b9050919050565b6000602082019050818103600083015261400281613aa7565b9050919050565b6000602082019050818103600083015261402281613aca565b9050919050565b6000602082019050818103600083015261404281613aed565b9050919050565b6000602082019050818103600083015261406281613b10565b9050919050565b6000602082019050818103600083015261408281613b33565b9050919050565b600060208201905081810360008301526140a281613b56565b9050919050565b600060208201905081810360008301526140c281613b79565b9050919050565b600060208201905081810360008301526140e281613b9c565b9050919050565b6000602082019050818103600083015261410281613bbf565b9050919050565b6000602082019050818103600083015261412281613be2565b9050919050565b6000602082019050818103600083015261414281613c05565b9050919050565b6000602082019050818103600083015261416281613c28565b9050919050565b6000602082019050818103600083015261418281613c4b565b9050919050565b600060208201905081810360008301526141a281613c6e565b9050919050565b600060208201905081810360008301526141c281613c91565b9050919050565b600060208201905081810360008301526141e281613cb4565b9050919050565b60006040820190506141fe6000830184613cd7565b92915050565b60006020820190506142196000830184613d06565b92915050565b600061422961423a565b905061423582826145bf565b919050565b6000604051905090565b600067ffffffffffffffff82111561425f5761425e61474a565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561428b5761428a61474a565b5b61429482614797565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006142ef826144c7565b91506142fa836144c7565b9250826fffffffffffffffffffffffffffffffff0382111561431f5761431e61468e565b5b828201905092915050565b600061433582614503565b915061434083614503565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143755761437461468e565b5b828201905092915050565b600061438b82614503565b915061439683614503565b9250826143a6576143a56146bd565b5b828204905092915050565b60006143bc82614503565b91506143c783614503565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614400576143ff61468e565b5b828202905092915050565b6000614416826144c7565b9150614421836144c7565b9250828210156144345761443361468e565b5b828203905092915050565b600061444a82614503565b915061445583614503565b9250828210156144685761446761468e565b5b828203905092915050565b600061447e826144e3565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561454e578082015181840152602081019050614533565b8381111561455d576000848401525b50505050565b600061456e82614503565b915060008214156145825761458161468e565b5b600182039050919050565b600060028204905060018216806145a557607f821691505b602082108114156145b9576145b86146ec565b5b50919050565b6145c882614797565b810181811067ffffffffffffffff821117156145e7576145e661474a565b5b80604052505050565b60006145fb82614503565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561462e5761462d61468e565b5b600182019050919050565b60006146448261464b565b9050919050565b6000614656826147a8565b9050919050565b600061466882614503565b915061467383614503565b925082614683576146826146bd565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f43414e4e4f545f4d494e545f544841545f4d414e590000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f494e56414c49445f455448000000000000000000000000000000000000000000600082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f414444524553535f4e4f545f57484954454c4953544544000000000000000000600082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f5045525f57414c4c45545f4c494d49545f524541434845440000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f4e4f545f454e4f5547485f535550504c595f544f5f4d494e545f44455349524560008201527f445f414d4f554e54000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f53414c455f4841535f4e4f545f535441525445445f5945540000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e4f545f454e4f5547485f535550504c595f544f5f47495645415741595f444560008201527f53495245445f414d4f554e540000000000000000000000000000000000000000602082015250565b7f494e56414c49445f5155414e5449545900000000000000000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b614fad81614473565b8114614fb857600080fd5b50565b614fc481614485565b8114614fcf57600080fd5b50565b614fdb81614491565b8114614fe657600080fd5b50565b614ff28161449b565b8114614ffd57600080fd5b50565b61500981614503565b811461501457600080fd5b5056fea2646970667358221220f70fd4f5708cd46a2e9781bdee0f68f98dbbd409c33d031e097b7a08196d244b64736f6c6343000807003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000c556e646572546865526f636b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004524f434b00000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061020f5760003560e01c80638da5cb5b11610118578063c87b56dd116100a0578063dc33e6811161006f578063dc33e6811461077c578063e985e9c5146107b9578063f2fde38b146107f6578063f6fa26ab1461081f578063f968adbe146108365761020f565b8063c87b56dd146106c0578063ca69e323146106fd578063d7224ba014610728578063dab5f340146107535761020f565b8063a035b1fe116100e7578063a035b1fe14610610578063a10866ef1461063b578063a22cb46514610652578063b88d4fde1461067b578063ba41b0c6146106a45761020f565b80638da5cb5b1461055457806391b7f5ed1461057f5780639231ab2a146105a857806395d89b41146105e55761020f565b806333bc1c5c1161019b57806355f804b31161016a57806355f804b31461046f5780636352211e14610498578063639814e0146104d557806370a0823114610500578063715018a61461053d5761020f565b806333bc1c5c146103c75780633ccfd60b146103f257806342842e0e146104095780634f6ccce7146104325761020f565b80630aada278116101e25780630aada278146102e257806318160ddd1461030b57806323b872dd146103365780632f745c591461035f57806331ffd6f11461039c5761020f565b806301ffc9a71461021457806306fdde0314610251578063081812fc1461027c578063095ea7b3146102b9575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190613683565b610861565b6040516102489190613dec565b60405180910390f35b34801561025d57600080fd5b506102666109ab565b6040516102739190613e07565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e919061372a565b610a3d565b6040516102b09190613d85565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db9190613616565b610ac2565b005b3480156102ee57600080fd5b5061030960048036038101906103049190613616565b610bdb565b005b34801561031757600080fd5b50610320610cbc565b60405161032d9190614204565b60405180910390f35b34801561034257600080fd5b5061035d60048036038101906103589190613500565b610cd1565b005b34801561036b57600080fd5b5061038660048036038101906103819190613616565b610ce1565b6040516103939190614204565b60405180910390f35b3480156103a857600080fd5b506103b1610edf565b6040516103be9190613dec565b60405180910390f35b3480156103d357600080fd5b506103dc610ef2565b6040516103e99190613dec565b60405180910390f35b3480156103fe57600080fd5b50610407610f05565b005b34801561041557600080fd5b50610430600480360381019061042b9190613500565b610fca565b005b34801561043e57600080fd5b506104596004803603810190610454919061372a565b610fea565b6040516104669190614204565b60405180910390f35b34801561047b57600080fd5b50610496600480360381019061049191906136dd565b61103d565b005b3480156104a457600080fd5b506104bf60048036038101906104ba919061372a565b6110cf565b6040516104cc9190613d85565b60405180910390f35b3480156104e157600080fd5b506104ea6110e5565b6040516104f79190614204565b60405180910390f35b34801561050c57600080fd5b5061052760048036038101906105229190613493565b6110eb565b6040516105349190614204565b60405180910390f35b34801561054957600080fd5b506105526111d4565b005b34801561056057600080fd5b5061056961125c565b6040516105769190613d85565b60405180910390f35b34801561058b57600080fd5b506105a660048036038101906105a1919061372a565b611285565b005b3480156105b457600080fd5b506105cf60048036038101906105ca919061372a565b61130b565b6040516105dc91906141e9565b60405180910390f35b3480156105f157600080fd5b506105fa611323565b6040516106079190613e07565b60405180910390f35b34801561061c57600080fd5b506106256113b5565b6040516106329190614204565b60405180910390f35b34801561064757600080fd5b506106506113bb565b005b34801561065e57600080fd5b50610679600480360381019061067491906135d6565b611463565b005b34801561068757600080fd5b506106a2600480360381019061069d9190613553565b6115e4565b005b6106be60048036038101906106b99190613757565b611640565b005b3480156106cc57600080fd5b506106e760048036038101906106e2919061372a565b61197b565b6040516106f49190613e07565b60405180910390f35b34801561070957600080fd5b50610712611a19565b60405161071f9190614204565b60405180910390f35b34801561073457600080fd5b5061073d611a1f565b60405161074a9190614204565b60405180910390f35b34801561075f57600080fd5b5061077a60048036038101906107759190613656565b611a25565b005b34801561078857600080fd5b506107a3600480360381019061079e9190613493565b611aab565b6040516107b09190614204565b60405180910390f35b3480156107c557600080fd5b506107e060048036038101906107db91906134c0565b611abd565b6040516107ed9190613dec565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190613493565b611b51565b005b34801561082b57600080fd5b50610834611c49565b005b34801561084257600080fd5b5061084b611cf1565b6040516108589190614204565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061092c57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061099457507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109a457506109a382611cf7565b5b9050919050565b6060600280546109ba9061458d565b80601f01602080910402602001604051908101604052809291908181526020018280546109e69061458d565b8015610a335780601f10610a0857610100808354040283529160200191610a33565b820191906000526020600020905b815481529060010190602001808311610a1657829003601f168201915b5050505050905090565b6000610a4882611d61565b610a87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7e906141a9565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610acd826110cf565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3590614089565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b5d611d6f565b73ffffffffffffffffffffffffffffffffffffffff161480610b8c5750610b8b81610b86611d6f565b611abd565b5b610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc290613f89565b60405180910390fd5b610bd6838383611d77565b505050565b610be3611d6f565b73ffffffffffffffffffffffffffffffffffffffff16610c0161125c565b73ffffffffffffffffffffffffffffffffffffffff1614610c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4e90613fe9565b60405180910390fd5b600d5481610c63610cbc565b610c6d919061432a565b1115610cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca590614129565b60405180910390fd5b610cb88282611e29565b5050565b600060018054610ccc919061443f565b905090565b610cdc838383611e47565b505050565b6000610cec836110eb565b8210610d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2490613e29565b60405180910390fd5b6000610d37610cbc565b905060008060005b83811015610e9d576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610e3157806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e895786841415610e7a578195505050505050610ed9565b8380610e85906145f0565b9450505b508080610e95906145f0565b915050610d3f565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed090614169565b60405180910390fd5b92915050565b600a60019054906101000a900460ff1681565b600a60009054906101000a900460ff1681565b610f0d611d6f565b73ffffffffffffffffffffffffffffffffffffffff16610f2b61125c565b73ffffffffffffffffffffffffffffffffffffffff1614610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7890613fe9565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610fc7573d6000803e3d6000fd5b50565b610fe5838383604051806020016040528060008152506115e4565b505050565b6000610ff4610cbc565b8210611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c90613ee9565b60405180910390fd5b819050919050565b611045611d6f565b73ffffffffffffffffffffffffffffffffffffffff1661106361125c565b73ffffffffffffffffffffffffffffffffffffffff16146110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b090613fe9565b60405180910390fd5b8181600f91906110ca9291906131d4565b505050565b60006110da82612400565b600001519050919050565b600c5481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390613fa9565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b6111dc611d6f565b73ffffffffffffffffffffffffffffffffffffffff166111fa61125c565b73ffffffffffffffffffffffffffffffffffffffff1614611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790613fe9565b60405180910390fd5b61125a6000612603565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61128d611d6f565b73ffffffffffffffffffffffffffffffffffffffff166112ab61125c565b73ffffffffffffffffffffffffffffffffffffffff1614611301576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f890613fe9565b60405180910390fd5b80600e8190555050565b61131361325a565b61131c82612400565b9050919050565b6060600380546113329061458d565b80601f016020809104026020016040519081016040528092919081815260200182805461135e9061458d565b80156113ab5780601f10611380576101008083540402835291602001916113ab565b820191906000526020600020905b81548152906001019060200180831161138e57829003601f168201915b5050505050905090565b600e5481565b6113c3611d6f565b73ffffffffffffffffffffffffffffffffffffffff166113e161125c565b73ffffffffffffffffffffffffffffffffffffffff1614611437576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142e90613fe9565b60405180910390fd5b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550565b61146b611d6f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d090614029565b60405180910390fd5b80600760006114e6611d6f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611593611d6f565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516115d89190613dec565b60405180910390a35050565b6115ef848484611e47565b6115fb848484846126c7565b61163a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611631906140c9565b60405180910390fd5b50505050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16146116ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a590613f49565b60405180910390fd5b600a60019054906101000a900460ff16806116d55750600a60009054906101000a900460ff165b611714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170b906140a9565b60405180910390fd5b600c548261172133611aab565b61172b919061432a565b111561176c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176390613f69565b60405180910390fd5b600082116117af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a690614149565b60405180910390fd5b600b548211156117f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117eb90613e49565b60405180910390fd5b600d5482611800610cbc565b61180a919061432a565b111561184b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184290614069565b60405180910390fd5b600a60019054906101000a900460ff16156118a9576118698161285e565b6118a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189f90613ec9565b60405180910390fd5b5b60006118b433611aab565b111561190f5781600e546118c891906143b1565b34101561190a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190190613e89565b60405180910390fd5b61196d565b600e5482600e5461192091906143b1565b61192a919061443f565b34101561196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390613e89565b60405180910390fd5b5b6119773383611e29565b5050565b606061198682611d61565b6119c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bc90614009565b60405180910390fd5b60006119d08361289f565b905060008151116119f05760405180602001604052806000815250611a11565b80604051602001611a019190613d63565b6040516020818303038152906040525b915050919050565b600d5481565b60085481565b611a2d611d6f565b73ffffffffffffffffffffffffffffffffffffffff16611a4b61125c565b73ffffffffffffffffffffffffffffffffffffffff1614611aa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9890613fe9565b60405180910390fd5b8060108190555050565b6000611ab682612946565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611b59611d6f565b73ffffffffffffffffffffffffffffffffffffffff16611b7761125c565b73ffffffffffffffffffffffffffffffffffffffff1614611bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc490613fe9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613e69565b60405180910390fd5b611c4681612603565b50565b611c51611d6f565b73ffffffffffffffffffffffffffffffffffffffff16611c6f61125c565b73ffffffffffffffffffffffffffffffffffffffff1614611cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbc90613fe9565b60405180910390fd5b600a60019054906101000a900460ff1615600a60016101000a81548160ff021916908315150217905550565b600b5481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600060015482109050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b611e43828260405180602001604052806000815250612a2f565b5050565b6000611e5282612400565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611e79611d6f565b73ffffffffffffffffffffffffffffffffffffffff161480611ed55750611e9e611d6f565b73ffffffffffffffffffffffffffffffffffffffff16611ebd84610a3d565b73ffffffffffffffffffffffffffffffffffffffff16145b80611ef15750611ef08260000151611eeb611d6f565b611abd565b5b905080611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a90614049565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611fa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9c90613fc9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200c90613f09565b60405180910390fd5b6120228585856001612f0f565b6120326000848460000151611d77565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166120a0919061440b565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661214491906142e4565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600060018461224a919061432a565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612390576122c081611d61565b1561238f576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46123f88686866001612f15565b505050505050565b61240861325a565b61241182611d61565b612450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244790613ea9565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000003e883106124b45760017f00000000000000000000000000000000000000000000000000000000000003e8846124a7919061443f565b6124b1919061432a565b90505b60008390505b8181106125c2576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146125ae578093505050506125fe565b5080806125ba90614563565b9150506124ba565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f590614189565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006126e88473ffffffffffffffffffffffffffffffffffffffff16612f1b565b15612851578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612711611d6f565b8786866040518563ffffffff1660e01b81526004016127339493929190613da0565b602060405180830381600087803b15801561274d57600080fd5b505af192505050801561277e57506040513d601f19601f8201168201806040525081019061277b91906136b0565b60015b612801573d80600081146127ae576040519150601f19603f3d011682016040523d82523d6000602084013e6127b3565b606091505b506000815114156127f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f0906140c9565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612856565b600190505b949350505050565b600080336040516020016128729190613d24565b6040516020818303038152906040528051906020012090506128978360105483612f3e565b915050919050565b60606128aa82611d61565b6128e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e090614009565b60405180910390fd5b60006128f3612f55565b90506000815111612913576040518060200160405280600081525061293e565b8061291d84612fe7565b60405160200161292e929190613d3f565b6040516020818303038152906040525b915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ae90613f29565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9d90614109565b60405180910390fd5b612aaf81611d61565b15612aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae6906140e9565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000003e8831115612b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b49906141c9565b60405180910390fd5b612b5f6000858386612f0f565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612c5c91906142e4565b6fffffffffffffffffffffffffffffffff168152602001858360200151612c8391906142e4565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b85811015612ef257818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612e9260008884886126c7565b612ed1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec8906140c9565b60405180910390fd5b8180612edc906145f0565b9250508080612eea906145f0565b915050612e21565b5080600181905550612f076000878588612f15565b505050505050565b50505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600082612f4b8584613148565b1490509392505050565b6060600f8054612f649061458d565b80601f0160208091040260200160405190810160405280929190818152602001828054612f909061458d565b8015612fdd5780601f10612fb257610100808354040283529160200191612fdd565b820191906000526020600020905b815481529060010190602001808311612fc057829003601f168201915b5050505050905090565b6060600082141561302f576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613143565b600082905060005b6000821461306157808061304a906145f0565b915050600a8261305a9190614380565b9150613037565b60008167ffffffffffffffff81111561307d5761307c61474a565b5b6040519080825280601f01601f1916602001820160405280156130af5781602001600182028036833780820191505090505b5090505b6000851461313c576001826130c8919061443f565b9150600a856130d7919061465d565b60306130e3919061432a565b60f81b8183815181106130f9576130f861471b565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856131359190614380565b94506130b3565b8093505050505b919050565b60008082905060005b84518110156131b257600085828151811061316f5761316e61471b565b5b602002602001015190508083116131915761318a83826131bd565b925061319e565b61319b81846131bd565b92505b5080806131aa906145f0565b915050613151565b508091505092915050565b600082600052816020526040600020905092915050565b8280546131e09061458d565b90600052602060002090601f0160209004810192826132025760008555613249565b82601f1061321b57803560ff1916838001178555613249565b82800160010185558215613249579182015b8281111561324857823582559160200191906001019061322d565b5b5090506132569190613294565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156132ad576000816000905550600101613295565b5090565b60006132c46132bf84614244565b61421f565b905080838252602082019050828560208602820111156132e7576132e6614783565b5b60005b8581101561331757816132fd88826133bb565b8452602084019350602083019250506001810190506132ea565b5050509392505050565b600061333461332f84614270565b61421f565b9050828152602081018484840111156133505761334f614788565b5b61335b848285614521565b509392505050565b60008135905061337281614fa4565b92915050565b600082601f83011261338d5761338c61477e565b5b813561339d8482602086016132b1565b91505092915050565b6000813590506133b581614fbb565b92915050565b6000813590506133ca81614fd2565b92915050565b6000813590506133df81614fe9565b92915050565b6000815190506133f481614fe9565b92915050565b600082601f83011261340f5761340e61477e565b5b813561341f848260208601613321565b91505092915050565b60008083601f84011261343e5761343d61477e565b5b8235905067ffffffffffffffff81111561345b5761345a614779565b5b60208301915083600182028301111561347757613476614783565b5b9250929050565b60008135905061348d81615000565b92915050565b6000602082840312156134a9576134a8614792565b5b60006134b784828501613363565b91505092915050565b600080604083850312156134d7576134d6614792565b5b60006134e585828601613363565b92505060206134f685828601613363565b9150509250929050565b60008060006060848603121561351957613518614792565b5b600061352786828701613363565b935050602061353886828701613363565b92505060406135498682870161347e565b9150509250925092565b6000806000806080858703121561356d5761356c614792565b5b600061357b87828801613363565b945050602061358c87828801613363565b935050604061359d8782880161347e565b925050606085013567ffffffffffffffff8111156135be576135bd61478d565b5b6135ca878288016133fa565b91505092959194509250565b600080604083850312156135ed576135ec614792565b5b60006135fb85828601613363565b925050602061360c858286016133a6565b9150509250929050565b6000806040838503121561362d5761362c614792565b5b600061363b85828601613363565b925050602061364c8582860161347e565b9150509250929050565b60006020828403121561366c5761366b614792565b5b600061367a848285016133bb565b91505092915050565b60006020828403121561369957613698614792565b5b60006136a7848285016133d0565b91505092915050565b6000602082840312156136c6576136c5614792565b5b60006136d4848285016133e5565b91505092915050565b600080602083850312156136f4576136f3614792565b5b600083013567ffffffffffffffff8111156137125761371161478d565b5b61371e85828601613428565b92509250509250929050565b6000602082840312156137405761373f614792565b5b600061374e8482850161347e565b91505092915050565b6000806040838503121561376e5761376d614792565b5b600061377c8582860161347e565b925050602083013567ffffffffffffffff81111561379d5761379c61478d565b5b6137a985828601613378565b9150509250929050565b6137bc81614473565b82525050565b6137cb81614473565b82525050565b6137e26137dd82614473565b614639565b82525050565b6137f181614485565b82525050565b6000613802826142a1565b61380c81856142b7565b935061381c818560208601614530565b61382581614797565b840191505092915050565b600061383b826142ac565b61384581856142c8565b9350613855818560208601614530565b61385e81614797565b840191505092915050565b6000613874826142ac565b61387e81856142d9565b935061388e818560208601614530565b80840191505092915050565b60006138a76022836142c8565b91506138b2826147b5565b604082019050919050565b60006138ca6015836142c8565b91506138d582614804565b602082019050919050565b60006138ed6026836142c8565b91506138f88261482d565b604082019050919050565b6000613910600b836142c8565b915061391b8261487c565b602082019050919050565b6000613933602a836142c8565b915061393e826148a5565b604082019050919050565b60006139566017836142c8565b9150613961826148f4565b602082019050919050565b60006139796023836142c8565b91506139848261491d565b604082019050919050565b600061399c6025836142c8565b91506139a78261496c565b604082019050919050565b60006139bf6031836142c8565b91506139ca826149bb565b604082019050919050565b60006139e2601e836142c8565b91506139ed82614a0a565b602082019050919050565b6000613a056018836142c8565b9150613a1082614a33565b602082019050919050565b6000613a286039836142c8565b9150613a3382614a5c565b604082019050919050565b6000613a4b602b836142c8565b9150613a5682614aab565b604082019050919050565b6000613a6e6026836142c8565b9150613a7982614afa565b604082019050919050565b6000613a916005836142d9565b9150613a9c82614b49565b600582019050919050565b6000613ab46020836142c8565b9150613abf82614b72565b602082019050919050565b6000613ad7602f836142c8565b9150613ae282614b9b565b604082019050919050565b6000613afa601a836142c8565b9150613b0582614bea565b602082019050919050565b6000613b1d6032836142c8565b9150613b2882614c13565b604082019050919050565b6000613b406028836142c8565b9150613b4b82614c62565b604082019050919050565b6000613b636022836142c8565b9150613b6e82614cb1565b604082019050919050565b6000613b866018836142c8565b9150613b9182614d00565b602082019050919050565b6000613ba96033836142c8565b9150613bb482614d29565b604082019050919050565b6000613bcc601d836142c8565b9150613bd782614d78565b602082019050919050565b6000613bef6021836142c8565b9150613bfa82614da1565b604082019050919050565b6000613c12602c836142c8565b9150613c1d82614df0565b604082019050919050565b6000613c356010836142c8565b9150613c4082614e3f565b602082019050919050565b6000613c58602e836142c8565b9150613c6382614e68565b604082019050919050565b6000613c7b602f836142c8565b9150613c8682614eb7565b604082019050919050565b6000613c9e602d836142c8565b9150613ca982614f06565b604082019050919050565b6000613cc16022836142c8565b9150613ccc82614f55565b604082019050919050565b604082016000820151613ced60008501826137b3565b506020820151613d006020850182613d15565b50505050565b613d0f81614503565b82525050565b613d1e8161450d565b82525050565b6000613d3082846137d1565b60148201915081905092915050565b6000613d4b8285613869565b9150613d578284613869565b91508190509392505050565b6000613d6f8284613869565b9150613d7a82613a84565b915081905092915050565b6000602082019050613d9a60008301846137c2565b92915050565b6000608082019050613db560008301876137c2565b613dc260208301866137c2565b613dcf6040830185613d06565b8181036060830152613de181846137f7565b905095945050505050565b6000602082019050613e0160008301846137e8565b92915050565b60006020820190508181036000830152613e218184613830565b905092915050565b60006020820190508181036000830152613e428161389a565b9050919050565b60006020820190508181036000830152613e62816138bd565b9050919050565b60006020820190508181036000830152613e82816138e0565b9050919050565b60006020820190508181036000830152613ea281613903565b9050919050565b60006020820190508181036000830152613ec281613926565b9050919050565b60006020820190508181036000830152613ee281613949565b9050919050565b60006020820190508181036000830152613f028161396c565b9050919050565b60006020820190508181036000830152613f228161398f565b9050919050565b60006020820190508181036000830152613f42816139b2565b9050919050565b60006020820190508181036000830152613f62816139d5565b9050919050565b60006020820190508181036000830152613f82816139f8565b9050919050565b60006020820190508181036000830152613fa281613a1b565b9050919050565b60006020820190508181036000830152613fc281613a3e565b9050919050565b60006020820190508181036000830152613fe281613a61565b9050919050565b6000602082019050818103600083015261400281613aa7565b9050919050565b6000602082019050818103600083015261402281613aca565b9050919050565b6000602082019050818103600083015261404281613aed565b9050919050565b6000602082019050818103600083015261406281613b10565b9050919050565b6000602082019050818103600083015261408281613b33565b9050919050565b600060208201905081810360008301526140a281613b56565b9050919050565b600060208201905081810360008301526140c281613b79565b9050919050565b600060208201905081810360008301526140e281613b9c565b9050919050565b6000602082019050818103600083015261410281613bbf565b9050919050565b6000602082019050818103600083015261412281613be2565b9050919050565b6000602082019050818103600083015261414281613c05565b9050919050565b6000602082019050818103600083015261416281613c28565b9050919050565b6000602082019050818103600083015261418281613c4b565b9050919050565b600060208201905081810360008301526141a281613c6e565b9050919050565b600060208201905081810360008301526141c281613c91565b9050919050565b600060208201905081810360008301526141e281613cb4565b9050919050565b60006040820190506141fe6000830184613cd7565b92915050565b60006020820190506142196000830184613d06565b92915050565b600061422961423a565b905061423582826145bf565b919050565b6000604051905090565b600067ffffffffffffffff82111561425f5761425e61474a565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561428b5761428a61474a565b5b61429482614797565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006142ef826144c7565b91506142fa836144c7565b9250826fffffffffffffffffffffffffffffffff0382111561431f5761431e61468e565b5b828201905092915050565b600061433582614503565b915061434083614503565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143755761437461468e565b5b828201905092915050565b600061438b82614503565b915061439683614503565b9250826143a6576143a56146bd565b5b828204905092915050565b60006143bc82614503565b91506143c783614503565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614400576143ff61468e565b5b828202905092915050565b6000614416826144c7565b9150614421836144c7565b9250828210156144345761443361468e565b5b828203905092915050565b600061444a82614503565b915061445583614503565b9250828210156144685761446761468e565b5b828203905092915050565b600061447e826144e3565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561454e578082015181840152602081019050614533565b8381111561455d576000848401525b50505050565b600061456e82614503565b915060008214156145825761458161468e565b5b600182039050919050565b600060028204905060018216806145a557607f821691505b602082108114156145b9576145b86146ec565b5b50919050565b6145c882614797565b810181811067ffffffffffffffff821117156145e7576145e661474a565b5b80604052505050565b60006145fb82614503565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561462e5761462d61468e565b5b600182019050919050565b60006146448261464b565b9050919050565b6000614656826147a8565b9050919050565b600061466882614503565b915061467383614503565b925082614683576146826146bd565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f43414e4e4f545f4d494e545f544841545f4d414e590000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f494e56414c49445f455448000000000000000000000000000000000000000000600082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f414444524553535f4e4f545f57484954454c4953544544000000000000000000600082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f5045525f57414c4c45545f4c494d49545f524541434845440000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f4e4f545f454e4f5547485f535550504c595f544f5f4d494e545f44455349524560008201527f445f414d4f554e54000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f53414c455f4841535f4e4f545f535441525445445f5945540000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f4e4f545f454e4f5547485f535550504c595f544f5f47495645415741595f444560008201527f53495245445f414d4f554e540000000000000000000000000000000000000000602082015250565b7f494e56414c49445f5155414e5449545900000000000000000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b614fad81614473565b8114614fb857600080fd5b50565b614fc481614485565b8114614fcf57600080fd5b50565b614fdb81614491565b8114614fe657600080fd5b50565b614ff28161449b565b8114614ffd57600080fd5b50565b61500981614503565b811461501457600080fd5b5056fea2646970667358221220f70fd4f5708cd46a2e9781bdee0f68f98dbbd409c33d031e097b7a08196d244b64736f6c63430008070033

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

00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000c556e646572546865526f636b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004524f434b00000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _NAME (string): UnderTheRock
Arg [1] : _SYMBOL (string): ROCK

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [3] : 556e646572546865526f636b0000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [5] : 524f434b00000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

24202:3465:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13110:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14896:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16105:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15686:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26664:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11897:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16940:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12240:864;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24307:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24270:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27555:109;;;;;;;;;;;;;:::i;:::-;;17108:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12006:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27441:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14766:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24383:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13538:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7091:94;;;;;;;;;;;;;:::i;:::-;;6872:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27040:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24945:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15002:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24458:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27234:93;;;;;;;;;;;;;:::i;:::-;;16403:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17291:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25809:847;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25120:476;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24422:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20912:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27144:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24824:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16720:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7191:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27335:98;;;;;;;;;;;;;:::i;:::-;;24349:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13110:422;13257:4;13314:25;13299:40;;;:11;:40;;;;:105;;;;13371:33;13356:48;;;:11;:48;;;;13299:105;:172;;;;13436:35;13421:50;;;:11;:50;;;;13299:172;:225;;;;13488:36;13512:11;13488:23;:36::i;:::-;13299:225;13279:245;;13110:422;;;:::o;14896:100::-;14950:13;14983:5;14976:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14896:100;:::o;16105:292::-;16209:7;16256:16;16264:7;16256;:16::i;:::-;16234:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;16365:15;:24;16381:7;16365:24;;;;;;;;;;;;;;;;;;;;;16358:31;;16105:292;;;:::o;15686:413::-;15759:13;15775:24;15791:7;15775:15;:24::i;:::-;15759:40;;15824:5;15818:11;;:2;:11;;;;15810:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;15919:5;15903:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;15928:37;15945:5;15952:12;:10;:12::i;:::-;15928:16;:37::i;:::-;15903:62;15881:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;16063:28;16072:2;16076:7;16085:5;16063:8;:28::i;:::-;15748:351;15686:413;;:::o;26664:235::-;7016:12;:10;:12::i;:::-;7005:23;;:7;:5;:7::i;:::-;:23;;;6997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26794:8:::1;;26782;26766:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:36;;26758:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;26862:29;26872:8;26882;26862:9;:29::i;:::-;26664:235:::0;;:::o;11897:103::-;11950:7;11991:1;11977:12;;:15;;;;:::i;:::-;11970:22;;11897:103;:::o;16940:162::-;17066:28;17076:4;17082:2;17086:7;17066:9;:28::i;:::-;16940:162;;;:::o;12240:864::-;12365:7;12406:16;12416:5;12406:9;:16::i;:::-;12398:5;:24;12390:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12472:22;12497:13;:11;:13::i;:::-;12472:38;;12521:19;12555:25;12609:9;12604:426;12628:14;12624:1;:18;12604:426;;;12664:31;12698:11;:14;12710:1;12698:14;;;;;;;;;;;12664:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12757:1;12731:28;;:9;:14;;;:28;;;12727:103;;12800:9;:14;;;12780:34;;12727:103;12869:5;12848:26;;:17;:26;;;12844:175;;;12914:5;12899:11;:20;12895:77;;;12951:1;12944:8;;;;;;;;;12895:77;12990:13;;;;;:::i;:::-;;;;12844:175;12649:381;12644:3;;;;;:::i;:::-;;;;12604:426;;;;13040:56;;;;;;;;;;:::i;:::-;;;;;;;;12240:864;;;;;:::o;24307:33::-;;;;;;;;;;;;;:::o;24270:30::-;;;;;;;;;;;;;:::o;27555:109::-;7016:12;:10;:12::i;:::-;7005:23;;:7;:5;:7::i;:::-;:23;;;6997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27613:10:::1;27605:28;;:51;27634:21;27605:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;27555:109::o:0;17108:177::-;17238:39;17255:4;17261:2;17265:7;17238:39;;;;;;;;;;;;:16;:39::i;:::-;17108:177;;;:::o;12006:228::-;12109:7;12150:13;:11;:13::i;:::-;12142:5;:21;12134:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12221:5;12214:12;;12006:228;;;:::o;27441:106::-;7016:12;:10;:12::i;:::-;7005:23;;:7;:5;:7::i;:::-;:23;;;6997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27532:7:::1;;27516:13;:23;;;;;;;:::i;:::-;;27441:106:::0;;:::o;14766:124::-;14830:7;14857:20;14869:7;14857:11;:20::i;:::-;:25;;;14850:32;;14766:124;;;:::o;24383:32::-;;;;:::o;13538:258::-;13602:7;13661:1;13644:19;;:5;:19;;;;13622:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;13760:12;:19;13773:5;13760:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;13752:36;;13745:43;;13538:258;;;:::o;7091:94::-;7016:12;:10;:12::i;:::-;7005:23;;:7;:5;:7::i;:::-;:23;;;6997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7156:21:::1;7174:1;7156:9;:21::i;:::-;7091:94::o:0;6872:87::-;6918:7;6945:6;;;;;;;;;;;6938:13;;6872:87;:::o;27040:96::-;7016:12;:10;:12::i;:::-;7005:23;;:7;:5;:7::i;:::-;:23;;;6997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27117:11:::1;27109:5;:19;;;;27040:96:::0;:::o;24945:167::-;25038:21;;:::i;:::-;25084:20;25096:7;25084:11;:20::i;:::-;25077:27;;24945:167;;;:::o;15002:104::-;15058:13;15091:7;15084:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15002:104;:::o;24458:35::-;;;;:::o;27234:93::-;7016:12;:10;:12::i;:::-;7005:23;;:7;:5;:7::i;:::-;:23;;;6997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27309:10:::1;;;;;;;;;;;27308:11;27295:10;;:24;;;;;;;;;;;;;;;;;;27234:93::o:0;16403:311::-;16533:12;:10;:12::i;:::-;16521:24;;:8;:24;;;;16513:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;16634:8;16589:18;:32;16608:12;:10;:12::i;:::-;16589:32;;;;;;;;;;;;;;;:42;16622:8;16589:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;16687:8;16658:48;;16673:12;:10;:12::i;:::-;16658:48;;;16697:8;16658:48;;;;;;:::i;:::-;;;;;;;;16403:311;;:::o;17291:355::-;17450:28;17460:4;17466:2;17470:7;17450:9;:28::i;:::-;17511:48;17534:4;17540:2;17544:7;17553:5;17511:22;:48::i;:::-;17489:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;17291:355;;;;:::o;25809:847::-;24751:10;24738:23;;:9;:23;;;24730:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;25914:13:::1;;;;;;;;;;;:27;;;;25931:10;;;;;;;;;;;25914:27;25906:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26028:13;;26016:8;25989:24;26002:10;25989:12;:24::i;:::-;:35;;;;:::i;:::-;:52;;25981:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;26100:1;26089:8;:12;26081:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;26153:8;;26141;:20;;26133:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;26234:8;;26222;26206:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:36;;26198:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;26301:13;;;;;;;;;;;26298:93;;;26338:13;26345:5;26338:6;:13::i;:::-;26330:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;26298:93;26431:1;26404:24;26417:10;26404:12;:24::i;:::-;:28;26401:206;;;26477:8;26469:5;;:16;;;;:::i;:::-;26456:9;:29;;26448:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;26401:206;;;26574:5;;26562:8;26554:5;;:16;;;;:::i;:::-;26553:26;;;;:::i;:::-;26540:9;:39;;26532:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;26401:206;26617:31;26627:10;26639:8;26617:9;:31::i;:::-;25809:847:::0;;:::o;25120:476::-;25238:13;25291:16;25299:7;25291;:16::i;:::-;25269:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;25395:23;25421;25436:7;25421:14;:23::i;:::-;25395:49;;25501:1;25481:9;25475:23;:27;:113;;;;;;;;;;;;;;;;;25546:9;25529:36;;;;;;;;:::i;:::-;;;;;;;;;;;;;25475:113;25455:133;;;25120:476;;;:::o;24422:29::-;;;;:::o;20912:43::-;;;;:::o;27144:82::-;7016:12;:10;:12::i;:::-;7005:23;;:7;:5;:7::i;:::-;:23;;;6997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27213:5:::1;27206:4;:12;;;;27144:82:::0;:::o;24824:113::-;24882:7;24909:20;24923:5;24909:13;:20::i;:::-;24902:27;;24824:113;;;:::o;16720:214::-;16862:4;16891:18;:25;16910:5;16891:25;;;;;;;;;;;;;;;:35;16917:8;16891:35;;;;;;;;;;;;;;;;;;;;;;;;;16884:42;;16720:214;;;;:::o;7191:229::-;7016:12;:10;:12::i;:::-;7005:23;;:7;:5;:7::i;:::-;:23;;;6997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7314:1:::1;7294:22;;:8;:22;;;;7272:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;7393:19;7403:8;7393:9;:19::i;:::-;7191:229:::0;:::o;27335:98::-;7016:12;:10;:12::i;:::-;7005:23;;:7;:5;:7::i;:::-;:23;;;6997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27412:13:::1;;;;;;;;;;;27411:14;27395:13;;:30;;;;;;;;;;;;;;;;;;27335:98::o:0;24349:27::-;;;;:::o;9404:207::-;9534:4;9578:25;9563:40;;;:11;:40;;;;9556:47;;9404:207;;;:::o;17652:111::-;17709:4;17743:12;;17733:7;:22;17726:29;;17652:111;;;:::o;6379:98::-;6432:7;6459:10;6452:17;;6379:98;:::o;20708:196::-;20850:2;20823:15;:24;20839:7;20823:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;20888:7;20884:2;20868:28;;20877:5;20868:28;;;;;;;;;;;;20708:196;;;:::o;17771:104::-;17840:27;17850:2;17854:8;17840:27;;;;;;;;;;;;:9;:27::i;:::-;17771:104;;:::o;19162:1540::-;19277:35;19315:20;19327:7;19315:11;:20::i;:::-;19277:58;;19348:22;19390:13;:18;;;19374:34;;:12;:10;:12::i;:::-;:34;;;:87;;;;19449:12;:10;:12::i;:::-;19425:36;;:20;19437:7;19425:11;:20::i;:::-;:36;;;19374:87;:154;;;;19478:50;19495:13;:18;;;19515:12;:10;:12::i;:::-;19478:16;:50::i;:::-;19374:154;19348:181;;19564:17;19542:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;19716:4;19694:26;;:13;:18;;;:26;;;19672:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;19819:1;19805:16;;:2;:16;;;;19797:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;19876:43;19898:4;19904:2;19908:7;19917:1;19876:21;:43::i;:::-;19930:49;19947:1;19951:7;19960:13;:18;;;19930:8;:49::i;:::-;20022:1;19992:12;:18;20005:4;19992:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20062:1;20034:12;:16;20047:2;20034:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20097:43;;;;;;;;20112:2;20097:43;;;;;;20123:15;20097:43;;;;;20074:11;:20;20086:7;20074:20;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20265:19;20297:1;20287:7;:11;;;;:::i;:::-;20265:33;;20354:1;20313:43;;:11;:24;20325:11;20313:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;20309:288;;;20377:20;20385:11;20377:7;:20::i;:::-;20373:213;;;20445:125;;;;;;;;20482:13;:18;;;20445:125;;;;;;20523:13;:28;;;20445:125;;;;;20418:11;:24;20430:11;20418:24;;;;;;;;;;;:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20373:213;20309:288;20633:7;20629:2;20614:27;;20623:4;20614:27;;;;;;;;;;;;20652:42;20673:4;20679:2;20683:7;20692:1;20652:20;:42::i;:::-;19266:1436;;;19162:1540;;;:::o;14078:682::-;14166:21;;:::i;:::-;14213:16;14221:7;14213;:16::i;:::-;14205:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14289:26;14341:12;14330:7;:23;14326:103;;14416:1;14401:12;14391:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;14370:47;;14326:103;14446:12;14461:7;14446:22;;14441:242;14478:18;14470:4;:26;14441:242;;14521:31;14555:11;:17;14567:4;14555:17;;;;;;;;;;;14521:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14617:1;14591:28;;:9;:14;;;:28;;;14587:85;;14647:9;14640:16;;;;;;;14587:85;14506:177;14498:6;;;;;:::i;:::-;;;;14441:242;;;;14695:57;;;;;;;;;;:::i;:::-;;;;;;;;14078:682;;;;:::o;7428:173::-;7484:16;7503:6;;;;;;;;;;;7484:25;;7529:8;7520:6;;:17;;;;;;;;;;;;;;;;;;7584:8;7553:40;;7574:8;7553:40;;;;;;;;;;;;7473:128;7428:173;:::o;21813:985::-;21968:4;21989:15;:2;:13;;;:15::i;:::-;21985:806;;;22058:2;22042:36;;;22101:12;:10;:12::i;:::-;22136:4;22163:7;22193:5;22042:175;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;22021:715;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22421:1;22404:6;:13;:18;22400:321;;;22447:109;;;;;;;;;;:::i;:::-;;;;;;;;22400:321;22671:6;22665:13;22656:6;22652:2;22648:15;22641:38;22021:715;22291:45;;;22281:55;;;:6;:55;;;;22274:62;;;;;21985:806;22775:4;22768:11;;21813:985;;;;;;;:::o;25604:197::-;25667:4;25684:12;25726:10;25709:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;25699:39;;;;;;25684:54;;25756:37;25775:5;25782:4;;25788;25756:18;:37::i;:::-;25749:44;;;25604:197;;;:::o;15112:468::-;15230:13;15283:16;15291:7;15283;:16::i;:::-;15261:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;15387:21;15411:10;:8;:10::i;:::-;15387:34;;15476:1;15458:7;15452:21;:25;:120;;;;;;;;;;;;;;;;;15521:7;15530:18;:7;:16;:18::i;:::-;15504:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15452:120;15432:140;;;15112:468;;;:::o;13804:266::-;13865:7;13924:1;13907:19;;:5;:19;;;;13885:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;14029:12;:19;14042:5;14029:19;;;;;;;;;;;;;;;:32;;;;;;;;;;;;14021:41;;14014:48;;13804:266;;;:::o;17881:1275::-;18004:20;18027:12;;18004:35;;18072:1;18058:16;;:2;:16;;;;18050:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;18132:21;18140:12;18132:7;:21::i;:::-;18131:22;18123:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18218:12;18206:8;:24;;18198:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;18282:61;18312:1;18316:2;18320:12;18334:8;18282:21;:61::i;:::-;18356:30;18389:12;:16;18402:2;18389:16;;;;;;;;;;;;;;;18356:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18435:135;;;;;;;;18491:8;18461:11;:19;;;:39;;;;:::i;:::-;18435:135;;;;;;18550:8;18515:11;:24;;;:44;;;;:::i;:::-;18435:135;;;;;18416:12;:16;18429:2;18416:16;;;;;;;;;;;;;;;:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18609:43;;;;;;;;18624:2;18609:43;;;;;;18635:15;18609:43;;;;;18581:11;:25;18593:12;18581:25;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18665:20;18688:12;18665:35;;18718:9;18713:325;18737:8;18733:1;:12;18713:325;;;18797:12;18793:2;18772:38;;18789:1;18772:38;;;;;;;;;;;;18851:59;18882:1;18886:2;18890:12;18904:5;18851:22;:59::i;:::-;18825:172;;;;;;;;;;;;:::i;:::-;;;;;;;;;19012:14;;;;;:::i;:::-;;;;18747:3;;;;;:::i;:::-;;;;18713:325;;;;19065:12;19050;:27;;;;19088:60;19117:1;19121:2;19125:12;19139:8;19088:20;:60::i;:::-;17993:1163;;;17881:1275;;;:::o;22804:159::-;;;;;:::o;22969:158::-;;;;;:::o;2385:117::-;2445:4;2493:1;2471:7;:19;;;:23;2464:30;;2385:117;;;:::o;23186:190::-;23311:4;23364;23335:25;23348:5;23355:4;23335:12;:25::i;:::-;:33;23328:40;;23186:190;;;;;:::o;26907:114::-;26967:13;27000;26993:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26907:114;:::o;7773:656::-;7829:13;7992:1;7983:5;:10;7979:53;;;8010:10;;;;;;;;;;;;;;;;;;;;;7979:53;8042:12;8057:5;8042:20;;8073:14;8098:78;8113:1;8105:4;:9;8098:78;;8131:8;;;;;:::i;:::-;;;;8162:2;8154:10;;;;;:::i;:::-;;;8098:78;;;8186:19;8218:6;8208:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8186:39;;8236:154;8252:1;8243:5;:10;8236:154;;8280:1;8270:11;;;;;:::i;:::-;;;8347:2;8339:5;:10;;;;:::i;:::-;8326:2;:24;;;;:::i;:::-;8313:39;;8296:6;8303;8296:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;8376:2;8367:11;;;;;:::i;:::-;;;8236:154;;;8414:6;8400:21;;;;;7773:656;;;;:::o;23382:549::-;23492:7;23517:20;23540:4;23517:27;;23560:9;23555:339;23579:5;:12;23575:1;:16;23555:339;;;23613:20;23636:5;23642:1;23636:8;;;;;;;;:::i;:::-;;;;;;;;23613:31;;23679:12;23663;:28;23659:224;;23727:42;23742:12;23756;23727:14;:42::i;:::-;23712:57;;23659:224;;;23825:42;23840:12;23854;23825:14;:42::i;:::-;23810:57;;23659:224;23598:296;23593:3;;;;;:::i;:::-;;;;23555:339;;;;23911:12;23904:19;;;23382:549;;;;:::o;23939:256::-;24034:13;24102:1;24096:4;24089:15;24131:1;24125:4;24118:15;24172:4;24166;24156:21;24147:30;;23939:256;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:410::-;829:5;854:65;870:48;911:6;870:48;:::i;:::-;854:65;:::i;:::-;845:74;;942:6;935:5;928:21;980:4;973:5;969:16;1018:3;1009:6;1004:3;1000:16;997:25;994:112;;;1025:79;;:::i;:::-;994:112;1115:41;1149:6;1144:3;1139;1115:41;:::i;:::-;835:327;752:410;;;;;:::o;1168:139::-;1214:5;1252:6;1239:20;1230:29;;1268:33;1295:5;1268:33;:::i;:::-;1168:139;;;;:::o;1330:370::-;1401:5;1450:3;1443:4;1435:6;1431:17;1427:27;1417:122;;1458:79;;:::i;:::-;1417:122;1575:6;1562:20;1600:94;1690:3;1682:6;1675:4;1667:6;1663:17;1600:94;:::i;:::-;1591:103;;1407:293;1330:370;;;;:::o;1706:133::-;1749:5;1787:6;1774:20;1765:29;;1803:30;1827:5;1803:30;:::i;:::-;1706:133;;;;:::o;1845:139::-;1891:5;1929:6;1916:20;1907:29;;1945:33;1972:5;1945:33;:::i;:::-;1845:139;;;;:::o;1990:137::-;2035:5;2073:6;2060:20;2051:29;;2089:32;2115:5;2089:32;:::i;:::-;1990:137;;;;:::o;2133:141::-;2189:5;2220:6;2214:13;2205:22;;2236:32;2262:5;2236:32;:::i;:::-;2133:141;;;;:::o;2293:338::-;2348:5;2397:3;2390:4;2382:6;2378:17;2374:27;2364:122;;2405:79;;:::i;:::-;2364:122;2522:6;2509:20;2547:78;2621:3;2613:6;2606:4;2598:6;2594:17;2547:78;:::i;:::-;2538:87;;2354:277;2293:338;;;;:::o;2651:553::-;2709:8;2719:6;2769:3;2762:4;2754:6;2750:17;2746:27;2736:122;;2777:79;;:::i;:::-;2736:122;2890:6;2877:20;2867:30;;2920:18;2912:6;2909:30;2906:117;;;2942:79;;:::i;:::-;2906:117;3056:4;3048:6;3044:17;3032:29;;3110:3;3102:4;3094:6;3090:17;3080:8;3076:32;3073:41;3070:128;;;3117:79;;:::i;:::-;3070:128;2651:553;;;;;:::o;3210:139::-;3256:5;3294:6;3281:20;3272:29;;3310:33;3337:5;3310:33;:::i;:::-;3210:139;;;;:::o;3355:329::-;3414:6;3463:2;3451:9;3442:7;3438:23;3434:32;3431:119;;;3469:79;;:::i;:::-;3431:119;3589:1;3614:53;3659:7;3650:6;3639:9;3635:22;3614:53;:::i;:::-;3604:63;;3560:117;3355:329;;;;:::o;3690:474::-;3758:6;3766;3815:2;3803:9;3794:7;3790:23;3786:32;3783:119;;;3821:79;;:::i;:::-;3783:119;3941:1;3966:53;4011:7;4002:6;3991:9;3987:22;3966:53;:::i;:::-;3956:63;;3912:117;4068:2;4094:53;4139:7;4130:6;4119:9;4115:22;4094:53;:::i;:::-;4084:63;;4039:118;3690:474;;;;;:::o;4170:619::-;4247:6;4255;4263;4312:2;4300:9;4291:7;4287:23;4283:32;4280:119;;;4318:79;;:::i;:::-;4280:119;4438:1;4463:53;4508:7;4499:6;4488:9;4484:22;4463:53;:::i;:::-;4453:63;;4409:117;4565:2;4591:53;4636:7;4627:6;4616:9;4612:22;4591:53;:::i;:::-;4581:63;;4536:118;4693:2;4719:53;4764:7;4755:6;4744:9;4740:22;4719:53;:::i;:::-;4709:63;;4664:118;4170:619;;;;;:::o;4795:943::-;4890:6;4898;4906;4914;4963:3;4951:9;4942:7;4938:23;4934:33;4931:120;;;4970:79;;:::i;:::-;4931:120;5090:1;5115:53;5160:7;5151:6;5140:9;5136:22;5115:53;:::i;:::-;5105:63;;5061:117;5217:2;5243:53;5288:7;5279:6;5268:9;5264:22;5243:53;:::i;:::-;5233:63;;5188:118;5345:2;5371:53;5416:7;5407:6;5396:9;5392:22;5371:53;:::i;:::-;5361:63;;5316:118;5501:2;5490:9;5486:18;5473:32;5532:18;5524:6;5521:30;5518:117;;;5554:79;;:::i;:::-;5518:117;5659:62;5713:7;5704:6;5693:9;5689:22;5659:62;:::i;:::-;5649:72;;5444:287;4795:943;;;;;;;:::o;5744:468::-;5809:6;5817;5866:2;5854:9;5845:7;5841:23;5837:32;5834:119;;;5872:79;;:::i;:::-;5834:119;5992:1;6017:53;6062:7;6053:6;6042:9;6038:22;6017:53;:::i;:::-;6007:63;;5963:117;6119:2;6145:50;6187:7;6178:6;6167:9;6163:22;6145:50;:::i;:::-;6135:60;;6090:115;5744:468;;;;;:::o;6218:474::-;6286:6;6294;6343:2;6331:9;6322:7;6318:23;6314:32;6311:119;;;6349:79;;:::i;:::-;6311:119;6469:1;6494:53;6539:7;6530:6;6519:9;6515:22;6494:53;:::i;:::-;6484:63;;6440:117;6596:2;6622:53;6667:7;6658:6;6647:9;6643:22;6622:53;:::i;:::-;6612:63;;6567:118;6218:474;;;;;:::o;6698:329::-;6757:6;6806:2;6794:9;6785:7;6781:23;6777:32;6774:119;;;6812:79;;:::i;:::-;6774:119;6932:1;6957:53;7002:7;6993:6;6982:9;6978:22;6957:53;:::i;:::-;6947:63;;6903:117;6698:329;;;;:::o;7033:327::-;7091:6;7140:2;7128:9;7119:7;7115:23;7111:32;7108:119;;;7146:79;;:::i;:::-;7108:119;7266:1;7291:52;7335:7;7326:6;7315:9;7311:22;7291:52;:::i;:::-;7281:62;;7237:116;7033:327;;;;:::o;7366:349::-;7435:6;7484:2;7472:9;7463:7;7459:23;7455:32;7452:119;;;7490:79;;:::i;:::-;7452:119;7610:1;7635:63;7690:7;7681:6;7670:9;7666:22;7635:63;:::i;:::-;7625:73;;7581:127;7366:349;;;;:::o;7721:529::-;7792:6;7800;7849:2;7837:9;7828:7;7824:23;7820:32;7817:119;;;7855:79;;:::i;:::-;7817:119;8003:1;7992:9;7988:17;7975:31;8033:18;8025:6;8022:30;8019:117;;;8055:79;;:::i;:::-;8019:117;8168:65;8225:7;8216:6;8205:9;8201:22;8168:65;:::i;:::-;8150:83;;;;7946:297;7721:529;;;;;:::o;8256:329::-;8315:6;8364:2;8352:9;8343:7;8339:23;8335:32;8332:119;;;8370:79;;:::i;:::-;8332:119;8490:1;8515:53;8560:7;8551:6;8540:9;8536:22;8515:53;:::i;:::-;8505:63;;8461:117;8256:329;;;;:::o;8591:684::-;8684:6;8692;8741:2;8729:9;8720:7;8716:23;8712:32;8709:119;;;8747:79;;:::i;:::-;8709:119;8867:1;8892:53;8937:7;8928:6;8917:9;8913:22;8892:53;:::i;:::-;8882:63;;8838:117;9022:2;9011:9;9007:18;8994:32;9053:18;9045:6;9042:30;9039:117;;;9075:79;;:::i;:::-;9039:117;9180:78;9250:7;9241:6;9230:9;9226:22;9180:78;:::i;:::-;9170:88;;8965:303;8591:684;;;;;:::o;9281:108::-;9358:24;9376:5;9358:24;:::i;:::-;9353:3;9346:37;9281:108;;:::o;9395:118::-;9482:24;9500:5;9482:24;:::i;:::-;9477:3;9470:37;9395:118;;:::o;9519:157::-;9624:45;9644:24;9662:5;9644:24;:::i;:::-;9624:45;:::i;:::-;9619:3;9612:58;9519:157;;:::o;9682:109::-;9763:21;9778:5;9763:21;:::i;:::-;9758:3;9751:34;9682:109;;:::o;9797:360::-;9883:3;9911:38;9943:5;9911:38;:::i;:::-;9965:70;10028:6;10023:3;9965:70;:::i;:::-;9958:77;;10044:52;10089:6;10084:3;10077:4;10070:5;10066:16;10044:52;:::i;:::-;10121:29;10143:6;10121:29;:::i;:::-;10116:3;10112:39;10105:46;;9887:270;9797:360;;;;:::o;10163:364::-;10251:3;10279:39;10312:5;10279:39;:::i;:::-;10334:71;10398:6;10393:3;10334:71;:::i;:::-;10327:78;;10414:52;10459:6;10454:3;10447:4;10440:5;10436:16;10414:52;:::i;:::-;10491:29;10513:6;10491:29;:::i;:::-;10486:3;10482:39;10475:46;;10255:272;10163:364;;;;:::o;10533:377::-;10639:3;10667:39;10700:5;10667:39;:::i;:::-;10722:89;10804:6;10799:3;10722:89;:::i;:::-;10715:96;;10820:52;10865:6;10860:3;10853:4;10846:5;10842:16;10820:52;:::i;:::-;10897:6;10892:3;10888:16;10881:23;;10643:267;10533:377;;;;:::o;10916:366::-;11058:3;11079:67;11143:2;11138:3;11079:67;:::i;:::-;11072:74;;11155:93;11244:3;11155:93;:::i;:::-;11273:2;11268:3;11264:12;11257:19;;10916:366;;;:::o;11288:::-;11430:3;11451:67;11515:2;11510:3;11451:67;:::i;:::-;11444:74;;11527:93;11616:3;11527:93;:::i;:::-;11645:2;11640:3;11636:12;11629:19;;11288:366;;;:::o;11660:::-;11802:3;11823:67;11887:2;11882:3;11823:67;:::i;:::-;11816:74;;11899:93;11988:3;11899:93;:::i;:::-;12017:2;12012:3;12008:12;12001:19;;11660:366;;;:::o;12032:::-;12174:3;12195:67;12259:2;12254:3;12195:67;:::i;:::-;12188:74;;12271:93;12360:3;12271:93;:::i;:::-;12389:2;12384:3;12380:12;12373:19;;12032:366;;;:::o;12404:::-;12546:3;12567:67;12631:2;12626:3;12567:67;:::i;:::-;12560:74;;12643:93;12732:3;12643:93;:::i;:::-;12761:2;12756:3;12752:12;12745:19;;12404:366;;;:::o;12776:::-;12918:3;12939:67;13003:2;12998:3;12939:67;:::i;:::-;12932:74;;13015:93;13104:3;13015:93;:::i;:::-;13133:2;13128:3;13124:12;13117:19;;12776:366;;;:::o;13148:::-;13290:3;13311:67;13375:2;13370:3;13311:67;:::i;:::-;13304:74;;13387:93;13476:3;13387:93;:::i;:::-;13505:2;13500:3;13496:12;13489:19;;13148:366;;;:::o;13520:::-;13662:3;13683:67;13747:2;13742:3;13683:67;:::i;:::-;13676:74;;13759:93;13848:3;13759:93;:::i;:::-;13877:2;13872:3;13868:12;13861:19;;13520:366;;;:::o;13892:::-;14034:3;14055:67;14119:2;14114:3;14055:67;:::i;:::-;14048:74;;14131:93;14220:3;14131:93;:::i;:::-;14249:2;14244:3;14240:12;14233:19;;13892:366;;;:::o;14264:::-;14406:3;14427:67;14491:2;14486:3;14427:67;:::i;:::-;14420:74;;14503:93;14592:3;14503:93;:::i;:::-;14621:2;14616:3;14612:12;14605:19;;14264:366;;;:::o;14636:::-;14778:3;14799:67;14863:2;14858:3;14799:67;:::i;:::-;14792:74;;14875:93;14964:3;14875:93;:::i;:::-;14993:2;14988:3;14984:12;14977:19;;14636:366;;;:::o;15008:::-;15150:3;15171:67;15235:2;15230:3;15171:67;:::i;:::-;15164:74;;15247:93;15336:3;15247:93;:::i;:::-;15365:2;15360:3;15356:12;15349:19;;15008:366;;;:::o;15380:::-;15522:3;15543:67;15607:2;15602:3;15543:67;:::i;:::-;15536:74;;15619:93;15708:3;15619:93;:::i;:::-;15737:2;15732:3;15728:12;15721:19;;15380:366;;;:::o;15752:::-;15894:3;15915:67;15979:2;15974:3;15915:67;:::i;:::-;15908:74;;15991:93;16080:3;15991:93;:::i;:::-;16109:2;16104:3;16100:12;16093:19;;15752:366;;;:::o;16124:400::-;16284:3;16305:84;16387:1;16382:3;16305:84;:::i;:::-;16298:91;;16398:93;16487:3;16398:93;:::i;:::-;16516:1;16511:3;16507:11;16500:18;;16124:400;;;:::o;16530:366::-;16672:3;16693:67;16757:2;16752:3;16693:67;:::i;:::-;16686:74;;16769:93;16858:3;16769:93;:::i;:::-;16887:2;16882:3;16878:12;16871:19;;16530:366;;;:::o;16902:::-;17044:3;17065:67;17129:2;17124:3;17065:67;:::i;:::-;17058:74;;17141:93;17230:3;17141:93;:::i;:::-;17259:2;17254:3;17250:12;17243:19;;16902:366;;;:::o;17274:::-;17416:3;17437:67;17501:2;17496:3;17437:67;:::i;:::-;17430:74;;17513:93;17602:3;17513:93;:::i;:::-;17631:2;17626:3;17622:12;17615:19;;17274:366;;;:::o;17646:::-;17788:3;17809:67;17873:2;17868:3;17809:67;:::i;:::-;17802:74;;17885:93;17974:3;17885:93;:::i;:::-;18003:2;17998:3;17994:12;17987:19;;17646:366;;;:::o;18018:::-;18160:3;18181:67;18245:2;18240:3;18181:67;:::i;:::-;18174:74;;18257:93;18346:3;18257:93;:::i;:::-;18375:2;18370:3;18366:12;18359:19;;18018:366;;;:::o;18390:::-;18532:3;18553:67;18617:2;18612:3;18553:67;:::i;:::-;18546:74;;18629:93;18718:3;18629:93;:::i;:::-;18747:2;18742:3;18738:12;18731:19;;18390:366;;;:::o;18762:::-;18904:3;18925:67;18989:2;18984:3;18925:67;:::i;:::-;18918:74;;19001:93;19090:3;19001:93;:::i;:::-;19119:2;19114:3;19110:12;19103:19;;18762:366;;;:::o;19134:::-;19276:3;19297:67;19361:2;19356:3;19297:67;:::i;:::-;19290:74;;19373:93;19462:3;19373:93;:::i;:::-;19491:2;19486:3;19482:12;19475:19;;19134:366;;;:::o;19506:::-;19648:3;19669:67;19733:2;19728:3;19669:67;:::i;:::-;19662:74;;19745:93;19834:3;19745:93;:::i;:::-;19863:2;19858:3;19854:12;19847:19;;19506:366;;;:::o;19878:::-;20020:3;20041:67;20105:2;20100:3;20041:67;:::i;:::-;20034:74;;20117:93;20206:3;20117:93;:::i;:::-;20235:2;20230:3;20226:12;20219:19;;19878:366;;;:::o;20250:::-;20392:3;20413:67;20477:2;20472:3;20413:67;:::i;:::-;20406:74;;20489:93;20578:3;20489:93;:::i;:::-;20607:2;20602:3;20598:12;20591:19;;20250:366;;;:::o;20622:::-;20764:3;20785:67;20849:2;20844:3;20785:67;:::i;:::-;20778:74;;20861:93;20950:3;20861:93;:::i;:::-;20979:2;20974:3;20970:12;20963:19;;20622:366;;;:::o;20994:::-;21136:3;21157:67;21221:2;21216:3;21157:67;:::i;:::-;21150:74;;21233:93;21322:3;21233:93;:::i;:::-;21351:2;21346:3;21342:12;21335:19;;20994:366;;;:::o;21366:::-;21508:3;21529:67;21593:2;21588:3;21529:67;:::i;:::-;21522:74;;21605:93;21694:3;21605:93;:::i;:::-;21723:2;21718:3;21714:12;21707:19;;21366:366;;;:::o;21738:::-;21880:3;21901:67;21965:2;21960:3;21901:67;:::i;:::-;21894:74;;21977:93;22066:3;21977:93;:::i;:::-;22095:2;22090:3;22086:12;22079:19;;21738:366;;;:::o;22110:::-;22252:3;22273:67;22337:2;22332:3;22273:67;:::i;:::-;22266:74;;22349:93;22438:3;22349:93;:::i;:::-;22467:2;22462:3;22458:12;22451:19;;22110:366;;;:::o;22552:527::-;22711:4;22706:3;22702:14;22798:4;22791:5;22787:16;22781:23;22817:63;22874:4;22869:3;22865:14;22851:12;22817:63;:::i;:::-;22726:164;22982:4;22975:5;22971:16;22965:23;23001:61;23056:4;23051:3;23047:14;23033:12;23001:61;:::i;:::-;22900:172;22680:399;22552:527;;:::o;23085:118::-;23172:24;23190:5;23172:24;:::i;:::-;23167:3;23160:37;23085:118;;:::o;23209:105::-;23284:23;23301:5;23284:23;:::i;:::-;23279:3;23272:36;23209:105;;:::o;23320:256::-;23432:3;23447:75;23518:3;23509:6;23447:75;:::i;:::-;23547:2;23542:3;23538:12;23531:19;;23567:3;23560:10;;23320:256;;;;:::o;23582:435::-;23762:3;23784:95;23875:3;23866:6;23784:95;:::i;:::-;23777:102;;23896:95;23987:3;23978:6;23896:95;:::i;:::-;23889:102;;24008:3;24001:10;;23582:435;;;;;:::o;24023:541::-;24256:3;24278:95;24369:3;24360:6;24278:95;:::i;:::-;24271:102;;24390:148;24534:3;24390:148;:::i;:::-;24383:155;;24555:3;24548:10;;24023:541;;;;:::o;24570:222::-;24663:4;24701:2;24690:9;24686:18;24678:26;;24714:71;24782:1;24771:9;24767:17;24758:6;24714:71;:::i;:::-;24570:222;;;;:::o;24798:640::-;24993:4;25031:3;25020:9;25016:19;25008:27;;25045:71;25113:1;25102:9;25098:17;25089:6;25045:71;:::i;:::-;25126:72;25194:2;25183:9;25179:18;25170:6;25126:72;:::i;:::-;25208;25276:2;25265:9;25261:18;25252:6;25208:72;:::i;:::-;25327:9;25321:4;25317:20;25312:2;25301:9;25297:18;25290:48;25355:76;25426:4;25417:6;25355:76;:::i;:::-;25347:84;;24798:640;;;;;;;:::o;25444:210::-;25531:4;25569:2;25558:9;25554:18;25546:26;;25582:65;25644:1;25633:9;25629:17;25620:6;25582:65;:::i;:::-;25444:210;;;;:::o;25660:313::-;25773:4;25811:2;25800:9;25796:18;25788:26;;25860:9;25854:4;25850:20;25846:1;25835:9;25831:17;25824:47;25888:78;25961:4;25952:6;25888:78;:::i;:::-;25880:86;;25660:313;;;;:::o;25979:419::-;26145:4;26183:2;26172:9;26168:18;26160:26;;26232:9;26226:4;26222:20;26218:1;26207:9;26203:17;26196:47;26260:131;26386:4;26260:131;:::i;:::-;26252:139;;25979:419;;;:::o;26404:::-;26570:4;26608:2;26597:9;26593:18;26585:26;;26657:9;26651:4;26647:20;26643:1;26632:9;26628:17;26621:47;26685:131;26811:4;26685:131;:::i;:::-;26677:139;;26404:419;;;:::o;26829:::-;26995:4;27033:2;27022:9;27018:18;27010:26;;27082:9;27076:4;27072:20;27068:1;27057:9;27053:17;27046:47;27110:131;27236:4;27110:131;:::i;:::-;27102:139;;26829:419;;;:::o;27254:::-;27420:4;27458:2;27447:9;27443:18;27435:26;;27507:9;27501:4;27497:20;27493:1;27482:9;27478:17;27471:47;27535:131;27661:4;27535:131;:::i;:::-;27527:139;;27254:419;;;:::o;27679:::-;27845:4;27883:2;27872:9;27868:18;27860:26;;27932:9;27926:4;27922:20;27918:1;27907:9;27903:17;27896:47;27960:131;28086:4;27960:131;:::i;:::-;27952:139;;27679:419;;;:::o;28104:::-;28270:4;28308:2;28297:9;28293:18;28285:26;;28357:9;28351:4;28347:20;28343:1;28332:9;28328:17;28321:47;28385:131;28511:4;28385:131;:::i;:::-;28377:139;;28104:419;;;:::o;28529:::-;28695:4;28733:2;28722:9;28718:18;28710:26;;28782:9;28776:4;28772:20;28768:1;28757:9;28753:17;28746:47;28810:131;28936:4;28810:131;:::i;:::-;28802:139;;28529:419;;;:::o;28954:::-;29120:4;29158:2;29147:9;29143:18;29135:26;;29207:9;29201:4;29197:20;29193:1;29182:9;29178:17;29171:47;29235:131;29361:4;29235:131;:::i;:::-;29227:139;;28954:419;;;:::o;29379:::-;29545:4;29583:2;29572:9;29568:18;29560:26;;29632:9;29626:4;29622:20;29618:1;29607:9;29603:17;29596:47;29660:131;29786:4;29660:131;:::i;:::-;29652:139;;29379:419;;;:::o;29804:::-;29970:4;30008:2;29997:9;29993:18;29985:26;;30057:9;30051:4;30047:20;30043:1;30032:9;30028:17;30021:47;30085:131;30211:4;30085:131;:::i;:::-;30077:139;;29804:419;;;:::o;30229:::-;30395:4;30433:2;30422:9;30418:18;30410:26;;30482:9;30476:4;30472:20;30468:1;30457:9;30453:17;30446:47;30510:131;30636:4;30510:131;:::i;:::-;30502:139;;30229:419;;;:::o;30654:::-;30820:4;30858:2;30847:9;30843:18;30835:26;;30907:9;30901:4;30897:20;30893:1;30882:9;30878:17;30871:47;30935:131;31061:4;30935:131;:::i;:::-;30927:139;;30654:419;;;:::o;31079:::-;31245:4;31283:2;31272:9;31268:18;31260:26;;31332:9;31326:4;31322:20;31318:1;31307:9;31303:17;31296:47;31360:131;31486:4;31360:131;:::i;:::-;31352:139;;31079:419;;;:::o;31504:::-;31670:4;31708:2;31697:9;31693:18;31685:26;;31757:9;31751:4;31747:20;31743:1;31732:9;31728:17;31721:47;31785:131;31911:4;31785:131;:::i;:::-;31777:139;;31504:419;;;:::o;31929:::-;32095:4;32133:2;32122:9;32118:18;32110:26;;32182:9;32176:4;32172:20;32168:1;32157:9;32153:17;32146:47;32210:131;32336:4;32210:131;:::i;:::-;32202:139;;31929:419;;;:::o;32354:::-;32520:4;32558:2;32547:9;32543:18;32535:26;;32607:9;32601:4;32597:20;32593:1;32582:9;32578:17;32571:47;32635:131;32761:4;32635:131;:::i;:::-;32627:139;;32354:419;;;:::o;32779:::-;32945:4;32983:2;32972:9;32968:18;32960:26;;33032:9;33026:4;33022:20;33018:1;33007:9;33003:17;32996:47;33060:131;33186:4;33060:131;:::i;:::-;33052:139;;32779:419;;;:::o;33204:::-;33370:4;33408:2;33397:9;33393:18;33385:26;;33457:9;33451:4;33447:20;33443:1;33432:9;33428:17;33421:47;33485:131;33611:4;33485:131;:::i;:::-;33477:139;;33204:419;;;:::o;33629:::-;33795:4;33833:2;33822:9;33818:18;33810:26;;33882:9;33876:4;33872:20;33868:1;33857:9;33853:17;33846:47;33910:131;34036:4;33910:131;:::i;:::-;33902:139;;33629:419;;;:::o;34054:::-;34220:4;34258:2;34247:9;34243:18;34235:26;;34307:9;34301:4;34297:20;34293:1;34282:9;34278:17;34271:47;34335:131;34461:4;34335:131;:::i;:::-;34327:139;;34054:419;;;:::o;34479:::-;34645:4;34683:2;34672:9;34668:18;34660:26;;34732:9;34726:4;34722:20;34718:1;34707:9;34703:17;34696:47;34760:131;34886:4;34760:131;:::i;:::-;34752:139;;34479:419;;;:::o;34904:::-;35070:4;35108:2;35097:9;35093:18;35085:26;;35157:9;35151:4;35147:20;35143:1;35132:9;35128:17;35121:47;35185:131;35311:4;35185:131;:::i;:::-;35177:139;;34904:419;;;:::o;35329:::-;35495:4;35533:2;35522:9;35518:18;35510:26;;35582:9;35576:4;35572:20;35568:1;35557:9;35553:17;35546:47;35610:131;35736:4;35610:131;:::i;:::-;35602:139;;35329:419;;;:::o;35754:::-;35920:4;35958:2;35947:9;35943:18;35935:26;;36007:9;36001:4;35997:20;35993:1;35982:9;35978:17;35971:47;36035:131;36161:4;36035:131;:::i;:::-;36027:139;;35754:419;;;:::o;36179:::-;36345:4;36383:2;36372:9;36368:18;36360:26;;36432:9;36426:4;36422:20;36418:1;36407:9;36403:17;36396:47;36460:131;36586:4;36460:131;:::i;:::-;36452:139;;36179:419;;;:::o;36604:::-;36770:4;36808:2;36797:9;36793:18;36785:26;;36857:9;36851:4;36847:20;36843:1;36832:9;36828:17;36821:47;36885:131;37011:4;36885:131;:::i;:::-;36877:139;;36604:419;;;:::o;37029:::-;37195:4;37233:2;37222:9;37218:18;37210:26;;37282:9;37276:4;37272:20;37268:1;37257:9;37253:17;37246:47;37310:131;37436:4;37310:131;:::i;:::-;37302:139;;37029:419;;;:::o;37454:::-;37620:4;37658:2;37647:9;37643:18;37635:26;;37707:9;37701:4;37697:20;37693:1;37682:9;37678:17;37671:47;37735:131;37861:4;37735:131;:::i;:::-;37727:139;;37454:419;;;:::o;37879:::-;38045:4;38083:2;38072:9;38068:18;38060:26;;38132:9;38126:4;38122:20;38118:1;38107:9;38103:17;38096:47;38160:131;38286:4;38160:131;:::i;:::-;38152:139;;37879:419;;;:::o;38304:::-;38470:4;38508:2;38497:9;38493:18;38485:26;;38557:9;38551:4;38547:20;38543:1;38532:9;38528:17;38521:47;38585:131;38711:4;38585:131;:::i;:::-;38577:139;;38304:419;;;:::o;38729:346::-;38884:4;38922:2;38911:9;38907:18;38899:26;;38935:133;39065:1;39054:9;39050:17;39041:6;38935:133;:::i;:::-;38729:346;;;;:::o;39081:222::-;39174:4;39212:2;39201:9;39197:18;39189:26;;39225:71;39293:1;39282:9;39278:17;39269:6;39225:71;:::i;:::-;39081:222;;;;:::o;39309:129::-;39343:6;39370:20;;:::i;:::-;39360:30;;39399:33;39427:4;39419:6;39399:33;:::i;:::-;39309:129;;;:::o;39444:75::-;39477:6;39510:2;39504:9;39494:19;;39444:75;:::o;39525:311::-;39602:4;39692:18;39684:6;39681:30;39678:56;;;39714:18;;:::i;:::-;39678:56;39764:4;39756:6;39752:17;39744:25;;39824:4;39818;39814:15;39806:23;;39525:311;;;:::o;39842:307::-;39903:4;39993:18;39985:6;39982:30;39979:56;;;40015:18;;:::i;:::-;39979:56;40053:29;40075:6;40053:29;:::i;:::-;40045:37;;40137:4;40131;40127:15;40119:23;;39842:307;;;:::o;40155:98::-;40206:6;40240:5;40234:12;40224:22;;40155:98;;;:::o;40259:99::-;40311:6;40345:5;40339:12;40329:22;;40259:99;;;:::o;40364:168::-;40447:11;40481:6;40476:3;40469:19;40521:4;40516:3;40512:14;40497:29;;40364:168;;;;:::o;40538:169::-;40622:11;40656:6;40651:3;40644:19;40696:4;40691:3;40687:14;40672:29;;40538:169;;;;:::o;40713:148::-;40815:11;40852:3;40837:18;;40713:148;;;;:::o;40867:273::-;40907:3;40926:20;40944:1;40926:20;:::i;:::-;40921:25;;40960:20;40978:1;40960:20;:::i;:::-;40955:25;;41082:1;41046:34;41042:42;41039:1;41036:49;41033:75;;;41088:18;;:::i;:::-;41033:75;41132:1;41129;41125:9;41118:16;;40867:273;;;;:::o;41146:305::-;41186:3;41205:20;41223:1;41205:20;:::i;:::-;41200:25;;41239:20;41257:1;41239:20;:::i;:::-;41234:25;;41393:1;41325:66;41321:74;41318:1;41315:81;41312:107;;;41399:18;;:::i;:::-;41312:107;41443:1;41440;41436:9;41429:16;;41146:305;;;;:::o;41457:185::-;41497:1;41514:20;41532:1;41514:20;:::i;:::-;41509:25;;41548:20;41566:1;41548:20;:::i;:::-;41543:25;;41587:1;41577:35;;41592:18;;:::i;:::-;41577:35;41634:1;41631;41627:9;41622:14;;41457:185;;;;:::o;41648:348::-;41688:7;41711:20;41729:1;41711:20;:::i;:::-;41706:25;;41745:20;41763:1;41745:20;:::i;:::-;41740:25;;41933:1;41865:66;41861:74;41858:1;41855:81;41850:1;41843:9;41836:17;41832:105;41829:131;;;41940:18;;:::i;:::-;41829:131;41988:1;41985;41981:9;41970:20;;41648:348;;;;:::o;42002:191::-;42042:4;42062:20;42080:1;42062:20;:::i;:::-;42057:25;;42096:20;42114:1;42096:20;:::i;:::-;42091:25;;42135:1;42132;42129:8;42126:34;;;42140:18;;:::i;:::-;42126:34;42185:1;42182;42178:9;42170:17;;42002:191;;;;:::o;42199:::-;42239:4;42259:20;42277:1;42259:20;:::i;:::-;42254:25;;42293:20;42311:1;42293:20;:::i;:::-;42288:25;;42332:1;42329;42326:8;42323:34;;;42337:18;;:::i;:::-;42323:34;42382:1;42379;42375:9;42367:17;;42199:191;;;;:::o;42396:96::-;42433:7;42462:24;42480:5;42462:24;:::i;:::-;42451:35;;42396:96;;;:::o;42498:90::-;42532:7;42575:5;42568:13;42561:21;42550:32;;42498:90;;;:::o;42594:77::-;42631:7;42660:5;42649:16;;42594:77;;;:::o;42677:149::-;42713:7;42753:66;42746:5;42742:78;42731:89;;42677:149;;;:::o;42832:118::-;42869:7;42909:34;42902:5;42898:46;42887:57;;42832:118;;;:::o;42956:126::-;42993:7;43033:42;43026:5;43022:54;43011:65;;42956:126;;;:::o;43088:77::-;43125:7;43154:5;43143:16;;43088:77;;;:::o;43171:101::-;43207:7;43247:18;43240:5;43236:30;43225:41;;43171:101;;;:::o;43278:154::-;43362:6;43357:3;43352;43339:30;43424:1;43415:6;43410:3;43406:16;43399:27;43278:154;;;:::o;43438:307::-;43506:1;43516:113;43530:6;43527:1;43524:13;43516:113;;;43615:1;43610:3;43606:11;43600:18;43596:1;43591:3;43587:11;43580:39;43552:2;43549:1;43545:10;43540:15;;43516:113;;;43647:6;43644:1;43641:13;43638:101;;;43727:1;43718:6;43713:3;43709:16;43702:27;43638:101;43487:258;43438:307;;;:::o;43751:171::-;43790:3;43813:24;43831:5;43813:24;:::i;:::-;43804:33;;43859:4;43852:5;43849:15;43846:41;;;43867:18;;:::i;:::-;43846:41;43914:1;43907:5;43903:13;43896:20;;43751:171;;;:::o;43928:320::-;43972:6;44009:1;44003:4;43999:12;43989:22;;44056:1;44050:4;44046:12;44077:18;44067:81;;44133:4;44125:6;44121:17;44111:27;;44067:81;44195:2;44187:6;44184:14;44164:18;44161:38;44158:84;;;44214:18;;:::i;:::-;44158:84;43979:269;43928:320;;;:::o;44254:281::-;44337:27;44359:4;44337:27;:::i;:::-;44329:6;44325:40;44467:6;44455:10;44452:22;44431:18;44419:10;44416:34;44413:62;44410:88;;;44478:18;;:::i;:::-;44410:88;44518:10;44514:2;44507:22;44297:238;44254:281;;:::o;44541:233::-;44580:3;44603:24;44621:5;44603:24;:::i;:::-;44594:33;;44649:66;44642:5;44639:77;44636:103;;;44719:18;;:::i;:::-;44636:103;44766:1;44759:5;44755:13;44748:20;;44541:233;;;:::o;44780:100::-;44819:7;44848:26;44868:5;44848:26;:::i;:::-;44837:37;;44780:100;;;:::o;44886:94::-;44925:7;44954:20;44968:5;44954:20;:::i;:::-;44943:31;;44886:94;;;:::o;44986:176::-;45018:1;45035:20;45053:1;45035:20;:::i;:::-;45030:25;;45069:20;45087:1;45069:20;:::i;:::-;45064:25;;45108:1;45098:35;;45113:18;;:::i;:::-;45098:35;45154:1;45151;45147:9;45142:14;;44986:176;;;;:::o;45168:180::-;45216:77;45213:1;45206:88;45313:4;45310:1;45303:15;45337:4;45334:1;45327:15;45354:180;45402:77;45399:1;45392:88;45499:4;45496:1;45489:15;45523:4;45520:1;45513:15;45540:180;45588:77;45585:1;45578:88;45685:4;45682:1;45675:15;45709:4;45706:1;45699:15;45726:180;45774:77;45771:1;45764:88;45871:4;45868:1;45861:15;45895:4;45892:1;45885:15;45912:180;45960:77;45957:1;45950:88;46057:4;46054:1;46047:15;46081:4;46078:1;46071:15;46098:117;46207:1;46204;46197:12;46221:117;46330:1;46327;46320:12;46344:117;46453:1;46450;46443:12;46467:117;46576:1;46573;46566:12;46590:117;46699:1;46696;46689:12;46713:117;46822:1;46819;46812:12;46836:102;46877:6;46928:2;46924:7;46919:2;46912:5;46908:14;46904:28;46894:38;;46836:102;;;:::o;46944:94::-;46977:8;47025:5;47021:2;47017:14;46996:35;;46944:94;;;:::o;47044:221::-;47184:34;47180:1;47172:6;47168:14;47161:58;47253:4;47248:2;47240:6;47236:15;47229:29;47044:221;:::o;47271:171::-;47411:23;47407:1;47399:6;47395:14;47388:47;47271:171;:::o;47448:225::-;47588:34;47584:1;47576:6;47572:14;47565:58;47657:8;47652:2;47644:6;47640:15;47633:33;47448:225;:::o;47679:161::-;47819:13;47815:1;47807:6;47803:14;47796:37;47679:161;:::o;47846:229::-;47986:34;47982:1;47974:6;47970:14;47963:58;48055:12;48050:2;48042:6;48038:15;48031:37;47846:229;:::o;48081:173::-;48221:25;48217:1;48209:6;48205:14;48198:49;48081:173;:::o;48260:222::-;48400:34;48396:1;48388:6;48384:14;48377:58;48469:5;48464:2;48456:6;48452:15;48445:30;48260:222;:::o;48488:224::-;48628:34;48624:1;48616:6;48612:14;48605:58;48697:7;48692:2;48684:6;48680:15;48673:32;48488:224;:::o;48718:236::-;48858:34;48854:1;48846:6;48842:14;48835:58;48927:19;48922:2;48914:6;48910:15;48903:44;48718:236;:::o;48960:180::-;49100:32;49096:1;49088:6;49084:14;49077:56;48960:180;:::o;49146:174::-;49286:26;49282:1;49274:6;49270:14;49263:50;49146:174;:::o;49326:244::-;49466:34;49462:1;49454:6;49450:14;49443:58;49535:27;49530:2;49522:6;49518:15;49511:52;49326:244;:::o;49576:230::-;49716:34;49712:1;49704:6;49700:14;49693:58;49785:13;49780:2;49772:6;49768:15;49761:38;49576:230;:::o;49812:225::-;49952:34;49948:1;49940:6;49936:14;49929:58;50021:8;50016:2;50008:6;50004:15;49997:33;49812:225;:::o;50043:155::-;50183:7;50179:1;50171:6;50167:14;50160:31;50043:155;:::o;50204:182::-;50344:34;50340:1;50332:6;50328:14;50321:58;50204:182;:::o;50392:234::-;50532:34;50528:1;50520:6;50516:14;50509:58;50601:17;50596:2;50588:6;50584:15;50577:42;50392:234;:::o;50632:176::-;50772:28;50768:1;50760:6;50756:14;50749:52;50632:176;:::o;50814:237::-;50954:34;50950:1;50942:6;50938:14;50931:58;51023:20;51018:2;51010:6;51006:15;50999:45;50814:237;:::o;51057:227::-;51197:34;51193:1;51185:6;51181:14;51174:58;51266:10;51261:2;51253:6;51249:15;51242:35;51057:227;:::o;51290:221::-;51430:34;51426:1;51418:6;51414:14;51407:58;51499:4;51494:2;51486:6;51482:15;51475:29;51290:221;:::o;51517:174::-;51657:26;51653:1;51645:6;51641:14;51634:50;51517:174;:::o;51697:238::-;51837:34;51833:1;51825:6;51821:14;51814:58;51906:21;51901:2;51893:6;51889:15;51882:46;51697:238;:::o;51941:179::-;52081:31;52077:1;52069:6;52065:14;52058:55;51941:179;:::o;52126:220::-;52266:34;52262:1;52254:6;52250:14;52243:58;52335:3;52330:2;52322:6;52318:15;52311:28;52126:220;:::o;52352:231::-;52492:34;52488:1;52480:6;52476:14;52469:58;52561:14;52556:2;52548:6;52544:15;52537:39;52352:231;:::o;52589:166::-;52729:18;52725:1;52717:6;52713:14;52706:42;52589:166;:::o;52761:233::-;52901:34;52897:1;52889:6;52885:14;52878:58;52970:16;52965:2;52957:6;52953:15;52946:41;52761:233;:::o;53000:234::-;53140:34;53136:1;53128:6;53124:14;53117:58;53209:17;53204:2;53196:6;53192:15;53185:42;53000:234;:::o;53240:232::-;53380:34;53376:1;53368:6;53364:14;53357:58;53449:15;53444:2;53436:6;53432:15;53425:40;53240:232;:::o;53478:221::-;53618:34;53614:1;53606:6;53602:14;53595:58;53687:4;53682:2;53674:6;53670:15;53663:29;53478:221;:::o;53705:122::-;53778:24;53796:5;53778:24;:::i;:::-;53771:5;53768:35;53758:63;;53817:1;53814;53807:12;53758:63;53705:122;:::o;53833:116::-;53903:21;53918:5;53903:21;:::i;:::-;53896:5;53893:32;53883:60;;53939:1;53936;53929:12;53883:60;53833:116;:::o;53955:122::-;54028:24;54046:5;54028:24;:::i;:::-;54021:5;54018:35;54008:63;;54067:1;54064;54057:12;54008:63;53955:122;:::o;54083:120::-;54155:23;54172:5;54155:23;:::i;:::-;54148:5;54145:34;54135:62;;54193:1;54190;54183:12;54135:62;54083:120;:::o;54209:122::-;54282:24;54300:5;54282:24;:::i;:::-;54275:5;54272:35;54262:63;;54321:1;54318;54311:12;54262:63;54209:122;:::o

Swarm Source

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