{
  "contractName": "DatasetRegistry",
  "abi": [
    {
      "inputs": [],
      "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",
      "constant": true
    },
    {
      "inputs": [],
      "name": "baseURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_previous",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initialized",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "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",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_entry",
          "type": "address"
        }
      ],
      "name": "isRegistered",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "master",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "previous",
      "outputs": [
        {
          "internalType": "contract IRegistry",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "proxyCode",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "proxyCodeHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "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": "address",
          "name": "_ens",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_name",
          "type": "string"
        }
      ],
      "name": "setName",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "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",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "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": [
        {
          "internalType": "address",
          "name": "_datasetOwner",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_datasetName",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "_datasetMultiaddr",
          "type": "bytes"
        },
        {
          "internalType": "bytes32",
          "name": "_datasetChecksum",
          "type": "bytes32"
        }
      ],
      "name": "createDataset",
      "outputs": [
        {
          "internalType": "contract Dataset",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_datasetOwner",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_datasetName",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "_datasetMultiaddr",
          "type": "bytes"
        },
        {
          "internalType": "bytes32",
          "name": "_datasetChecksum",
          "type": "bytes32"
        }
      ],
      "name": "predictDataset",
      "outputs": [
        {
          "internalType": "contract Dataset",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"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\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_datasetOwner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_datasetName\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"_datasetMultiaddr\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_datasetChecksum\",\"type\":\"bytes32\"}],\"name\":\"createDataset\",\"outputs\":[{\"internalType\":\"contract Dataset\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"address\",\"name\":\"_previous\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":[{\"internalType\":\"address\",\"name\":\"_entry\",\"type\":\"address\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"master\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":[{\"internalType\":\"address\",\"name\":\"_datasetOwner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_datasetName\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"_datasetMultiaddr\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_datasetChecksum\",\"type\":\"bytes32\"}],\"name\":\"predictDataset\",\"outputs\":[{\"internalType\":\"contract Dataset\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"previous\",\"outputs\":[{\"internalType\":\"contract IRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxyCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxyCodeHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":\"address\",\"name\":\"_ens\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"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\"}],\"devdoc\":{\"methods\":{\"approve(address,uint256)\":{\"details\":\"Approves another address to transfer the given token ID The zero address indicates there is no approved address. There can only be one approved address per token at a given time. Can only be called by the token owner or an approved operator.\",\"params\":{\"to\":\"address to be approved for the given token ID\",\"tokenId\":\"uint256 ID of the token to be approved\"}},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address.\",\"params\":{\"owner\":\"address to query the balance of\"},\"returns\":{\"_0\":\"uint256 representing the amount owned by the passed address\"}},\"baseURI()\":{\"details\":\"Returns the base URI set via {_setBaseURI}. This will be automatically added as a prefix in {tokenURI} to each token's URI, or to the token ID if no specific URI is set for that token ID.\"},\"getApproved(uint256)\":{\"details\":\"Gets the approved address for a token ID, or zero if no address set Reverts if the token ID does not exist.\",\"params\":{\"tokenId\":\"uint256 ID of the token to query the approval of\"},\"returns\":{\"_0\":\"address currently approved for the given token ID\"}},\"isApprovedForAll(address,address)\":{\"details\":\"Tells whether an operator is approved by a given owner.\",\"params\":{\"operator\":\"operator address which you want to query the approval of\",\"owner\":\"owner address which you want to query the approval of\"},\"returns\":{\"_0\":\"bool whether the given operator is approved by the given owner\"}},\"name()\":{\"details\":\"Gets the token name.\",\"returns\":{\"_0\":\"string representing the token name\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"Gets the owner of the specified token ID.\",\"params\":{\"tokenId\":\"uint256 ID of the token to query the owner of\"},\"returns\":{\"_0\":\"address currently marked as the owner of the given token ID\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner.     * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`; otherwise, the transfer is reverted. Requires the msg.sender to be the owner, approved, or operator\",\"params\":{\"from\":\"current owner of the token\",\"to\":\"address to receive the ownership of the given token ID\",\"tokenId\":\"uint256 ID of the token to be transferred\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`; otherwise, the transfer is reverted. Requires the _msgSender() to be the owner, approved, or operator\",\"params\":{\"_data\":\"bytes data to send along with a safe transfer check\",\"from\":\"current owner of the token\",\"to\":\"address to receive the ownership of the given token ID\",\"tokenId\":\"uint256 ID of the token to be transferred\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalf.\",\"params\":{\"approved\":\"representing the status of the approval to be set\",\"operator\":\"operator address to set the approval\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.     * Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Gets the token symbol.\",\"returns\":{\"_0\":\"string representing the token symbol\"}},\"tokenByIndex(uint256)\":{\"details\":\"Gets the token ID at a given index of all the tokens in this contract Reverts if the index is greater or equal to the total number of tokens.\",\"params\":{\"index\":\"uint256 representing the index to be accessed of the tokens list\"},\"returns\":{\"_0\":\"uint256 token ID at the given index of the tokens list\"}},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Gets the token ID at a given index of the tokens list of the requested owner.\",\"params\":{\"index\":\"uint256 representing the index to be accessed of the requested tokens list\",\"owner\":\"address owning the tokens list to be accessed\"},\"returns\":{\"_0\":\"uint256 token ID at the given index of the tokens list owned by the requested address\"}},\"tokenURI(uint256)\":{\"details\":\"Returns the URI for a given token ID. May return an empty string.     * If a base URI is set (via {_setBaseURI}), it is added as a prefix to the token's own URI (via {_setTokenURI}).     * If there is a base URI but no token URI, the token's ID will be used as its URI when appending it to the base URI. This pattern for autogenerated token URIs can lead to large gas savings.     * .Examples |=== |`_setBaseURI()` |`_setTokenURI()` |`tokenURI()` | \\\"\\\" | \\\"\\\" | \\\"\\\" | \\\"\\\" | \\\"token.uri/123\\\" | \\\"token.uri/123\\\" | \\\"token.uri/\\\" | \\\"123\\\" | \\\"token.uri/123\\\" | \\\"token.uri/\\\" | \\\"\\\" | \\\"token.uri/<tokenId>\\\" |===     * Requirements:     * - `tokenId` must exist.\"},\"totalSupply()\":{\"details\":\"Gets the total amount of tokens stored by the contract.\",\"returns\":{\"_0\":\"uint256 representing the total amount of tokens\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers the ownership of a given token ID to another address. Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requires the msg.sender to be the owner, approved, or operator.\",\"params\":{\"from\":\"current owner of the token\",\"to\":\"address to receive the ownership of the given token ID\",\"tokenId\":\"uint256 ID of the token to be transferred\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{\"constructor\":\"Constructor\"}}},\"settings\":{\"compilationTarget\":{\"/home/amxx/Work/iExec/code/PoCo-dev/contracts/registries/datasets/DatasetRegistry.sol\":\"DatasetRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/amxx/Work/iExec/code/PoCo-dev/contracts/registries/IRegistry.sol\":{\"keccak256\":\"0x22cd93dce3ec7f424ca689cdd4d5aa6a7d0d5ff81133c8530c5397f206100b84\",\"urls\":[\"bzz-raw://3a12bb04edc05201d7b0f00d7a401152daaa0ee2fd794a848fd760290edcfffa\",\"dweb:/ipfs/QmXYRdrHLLcutF1JLcKSKiCRMxo5X4713BfXFYM4gzrXWc\"]},\"/home/amxx/Work/iExec/code/PoCo-dev/contracts/registries/Registry.sol\":{\"keccak256\":\"0xdf594884fc674966628ebbb2b88bc470c89881fdad988812c815bf371ce8b387\",\"urls\":[\"bzz-raw://2386446324af596f08c0a09a2a9047a1d24187ae19c6d07ad727dfa72ff597c9\",\"dweb:/ipfs/QmYmN8jTjiLmcEKXxFPCouubca8AU92agFt4zMeNpkiLey\"]},\"/home/amxx/Work/iExec/code/PoCo-dev/contracts/registries/RegistryEntry.sol\":{\"keccak256\":\"0xc5b8b64b19a7f26bdeda8dce637b65c16388adfdc6a77e02455c74722908ed8b\",\"urls\":[\"bzz-raw://a25ccdaeff6f497a58b6b5fda0f82a53243e51be2f59a8ebd4f3f294a95c9f03\",\"dweb:/ipfs/QmWNqwVbTmdVjYYuEaG32HR8P2fDWbTD6YDGX2B623976a\"]},\"/home/amxx/Work/iExec/code/PoCo-dev/contracts/registries/datasets/Dataset.sol\":{\"keccak256\":\"0x343c0cb970203c54630853190b6535f7170e9e3d32371fb30950c0b73140fb47\",\"urls\":[\"bzz-raw://7ffd18cda40275e7de235d1aa1166410a8e377ef9f1872fa50f58b1053391e03\",\"dweb:/ipfs/QmUkg99KkPyi5DKZNSbyCm9Lw2GMPQW2r7jJkywg4SSqnF\"]},\"/home/amxx/Work/iExec/code/PoCo-dev/contracts/registries/datasets/DatasetRegistry.sol\":{\"keccak256\":\"0x2f5bfe6223ec7063e1deedaa5d68a143196f06aa7702d1e45f7429702cf85449\",\"urls\":[\"bzz-raw://892ede81135ae136cbd17921084c11faf11b69b727a383d74371ad906c8ece05\",\"dweb:/ipfs/QmPXfgvaJJRnPvtK4LK35qPjoL5FnoskR3FCwS61PrFM3c\"]},\"@ensdomains/ens/contracts/ENS.sol\":{\"keccak256\":\"0x10b88673d8c180cd62523be4fec7607c65594eb4f0c561fa0fbc0784422b4871\",\"urls\":[\"bzz-raw://b3de1882a4a1a1b13c27ee6dc04cc58c34ac392c80cad507de2cdfa8c02712fe\",\"dweb:/ipfs/QmeKcaBF8QdJjXiqFrPJkAtK3et5kUL8XJrnHjwhAThRMT\"]},\"@iexec/solidity/contracts/ENStools/ENSReverseRegistration.sol\":{\"keccak256\":\"0xf3f46b28b19d9132ae78c2a43263c06a73cb042ce25175b732e0c1a41c5bbe5a\",\"urls\":[\"bzz-raw://7ca85a78f3f3eafbef6d72c5cd0c35e5b827c797af786cd170659499a0a2c3be\",\"dweb:/ipfs/QmbHZ8zFsiE1PRh7FKt1pt5jR8F6B8HiZ32Mgc8Py3qCUu\"]},\"@iexec/solidity/contracts/Upgradeability/BaseUpgradeabilityProxy.sol\":{\"keccak256\":\"0x47ec56a1226ecf04d49aa82f768814923c1957b69f7fc9e7e470885c75b5a2c6\",\"urls\":[\"bzz-raw://4eae82be03a247a27a2948ed12d5a826dea977f4b5528830c19d9cf4c23dcd53\",\"dweb:/ipfs/Qmb9HtnohAMvjb7vYnXaT3AnQd9p9sLsThnyLnXVzz1umq\"]},\"@iexec/solidity/contracts/Upgradeability/InitializableUpgradeabilityProxy.sol\":{\"keccak256\":\"0xe1bf07e5d913bd04484305a3fb0cc576f6b5d8e4fc0406bf7c9a8b6b2ed766e5\",\"urls\":[\"bzz-raw://b42f6dff696ceadeb44a02aae3049e603984c18af8d94f33fb6544a8b279179c\",\"dweb:/ipfs/QmRWTaRHCGZhKZFKrVAJwXukXiCZcezrVhJJ28H2qBbai7\"]},\"@iexec/solidity/contracts/Upgradeability/Proxy.sol\":{\"keccak256\":\"0xd89f285d80cfeff0efc87f11dbc024a587da3bba142a06695cbac7e4050e9302\",\"urls\":[\"bzz-raw://9c8323ec7efc9fde6c1529f1070c3f3406adb5f8836b17221530d8f0110fe3f4\",\"dweb:/ipfs/QmURRsX9L2gZ83aMULtY1EuRMJExHhFYErCbkxE5CNkAzE\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x0de74dfa6b37943c1b834cbd8fb7a8d052e5ff80c7adb33692102dd6cd2985e9\",\"urls\":[\"bzz-raw://9d2d827fcf4a838f5821732c0acd6a40d21c2a5a2cfe2563feec91465f47bb60\",\"dweb:/ipfs/Qmex3wMKf5Sghbfvr288RUg1kP2uAyTMf11w83WbMbpQQc\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x9a8c691b81a4a48adbbd5b010faa56a168c189e711495c16347d93b60b805f82\",\"urls\":[\"bzz-raw://d951d626ed7bfe1a2d7a6bd4af315ff8691929bd567594d6ab53599fe9e17e4e\",\"dweb:/ipfs/QmYkGeowpa6Bjr9aaDirWdDo7hSfShzzZhanKC4nTfRhLj\"]},\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0x98aa1380fd49a255d6cbea58558ea76bff35c59b218671fde8842907b44e7390\",\"urls\":[\"bzz-raw://613eaff66d4c270ddd87448c06267b6e043ef8c8223cb39d8767bc9daa9cb1ec\",\"dweb:/ipfs/Qmcg56orudv25ghmnZCxN37HwNKCXmTTDxj5cyoYYnvHTg\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0x9175561c374ec1fc33045e5dfdde2057e63e00debf432875f9e1e3395d99c149\",\"urls\":[\"bzz-raw://b0167043c1938b56904deaa481a73041aa4a9e054c60db0b0dfbebfe7869c06a\",\"dweb:/ipfs/QmUoYjhymBr6WUpExKgRvKxXD5fcdpQEe1o9ResKZu6CC5\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x04d34b3cd5677bea25f8dfceb6dec0eaa071d4d4b789a43f13fe0c415ba4c296\",\"urls\":[\"bzz-raw://e7e8b526a6839e5ba14f0d23a830387fec47f7043ce01d42c9f285b709a9d080\",\"dweb:/ipfs/QmXmhhFmX5gcAvVzNiDPAGA35iHMPNaYtQkACswRHBVTNw\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x67a43d3926e72576c96ebf0e6360c979a8cc04f25e4b0ca40c221547d8903ba4\",\"urls\":[\"bzz-raw://77c6f48115c491411f0e27f6b70e2e524b1b57c66e74bd7f1974a31a448e2540\",\"dweb:/ipfs/QmPZCizouS9PVJ1dVf8zqTjHyEo5cSa1ZmPCQpk52TgrmV\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x734b5bedb78074a59bca6aff9e5a1801c9c7e9c5314daf32e14857161fb36932\",\"urls\":[\"bzz-raw://4574e71185f6693eb5cdf7a5126fba97caf0ec0366b08290dd361af44b3414d3\",\"dweb:/ipfs/QmTPBh1R3EU973H7h6D1kQ1XBA1oX2QdSHZACyytWUYKsn\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0xf81dbd00ad4a1e4795df72759e33872c2599ea6c060be5898ed5d6fcd8ee9a11\",\"urls\":[\"bzz-raw://44dfcc25314c5ed29bc069c4746f87d98bb30a8dbc1a9bdeb797c2a530b9b9c5\",\"dweb:/ipfs/QmbRc5bKDobjE6zamLUy6Sh5HKd6XtNAsfBJzgZuQB3jpv\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xa17f4147965ceccd9f2017b14fcf8ef142346ec69c7e0424fd5c99f5ffeed8fa\",\"urls\":[\"bzz-raw://25315aea456015e8a2bc2b5badde793d1ae16d67d09df50ecb90a2af13674b92\",\"dweb:/ipfs/QmTujwcp5f1LioDNdRMfsXs2MsCWu2UeijhEg4VnDbzZmk\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x0c25ff00a747f1df6cb5e5c103adb98334df7e9561b0d46079454131c139bff9\",\"urls\":[\"bzz-raw://9417ce94829309329fa0f0dc50089696bc55f9f675c4b2ffcb31f960fe706250\",\"dweb:/ipfs/QmdckiAmnW2uhXK2V2enu7bEbqiMR6hzMD1ytGH43pKLhE\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x5f7da58ee3d9faa9b8999a93d49c8ff978f1afc88ae9bcfc6f9cbb44da011c2b\",\"urls\":[\"bzz-raw://4f089d954b3ecaa26949412fe63e9a184b056562c6c13dd4a0529a5d9a2e685a\",\"dweb:/ipfs/QmVK5iCNAMcEJQxT59bsC5E53JQASDQPU6khHox3d5ZXCn\"]},\"@openzeppelin/contracts/utils/Create2.sol\":{\"keccak256\":\"0x66d1ed2a353be8d2492833a185c53a8f1de8d8fa575a201e9825cf334d79659a\",\"urls\":[\"bzz-raw://a2e9b79e9cf5b398cd29b30df860a6521eefadd9882a346c423afbee5aee606e\",\"dweb:/ipfs/QmUq7gfqR5x1DaMpRKkWwmLMGLPzqUQhqhFEJ2vcgvFraH\"]},\"@openzeppelin/contracts/utils/EnumerableMap.sol\":{\"keccak256\":\"0xfd5cf8319cb84ca04ea407d6fba686d53ad7f5d2bf476f41678f5a751d12a7ea\",\"urls\":[\"bzz-raw://45b75b553c4a9053429609b1c3db481f1728ca00448f01acc4065249bbf87adc\",\"dweb:/ipfs/QmRZH6QM32mJn1GZCAPXUQtBz65H4kk6DsGQbGNo4ZNPy9\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x7f6401708b61f575b497aa7c8118ca9d70348643c83c26e70d9b643edf1a95c1\",\"urls\":[\"bzz-raw://b020d65f592c1715bc3d5799ad835cd975ef7d314f340f27603fb99ad86a0427\",\"dweb:/ipfs/QmQoGZmzE5aDTMGJM4BW77eraerfTSV9Rs8wykpQ42i1in\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xd1d78b1c8534fbcf8fdc8fbfec9133df142ef8cae9ae820929dfe6d80d2c790a\",\"urls\":[\"bzz-raw://193a827fbe83fa83c4cabb172dc438dd45c50253858a1f2bf56e8f9a2d548386\",\"dweb:/ipfs/QmbWBHwHv7CyHSZY6jxnaDiHWGEEyVb8LeGdRpWXUjaiBr\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b506040516200002090620002f5565b604051809103906000f0801580156200003d573d6000803e3d6000fd5b50604080518082018252601b81527f69457865632044617461736574205265676973747279202856352900000000006020808301919091528251808401909352600f83526e69457865634461746173657473563560881b90830152908181620000b66301ffc9a760e01b6001600160e01b036200026b16565b8151620000cb90600690602085019062000303565b508051620000e190600790602084019062000303565b50620000fd6380ac58cd60e01b6001600160e01b036200026b16565b62000118635b5e139f60e01b6001600160e01b036200026b16565b6200013363780e9d6360e01b6001600160e01b036200026b16565b50600090506200014b6001600160e01b03620002f016565b600a80546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b80546001600160a01b0319166001600160a01b038516179055604051620001c56020820162000388565b601f1982820381018352601f909101166040528051620001ef91600c916020919091019062000303565b50600c6040518082805460018160011615610100020316600290048015620002515780601f106200022e57610100808354040283529182019162000251565b820191906000526020600020905b8154815290600101906020018083116200023c575b5050604051908190039020600d5550620003b39350505050565b6001600160e01b03198082161415620002cb576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b335b90565b610826806200301483390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200034657805160ff191683800117855562000376565b8280016001018555821562000376579182015b828111156200037657825182559160200191906001019062000359565b506200038492915062000396565b5090565b6103cd806200383a83390190565b620002f291905b808211156200038457600081556001016200039d565b612c5180620003c36000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636fa59bbc1161010f578063c3c5a547116100a2578063ee97f7f311610071578063ee97f7f314610796578063eee391111461079e578063f2fde38b146107a6578063fe17fc7a146107cc576101e5565b8063c3c5a547146106ff578063c4d66de814610725578063c87b56dd1461074b578063e985e9c514610768576101e5565b80638da5cb5b116100de5780638da5cb5b146105fd57806395d89b4114610605578063a22cb4651461060d578063b88d4fde1461063b576101e5565b80636fa59bbc146105bf57806370a08231146105c7578063715018a6146105ed5780637c2b2e71146105f5576101e5565b80632f745c59116101875780634f6ccce7116101565780634f6ccce71461050f57806355f804b31461052c5780636352211e1461059a5780636c0360eb146105b7576101e5565b80632f745c59146103615780633121db1c1461038d5780633354bcdb1461040b57806342842e0e146104d9576101e5565b8063095ea7b3116101c3578063095ea7b3146102db578063158ef93e1461030957806318160ddd1461031157806323b872dd1461032b576101e5565b806301ffc9a7146101ea57806306fdde0314610225578063081812fc146102a2575b600080fd5b6102116004803603602081101561020057600080fd5b50356001600160e01b03191661089a565b604080519115158252519081900360200190f35b61022d6108bd565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026757818101518382015260200161024f565b50505050905090810190601f1680156102945780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102bf600480360360208110156102b857600080fd5b5035610954565b604080516001600160a01b039092168252519081900360200190f35b610307600480360360408110156102f157600080fd5b506001600160a01b0381351690602001356109b6565b005b610211610a91565b610319610aa1565b60408051918252519081900360200190f35b6103076004803603606081101561034157600080fd5b506001600160a01b03813581169160208101359091169060400135610ab2565b6103196004803603604081101561037757600080fd5b506001600160a01b038135169060200135610b09565b610307600480360360408110156103a357600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156103cd57600080fd5b8201836020820111156103df57600080fd5b803590602001918460018302840111600160201b8311171561040057600080fd5b509092509050610b3a565b6102bf6004803603608081101561042157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561044b57600080fd5b82018360208201111561045d57600080fd5b803590602001918460018302840111600160201b8311171561047e57600080fd5b919390929091602081019035600160201b81111561049b57600080fd5b8201836020820111156104ad57600080fd5b803590602001918460018302840111600160201b831117156104ce57600080fd5b919350915035610bd2565b610307600480360360608110156104ef57600080fd5b506001600160a01b03813581169160208101359091169060400135610c5d565b6103196004803603602081101561052557600080fd5b5035610c78565b6103076004803603602081101561054257600080fd5b810190602081018135600160201b81111561055c57600080fd5b82018360208201111561056e57600080fd5b803590602001918460018302840111600160201b8311171561058f57600080fd5b509092509050610c94565b6102bf600480360360208110156105b057600080fd5b5035610d2f565b61022d610d5d565b61022d610dbe565b610319600480360360208110156105dd57600080fd5b50356001600160a01b0316610e4c565b610307610eb4565b6102bf610f56565b6102bf610f65565b61022d610f74565b6103076004803603604081101561062357600080fd5b506001600160a01b0381351690602001351515610fd5565b6103076004803603608081101561065157600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561068b57600080fd5b82018360208201111561069d57600080fd5b803590602001918460018302840111600160201b831117156106be57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110da945050505050565b6102116004803603602081101561071557600080fd5b50356001600160a01b0316611138565b6103076004803603602081101561073b57600080fd5b50356001600160a01b03166111e6565b61022d6004803603602081101561076157600080fd5b5035611286565b6102116004803603604081101561077e57600080fd5b506001600160a01b038135811691602001351661152d565b6102bf61155b565b61031961156a565b610307600480360360208110156107bc57600080fd5b50356001600160a01b0316611570565b6102bf600480360360808110156107e257600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561080c57600080fd5b82018360208201111561081e57600080fd5b803590602001918460018302840111600160201b8311171561083f57600080fd5b919390929091602081019035600160201b81111561085c57600080fd5b82018360208201111561086e57600080fd5b803590602001918460018302840111600160201b8311171561088f57600080fd5b919350915035611669565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109495780601f1061091e57610100808354040283529160200191610949565b820191906000526020600020905b81548152906001019060200180831161092c57829003601f168201915b505050505090505b90565b600061095f826116e9565b61099a5760405162461bcd60e51b815260040180806020018281038252602c815260200180612b26602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006109c182610d2f565b9050806001600160a01b0316836001600160a01b03161415610a145760405162461bcd60e51b8152600401808060200182810382526021815260200180612bca6021913960400191505060405180910390fd5b806001600160a01b0316610a266116fc565b6001600160a01b03161480610a475750610a4781610a426116fc565b61152d565b610a825760405162461bcd60e51b8152600401808060200182810382526038815260200180612a796038913960400191505060405180910390fd5b610a8c8383611700565b505050565b600e54600160a01b900460ff1681565b6000610aad600261176e565b905090565b610ac3610abd6116fc565b82611779565b610afe5760405162461bcd60e51b8152600401808060200182810382526031815260200180612beb6031913960400191505060405180910390fd5b610a8c83838361181d565b6001600160a01b0382166000908152600160205260408120610b31908363ffffffff61197b16565b90505b92915050565b610b426116fc565b600a546001600160a01b03908116911614610b92576040805162461bcd60e51b81526020600482018190526024820152600080516020612b52833981519152604482015290519081900360640190fd5b610a8c8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061198792505050565b6000610c5287610c4d88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250899250611aec915050565b611c03565b979650505050505050565b610a8c838383604051806020016040528060008152506110da565b600080610c8c60028463ffffffff611e2d16565b509392505050565b610c9c6116fc565b600a546001600160a01b03908116911614610cec576040805162461bcd60e51b81526020600482018190526024820152600080516020612b52833981519152604482015290519081900360640190fd5b610d2b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e4992505050565b5050565b6000610b3482604051806060016040528060298152602001612adb602991396002919063ffffffff611e5c16565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109495780601f1061091e57610100808354040283529160200191610949565b600c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610e445780601f10610e1957610100808354040283529160200191610e44565b820191906000526020600020905b815481529060010190602001808311610e2757829003601f168201915b505050505081565b60006001600160a01b038216610e935760405162461bcd60e51b815260040180806020018281038252602a815260200180612ab1602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600160205260409020610b349061176e565b610ebc6116fc565b600a546001600160a01b03908116911614610f0c576040805162461bcd60e51b81526020600482018190526024820152600080516020612b52833981519152604482015290519081900360640190fd5b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b600e546001600160a01b031681565b600a546001600160a01b031690565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109495780601f1061091e57610100808354040283529160200191610949565b610fdd6116fc565b6001600160a01b0316826001600160a01b03161415611043576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b80600560006110506116fc565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556110946116fc565b60408051841515815290516001600160a01b0392909216917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319181900360200190a35050565b6110eb6110e56116fc565b83611779565b6111265760405162461bcd60e51b8152600401808060200182810382526031815260200180612beb6031913960400191505060405180910390fd5b61113284848484611e69565b50505050565b600061114c826001600160a01b03166116e9565b80610b345750600e546001600160a01b031615801590610b345750600e546040805163c3c5a54760e01b81526001600160a01b0385811660048301529151919092169163c3c5a547916024808301926020929190829003018186803b1580156111b457600080fd5b505afa1580156111c8573d6000803e3d6000fd5b505050506040513d60208110156111de57600080fd5b505192915050565b6111ee6116fc565b600a546001600160a01b0390811691161461123e576040805162461bcd60e51b81526020600482018190526024820152600080516020612b52833981519152604482015290519081900360640190fd5b600e54600160a01b900460ff161561125557600080fd5b600e8054600160a01b60ff60a01b19909116176001600160a01b0319166001600160a01b0392909216919091179055565b6060611291826116e9565b6112cc5760405162461bcd60e51b815260040180806020018281038252602f815260200180612b9b602f913960400191505060405180910390fd5b60008281526008602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156113615780601f1061133657610100808354040283529160200191611361565b820191906000526020600020905b81548152906001019060200180831161134457829003601f168201915b50506009549394505050506002600019610100600184161502019091160461138a5790506108b8565b80511561145b5760098160405160200180838054600181600116156101000203166002900480156113f25780601f106113d05761010080835404028352918201916113f2565b820191906000526020600020905b8154815290600101906020018083116113de575b5050825160208401908083835b6020831061141e5780518252601f1990920191602091820191016113ff565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150506108b8565b600961146684611ebb565b60405160200180838054600181600116156101000203166002900480156114c45780601f106114a25761010080835404028352918201916114c4565b820191906000526020600020905b8154815290600101906020018083116114b0575b5050825160208401908083835b602083106114f05780518252601f1990920191602091820191016114d1565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600b546001600160a01b031681565b600d5481565b6115786116fc565b600a546001600160a01b039081169116146115c8576040805162461bcd60e51b81526020600482018190526024820152600080516020612b52833981519152604482015290519081900360640190fd5b6001600160a01b03811661160d5760405162461bcd60e51b8152600401808060200182810382526026815260200180612a036026913960400191505060405180910390fd5b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610c52876116e488888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250899250611aec915050565b611f96565b6000610b3460028363ffffffff61204016565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061173582610d2f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610b348261204c565b6000611784826116e9565b6117bf5760405162461bcd60e51b815260040180806020018281038252602c815260200180612a4d602c913960400191505060405180910390fd5b60006117ca83610d2f565b9050806001600160a01b0316846001600160a01b031614806118055750836001600160a01b03166117fa84610954565b6001600160a01b0316145b806118155750611815818561152d565b949350505050565b826001600160a01b031661183082610d2f565b6001600160a01b0316146118755760405162461bcd60e51b8152600401808060200182810382526029815260200180612b726029913960400191505060405180910390fd5b6001600160a01b0382166118ba5760405162461bcd60e51b8152600401808060200182810382526024815260200180612a296024913960400191505060405180910390fd5b6118c5838383610a8c565b6118d0600082611700565b6001600160a01b03831660009081526001602052604090206118f8908263ffffffff61205016565b506001600160a01b0382166000908152600160205260409020611921908263ffffffff61205c16565b506119346002828463ffffffff61206816565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000610b31838361207e565b604080516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2600482015290516001600160a01b038416916302571be3916024808301926020929190829003018186803b1580156119ed57600080fd5b505afa158015611a01573d6000803e3d6000fd5b505050506040513d6020811015611a1757600080fd5b505160405163c47f002760e01b81526020600482018181528451602484015284516001600160a01b039094169363c47f002793869383926044909201919085019080838360005b83811015611a76578181015183820152602001611a5e565b50505050905090810190601f168015611aa35780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015611ac257600080fd5b505af1158015611ad6573d6000803e3d6000fd5b505050506040513d602081101561113257600080fd5b6060838383604051602401808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015611b3b578181015183820152602001611b23565b50505050905090810190601f168015611b685780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015611b9b578181015183820152602001611b83565b50505050905090810190601f168015611bc85780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b0316638c2b1e2f60e01b17905296505050505050505b9392505050565b600080611d36600084866040516020018083805190602001908083835b60208310611c3f5780518252601f199092019160209182019101611c20565b6001836020036101000a038019825116818451168082178552505050505050905001826001600160a01b03166001600160a01b031660601b81526014019250505060405160208183030381529060405280519060200120600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d2c5780601f10611d0157610100808354040283529160200191611d2c565b820191906000526020600020905b815481529060010190602001808311611d0f57829003601f168201915b50505050506120e2565b600b546040805163347d5e2560e21b81526001600160a01b0392831660048201818152602483019384528851604484015288519596509386169463d1f5789494919389939091606490910190602085019080838360005b83811015611da5578181015183820152602001611d8d565b50505050905090810190601f168015611dd25780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015611df257600080fd5b505af1158015611e06573d6000803e3d6000fd5b50505050611e1d84826001600160a01b03166121f3565b6001600160a01b03169392505050565b6000808080611e3c868661232d565b9097909650945050505050565b8051610d2b906009906020840190612916565b60006118158484846123a8565b611e7484848461181d565b611e8084848484612472565b6111325760405162461bcd60e51b81526004018080602001828103825260328152602001806129d16032913960400191505060405180910390fd5b606081611ee057506040805180820190915260018152600360fc1b60208201526108b8565b8160005b8115611ef857600101600a82049150611ee4565b60608167ffffffffffffffff81118015611f1157600080fd5b506040519080825280601f01601f191660200182016040528015611f3c576020820181803683370190505b50859350905060001982015b8315611f8d57600a840660300160f81b82828060019003935081518110611f6b57fe5b60200101906001600160f81b031916908160001a905350600a84049350611f48565b50949350505050565b60008061202f83856040516020018083805190602001908083835b60208310611fd05780518252601f199092019160209182019101611fb1565b6001836020036101000a038019825116818451168082178552505050505050905001826001600160a01b03166001600160a01b031660601b81526014019250505060405160208183030381529060405280519060200120600d546126ad565b6001600160a01b0316949350505050565b6000610b3183836126ba565b5490565b6000610b3183836126d2565b6000610b318383612798565b600061181584846001600160a01b0385166127e2565b815460009082106120c05760405162461bcd60e51b81526004018080602001828103825260228152602001806129af6022913960400191505060405180910390fd5b8260000182815481106120cf57fe5b9060005260206000200154905092915050565b6000808447101561213a576040805162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b825161218d576040805162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015290519081900360640190fd5b8383516020850187f590506001600160a01b038116611815576040805162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015290519081900360640190fd5b6001600160a01b03821661224e576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b612257816116e9565b156122a9576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b6122b560008383610a8c565b6001600160a01b03821660009081526001602052604090206122dd908263ffffffff61205c16565b506122f06002828463ffffffff61206816565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8154600090819083106123715760405162461bcd60e51b8152600401808060200182810382526022815260200180612b046022913960400191505060405180910390fd5b600084600001848154811061238257fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816124435760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124085781810151838201526020016123f0565b50505050905090810190601f1680156124355780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061245657fe5b9060005260206000209060020201600101549150509392505050565b6000612486846001600160a01b0316612879565b61249257506001611815565b600060606001600160a01b038616630a85bd0160e11b6124b06116fc565b89888860405160240180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612529578181015183820152602001612511565b50505050905090810190601f1680156125565780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909a16999099178952518151919890975087965094509250829150849050835b602083106125be5780518252601f19909201916020918201910161259f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612620576040519150601f19603f3d011682016040523d82523d6000602084013e612625565b606091505b5091509150816126765780511561263f5780518082602001fd5b60405162461bcd60e51b81526004018080602001828103825260328152602001806129d16032913960400191505060405180910390fd5b600081806020019051602081101561268d57600080fd5b50516001600160e01b031916630a85bd0160e11b14935061181592505050565b6000610b318383306128b2565b60009081526001919091016020526040902054151590565b6000818152600183016020526040812054801561278e578354600019808301919081019060009087908390811061270557fe5b906000526020600020015490508087600001848154811061272257fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061275257fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610b34565b6000915050610b34565b60006127a483836126ba565b6127da57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b34565b506000610b34565b600082815260018401602052604081205480612847575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055611bfc565b8285600001600183038154811061285a57fe5b9060005260206000209060020201600101819055506000915050611bfc565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611815575050151592915050565b604080516001600160f81b031960208083019190915260609390931b6bffffffffffffffffffffffff19166021820152603581019490945260558085019390935280518085039093018352607590930190925280519101206001600160a01b031690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061295757805160ff1916838001178555612984565b82800160010185558215612984579182015b82811115612984578251825591602001919060010190612969565b50612990929150612994565b5090565b61095191905b80821115612990576000815560010161299a56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65724552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a26469706673582212204c8698eabc0787273104a703f0aff3509f10df997ab9a66c293f75c7566e153f64736f6c63430006060033608060405234801561001057600080fd5b50610806806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80637b1039991161005b5780637b1039991461019b5780638c2b1e2f146101bf5780638da5cb5b146102ee578063a61ca6c5146102f65761007d565b80630847c431146100825780631ba99d7e146100ff5780633121db1c14610119575b600080fd5b61008a6102fe565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100c45781810151838201526020016100ac565b50505050905090810190601f1680156100f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61010761038b565b60408051918252519081900360200190f35b6101996004803603604081101561012f57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561015a57600080fd5b82018360208201111561016c57600080fd5b8035906020019184600183028401116401000000008311171561018e57600080fd5b509092509050610391565b005b6101a361043a565b604080516001600160a01b039092168252519081900360200190f35b610199600480360360608110156101d557600080fd5b8101906020810181356401000000008111156101f057600080fd5b82018360208201111561020257600080fd5b8035906020019184600183028401116401000000008311171561022457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561027757600080fd5b82018360208201111561028957600080fd5b803590602001918460018302840111640100000000831117156102ab57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610449915050565b6101a3610481565b61008a6104ff565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103835780601f1061035857610100808354040283529160200191610383565b820191906000526020600020905b81548152906001019060200180831161036657829003601f168201915b505050505081565b60035481565b3361039a610481565b6001600160a01b0316146103f5576040805162461bcd60e51b815260206004820152601760248201527f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000604482015290519081900360640190fd5b6104358383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061055792505050565b505050565b6000546001600160a01b031681565b610452336106c2565b8251610465906001906020860190610738565b508151610479906002906020850190610738565b506003555050565b60008054604080516331a9108f60e11b815230600482015290516001600160a01b0390921691636352211e91602480820192602092909190829003018186803b1580156104cd57600080fd5b505afa1580156104e1573d6000803e3d6000fd5b505050506040513d60208110156104f757600080fd5b505190505b90565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156103835780601f1061035857610100808354040283529160200191610383565b604080516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2600482015290516001600160a01b038416916302571be3916024808301926020929190829003018186803b1580156105bd57600080fd5b505afa1580156105d1573d6000803e3d6000fd5b505050506040513d60208110156105e757600080fd5b505160405163c47f002760e01b81526020600482018181528451602484015284516001600160a01b039094169363c47f002793869383926044909201919085019080838360005b8381101561064657818101518382015260200161062e565b50505050905090810190601f1680156106735780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b15801561069257600080fd5b505af11580156106a6573d6000803e3d6000fd5b505050506040513d60208110156106bc57600080fd5b50505050565b6000546001600160a01b031615610716576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061077957805160ff19168380011785556107a6565b828001600101855582156107a6579182015b828111156107a657825182559160200191906001019061078b565b506107b29291506107b6565b5090565b6104fc91905b808211156107b257600081556001016107bc56fea2646970667358221220bce220c3c91436d999fe81d755a4d6be985c734949d631a94b35226c280d7d3b64736f6c63430006060033608060405234801561001057600080fd5b506103ad806100206000396000f3fe6080604052600436106100225760003560e01c8063d1f578941461003957610031565b366100315761002f6100ef565b005b61002f6100ef565b61002f6004803603604081101561004f57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561007a57600080fd5b82018360208201111561008c57600080fd5b803590602001918460018302840111640100000000831117156100ae57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610109945050505050565b6100f7610107565b61010761010261022c565b610251565b565b600061011361022c565b6001600160a01b03161461012657600080fd5b60405180602361031a82396040519081900360230190207f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c314905061016757fe5b61017082610275565b805115610228576000826001600160a01b0316826040518082805190602001908083835b602083106101b35780518252601f199092019160209182019101610194565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610213576040519150601f19603f3d011682016040523d82523d6000602084013e610218565b606091505b505090508061022657600080fd5b505b5050565b7f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c35490565b3660008037600080366000845af43d6000803e808015610270573d6000f35b3d6000fd5b61027e816102dd565b6102b95760405162461bcd60e51b815260040180806020018281038252603b81526020018061033d603b913960400191505060405180910390fd5b7f7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c355565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061031157508115155b94935050505056fe6f72672e7a657070656c696e6f732e70726f78792e696d706c656d656e746174696f6e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a2646970667358221220f4af5f38b16e1ce890fd14497bea12d47bed23b9e542d8461f60b0d5a7952a1e64736f6c63430006060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80636fa59bbc1161010f578063c3c5a547116100a2578063ee97f7f311610071578063ee97f7f314610796578063eee391111461079e578063f2fde38b146107a6578063fe17fc7a146107cc576101e5565b8063c3c5a547146106ff578063c4d66de814610725578063c87b56dd1461074b578063e985e9c514610768576101e5565b80638da5cb5b116100de5780638da5cb5b146105fd57806395d89b4114610605578063a22cb4651461060d578063b88d4fde1461063b576101e5565b80636fa59bbc146105bf57806370a08231146105c7578063715018a6146105ed5780637c2b2e71146105f5576101e5565b80632f745c59116101875780634f6ccce7116101565780634f6ccce71461050f57806355f804b31461052c5780636352211e1461059a5780636c0360eb146105b7576101e5565b80632f745c59146103615780633121db1c1461038d5780633354bcdb1461040b57806342842e0e146104d9576101e5565b8063095ea7b3116101c3578063095ea7b3146102db578063158ef93e1461030957806318160ddd1461031157806323b872dd1461032b576101e5565b806301ffc9a7146101ea57806306fdde0314610225578063081812fc146102a2575b600080fd5b6102116004803603602081101561020057600080fd5b50356001600160e01b03191661089a565b604080519115158252519081900360200190f35b61022d6108bd565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026757818101518382015260200161024f565b50505050905090810190601f1680156102945780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102bf600480360360208110156102b857600080fd5b5035610954565b604080516001600160a01b039092168252519081900360200190f35b610307600480360360408110156102f157600080fd5b506001600160a01b0381351690602001356109b6565b005b610211610a91565b610319610aa1565b60408051918252519081900360200190f35b6103076004803603606081101561034157600080fd5b506001600160a01b03813581169160208101359091169060400135610ab2565b6103196004803603604081101561037757600080fd5b506001600160a01b038135169060200135610b09565b610307600480360360408110156103a357600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156103cd57600080fd5b8201836020820111156103df57600080fd5b803590602001918460018302840111600160201b8311171561040057600080fd5b509092509050610b3a565b6102bf6004803603608081101561042157600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561044b57600080fd5b82018360208201111561045d57600080fd5b803590602001918460018302840111600160201b8311171561047e57600080fd5b919390929091602081019035600160201b81111561049b57600080fd5b8201836020820111156104ad57600080fd5b803590602001918460018302840111600160201b831117156104ce57600080fd5b919350915035610bd2565b610307600480360360608110156104ef57600080fd5b506001600160a01b03813581169160208101359091169060400135610c5d565b6103196004803603602081101561052557600080fd5b5035610c78565b6103076004803603602081101561054257600080fd5b810190602081018135600160201b81111561055c57600080fd5b82018360208201111561056e57600080fd5b803590602001918460018302840111600160201b8311171561058f57600080fd5b509092509050610c94565b6102bf600480360360208110156105b057600080fd5b5035610d2f565b61022d610d5d565b61022d610dbe565b610319600480360360208110156105dd57600080fd5b50356001600160a01b0316610e4c565b610307610eb4565b6102bf610f56565b6102bf610f65565b61022d610f74565b6103076004803603604081101561062357600080fd5b506001600160a01b0381351690602001351515610fd5565b6103076004803603608081101561065157600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b81111561068b57600080fd5b82018360208201111561069d57600080fd5b803590602001918460018302840111600160201b831117156106be57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110da945050505050565b6102116004803603602081101561071557600080fd5b50356001600160a01b0316611138565b6103076004803603602081101561073b57600080fd5b50356001600160a01b03166111e6565b61022d6004803603602081101561076157600080fd5b5035611286565b6102116004803603604081101561077e57600080fd5b506001600160a01b038135811691602001351661152d565b6102bf61155b565b61031961156a565b610307600480360360208110156107bc57600080fd5b50356001600160a01b0316611570565b6102bf600480360360808110156107e257600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561080c57600080fd5b82018360208201111561081e57600080fd5b803590602001918460018302840111600160201b8311171561083f57600080fd5b919390929091602081019035600160201b81111561085c57600080fd5b82018360208201111561086e57600080fd5b803590602001918460018302840111600160201b8311171561088f57600080fd5b919350915035611669565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109495780601f1061091e57610100808354040283529160200191610949565b820191906000526020600020905b81548152906001019060200180831161092c57829003601f168201915b505050505090505b90565b600061095f826116e9565b61099a5760405162461bcd60e51b815260040180806020018281038252602c815260200180612b26602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006109c182610d2f565b9050806001600160a01b0316836001600160a01b03161415610a145760405162461bcd60e51b8152600401808060200182810382526021815260200180612bca6021913960400191505060405180910390fd5b806001600160a01b0316610a266116fc565b6001600160a01b03161480610a475750610a4781610a426116fc565b61152d565b610a825760405162461bcd60e51b8152600401808060200182810382526038815260200180612a796038913960400191505060405180910390fd5b610a8c8383611700565b505050565b600e54600160a01b900460ff1681565b6000610aad600261176e565b905090565b610ac3610abd6116fc565b82611779565b610afe5760405162461bcd60e51b8152600401808060200182810382526031815260200180612beb6031913960400191505060405180910390fd5b610a8c83838361181d565b6001600160a01b0382166000908152600160205260408120610b31908363ffffffff61197b16565b90505b92915050565b610b426116fc565b600a546001600160a01b03908116911614610b92576040805162461bcd60e51b81526020600482018190526024820152600080516020612b52833981519152604482015290519081900360640190fd5b610a8c8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061198792505050565b6000610c5287610c4d88888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250899250611aec915050565b611c03565b979650505050505050565b610a8c838383604051806020016040528060008152506110da565b600080610c8c60028463ffffffff611e2d16565b509392505050565b610c9c6116fc565b600a546001600160a01b03908116911614610cec576040805162461bcd60e51b81526020600482018190526024820152600080516020612b52833981519152604482015290519081900360640190fd5b610d2b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e4992505050565b5050565b6000610b3482604051806060016040528060298152602001612adb602991396002919063ffffffff611e5c16565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109495780601f1061091e57610100808354040283529160200191610949565b600c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610e445780601f10610e1957610100808354040283529160200191610e44565b820191906000526020600020905b815481529060010190602001808311610e2757829003601f168201915b505050505081565b60006001600160a01b038216610e935760405162461bcd60e51b815260040180806020018281038252602a815260200180612ab1602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600160205260409020610b349061176e565b610ebc6116fc565b600a546001600160a01b03908116911614610f0c576040805162461bcd60e51b81526020600482018190526024820152600080516020612b52833981519152604482015290519081900360640190fd5b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b600e546001600160a01b031681565b600a546001600160a01b031690565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109495780601f1061091e57610100808354040283529160200191610949565b610fdd6116fc565b6001600160a01b0316826001600160a01b03161415611043576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b80600560006110506116fc565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556110946116fc565b60408051841515815290516001600160a01b0392909216917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319181900360200190a35050565b6110eb6110e56116fc565b83611779565b6111265760405162461bcd60e51b8152600401808060200182810382526031815260200180612beb6031913960400191505060405180910390fd5b61113284848484611e69565b50505050565b600061114c826001600160a01b03166116e9565b80610b345750600e546001600160a01b031615801590610b345750600e546040805163c3c5a54760e01b81526001600160a01b0385811660048301529151919092169163c3c5a547916024808301926020929190829003018186803b1580156111b457600080fd5b505afa1580156111c8573d6000803e3d6000fd5b505050506040513d60208110156111de57600080fd5b505192915050565b6111ee6116fc565b600a546001600160a01b0390811691161461123e576040805162461bcd60e51b81526020600482018190526024820152600080516020612b52833981519152604482015290519081900360640190fd5b600e54600160a01b900460ff161561125557600080fd5b600e8054600160a01b60ff60a01b19909116176001600160a01b0319166001600160a01b0392909216919091179055565b6060611291826116e9565b6112cc5760405162461bcd60e51b815260040180806020018281038252602f815260200180612b9b602f913960400191505060405180910390fd5b60008281526008602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156113615780601f1061133657610100808354040283529160200191611361565b820191906000526020600020905b81548152906001019060200180831161134457829003601f168201915b50506009549394505050506002600019610100600184161502019091160461138a5790506108b8565b80511561145b5760098160405160200180838054600181600116156101000203166002900480156113f25780601f106113d05761010080835404028352918201916113f2565b820191906000526020600020905b8154815290600101906020018083116113de575b5050825160208401908083835b6020831061141e5780518252601f1990920191602091820191016113ff565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150506108b8565b600961146684611ebb565b60405160200180838054600181600116156101000203166002900480156114c45780601f106114a25761010080835404028352918201916114c4565b820191906000526020600020905b8154815290600101906020018083116114b0575b5050825160208401908083835b602083106114f05780518252601f1990920191602091820191016114d1565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600b546001600160a01b031681565b600d5481565b6115786116fc565b600a546001600160a01b039081169116146115c8576040805162461bcd60e51b81526020600482018190526024820152600080516020612b52833981519152604482015290519081900360640190fd5b6001600160a01b03811661160d5760405162461bcd60e51b8152600401808060200182810382526026815260200180612a036026913960400191505060405180910390fd5b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610c52876116e488888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250899250611aec915050565b611f96565b6000610b3460028363ffffffff61204016565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061173582610d2f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610b348261204c565b6000611784826116e9565b6117bf5760405162461bcd60e51b815260040180806020018281038252602c815260200180612a4d602c913960400191505060405180910390fd5b60006117ca83610d2f565b9050806001600160a01b0316846001600160a01b031614806118055750836001600160a01b03166117fa84610954565b6001600160a01b0316145b806118155750611815818561152d565b949350505050565b826001600160a01b031661183082610d2f565b6001600160a01b0316146118755760405162461bcd60e51b8152600401808060200182810382526029815260200180612b726029913960400191505060405180910390fd5b6001600160a01b0382166118ba5760405162461bcd60e51b8152600401808060200182810382526024815260200180612a296024913960400191505060405180910390fd5b6118c5838383610a8c565b6118d0600082611700565b6001600160a01b03831660009081526001602052604090206118f8908263ffffffff61205016565b506001600160a01b0382166000908152600160205260409020611921908263ffffffff61205c16565b506119346002828463ffffffff61206816565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000610b31838361207e565b604080516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e2600482015290516001600160a01b038416916302571be3916024808301926020929190829003018186803b1580156119ed57600080fd5b505afa158015611a01573d6000803e3d6000fd5b505050506040513d6020811015611a1757600080fd5b505160405163c47f002760e01b81526020600482018181528451602484015284516001600160a01b039094169363c47f002793869383926044909201919085019080838360005b83811015611a76578181015183820152602001611a5e565b50505050905090810190601f168015611aa35780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015611ac257600080fd5b505af1158015611ad6573d6000803e3d6000fd5b505050506040513d602081101561113257600080fd5b6060838383604051602401808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015611b3b578181015183820152602001611b23565b50505050905090810190601f168015611b685780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015611b9b578181015183820152602001611b83565b50505050905090810190601f168015611bc85780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b0316638c2b1e2f60e01b17905296505050505050505b9392505050565b600080611d36600084866040516020018083805190602001908083835b60208310611c3f5780518252601f199092019160209182019101611c20565b6001836020036101000a038019825116818451168082178552505050505050905001826001600160a01b03166001600160a01b031660601b81526014019250505060405160208183030381529060405280519060200120600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d2c5780601f10611d0157610100808354040283529160200191611d2c565b820191906000526020600020905b815481529060010190602001808311611d0f57829003601f168201915b50505050506120e2565b600b546040805163347d5e2560e21b81526001600160a01b0392831660048201818152602483019384528851604484015288519596509386169463d1f5789494919389939091606490910190602085019080838360005b83811015611da5578181015183820152602001611d8d565b50505050905090810190601f168015611dd25780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b158015611df257600080fd5b505af1158015611e06573d6000803e3d6000fd5b50505050611e1d84826001600160a01b03166121f3565b6001600160a01b03169392505050565b6000808080611e3c868661232d565b9097909650945050505050565b8051610d2b906009906020840190612916565b60006118158484846123a8565b611e7484848461181d565b611e8084848484612472565b6111325760405162461bcd60e51b81526004018080602001828103825260328152602001806129d16032913960400191505060405180910390fd5b606081611ee057506040805180820190915260018152600360fc1b60208201526108b8565b8160005b8115611ef857600101600a82049150611ee4565b60608167ffffffffffffffff81118015611f1157600080fd5b506040519080825280601f01601f191660200182016040528015611f3c576020820181803683370190505b50859350905060001982015b8315611f8d57600a840660300160f81b82828060019003935081518110611f6b57fe5b60200101906001600160f81b031916908160001a905350600a84049350611f48565b50949350505050565b60008061202f83856040516020018083805190602001908083835b60208310611fd05780518252601f199092019160209182019101611fb1565b6001836020036101000a038019825116818451168082178552505050505050905001826001600160a01b03166001600160a01b031660601b81526014019250505060405160208183030381529060405280519060200120600d546126ad565b6001600160a01b0316949350505050565b6000610b3183836126ba565b5490565b6000610b3183836126d2565b6000610b318383612798565b600061181584846001600160a01b0385166127e2565b815460009082106120c05760405162461bcd60e51b81526004018080602001828103825260228152602001806129af6022913960400191505060405180910390fd5b8260000182815481106120cf57fe5b9060005260206000200154905092915050565b6000808447101561213a576040805162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015290519081900360640190fd5b825161218d576040805162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015290519081900360640190fd5b8383516020850187f590506001600160a01b038116611815576040805162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015290519081900360640190fd5b6001600160a01b03821661224e576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b612257816116e9565b156122a9576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b6122b560008383610a8c565b6001600160a01b03821660009081526001602052604090206122dd908263ffffffff61205c16565b506122f06002828463ffffffff61206816565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8154600090819083106123715760405162461bcd60e51b8152600401808060200182810382526022815260200180612b046022913960400191505060405180910390fd5b600084600001848154811061238257fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816124435760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124085781810151838201526020016123f0565b50505050905090810190601f1680156124355780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061245657fe5b9060005260206000209060020201600101549150509392505050565b6000612486846001600160a01b0316612879565b61249257506001611815565b600060606001600160a01b038616630a85bd0160e11b6124b06116fc565b89888860405160240180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612529578181015183820152602001612511565b50505050905090810190601f1680156125565780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909a16999099178952518151919890975087965094509250829150849050835b602083106125be5780518252601f19909201916020918201910161259f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612620576040519150601f19603f3d011682016040523d82523d6000602084013e612625565b606091505b5091509150816126765780511561263f5780518082602001fd5b60405162461bcd60e51b81526004018080602001828103825260328152602001806129d16032913960400191505060405180910390fd5b600081806020019051602081101561268d57600080fd5b50516001600160e01b031916630a85bd0160e11b14935061181592505050565b6000610b318383306128b2565b60009081526001919091016020526040902054151590565b6000818152600183016020526040812054801561278e578354600019808301919081019060009087908390811061270557fe5b906000526020600020015490508087600001848154811061272257fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061275257fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610b34565b6000915050610b34565b60006127a483836126ba565b6127da57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610b34565b506000610b34565b600082815260018401602052604081205480612847575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055611bfc565b8285600001600183038154811061285a57fe5b9060005260206000209060020201600101819055506000915050611bfc565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611815575050151592915050565b604080516001600160f81b031960208083019190915260609390931b6bffffffffffffffffffffffff19166021820152603581019490945260558085019390935280518085039093018352607590930190925280519101206001600160a01b031690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061295757805160ff1916838001178555612984565b82800160010185558215612984579182015b82811115612984578251825591602001919060010190612969565b50612990929150612994565b5090565b61095191905b80821115612990576000815560010161299a56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65724552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a26469706673582212204c8698eabc0787273104a703f0aff3509f10df997ab9a66c293f75c7566e153f64736f6c63430006060033",
  "immutableReferences": {},
  "sourceMap": "77:1172:42:-:0;;;143:117;5:9:-1;2:2;;;27:1;24;17:12;2:2;143:117:42;185:13;;;;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;608:247:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;608:247:37;;;;;;;718:40:67;-1:-1:-1;;;;;;;;718:18:67;:40;:::i;:::-;3491:12:71;;;;:5;;:12;;;;;:::i;:::-;-1:-1:-1;3513:16:71;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;3617:40:71;-1:-1:-1;;;;;;;;3617:18:71;:40;:::i;:::-;3667:49;-1:-1:-1;;;;;;;;3667:18:71;:49;:::i;:::-;3726:51;-1:-1:-1;;;;;;;;3726:18:71;:51;:::i;:::-;-1:-1:-1;832:17:66;;-1:-1:-1;852:12:66;-1:-1:-1;;;;;852:10:66;:12;:::i;:::-;874:6;:18;;-1:-1:-1;;;;;;874:18:66;-1:-1:-1;;;;;874:18:66;;;;;;;;907:43;;874:18;;-1:-1:-1;874:18:66;-1:-1:-1;;907:43:66;;-1:-1:-1;;907:43:66;-1:-1:-1;717:6:37::1;:23:::0;;-1:-1:-1;;;;;;717:23:37::1;-1:-1:-1::0;;;;;717:23:37;::::1;;::::0;;760:51:::1;::::0;::::1;;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;21:26;;;;;7:41;;87:2:::1;69:12:::0;;::::1;65:26;61:2;54:38:::0;744:67:37;;::::1;::::0;:9:::1;::::0;41:4:-1::1;30:16:::0;;;::::1;::::0;744:67:37::1;:::i;:::-;;841:9;831:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;831:20:37::1;::::0;;;;::::1;::::0;;815:13:::1;:36:::0;-1:-1:-1;77:1172:42;;-1:-1:-1;;;;77:1172:42;1449:198:67;-1:-1:-1;;;;;;1532:25:67;;;;;1524:66;;;;;-1:-1:-1;;;1524:66:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1600:33:67;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1600:40:67;1636:4;1600:40;;;1449:198::o;735:104:65:-;822:10;735:104;;:::o;77:1172:42:-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;77:1172:42;;;-1:-1:-1;77:1172:42;:::i;:::-;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "77:1172:42:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;77:1172:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;915:140:67;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;915:140:67;-1:-1:-1;;;;;;915:140:67;;:::i;:::-;;;;;;;;;;;;;;;;;;4690:90:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4690:90:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9350:209;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9350:209:71;;:::i;:::-;;;;-1:-1:-1;;;;;9350:209:71;;;;;;;;;;;;;;8684:381;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;8684:381:71;;;;;;;;:::i;:::-;;576:28:37;;;:::i;7564:200:71:-;;;:::i;:::-;;;;;;;;;;;;;;;;11061:300;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;11061:300:71;;;;;;;;;;;;;;;;;:::i;7259:152::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;7259:152:71;;;;;;;;:::i;1722:111:37:-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;1722:111:37;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;1722:111:37;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1722:111:37;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;1722:111:37;;-1:-1:-1;1722:111:37;-1:-1:-1;1722:111:37;:::i;607:315:42:-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;607:315:42;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;607:315:42;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;607:315:42;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;607:315:42;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;607:315:42;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;607:315:42;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;607:315:42;;-1:-1:-1;607:315:42;-1:-1:-1;607:315:42;;:::i;12010:149:71:-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;12010:149:71;;;;;;;;;;;;;;;;;:::i;8102:161::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;8102:161:71;;:::i;1836:98:37:-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1836:98:37;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;1836:98:37;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1836:98:37;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;1836:98:37;;-1:-1:-1;1836:98:37;-1:-1:-1;1836:98:37;:::i;4418:167:71:-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4418:167:71;;:::i;6798:87::-;;;:::i;486:26:37:-;;;:::i;3988:211:71:-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3988:211:71;-1:-1:-1;;;;;3988:211:71;;:::i;1656:145:66:-;;;:::i;548:25:37:-;;;:::i;1033:77:66:-;;;:::i;4889:94:71:-;;;:::i;9858:290::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;9858:290:71;;;;;;;;;;:::i;12882:282::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;12882:282:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;12882:282:71;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;12882:282:71;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;12882:282:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;12882:282:71;;-1:-1:-1;12882:282:71;;-1:-1:-1;;;;;12882:282:71:i;1954:187:37:-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1954:187:37;-1:-1:-1;;;;;1954:187:37;;:::i;858:151::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;858:151:37;-1:-1:-1;;;;;858:151:37;;:::i;5826:740:71:-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5826:740:71;;:::i;10470:154::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;10470:154:71;;;;;;;;;;:::i;460:23:37:-;;;:::i;515:30::-;;;:::i;1950:240:66:-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1950:240:66;-1:-1:-1;;;;;1950:240:66;;:::i;925:322:42:-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;925:322:42;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;925:322:42;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;925:322:42;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;925:322:42;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;925:322:42;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;925:322:42;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;925:322:42;;-1:-1:-1;925:322:42;-1:-1:-1;925:322:42;;:::i;915:140:67:-;-1:-1:-1;;;;;;1015:33:67;;992:4;1015:33;;;;;;;;;;;;;915:140;;;;:::o;4690:90:71:-;4768:5;4761:12;;;;;;;;-1:-1:-1;;4761:12:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4736:13;;4761:12;;4768:5;;4761:12;;4768:5;4761:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4690:90;;:::o;9350:209::-;9418:7;9445:16;9453:7;9445;:16::i;:::-;9437:73;;;;-1:-1:-1;;;9437:73:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9528:24:71;;;;:15;:24;;;;;;-1:-1:-1;;;;;9528:24:71;;9350:209::o;8684:381::-;8764:13;8780:16;8788:7;8780;:16::i;:::-;8764:32;;8820:5;-1:-1:-1;;;;;8814:11:71;:2;-1:-1:-1;;;;;8814:11:71;;;8806:57;;;;-1:-1:-1;;;8806:57:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8898:5;-1:-1:-1;;;;;8882:21:71;:12;:10;:12::i;:::-;-1:-1:-1;;;;;8882:21:71;;:62;;;;8907:37;8924:5;8931:12;:10;:12::i;:::-;8907:16;:37::i;:::-;8874:152;;;;-1:-1:-1;;;8874:152:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9037:21;9046:2;9050:7;9037:8;:21::i;:::-;8684:381;;;:::o;576:28:37:-;;;-1:-1:-1;;;576:28:37;;;;;:::o;7564:200:71:-;7617:7;7736:21;:12;:19;:21::i;:::-;7729:28;;7564:200;:::o;11061:300::-;11220:41;11239:12;:10;:12::i;:::-;11253:7;11220:18;:41::i;:::-;11212:103;;;;-1:-1:-1;;;11212:103:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11326:28;11336:4;11342:2;11346:7;11326:9;:28::i;7259:152::-;-1:-1:-1;;;;;7374:20:71;;7348:7;7374:20;;;:13;:20;;;;;:30;;7398:5;7374:30;:23;:30;:::i;:::-;7367:37;;7259:152;;;;;:::o;1722:111:37:-;1247:12:66;:10;:12::i;:::-;1237:6;;-1:-1:-1;;;;;1237:6:66;;;:22;;;1229:67;;;;;-1:-1:-1;;;1229:67:66;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1229:67:66;;;;;;;;;;;;;;;1803:26:37::1;1816:4;1823:5;;1803:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;1803:8:37::1;::::0;-1:-1:-1;;;1803:26:37:i:1;607:315:42:-:0;792:7;821:96;833:13;848:68;866:12;;848:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;848:68:42;;;;137:4:-1;848:68:42;;;;;;;;;;;;;;;;;;-1:-1:-1;880:17:42;;-1:-1:-1;880:17:42;;;;848:68;;880:17;;;;848:68;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;899:16:42;;-1:-1:-1;848:17:42;;-1:-1:-1;;848:68:42:i;:::-;821:11;:96::i;:::-;806:112;607:315;-1:-1:-1;;;;;;;607:315:42:o;12010:149:71:-;12113:39;12130:4;12136:2;12140:7;12113:39;;;;;;;;;;;;:16;:39::i;8102:161::-;8169:7;;8210:22;:12;8226:5;8210:22;:15;:22;:::i;:::-;-1:-1:-1;8188:44:71;8102:161;-1:-1:-1;;;8102:161:71:o;1836:98:37:-;1247:12:66;:10;:12::i;:::-;1237:6;;-1:-1:-1;;;;;1237:6:66;;;:22;;;1229:67;;;;;-1:-1:-1;;;1229:67:66;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1229:67:66;;;;;;;;;;;;;;;1909:21:37::1;1921:8;;1909:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;1909:11:37::1;::::0;-1:-1:-1;;;1909:21:37:i:1;:::-;1836:98:::0;;:::o;4418:167:71:-;4482:7;4508:70;4525:7;4508:70;;;;;;;;;;;;;;;;;:12;;:70;;:16;:70;:::i;6798:87::-;6870:8;6863:15;;;;;;;;-1:-1:-1;;6863:15:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6838:13;;6863:15;;6870:8;;6863:15;;6870:8;6863:15;;;;;;;;;;;;;;;;;;;;;;;;486:26:37;;;;;;;;;;;;;;;-1:-1:-1;;486:26:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3988:211:71:-;4052:7;-1:-1:-1;;;;;4079:19:71;;4071:74;;;;-1:-1:-1;;;4071:74:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4163:20:71;;;;;;:13;:20;;;;;:29;;:27;:29::i;1656:145:66:-;1247:12;:10;:12::i;:::-;1237:6;;-1:-1:-1;;;;;1237:6:66;;;:22;;;1229:67;;;;;-1:-1:-1;;;1229:67:66;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1229:67:66;;;;;;;;;;;;;;;1746:6:::1;::::0;1725:40:::1;::::0;1762:1:::1;::::0;-1:-1:-1;;;;;1746:6:66::1;::::0;1725:40:::1;::::0;1762:1;;1725:40:::1;1775:6;:19:::0;;-1:-1:-1;;;;;;1775:19:66::1;::::0;;1656:145::o;548:25:37:-;;;-1:-1:-1;;;;;548:25:37;;:::o;1033:77:66:-;1097:6;;-1:-1:-1;;;;;1097:6:66;1033:77;:::o;4889:94:71:-;4969:7;4962:14;;;;;;;;-1:-1:-1;;4962:14:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4937:13;;4962:14;;4969:7;;4962:14;;4969:7;4962:14;;;;;;;;;;;;;;;;;;;;;;;;9858:290;9972:12;:10;:12::i;:::-;-1:-1:-1;;;;;9960:24:71;:8;-1:-1:-1;;;;;9960:24:71;;;9952:62;;;;;-1:-1:-1;;;9952:62:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;10070:8;10025:18;:32;10044:12;:10;:12::i;:::-;-1:-1:-1;;;;;10025:32:71;;;;;;;;;;;;;;;;;-1:-1:-1;10025:32:71;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;10025:53:71;;;;;;;;;;;10108:12;:10;:12::i;:::-;10093:48;;;;;;;;;;-1:-1:-1;;;;;10093:48:71;;;;;;;;;;;;;;9858:290;;:::o;12882:282::-;13013:41;13032:12;:10;:12::i;:::-;13046:7;13013:18;:41::i;:::-;13005:103;;;;-1:-1:-1;;;13005:103:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13118:39;13132:4;13138:2;13142:7;13151:5;13118:13;:39::i;:::-;12882:282;;;;:::o;1954:187:37:-;2025:4;2043:24;2059:6;-1:-1:-1;;;;;2051:15:37;2043:7;:24::i;:::-;:94;;;-1:-1:-1;2080:8:37;;-1:-1:-1;;;;;2080:8:37;2072:31;;;;:64;;-1:-1:-1;2107:8:37;;:29;;;-1:-1:-1;;;2107:29:37;;-1:-1:-1;;;;;2107:29:37;;;;;;;;;:8;;;;;:21;;:29;;;;;;;;;;;;;;:8;:29;;;2:2:-1;;;;27:1;24;17:12;2:2;2107:29:37;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2107:29:37;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2107:29:37;;1954:187;-1:-1:-1;;1954:187:37:o;858:151::-;1247:12:66;:10;:12::i;:::-;1237:6;;-1:-1:-1;;;;;1237:6:66;;;:22;;;1229:67;;;;;-1:-1:-1;;;1229:67:66;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1229:67:66;;;;;;;;;;;;;;;933:11:37::1;::::0;-1:-1:-1;;;933:11:37;::::1;;;932:12;924:21;;12:1:-1;9::::0;2:12:::1;924:21:37;949:11;:18:::0;;-1:-1:-1;;;;;;;949:18:37;;::::1;;-1:-1:-1::0;;;;;;971:34:37::1;-1:-1:-1::0;;;;;971:34:37;;;::::1;::::0;;;::::1;::::0;;858:151::o;5826:740:71:-;5891:13;5924:16;5932:7;5924;:16::i;:::-;5916:76;;;;-1:-1:-1;;;5916:76:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6029:19;;;;:10;:19;;;;;;;;;6003:45;;;;;;-1:-1:-1;;6003:45:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;:45;;;6029:19;6003:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6127:8:71;6121:22;6003:45;;-1:-1:-1;;;;6121:22:71;-1:-1:-1;;6121:22:71;;;;;;;;;;;6117:74;;6171:9;-1:-1:-1;6164:16:71;;6117:74;6293:23;;:27;6289:110;;6367:8;6377:9;6350:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6350:37:71;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6350:37:71;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6350:37:71;;;6336:52;;;;;6289:110;6529:8;6539:18;:7;:16;:18::i;:::-;6512:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6512:46:71;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6512:46:71;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6512:46:71;;;6498:61;;;5826:740;;;:::o;10470:154::-;-1:-1:-1;;;;;10582:25:71;;;10559:4;10582:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;10470:154::o;460:23:37:-;;;-1:-1:-1;;;;;460:23:37;;:::o;515:30::-;;;;:::o;1950:240:66:-;1247:12;:10;:12::i;:::-;1237:6;;-1:-1:-1;;;;;1237:6:66;;;:22;;;1229:67;;;;;-1:-1:-1;;;1229:67:66;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1229:67:66;;;;;;;;;;;;;;;-1:-1:-1;;;;;2038:22:66;::::1;2030:73;;;;-1:-1:-1::0;;;2030:73:66::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2139:6;::::0;2118:38:::1;::::0;-1:-1:-1;;;;;2118:38:66;;::::1;::::0;2139:6:::1;::::0;2118:38:::1;::::0;2139:6:::1;::::0;2118:38:::1;2166:6;:17:::0;;-1:-1:-1;;;;;;2166:17:66::1;-1:-1:-1::0;;;;;2166:17:66;;;::::1;::::0;;;::::1;::::0;;1950:240::o;925:322:42:-;1116:7;1145:97;1158:13;1173:68;1191:12;;1173:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;1173:68:42;;;;137:4:-1;1173:68:42;;;;;;;;;;;;;;;;;;-1:-1:-1;1205:17:42;;-1:-1:-1;1205:17:42;;;;1173:68;;1205:17;;;;1173:68;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;1224:16:42;;-1:-1:-1;1173:17:42;;-1:-1:-1;;1173:68:42:i;:::-;1145:12;:97::i;14333:117:71:-;14390:4;14413:30;:12;14435:7;14413:30;:21;:30;:::i;735:104:65:-;822:10;735:104;:::o;21357:155:71:-;21422:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;21422:29:71;-1:-1:-1;;;;;21422:29:71;;;;;;;;:24;;21475:16;21422:24;21475:7;:16::i;:::-;-1:-1:-1;;;;;21466:39:71;;;;;;;;;;;21357:155;;:::o;6990:121:78:-;7059:7;7085:19;7093:3;7085:7;:19::i;14811:329:71:-;14896:4;14920:16;14928:7;14920;:16::i;:::-;14912:73;;;;-1:-1:-1;;;14912:73:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14995:13;15011:16;15019:7;15011;:16::i;:::-;14995:32;;15056:5;-1:-1:-1;;;;;15045:16:71;:7;-1:-1:-1;;;;;15045:16:71;;:51;;;;15089:7;-1:-1:-1;;;;;15065:31:71;:20;15077:7;15065:11;:20::i;:::-;-1:-1:-1;;;;;15065:31:71;;15045:51;:87;;;;15100:32;15117:5;15124:7;15100:16;:32::i;:::-;15037:96;14811:329;-1:-1:-1;;;;14811:329:71:o;18323:559::-;18440:4;-1:-1:-1;;;;;18420:24:71;:16;18428:7;18420;:16::i;:::-;-1:-1:-1;;;;;18420:24:71;;18412:78;;;;-1:-1:-1;;;18412:78:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18508:16:71;;18500:65;;;;-1:-1:-1;;;18500:65:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18576:39;18597:4;18603:2;18607:7;18576:20;:39::i;:::-;18677:29;18694:1;18698:7;18677:8;:29::i;:::-;-1:-1:-1;;;;;18717:19:71;;;;;;:13;:19;;;;;:35;;18744:7;18717:35;:26;:35;:::i;:::-;-1:-1:-1;;;;;;18762:17:71;;;;;;:13;:17;;;;;:30;;18784:7;18762:30;:21;:30;:::i;:::-;-1:-1:-1;18803:29:71;:12;18820:7;18829:2;18803:29;:16;:29;:::i;:::-;;18867:7;18863:2;-1:-1:-1;;;;;18848:27:71;18857:4;-1:-1:-1;;;;;18848:27:71;;;;;;;;;;;18323:559;;;:::o;7616:135:79:-;7687:7;7721:22;7725:3;7737:5;7721:3;:22::i;533:127:54:-;613:28;;;-1:-1:-1;;;613:28:54;;463:66;613:28;;;;;;-1:-1:-1;;;;;613:9:54;;;;;:28;;;;;;;;;;;;;;:9;:28;;;2:2:-1;;;;27:1;24;17:12;2:2;613:28:54;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;613:28:54;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;613:28:54;595:61;;-1:-1:-1;;;595:61:54;;613:28;595:61;;;;;;;;;;;;;;-1:-1:-1;;;;;595:55:54;;;;;;651:4;;595:61;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;595:61:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;595:61:54;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;595:61:54;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;294:310:42;448:12;541;558:17;580:16;474:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;474:126:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;474:126:42;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;474:126:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;474:126:42;;;-1:-1:-1;;26:21;;;22:32;6:49;;474:126:42;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;474:126:42;-1:-1:-1;;;;;;;294:310:42;;;;;;:::o;1027:445:37:-;1103:7;1143:13;1159:72;1174:1;1204:5;1211:6;1187:31;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1187:31:37;;;;;;;-1:-1:-1;;;;;1187:31:37;-1:-1:-1;;;;;1187:31:37;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1187:31:37;;;1177:42;;;;;;1221:9;1159:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;:72::i;:::-;1366:6;;1306:74;;;-1:-1:-1;;;1306:74:37;;-1:-1:-1;;;;;1366:6:37;;;1306:74;;;;;;;;;;;;;;;;;;;;1143:88;;-1:-1:-1;1306:59:37;;;;;;1366:6;;1374:5;;1306:74;;;;;;;;;;;;;;1366:6;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1306:74:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1306:74:37;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1306:74:37;;;;1414:29;1420:6;1436:5;-1:-1:-1;;;;;1428:14:37;1414:5;:29::i;:::-;-1:-1:-1;;;;;1454:14:37;;1027:445;-1:-1:-1;;;1027:445:37:o;7439:224:78:-;7519:7;;;;7578:22;7582:3;7594:5;7578:3;:22::i;:::-;7547:53;;;;-1:-1:-1;7439:224:78;-1:-1:-1;;;;;7439:224:78:o;19650:98:71:-;19722:19;;;;:8;;:19;;;;;:::i;8082:202:78:-;8189:7;8231:44;8236:3;8256;8262:12;8231:4;:44::i;13869:269:71:-;13982:28;13992:4;13998:2;14002:7;13982:9;:28::i;:::-;14028:48;14051:4;14057:2;14061:7;14070:5;14028:22;:48::i;:::-;14020:111;;;;-1:-1:-1;;;14020:111:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;169:723:80;225:13;442:10;438:51;;-1:-1:-1;468:10:80;;;;;;;;;;;;-1:-1:-1;;;468:10:80;;;;;;438:51;513:5;498:12;552:75;559:9;;552:75;;584:8;;614:2;606:10;;;;552:75;;;636:19;668:6;658:17;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;658:17:80;;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;658:17:80;87:42:-1;143:17;;-1:-1;658:17:80;-1:-1:-1;728:5:80;;-1:-1:-1;636:39:80;-1:-1:-1;;;701:10:80;;743:112;750:9;;743:112;;816:2;809:4;:9;804:2;:14;793:27;;775:6;782:7;;;;;;;775:15;;;;;;;;;;;:45;-1:-1:-1;;;;;775:45:80;;;;;;;;-1:-1:-1;842:2:80;834:10;;;;743:112;;;-1:-1:-1;878:6:80;169:723;-1:-1:-1;;;;169:723:80:o;1475:222:37:-;1557:7;1571:13;1587:81;1637:5;1644:6;1620:31;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1620:31:37;;;;;;;-1:-1:-1;;;;;1620:31:37;-1:-1:-1;;;;;1620:31:37;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1620:31:37;;;1610:42;;;;;;1654:13;;1587:22;:81::i;:::-;-1:-1:-1;;;;;1679:14:37;;1475:222;-1:-1:-1;;;;1475:222:37:o;6758:149:78:-;6842:4;6865:35;6875:3;6895;6865:9;:35::i;4450:108::-;4532:19;;4450:108::o;6731:135:79:-;6801:4;6824:35;6832:3;6852:5;6824:7;:35::i;6434:129::-;6501:4;6524:32;6529:3;6549:5;6524:4;:32::i;6206:174:78:-;6295:4;6318:55;6323:3;6343;-1:-1:-1;;;;;6357:14:78;;6318:4;:55::i;4390:201:79:-;4484:18;;4457:7;;4484:26;-1:-1:-1;4476:73:79;;;;-1:-1:-1;;;4476:73:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4566:3;:11;;4578:5;4566:18;;;;;;;;;;;;;;;;4559:25;;4390:201;;;;:::o;980:535:77:-;1067:7;1086:12;1141:6;1116:21;:31;;1108:73;;;;;-1:-1:-1;;;1108:73:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;1199:15;;1191:65;;;;;-1:-1:-1;;;1191:65:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1407:4;1396:8;1390:15;1383:4;1373:8;1369:19;1361:6;1353:59;1345:67;-1:-1:-1;;;;;;1439:18:77;;1431:56;;;;;-1:-1:-1;;;1431:56:77;;;;;;;;;;;;;;;;;;;;;;;;;;;16870:393:71;-1:-1:-1;;;;;16949:16:71;;16941:61;;;;;-1:-1:-1;;;16941:61:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17021:16;17029:7;17021;:16::i;:::-;17020:17;17012:58;;;;;-1:-1:-1;;;17012:58:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;17081:45;17110:1;17114:2;17118:7;17081:20;:45::i;:::-;-1:-1:-1;;;;;17137:17:71;;;;;;:13;:17;;;;;:30;;17159:7;17137:30;:21;:30;:::i;:::-;-1:-1:-1;17178:29:71;:12;17195:7;17204:2;17178:29;:16;:29;:::i;:::-;-1:-1:-1;17223:33:71;;17248:7;;-1:-1:-1;;;;;17223:33:71;;;17240:1;;17223:33;;17240:1;;17223:33;16870:393;;:::o;4901:274:78:-;5004:19;;4968:7;;;;5004:27;-1:-1:-1;4996:74:78;;;;-1:-1:-1;;;4996:74:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5081:22;5106:3;:12;;5119:5;5106:19;;;;;;;;;;;;;;;;;;5081:44;;5143:5;:10;;;5155:5;:12;;;5135:33;;;;;4901:274;;;;;:::o;5582:315::-;5676:7;5714:17;;;:12;;;:17;;;;;;5764:12;5749:13;5741:36;;;;-1:-1:-1;;;5741:36:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5741:36:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5830:3;:12;;5854:1;5843:8;:12;5830:26;;;;;;;;;;;;;;;;;;:33;;;5823:40;;;5582:315;;;;;:::o;20301:1050:71:-;20421:4;20446:15;:2;-1:-1:-1;;;;;20446:13:71;;:15::i;:::-;20441:58;;-1:-1:-1;20484:4:71;20477:11;;20441:58;20568:12;20582:23;-1:-1:-1;;;;;20609:7:71;;-1:-1:-1;;;20712:12:71;:10;:12::i;:::-;20738:4;20756:7;20777:5;20617:175;;;;;;-1:-1:-1;;;;;20617:175:71;-1:-1:-1;;;;;20617:175:71;;;;;;-1:-1:-1;;;;;20617:175:71;-1:-1:-1;;;;;20617:175:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;20617:175:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20617:175:71;;;-1:-1:-1;;26:21;;;22:32;6:49;;20617:175:71;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;20617:175:71;;;179:29:-1;;;;160:49;;20609:184:71;;;20617:175;;20609:184;;-1:-1:-1;20609:184:71;;-1:-1:-1;25:18;-1:-1;20609:184:71;-1:-1:-1;20609:184:71;;-1:-1:-1;20609:184:71;;-1:-1:-1;25:18;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;20609:184:71;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;20567:226:71;;;;20808:7;20803:542;;20835:17;;:21;20831:376;;21000:10;20994:17;21060:15;21047:10;21043:2;21039:19;21032:44;20949:145;21132:60;;-1:-1:-1;;;21132:60:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20803:542;21237:13;21264:10;21253:32;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21253:32:71;-1:-1:-1;;;;;;21307:26:71;-1:-1:-1;;;21307:26:71;;-1:-1:-1;21299:35:71;;-1:-1:-1;;;21299:35:71;1719:165:77;1802:7;1828:49;1843:4;1849:12;1871:4;1828:14;:49::i;4237:123:78:-;4308:4;4331:17;;;:12;;;;;:17;;;;;;:22;;;4237:123::o;2150:1512:79:-;2216:4;2353:19;;;:12;;;:19;;;;;;2387:15;;2383:1273;;2816:18;;-1:-1:-1;;2768:14:79;;;;2816:22;;;;2744:21;;2816:3;;:22;;3098;;;;;;;;;;;;;;3078:42;;3241:9;3212:3;:11;;3224:13;3212:26;;;;;;;;;;;;;;;;;;;:38;;;;3316:23;;;3358:1;3316:12;;;:23;;;;;;3342:17;;;3316:43;;3465:17;;3316:3;;3465:17;;;;;;;;;;;;;;;;;;;;;;3557:3;:12;;:19;3570:5;3557:19;;;;;;;;;;;3550:26;;;3598:4;3591:11;;;;;;;;2383:1273;3640:5;3633:12;;;;;1578:404;1641:4;1662:21;1672:3;1677:5;1662:9;:21::i;:::-;1657:319;;-1:-1:-1;27:10;;39:1;23:18;;;45:23;;1699:11:79;:23;;;;;;;;;;;;;1879:18;;1857:19;;;:12;;;:19;;;;;;:40;;;;1911:11;;1657:319;-1:-1:-1;1960:5:79;1953:12;;1795:678:78;1871:4;2004:17;;;:12;;;:17;;;;;;2036:13;2032:435;;-1:-1:-1;;2120:38:78;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;2102:12:78;:57;;;;;;;;;;;;;;;;;;;;;;;;2314:19;;2294:17;;;:12;;;:17;;;;;;;:39;2347:11;;2032:435;2425:5;2389:3;:12;;2413:1;2402:8;:12;2389:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2451:5;2444:12;;;;;685:610:76;745:4;1206:20;;1051:66;1245:23;;;;;;:42;;-1:-1:-1;;1272:15:76;;;1237:51;-1:-1:-1;;685:610:76:o;2127:282:77:-;2286:60;;;-1:-1:-1;;;;;;2286:60:77;;;;;;;;;;;;;-1:-1:-1;;2286:60:77;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2286:60:77;;;;;;;2263:93;;;;;-1:-1:-1;;;;;2373:29:77;;2127:282::o;77:1172:42:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;77:1172:42;;;-1:-1:-1;77:1172:42;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;",
  "source": "pragma solidity ^0.6.0;\n\nimport '../Registry.sol';\nimport './Dataset.sol';\n\n\ncontract DatasetRegistry is Registry\n{\n\t/**\n\t * Constructor\n\t */\n\tconstructor()\n\tpublic Registry(\n\t\taddress(new Dataset()),\n\t\t'iExec Dataset Registry (V5)',\n\t\t'iExecDatasetsV5')\n\t{\n\t}\n\n\t/**\n\t * Dataset creation\n\t */\n\tfunction encodeInitializer(\n\t\tstring  memory _datasetName,\n\t\tbytes   memory _datasetMultiaddr,\n\t\tbytes32        _datasetChecksum)\n\tinternal pure returns (bytes memory)\n\t{\n\t\treturn abi.encodeWithSignature(\n\t\t\t'initialize(string,bytes,bytes32)'\n\t\t,\t_datasetName\n\t\t,\t_datasetMultiaddr\n\t\t,\t_datasetChecksum\n\t\t);\n\t}\n\n\tfunction createDataset(\n\t\taddress          _datasetOwner,\n\t\tstring  calldata _datasetName,\n\t\tbytes   calldata _datasetMultiaddr,\n\t\tbytes32          _datasetChecksum)\n\texternal returns (Dataset)\n\t{\n\t\treturn Dataset(_mintCreate(_datasetOwner, encodeInitializer(_datasetName, _datasetMultiaddr, _datasetChecksum)));\n\t}\n\n\tfunction predictDataset(\n\t\taddress          _datasetOwner,\n\t\tstring  calldata _datasetName,\n\t\tbytes   calldata _datasetMultiaddr,\n\t\tbytes32          _datasetChecksum)\n\texternal view returns (Dataset)\n\t{\n\t\treturn Dataset(_mintPredict(_datasetOwner, encodeInitializer(_datasetName, _datasetMultiaddr, _datasetChecksum)));\n\t}\n}\n",
  "sourcePath": "/home/amxx/Work/iExec/code/PoCo-dev/contracts/registries/datasets/DatasetRegistry.sol",
  "ast": {
    "absolutePath": "/home/amxx/Work/iExec/code/PoCo-dev/contracts/registries/datasets/DatasetRegistry.sol",
    "exportedSymbols": {
      "DatasetRegistry": [
        8381
      ]
    },
    "id": 8382,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8290,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:42"
      },
      {
        "absolutePath": "/home/amxx/Work/iExec/code/PoCo-dev/contracts/registries/Registry.sol",
        "file": "../Registry.sol",
        "id": 8291,
        "nodeType": "ImportDirective",
        "scope": 8382,
        "sourceUnit": 8001,
        "src": "25:25:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/amxx/Work/iExec/code/PoCo-dev/contracts/registries/datasets/Dataset.sol",
        "file": "./Dataset.sol",
        "id": 8292,
        "nodeType": "ImportDirective",
        "scope": 8382,
        "sourceUnit": 8289,
        "src": "51:23:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8293,
              "name": "Registry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8000,
              "src": "105:8:42",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Registry_$8000",
                "typeString": "contract Registry"
              }
            },
            "id": 8294,
            "nodeType": "InheritanceSpecifier",
            "src": "105:8:42"
          }
        ],
        "contractDependencies": [
          7780,
          8000,
          8288,
          10126,
          10752,
          10861,
          10917,
          10929,
          12151,
          12259,
          12287,
          12311
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8381,
        "linearizedBaseContracts": [
          8381,
          8000,
          10861,
          10126,
          12151,
          7780,
          12287,
          12311,
          12259,
          10917,
          10929,
          10752
        ],
        "name": "DatasetRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 8308,
              "nodeType": "Block",
              "src": "256:4:42",
              "statements": []
            },
            "documentation": {
              "id": 8295,
              "nodeType": "StructuredDocumentation",
              "src": "117:24:42",
              "text": "Constructor"
            },
            "id": 8309,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 8301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "185:11:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Dataset_$8288_$",
                            "typeString": "function () returns (contract Dataset)"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 8300,
                            "name": "Dataset",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 8288,
                            "src": "189:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Dataset_$8288",
                              "typeString": "contract Dataset"
                            }
                          }
                        },
                        "id": 8302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "185:13:42",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Dataset_$8288",
                          "typeString": "contract Dataset"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Dataset_$8288",
                          "typeString": "contract Dataset"
                        }
                      ],
                      "id": 8299,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "177:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 8298,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "177:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 8303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "177:22:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "hexValue": "694578656320446174617365742052656769737472792028563529",
                    "id": 8304,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "203:29:42",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_032d116d678cc6df59cac026187b1e3934771a6f2958506160057ba576ee4eb1",
                      "typeString": "literal_string \"iExec Dataset Registry (V5)\""
                    },
                    "value": "iExec Dataset Registry (V5)"
                  },
                  {
                    "argumentTypes": null,
                    "hexValue": "694578656344617461736574735635",
                    "id": 8305,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "236:17:42",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_a54a693b90a4a2f6784c36ca55f82e0a377c3ef535fb1de73caae60d21b3501a",
                      "typeString": "literal_string \"iExecDatasetsV5\""
                    },
                    "value": "iExecDatasetsV5"
                  }
                ],
                "id": 8306,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8297,
                  "name": "Registry",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8000,
                  "src": "165:8:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_Registry_$8000_$",
                    "typeString": "type(contract Registry)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "165:89:42"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8296,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "154:2:42"
            },
            "returnParameters": {
              "id": 8307,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "256:0:42"
            },
            "scope": 8381,
            "src": "143:117:42",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8329,
              "nodeType": "Block",
              "src": "463:141:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "696e697469616c697a6528737472696e672c62797465732c6279746573333229",
                        "id": 8323,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "502:34:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8c2b1e2f998a5d17ef0a41e8b8b8fb44bf7ad2cd6fbd4da994f344033e67152d",
                          "typeString": "literal_string \"initialize(string,bytes,bytes32)\""
                        },
                        "value": "initialize(string,bytes,bytes32)"
                      },
                      {
                        "argumentTypes": null,
                        "id": 8324,
                        "name": "_datasetName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8312,
                        "src": "541:12:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8325,
                        "name": "_datasetMultiaddr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8314,
                        "src": "558:17:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8326,
                        "name": "_datasetChecksum",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8316,
                        "src": "580:16:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_8c2b1e2f998a5d17ef0a41e8b8b8fb44bf7ad2cd6fbd4da994f344033e67152d",
                          "typeString": "literal_string \"initialize(string,bytes,bytes32)\""
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8321,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "474:3:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 8322,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodeWithSignature",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "474:23:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (string memory) pure returns (bytes memory)"
                      }
                    },
                    "id": 8327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "474:126:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 8320,
                  "id": 8328,
                  "nodeType": "Return",
                  "src": "467:133:42"
                }
              ]
            },
            "documentation": {
              "id": 8310,
              "nodeType": "StructuredDocumentation",
              "src": "263:29:42",
              "text": "Dataset creation"
            },
            "id": 8330,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "encodeInitializer",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8317,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8312,
                  "mutability": "mutable",
                  "name": "_datasetName",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8330,
                  "src": "324:27:42",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8311,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "324:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8314,
                  "mutability": "mutable",
                  "name": "_datasetMultiaddr",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8330,
                  "src": "355:32:42",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8313,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "355:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8316,
                  "mutability": "mutable",
                  "name": "_datasetChecksum",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8330,
                  "src": "391:31:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8315,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "391:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "320:103:42"
            },
            "returnParameters": {
              "id": 8320,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8319,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8330,
                  "src": "448:12:42",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8318,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "448:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "447:14:42"
            },
            "scope": 8381,
            "src": "294:310:42",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8354,
              "nodeType": "Block",
              "src": "802:120:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8345,
                            "name": "_datasetOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8332,
                            "src": "833:13:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8347,
                                "name": "_datasetName",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8334,
                                "src": "866:12:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8348,
                                "name": "_datasetMultiaddr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8336,
                                "src": "880:17:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8349,
                                "name": "_datasetChecksum",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8338,
                                "src": "899:16:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 8346,
                              "name": "encodeInitializer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8330,
                              "src": "848:17:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (string memory,bytes memory,bytes32) pure returns (bytes memory)"
                              }
                            },
                            "id": 8350,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "848:68:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 8344,
                          "name": "_mintCreate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7909,
                          "src": "821:11:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                            "typeString": "function (address,bytes memory) returns (uint256)"
                          }
                        },
                        "id": 8351,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "821:96:42",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8343,
                      "name": "Dataset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8288,
                      "src": "813:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Dataset_$8288_$",
                        "typeString": "type(contract Dataset)"
                      }
                    },
                    "id": 8352,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "813:105:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Dataset_$8288",
                      "typeString": "contract Dataset"
                    }
                  },
                  "functionReturnParameters": 8342,
                  "id": 8353,
                  "nodeType": "Return",
                  "src": "806:112:42"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "3354bcdb",
            "id": 8355,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createDataset",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8339,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8332,
                  "mutability": "mutable",
                  "name": "_datasetOwner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8355,
                  "src": "633:30:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8331,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "633:7:42",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8334,
                  "mutability": "mutable",
                  "name": "_datasetName",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8355,
                  "src": "667:29:42",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8333,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "667:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8336,
                  "mutability": "mutable",
                  "name": "_datasetMultiaddr",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8355,
                  "src": "700:34:42",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8335,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "700:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8338,
                  "mutability": "mutable",
                  "name": "_datasetChecksum",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8355,
                  "src": "738:33:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8337,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "738:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "629:143:42"
            },
            "returnParameters": {
              "id": 8342,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8341,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8355,
                  "src": "792:7:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Dataset_$8288",
                    "typeString": "contract Dataset"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8340,
                    "name": "Dataset",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8288,
                    "src": "792:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Dataset_$8288",
                      "typeString": "contract Dataset"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "791:9:42"
            },
            "scope": 8381,
            "src": "607:315:42",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 8379,
              "nodeType": "Block",
              "src": "1126:121:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8370,
                            "name": "_datasetOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8357,
                            "src": "1158:13:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8372,
                                "name": "_datasetName",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8359,
                                "src": "1191:12:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8373,
                                "name": "_datasetMultiaddr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8361,
                                "src": "1205:17:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8374,
                                "name": "_datasetChecksum",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8363,
                                "src": "1224:16:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 8371,
                              "name": "encodeInitializer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8330,
                              "src": "1173:17:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (string memory,bytes memory,bytes32) pure returns (bytes memory)"
                              }
                            },
                            "id": 8375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1173:68:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 8369,
                          "name": "_mintPredict",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7938,
                          "src": "1145:12:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                            "typeString": "function (address,bytes memory) view returns (uint256)"
                          }
                        },
                        "id": 8376,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1145:97:42",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8368,
                      "name": "Dataset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8288,
                      "src": "1137:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Dataset_$8288_$",
                        "typeString": "type(contract Dataset)"
                      }
                    },
                    "id": 8377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1137:106:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Dataset_$8288",
                      "typeString": "contract Dataset"
                    }
                  },
                  "functionReturnParameters": 8367,
                  "id": 8378,
                  "nodeType": "Return",
                  "src": "1130:113:42"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "fe17fc7a",
            "id": 8380,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "predictDataset",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8357,
                  "mutability": "mutable",
                  "name": "_datasetOwner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8380,
                  "src": "952:30:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8356,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "952:7:42",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8359,
                  "mutability": "mutable",
                  "name": "_datasetName",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8380,
                  "src": "986:29:42",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8358,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "986:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8361,
                  "mutability": "mutable",
                  "name": "_datasetMultiaddr",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8380,
                  "src": "1019:34:42",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8360,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1019:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8363,
                  "mutability": "mutable",
                  "name": "_datasetChecksum",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8380,
                  "src": "1057:33:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8362,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1057:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "948:143:42"
            },
            "returnParameters": {
              "id": 8367,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8366,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8380,
                  "src": "1116:7:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Dataset_$8288",
                    "typeString": "contract Dataset"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8365,
                    "name": "Dataset",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8288,
                    "src": "1116:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Dataset_$8288",
                      "typeString": "contract Dataset"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1115:9:42"
            },
            "scope": 8381,
            "src": "925:322:42",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 8382,
        "src": "77:1172:42"
      }
    ],
    "src": "0:1250:42"
  },
  "legacyAST": {
    "absolutePath": "/home/amxx/Work/iExec/code/PoCo-dev/contracts/registries/datasets/DatasetRegistry.sol",
    "exportedSymbols": {
      "DatasetRegistry": [
        8381
      ]
    },
    "id": 8382,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8290,
        "literals": [
          "solidity",
          "^",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:42"
      },
      {
        "absolutePath": "/home/amxx/Work/iExec/code/PoCo-dev/contracts/registries/Registry.sol",
        "file": "../Registry.sol",
        "id": 8291,
        "nodeType": "ImportDirective",
        "scope": 8382,
        "sourceUnit": 8001,
        "src": "25:25:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/amxx/Work/iExec/code/PoCo-dev/contracts/registries/datasets/Dataset.sol",
        "file": "./Dataset.sol",
        "id": 8292,
        "nodeType": "ImportDirective",
        "scope": 8382,
        "sourceUnit": 8289,
        "src": "51:23:42",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 8293,
              "name": "Registry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8000,
              "src": "105:8:42",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Registry_$8000",
                "typeString": "contract Registry"
              }
            },
            "id": 8294,
            "nodeType": "InheritanceSpecifier",
            "src": "105:8:42"
          }
        ],
        "contractDependencies": [
          7780,
          8000,
          8288,
          10126,
          10752,
          10861,
          10917,
          10929,
          12151,
          12259,
          12287,
          12311
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 8381,
        "linearizedBaseContracts": [
          8381,
          8000,
          10861,
          10126,
          12151,
          7780,
          12287,
          12311,
          12259,
          10917,
          10929,
          10752
        ],
        "name": "DatasetRegistry",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 8308,
              "nodeType": "Block",
              "src": "256:4:42",
              "statements": []
            },
            "documentation": {
              "id": 8295,
              "nodeType": "StructuredDocumentation",
              "src": "117:24:42",
              "text": "Constructor"
            },
            "id": 8309,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 8301,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "185:11:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Dataset_$8288_$",
                            "typeString": "function () returns (contract Dataset)"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 8300,
                            "name": "Dataset",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 8288,
                            "src": "189:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Dataset_$8288",
                              "typeString": "contract Dataset"
                            }
                          }
                        },
                        "id": 8302,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "185:13:42",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Dataset_$8288",
                          "typeString": "contract Dataset"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Dataset_$8288",
                          "typeString": "contract Dataset"
                        }
                      ],
                      "id": 8299,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "177:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 8298,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "177:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 8303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "177:22:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "argumentTypes": null,
                    "hexValue": "694578656320446174617365742052656769737472792028563529",
                    "id": 8304,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "203:29:42",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_032d116d678cc6df59cac026187b1e3934771a6f2958506160057ba576ee4eb1",
                      "typeString": "literal_string \"iExec Dataset Registry (V5)\""
                    },
                    "value": "iExec Dataset Registry (V5)"
                  },
                  {
                    "argumentTypes": null,
                    "hexValue": "694578656344617461736574735635",
                    "id": 8305,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "236:17:42",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_a54a693b90a4a2f6784c36ca55f82e0a377c3ef535fb1de73caae60d21b3501a",
                      "typeString": "literal_string \"iExecDatasetsV5\""
                    },
                    "value": "iExecDatasetsV5"
                  }
                ],
                "id": 8306,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 8297,
                  "name": "Registry",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8000,
                  "src": "165:8:42",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_Registry_$8000_$",
                    "typeString": "type(contract Registry)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "165:89:42"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8296,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "154:2:42"
            },
            "returnParameters": {
              "id": 8307,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "256:0:42"
            },
            "scope": 8381,
            "src": "143:117:42",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8329,
              "nodeType": "Block",
              "src": "463:141:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "696e697469616c697a6528737472696e672c62797465732c6279746573333229",
                        "id": 8323,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "502:34:42",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8c2b1e2f998a5d17ef0a41e8b8b8fb44bf7ad2cd6fbd4da994f344033e67152d",
                          "typeString": "literal_string \"initialize(string,bytes,bytes32)\""
                        },
                        "value": "initialize(string,bytes,bytes32)"
                      },
                      {
                        "argumentTypes": null,
                        "id": 8324,
                        "name": "_datasetName",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8312,
                        "src": "541:12:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8325,
                        "name": "_datasetMultiaddr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8314,
                        "src": "558:17:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 8326,
                        "name": "_datasetChecksum",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8316,
                        "src": "580:16:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_8c2b1e2f998a5d17ef0a41e8b8b8fb44bf7ad2cd6fbd4da994f344033e67152d",
                          "typeString": "literal_string \"initialize(string,bytes,bytes32)\""
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 8321,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "474:3:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 8322,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "encodeWithSignature",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "474:23:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (string memory) pure returns (bytes memory)"
                      }
                    },
                    "id": 8327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "474:126:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 8320,
                  "id": 8328,
                  "nodeType": "Return",
                  "src": "467:133:42"
                }
              ]
            },
            "documentation": {
              "id": 8310,
              "nodeType": "StructuredDocumentation",
              "src": "263:29:42",
              "text": "Dataset creation"
            },
            "id": 8330,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "encodeInitializer",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8317,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8312,
                  "mutability": "mutable",
                  "name": "_datasetName",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8330,
                  "src": "324:27:42",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8311,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "324:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8314,
                  "mutability": "mutable",
                  "name": "_datasetMultiaddr",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8330,
                  "src": "355:32:42",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8313,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "355:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8316,
                  "mutability": "mutable",
                  "name": "_datasetChecksum",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8330,
                  "src": "391:31:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8315,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "391:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "320:103:42"
            },
            "returnParameters": {
              "id": 8320,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8319,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8330,
                  "src": "448:12:42",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8318,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "448:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "447:14:42"
            },
            "scope": 8381,
            "src": "294:310:42",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 8354,
              "nodeType": "Block",
              "src": "802:120:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8345,
                            "name": "_datasetOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8332,
                            "src": "833:13:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8347,
                                "name": "_datasetName",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8334,
                                "src": "866:12:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8348,
                                "name": "_datasetMultiaddr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8336,
                                "src": "880:17:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8349,
                                "name": "_datasetChecksum",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8338,
                                "src": "899:16:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 8346,
                              "name": "encodeInitializer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8330,
                              "src": "848:17:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (string memory,bytes memory,bytes32) pure returns (bytes memory)"
                              }
                            },
                            "id": 8350,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "848:68:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 8344,
                          "name": "_mintCreate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7909,
                          "src": "821:11:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                            "typeString": "function (address,bytes memory) returns (uint256)"
                          }
                        },
                        "id": 8351,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "821:96:42",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8343,
                      "name": "Dataset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8288,
                      "src": "813:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Dataset_$8288_$",
                        "typeString": "type(contract Dataset)"
                      }
                    },
                    "id": 8352,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "813:105:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Dataset_$8288",
                      "typeString": "contract Dataset"
                    }
                  },
                  "functionReturnParameters": 8342,
                  "id": 8353,
                  "nodeType": "Return",
                  "src": "806:112:42"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "3354bcdb",
            "id": 8355,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "createDataset",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8339,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8332,
                  "mutability": "mutable",
                  "name": "_datasetOwner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8355,
                  "src": "633:30:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8331,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "633:7:42",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8334,
                  "mutability": "mutable",
                  "name": "_datasetName",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8355,
                  "src": "667:29:42",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8333,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "667:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8336,
                  "mutability": "mutable",
                  "name": "_datasetMultiaddr",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8355,
                  "src": "700:34:42",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8335,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "700:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8338,
                  "mutability": "mutable",
                  "name": "_datasetChecksum",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8355,
                  "src": "738:33:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8337,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "738:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "629:143:42"
            },
            "returnParameters": {
              "id": 8342,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8341,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8355,
                  "src": "792:7:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Dataset_$8288",
                    "typeString": "contract Dataset"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8340,
                    "name": "Dataset",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8288,
                    "src": "792:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Dataset_$8288",
                      "typeString": "contract Dataset"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "791:9:42"
            },
            "scope": 8381,
            "src": "607:315:42",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 8379,
              "nodeType": "Block",
              "src": "1126:121:42",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8370,
                            "name": "_datasetOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8357,
                            "src": "1158:13:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 8372,
                                "name": "_datasetName",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8359,
                                "src": "1191:12:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8373,
                                "name": "_datasetMultiaddr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8361,
                                "src": "1205:17:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 8374,
                                "name": "_datasetChecksum",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8363,
                                "src": "1224:16:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 8371,
                              "name": "encodeInitializer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8330,
                              "src": "1173:17:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (string memory,bytes memory,bytes32) pure returns (bytes memory)"
                              }
                            },
                            "id": 8375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1173:68:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 8369,
                          "name": "_mintPredict",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7938,
                          "src": "1145:12:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                            "typeString": "function (address,bytes memory) view returns (uint256)"
                          }
                        },
                        "id": 8376,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1145:97:42",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8368,
                      "name": "Dataset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8288,
                      "src": "1137:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Dataset_$8288_$",
                        "typeString": "type(contract Dataset)"
                      }
                    },
                    "id": 8377,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1137:106:42",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Dataset_$8288",
                      "typeString": "contract Dataset"
                    }
                  },
                  "functionReturnParameters": 8367,
                  "id": 8378,
                  "nodeType": "Return",
                  "src": "1130:113:42"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "fe17fc7a",
            "id": 8380,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "predictDataset",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 8364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8357,
                  "mutability": "mutable",
                  "name": "_datasetOwner",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8380,
                  "src": "952:30:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8356,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "952:7:42",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8359,
                  "mutability": "mutable",
                  "name": "_datasetName",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8380,
                  "src": "986:29:42",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 8358,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "986:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8361,
                  "mutability": "mutable",
                  "name": "_datasetMultiaddr",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8380,
                  "src": "1019:34:42",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8360,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1019:5:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8363,
                  "mutability": "mutable",
                  "name": "_datasetChecksum",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8380,
                  "src": "1057:33:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8362,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1057:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "948:143:42"
            },
            "returnParameters": {
              "id": 8367,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8366,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 8380,
                  "src": "1116:7:42",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Dataset_$8288",
                    "typeString": "contract Dataset"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 8365,
                    "name": "Dataset",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 8288,
                    "src": "1116:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Dataset_$8288",
                      "typeString": "contract Dataset"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1115:9:42"
            },
            "scope": 8381,
            "src": "925:322:42",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 8382,
        "src": "77:1172:42"
      }
    ],
    "src": "0:1250:42"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.6+commit.6c089d02.Emscripten.clang"
  },
  "networks": {
    "1": {
      "events": {
        "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
          "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"
        },
        "0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31": {
          "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"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
          "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"
        }
      },
      "links": {},
      "address": "0x799DAa22654128d0C64d5b79eac9283008158730"
    },
    "3": {
      "events": {
        "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
          "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"
        },
        "0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31": {
          "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"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
          "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"
        }
      },
      "links": {},
      "address": "0x799DAa22654128d0C64d5b79eac9283008158730"
    },
    "4": {
      "events": {
        "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
          "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"
        },
        "0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31": {
          "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"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
          "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"
        }
      },
      "links": {},
      "address": "0x799DAa22654128d0C64d5b79eac9283008158730"
    },
    "5": {
      "events": {
        "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
          "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"
        },
        "0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31": {
          "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"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
          "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"
        }
      },
      "links": {},
      "address": "0x799DAa22654128d0C64d5b79eac9283008158730"
    },
    "42": {
      "events": {
        "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925": {
          "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"
        },
        "0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31": {
          "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"
        },
        "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "previousOwner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "OwnershipTransferred",
          "type": "event"
        },
        "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef": {
          "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"
        }
      },
      "links": {},
      "address": "0x799DAa22654128d0C64d5b79eac9283008158730"
    }
  },
  "schemaVersion": "3.1.0",
  "updatedAt": "2020-04-21T19:16:56.342Z",
  "networkType": "ethereum",
  "devdoc": {
    "methods": {
      "approve(address,uint256)": {
        "details": "Approves another address to transfer the given token ID The zero address indicates there is no approved address. There can only be one approved address per token at a given time. Can only be called by the token owner or an approved operator.",
        "params": {
          "to": "address to be approved for the given token ID",
          "tokenId": "uint256 ID of the token to be approved"
        }
      },
      "balanceOf(address)": {
        "details": "Gets the balance of the specified address.",
        "params": {
          "owner": "address to query the balance of"
        },
        "returns": {
          "_0": "uint256 representing the amount owned by the passed address"
        }
      },
      "baseURI()": {
        "details": "Returns the base URI set via {_setBaseURI}. This will be automatically added as a prefix in {tokenURI} to each token's URI, or to the token ID if no specific URI is set for that token ID."
      },
      "getApproved(uint256)": {
        "details": "Gets the approved address for a token ID, or zero if no address set Reverts if the token ID does not exist.",
        "params": {
          "tokenId": "uint256 ID of the token to query the approval of"
        },
        "returns": {
          "_0": "address currently approved for the given token ID"
        }
      },
      "isApprovedForAll(address,address)": {
        "details": "Tells whether an operator is approved by a given owner.",
        "params": {
          "operator": "operator address which you want to query the approval of",
          "owner": "owner address which you want to query the approval of"
        },
        "returns": {
          "_0": "bool whether the given operator is approved by the given owner"
        }
      },
      "name()": {
        "details": "Gets the token name.",
        "returns": {
          "_0": "string representing the token name"
        }
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "ownerOf(uint256)": {
        "details": "Gets the owner of the specified token ID.",
        "params": {
          "tokenId": "uint256 ID of the token to query the owner of"
        },
        "returns": {
          "_0": "address currently marked as the owner of the given token ID"
        }
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner.     * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "safeTransferFrom(address,address,uint256)": {
        "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. Requires the msg.sender to be the owner, approved, or operator",
        "params": {
          "from": "current owner of the token",
          "to": "address to receive the ownership of the given token ID",
          "tokenId": "uint256 ID of the token to be transferred"
        }
      },
      "safeTransferFrom(address,address,uint256,bytes)": {
        "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. Requires the _msgSender() to be the owner, approved, or operator",
        "params": {
          "_data": "bytes data to send along with a safe transfer check",
          "from": "current owner of the token",
          "to": "address to receive the ownership of the given token ID",
          "tokenId": "uint256 ID of the token to be transferred"
        }
      },
      "setApprovalForAll(address,bool)": {
        "details": "Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalf.",
        "params": {
          "approved": "representing the status of the approval to be set",
          "operator": "operator address to set the approval"
        }
      },
      "supportsInterface(bytes4)": {
        "details": "See {IERC165-supportsInterface}.     * Time complexity O(1), guaranteed to always use less than 30 000 gas."
      },
      "symbol()": {
        "details": "Gets the token symbol.",
        "returns": {
          "_0": "string representing the token symbol"
        }
      },
      "tokenByIndex(uint256)": {
        "details": "Gets the token ID at a given index of all the tokens in this contract Reverts if the index is greater or equal to the total number of tokens.",
        "params": {
          "index": "uint256 representing the index to be accessed of the tokens list"
        },
        "returns": {
          "_0": "uint256 token ID at the given index of the tokens list"
        }
      },
      "tokenOfOwnerByIndex(address,uint256)": {
        "details": "Gets the token ID at a given index of the tokens list of the requested owner.",
        "params": {
          "index": "uint256 representing the index to be accessed of the requested tokens list",
          "owner": "address owning the tokens list to be accessed"
        },
        "returns": {
          "_0": "uint256 token ID at the given index of the tokens list owned by the requested address"
        }
      },
      "tokenURI(uint256)": {
        "details": "Returns the URI for a given token ID. May return an empty string.     * If a base URI is set (via {_setBaseURI}), it is added as a prefix to the token's own URI (via {_setTokenURI}).     * If there is a base URI but no token URI, the token's ID will be used as its URI when appending it to the base URI. This pattern for autogenerated token URIs can lead to large gas savings.     * .Examples |=== |`_setBaseURI()` |`_setTokenURI()` |`tokenURI()` | \"\" | \"\" | \"\" | \"\" | \"token.uri/123\" | \"token.uri/123\" | \"token.uri/\" | \"123\" | \"token.uri/123\" | \"token.uri/\" | \"\" | \"token.uri/<tokenId>\" |===     * Requirements:     * - `tokenId` must exist."
      },
      "totalSupply()": {
        "details": "Gets the total amount of tokens stored by the contract.",
        "returns": {
          "_0": "uint256 representing the total amount of tokens"
        }
      },
      "transferFrom(address,address,uint256)": {
        "details": "Transfers the ownership of a given token ID to another address. Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requires the msg.sender to be the owner, approved, or operator.",
        "params": {
          "from": "current owner of the token",
          "to": "address to receive the ownership of the given token ID",
          "tokenId": "uint256 ID of the token to be transferred"
        }
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    }
  },
  "userdoc": {
    "methods": {
      "constructor": "Constructor"
    }
  }
}