{
  "contractName": "WitOracleRadonRequestFactoryBase",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "NewRadonReducer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "Witnet.RadonHash",
          "name": "radonHash",
          "type": "bytes32"
        }
      ],
      "name": "NewRadonRequest",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "witOracleRadonRequestModal",
          "type": "address"
        }
      ],
      "name": "NewRadonRequestModal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "witOracleRadonRequestTemplate",
          "type": "address"
        }
      ],
      "name": "NewRadonRequestTemplate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "hash",
          "type": "bytes32"
        }
      ],
      "name": "NewRadonRetrieval",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "class",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "specs",
      "outputs": [
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "witOracle",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "witOracleRadonRequestModalsBuilder",
      "outputs": [
        {
          "internalType": "contract WitOracleRadonRequestFactoryModals",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "witOracleRadonRequestTemplatesBuilder",
      "outputs": [
        {
          "internalType": "contract WitOracleRadonRequestFactoryTemplates",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum Witnet.RadonRetrievalMethods",
              "name": "method",
              "type": "uint8"
            },
            {
              "internalType": "string",
              "name": "body",
              "type": "string"
            },
            {
              "internalType": "string[2][]",
              "name": "headers",
              "type": "string[2][]"
            },
            {
              "internalType": "bytes",
              "name": "script",
              "type": "bytes"
            }
          ],
          "internalType": "struct IWitOracleRadonRequestFactory.DataSourceRequest",
          "name": "commonDataRequest",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "enum Witnet.RadonReduceOpcodes",
              "name": "opcode",
              "type": "uint8"
            },
            {
              "components": [
                {
                  "internalType": "enum Witnet.RadonFilterOpcodes",
                  "name": "opcode",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes",
                  "name": "cborArgs",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Witnet.RadonFilter[]",
              "name": "filters",
              "type": "tuple[]"
            }
          ],
          "internalType": "struct Witnet.RadonReducer",
          "name": "crowdAttestationTally",
          "type": "tuple"
        }
      ],
      "name": "buildRadonRequestModal",
      "outputs": [
        {
          "internalType": "contract IWitOracleRadonRequestModal",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "string",
              "name": "url",
              "type": "string"
            },
            {
              "components": [
                {
                  "internalType": "enum Witnet.RadonRetrievalMethods",
                  "name": "method",
                  "type": "uint8"
                },
                {
                  "internalType": "string",
                  "name": "body",
                  "type": "string"
                },
                {
                  "internalType": "string[2][]",
                  "name": "headers",
                  "type": "string[2][]"
                },
                {
                  "internalType": "bytes",
                  "name": "script",
                  "type": "bytes"
                }
              ],
              "internalType": "struct IWitOracleRadonRequestFactory.DataSourceRequest",
              "name": "request",
              "type": "tuple"
            }
          ],
          "internalType": "struct IWitOracleRadonRequestFactory.DataSource[]",
          "name": "dataSources",
          "type": "tuple[]"
        },
        {
          "components": [
            {
              "internalType": "enum Witnet.RadonReduceOpcodes",
              "name": "opcode",
              "type": "uint8"
            },
            {
              "components": [
                {
                  "internalType": "enum Witnet.RadonFilterOpcodes",
                  "name": "opcode",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes",
                  "name": "cborArgs",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Witnet.RadonFilter[]",
              "name": "filters",
              "type": "tuple[]"
            }
          ],
          "internalType": "struct Witnet.RadonReducer",
          "name": "dataSourcesAggregator",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "enum Witnet.RadonReduceOpcodes",
              "name": "opcode",
              "type": "uint8"
            },
            {
              "components": [
                {
                  "internalType": "enum Witnet.RadonFilterOpcodes",
                  "name": "opcode",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes",
                  "name": "cborArgs",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Witnet.RadonFilter[]",
              "name": "filters",
              "type": "tuple[]"
            }
          ],
          "internalType": "struct Witnet.RadonReducer",
          "name": "crowdAttestationTally",
          "type": "tuple"
        }
      ],
      "name": "buildRadonRequestTemplate",
      "outputs": [
        {
          "internalType": "contract IWitOracleRadonRequestTemplate",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "radonRetrieveHashes",
          "type": "bytes32[]"
        },
        {
          "components": [
            {
              "internalType": "enum Witnet.RadonReduceOpcodes",
              "name": "opcode",
              "type": "uint8"
            },
            {
              "components": [
                {
                  "internalType": "enum Witnet.RadonFilterOpcodes",
                  "name": "opcode",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes",
                  "name": "cborArgs",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Witnet.RadonFilter[]",
              "name": "filters",
              "type": "tuple[]"
            }
          ],
          "internalType": "struct Witnet.RadonReducer",
          "name": "dataSourcesAggregator",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "enum Witnet.RadonReduceOpcodes",
              "name": "opcode",
              "type": "uint8"
            },
            {
              "components": [
                {
                  "internalType": "enum Witnet.RadonFilterOpcodes",
                  "name": "opcode",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes",
                  "name": "cborArgs",
                  "type": "bytes"
                }
              ],
              "internalType": "struct Witnet.RadonFilter[]",
              "name": "filters",
              "type": "tuple[]"
            }
          ],
          "internalType": "struct Witnet.RadonReducer",
          "name": "crowdAttestationTally",
          "type": "tuple"
        }
      ],
      "name": "buildRadonRequestTemplate",
      "outputs": [
        {
          "internalType": "contract IWitOracleRadonRequestTemplate",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"NewRadonReducer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"Witnet.RadonHash\",\"name\":\"radonHash\",\"type\":\"bytes32\"}],\"name\":\"NewRadonRequest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"witOracleRadonRequestModal\",\"type\":\"address\"}],\"name\":\"NewRadonRequestModal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"witOracleRadonRequestTemplate\",\"type\":\"address\"}],\"name\":\"NewRadonRequestTemplate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"NewRadonRetrieval\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum Witnet.RadonRetrievalMethods\",\"name\":\"method\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"body\",\"type\":\"string\"},{\"internalType\":\"string[2][]\",\"name\":\"headers\",\"type\":\"string[2][]\"},{\"internalType\":\"bytes\",\"name\":\"script\",\"type\":\"bytes\"}],\"internalType\":\"struct IWitOracleRadonRequestFactory.DataSourceRequest\",\"name\":\"commonDataRequest\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Witnet.RadonReduceOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"enum Witnet.RadonFilterOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"cborArgs\",\"type\":\"bytes\"}],\"internalType\":\"struct Witnet.RadonFilter[]\",\"name\":\"filters\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Witnet.RadonReducer\",\"name\":\"crowdAttestationTally\",\"type\":\"tuple\"}],\"name\":\"buildRadonRequestModal\",\"outputs\":[{\"internalType\":\"contract IWitOracleRadonRequestModal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"enum Witnet.RadonRetrievalMethods\",\"name\":\"method\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"body\",\"type\":\"string\"},{\"internalType\":\"string[2][]\",\"name\":\"headers\",\"type\":\"string[2][]\"},{\"internalType\":\"bytes\",\"name\":\"script\",\"type\":\"bytes\"}],\"internalType\":\"struct IWitOracleRadonRequestFactory.DataSourceRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"internalType\":\"struct IWitOracleRadonRequestFactory.DataSource[]\",\"name\":\"dataSources\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum Witnet.RadonReduceOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"enum Witnet.RadonFilterOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"cborArgs\",\"type\":\"bytes\"}],\"internalType\":\"struct Witnet.RadonFilter[]\",\"name\":\"filters\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Witnet.RadonReducer\",\"name\":\"dataSourcesAggregator\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Witnet.RadonReduceOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"enum Witnet.RadonFilterOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"cborArgs\",\"type\":\"bytes\"}],\"internalType\":\"struct Witnet.RadonFilter[]\",\"name\":\"filters\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Witnet.RadonReducer\",\"name\":\"crowdAttestationTally\",\"type\":\"tuple\"}],\"name\":\"buildRadonRequestTemplate\",\"outputs\":[{\"internalType\":\"contract IWitOracleRadonRequestTemplate\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"radonRetrieveHashes\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"enum Witnet.RadonReduceOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"enum Witnet.RadonFilterOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"cborArgs\",\"type\":\"bytes\"}],\"internalType\":\"struct Witnet.RadonFilter[]\",\"name\":\"filters\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Witnet.RadonReducer\",\"name\":\"dataSourcesAggregator\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum Witnet.RadonReduceOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"enum Witnet.RadonFilterOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"cborArgs\",\"type\":\"bytes\"}],\"internalType\":\"struct Witnet.RadonFilter[]\",\"name\":\"filters\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Witnet.RadonReducer\",\"name\":\"crowdAttestationTally\",\"type\":\"tuple\"}],\"name\":\"buildRadonRequestTemplate\",\"outputs\":[{\"internalType\":\"contract IWitOracleRadonRequestTemplate\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"class\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"specs\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"witOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"witOracleRadonRequestModalsBuilder\",\"outputs\":[{\"internalType\":\"contract WitOracleRadonRequestFactoryModals\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"witOracleRadonRequestTemplatesBuilder\",\"outputs\":[{\"internalType\":\"contract WitOracleRadonRequestFactoryTemplates\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"events\":{\"NewRadonReducer(bytes32)\":{\"notice\":\"Emitted every time a new Radon Reducer gets successfully verified and stored into the WitOracleRadonRegistry.\"},\"NewRadonRequest(bytes32)\":{\"notice\":\"Emitted every time a new Radon Request gets successfully verified and stored into the WitOracleRadonRegistry.\"},\"NewRadonRetrieval(bytes32)\":{\"notice\":\"Emitted every time a new Radon Retrieval gets successfully verified and stored into the WitOracleRadonRegistry.\"}},\"kind\":\"user\",\"methods\":{\"buildRadonRequestModal((uint8,string,string[2][],bytes),(uint8,(uint8,bytes)[]))\":{\"notice\":\"=============================================================================================================== --- Implementation of IWitOracleRadonRequestFactory -----------------------------------------------------------\"},\"class()\":{\"notice\":\"Returns the name of the actual contract implementing the logic of this Witnet appliance.\"},\"specs()\":{\"notice\":\"Returns the ERC-165 id of the minimal functionality expected for this appliance.\"},\"witOracle()\":{\"notice\":\"Reference to the Witnet Request Board that all templates built out from this factory will refer to.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/base/WitOracleRadonRequestFactoryBase.sol\":\"WitOracleRadonRequestFactoryBase\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"project:/contracts/WitOracleRadonRequestFactory.sol\":{\"keccak256\":\"0x7aa7a7f61c2e5a61a050a3e1819e7eed11f9e8a09b15b157e1bc1b298b6118c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d75af90a732a14fb76cd043978e09bd1e53c378c54039b9e1c2f3fee5e071fd2\",\"dweb:/ipfs/QmSSDQxsi4CueiFnKHuCTHzscgt4TroRTBDYUBywPi8o3b\"]},\"project:/contracts/core/base/WitOracleRadonRequestFactoryBase.sol\":{\"keccak256\":\"0x1f8fce3e264fd5904b7c60c1523bf1df0a76c1a505c047db4929017854451011\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01f8cdfd35e21666fb46341e630616db85f2220194e3363895250863236f1b13\",\"dweb:/ipfs/QmTYEFRybqPsyQxkchsNktxBUbDDYsWyrurPXNkYeJUNCk\"]},\"project:/contracts/core/base/WitOracleRadonRequestFactoryModals.sol\":{\"keccak256\":\"0xd0f8e429111741babddd598e5aa390e8848c4e153272f43731719a2b8fbcde6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9dd0e2c180eb42840345fb0892c20f3ceb377cb0e53d92f4817d55993a2d0ab0\",\"dweb:/ipfs/QmYwqScKvMV1pGdoUFRG7kQG98fHZ5p5bQkaoQCFbwbxwf\"]},\"project:/contracts/core/base/WitOracleRadonRequestFactoryTemplates.sol\":{\"keccak256\":\"0xdfc8a2e736235013ed360e647654ddba7727e0ba8bfb9ab9e15290b1caedadb1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bfc613a66d495a183134f587ccc3bdf8f99bd6ea35d5ba9dbcb407946d04ee7\",\"dweb:/ipfs/QmV1STny9ttBdQXkXyyZq8uYwUgDDpKzAxddjSbjX4zBS9\"]},\"project:/contracts/interfaces/IWitAppliance.sol\":{\"keccak256\":\"0xd207ca54a1049445a3d99eea497d9b34c6dbdd44d771eee825e4c031bd2f447e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f81de32d868ff2881ed6fe97cc897e40b4b11d23cbe53a0e23cf3e68f9c0f0a3\",\"dweb:/ipfs/QmeeXmzmK5MAzt7Hf5DB2L81efKtTzZg9VbQ8sUiTqEk5c\"]},\"project:/contracts/interfaces/IWitOracle.sol\":{\"keccak256\":\"0x26cbe2074c0b3f545a46d95fad5e2280b67edcd958e4ae0b88f3a018aa11b805\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5324bac61f65e3edb01c88b9b75ca17affd593be88da5753a93b3f5304d3f479\",\"dweb:/ipfs/QmcVmNV6smbFiPaxvuN8ShkqbDZsT1wfjnF7f3qs6ke7QG\"]},\"project:/contracts/interfaces/IWitOracleAppliance.sol\":{\"keccak256\":\"0xcd8e57eca7f8042c85a83264e2ff6d1cd7a9f1521831736d7f57bcc7800642e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c639668e9439d60770b5df77436088ae7bd0aeb1d1be446552a98b6c29138f0\",\"dweb:/ipfs/QmbN3f5YuKMSd2j9tjay3VEkiYibGWpbfbwRNyrxA8k4o4\"]},\"project:/contracts/interfaces/IWitOracleRadonRegistry.sol\":{\"keccak256\":\"0x437bbb89129311bd1cc8f6becd333df46109ec53b24d3159be942b225614071f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef9bcdf4a73cb126885478c994821b7fe2b87d9221b767b4c9342b89b0d6550a\",\"dweb:/ipfs/QmXzZXPMxjSiFpcEnhg6CjLFNxGCpDZt22xpUh7VHxNTGd\"]},\"project:/contracts/interfaces/IWitOracleRadonRegistryEvents.sol\":{\"keccak256\":\"0x9bd30477aeb33de11c4f1df3cd7451452a90ffed1f6eabd9e643046bf1e60d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18fb38c5528ed2e1bf90ff8d123bf5a9523d0dc49f448d6c39ddad1cd9048d0a\",\"dweb:/ipfs/QmQq1RUwFgnGTk3xDAmN6u2WMPBzvjZNJc7TPYtG6aZfRn\"]},\"project:/contracts/interfaces/IWitOracleRadonRequestFactory.sol\":{\"keccak256\":\"0x4484204bd9cb0f054dfe5120409e9da5ff7e4eca03917e3c0c4cef9a322ee98a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ecd34db48b011fc94c5132ff6fead4ca36b45a464e2342b65692cc4001cde0bb\",\"dweb:/ipfs/QmNPG3hM7XpMN3iGvR7UhGiSS3Kz5qNmEZKUQRjSPggKax\"]},\"project:/contracts/interfaces/IWitOracleRadonRequestModal.sol\":{\"keccak256\":\"0x60b777e63700ed42d7e4b88c8e12db4b5220adb10d2ecc618c8c2a99a09eccee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b70b584cba3caa113e95aef31dbf5d5ae78042907c159e3ca25e3420d3b5b3f\",\"dweb:/ipfs/QmRThmU5vd8aVX2iK33pfmp6SKgfqgnC9VpT6Ruk1EwyVB\"]},\"project:/contracts/interfaces/IWitOracleRadonRequestTemplate.sol\":{\"keccak256\":\"0xb3f8ec0cbd9cde19348cfd5f51480fb1a0ffe479bf38043ec385f9b4ef1a53f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90fa841ff07d95c96d2c0d0423845a49280fbbf287d3b00b56dfda8c7c8ea15c\",\"dweb:/ipfs/QmfD7cP4V4kuFjeNdXC8tDyrEJCbTAHCenJ7sC7f6cfxvP\"]},\"project:/contracts/libs/Bech32.sol\":{\"keccak256\":\"0x14618323a0efe7586c20906a2e9cee7ad63baa976ff231c57f7f2d7d3707fb8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a19f05fe84047a7a6d3d6fc39972b432e6e536aa70472386a9d7a6d9aab64a64\",\"dweb:/ipfs/QmcHwUY66yjiotRH4Q3kbRvSzcHyLQ1yHL3KbtQKiMhtZE\"]},\"project:/contracts/libs/Secp256k1.sol\":{\"keccak256\":\"0xbe686002da5004ff39dd70709f3820eba2afe9323ae9cb894009c161e4b1a666\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18fab91775216de0707cea9ad285b10be09127461a13432fea358bf9cb2a0c2e\",\"dweb:/ipfs/QmeRUGsgstnM4hxM9hpkBf3L6cE5btirEaowcMxmuw3utj\"]},\"project:/contracts/libs/Witnet.sol\":{\"keccak256\":\"0x1d446c3e534e40e676d1763bfb2897fadfac8afed904ab757843d7d6770b0a6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://338fb1073f17d64e8d31bfe492d9475ce906788ee08e6489ce30413f91dc1328\",\"dweb:/ipfs/QmPe5QX2AGTnQFjse1Xttq4ZYWwYAiXoySb5VUui3PqPhk\"]},\"project:/contracts/libs/WitnetBuffer.sol\":{\"keccak256\":\"0x8e07aebe2954ab3e6f2d8eceedb12db7cf915c1f3e8630f4fa9999cecb1c78ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed6c54cc901183d61546e8fd15bd5ea8ef238ebc915642946071d435dd7481ea\",\"dweb:/ipfs/Qmcaqta7YjUSBbBUGqoh44bsCS6UqqoyHjBuz4qnKBShXM\"]},\"project:/contracts/libs/WitnetCBOR.sol\":{\"keccak256\":\"0xd99308373575cc10fb7f2ceb0f6a8625f3911275c1fa27811fae498d98d03d97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4909a999d7b660a2dc54ca957b6eccfa523e2765fc4d6a2574dee7d5cd67b43\",\"dweb:/ipfs/QmWGQT4KDcfSFe1hcHVoWx6E4PhYMaod5iLpJCWBEeShzh\"]},\"project:/contracts/patterns/Clonable.sol\":{\"keccak256\":\"0x9a2dbc814306f60263fe736b88aeabc44fc241d3bed132e8dd76a3684dd825f7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e665de5be06c9227c49f9466d24f798d4bed1a2db66d4d1368dcd9fc663c1b3a\",\"dweb:/ipfs/QmRjY2CHTGp1eyi9XPeTKr4WnPCzXbtk2285kdy2bJVCYA\"]},\"project:/contracts/patterns/Initializable.sol\":{\"keccak256\":\"0xaac470e87f361cf15d68d1618d6eb7d4913885d33ccc39c797841a9591d44296\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef3760b2039feda8715d4bd9f8de8e3885f25573d12ba92f52d626ba880a08bf\",\"dweb:/ipfs/QmP2mfHPBKkjTAKft95sPDb4PBsjfmAwc47Kdcv3xYSf3g\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.8.0 <0.9.0;\r\n\r\nimport \"../../WitOracleRadonRequestFactory.sol\";\r\n\r\nimport \"./WitOracleRadonRequestFactoryModals.sol\";\r\nimport \"./WitOracleRadonRequestFactoryTemplates.sol\";\r\n\r\nabstract contract WitOracleRadonRequestFactoryBase\r\n    is\r\n        WitOracleRadonRequestFactory\r\n{\r\n    using Witnet for Witnet.RadonHash;\r\n\r\n    /// @notice Reference to the Witnet Request Board that all templates built out from this factory will refer to.\r\n    address immutable public override witOracle;\r\n    \r\n    IWitOracleRadonRegistry immutable internal __witOracleRadonRegistry;\r\n    \r\n    WitOracleRadonRequestFactoryModals immutable public witOracleRadonRequestModalsBuilder;\r\n    WitOracleRadonRequestFactoryTemplates immutable public witOracleRadonRequestTemplatesBuilder;\r\n\r\n    constructor(\r\n            address _witOracleRadonRequestModalsBuilder,\r\n            address _witOracleRadonRequestTemplatesBuilder\r\n        )\r\n    {\r\n        witOracle = IWitOracleAppliance(_witOracleRadonRequestModalsBuilder).witOracle();\r\n        _require(\r\n            witOracle != address(0) \r\n                && witOracle.code.length > 0\r\n                && witOracle == IWitOracleAppliance(_witOracleRadonRequestTemplatesBuilder).witOracle(),\r\n            \"invalid builders\"\r\n        );\r\n        __witOracleRadonRegistry = IWitOracle(witOracle).registry();\r\n        witOracleRadonRequestModalsBuilder = WitOracleRadonRequestFactoryModals(_witOracleRadonRequestModalsBuilder);\r\n        witOracleRadonRequestTemplatesBuilder = WitOracleRadonRequestFactoryTemplates(_witOracleRadonRequestTemplatesBuilder);\r\n    }\r\n\r\n    /// ===============================================================================================================\r\n    /// --- Implementation of IWitOracleRadonRequestFactory -----------------------------------------------------------\r\n\r\n    function buildRadonRequestModal(\r\n            DataSourceRequest calldata commonDataRequest,\r\n            Witnet.RadonReducer memory crowdAttestationTally\r\n        )\r\n        virtual override\r\n        external \r\n        returns (IWitOracleRadonRequestModal)\r\n    {\r\n        bytes32 _commonRetrievalHash = __witOracleRadonRegistry.verifyRadonRetrieval(\r\n            commonDataRequest.method,\r\n            \"\",\r\n            commonDataRequest.body,\r\n            commonDataRequest.headers,\r\n            commonDataRequest.script\r\n        );\r\n        bytes15 _crowdAttestationTallyHash = bytes15(__witOracleRadonRegistry.verifyRadonReducer(\r\n            crowdAttestationTally\r\n        ));\r\n        address _modal = witOracleRadonRequestModalsBuilder.determineAddress(\r\n            _commonRetrievalHash,\r\n            _crowdAttestationTallyHash\r\n        );\r\n        if (_modal.code.length == 0) {\r\n            witOracleRadonRequestModalsBuilder.buildRadonRequestModal(\r\n                _commonRetrievalHash,\r\n                _crowdAttestationTallyHash\r\n            );\r\n            _checkCloneWasDeployed(_modal);\r\n            emit NewRadonRequestModal(_modal);\r\n        }\r\n        return IWitOracleRadonRequestModal(_modal);\r\n    }\r\n\r\n    function buildRadonRequestTemplate(\r\n            bytes32[] memory radonRetrieveHashes,\r\n            Witnet.RadonReducer memory dataSourcesAggregator,\r\n            Witnet.RadonReducer memory crowdAttestationTally\r\n        )\r\n        virtual override\r\n        public\r\n        returns (IWitOracleRadonRequestTemplate)\r\n    {\r\n        bytes15 _dataSourcesAggregatorHash = bytes15(__witOracleRadonRegistry.verifyRadonReducer(dataSourcesAggregator));\r\n        bytes15 _crowdAttestationTallyHash = bytes15(__witOracleRadonRegistry.verifyRadonReducer(crowdAttestationTally));\r\n        address _template = witOracleRadonRequestTemplatesBuilder.determineAddress(\r\n            radonRetrieveHashes,\r\n            _dataSourcesAggregatorHash,\r\n            _crowdAttestationTallyHash\r\n        );\r\n        if (_template.code.length == 0) {\r\n            witOracleRadonRequestTemplatesBuilder.buildRadonRequestTemplate(\r\n                radonRetrieveHashes,\r\n                _dataSourcesAggregatorHash,\r\n                _crowdAttestationTallyHash\r\n            );\r\n            _checkCloneWasDeployed(_template);\r\n            emit NewRadonRequestTemplate(_template);\r\n        }\r\n        return IWitOracleRadonRequestTemplate(_template);\r\n    }\r\n\r\n    function buildRadonRequestTemplate(\r\n            DataSource[] calldata dataSources,\r\n            Witnet.RadonReducer calldata dataSourcesAggregator,\r\n            Witnet.RadonReducer calldata crowdAttestationTally\r\n        )\r\n        virtual override\r\n        external \r\n        returns (IWitOracleRadonRequestTemplate)\r\n    {\r\n        bytes32[] memory _radonRetrieveHashes = new bytes32[](dataSources.length);\r\n        for (uint _ix; _ix < dataSources.length; ++ _ix) {\r\n            DataSourceRequest memory _request = dataSources[_ix].request;\r\n            _radonRetrieveHashes[_ix] = __witOracleRadonRegistry.verifyRadonRetrieval(\r\n                _request.method,\r\n                dataSources[_ix].url,\r\n                _request.body,\r\n                _request.headers,\r\n                _request.script\r\n            );\r\n        }\r\n        return buildRadonRequestTemplate(\r\n            _radonRetrieveHashes,\r\n            dataSourcesAggregator,\r\n            crowdAttestationTally\r\n        );\r\n    }\r\n\r\n\r\n    /// ===============================================================================================================\r\n    /// --- Internal virtual methods ----------------------------------------------------------------------------------\r\n\r\n    function _checkCloneWasDeployed(address _clone) virtual internal view {\r\n        _require(\r\n            _clone.code.length > 0,\r\n            \"cannot clone\"\r\n        );\r\n    }\r\n}\r\n",
  "sourcePath": "C:\\Users\\guill\\github\\guidiaz\\witnet-solidity-bridge\\contracts\\core\\base\\WitOracleRadonRequestFactoryBase.sol",
  "ast": {
    "absolutePath": "project:/contracts/core/base/WitOracleRadonRequestFactoryBase.sol",
    "exportedSymbols": {
      "Bech32": [
        31372
      ],
      "Clonable": [
        45518
      ],
      "IWitAppliance": [
        26514
      ],
      "IWitOracle": [
        26581
      ],
      "IWitOracleAppliance": [
        26593
      ],
      "IWitOracleRadonRegistry": [
        27394
      ],
      "IWitOracleRadonRegistryEvents": [
        27414
      ],
      "IWitOracleRadonRequestFactory": [
        27489
      ],
      "IWitOracleRadonRequestModal": [
        27541
      ],
      "IWitOracleRadonRequestTemplate": [
        27592
      ],
      "Initializable": [
        267
      ],
      "Secp256k1": [
        32535
      ],
      "WitOracleRadonRequestFactory": [
        751
      ],
      "WitOracleRadonRequestFactoryBase": [
        15679
      ],
      "WitOracleRadonRequestFactoryModals": [
        16188
      ],
      "WitOracleRadonRequestFactoryTemplates": [
        16677
      ],
      "Witnet": [
        40741
      ],
      "WitnetBuffer": [
        42631
      ],
      "WitnetCBOR": [
        44174
      ]
    },
    "id": 15680,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 15357,
        "literals": [
          "solidity",
          ">=",
          "0.8",
          ".0",
          "<",
          "0.9",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "35:31:37"
      },
      {
        "absolutePath": "project:/contracts/WitOracleRadonRequestFactory.sol",
        "file": "../../WitOracleRadonRequestFactory.sol",
        "id": 15358,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 15680,
        "sourceUnit": 752,
        "src": "70:48:37",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/core/base/WitOracleRadonRequestFactoryModals.sol",
        "file": "./WitOracleRadonRequestFactoryModals.sol",
        "id": 15359,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 15680,
        "sourceUnit": 16189,
        "src": "122:50:37",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/core/base/WitOracleRadonRequestFactoryTemplates.sol",
        "file": "./WitOracleRadonRequestFactoryTemplates.sol",
        "id": 15360,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 15680,
        "sourceUnit": 16678,
        "src": "174:53:37",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": true,
        "baseContracts": [
          {
            "baseName": {
              "id": 15361,
              "name": "WitOracleRadonRequestFactory",
              "nameLocations": [
                "299:28:37"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 751,
              "src": "299:28:37"
            },
            "id": 15362,
            "nodeType": "InheritanceSpecifier",
            "src": "299:28:37"
          }
        ],
        "canonicalName": "WitOracleRadonRequestFactoryBase",
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": false,
        "id": 15679,
        "linearizedBaseContracts": [
          15679,
          751,
          27489,
          27414,
          26593,
          26514
        ],
        "name": "WitOracleRadonRequestFactoryBase",
        "nameLocation": "249:32:37",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "global": false,
            "id": 15366,
            "libraryName": {
              "id": 15363,
              "name": "Witnet",
              "nameLocations": [
                "342:6:37"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 40741,
              "src": "342:6:37"
            },
            "nodeType": "UsingForDirective",
            "src": "336:34:37",
            "typeName": {
              "id": 15365,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 15364,
                "name": "Witnet.RadonHash",
                "nameLocations": [
                  "353:6:37",
                  "360:9:37"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 37153,
                "src": "353:16:37"
              },
              "referencedDeclaration": 37153,
              "src": "353:16:37",
              "typeDescriptions": {
                "typeIdentifier": "t_userDefinedValueType$_RadonHash_$37153",
                "typeString": "Witnet.RadonHash"
              }
            }
          },
          {
            "baseFunctions": [
              26592
            ],
            "constant": false,
            "documentation": {
              "id": 15367,
              "nodeType": "StructuredDocumentation",
              "src": "378:111:37",
              "text": "@notice Reference to the Witnet Request Board that all templates built out from this factory will refer to."
            },
            "functionSelector": "1014d375",
            "id": 15370,
            "mutability": "immutable",
            "name": "witOracle",
            "nameLocation": "529:9:37",
            "nodeType": "VariableDeclaration",
            "overrides": {
              "id": 15369,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "520:8:37"
            },
            "scope": 15679,
            "src": "495:43:37",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 15368,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "495:7:37",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 15373,
            "mutability": "immutable",
            "name": "__witOracleRadonRegistry",
            "nameLocation": "594:24:37",
            "nodeType": "VariableDeclaration",
            "scope": 15679,
            "src": "551:67:37",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
              "typeString": "contract IWitOracleRadonRegistry"
            },
            "typeName": {
              "id": 15372,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 15371,
                "name": "IWitOracleRadonRegistry",
                "nameLocations": [
                  "551:23:37"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 27394,
                "src": "551:23:37"
              },
              "referencedDeclaration": 27394,
              "src": "551:23:37",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                "typeString": "contract IWitOracleRadonRegistry"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "functionSelector": "52fdb7cf",
            "id": 15376,
            "mutability": "immutable",
            "name": "witOracleRadonRequestModalsBuilder",
            "nameLocation": "683:34:37",
            "nodeType": "VariableDeclaration",
            "scope": 15679,
            "src": "631:86:37",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_WitOracleRadonRequestFactoryModals_$16188",
              "typeString": "contract WitOracleRadonRequestFactoryModals"
            },
            "typeName": {
              "id": 15375,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 15374,
                "name": "WitOracleRadonRequestFactoryModals",
                "nameLocations": [
                  "631:34:37"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 16188,
                "src": "631:34:37"
              },
              "referencedDeclaration": 16188,
              "src": "631:34:37",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_WitOracleRadonRequestFactoryModals_$16188",
                "typeString": "contract WitOracleRadonRequestFactoryModals"
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "6f00eef9",
            "id": 15379,
            "mutability": "immutable",
            "name": "witOracleRadonRequestTemplatesBuilder",
            "nameLocation": "779:37:37",
            "nodeType": "VariableDeclaration",
            "scope": 15679,
            "src": "724:92:37",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_WitOracleRadonRequestFactoryTemplates_$16677",
              "typeString": "contract WitOracleRadonRequestFactoryTemplates"
            },
            "typeName": {
              "id": 15378,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 15377,
                "name": "WitOracleRadonRequestFactoryTemplates",
                "nameLocations": [
                  "724:37:37"
                ],
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 16677,
                "src": "724:37:37"
              },
              "referencedDeclaration": 16677,
              "src": "724:37:37",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_WitOracleRadonRequestFactoryTemplates_$16677",
                "typeString": "contract WitOracleRadonRequestFactoryTemplates"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 15438,
              "nodeType": "Block",
              "src": "972:669:37",
              "statements": [
                {
                  "expression": {
                    "id": 15392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15386,
                      "name": "witOracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15370,
                      "src": "983:9:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "arguments": [
                            {
                              "id": 15388,
                              "name": "_witOracleRadonRequestModalsBuilder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15381,
                              "src": "1015:35:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15387,
                            "name": "IWitOracleAppliance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26593,
                            "src": "995:19:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IWitOracleAppliance_$26593_$",
                              "typeString": "type(contract IWitOracleAppliance)"
                            }
                          },
                          "id": 15389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "995:56:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWitOracleAppliance_$26593",
                            "typeString": "contract IWitOracleAppliance"
                          }
                        },
                        "id": 15390,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1052:9:37",
                        "memberName": "witOracle",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 26592,
                        "src": "995:66:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                          "typeString": "function () view external returns (address)"
                        }
                      },
                      "id": 15391,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "995:68:37",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "983:80:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 15393,
                  "nodeType": "ExpressionStatement",
                  "src": "983:80:37"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 15414,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 15400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15395,
                              "name": "witOracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15370,
                              "src": "1097:9:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 15398,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1118:1:37",
                                  "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": 15397,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1110:7:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 15396,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1110:7:37",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15399,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1110:10:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1097:23:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 15405,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "expression": {
                                  "id": 15401,
                                  "name": "witOracle",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15370,
                                  "src": "1142:9:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 15402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1152:4:37",
                                "memberName": "code",
                                "nodeType": "MemberAccess",
                                "src": "1142:14:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 15403,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1157:6:37",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "1142:21:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 15404,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1166:1:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1142:25:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1097:70:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 15413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 15407,
                            "name": "witOracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15370,
                            "src": "1188:9:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 15409,
                                    "name": "_witOracleRadonRequestTemplatesBuilder",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15383,
                                    "src": "1221:38:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 15408,
                                  "name": "IWitOracleAppliance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26593,
                                  "src": "1201:19:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWitOracleAppliance_$26593_$",
                                    "typeString": "type(contract IWitOracleAppliance)"
                                  }
                                },
                                "id": 15410,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1201:59:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWitOracleAppliance_$26593",
                                  "typeString": "contract IWitOracleAppliance"
                                }
                              },
                              "id": 15411,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "1261:9:37",
                              "memberName": "witOracle",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 26592,
                              "src": "1201:69:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                "typeString": "function () view external returns (address)"
                              }
                            },
                            "id": 15412,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1201:71:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1188:84:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1097:175:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "696e76616c6964206275696c64657273",
                        "id": 15415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1287:18:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_09b7ecc0df880d309aecd0a2af8d4f25c923646cb6828b4cc6b990bdcd2a19ff",
                          "typeString": "literal_string \"invalid builders\""
                        },
                        "value": "invalid builders"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_09b7ecc0df880d309aecd0a2af8d4f25c923646cb6828b4cc6b990bdcd2a19ff",
                          "typeString": "literal_string \"invalid builders\""
                        }
                      ],
                      "id": 15394,
                      "name": "_require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26494,
                      "src": "1074:8:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) view"
                      }
                    },
                    "id": 15416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1074:242:37",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15417,
                  "nodeType": "ExpressionStatement",
                  "src": "1074:242:37"
                },
                {
                  "expression": {
                    "id": 15424,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15418,
                      "name": "__witOracleRadonRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15373,
                      "src": "1327:24:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                        "typeString": "contract IWitOracleRadonRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "arguments": [
                            {
                              "id": 15420,
                              "name": "witOracle",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15370,
                              "src": "1365:9:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15419,
                            "name": "IWitOracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26581,
                            "src": "1354:10:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IWitOracle_$26581_$",
                              "typeString": "type(contract IWitOracle)"
                            }
                          },
                          "id": 15421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1354:21:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWitOracle_$26581",
                            "typeString": "contract IWitOracle"
                          }
                        },
                        "id": 15422,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1376:8:37",
                        "memberName": "registry",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 26580,
                        "src": "1354:30:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IWitOracleRadonRegistry_$27394_$",
                          "typeString": "function () view external returns (contract IWitOracleRadonRegistry)"
                        }
                      },
                      "id": 15423,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1354:32:37",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                        "typeString": "contract IWitOracleRadonRegistry"
                      }
                    },
                    "src": "1327:59:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                      "typeString": "contract IWitOracleRadonRegistry"
                    }
                  },
                  "id": 15425,
                  "nodeType": "ExpressionStatement",
                  "src": "1327:59:37"
                },
                {
                  "expression": {
                    "id": 15430,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15426,
                      "name": "witOracleRadonRequestModalsBuilder",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15376,
                      "src": "1397:34:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_WitOracleRadonRequestFactoryModals_$16188",
                        "typeString": "contract WitOracleRadonRequestFactoryModals"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 15428,
                          "name": "_witOracleRadonRequestModalsBuilder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15381,
                          "src": "1469:35:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 15427,
                        "name": "WitOracleRadonRequestFactoryModals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16188,
                        "src": "1434:34:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_WitOracleRadonRequestFactoryModals_$16188_$",
                          "typeString": "type(contract WitOracleRadonRequestFactoryModals)"
                        }
                      },
                      "id": 15429,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1434:71:37",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_WitOracleRadonRequestFactoryModals_$16188",
                        "typeString": "contract WitOracleRadonRequestFactoryModals"
                      }
                    },
                    "src": "1397:108:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WitOracleRadonRequestFactoryModals_$16188",
                      "typeString": "contract WitOracleRadonRequestFactoryModals"
                    }
                  },
                  "id": 15431,
                  "nodeType": "ExpressionStatement",
                  "src": "1397:108:37"
                },
                {
                  "expression": {
                    "id": 15436,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 15432,
                      "name": "witOracleRadonRequestTemplatesBuilder",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15379,
                      "src": "1516:37:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_WitOracleRadonRequestFactoryTemplates_$16677",
                        "typeString": "contract WitOracleRadonRequestFactoryTemplates"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 15434,
                          "name": "_witOracleRadonRequestTemplatesBuilder",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15383,
                          "src": "1594:38:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 15433,
                        "name": "WitOracleRadonRequestFactoryTemplates",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16677,
                        "src": "1556:37:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_WitOracleRadonRequestFactoryTemplates_$16677_$",
                          "typeString": "type(contract WitOracleRadonRequestFactoryTemplates)"
                        }
                      },
                      "id": 15435,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1556:77:37",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_WitOracleRadonRequestFactoryTemplates_$16677",
                        "typeString": "contract WitOracleRadonRequestFactoryTemplates"
                      }
                    },
                    "src": "1516:117:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WitOracleRadonRequestFactoryTemplates_$16677",
                      "typeString": "contract WitOracleRadonRequestFactoryTemplates"
                    }
                  },
                  "id": 15437,
                  "nodeType": "ExpressionStatement",
                  "src": "1516:117:37"
                }
              ]
            },
            "id": 15439,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15384,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15381,
                  "mutability": "mutable",
                  "name": "_witOracleRadonRequestModalsBuilder",
                  "nameLocation": "859:35:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 15439,
                  "src": "851:43:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15380,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "851:7:37",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15383,
                  "mutability": "mutable",
                  "name": "_witOracleRadonRequestTemplatesBuilder",
                  "nameLocation": "917:38:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 15439,
                  "src": "909:46:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15382,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "909:7:37",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "836:130:37"
            },
            "returnParameters": {
              "id": 15385,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "972:0:37"
            },
            "scope": 15679,
            "src": "825:816:37",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              27457
            ],
            "body": {
              "id": 15512,
              "nodeType": "Block",
              "src": "2155:959:37",
              "statements": [
                {
                  "assignments": [
                    15454
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15454,
                      "mutability": "mutable",
                      "name": "_commonRetrievalHash",
                      "nameLocation": "2174:20:37",
                      "nodeType": "VariableDeclaration",
                      "scope": 15512,
                      "src": "2166:28:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 15453,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2166:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15467,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 15457,
                          "name": "commonDataRequest",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15443,
                          "src": "2257:17:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DataSourceRequest_$27445_calldata_ptr",
                            "typeString": "struct IWitOracleRadonRequestFactory.DataSourceRequest calldata"
                          }
                        },
                        "id": 15458,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2275:6:37",
                        "memberName": "method",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 27435,
                        "src": "2257:24:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_RadonRetrievalMethods_$37802",
                          "typeString": "enum Witnet.RadonRetrievalMethods"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 15459,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2296:2:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      },
                      {
                        "expression": {
                          "id": 15460,
                          "name": "commonDataRequest",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15443,
                          "src": "2313:17:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DataSourceRequest_$27445_calldata_ptr",
                            "typeString": "struct IWitOracleRadonRequestFactory.DataSourceRequest calldata"
                          }
                        },
                        "id": 15461,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2331:4:37",
                        "memberName": "body",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 27437,
                        "src": "2313:22:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        }
                      },
                      {
                        "expression": {
                          "id": 15462,
                          "name": "commonDataRequest",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15443,
                          "src": "2350:17:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DataSourceRequest_$27445_calldata_ptr",
                            "typeString": "struct IWitOracleRadonRequestFactory.DataSourceRequest calldata"
                          }
                        },
                        "id": 15463,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2368:7:37",
                        "memberName": "headers",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 27442,
                        "src": "2350:25:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_array$_t_string_calldata_ptr_$2_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string calldata[2] calldata[] calldata"
                        }
                      },
                      {
                        "expression": {
                          "id": 15464,
                          "name": "commonDataRequest",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15443,
                          "src": "2390:17:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DataSourceRequest_$27445_calldata_ptr",
                            "typeString": "struct IWitOracleRadonRequestFactory.DataSourceRequest calldata"
                          }
                        },
                        "id": 15465,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2408:6:37",
                        "memberName": "script",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 27444,
                        "src": "2390:24:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_enum$_RadonRetrievalMethods_$37802",
                          "typeString": "enum Witnet.RadonRetrievalMethods"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        {
                          "typeIdentifier": "t_string_calldata_ptr",
                          "typeString": "string calldata"
                        },
                        {
                          "typeIdentifier": "t_array$_t_array$_t_string_calldata_ptr_$2_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "string calldata[2] calldata[] calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "expression": {
                        "id": 15455,
                        "name": "__witOracleRadonRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15373,
                        "src": "2197:24:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                          "typeString": "contract IWitOracleRadonRegistry"
                        }
                      },
                      "id": 15456,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2222:20:37",
                      "memberName": "verifyRadonRetrieval",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27393,
                      "src": "2197:45:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_enum$_RadonRetrievalMethods_$37802_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_array$_t_array$_t_string_memory_ptr_$2_memory_ptr_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (enum Witnet.RadonRetrievalMethods,string memory,string memory,string memory[2] memory[] memory,bytes memory) external returns (bytes32)"
                      }
                    },
                    "id": 15466,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2197:228:37",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2166:259:37"
                },
                {
                  "assignments": [
                    15469
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15469,
                      "mutability": "mutable",
                      "name": "_crowdAttestationTallyHash",
                      "nameLocation": "2444:26:37",
                      "nodeType": "VariableDeclaration",
                      "scope": 15512,
                      "src": "2436:34:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes15",
                        "typeString": "bytes15"
                      },
                      "typeName": {
                        "id": 15468,
                        "name": "bytes15",
                        "nodeType": "ElementaryTypeName",
                        "src": "2436:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes15",
                          "typeString": "bytes15"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15477,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 15474,
                            "name": "crowdAttestationTally",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15446,
                            "src": "2539:21:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RadonReducer_$37748_memory_ptr",
                              "typeString": "struct Witnet.RadonReducer memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_RadonReducer_$37748_memory_ptr",
                              "typeString": "struct Witnet.RadonReducer memory"
                            }
                          ],
                          "expression": {
                            "id": 15472,
                            "name": "__witOracleRadonRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15373,
                            "src": "2481:24:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                              "typeString": "contract IWitOracleRadonRegistry"
                            }
                          },
                          "id": 15473,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "2506:18:37",
                          "memberName": "verifyRadonReducer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 27287,
                          "src": "2481:43:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_struct$_RadonReducer_$37748_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (struct Witnet.RadonReducer memory) external returns (bytes32)"
                          }
                        },
                        "id": 15475,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2481:90:37",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 15471,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "2473:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes15_$",
                        "typeString": "type(bytes15)"
                      },
                      "typeName": {
                        "id": 15470,
                        "name": "bytes15",
                        "nodeType": "ElementaryTypeName",
                        "src": "2473:7:37",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 15476,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2473:99:37",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes15",
                      "typeString": "bytes15"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2436:136:37"
                },
                {
                  "assignments": [
                    15479
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15479,
                      "mutability": "mutable",
                      "name": "_modal",
                      "nameLocation": "2591:6:37",
                      "nodeType": "VariableDeclaration",
                      "scope": 15512,
                      "src": "2583:14:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 15478,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2583:7:37",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15485,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 15482,
                        "name": "_commonRetrievalHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15454,
                        "src": "2666:20:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 15483,
                        "name": "_crowdAttestationTallyHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15469,
                        "src": "2701:26:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes15",
                          "typeString": "bytes15"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes15",
                          "typeString": "bytes15"
                        }
                      ],
                      "expression": {
                        "id": 15480,
                        "name": "witOracleRadonRequestModalsBuilder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15376,
                        "src": "2600:34:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_WitOracleRadonRequestFactoryModals_$16188",
                          "typeString": "contract WitOracleRadonRequestFactoryModals"
                        }
                      },
                      "id": 15481,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2635:16:37",
                      "memberName": "determineAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15925,
                      "src": "2600:51:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes15_$returns$_t_address_$",
                        "typeString": "function (bytes32,bytes15) view external returns (address)"
                      }
                    },
                    "id": 15484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2600:138:37",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2583:155:37"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 15490,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "expression": {
                          "id": 15486,
                          "name": "_modal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15479,
                          "src": "2753:6:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 15487,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2760:4:37",
                        "memberName": "code",
                        "nodeType": "MemberAccess",
                        "src": "2753:11:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 15488,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2765:6:37",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "2753:18:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 15489,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2775:1:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2753:23:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15507,
                  "nodeType": "IfStatement",
                  "src": "2749:305:37",
                  "trueBody": {
                    "id": 15506,
                    "nodeType": "Block",
                    "src": "2778:276:37",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 15494,
                              "name": "_commonRetrievalHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15454,
                              "src": "2869:20:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 15495,
                              "name": "_crowdAttestationTallyHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15469,
                              "src": "2908:26:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes15",
                                "typeString": "bytes15"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes15",
                                "typeString": "bytes15"
                              }
                            ],
                            "expression": {
                              "id": 15491,
                              "name": "witOracleRadonRequestModalsBuilder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15376,
                              "src": "2793:34:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_WitOracleRadonRequestFactoryModals_$16188",
                                "typeString": "contract WitOracleRadonRequestFactoryModals"
                              }
                            },
                            "id": 15493,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2828:22:37",
                            "memberName": "buildRadonRequestModal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15882,
                            "src": "2793:57:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes15_$returns$_t_contract$_IWitOracleRadonRequestModal_$27541_$",
                              "typeString": "function (bytes32,bytes15) external returns (contract IWitOracleRadonRequestModal)"
                            }
                          },
                          "id": 15496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2793:156:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWitOracleRadonRequestModal_$27541",
                            "typeString": "contract IWitOracleRadonRequestModal"
                          }
                        },
                        "id": 15497,
                        "nodeType": "ExpressionStatement",
                        "src": "2793:156:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 15499,
                              "name": "_modal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15479,
                              "src": "2987:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15498,
                            "name": "_checkCloneWasDeployed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15678,
                            "src": "2964:22:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 15500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2964:30:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15501,
                        "nodeType": "ExpressionStatement",
                        "src": "2964:30:37"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 15503,
                              "name": "_modal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15479,
                              "src": "3035:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15502,
                            "name": "NewRadonRequestModal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27422,
                            "src": "3014:20:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 15504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3014:28:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15505,
                        "nodeType": "EmitStatement",
                        "src": "3009:33:37"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15509,
                        "name": "_modal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15479,
                        "src": "3099:6:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 15508,
                      "name": "IWitOracleRadonRequestModal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27541,
                      "src": "3071:27:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IWitOracleRadonRequestModal_$27541_$",
                        "typeString": "type(contract IWitOracleRadonRequestModal)"
                      }
                    },
                    "id": 15510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3071:35:37",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWitOracleRadonRequestModal_$27541",
                      "typeString": "contract IWitOracleRadonRequestModal"
                    }
                  },
                  "functionReturnParameters": 15452,
                  "id": 15511,
                  "nodeType": "Return",
                  "src": "3064:42:37"
                }
              ]
            },
            "documentation": {
              "id": 15440,
              "nodeType": "StructuredDocumentation",
              "src": "1649:238:37",
              "text": "===============================================================================================================\n --- Implementation of IWitOracleRadonRequestFactory -----------------------------------------------------------"
            },
            "functionSelector": "c96e201f",
            "id": 15513,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "buildRadonRequestModal",
            "nameLocation": "1902:22:37",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 15448,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2075:8:37"
            },
            "parameters": {
              "id": 15447,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15443,
                  "mutability": "mutable",
                  "name": "commonDataRequest",
                  "nameLocation": "1966:17:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 15513,
                  "src": "1939:44:37",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_DataSourceRequest_$27445_calldata_ptr",
                    "typeString": "struct IWitOracleRadonRequestFactory.DataSourceRequest"
                  },
                  "typeName": {
                    "id": 15442,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 15441,
                      "name": "DataSourceRequest",
                      "nameLocations": [
                        "1939:17:37"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 27445,
                      "src": "1939:17:37"
                    },
                    "referencedDeclaration": 27445,
                    "src": "1939:17:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DataSourceRequest_$27445_storage_ptr",
                      "typeString": "struct IWitOracleRadonRequestFactory.DataSourceRequest"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15446,
                  "mutability": "mutable",
                  "name": "crowdAttestationTally",
                  "nameLocation": "2025:21:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 15513,
                  "src": "1998:48:37",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RadonReducer_$37748_memory_ptr",
                    "typeString": "struct Witnet.RadonReducer"
                  },
                  "typeName": {
                    "id": 15445,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 15444,
                      "name": "Witnet.RadonReducer",
                      "nameLocations": [
                        "1998:6:37",
                        "2005:12:37"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 37748,
                      "src": "1998:19:37"
                    },
                    "referencedDeclaration": 37748,
                    "src": "1998:19:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RadonReducer_$37748_storage_ptr",
                      "typeString": "struct Witnet.RadonReducer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1924:133:37"
            },
            "returnParameters": {
              "id": 15452,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15451,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15513,
                  "src": "2121:27:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IWitOracleRadonRequestModal_$27541",
                    "typeString": "contract IWitOracleRadonRequestModal"
                  },
                  "typeName": {
                    "id": 15450,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 15449,
                      "name": "IWitOracleRadonRequestModal",
                      "nameLocations": [
                        "2121:27:37"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 27541,
                      "src": "2121:27:37"
                    },
                    "referencedDeclaration": 27541,
                    "src": "2121:27:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWitOracleRadonRequestModal_$27541",
                      "typeString": "contract IWitOracleRadonRequestModal"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2120:29:37"
            },
            "scope": 15679,
            "src": "1893:1221:37",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              27472
            ],
            "body": {
              "id": 15585,
              "nodeType": "Block",
              "src": "3442:902:37",
              "statements": [
                {
                  "assignments": [
                    15530
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15530,
                      "mutability": "mutable",
                      "name": "_dataSourcesAggregatorHash",
                      "nameLocation": "3461:26:37",
                      "nodeType": "VariableDeclaration",
                      "scope": 15585,
                      "src": "3453:34:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes15",
                        "typeString": "bytes15"
                      },
                      "typeName": {
                        "id": 15529,
                        "name": "bytes15",
                        "nodeType": "ElementaryTypeName",
                        "src": "3453:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes15",
                          "typeString": "bytes15"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15538,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 15535,
                            "name": "dataSourcesAggregator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15519,
                            "src": "3542:21:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RadonReducer_$37748_memory_ptr",
                              "typeString": "struct Witnet.RadonReducer memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_RadonReducer_$37748_memory_ptr",
                              "typeString": "struct Witnet.RadonReducer memory"
                            }
                          ],
                          "expression": {
                            "id": 15533,
                            "name": "__witOracleRadonRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15373,
                            "src": "3498:24:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                              "typeString": "contract IWitOracleRadonRegistry"
                            }
                          },
                          "id": 15534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "3523:18:37",
                          "memberName": "verifyRadonReducer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 27287,
                          "src": "3498:43:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_struct$_RadonReducer_$37748_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (struct Witnet.RadonReducer memory) external returns (bytes32)"
                          }
                        },
                        "id": 15536,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3498:66:37",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 15532,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3490:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes15_$",
                        "typeString": "type(bytes15)"
                      },
                      "typeName": {
                        "id": 15531,
                        "name": "bytes15",
                        "nodeType": "ElementaryTypeName",
                        "src": "3490:7:37",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 15537,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3490:75:37",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes15",
                      "typeString": "bytes15"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3453:112:37"
                },
                {
                  "assignments": [
                    15540
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15540,
                      "mutability": "mutable",
                      "name": "_crowdAttestationTallyHash",
                      "nameLocation": "3584:26:37",
                      "nodeType": "VariableDeclaration",
                      "scope": 15585,
                      "src": "3576:34:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes15",
                        "typeString": "bytes15"
                      },
                      "typeName": {
                        "id": 15539,
                        "name": "bytes15",
                        "nodeType": "ElementaryTypeName",
                        "src": "3576:7:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes15",
                          "typeString": "bytes15"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15548,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 15545,
                            "name": "crowdAttestationTally",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15522,
                            "src": "3665:21:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_RadonReducer_$37748_memory_ptr",
                              "typeString": "struct Witnet.RadonReducer memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_RadonReducer_$37748_memory_ptr",
                              "typeString": "struct Witnet.RadonReducer memory"
                            }
                          ],
                          "expression": {
                            "id": 15543,
                            "name": "__witOracleRadonRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15373,
                            "src": "3621:24:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                              "typeString": "contract IWitOracleRadonRegistry"
                            }
                          },
                          "id": 15544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "3646:18:37",
                          "memberName": "verifyRadonReducer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 27287,
                          "src": "3621:43:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_struct$_RadonReducer_$37748_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (struct Witnet.RadonReducer memory) external returns (bytes32)"
                          }
                        },
                        "id": 15546,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3621:66:37",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 15542,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3613:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes15_$",
                        "typeString": "type(bytes15)"
                      },
                      "typeName": {
                        "id": 15541,
                        "name": "bytes15",
                        "nodeType": "ElementaryTypeName",
                        "src": "3613:7:37",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 15547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3613:75:37",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes15",
                      "typeString": "bytes15"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3576:112:37"
                },
                {
                  "assignments": [
                    15550
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15550,
                      "mutability": "mutable",
                      "name": "_template",
                      "nameLocation": "3707:9:37",
                      "nodeType": "VariableDeclaration",
                      "scope": 15585,
                      "src": "3699:17:37",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 15549,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3699:7:37",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15557,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 15553,
                        "name": "radonRetrieveHashes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15516,
                        "src": "3788:19:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      {
                        "id": 15554,
                        "name": "_dataSourcesAggregatorHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15530,
                        "src": "3822:26:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes15",
                          "typeString": "bytes15"
                        }
                      },
                      {
                        "id": 15555,
                        "name": "_crowdAttestationTallyHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15540,
                        "src": "3863:26:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes15",
                          "typeString": "bytes15"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        },
                        {
                          "typeIdentifier": "t_bytes15",
                          "typeString": "bytes15"
                        },
                        {
                          "typeIdentifier": "t_bytes15",
                          "typeString": "bytes15"
                        }
                      ],
                      "expression": {
                        "id": 15551,
                        "name": "witOracleRadonRequestTemplatesBuilder",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15379,
                        "src": "3719:37:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_WitOracleRadonRequestFactoryTemplates_$16677",
                          "typeString": "contract WitOracleRadonRequestFactoryTemplates"
                        }
                      },
                      "id": 15552,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3757:16:37",
                      "memberName": "determineAddress",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 16368,
                      "src": "3719:54:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes15_$_t_bytes15_$returns$_t_address_$",
                        "typeString": "function (bytes32[] memory,bytes15,bytes15) view external returns (address)"
                      }
                    },
                    "id": 15556,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3719:181:37",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3699:201:37"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 15562,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "expression": {
                          "id": 15558,
                          "name": "_template",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15550,
                          "src": "3915:9:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 15559,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "3925:4:37",
                        "memberName": "code",
                        "nodeType": "MemberAccess",
                        "src": "3915:14:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 15560,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3930:6:37",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "3915:21:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 15561,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3940:1:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3915:26:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15580,
                  "nodeType": "IfStatement",
                  "src": "3911:367:37",
                  "trueBody": {
                    "id": 15579,
                    "nodeType": "Block",
                    "src": "3943:335:37",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 15566,
                              "name": "radonRetrieveHashes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15516,
                              "src": "4040:19:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            {
                              "id": 15567,
                              "name": "_dataSourcesAggregatorHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15530,
                              "src": "4078:26:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes15",
                                "typeString": "bytes15"
                              }
                            },
                            {
                              "id": 15568,
                              "name": "_crowdAttestationTallyHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15540,
                              "src": "4123:26:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes15",
                                "typeString": "bytes15"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes15",
                                "typeString": "bytes15"
                              },
                              {
                                "typeIdentifier": "t_bytes15",
                                "typeString": "bytes15"
                              }
                            ],
                            "expression": {
                              "id": 15563,
                              "name": "witOracleRadonRequestTemplatesBuilder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15379,
                              "src": "3958:37:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_WitOracleRadonRequestFactoryTemplates_$16677",
                                "typeString": "contract WitOracleRadonRequestFactoryTemplates"
                              }
                            },
                            "id": 15565,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3996:25:37",
                            "memberName": "buildRadonRequestTemplate",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 16321,
                            "src": "3958:63:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes15_$_t_bytes15_$returns$_t_contract$_IWitOracleRadonRequestTemplate_$27592_$",
                              "typeString": "function (bytes32[] memory,bytes15,bytes15) external returns (contract IWitOracleRadonRequestTemplate)"
                            }
                          },
                          "id": 15569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3958:206:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IWitOracleRadonRequestTemplate_$27592",
                            "typeString": "contract IWitOracleRadonRequestTemplate"
                          }
                        },
                        "id": 15570,
                        "nodeType": "ExpressionStatement",
                        "src": "3958:206:37"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 15572,
                              "name": "_template",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15550,
                              "src": "4202:9:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15571,
                            "name": "_checkCloneWasDeployed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15678,
                            "src": "4179:22:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 15573,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4179:33:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15574,
                        "nodeType": "ExpressionStatement",
                        "src": "4179:33:37"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 15576,
                              "name": "_template",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15550,
                              "src": "4256:9:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15575,
                            "name": "NewRadonRequestTemplate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27426,
                            "src": "4232:23:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 15577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4232:34:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15578,
                        "nodeType": "EmitStatement",
                        "src": "4227:39:37"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15582,
                        "name": "_template",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15550,
                        "src": "4326:9:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 15581,
                      "name": "IWitOracleRadonRequestTemplate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 27592,
                      "src": "4295:30:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IWitOracleRadonRequestTemplate_$27592_$",
                        "typeString": "type(contract IWitOracleRadonRequestTemplate)"
                      }
                    },
                    "id": 15583,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4295:41:37",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWitOracleRadonRequestTemplate_$27592",
                      "typeString": "contract IWitOracleRadonRequestTemplate"
                    }
                  },
                  "functionReturnParameters": 15528,
                  "id": 15584,
                  "nodeType": "Return",
                  "src": "4288:48:37"
                }
              ]
            },
            "functionSelector": "e71dc532",
            "id": 15586,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "buildRadonRequestTemplate",
            "nameLocation": "3131:25:37",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 15524,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3362:8:37"
            },
            "parameters": {
              "id": 15523,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15516,
                  "mutability": "mutable",
                  "name": "radonRetrieveHashes",
                  "nameLocation": "3188:19:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 15586,
                  "src": "3171:36:37",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15514,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "3171:7:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 15515,
                    "nodeType": "ArrayTypeName",
                    "src": "3171:9:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15519,
                  "mutability": "mutable",
                  "name": "dataSourcesAggregator",
                  "nameLocation": "3249:21:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 15586,
                  "src": "3222:48:37",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RadonReducer_$37748_memory_ptr",
                    "typeString": "struct Witnet.RadonReducer"
                  },
                  "typeName": {
                    "id": 15518,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 15517,
                      "name": "Witnet.RadonReducer",
                      "nameLocations": [
                        "3222:6:37",
                        "3229:12:37"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 37748,
                      "src": "3222:19:37"
                    },
                    "referencedDeclaration": 37748,
                    "src": "3222:19:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RadonReducer_$37748_storage_ptr",
                      "typeString": "struct Witnet.RadonReducer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15522,
                  "mutability": "mutable",
                  "name": "crowdAttestationTally",
                  "nameLocation": "3312:21:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 15586,
                  "src": "3285:48:37",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RadonReducer_$37748_memory_ptr",
                    "typeString": "struct Witnet.RadonReducer"
                  },
                  "typeName": {
                    "id": 15521,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 15520,
                      "name": "Witnet.RadonReducer",
                      "nameLocations": [
                        "3285:6:37",
                        "3292:12:37"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 37748,
                      "src": "3285:19:37"
                    },
                    "referencedDeclaration": 37748,
                    "src": "3285:19:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RadonReducer_$37748_storage_ptr",
                      "typeString": "struct Witnet.RadonReducer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3156:188:37"
            },
            "returnParameters": {
              "id": 15528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15527,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15586,
                  "src": "3405:30:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IWitOracleRadonRequestTemplate_$27592",
                    "typeString": "contract IWitOracleRadonRequestTemplate"
                  },
                  "typeName": {
                    "id": 15526,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 15525,
                      "name": "IWitOracleRadonRequestTemplate",
                      "nameLocations": [
                        "3405:30:37"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 27592,
                      "src": "3405:30:37"
                    },
                    "referencedDeclaration": 27592,
                    "src": "3405:30:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWitOracleRadonRequestTemplate_$27592",
                      "typeString": "contract IWitOracleRadonRequestTemplate"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3404:32:37"
            },
            "scope": 15679,
            "src": "3122:1222:37",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              27488
            ],
            "body": {
              "id": 15661,
              "nodeType": "Block",
              "src": "4676:676:37",
              "statements": [
                {
                  "assignments": [
                    15607
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15607,
                      "mutability": "mutable",
                      "name": "_radonRetrieveHashes",
                      "nameLocation": "4704:20:37",
                      "nodeType": "VariableDeclaration",
                      "scope": 15661,
                      "src": "4687:37:37",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                        "typeString": "bytes32[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 15605,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4687:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 15606,
                        "nodeType": "ArrayTypeName",
                        "src": "4687:9:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 15614,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 15611,
                          "name": "dataSources",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15590,
                          "src": "4741:11:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_DataSource_$27432_calldata_ptr_$dyn_calldata_ptr",
                            "typeString": "struct IWitOracleRadonRequestFactory.DataSource calldata[] calldata"
                          }
                        },
                        "id": 15612,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4753:6:37",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "4741:18:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 15610,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "4727:13:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes32[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 15608,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4731:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 15609,
                        "nodeType": "ArrayTypeName",
                        "src": "4731:9:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                          "typeString": "bytes32[]"
                        }
                      }
                    },
                    "id": 15613,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4727:33:37",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4687:73:37"
                },
                {
                  "body": {
                    "id": 15653,
                    "nodeType": "Block",
                    "src": "4820:364:37",
                    "statements": [
                      {
                        "assignments": [
                          15627
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15627,
                            "mutability": "mutable",
                            "name": "_request",
                            "nameLocation": "4860:8:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 15653,
                            "src": "4835:33:37",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DataSourceRequest_$27445_memory_ptr",
                              "typeString": "struct IWitOracleRadonRequestFactory.DataSourceRequest"
                            },
                            "typeName": {
                              "id": 15626,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 15625,
                                "name": "DataSourceRequest",
                                "nameLocations": [
                                  "4835:17:37"
                                ],
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 27445,
                                "src": "4835:17:37"
                              },
                              "referencedDeclaration": 27445,
                              "src": "4835:17:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_DataSourceRequest_$27445_storage_ptr",
                                "typeString": "struct IWitOracleRadonRequestFactory.DataSourceRequest"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15632,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 15628,
                              "name": "dataSources",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15590,
                              "src": "4871:11:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_DataSource_$27432_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct IWitOracleRadonRequestFactory.DataSource calldata[] calldata"
                              }
                            },
                            "id": 15630,
                            "indexExpression": {
                              "id": 15629,
                              "name": "_ix",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15616,
                              "src": "4883:3:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4871:16:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_DataSource_$27432_calldata_ptr",
                              "typeString": "struct IWitOracleRadonRequestFactory.DataSource calldata"
                            }
                          },
                          "id": 15631,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "4888:7:37",
                          "memberName": "request",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 27431,
                          "src": "4871:24:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DataSourceRequest_$27445_calldata_ptr",
                            "typeString": "struct IWitOracleRadonRequestFactory.DataSourceRequest calldata"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4835:60:37"
                      },
                      {
                        "expression": {
                          "id": 15651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 15633,
                              "name": "_radonRetrieveHashes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15607,
                              "src": "4910:20:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            "id": 15635,
                            "indexExpression": {
                              "id": 15634,
                              "name": "_ix",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15616,
                              "src": "4931:3:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4910:25:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 15638,
                                  "name": "_request",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15627,
                                  "src": "5002:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_DataSourceRequest_$27445_memory_ptr",
                                    "typeString": "struct IWitOracleRadonRequestFactory.DataSourceRequest memory"
                                  }
                                },
                                "id": 15639,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5011:6:37",
                                "memberName": "method",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 27435,
                                "src": "5002:15:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_RadonRetrievalMethods_$37802",
                                  "typeString": "enum Witnet.RadonRetrievalMethods"
                                }
                              },
                              {
                                "expression": {
                                  "baseExpression": {
                                    "id": 15640,
                                    "name": "dataSources",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15590,
                                    "src": "5036:11:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_DataSource_$27432_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "struct IWitOracleRadonRequestFactory.DataSource calldata[] calldata"
                                    }
                                  },
                                  "id": 15642,
                                  "indexExpression": {
                                    "id": 15641,
                                    "name": "_ix",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15616,
                                    "src": "5048:3:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5036:16:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_DataSource_$27432_calldata_ptr",
                                    "typeString": "struct IWitOracleRadonRequestFactory.DataSource calldata"
                                  }
                                },
                                "id": 15643,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5053:3:37",
                                "memberName": "url",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 27428,
                                "src": "5036:20:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                }
                              },
                              {
                                "expression": {
                                  "id": 15644,
                                  "name": "_request",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15627,
                                  "src": "5075:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_DataSourceRequest_$27445_memory_ptr",
                                    "typeString": "struct IWitOracleRadonRequestFactory.DataSourceRequest memory"
                                  }
                                },
                                "id": 15645,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5084:4:37",
                                "memberName": "body",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 27437,
                                "src": "5075:13:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              {
                                "expression": {
                                  "id": 15646,
                                  "name": "_request",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15627,
                                  "src": "5107:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_DataSourceRequest_$27445_memory_ptr",
                                    "typeString": "struct IWitOracleRadonRequestFactory.DataSourceRequest memory"
                                  }
                                },
                                "id": 15647,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5116:7:37",
                                "memberName": "headers",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 27442,
                                "src": "5107:16:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_array$_t_string_memory_ptr_$2_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "string memory[2] memory[] memory"
                                }
                              },
                              {
                                "expression": {
                                  "id": 15648,
                                  "name": "_request",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15627,
                                  "src": "5142:8:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_DataSourceRequest_$27445_memory_ptr",
                                    "typeString": "struct IWitOracleRadonRequestFactory.DataSourceRequest memory"
                                  }
                                },
                                "id": 15649,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "5151:6:37",
                                "memberName": "script",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 27444,
                                "src": "5142:15:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_RadonRetrievalMethods_$37802",
                                  "typeString": "enum Witnet.RadonRetrievalMethods"
                                },
                                {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_array$_t_string_memory_ptr_$2_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "string memory[2] memory[] memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "id": 15636,
                                "name": "__witOracleRadonRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15373,
                                "src": "4938:24:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWitOracleRadonRegistry_$27394",
                                  "typeString": "contract IWitOracleRadonRegistry"
                                }
                              },
                              "id": 15637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "4963:20:37",
                              "memberName": "verifyRadonRetrieval",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 27393,
                              "src": "4938:45:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_enum$_RadonRetrievalMethods_$37802_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_array$_t_array$_t_string_memory_ptr_$2_memory_ptr_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (enum Witnet.RadonRetrievalMethods,string memory,string memory,string memory[2] memory[] memory,bytes memory) external returns (bytes32)"
                              }
                            },
                            "id": 15650,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4938:234:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4910:262:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 15652,
                        "nodeType": "ExpressionStatement",
                        "src": "4910:262:37"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 15621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 15618,
                      "name": "_ix",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15616,
                      "src": "4786:3:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 15619,
                        "name": "dataSources",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15590,
                        "src": "4792:11:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_DataSource_$27432_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct IWitOracleRadonRequestFactory.DataSource calldata[] calldata"
                        }
                      },
                      "id": 15620,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4804:6:37",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "4792:18:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4786:24:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 15654,
                  "initializationExpression": {
                    "assignments": [
                      15616
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 15616,
                        "mutability": "mutable",
                        "name": "_ix",
                        "nameLocation": "4781:3:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 15654,
                        "src": "4776:8:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15615,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4776:4:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 15617,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4776:8:37"
                  },
                  "isSimpleCounterLoop": true,
                  "loopExpression": {
                    "expression": {
                      "id": 15623,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": true,
                      "src": "4812:6:37",
                      "subExpression": {
                        "id": 15622,
                        "name": "_ix",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15616,
                        "src": "4815:3:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 15624,
                    "nodeType": "ExpressionStatement",
                    "src": "4812:6:37"
                  },
                  "nodeType": "ForStatement",
                  "src": "4771:413:37"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 15656,
                        "name": "_radonRetrieveHashes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15607,
                        "src": "5241:20:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        }
                      },
                      {
                        "id": 15657,
                        "name": "dataSourcesAggregator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15593,
                        "src": "5276:21:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RadonReducer_$37748_calldata_ptr",
                          "typeString": "struct Witnet.RadonReducer calldata"
                        }
                      },
                      {
                        "id": 15658,
                        "name": "crowdAttestationTally",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15596,
                        "src": "5312:21:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_RadonReducer_$37748_calldata_ptr",
                          "typeString": "struct Witnet.RadonReducer calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[] memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_RadonReducer_$37748_calldata_ptr",
                          "typeString": "struct Witnet.RadonReducer calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_RadonReducer_$37748_calldata_ptr",
                          "typeString": "struct Witnet.RadonReducer calldata"
                        }
                      ],
                      "id": 15655,
                      "name": "buildRadonRequestTemplate",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15586,
                      "src": "5201:25:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_struct$_RadonReducer_$37748_memory_ptr_$_t_struct$_RadonReducer_$37748_memory_ptr_$returns$_t_contract$_IWitOracleRadonRequestTemplate_$27592_$",
                        "typeString": "function (bytes32[] memory,struct Witnet.RadonReducer memory,struct Witnet.RadonReducer memory) returns (contract IWitOracleRadonRequestTemplate)"
                      }
                    },
                    "id": 15659,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5201:143:37",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWitOracleRadonRequestTemplate_$27592",
                      "typeString": "contract IWitOracleRadonRequestTemplate"
                    }
                  },
                  "functionReturnParameters": 15602,
                  "id": 15660,
                  "nodeType": "Return",
                  "src": "5194:150:37"
                }
              ]
            },
            "functionSelector": "9f165d4b",
            "id": 15662,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "buildRadonRequestTemplate",
            "nameLocation": "4361:25:37",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 15598,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4593:8:37"
            },
            "parameters": {
              "id": 15597,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15590,
                  "mutability": "mutable",
                  "name": "dataSources",
                  "nameLocation": "4423:11:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 15662,
                  "src": "4401:33:37",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_DataSource_$27432_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "struct IWitOracleRadonRequestFactory.DataSource[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15588,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 15587,
                        "name": "DataSource",
                        "nameLocations": [
                          "4401:10:37"
                        ],
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 27432,
                        "src": "4401:10:37"
                      },
                      "referencedDeclaration": 27432,
                      "src": "4401:10:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DataSource_$27432_storage_ptr",
                        "typeString": "struct IWitOracleRadonRequestFactory.DataSource"
                      }
                    },
                    "id": 15589,
                    "nodeType": "ArrayTypeName",
                    "src": "4401:12:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_DataSource_$27432_storage_$dyn_storage_ptr",
                      "typeString": "struct IWitOracleRadonRequestFactory.DataSource[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15593,
                  "mutability": "mutable",
                  "name": "dataSourcesAggregator",
                  "nameLocation": "4478:21:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 15662,
                  "src": "4449:50:37",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RadonReducer_$37748_calldata_ptr",
                    "typeString": "struct Witnet.RadonReducer"
                  },
                  "typeName": {
                    "id": 15592,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 15591,
                      "name": "Witnet.RadonReducer",
                      "nameLocations": [
                        "4449:6:37",
                        "4456:12:37"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 37748,
                      "src": "4449:19:37"
                    },
                    "referencedDeclaration": 37748,
                    "src": "4449:19:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RadonReducer_$37748_storage_ptr",
                      "typeString": "struct Witnet.RadonReducer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15596,
                  "mutability": "mutable",
                  "name": "crowdAttestationTally",
                  "nameLocation": "4543:21:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 15662,
                  "src": "4514:50:37",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_RadonReducer_$37748_calldata_ptr",
                    "typeString": "struct Witnet.RadonReducer"
                  },
                  "typeName": {
                    "id": 15595,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 15594,
                      "name": "Witnet.RadonReducer",
                      "nameLocations": [
                        "4514:6:37",
                        "4521:12:37"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 37748,
                      "src": "4514:19:37"
                    },
                    "referencedDeclaration": 37748,
                    "src": "4514:19:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_RadonReducer_$37748_storage_ptr",
                      "typeString": "struct Witnet.RadonReducer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4386:189:37"
            },
            "returnParameters": {
              "id": 15602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15601,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15662,
                  "src": "4639:30:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IWitOracleRadonRequestTemplate_$27592",
                    "typeString": "contract IWitOracleRadonRequestTemplate"
                  },
                  "typeName": {
                    "id": 15600,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 15599,
                      "name": "IWitOracleRadonRequestTemplate",
                      "nameLocations": [
                        "4639:30:37"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 27592,
                      "src": "4639:30:37"
                    },
                    "referencedDeclaration": 27592,
                    "src": "4639:30:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IWitOracleRadonRequestTemplate_$27592",
                      "typeString": "contract IWitOracleRadonRequestTemplate"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4638:32:37"
            },
            "scope": 15679,
            "src": "4352:1000:37",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "external"
          },
          {
            "body": {
              "id": 15677,
              "nodeType": "Block",
              "src": "5676:104:37",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 15673,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "expression": {
                              "id": 15669,
                              "name": "_clone",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15665,
                              "src": "5710:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 15670,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "5717:4:37",
                            "memberName": "code",
                            "nodeType": "MemberAccess",
                            "src": "5710:11:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 15671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5722:6:37",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "5710:18:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 15672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5731:1:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5710:22:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "63616e6e6f7420636c6f6e65",
                        "id": 15674,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5747:14:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_bc848b4e9bad4563ab9254477af9c0f00cd230b4ccc51d0ac5656b985609cc49",
                          "typeString": "literal_string \"cannot clone\""
                        },
                        "value": "cannot clone"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_bc848b4e9bad4563ab9254477af9c0f00cd230b4ccc51d0ac5656b985609cc49",
                          "typeString": "literal_string \"cannot clone\""
                        }
                      ],
                      "id": 15668,
                      "name": "_require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26494,
                      "src": "5687:8:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) view"
                      }
                    },
                    "id": 15675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5687:85:37",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15676,
                  "nodeType": "ExpressionStatement",
                  "src": "5687:85:37"
                }
              ]
            },
            "documentation": {
              "id": 15663,
              "nodeType": "StructuredDocumentation",
              "src": "5362:238:37",
              "text": "===============================================================================================================\n --- Internal virtual methods ----------------------------------------------------------------------------------"
            },
            "id": 15678,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_checkCloneWasDeployed",
            "nameLocation": "5615:22:37",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15666,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15665,
                  "mutability": "mutable",
                  "name": "_clone",
                  "nameLocation": "5646:6:37",
                  "nodeType": "VariableDeclaration",
                  "scope": 15678,
                  "src": "5638:14:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15664,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5638:7:37",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5637:16:37"
            },
            "returnParameters": {
              "id": 15667,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5676:0:37"
            },
            "scope": 15679,
            "src": "5606:174:37",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          }
        ],
        "scope": 15680,
        "src": "231:5552:37",
        "usedErrors": [],
        "usedEvents": [
          27402,
          27407,
          27413,
          27422,
          27426
        ]
      }
    ],
    "src": "35:5750:37"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.30+commit.73712a01.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-10-15T14:34:45.515Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "events": {
      "NewRadonReducer(bytes32)": {
        "notice": "Emitted every time a new Radon Reducer gets successfully verified and stored into the WitOracleRadonRegistry."
      },
      "NewRadonRequest(bytes32)": {
        "notice": "Emitted every time a new Radon Request gets successfully verified and stored into the WitOracleRadonRegistry."
      },
      "NewRadonRetrieval(bytes32)": {
        "notice": "Emitted every time a new Radon Retrieval gets successfully verified and stored into the WitOracleRadonRegistry."
      }
    },
    "kind": "user",
    "methods": {
      "buildRadonRequestModal((uint8,string,string[2][],bytes),(uint8,(uint8,bytes)[]))": {
        "notice": "=============================================================================================================== --- Implementation of IWitOracleRadonRequestFactory -----------------------------------------------------------"
      },
      "class()": {
        "notice": "Returns the name of the actual contract implementing the logic of this Witnet appliance."
      },
      "specs()": {
        "notice": "Returns the ERC-165 id of the minimal functionality expected for this appliance."
      },
      "witOracle()": {
        "notice": "Reference to the Witnet Request Board that all templates built out from this factory will refer to."
      }
    },
    "version": 1
  }
}