{
    "schemaVersion": "2.0.0",
    "contractName": "ERC721Token",
    "compilerOutput": {
        "abi": [
            {
                "constant": true,
                "inputs": [{ "name": "_tokenId", "type": "uint256" }],
                "name": "getApproved",
                "outputs": [{ "name": "", "type": "address" }],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [{ "name": "_approved", "type": "address" }, { "name": "_tokenId", "type": "uint256" }],
                "name": "approve",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    { "name": "_from", "type": "address" },
                    { "name": "_to", "type": "address" },
                    { "name": "_tokenId", "type": "uint256" }
                ],
                "name": "transferFrom",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    { "name": "_from", "type": "address" },
                    { "name": "_to", "type": "address" },
                    { "name": "_tokenId", "type": "uint256" }
                ],
                "name": "safeTransferFrom",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [{ "name": "_tokenId", "type": "uint256" }],
                "name": "ownerOf",
                "outputs": [{ "name": "", "type": "address" }],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [{ "name": "_owner", "type": "address" }],
                "name": "balanceOf",
                "outputs": [{ "name": "", "type": "uint256" }],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [{ "name": "_operator", "type": "address" }, { "name": "_approved", "type": "bool" }],
                "name": "setApprovalForAll",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": false,
                "inputs": [
                    { "name": "_from", "type": "address" },
                    { "name": "_to", "type": "address" },
                    { "name": "_tokenId", "type": "uint256" },
                    { "name": "_data", "type": "bytes" }
                ],
                "name": "safeTransferFrom",
                "outputs": [],
                "payable": false,
                "stateMutability": "nonpayable",
                "type": "function"
            },
            {
                "constant": true,
                "inputs": [{ "name": "_owner", "type": "address" }, { "name": "_operator", "type": "address" }],
                "name": "isApprovedForAll",
                "outputs": [{ "name": "", "type": "bool" }],
                "payable": false,
                "stateMutability": "view",
                "type": "function"
            },
            {
                "anonymous": false,
                "inputs": [
                    { "indexed": true, "name": "_from", "type": "address" },
                    { "indexed": true, "name": "_to", "type": "address" },
                    { "indexed": true, "name": "_tokenId", "type": "uint256" }
                ],
                "name": "Transfer",
                "type": "event"
            },
            {
                "anonymous": false,
                "inputs": [
                    { "indexed": true, "name": "_owner", "type": "address" },
                    { "indexed": true, "name": "_approved", "type": "address" },
                    { "indexed": true, "name": "_tokenId", "type": "uint256" }
                ],
                "name": "Approval",
                "type": "event"
            },
            {
                "anonymous": false,
                "inputs": [
                    { "indexed": true, "name": "_owner", "type": "address" },
                    { "indexed": true, "name": "_operator", "type": "address" },
                    { "indexed": false, "name": "_approved", "type": "bool" }
                ],
                "name": "ApprovalForAll",
                "type": "event"
            }
        ],
        "devdoc": {
            "methods": {
                "approve(address,uint256)": {
                    "details": "The zero address indicates there is no approved address.      Throws unless `msg.sender` is the current NFT owner, or an authorized      operator of the current owner.",
                    "params": { "_approved": "The new approved NFT controller", "_tokenId": "The NFT to approve" }
                },
                "balanceOf(address)": {
                    "details": "NFTs assigned to the zero address are considered invalid, and this      function throws for queries about the zero address.",
                    "params": { "_owner": "An address for whom to query the balance" },
                    "return": "The number of NFTs owned by `_owner`, possibly zero"
                },
                "getApproved(uint256)": {
                    "details": "Throws if `_tokenId` is not a valid NFT.",
                    "params": { "_tokenId": "The NFT to find the approved address for" },
                    "return": "The approved address for this NFT, or the zero address if there is none"
                },
                "isApprovedForAll(address,address)": {
                    "params": {
                        "_operator": "The address that acts on behalf of the owner",
                        "_owner": "The address that owns the NFTs"
                    },
                    "return": "True if `_operator` is an approved operator for `_owner`, false otherwise"
                },
                "ownerOf(uint256)": {
                    "details": "NFTs assigned to zero address are considered invalid, and queries      about them do throw.",
                    "params": { "_tokenId": "The identifier for an NFT" },
                    "return": "The address of the owner of the NFT"
                },
                "safeTransferFrom(address,address,uint256)": {
                    "details": "This works identically to the other function with an extra data parameter,      except this function just sets data to \"\".",
                    "params": {
                        "_from": "The current owner of the NFT",
                        "_to": "The new owner",
                        "_tokenId": "The NFT to transfer"
                    }
                },
                "safeTransferFrom(address,address,uint256,bytes)": {
                    "details": "Throws unless `msg.sender` is the current owner, an authorized      operator, or the approved address for this NFT. Throws if `_from` is      not the current owner. Throws if `_to` is the zero address. Throws if      `_tokenId` is not a valid NFT. When transfer is complete, this function      checks if `_to` is a smart contract (code size > 0). If so, it calls      `onERC721Received` on `_to` and throws if the return value is not      `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`.",
                    "params": {
                        "_data": "Additional data with no specified format, sent in call to `_to`",
                        "_from": "The current owner of the NFT",
                        "_to": "The new owner",
                        "_tokenId": "The NFT to transfer"
                    }
                },
                "setApprovalForAll(address,bool)": {
                    "details": "Emits the ApprovalForAll event. The contract MUST allow      multiple operators per owner.",
                    "params": {
                        "_approved": "True if the operator is approved, false to revoke approval",
                        "_operator": "Address to add to the set of authorized operators"
                    }
                },
                "transferFrom(address,address,uint256)": {
                    "details": "Throws unless `msg.sender` is the current owner, an authorized      operator, or the approved address for this NFT. Throws if `_from` is      not the current owner. Throws if `_to` is the zero address. Throws if      `_tokenId` is not a valid NFT.",
                    "params": {
                        "_from": "The current owner of the NFT",
                        "_to": "The new owner",
                        "_tokenId": "The NFT to transfer"
                    }
                }
            }
        },
        "evm": {
            "bytecode": {
                "object": "[encoded data, 7324 characters]"
            }
        }
    },
    "networks": {}
}
