Contract 0x17f04C54798bF104ECC5CAa31A2041E55aa0683b

 
 
Txn Hash
Method
Block
From
To
Value
0x55163877b6d1591aa881be06f2371d85c31168479acfe44dd2b3066049f6c25bTransfer Ownersh...157833662022-10-19 16:32:3539 days 2 hrs agoOfficial MoonCats - Acclimated: Deployer IN  0x17f04c54798bf104ecc5caa31a2041e55aa0683b0 Ether0.00069734 25.81913328
0x19c23386f715d4cda09d0c5e37a31c31dec201f9ada99e6a485ef52aaec21d52Reveal157776462022-10-18 21:21:2339 days 21 hrs agoOfficial MoonCats - Acclimated: Deployer IN  0x17f04c54798bf104ecc5caa31a2041e55aa0683b0 Ether0.0048538 32.67716133
0x3d52a8f6ad711a3c76dee6366a596f40313ea9829a44287129a652a1c5c6cb35Update Backgroun...157775992022-10-18 21:11:5939 days 21 hrs agoOfficial MoonCats - Acclimated: Deployer IN  0x17f04c54798bf104ecc5caa31a2041e55aa0683b0 Ether0.00221421 24.14630659
0x3bd4d63a3e1501ed98515ab9400e4073bc44941af67ce77adff39112cd1075afSet Streets Addr...157472892022-10-14 15:37:2344 days 3 hrs agoOfficial MoonCats - Acclimated: Deployer IN  0x17f04c54798bf104ecc5caa31a2041e55aa0683b0 Ether0.00098872 21.37364752
0xa0ef9dd4cca031c6a9044c36c7394399d63a0882e4c5c5c852bac1652e2ee441Set Condos Addre...157472662022-10-14 15:32:4744 days 3 hrs agoOfficial MoonCats - Acclimated: Deployer IN  0x17f04c54798bf104ecc5caa31a2041e55aa0683b0 Ether0.00096609 20.87402575
0x6931a1dffaa924fb1d15ca144f9c24b790540ad8d1540635aa139c18e2a1d4950x60c06040157472432022-10-14 15:28:1144 days 3 hrs agoOfficial MoonCats - Acclimated: Deployer IN  Create: Metadata0 Ether0.11840085 19.73770634
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Metadata

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 3 : Metadata.sol
// SPDX-License-Identifier: AGPL-3.0
// ©2022 Ponderware Ltd

pragma solidity ^0.8.9;

import "@openzeppelin/contracts/token/ERC721/IERC721.sol";

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
}


interface IStreets {
    function getStreetData(uint256 tokenId) external view returns (uint16[5] memory condoIds, uint16 background, bytes20 name);
}

/*
 * @title CondoMini Metadata
 * @author Ponderware Ltd
 * @dev Metadata assembly contract for CondoMini Streets NFT
 */
