{
  "contractName": "OracleBase",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "_result",
          "type": "bytes"
        },
        {
          "indexed": false,
          "name": "_sender",
          "type": "address"
        }
      ],
      "name": "ResultSet",
      "type": "event"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "resultFor",
      "outputs": [
        {
          "name": "",
          "type": "bytes"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "isResultSet",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610353806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806353bac2c914610051578063d09cc57e1461009a575b600080fd5b34801561005d57600080fd5b506100806004803603810190808035600019169060200190929190505050610144565b604051808215151515815260200191505060405180910390f35b3480156100a657600080fd5b506100c9600480360381019080803560001916906020019092919050505061015d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101095780820151818401526020810190506100ee565b50505050905090810190601f1680156101365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900460ff169050919050565b60606000600102600019168260001916141515610208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f54686973206f7261636c6520646f6573206e6f7420737570706f72742069647381526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61021182610144565b1515610285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f54686520726573756c7420686173206e6f74206265656e207365742e0000000081525060200191505060405180910390fd5b60008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561031b5780601f106102f05761010080835404028352916020019161031b565b820191906000526020600020905b8154815290600101906020018083116102fe57829003601f168201915b505050505090509190505600a165627a7a72305820c5cfec86c134c38ea088f44d7020f2b1d263f810f0c054ec19d884ef7178ef7d0029",
  "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806353bac2c914610051578063d09cc57e1461009a575b600080fd5b34801561005d57600080fd5b506100806004803603810190808035600019169060200190929190505050610144565b604051808215151515815260200191505060405180910390f35b3480156100a657600080fd5b506100c9600480360381019080803560001916906020019092919050505061015d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101095780820151818401526020810190506100ee565b50505050905090810190601f1680156101365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900460ff169050919050565b60606000600102600019168260001916141515610208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f54686973206f7261636c6520646f6573206e6f7420737570706f72742069647381526020017f2e0000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61021182610144565b1515610285576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f54686520726573756c7420686173206e6f74206265656e207365742e0000000081525060200191505060405180910390fd5b60008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561031b5780601f106102f05761010080835404028352916020019161031b565b820191906000526020600020905b8154815290600101906020018083116102fe57829003601f168201915b505050505090509190505600a165627a7a72305820c5cfec86c134c38ea088f44d7020f2b1d263f810f0c054ec19d884ef7178ef7d0029",
  "sourceMap": "265:1378:15:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;265:1378:15;;;;;;;",
  "deployedSourceMap": "265:1378:15:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;945:93;;8:9:-1;5:2;;;30:1;27;20:12;5:2;945:93:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;625:215;;8:9:-1;5:2;;;30:1;27;20:12;5:2;625:215:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;625:215:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;945:93;1003:4;1022:11;;;;;;;;;;;1015:18;;945:93;;;:::o;625:215::-;679:5;714:1;706:10;;700:16;;;:2;:16;;;;692:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;768:15;780:2;768:11;:15::i;:::-;760:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;829:6;822:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;625:215;;;:::o",
  "source": "pragma solidity ^0.4.24;\n\nimport \"./IOracle.sol\";\n\n/**\n * @title OracleBase\n * @dev Lays out generic single-event oracle functionality. It implements \n * an internal function to set the result that can be called by public\n * functions that extend OracleBase.\n */\n \ncontract OracleBase is IOracle {\n\n  bytes result;\n  bool resultIsSet;\n\n  event ResultSet(bytes _result, address _sender);\n\n  /**\n   *  Public functions\n   */\n\n  /**\n   * @dev Returns the result or reverts if it hasn't been set\n   * @param id This is not used in single-event oracles and should be 0\n   * @return The result or the oracle's single event\n   */\n  function resultFor(bytes32 id) external view returns (bytes) {\n    require(id == bytes32(0), \"This oracle does not support ids.\");\n    require(isResultSet(id), \"The result has not been set.\");\n    return result;\n  }\n\n  /**\n   * @dev Checks if the result has been set\n   * @return True if the result has been set\n   */\n  function isResultSet(bytes32 /*id*/) public view returns (bool) {\n    return resultIsSet;\n  }\n\n  /**\n   *  Internal functions\n   */\n\n   /**\n    * @dev Set's the result, emits ResultSet, and calls the _resultWasSet()\n    * overridable function\n    * @param _result The result of the oracle's single event.\n    */\n  function _setResult(bytes _result) internal {\n    require(!resultIsSet, \"Result has already been set.\");\n    result = _result;\n    resultIsSet = true;\n    emit ResultSet(_result, msg.sender);\n    _resultWasSet(_result);\n  }\n\n  /**\n   * @dev Empty function meant to be overidden in subclasses\n   */\n  function _resultWasSet(bytes /*_result*/) internal {\n    // optional override\n  }\n\n}\n",
  "sourcePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Oracles/OracleBase.sol",
  "ast": {
    "absolutePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Oracles/OracleBase.sol",
    "exportedSymbols": {
      "OracleBase": [
        734
      ]
    },
    "id": 735,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 648,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:15"
      },
      {
        "absolutePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Oracles/IOracle.sol",
        "file": "./IOracle.sol",
        "id": 649,
        "nodeType": "ImportDirective",
        "scope": 735,
        "sourceUnit": 274,
        "src": "26:23:15",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 650,
              "name": "IOracle",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 273,
              "src": "288:7:15",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IOracle_$273",
                "typeString": "contract IOracle"
              }
            },
            "id": 651,
            "nodeType": "InheritanceSpecifier",
            "src": "288:7:15"
          }
        ],
        "contractDependencies": [
          273
        ],
        "contractKind": "contract",
        "documentation": "@title OracleBase\n@dev Lays out generic single-event oracle functionality. It implements \nan internal function to set the result that can be called by public\nfunctions that extend OracleBase.",
        "fullyImplemented": true,
        "id": 734,
        "linearizedBaseContracts": [
          734,
          273
        ],
        "name": "OracleBase",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 653,
            "name": "result",
            "nodeType": "VariableDeclaration",
            "scope": 734,
            "src": "301:12:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_storage",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 652,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "301:5:15",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 655,
            "name": "resultIsSet",
            "nodeType": "VariableDeclaration",
            "scope": 734,
            "src": "317:16:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 654,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "317:4:15",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 661,
            "name": "ResultSet",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 660,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 657,
                  "indexed": false,
                  "name": "_result",
                  "nodeType": "VariableDeclaration",
                  "scope": 661,
                  "src": "354:13:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 656,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "354:5:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 659,
                  "indexed": false,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 661,
                  "src": "369:15:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 658,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "369:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "353:32:15"
            },
            "src": "338:48:15"
          },
          {
            "body": {
              "id": 686,
              "nodeType": "Block",
              "src": "686:154:15",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 673,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 669,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 663,
                          "src": "700:2:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 671,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "714:1:15",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 670,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "706:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": "bytes32"
                          },
                          "id": 672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "706:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "700:16:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "54686973206f7261636c6520646f6573206e6f7420737570706f7274206964732e",
                        "id": 674,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "718:35:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ddc79917b943b3bdd694ba9b59b5ad8c4d987af4daf0c6c7019f9bf909856d91",
                          "typeString": "literal_string \"This oracle does not support ids.\""
                        },
                        "value": "This oracle does not support ids."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ddc79917b943b3bdd694ba9b59b5ad8c4d987af4daf0c6c7019f9bf909856d91",
                          "typeString": "literal_string \"This oracle does not support ids.\""
                        }
                      ],
                      "id": 668,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "692:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "692:62:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 676,
                  "nodeType": "ExpressionStatement",
                  "src": "692:62:15"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 679,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 663,
                            "src": "780:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 678,
                          "name": "isResultSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 697,
                          "src": "768:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 680,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "768:15:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "54686520726573756c7420686173206e6f74206265656e207365742e",
                        "id": 681,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "785:30:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b4c2c41b307e538d03aa2610139cc2634e8b8010e8522370d1796162149980d0",
                          "typeString": "literal_string \"The result has not been set.\""
                        },
                        "value": "The result has not been set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b4c2c41b307e538d03aa2610139cc2634e8b8010e8522370d1796162149980d0",
                          "typeString": "literal_string \"The result has not been set.\""
                        }
                      ],
                      "id": 677,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "760:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 682,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "760:56:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 683,
                  "nodeType": "ExpressionStatement",
                  "src": "760:56:15"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 684,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 653,
                    "src": "829:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 667,
                  "id": 685,
                  "nodeType": "Return",
                  "src": "822:13:15"
                }
              ]
            },
            "documentation": "@dev Returns the result or reverts if it hasn't been set\n@param id This is not used in single-event oracles and should be 0\n@return The result or the oracle's single event",
            "id": 687,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "resultFor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 664,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 663,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 687,
                  "src": "644:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 662,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "644:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "643:12:15"
            },
            "payable": false,
            "returnParameters": {
              "id": 667,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 666,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 687,
                  "src": "679:5:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 665,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "679:5:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "678:7:15"
            },
            "scope": 734,
            "src": "625:215:15",
            "stateMutability": "view",
            "superFunction": 265,
            "visibility": "external"
          },
          {
            "body": {
              "id": 696,
              "nodeType": "Block",
              "src": "1009:29:15",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 694,
                    "name": "resultIsSet",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 655,
                    "src": "1022:11:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 693,
                  "id": 695,
                  "nodeType": "Return",
                  "src": "1015:18:15"
                }
              ]
            },
            "documentation": "@dev Checks if the result has been set\n@return True if the result has been set",
            "id": 697,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isResultSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 690,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 689,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 697,
                  "src": "966:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 688,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "966:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "965:16:15"
            },
            "payable": false,
            "returnParameters": {
              "id": 693,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 692,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 697,
                  "src": "1003:4:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 691,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1003:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1002:6:15"
            },
            "scope": 734,
            "src": "945:93:15",
            "stateMutability": "view",
            "superFunction": 272,
            "visibility": "public"
          },
          {
            "body": {
              "id": 726,
              "nodeType": "Block",
              "src": "1303:179:15",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 704,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "1317:12:15",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 703,
                          "name": "resultIsSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 655,
                          "src": "1318:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "526573756c742068617320616c7265616479206265656e207365742e",
                        "id": 705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1331:30:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b45cc97293b5cb4545daeea8813842b2f461801b8453b43736b990d1f1eede33",
                          "typeString": "literal_string \"Result has already been set.\""
                        },
                        "value": "Result has already been set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b45cc97293b5cb4545daeea8813842b2f461801b8453b43736b990d1f1eede33",
                          "typeString": "literal_string \"Result has already been set.\""
                        }
                      ],
                      "id": 702,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "1309:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 706,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1309:53:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 707,
                  "nodeType": "ExpressionStatement",
                  "src": "1309:53:15"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 710,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 708,
                      "name": "result",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 653,
                      "src": "1368:6:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 709,
                      "name": "_result",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 699,
                      "src": "1377:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "1368:16:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 711,
                  "nodeType": "ExpressionStatement",
                  "src": "1368:16:15"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 714,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 712,
                      "name": "resultIsSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 655,
                      "src": "1390:11:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 713,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1404:4:15",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1390:18:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 715,
                  "nodeType": "ExpressionStatement",
                  "src": "1390:18:15"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 717,
                        "name": "_result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 699,
                        "src": "1429:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 718,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3256,
                          "src": "1438:3:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 719,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1438:10:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 716,
                      "name": "ResultSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 661,
                      "src": "1419:9:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (bytes memory,address)"
                      }
                    },
                    "id": 720,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1419:30:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 721,
                  "nodeType": "EmitStatement",
                  "src": "1414:35:15"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 723,
                        "name": "_result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 699,
                        "src": "1469:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 722,
                      "name": "_resultWasSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 733,
                      "src": "1455:13:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory)"
                      }
                    },
                    "id": 724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1455:22:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 725,
                  "nodeType": "ExpressionStatement",
                  "src": "1455:22:15"
                }
              ]
            },
            "documentation": "@dev Set's the result, emits ResultSet, and calls the _resultWasSet()\noverridable function\n@param _result The result of the oracle's single event.",
            "id": 727,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_setResult",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 700,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 699,
                  "name": "_result",
                  "nodeType": "VariableDeclaration",
                  "scope": 727,
                  "src": "1279:13:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 698,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1279:5:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1278:15:15"
            },
            "payable": false,
            "returnParameters": {
              "id": 701,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1303:0:15"
            },
            "scope": 734,
            "src": "1259:223:15",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 732,
              "nodeType": "Block",
              "src": "1610:30:15",
              "statements": []
            },
            "documentation": "@dev Empty function meant to be overidden in subclasses",
            "id": 733,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_resultWasSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 730,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 729,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 733,
                  "src": "1582:5:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 728,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1582:5:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1581:19:15"
            },
            "payable": false,
            "returnParameters": {
              "id": 731,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1610:0:15"
            },
            "scope": 734,
            "src": "1559:81:15",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 735,
        "src": "265:1378:15"
      }
    ],
    "src": "0:1644:15"
  },
  "legacyAST": {
    "absolutePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Oracles/OracleBase.sol",
    "exportedSymbols": {
      "OracleBase": [
        734
      ]
    },
    "id": 735,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 648,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:15"
      },
      {
        "absolutePath": "/Users/mfcalvanese/dev/eth/tidbit-eth/contracts/Oracles/IOracle.sol",
        "file": "./IOracle.sol",
        "id": 649,
        "nodeType": "ImportDirective",
        "scope": 735,
        "sourceUnit": 274,
        "src": "26:23:15",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 650,
              "name": "IOracle",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 273,
              "src": "288:7:15",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IOracle_$273",
                "typeString": "contract IOracle"
              }
            },
            "id": 651,
            "nodeType": "InheritanceSpecifier",
            "src": "288:7:15"
          }
        ],
        "contractDependencies": [
          273
        ],
        "contractKind": "contract",
        "documentation": "@title OracleBase\n@dev Lays out generic single-event oracle functionality. It implements \nan internal function to set the result that can be called by public\nfunctions that extend OracleBase.",
        "fullyImplemented": true,
        "id": 734,
        "linearizedBaseContracts": [
          734,
          273
        ],
        "name": "OracleBase",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 653,
            "name": "result",
            "nodeType": "VariableDeclaration",
            "scope": 734,
            "src": "301:12:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_storage",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 652,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "301:5:15",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 655,
            "name": "resultIsSet",
            "nodeType": "VariableDeclaration",
            "scope": 734,
            "src": "317:16:15",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 654,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "317:4:15",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 661,
            "name": "ResultSet",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 660,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 657,
                  "indexed": false,
                  "name": "_result",
                  "nodeType": "VariableDeclaration",
                  "scope": 661,
                  "src": "354:13:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 656,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "354:5:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 659,
                  "indexed": false,
                  "name": "_sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 661,
                  "src": "369:15:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 658,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "369:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "353:32:15"
            },
            "src": "338:48:15"
          },
          {
            "body": {
              "id": 686,
              "nodeType": "Block",
              "src": "686:154:15",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 673,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 669,
                          "name": "id",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 663,
                          "src": "700:2:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 671,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "714:1:15",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 670,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "706:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes32_$",
                              "typeString": "type(bytes32)"
                            },
                            "typeName": "bytes32"
                          },
                          "id": 672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "706:10:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "700:16:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "54686973206f7261636c6520646f6573206e6f7420737570706f7274206964732e",
                        "id": 674,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "718:35:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ddc79917b943b3bdd694ba9b59b5ad8c4d987af4daf0c6c7019f9bf909856d91",
                          "typeString": "literal_string \"This oracle does not support ids.\""
                        },
                        "value": "This oracle does not support ids."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ddc79917b943b3bdd694ba9b59b5ad8c4d987af4daf0c6c7019f9bf909856d91",
                          "typeString": "literal_string \"This oracle does not support ids.\""
                        }
                      ],
                      "id": 668,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "692:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "692:62:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 676,
                  "nodeType": "ExpressionStatement",
                  "src": "692:62:15"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 679,
                            "name": "id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 663,
                            "src": "780:2:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 678,
                          "name": "isResultSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 697,
                          "src": "768:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (bytes32) view returns (bool)"
                          }
                        },
                        "id": 680,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "768:15:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "54686520726573756c7420686173206e6f74206265656e207365742e",
                        "id": 681,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "785:30:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b4c2c41b307e538d03aa2610139cc2634e8b8010e8522370d1796162149980d0",
                          "typeString": "literal_string \"The result has not been set.\""
                        },
                        "value": "The result has not been set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b4c2c41b307e538d03aa2610139cc2634e8b8010e8522370d1796162149980d0",
                          "typeString": "literal_string \"The result has not been set.\""
                        }
                      ],
                      "id": 677,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "760:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 682,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "760:56:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 683,
                  "nodeType": "ExpressionStatement",
                  "src": "760:56:15"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 684,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 653,
                    "src": "829:6:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "functionReturnParameters": 667,
                  "id": 685,
                  "nodeType": "Return",
                  "src": "822:13:15"
                }
              ]
            },
            "documentation": "@dev Returns the result or reverts if it hasn't been set\n@param id This is not used in single-event oracles and should be 0\n@return The result or the oracle's single event",
            "id": 687,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "resultFor",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 664,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 663,
                  "name": "id",
                  "nodeType": "VariableDeclaration",
                  "scope": 687,
                  "src": "644:10:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 662,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "644:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "643:12:15"
            },
            "payable": false,
            "returnParameters": {
              "id": 667,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 666,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 687,
                  "src": "679:5:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 665,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "679:5:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "678:7:15"
            },
            "scope": 734,
            "src": "625:215:15",
            "stateMutability": "view",
            "superFunction": 265,
            "visibility": "external"
          },
          {
            "body": {
              "id": 696,
              "nodeType": "Block",
              "src": "1009:29:15",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 694,
                    "name": "resultIsSet",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 655,
                    "src": "1022:11:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 693,
                  "id": 695,
                  "nodeType": "Return",
                  "src": "1015:18:15"
                }
              ]
            },
            "documentation": "@dev Checks if the result has been set\n@return True if the result has been set",
            "id": 697,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isResultSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 690,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 689,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 697,
                  "src": "966:7:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 688,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "966:7:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "965:16:15"
            },
            "payable": false,
            "returnParameters": {
              "id": 693,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 692,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 697,
                  "src": "1003:4:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 691,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1003:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1002:6:15"
            },
            "scope": 734,
            "src": "945:93:15",
            "stateMutability": "view",
            "superFunction": 272,
            "visibility": "public"
          },
          {
            "body": {
              "id": 726,
              "nodeType": "Block",
              "src": "1303:179:15",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 704,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "1317:12:15",
                        "subExpression": {
                          "argumentTypes": null,
                          "id": 703,
                          "name": "resultIsSet",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 655,
                          "src": "1318:11:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "526573756c742068617320616c7265616479206265656e207365742e",
                        "id": 705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1331:30:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b45cc97293b5cb4545daeea8813842b2f461801b8453b43736b990d1f1eede33",
                          "typeString": "literal_string \"Result has already been set.\""
                        },
                        "value": "Result has already been set."
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b45cc97293b5cb4545daeea8813842b2f461801b8453b43736b990d1f1eede33",
                          "typeString": "literal_string \"Result has already been set.\""
                        }
                      ],
                      "id": 702,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        3259,
                        3260
                      ],
                      "referencedDeclaration": 3260,
                      "src": "1309:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 706,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1309:53:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 707,
                  "nodeType": "ExpressionStatement",
                  "src": "1309:53:15"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 710,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 708,
                      "name": "result",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 653,
                      "src": "1368:6:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 709,
                      "name": "_result",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 699,
                      "src": "1377:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "1368:16:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 711,
                  "nodeType": "ExpressionStatement",
                  "src": "1368:16:15"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 714,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 712,
                      "name": "resultIsSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 655,
                      "src": "1390:11:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 713,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1404:4:15",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "1390:18:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 715,
                  "nodeType": "ExpressionStatement",
                  "src": "1390:18:15"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 717,
                        "name": "_result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 699,
                        "src": "1429:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 718,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3256,
                          "src": "1438:3:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 719,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1438:10:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 716,
                      "name": "ResultSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 661,
                      "src": "1419:9:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (bytes memory,address)"
                      }
                    },
                    "id": 720,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1419:30:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 721,
                  "nodeType": "EmitStatement",
                  "src": "1414:35:15"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 723,
                        "name": "_result",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 699,
                        "src": "1469:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 722,
                      "name": "_resultWasSet",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 733,
                      "src": "1455:13:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory)"
                      }
                    },
                    "id": 724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1455:22:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 725,
                  "nodeType": "ExpressionStatement",
                  "src": "1455:22:15"
                }
              ]
            },
            "documentation": "@dev Set's the result, emits ResultSet, and calls the _resultWasSet()\noverridable function\n@param _result The result of the oracle's single event.",
            "id": 727,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_setResult",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 700,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 699,
                  "name": "_result",
                  "nodeType": "VariableDeclaration",
                  "scope": 727,
                  "src": "1279:13:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 698,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1279:5:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1278:15:15"
            },
            "payable": false,
            "returnParameters": {
              "id": 701,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1303:0:15"
            },
            "scope": 734,
            "src": "1259:223:15",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 732,
              "nodeType": "Block",
              "src": "1610:30:15",
              "statements": []
            },
            "documentation": "@dev Empty function meant to be overidden in subclasses",
            "id": 733,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "_resultWasSet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 730,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 729,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 733,
                  "src": "1582:5:15",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 728,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1582:5:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1581:19:15"
            },
            "payable": false,
            "returnParameters": {
              "id": 731,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1610:0:15"
            },
            "scope": 734,
            "src": "1559:81:15",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 735,
        "src": "265:1378:15"
      }
    ],
    "src": "0:1644:15"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-10-31T13:24:20.721Z"
}