contract Metadata {
    // IMoonCatSVGS MoonCatSVGS = IMoonCatSVGS(0xB39C61fe6281324A23e079464f7E697F8Ba6968f);
    IStreets Streets;

    string BASE_IMAGE_URI = "https://condomini.io/api/street/";
    string public IPFS_URI_Prefix = "https://ponderware.mypinata.cloud/ipfs/";
    string public CONDOS_TOKEN_URI = ""; // "ipfs://ipfs-cid/{id}.json"
    string public CONDOS_IPFS_CID = "";
    string public STREETS_PREREVEAL_URI = "";
    string public BACKGROUNDS_IPFS_CID = "";
    uint16 public totalBackgrounds = 20;

    address public owner;
    address public condosAddress;
    address public streetsAddress;

    bool public revealed = false;
    bool public frozen = false;

    string internal description = "It's a beautiful day in your neighborhood.";

    string[] internal BackgroundNames =
        ["Crisp Autumn",
         "Deep Cave",
         "Deep Impact",
         "Fireworks",
         "Gods Are Angry",
         "Good Morning",
         "Heavy Rain",
         "Mars Colony",
         "Retrowave",
         "Sand Dunes",
         "Serene Afternoon",
         "Snowy Fields",
         "Sp00ky",
         "Starry Night",
         "Stormy Weather",
         "Tea Time",
         "Thick Fog",
         "Thicket",
         "To the Moon",
         "Under the Sea"
         ];

    string[145] internal CondoNames =
        ["NYC Apartment",
         "Gacha Office",
         unicode"Parisien Cafè",
         "Mountain House",
         "Honey Factory",
         "Coffee Pool",
         "TV Studio",
         "Greenhouse",
         "Post Office",
         "Desert House",
         "Lounge Bar",
         "Detective's Snowball",
         "Stilt House",
         "Vintage Arcade",
         "Bronko's Stadium",
         "Nomad Trailer",
         "Stargazer Observatory",
         "Maiden's Tower",
         "Shopping Centre",
         "Underhill House",
         "Noire Movie Set",
         "MoonCats Shelter",
         "Konbini",
         "Library",
         "Modular Spaces",
         "Birthday Cake",
         "Rocky Camp Tent",
         "Amanita House",
         "City Hall",
         "Rue Hall",
         "Barn",
         "Lighthouse",
         "Transistor Radio",
         "Boat House",
         "Fish Tank",
         "Toaster",
         "Loudspeaker",
         "Snail Shell",
         "Fire Hydrant",
         "Modern House",
         "Death Ball",
         "Brick House",
         "Safe Bank",
         "Gas Station",
         "Sappy Igloo",
         "Medieval House",
         "Pet Care",
         "Academy",
         "Trolley Gate",
         "Gum Parlor",
         "Games Palace",
         "Victorian Manor",
         "STARKADE Arena",
         "Construction Site",
         "Pizzeria",
         "Cyber Condo",
         "Lunar Plots Platform",
         "Pirate Island",
         "Worldwide Webb Apartment",
         "Legion Arena",
         "Curio Castle",
         "Rice Onsen",
         "Belfry Ruins",
         "Curio Coffee Shop",
         "Pixelmap House",
         "Dog House",
         "Plant Frens Shop",
         "Weapons Chest",
         "Realms of Ether Castle",
         "PunyCodes House",
         "Western Saloon",
         "Isotile Building",
         "MoonCats' Fort of Boxes",
         "Mausoleum",
         "Fast Food Truck",
         "Grain Mill",
         "Empire Skyscraper",
         "Mecha House",
         "NYC Condo",
         "Pachinko Parlor",
         "Parisien Atelier",
         "Winter House",
         "Candles Factory",
         "News Studio",
         "Mystic House",
         "Santa's Factory",
         "Bazaar",
         "Organic Bar",
         "Reader's Snowball",
         "Bayou House",
         "Esports Arcade",
         "Rugby Arena",
         "Peace Van",
         "Alien Research Facility",
         "Clock Tower",
         "Grochery Store",
         "Epic Movie Set",
         "Diner",
         "Typography",
         "Docks Containers",
         "Rainbow Cake",
         "Pine Ridge Tent",
         "Bolete House",
         "Town Hall",
         "Stables",
         "Medieval Beacon",
         "Stadio Radio",
         "Pirate House",
         "Potty Tank",
         "Toast Burner",
         "Concert Venue",
         "Seashell",
         "Fire Station",
         "Korean Estate",
         "Hal-0",
         "MOC House",
         "Piggy Bank",
         "Petrol Station",
         "Tent Igloo",
         "Medieval Smith",
         "Hospital",
         "Boiler Room",
         "Luggage Airport",
         "Candy Shop",
         "Flipper Playroom",
         "Haunted Manor",
         "Empty Lot",
         "Pizza Take Away",
         "Dystopic Tower",
         "Saint's Ruins",
         "Wizard's Chest",
         "Western Emporium",
         "Waterfall Mill",
         "Capsule Tower",
         "Mecha HQ",
         "Tokyo Tower",
         "UFO Crash",
         "Fountain",
         "Railroad",
         "City Park",
         "Planes Gate",
         "Y-Rex",
         "Ferry Wheel",
         "Woods",
         "City Gate"
         ];


    /**
     * @dev Encode a key/value pair as a JSON trait property, where the value is a string item (needs quotes around it)
     */
    function encodeStringAttribute(string memory key, string memory value) internal pure returns (bytes memory) {
        return abi.encodePacked("{\"trait_type\":\"", key,"\",\"value\":\"",value,"\"}");
    }
   /**
     * @dev Convert an integer/numeric value into a string of that number's decimal value.
     */
    function uint2str (uint value) public pure returns (string memory) {
        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);
    }
    /**
     * @dev Encode a key/value pair as a JSON trait property, where the value is a number item (doesn't need quotes)
     */
    function encodeLevelAttribute (string memory key, uint256 value) internal pure returns (bytes memory) {
        return abi.encodePacked("{\"trait_type\":\"", key,"\",\"value\":",uint2str(value),",\"max_value\":5}");
    }

    function getCondoNameAttribute (uint256 condoId) internal view returns (bytes memory) {
        if (condoId < 135) {
            return encodeStringAttribute("Condo", CondoNames[condoId]);
        } else {
            if (condoId < 270) {
                return encodeStringAttribute("Condo", string(abi.encodePacked("Gold ", CondoNames[condoId - 135])));
            } else {
                return encodeStringAttribute("Landmark", CondoNames[condoId - 135]);
            }
        }
    }



    function getStreetAttributes (uint16[5] memory condoIds, uint16 background) internal view returns (bytes memory) {

        uint golds = 0;
        uint landmarks = 0;

        for (uint i = 0; i < 5; i++) {
            uint condoId = condoIds[i];
            if (condoId >= 135) {
                if (condoId < 270) {
                    golds++;
                } else {
                    landmarks++;
                }
            }
        }

        bytes memory special;

        if (golds == 5) {
            special = abi.encodePacked(encodeStringAttribute("Special", "Gilded"), ",");
        } else if (landmarks == 5) {
            special = abi.encodePacked(encodeStringAttribute("Special", "Monumental"), ",");
        }

        return abi.encodePacked(getCondoNameAttribute(condoIds[0]), ",",
                                getCondoNameAttribute(condoIds[1]), ",",
                                getCondoNameAttribute(condoIds[2]), ",",
                                getCondoNameAttribute(condoIds[3]), ",",
                                getCondoNameAttribute(condoIds[4]), ",",
                                encodeLevelAttribute("Golds", golds), ",",
                                encodeLevelAttribute("Landmarks", landmarks), ",",
                                special,
                                encodeStringAttribute("Background", BackgroundNames[background])
                                );
    }

    function decodeName (bytes20 name) internal pure returns (bytes memory) {
        uint nameLength = 0;
        for (; nameLength < 20; nameLength++) {
            if (name[nameLength] == 0) {
                break;
            }
        }
        if (nameLength == 0) {
            return bytes("CondoMini Neighborhood");
        } else {
            bytes memory outputName;
            for (uint i = 0; i < nameLength; i++) {
                outputName = abi.encodePacked(outputName, name[i]);
            }
            return outputName;
        }
    }

    /**
     * @dev Update metadata description string
     */
    function updateDescription (string calldata newDescription) public onlyOwner {
        description = newDescription;
    }

    /**
     * @dev Assemble the imageURI for the given attributes
     */
    function imageURI(uint16[5] memory condoIds, uint16 background) internal view returns (bytes memory) {
        bytes memory uri = bytes(BASE_IMAGE_URI);
        for (uint i = 0; i < 5; i++) {
            uri = abi.encodePacked(uri, uint2str(condoIds[i]), "-");
        }
        return abi.encodePacked(uri, uint2str(background), ".png");
    }

    /**
     * @dev Generate full BASE64-encoded JSON metadata
     */
    function streetMetadata(uint256 tokenId) public view returns (string memory) {
        (uint16[5] memory condoIds, uint16 background, bytes20 name) = IStreets(streetsAddress).getStreetData(tokenId);
        string memory tokenIdString = uint2str(tokenId);
        bytes memory img = imageURI(condoIds, background);

        bytes memory json = abi.encodePacked(
            '{"attributes":[',
                            getStreetAttributes(condoIds, background),
                            ",", encodeStringAttribute("tokenId", tokenIdString),
            '], "name":"',
            decodeName(name),
            '", "description":"',
            description,
            '","image":"',
            img,
            '","external_url": "https://condomini.io"}'
                                             );
        return string(abi.encodePacked("data:application/json;base64,", Base64.encode(json)));
    }

    /**
     * @dev Set the baseURI for the image generator (images can also be assembled on-chain in the main contract)
     */
    function setBaseImageURI(string calldata baseUri) public onlyOwner {
        BASE_IMAGE_URI = baseUri;
    }

    function setIpfsURIPrefix(string calldata ipfsURIPrefix) public onlyOwner {
        IPFS_URI_Prefix = ipfsURIPrefix;
    }

    function setCondosMeta(string calldata tokenUri, string calldata ipfsCid) public onlyOwner {
        require(frozen == false, "Metadata frozen");
        CONDOS_TOKEN_URI = tokenUri;
        CONDOS_IPFS_CID = ipfsCid;
    }

    function updateBackground(string calldata ipfsCid) public onlyOwner {
        BACKGROUNDS_IPFS_CID = ipfsCid;
    }

    function addBackground(string calldata ipfsCid, string calldata backgroundName) public onlyOwner {
        BACKGROUNDS_IPFS_CID = ipfsCid;
        BackgroundNames[totalBackgrounds] = backgroundName;
        totalBackgrounds++;
    }

    function setCondosAddress(address contractAddress) public onlyOwner {
        require(condosAddress == address(0), "Condos address already set");
        condosAddress = contractAddress;
    }

    function setStreetsAddress(address contractAddress) public onlyOwner {
        require(streetsAddress == address(0), "Streets address already set");
        streetsAddress = contractAddress;
    }

    function reveal(string calldata tokenUri, string calldata ipfsCid) public onlyOwner {
        require(revealed == false, "Already revealed");
        setCondosMeta(tokenUri, ipfsCid);
        revealed = true;
    }

    function freeze() public onlyOwner {
        frozen = true;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        owner = newOwner;
    }

    constructor(string memory condosUri, string memory streetsUri) {
        owner = msg.sender;
        CONDOS_TOKEN_URI = condosUri;
        STREETS_PREREVEAL_URI = streetsUri;
    }

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

    /* Rescuers */
    /**
     * @dev Rescue ETH sent directly to this contract.
     */
    function withdraw() public {
        payable(owner).transfer(address(this).balance);
    }

    /**
     * @dev Rescue ERC20 assets sent directly to this contract.
     */
    function withdrawForeignERC20(address tokenContract) public onlyOwner {
        IERC20 token = IERC20(tokenContract);
        token.transfer(owner, token.balanceOf(address(this)));
    }

    /**
     * @dev Rescue ERC721 assets sent directly to this contract.
     */
    function withdrawForeignERC721(address tokenContract, uint256 tokenId) public onlyOwner {
        IERC721(tokenContract).safeTransferFrom(address(this), owner, tokenId);
    }
}

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

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

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

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

        bytes memory table = TABLE;

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

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

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

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

            mstore(resultPtr, out)

            resultPtr := add(resultPtr, 4)
            }

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

            mstore(result, encodedLen)
                }

        return string(result);
    }
}

File 2 of 3 : IERC721.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol)

pragma solidity ^0.8.0;

import "../../utils/introspection/IERC165.sol";

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);
}

File 3 of 3 : IERC165.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"condosUri","type":"string"},{"internalType":"string","name":"streetsUri","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BACKGROUNDS_IPFS_CID","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CONDOS_IPFS_CID","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CONDOS_TOKEN_URI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"IPFS_URI_Prefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STREETS_PREREVEAL_URI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"ipfsCid","type":"string"},{"internalType":"string","name":"backgroundName","type":"string"}],"name":"addBackground","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"condosAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freeze","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"frozen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"tokenUri","type":"string"},{"internalType":"string","name":"ipfsCid","type":"string"}],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"baseUri","type":"string"}],"name":"setBaseImageURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"setCondosAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"tokenUri","type":"string"},{"internalType":"string","name":"ipfsCid","type":"string"}],"name":"setCondosMeta","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"ipfsURIPrefix","type":"string"}],"name":"setIpfsURIPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"setStreetsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"streetMetadata","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"streetsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBackgrounds","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"uint2str","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"ipfsCid","type":"string"}],"name":"updateBackground","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newDescription","type":"string"}],"name":"updateDescription","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenContract","type":"address"}],"name":"withdrawForeignERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"withdrawForeignERC721","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c0604052602060808190527f68747470733a2f2f636f6e646f6d696e692e696f2f6170692f7374726565742f60a090815262000040916001919062001ce1565b5060405180606001604052806027815260200162003ff2602791398051620000719160029160209091019062001ce1565b50604080516020810191829052600090819052620000929160039162001ce1565b50604080516020810191829052600090819052620000b39160049162001ce1565b50604080516020810191829052600090819052620000d49160059162001ce1565b50604080516020810191829052600090819052620000f59160069162001ce1565b506007805461ffff191660141790556009805461ffff60a01b191690556040805160608101909152602a80825262003fc8602083013980516200014191600a9160209091019062001ce1565b50604080516102c081018252600c61028082018181526b21b934b9b81020baba3ab6b760a11b6102a084015282528251808401845260098082526844656570204361766560b81b6020838101919091528085019290925284518086018652600b8082526a1119595c08125b5c1858dd60aa1b8285015285870191909152855180870187528281526846697265776f726b7360b81b81850152606086015285518087018752600e8082526d476f64732041726520416e67727960901b828601526080870191909152865180880188528581526b476f6f64204d6f726e696e6760a01b8186015260a087015286518088018852600a808252692432b0bb3c902930b4b760b11b8287015260c0880191909152875180890189528381526a4d61727320436f6c6f6e7960a81b8187015260e08801528751808901895284815268526574726f7761766560b81b81870152610100880152875180890189529081526953616e642044756e657360b01b8186015261012087015286518088018852601081526f29b2b932b7329020b33a32b93737b7b760811b81860152610140870152865180880188528581526b536e6f7779204669656c647360a01b81860152610160870152865180880188526006815265537030306b7960d01b81860152610180870152865180880188529485526b14dd185c9c9e48139a59da1d60a21b858501526101a0860194909452855180870187529384526d29ba37b936bc902bb2b0ba3432b960911b848401526101c08501939093528451808601865260088152675465612054696d6560c01b818401526101e08501528451808601865290815268546869636b20466f6760b81b81830152610200840152835180850185526007815266151a1a58dad95d60ca1b81830152610220840152835180850185528281526a2a37903a34329026b7b7b760a91b818301526102408401528351808501909452600d84526c556e646572207468652053656160981b908401526102608201929092526200042f9190601462001d70565b506040518061122001604052806040518060400160405280600d81526020016c139650c8105c185c9d1b595b9d609a1b81525081526020016040518060400160405280600c81526020016b4761636861204f666669636560a01b81525081526020016040518060400160405280600e81526020016d0a0c2e4d2e6d2cadc4086c2cd87560931b81525081526020016040518060400160405280600e81526020016d4d6f756e7461696e20486f75736560901b81525081526020016040518060400160405280600d81526020016c486f6e657920466163746f727960981b81525081526020016040518060400160405280600b81526020016a10dbd999995948141bdbdb60aa1b81525081526020016040518060400160405280600981526020016854562053747564696f60b81b81525081526020016040518060400160405280600a815260200169477265656e686f75736560b01b81525081526020016040518060400160405280600b81526020016a506f7374204f666669636560a81b81525081526020016040518060400160405280600c81526020016b44657365727420486f75736560a01b81525081526020016040518060400160405280600a8152602001692637bab733b2902130b960b11b81525081526020016040518060400160405280601481526020017f446574656374697665277320536e6f7762616c6c00000000000000000000000081525081526020016040518060400160405280600b81526020016a5374696c7420486f75736560a81b81525081526020016040518060400160405280600e81526020016d56696e746167652041726361646560901b81525081526020016040518060400160405280601081526020016f42726f6e6b6f2773205374616469756d60801b81525081526020016040518060400160405280600d81526020016c2737b6b0b2102a3930b4b632b960991b81525081526020016040518060400160405280601581526020017f5374617267617a6572204f627365727661746f7279000000000000000000000081525081526020016040518060400160405280600e81526020016d26b0b4b232b713b9902a37bbb2b960911b81525081526020016040518060400160405280600f81526020016e53686f7070696e672043656e74726560881b81525081526020016040518060400160405280600f81526020016e556e64657268696c6c20486f75736560881b81525081526020016040518060400160405280600f81526020016e139bda5c9948135bdd9a594814d95d608a1b81525081526020016040518060400160405280601081526020016f26b7b7b721b0ba399029b432b63a32b960811b8152508152602001604051806040016040528060078152602001664b6f6e62696e6960c81b8152508152602001604051806040016040528060078152602001664c69627261727960c81b81525081526020016040518060400160405280600e81526020016d4d6f64756c61722053706163657360901b81525081526020016040518060400160405280600d81526020016c42697274686461792043616b6560981b81525081526020016040518060400160405280600f81526020016e149bd8dade4810d85b5c0815195b9d608a1b81525081526020016040518060400160405280600d81526020016c416d616e69746120486f75736560981b81525081526020016040518060400160405280600981526020016810da5d1e4812185b1b60ba1b815250815260200160405180604001604052806008815260200167149d594812185b1b60c21b8152508152602001604051806040016040528060048152602001632130b93760e11b81525081526020016040518060400160405280600a8152602001694c69676874686f75736560b01b81525081526020016040518060400160405280601081526020016f5472616e736973746f7220526164696f60801b81525081526020016040518060400160405280600a815260200169426f617420486f75736560b01b815250815260200160405180604001604052806009815260200168466973682054616e6b60b81b8152508152602001604051806040016040528060078152602001662a37b0b9ba32b960c91b81525081526020016040518060400160405280600b81526020016a2637bab239b832b0b5b2b960a91b81525081526020016040518060400160405280600b81526020016a14db985a5b0814da195b1b60aa1b81525081526020016040518060400160405280600c81526020016b119a5c9948121e591c985b9d60a21b81525081526020016040518060400160405280600c81526020016b4d6f6465726e20486f75736560a01b81525081526020016040518060400160405280600a8152602001691119585d1a0810985b1b60b21b81525081526020016040518060400160405280600b81526020016a427269636b20486f75736560a81b815250815260200160405180604001604052806009815260200168536166652042616e6b60b81b81525081526020016040518060400160405280600b81526020016a23b0b99029ba30ba34b7b760a91b81525081526020016040518060400160405280600b81526020016a53617070792049676c6f6f60a81b81525081526020016040518060400160405280600e81526020016d4d6564696576616c20486f75736560901b815250815260200160405180604001604052806008815260200167506574204361726560c01b81525081526020016040518060400160405280600781526020016641636164656d7960c81b81525081526020016040518060400160405280600c81526020016b54726f6c6c6579204761746560a01b81525081526020016040518060400160405280600a81526020016923bab6902830b93637b960b11b81525081526020016040518060400160405280600c81526020016b47616d65732050616c61636560a01b81525081526020016040518060400160405280600f81526020016e2b34b1ba37b934b0b71026b0b737b960891b81525081526020016040518060400160405280600e81526020016d535441524b414445204172656e6160901b815250815260200160405180604001604052806011815260200170436f6e737472756374696f6e205369746560781b81525081526020016040518060400160405280600881526020016750697a7a6572696160c01b81525081526020016040518060400160405280600b81526020016a437962657220436f6e646f60a81b81525081526020016040518060400160405280601481526020017f4c756e617220506c6f747320506c6174666f726d00000000000000000000000081525081526020016040518060400160405280600d81526020016c141a5c985d1948125cdb185b99609a1b81525081526020016040518060400160405280601881526020017f576f726c647769646520576562622041706172746d656e74000000000000000081525081526020016040518060400160405280600c81526020016b4c6567696f6e204172656e6160a01b81525081526020016040518060400160405280600c81526020016b437572696f20436173746c6560a01b81525081526020016040518060400160405280600a8152602001692934b1b29027b739b2b760b11b81525081526020016040518060400160405280600c81526020016b42656c667279205275696e7360a01b8152508152602001604051806040016040528060118152602001700437572696f20436f666665652053686f7607c1b81525081526020016040518060400160405280600e81526020016d506978656c6d617020486f75736560901b815250815260200160405180604001604052806009815260200168446f6720486f75736560b81b81525081526020016040518060400160405280601081526020016f0506c616e74204672656e732053686f760841b81525081526020016040518060400160405280600d81526020016c15d9585c1bdb9cc810da195cdd609a1b81525081526020016040518060400160405280601681526020017f5265616c6d73206f6620457468657220436173746c650000000000000000000081525081526020016040518060400160405280600f81526020016e50756e79436f64657320486f75736560881b81525081526020016040518060400160405280600e81526020016d2bb2b9ba32b9371029b0b637b7b760911b81525081526020016040518060400160405280601081526020016f49736f74696c65204275696c64696e6760801b81525081526020016040518060400160405280601781526020017f4d6f6f6e436174732720466f7274206f6620426f7865730000000000000000008152508152602001604051806040016040528060098152602001684d6175736f6c65756d60b81b81525081526020016040518060400160405280600f81526020016e4661737420466f6f6420547275636b60881b81525081526020016040518060400160405280600a81526020016911dc985a5b88135a5b1b60b21b81525081526020016040518060400160405280601181526020017022b6b834b9329029b5bcb9b1b930b832b960791b81525081526020016040518060400160405280600b81526020016a4d6563686120486f75736560a81b8152508152602001604051806040016040528060098152602001684e594320436f6e646f60b81b81525081526020016040518060400160405280600f81526020016e2830b1b434b735b7902830b93637b960891b81525081526020016040518060400160405280601081526020016f2830b934b9b4b2b71020ba32b634b2b960811b81525081526020016040518060400160405280600c81526020016b57696e74657220486f75736560a01b81525081526020016040518060400160405280600f81526020016e43616e646c657320466163746f727960881b81525081526020016040518060400160405280600b81526020016a4e6577732053747564696f60a81b81525081526020016040518060400160405280600c81526020016b4d797374696320486f75736560a01b81525081526020016040518060400160405280600f81526020016e53616e7461277320466163746f727960881b8152508152602001604051806040016040528060068152602001652130bd30b0b960d11b81525081526020016040518060400160405280600b81526020016a27b933b0b734b1902130b960a91b81525081526020016040518060400160405280601181526020017014995859195c89dcc814db9bddd8985b1b607a1b81525081526020016040518060400160405280600b81526020016a4261796f7520486f75736560a81b81525081526020016040518060400160405280600e81526020016d4573706f7274732041726361646560901b81525081526020016040518060400160405280600b81526020016a5275676279204172656e6160a81b8152508152602001604051806040016040528060098152602001682832b0b1b2902b30b760b91b81525081526020016040518060400160405280601781526020017f416c69656e20526573656172636820466163696c69747900000000000000000081525081526020016040518060400160405280600b81526020016a21b637b1b5902a37bbb2b960a91b81525081526020016040518060400160405280600e81526020016d47726f63686572792053746f726560901b81525081526020016040518060400160405280600e81526020016d115c1a58c8135bdd9a594814d95d60921b8152508152602001604051806040016040528060058152602001642234b732b960d91b81525081526020016040518060400160405280600a8152602001695479706f67726170687960b01b81525081526020016040518060400160405280601081526020016f446f636b7320436f6e7461696e65727360801b81525081526020016040518060400160405280600c81526020016b5261696e626f772043616b6560a01b81525081526020016040518060400160405280600f81526020016e141a5b9948149a5919d94815195b9d608a1b81525081526020016040518060400160405280600c81526020016b426f6c65746520486f75736560a01b815250815260200160405180604001604052806009815260200168151bdddb8812185b1b60ba1b815250815260200160405180604001604052806007815260200166537461626c657360c81b81525081526020016040518060400160405280600f81526020016e26b2b234b2bb30b6102132b0b1b7b760891b81525081526020016040518060400160405280600c81526020016b53746164696f20526164696f60a01b81525081526020016040518060400160405280600c81526020016b50697261746520486f75736560a01b81525081526020016040518060400160405280600a815260200169506f7474792054616e6b60b01b81525081526020016040518060400160405280600c81526020016b2a37b0b9ba10213ab93732b960a11b81525081526020016040518060400160405280600d81526020016c436f6e636572742056656e756560981b81525081526020016040518060400160405280600881526020016714d9585cda195b1b60c21b81525081526020016040518060400160405280600c81526020016b2334b9329029ba30ba34b7b760a11b81525081526020016040518060400160405280600d81526020016c4b6f7265616e2045737461746560981b815250815260200160405180604001604052806005815260200164048616c2d360dc1b8152508152602001604051806040016040528060098152602001684d4f4320486f75736560b81b81525081526020016040518060400160405280600a81526020016950696767792042616e6b60b01b81525081526020016040518060400160405280600e81526020016d2832ba3937b61029ba30ba34b7b760911b81525081526020016040518060400160405280600a81526020016954656e742049676c6f6f60b01b81525081526020016040518060400160405280600e81526020016d09acac8d2caecc2d840a6dad2e8d60931b815250815260200160405180604001604052806008815260200167121bdcdc1a5d185b60c21b81525081526020016040518060400160405280600b81526020016a426f696c657220526f6f6d60a81b81525081526020016040518060400160405280600f81526020016e131d59d9d859d948105a5c9c1bdc9d608a1b81525081526020016040518060400160405280600a815260200169043616e64792053686f760b41b81525081526020016040518060400160405280601081526020016f466c697070657220506c6179726f6f6d60801b81525081526020016040518060400160405280600d81526020016c2430bab73a32b21026b0b737b960991b815250815260200160405180604001604052806009815260200168115b5c1d1e48131bdd60ba1b81525081526020016040518060400160405280600f81526020016e50697a7a612054616b65204177617960881b81525081526020016040518060400160405280600e81526020016d223cb9ba37b834b1902a37bbb2b960911b81525081526020016040518060400160405280600d81526020016c5361696e742773205275696e7360981b81525081526020016040518060400160405280600e81526020016d15da5e985c9909dcc810da195cdd60921b81525081526020016040518060400160405280601081526020016f5765737465726e20456d706f7269756d60801b81525081526020016040518060400160405280600e81526020016d15d85d195c99985b1b08135a5b1b60921b81525081526020016040518060400160405280600d81526020016c21b0b839bab632902a37bbb2b960991b8152508152602001604051806040016040528060088152602001674d6563686120485160c01b81525081526020016040518060400160405280600b81526020016a2a37b5bcb7902a37bbb2b960a91b8152508152602001604051806040016040528060098152602001680aa8c9e4086e4c2e6d60bb1b8152508152602001604051806040016040528060088152602001672337bab73a30b4b760c11b81525081526020016040518060400160405280600881526020016714985a5b1c9bd85960c21b81525081526020016040518060400160405280600981526020016843697479205061726b60b81b81525081526020016040518060400160405280600b81526020016a506c616e6573204761746560a81b8152508152602001604051806040016040528060058152602001640b25aa4caf60db1b81525081526020016040518060400160405280600b81526020016a11995c9c9e4815da19595b60aa1b815250815260200160405180604001604052806005815260200164576f6f647360d81b81525081526020016040518060400160405280600981526020016843697479204761746560b81b815250815250600c90609162001c6392919062001dd0565b5034801562001c7157600080fd5b50604051620040193803806200401983398101604081905262001c949162001f5c565b6007805462010000600160b01b031916336201000002179055815162001cc290600390602085019062001ce1565b50805162001cd890600590602084019062001ce1565b50505062002003565b82805462001cef9062001fc6565b90600052602060002090601f01602090048101928262001d13576000855562001d5e565b82601f1062001d2e57805160ff191683800117855562001d5e565b8280016001018555821562001d5e579182015b8281111562001d5e57825182559160200191906001019062001d41565b5062001d6c92915062001e15565b5090565b82805482825590600052602060002090810192821562001dc2579160200282015b8281111562001dc2578251805162001db191849160209091019062001ce1565b509160200191906001019062001d91565b5062001d6c92915062001e2c565b826091810192821562001dc2579160200282015b8281111562001dc2578251805162001e0491849160209091019062001ce1565b509160200191906001019062001de4565b5b8082111562001d6c576000815560010162001e16565b8082111562001d6c57600062001e43828262001e4d565b5060010162001e2c565b50805462001e5b9062001fc6565b6000825580601f1062001e6c575050565b601f01602090049060005260206000209081019062001e8c919062001e15565b50565b634e487b7160e01b600052604160045260246000fd5b600082601f83011262001eb757600080fd5b81516001600160401b038082111562001ed45762001ed462001e8f565b604051601f8301601f19908116603f0116810190828211818310171562001eff5762001eff62001e8f565b8160405283815260209250868385880101111562001f1c57600080fd5b600091505b8382101562001f40578582018301518183018401529082019062001f21565b8382111562001f525760008385830101525b9695505050505050565b6000806040838503121562001f7057600080fd5b82516001600160401b038082111562001f8857600080fd5b62001f968683870162001ea5565b9350602085015191508082111562001fad57600080fd5b5062001fbc8582860162001ea5565b9150509250929050565b600181811c9082168062001fdb57607f821691505b6020821081141562001ffd57634e487b7160e01b600052602260045260246000fd5b50919050565b611fb580620020136000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80635c471995116100f9578063d565a70211610097578063f2fde38b11610071578063f2fde38b14610368578063f76f950e1461037b578063f91403cc1461038e578063fa5f75c6146103a157600080fd5b8063d565a7021461033a578063e1e24ae414610342578063e735b48a1461035557600080fd5b80638647ca76116100d35780638647ca76146102da5780638da5cb5b146102ed57806393de838614610306578063a373f7611461031957600080fd5b80635c471995146102ac578063617da5f0146102bf57806362a5af3b146102d257600080fd5b806339063ebf116101665780635057ca94116101405780635057ca9414610252578063508b08c51461025a57806351830227146102855780635ba1b2c71461029957600080fd5b806339063ebf146102245780633ccfd60b146102375780634618bcf21461023f57600080fd5b8063054f7d9c146101ae5780630ce06b68146101d75780630d7150a7146101ec57806310b8446314610201578063255a87fe146102095780632f8e9f421461021c575b600080fd5b6009546101c290600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b6101ea6101e5366004611638565b6103b4565b005b6101f4610463565b6040516101ce9190611692565b6101f46104f1565b6101ea61021736600461170e565b6104fe565b6101f461053f565b6101ea610232366004611750565b61054c565b6101ea6105f7565b6101ea61024d3660046117bc565b61063b565b6101f46106e6565b60095461026d906001600160a01b031681565b6040516001600160a01b0390911681526020016101ce565b6009546101c290600160a01b900460ff1681565b6101ea6102a7366004611750565b6106f3565b6101ea6102ba3660046117bc565b610795565b60085461026d906001600160a01b031681565b6101ea6108d2565b6101ea6102e836600461170e565b610917565b60075461026d906201000090046001600160a01b031681565b6101ea61031436600461170e565b610953565b6007546103279061ffff1681565b60405161ffff90911681526020016101ce565b6101f461098f565b6101ea6103503660046117bc565b61099c565b6101ea61036336600461170e565b610a47565b6101ea6103763660046117bc565b610a83565b6101f46103893660046117de565b610add565b6101ea61039c366004611750565b610be3565b6101f46103af3660046117de565b610c7f565b6007546201000090046001600160a01b031633146103ed5760405162461bcd60e51b81526004016103e4906117f7565b60405180910390fd5b600754604051632142170760e11b8152306004820152620100009091046001600160a01b039081166024830152604482018390528316906342842e0e90606401600060405180830381600087803b15801561044757600080fd5b505af115801561045b573d6000803e3d6000fd5b505050505050565b600580546104709061181a565b80601f016020809104026020016040519081016040528092919081815260200182805461049c9061181a565b80156104e95780601f106104be576101008083540402835291602001916104e9565b820191906000526020600020905b8154815290600101906020018083116104cc57829003601f168201915b505050505081565b600680546104709061181a565b6007546201000090046001600160a01b0316331461052e5760405162461bcd60e51b81526004016103e4906117f7565b61053a60028383611588565b505050565b600280546104709061181a565b6007546201000090046001600160a01b0316331461057c5760405162461bcd60e51b81526004016103e4906117f7565b61058860068585611588565b50600754600b8054849284929161ffff9091169081106105aa576105aa61184f565b9060005260206000200191906105c1929190611588565b506007805461ffff169060006105d68361187b565b91906101000a81548161ffff021916908361ffff1602179055505050505050565b6007546040516001600160a01b036201000090920491909116904780156108fc02916000818181858888f19350505050158015610638573d6000803e3d6000fd5b50565b6007546201000090046001600160a01b0316331461066b5760405162461bcd60e51b81526004016103e4906117f7565b6008546001600160a01b0316156106c45760405162461bcd60e51b815260206004820152601a60248201527f436f6e646f73206164647265737320616c72656164792073657400000000000060448201526064016103e4565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b600480546104709061181a565b6007546201000090046001600160a01b031633146107235760405162461bcd60e51b81526004016103e4906117f7565b600954600160a01b900460ff16156107705760405162461bcd60e51b815260206004820152601060248201526f105b1c9958591e481c995d99585b195960821b60448201526064016103e4565b61077c84848484610be3565b50506009805460ff60a01b1916600160a01b1790555050565b6007546201000090046001600160a01b031633146107c55760405162461bcd60e51b81526004016103e4906117f7565b6007546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb926201000090049091169083906370a082319060240160206040518083038186803b15801561081c57600080fd5b505afa158015610830573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610854919061189d565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b15801561089a57600080fd5b505af11580156108ae573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053a91906118b6565b6007546201000090046001600160a01b031633146109025760405162461bcd60e51b81526004016103e4906117f7565b6009805460ff60a81b1916600160a81b179055565b6007546201000090046001600160a01b031633146109475760405162461bcd60e51b81526004016103e4906117f7565b61053a60018383611588565b6007546201000090046001600160a01b031633146109835760405162461bcd60e51b81526004016103e4906117f7565b61053a60068383611588565b600380546104709061181a565b6007546201000090046001600160a01b031633146109cc5760405162461bcd60e51b81526004016103e4906117f7565b6009546001600160a01b031615610a255760405162461bcd60e51b815260206004820152601b60248201527f53747265657473206164647265737320616c726561647920736574000000000060448201526064016103e4565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6007546201000090046001600160a01b03163314610a775760405162461bcd60e51b81526004016103e4906117f7565b61053a600a8383611588565b6007546201000090046001600160a01b03163314610ab35760405162461bcd60e51b81526004016103e4906117f7565b600780546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b606081610b015750506040805180820190915260018152600360fc1b602082015290565b8160005b8115610b2b5780610b15816118d8565b9150610b249050600a83611909565b9150610b05565b60008167ffffffffffffffff811115610b4657610b4661191d565b6040519080825280601f01601f191660200182016040528015610b70576020820181803683370190505b5090505b8415610bdb57610b85600183611933565b9150610b92600a8661194a565b610b9d90603061195e565b60f81b818381518110610bb257610bb261184f565b60200101906001600160f81b031916908160001a905350610bd4600a86611909565b9450610b74565b949350505050565b6007546201000090046001600160a01b03163314610c135760405162461bcd60e51b81526004016103e4906117f7565b600954600160a81b900460ff1615610c5f5760405162461bcd60e51b815260206004820152600f60248201526e26b2ba30b230ba3090333937bd32b760891b60448201526064016103e4565b610c6b60038585611588565b50610c7860048383611588565b5050505050565b600954604051636cde788760e11b815260048101839052606091600091829182916001600160a01b039091169063d9bcf10e9060240160e06040518083038186803b158015610ccd57600080fd5b505afa158015610ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0591906119a5565b9250925092506000610d1686610add565b90506000610d248585610dc1565b90506000610d328686610eef565b610d5b604051806040016040528060078152602001661d1bdad95b925960ca1b815250856111ee565b610d648661121a565b600a85604051602001610d7b959493929190611aff565b6040516020818303038152906040529050610d9581611303565b604051602001610da59190611c16565b6040516020818303038152906040529650505050505050919050565b6060600060018054610dd29061181a565b80601f0160208091040260200160405190810160405280929190818152602001828054610dfe9061181a565b8015610e4b5780601f10610e2057610100808354040283529160200191610e4b565b820191906000526020600020905b815481529060010190602001808311610e2e57829003601f168201915b5050505050905060005b6005811015610eb75781610e82868360058110610e7457610e7461184f565b602002015161ffff16610add565b604051602001610e93929190611c5b565b60405160208183030381529060405291508080610eaf906118d8565b915050610e55565b5080610ec68461ffff16610add565b604051602001610ed7929190611c96565b60405160208183030381529060405291505092915050565b606060008060005b6005811015610f64576000868260058110610f1457610f1461184f565b602002015161ffff16905060878110610f515761010e811015610f435783610f3b816118d8565b945050610f51565b82610f4d816118d8565b9350505b5080610f5c816118d8565b915050610ef7565b5060608260051415610fdd57610fb76040518060400160405280600781526020016614dc1958da585b60ca1b8152506040518060400160405280600681526020016511da5b19195960d21b8152506111ee565b604051602001610fc79190611cd4565b6040516020818303038152906040529050611053565b8160051415611053576110316040518060400160405280600781526020016614dc1958da585b60ca1b8152506040518060400160405280600a815260200169135bdb9d5b595b9d185b60b21b8152506111ee565b6040516020016110419190611cd4565b60405160208183030381529060405290505b6110688660005b602002015161ffff16611469565b61107387600161105a565b61107e88600261105a565b61108989600361105a565b6110948a600461105a565b6110bb60405180604001604052806005815260200164476f6c647360d81b8152508961156b565b6110e6604051806040016040528060098152602001684c616e646d61726b7360b81b8152508961156b565b876111bc6040518060400160405280600a815260200169109858dad9dc9bdd5b9960b21b815250600b8f61ffff16815481106111245761112461184f565b9060005260206000200180546111399061181a565b80601f01602080910402602001604051908101604052809291908181526020018280546111659061181a565b80156111b25780601f10611187576101008083540402835291602001916111b2565b820191906000526020600020905b81548152906001019060200180831161119557829003601f168201915b50505050506111ee565b6040516020016111d499989796959493929190611cf9565b604051602081830303815290604052935050505092915050565b60608282604051602001611203929190611de9565b604051602081830303815290604052905092915050565b606060005b60148110156112635782816014811061123a5761123a61184f565b1a60f81b6001600160f81b03191661125157611263565b8061125b816118d8565b91505061121f565b8061129c57505060408051808201909152601681527510dbdb991bd35a5b9a4813995a59da189bdc9a1bdbd960521b6020820152919050565b606060005b828110156112f557818582601481106112bc576112bc61184f565b1a60f81b6040516020016112d1929190611e5a565b604051602081830303815290604052915080806112ed906118d8565b9150506112a1565b509392505050565b50919050565b805160609080611323575050604080516020810190915260008152919050565b6000600361133283600261195e565b61133c9190611909565b611347906004611e89565b9050600061135682602061195e565b67ffffffffffffffff81111561136e5761136e61191d565b6040519080825280601f01601f191660200182016040528015611398576020820181803683370190505b5090506000604051806060016040528060408152602001611f40604091399050600181016020830160005b86811015611424576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b8352600490920191016113c3565b50600386066001811461143e576002811461144f5761145b565b613d3d60f01b60011983015261145b565b603d60f81b6000198301525b505050918152949350505050565b606060878210156114ba576114b460405180604001604052806005815260200164436f6e646f60d81b815250600c84609181106114a8576114a861184f565b0180546111399061181a565b92915050565b61010e82101561152657604080518082019091526005815264436f6e646f60d81b60208201526114b490600c6114f1608786611933565b609181106115015761150161184f565b016040516020016115129190611ea8565b6040516020818303038152906040526111ee565b6040805180820190915260088152674c616e646d61726b60c01b60208201526114b490600c611556608786611933565b609181106114a8576114a861184f565b919050565b60608261157783610add565b604051602001611203929190611ec2565b8280546115949061181a565b90600052602060002090601f0160209004810192826115b657600085556115fc565b82601f106115cf5782800160ff198235161785556115fc565b828001600101855582156115fc579182015b828111156115fc5782358255916020019190600101906115e1565b5061160892915061160c565b5090565b5b80821115611608576000815560010161160d565b80356001600160a01b038116811461156657600080fd5b6000806040838503121561164b57600080fd5b61165483611621565b946020939093013593505050565b60005b8381101561167d578181015183820152602001611665565b8381111561168c576000848401525b50505050565b60208152600082518060208401526116b1816040850160208701611662565b601f01601f19169190910160400192915050565b60008083601f8401126116d757600080fd5b50813567ffffffffffffffff8111156116ef57600080fd5b60208301915083602082850101111561170757600080fd5b9250929050565b6000806020838503121561172157600080fd5b823567ffffffffffffffff81111561173857600080fd5b611744858286016116c5565b90969095509350505050565b6000806000806040858703121561176657600080fd5b843567ffffffffffffffff8082111561177e57600080fd5b61178a888389016116c5565b909650945060208701359150808211156117a357600080fd5b506117b0878288016116c5565b95989497509550505050565b6000602082840312156117ce57600080fd5b6117d782611621565b9392505050565b6000602082840312156117f057600080fd5b5035919050565b6020808252600990820152682737ba1027bbb732b960b91b604082015260600190565b600181811c9082168061182e57607f821691505b602082108114156112fd57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff8083168181141561189357611893611865565b6001019392505050565b6000602082840312156118af57600080fd5b5051919050565b6000602082840312156118c857600080fd5b815180151581146117d757600080fd5b60006000198214156118ec576118ec611865565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611918576119186118f3565b500490565b634e487b7160e01b600052604160045260246000fd5b60008282101561194557611945611865565b500390565b600082611959576119596118f3565b500690565b6000821982111561197157611971611865565b500190565b805161ffff8116811461156657600080fd5b80516bffffffffffffffffffffffff198116811461156657600080fd5b600080600060e084860312156119ba57600080fd5b84601f8501126119c957600080fd5b60405160a0810181811067ffffffffffffffff821117156119ec576119ec61191d565b6040528060a0860187811115611a0157600080fd5b865b81811015611a2257611a1481611976565b835260209283019201611a03565b50829550611a2f81611976565b9450505050611a4060c08501611988565b90509250925092565b60008151611a5b818560208601611662565b9290920192915050565b8054600090600181811c9080831680611a7f57607f831692505b6020808410821415611aa157634e487b7160e01b600052602260045260246000fd5b818015611ab55760018114611ac657611af3565b60ff19861689528489019650611af3565b60008881526020902060005b86811015611aeb5781548b820152908501908301611ad2565b505084890196505b50505050505092915050565b6e7b2261747472696275746573223a5b60881b81528551600090611b2a81600f850160208b01611662565b600b60fa1b600f918401918201528651611b4b816010840160208b01611662565b6a2e9610113730b6b2911d1160a91b601092909101918201528551611b7781601b840160208a01611662565b71111610113232b9b1b934b83a34b7b7111d1160711b601b9290910191820152611ba4602d820186611a65565b6a11161134b6b0b3b2911d1160a91b81528451909150611bcb81600b840160208801611662565b7f222c2265787465726e616c5f75726c223a202268747470733a2f2f636f6e646f600b9290910191820152686d696e692e696f227d60b81b602b820152603401979650505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251611c4e81601d850160208701611662565b91909101601d0192915050565b60008351611c6d818460208801611662565b835190830190611c81818360208801611662565b602d60f81b9101908152600101949350505050565b60008351611ca8818460208801611662565b835190830190611cbc818360208801611662565b632e706e6760e01b9101908152600401949350505050565b60008251611ce6818460208701611662565b600b60fa1b920191825250600101919050565b60008a51611d0b818460208f01611662565b600b60fa1b9083019081528a51611d29816001840160208f01611662565b600b60fa1b600192909101918201528951611d4b816002840160208e01611662565b600b60fa1b600292909101918201528851611d6d816003840160208d01611662565b600b60fa1b600392909101918201528751611d8f816004840160208c01611662565b600b60fa1b60048284010152611dd8611dd2611dcc611db9611dc6611db96005878901018e611a49565b600b60fa1b815260010190565b8b611a49565b88611a49565b86611a49565b9d9c50505050505050505050505050565b6e3d913a3930b4ba2fba3cb832911d1160891b81528251600090611e1481600f850160208801611662565b6a1116113b30b63ab2911d1160a91b600f918401918201528351611e3f81601a840160208801611662565b61227d60f01b601a9290910191820152601c01949350505050565b60008351611e6c818460208801611662565b6001600160f81b0319939093169190920190815260010192915050565b6000816000190483118215151615611ea357611ea3611865565b500290565b64023b7b632160dd1b815260006117d76005830184611a65565b6e3d913a3930b4ba2fba3cb832911d1160891b81528251600090611eed81600f850160208801611662565b691116113b30b63ab2911d60b11b600f918401918201528351611f17816019840160208801611662565b6e2c226d61785f76616c7565223a357d60881b6019929091019182015260280194935050505056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220ab857df5d234ab551ee00ba344757dc0274d129ee9d3faac0d751019fc0bf94d64736f6c634300080900334974277320612062656175746966756c2064617920696e20796f7572206e65696768626f72686f6f642e68747470733a2f2f706f6e646572776172652e6d7970696e6174612e636c6f75642f697066732f0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000012d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d507766666f3358446d41517448417373355476677050797332413731483955324b4e6f7258706b54704d75610000000000000000000000

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

0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000012d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035697066733a2f2f516d507766666f3358446d41517448417373355476677050797332413731483955324b4e6f7258706b54704d75610000000000000000000000

-----Decoded View---------------
Arg [0] : condosUri (string): -
Arg [1] : streetsUri (string): ipfs://QmPwffo3XDmAQtHAss5TvgpPys2A71H9U2KNorXpkTpMua

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [3] : 2d00000000000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000035
Arg [5] : 697066733a2f2f516d507766666f3358446d4151744841737335547667705079
Arg [6] : 7332413731483955324b4e6f7258706b54704d75610000000000000000000000


Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.